mirror of
https://github.com/YunoHost/yunohost-admin.git
synced 2024-09-03 20:06:15 +02:00
Merge branch 'dev' into bullseye
This commit is contained in:
commit
19fabe456b
80 changed files with 6581 additions and 2431 deletions
2876
app/package-lock.json
generated
2876
app/package-lock.json
generated
File diff suppressed because it is too large
Load diff
|
@ -5,38 +5,38 @@
|
|||
"description": "YunoHost Admin web interface",
|
||||
"author": "Yunohost",
|
||||
"scripts": {
|
||||
"serve": "vue-cli-service serve",
|
||||
"build": "vue-cli-service build",
|
||||
"lint": "vue-cli-service lint --no-fix",
|
||||
"i18n": "vue-cli-service i18n:report --src './src/**/*.?(js|vue)' --locales './src/i18n/locales/*.json'",
|
||||
"i18n:en": "vue-cli-service i18n:report --src './src/**/*.?(js|vue)' --locales './src/i18n/locales/en.json'"
|
||||
"serve": "./node_modules/@vue/cli-service/bin/vue-cli-service.js serve",
|
||||
"build": "./node_modules/@vue/cli-service/bin/vue-cli-service.js build",
|
||||
"lint": "./node_modules/@vue/cli-service/bin/vue-cli-service.js lint --no-fix",
|
||||
"i18n": "./node_modules/@vue/cli-service/bin/vue-cli-service.js i18n:report --src './src/**/*.?(js|vue)' --locales './src/i18n/locales/*.json'",
|
||||
"i18n:en": "./node_modules/@vue/cli-service/bin/vue-cli-service.js i18n:report --src './src/**/*.?(js|vue)' --locales './src/i18n/locales/en.json'"
|
||||
},
|
||||
"dependencies": {
|
||||
"bootstrap-vue": "^2.20.1",
|
||||
"core-js": "^3.6.5",
|
||||
"date-fns": "^2.16.1",
|
||||
"bootstrap-vue": "^2.21.2",
|
||||
"core-js": "^3.9.1",
|
||||
"date-fns": "^2.19.0",
|
||||
"firacode": "^5.2.0",
|
||||
"fontsource-firago": "^3.0.2",
|
||||
"fontsource-firago": "^3.1.5",
|
||||
"fork-awesome": "^1.1.7",
|
||||
"vue": "^2.6.12",
|
||||
"vue-i18n": "^8.22.1",
|
||||
"vue-router": "^3.4.8",
|
||||
"vue-i18n": "^8.24.1",
|
||||
"vue-router": "^3.5.1",
|
||||
"vuelidate": "^0.7.6",
|
||||
"vuex": "^3.4.0"
|
||||
"vuex": "^3.6.2"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@vue/cli-plugin-babel": "~4.4.0",
|
||||
"@vue/cli-plugin-eslint": "~4.4.0",
|
||||
"@vue/cli-plugin-router": "^4.5.8",
|
||||
"@vue/cli-plugin-vuex": "^4.5.8",
|
||||
"@vue/cli-service": "~4.4.0",
|
||||
"@vue/cli-plugin-babel": "~4.5.13",
|
||||
"@vue/cli-plugin-eslint": "^4.5.13",
|
||||
"@vue/cli-plugin-router": "^4.5.13",
|
||||
"@vue/cli-plugin-vuex": "^4.5.13",
|
||||
"@vue/cli-service": "^4.5.13",
|
||||
"babel-eslint": "^10.1.0",
|
||||
"bootstrap": "^4.5.2",
|
||||
"bootstrap": "^4.6.0",
|
||||
"eslint": "^6.7.2",
|
||||
"eslint-plugin-vue": "^6.2.2",
|
||||
"popper.js": "^1.16.0",
|
||||
"portal-vue": "^2.1.6",
|
||||
"sass": "^1.28.0",
|
||||
"sass": "^1.32.8",
|
||||
"sass-loader": "^8.0.0",
|
||||
"sass-resources-loader": "^2.1.1",
|
||||
"standard": "^14.3.4",
|
||||
|
@ -68,6 +68,7 @@
|
|||
}
|
||||
}
|
||||
],
|
||||
"no-console": "warn",
|
||||
"template-curly-spacing": "off",
|
||||
"camelcase": "warn",
|
||||
"indent": "off",
|
||||
|
|
|
@ -210,7 +210,7 @@ main {
|
|||
}
|
||||
|
||||
footer {
|
||||
border-top: 1px solid #eee;
|
||||
border-top: $thin-border;
|
||||
font-size: $font-size-sm;
|
||||
margin-top: 2rem;
|
||||
|
||||
|
|
|
@ -5,7 +5,6 @@
|
|||
|
||||
import store from '@/store'
|
||||
import { openWebSocket, getResponseData, handleError } from './handlers'
|
||||
import { objectToParams } from '@/helpers/commons'
|
||||
|
||||
|
||||
/**
|
||||
|
@ -15,7 +14,6 @@ import { objectToParams } from '@/helpers/commons'
|
|||
* @property {Boolean} wait - If `true`, will display the waiting modal.
|
||||
* @property {Boolean} websocket - if `true`, will open a websocket connection.
|
||||
* @property {Boolean} initial - if `true` and an error occurs, the dismiss button will trigger a go back in history.
|
||||
* @property {Boolean} noCache - if `true`, will disable the cache mecanism for this call.
|
||||
* @property {Boolean} asFormData - if `true`, will send the data with a body encoded as `"multipart/form-data"` instead of `"x-www-form-urlencoded"`).
|
||||
*/
|
||||
|
||||
|
@ -31,6 +29,31 @@ import { objectToParams } from '@/helpers/commons'
|
|||
*/
|
||||
|
||||
|
||||
/**
|
||||
* Converts an object literal into an `URLSearchParams` that can be turned into a
|
||||
* query string or used as a body in a `fetch` call.
|
||||
*
|
||||
* @param {Object} obj - An object literal to convert.
|
||||
* @param {Object} options
|
||||
* @param {Boolean} [options.addLocale=false] - Option to append the locale to the query string.
|
||||
* @return {URLSearchParams}
|
||||
*/
|
||||
export function objectToParams (obj, { addLocale = false } = {}) {
|
||||
const urlParams = new URLSearchParams()
|
||||
for (const [key, value] of Object.entries(obj)) {
|
||||
if (Array.isArray(value)) {
|
||||
value.forEach(v => urlParams.append(key, v))
|
||||
} else {
|
||||
urlParams.append(key, value)
|
||||
}
|
||||
}
|
||||
if (addLocale) {
|
||||
urlParams.append('locale', store.getters.locale)
|
||||
}
|
||||
return urlParams
|
||||
}
|
||||
|
||||
|
||||
export default {
|
||||
options: {
|
||||
credentials: 'include',
|
||||
|
@ -55,9 +78,15 @@ export default {
|
|||
* @param {Options} [options={ wait = true, websocket = true, initial = false, asFormData = false }]
|
||||
* @return {Promise<Object|Error>} Promise that resolve the api response data or an error.
|
||||
*/
|
||||
async fetch (method, uri, data = {}, { wait = true, websocket = true, initial = false, asFormData = false } = {}) {
|
||||
async fetch (
|
||||
method,
|
||||
uri,
|
||||
data = {},
|
||||
humanKey = null,
|
||||
{ wait = true, websocket = true, initial = false, asFormData = false } = {}
|
||||
) {
|
||||
// `await` because Vuex actions returns promises by default.
|
||||
const request = await store.dispatch('INIT_REQUEST', { method, uri, initial, wait, websocket })
|
||||
const request = await store.dispatch('INIT_REQUEST', { method, uri, humanKey, initial, wait, websocket })
|
||||
|
||||
if (websocket) {
|
||||
await openWebSocket(request)
|
||||
|
@ -92,10 +121,10 @@ export default {
|
|||
const results = []
|
||||
if (wait) store.commit('SET_WAITING', true)
|
||||
try {
|
||||
for (const [method, uri, data, options = {}] of queries) {
|
||||
for (const [method, uri, data, humanKey, options = {}] of queries) {
|
||||
if (wait) options.wait = false
|
||||
if (initial) options.initial = true
|
||||
results.push(await this[method.toLowerCase()](uri, data, options))
|
||||
results.push(await this[method.toLowerCase()](uri, data, humanKey, options))
|
||||
}
|
||||
} finally {
|
||||
// Stop waiting even if there is an error.
|
||||
|
@ -114,10 +143,10 @@ export default {
|
|||
* @param {Options} [options={}] - options to apply to the call (default is `{ websocket: false, wait: false }`)
|
||||
* @return {Promise<Object|Error>} Promise that resolve the api response data or an error.
|
||||
*/
|
||||
get (uri, data = null, options = {}) {
|
||||
get (uri, data = null, humanKey = null, options = {}) {
|
||||
options = { websocket: false, wait: false, ...options }
|
||||
if (typeof uri === 'string') return this.fetch('GET', uri, null, options)
|
||||
return store.dispatch('GET', { ...uri, options })
|
||||
if (typeof uri === 'string') return this.fetch('GET', uri, null, humanKey, options)
|
||||
return store.dispatch('GET', { ...uri, humanKey, options })
|
||||
},
|
||||
|
||||
|
||||
|
@ -129,9 +158,9 @@ export default {
|
|||
* @param {Options} [options={}] - options to apply to the call
|
||||
* @return {Promise<Object|Error>} Promise that resolve the api response data or an error.
|
||||
*/
|
||||
post (uri, data = {}, options = {}) {
|
||||
if (typeof uri === 'string') return this.fetch('POST', uri, data, options)
|
||||
return store.dispatch('POST', { ...uri, data, options })
|
||||
post (uri, data = {}, humanKey = null, options = {}) {
|
||||
if (typeof uri === 'string') return this.fetch('POST', uri, data, humanKey, options)
|
||||
return store.dispatch('POST', { ...uri, data, humanKey, options })
|
||||
},
|
||||
|
||||
|
||||
|
@ -143,9 +172,9 @@ export default {
|
|||
* @param {Options} [options={}] - options to apply to the call
|
||||
* @return {Promise<Object|Error>} Promise that resolve the api response data or an error.
|
||||
*/
|
||||
put (uri, data = {}, options = {}) {
|
||||
if (typeof uri === 'string') return this.fetch('PUT', uri, data, options)
|
||||
return store.dispatch('PUT', { ...uri, data, options })
|
||||
put (uri, data = {}, humanKey = null, options = {}) {
|
||||
if (typeof uri === 'string') return this.fetch('PUT', uri, data, humanKey, options)
|
||||
return store.dispatch('PUT', { ...uri, data, humanKey, options })
|
||||
},
|
||||
|
||||
|
||||
|
@ -157,8 +186,8 @@ export default {
|
|||
* @param {Options} [options={}] - options to apply to the call (default is `{ websocket: false, wait: false }`)
|
||||
* @return {Promise<Object|Error>} Promise that resolve the api response data or an error.
|
||||
*/
|
||||
delete (uri, data = {}, options = {}) {
|
||||
if (typeof uri === 'string') return this.fetch('DELETE', uri, data, options)
|
||||
return store.dispatch('DELETE', { ...uri, data, options })
|
||||
delete (uri, data = {}, humanKey = null, options = {}) {
|
||||
if (typeof uri === 'string') return this.fetch('DELETE', uri, data, humanKey, options)
|
||||
return store.dispatch('DELETE', { ...uri, data, humanKey, options })
|
||||
}
|
||||
}
|
||||
|
|
|
@ -7,8 +7,8 @@ import i18n from '@/i18n'
|
|||
|
||||
|
||||
class APIError extends Error {
|
||||
constructor (request, { url, status, statusText }, errorData) {
|
||||
super(errorData.error || i18n.t('error_server_unexpected'))
|
||||
constructor (request, { url, status, statusText }, { error }) {
|
||||
super(error ? error.replace('\n', '<br>') : i18n.t('error_server_unexpected'))
|
||||
const urlObj = new URL(url)
|
||||
this.name = 'APIError'
|
||||
this.code = status
|
||||
|
@ -19,6 +19,7 @@ class APIError extends Error {
|
|||
}
|
||||
|
||||
log () {
|
||||
/* eslint-disable-next-line */
|
||||
console.error(`${this.name} (${this.code}): ${this.uri}\n${this.message}`)
|
||||
}
|
||||
}
|
||||
|
@ -47,6 +48,7 @@ class APIBadRequestError extends APIError {
|
|||
constructor (method, response, errorData) {
|
||||
super(method, response, errorData)
|
||||
this.name = 'APIBadRequestError'
|
||||
this.key = errorData.error_key
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
export { default } from './api'
|
||||
export { default, objectToParams } from './api'
|
||||
export { handleError, registerGlobalErrorHandlers } from './handlers'
|
||||
|
|
|
@ -1,151 +0,0 @@
|
|||
<template>
|
||||
<div class="selectize-base">
|
||||
<b-input-group>
|
||||
<b-input-group-prepend is-text>
|
||||
<icon iname="search-plus" />
|
||||
<span class="ml-1">{{ label }}</span>
|
||||
</b-input-group-prepend>
|
||||
<b-form-input
|
||||
:class="visible ? null : 'collapsed'"
|
||||
aria-controls="collapse" :aria-expanded="visible ? 'true' : 'false'"
|
||||
@focus="onInputFocus" @blur="onInputBlur" @keydown="onInputKeydown"
|
||||
v-model="search" ref="input"
|
||||
/>
|
||||
</b-input-group>
|
||||
|
||||
<b-collapse ref="collapse" v-model="visible">
|
||||
<b-list-group tabindex="-1" @mouseover="onChoiceListOver" v-if="visible">
|
||||
<b-list-group-item
|
||||
v-for="(item, index) in filteredChoices" :key="item"
|
||||
tabindex="-1" :active="index === focusedIndex" ref="choiceList"
|
||||
@mousedown.prevent @mouseup.prevent="onSelect(item)"
|
||||
>
|
||||
{{ item | filter(format) }}
|
||||
</b-list-group-item>
|
||||
</b-list-group>
|
||||
</b-collapse>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
// FIXME add accessibility to ChoiceList
|
||||
|
||||
export default {
|
||||
name: 'BaseSelectize',
|
||||
|
||||
props: {
|
||||
choices: { type: Array, required: true },
|
||||
label: { type: String, default: null },
|
||||
// FIXME find a better way to pass filters
|
||||
format: { type: Function, default: null }
|
||||
},
|
||||
|
||||
data: () => ({
|
||||
visible: false,
|
||||
search: '',
|
||||
focusedIndex: 0
|
||||
}),
|
||||
|
||||
computed: {
|
||||
filteredChoices () {
|
||||
const search = this.search.toLowerCase()
|
||||
return this.choices.filter(item => {
|
||||
return item.toLowerCase().includes(search)
|
||||
}).sort()
|
||||
}
|
||||
},
|
||||
|
||||
methods: {
|
||||
onInputFocus ({ relatedTarget }) {
|
||||
this.visible = true
|
||||
this.focusedIndex = 0
|
||||
// timeout needed else scrollIntoView won't work
|
||||
if (!this.$refs.choiceList) return
|
||||
setTimeout(() => {
|
||||
this.$refs.choiceList[0].scrollIntoView({ behavior: 'instant', block: 'nearest', inline: 'nearest' })
|
||||
}, 50)
|
||||
},
|
||||
|
||||
onInputBlur ({ relatedTarget }) {
|
||||
if (!this.$refs.collapse.$el.contains(relatedTarget)) {
|
||||
this.visible = false
|
||||
}
|
||||
},
|
||||
|
||||
onInputKeydown (e) {
|
||||
const { key } = e
|
||||
const choicesLen = this.filteredChoices.length
|
||||
if (choicesLen < 1) return
|
||||
|
||||
if (key === 'ArrowDown') {
|
||||
e.preventDefault()
|
||||
if (this.focusedIndex <= choicesLen) {
|
||||
this.focusedIndex++
|
||||
}
|
||||
} else if (key === 'ArrowUp') {
|
||||
e.preventDefault()
|
||||
if (this.focusedIndex > 0) {
|
||||
this.focusedIndex--
|
||||
}
|
||||
} else if (key === 'Enter') {
|
||||
this.onSelect(this.filteredChoices[this.focusedIndex])
|
||||
this.focusedIndex = 0
|
||||
} else {
|
||||
this.focusedIndex = 0
|
||||
}
|
||||
const elemToFocus = this.$refs.choiceList[this.focusedIndex]
|
||||
if (elemToFocus) {
|
||||
elemToFocus.scrollIntoView({ behavior: 'instant', block: 'nearest', inline: 'nearest' })
|
||||
}
|
||||
},
|
||||
|
||||
onChoiceListOver ({ target }) {
|
||||
const index = this.$refs.choiceList.indexOf(target)
|
||||
if (index > -1) {
|
||||
this.focusedIndex = index
|
||||
}
|
||||
},
|
||||
|
||||
onSelect (item) {
|
||||
this.$emit('selected', { item, index: this.choices.indexOf(item) })
|
||||
}
|
||||
},
|
||||
|
||||
filters: {
|
||||
filter: function (text, func) {
|
||||
if (func) return func(text)
|
||||
else return text
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.collapse {
|
||||
position: relative;
|
||||
width: 100%;
|
||||
}
|
||||
// disable collapse animation
|
||||
.collapsing {
|
||||
-webkit-transition: none;
|
||||
transition: none;
|
||||
display: none;
|
||||
}
|
||||
|
||||
.list-group {
|
||||
margin-top: .5rem;
|
||||
max-height: 10rem;
|
||||
overflow-y: auto;
|
||||
position: absolute;
|
||||
z-index: 10;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.list-group-item {
|
||||
padding-top: 0;
|
||||
padding-bottom: 0;
|
||||
min-height: 2rem;
|
||||
line-height: 1.75rem;
|
||||
cursor: pointer;
|
||||
}
|
||||
</style>
|
|
@ -5,8 +5,7 @@
|
|||
|
||||
<!-- REQUEST DESCRIPTION -->
|
||||
<strong class="request-desc">
|
||||
{{ request.uri | readableUri }}
|
||||
<small>({{ $t('history.methods.' + request.method) }})</small>
|
||||
{{ request.humanRoute }}
|
||||
</strong>
|
||||
|
||||
<div v-if="request.errors || request.warnings">
|
||||
|
@ -98,6 +97,7 @@ div {
|
|||
height: 1.25rem;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
min-width: 70px;
|
||||
}
|
||||
|
||||
|
|
154
app/src/components/TagsSelectize.vue
Normal file
154
app/src/components/TagsSelectize.vue
Normal file
|
@ -0,0 +1,154 @@
|
|||
<template>
|
||||
<div class="tags-selectize">
|
||||
<b-form-tags
|
||||
v-bind="$attrs" v-on="$listeners"
|
||||
:value="value" :id="id"
|
||||
size="lg" class="p-0 border-0" no-outer-focus
|
||||
>
|
||||
<template v-slot="{ tags, disabled, addTag, removeTag }">
|
||||
<ul v-if="!noTags && tags.length > 0" class="list-inline d-inline-block mb-2">
|
||||
<li v-for="tag in tags" :key="id + '-' + tag" class="list-inline-item">
|
||||
<b-form-tag
|
||||
@remove="onRemoveTag({ option: tag, removeTag })"
|
||||
:title="tag"
|
||||
:disabled="disabled || disabledItems.includes(tag)"
|
||||
variant="light"
|
||||
class="border border-dark mb-2"
|
||||
>
|
||||
<icon v-if="tagIcon" :iname="tagIcon" /> {{ tag }}
|
||||
</b-form-tag>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<b-dropdown
|
||||
ref="dropdown"
|
||||
variant="outline-dark" block menu-class="w-100"
|
||||
@keydown.native="onDropdownKeydown"
|
||||
>
|
||||
<template #button-content>
|
||||
<icon iname="search-plus" /> {{ label }}
|
||||
</template>
|
||||
|
||||
<b-dropdown-group class="search-group">
|
||||
<b-dropdown-form @submit.stop.prevent="() => {}">
|
||||
<b-form-group
|
||||
:label="$t('search.for', { items: itemsName })"
|
||||
label-cols-md="auto" label-size="sm" :label-for="id + '-search-input'"
|
||||
:invalid-feedback="$t('search.not_found', { items: $tc('items.' + itemsName, 0) })"
|
||||
:state="searchState" :disabled="disabled"
|
||||
class="mb-0"
|
||||
>
|
||||
<b-form-input
|
||||
ref="search-input" v-model="search"
|
||||
:id="id + '-search-input'"
|
||||
type="search" size="sm" autocomplete="off"
|
||||
/>
|
||||
</b-form-group>
|
||||
</b-dropdown-form>
|
||||
<b-dropdown-divider />
|
||||
</b-dropdown-group>
|
||||
|
||||
<b-dropdown-item-button
|
||||
v-for="option in availableOptions"
|
||||
:key="option"
|
||||
@click="onAddTag({ option, addTag })"
|
||||
>
|
||||
{{ option }}
|
||||
</b-dropdown-item-button>
|
||||
<b-dropdown-text v-if="!criteria && availableOptions.length === 0">
|
||||
<icon iname="exclamation-triangle" />
|
||||
{{ $t('items_verbose_items_left', { items: $tc('items.' + itemsName, 0) }) }}
|
||||
</b-dropdown-text>
|
||||
</b-dropdown>
|
||||
</template>
|
||||
</b-form-tags>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'TagsSelectize',
|
||||
|
||||
props: {
|
||||
value: { type: Array, required: true },
|
||||
options: { type: Array, required: true },
|
||||
id: { type: String, required: true },
|
||||
itemsName: { type: String, required: true },
|
||||
disabledItems: { type: Array, default: () => ([]) },
|
||||
// By default `addTag` and `removeTag` have to be executed manually by listening to 'tag-update'.
|
||||
auto: { type: Boolean, default: false },
|
||||
noTags: { type: Boolean, default: false },
|
||||
label: { type: String, default: null },
|
||||
tagIcon: { type: String, default: null }
|
||||
},
|
||||
|
||||
data () {
|
||||
return {
|
||||
search: ''
|
||||
}
|
||||
},
|
||||
|
||||
computed: {
|
||||
criteria () {
|
||||
return this.search.trim().toLowerCase()
|
||||
},
|
||||
|
||||
availableOptions () {
|
||||
const criteria = this.criteria
|
||||
const options = this.options.filter(opt => {
|
||||
return this.value.indexOf(opt) === -1 && !this.disabledItems.includes(opt)
|
||||
})
|
||||
if (criteria) {
|
||||
return options.filter(opt => opt.toLowerCase().indexOf(criteria) > -1)
|
||||
}
|
||||
return options
|
||||
},
|
||||
|
||||
searchState () {
|
||||
return this.criteria && this.availableOptions.length === 0 ? false : null
|
||||
}
|
||||
},
|
||||
|
||||
methods: {
|
||||
onAddTag ({ option, addTag }) {
|
||||
this.$emit('tag-update', { action: 'add', option, applyMethod: addTag })
|
||||
this.search = ''
|
||||
if (this.auto) {
|
||||
addTag(option)
|
||||
}
|
||||
},
|
||||
|
||||
onRemoveTag ({ option, removeTag }) {
|
||||
this.$emit('tag-update', { action: 'remove', option, applyMethod: removeTag })
|
||||
if (this.auto) {
|
||||
removeTag(option)
|
||||
}
|
||||
},
|
||||
|
||||
onDropdownKeydown (e) {
|
||||
// Allow to start searching after dropdown opening
|
||||
if (
|
||||
!['Tab', 'Space'].includes(e.code) &&
|
||||
e.target === this.$refs.dropdown.$el.lastElementChild
|
||||
) {
|
||||
this.$refs['search-input'].focus()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
::v-deep .dropdown-menu {
|
||||
max-height: 300px;
|
||||
overflow-y: auto;
|
||||
padding-top: 0;
|
||||
|
||||
.search-group {
|
||||
padding-top: .5rem;
|
||||
position: sticky;
|
||||
top: 0;
|
||||
background-color: white;
|
||||
}
|
||||
}
|
||||
</style>
|
|
@ -1,99 +0,0 @@
|
|||
<template lang="html">
|
||||
<div class="selectize-zone">
|
||||
<div id="selected-items" v-if="selected.length > 0">
|
||||
<b-button-group size="sm" v-for="item in filteredSelected" :key="item">
|
||||
<b-button :variant="itemVariant" :to="itemRoute ? {name: itemRoute, params: {name: item}} : null" class="item-btn">
|
||||
<icon :iname="itemIcon" /> {{ item | filter(format) }}
|
||||
</b-button>
|
||||
<b-button
|
||||
v-if="!removable || removable(item)"
|
||||
class="remove-btn" variant="warning"
|
||||
@click="onRemove(item)"
|
||||
>
|
||||
<icon :title="$t('delete')" iname="minus" />
|
||||
</b-button>
|
||||
</b-button-group>
|
||||
</div>
|
||||
|
||||
<base-selectize
|
||||
v-if="choices.length"
|
||||
:choices="choices"
|
||||
:format="format"
|
||||
:label="label"
|
||||
@selected="$emit('change', { ...$event, action: 'add' })"
|
||||
/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import BaseSelectize from '@/components/BaseSelectize'
|
||||
|
||||
export default {
|
||||
name: 'ZoneSelectize',
|
||||
|
||||
props: {
|
||||
itemIcon: { type: String, default: null },
|
||||
itemRoute: { type: String, default: null },
|
||||
itemVariant: { type: String, default: 'secondary' },
|
||||
selected: { type: Array, required: true },
|
||||
// needed by SelectizeBase
|
||||
choices: { type: Array, required: true },
|
||||
label: { type: String, default: null },
|
||||
format: { type: Function, default: null },
|
||||
removable: { type: Function, default: null }
|
||||
},
|
||||
|
||||
data: () => ({
|
||||
visible: false,
|
||||
search: '',
|
||||
focusedIndex: 0
|
||||
}),
|
||||
|
||||
computed: {
|
||||
filteredSelected () {
|
||||
return [...this.selected].sort()
|
||||
}
|
||||
},
|
||||
|
||||
methods: {
|
||||
onRemove (item) {
|
||||
this.$emit('change', { item, index: this.selected.indexOf(item), action: 'remove' })
|
||||
}
|
||||
},
|
||||
|
||||
filters: {
|
||||
filter: function (text, func) {
|
||||
if (func) return func(text)
|
||||
else return text
|
||||
}
|
||||
},
|
||||
|
||||
components: {
|
||||
BaseSelectize
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
#selected-items {
|
||||
margin-bottom: .75rem;
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
|
||||
.btn-group {
|
||||
margin-right: .5rem;
|
||||
margin-bottom: .5rem;
|
||||
|
||||
.item-btn {
|
||||
.icon {
|
||||
margin-right: .25rem;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.fa-minus {
|
||||
position: relative;
|
||||
top: 1px;
|
||||
}
|
||||
</style>
|
|
@ -10,7 +10,10 @@
|
|||
<slot name="default" />
|
||||
|
||||
<slot name="server-error">
|
||||
<b-alert variant="danger" :show="serverError !== ''" v-html="serverError" />
|
||||
<b-alert
|
||||
variant="danger" class="my-3"
|
||||
:show="serverError !== ''" v-html="serverError"
|
||||
/>
|
||||
</slot>
|
||||
</b-form>
|
||||
</template>
|
||||
|
|
|
@ -1,6 +1,3 @@
|
|||
import store from '@/store'
|
||||
|
||||
|
||||
/**
|
||||
* Allow to set a timeout on a `Promise` expected response.
|
||||
* The returned Promise will be rejected if the original Promise is not resolved or
|
||||
|
@ -19,31 +16,6 @@ export function timeout (promise, delay) {
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
* Converts an object literal into an `URLSearchParams` that can be turned into a
|
||||
* query string or used as a body in a `fetch` call.
|
||||
*
|
||||
* @param {Object} obj - An object literal to convert.
|
||||
* @param {Object} options
|
||||
* @param {Boolean} [options.addLocale=false] - Option to append the locale to the query string.
|
||||
* @return {URLSearchParams}
|
||||
*/
|
||||
export function objectToParams (obj, { addLocale = false } = {}) {
|
||||
const urlParams = new URLSearchParams()
|
||||
for (const [key, value] of Object.entries(obj)) {
|
||||
if (Array.isArray(value)) {
|
||||
value.forEach(v => urlParams.append(key, v))
|
||||
} else {
|
||||
urlParams.append(key, value)
|
||||
}
|
||||
}
|
||||
if (addLocale) {
|
||||
urlParams.append('locale', store.getters.locale)
|
||||
}
|
||||
return urlParams
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Check if passed value is an object literal.
|
||||
*
|
||||
|
|
|
@ -98,7 +98,11 @@ export function formatYunoHostArgument (arg) {
|
|||
field.component = 'SelectItem'
|
||||
field.link = { name: arg.type + '-list', text: i18n.t(`manage_${arg.type}s`) }
|
||||
field.props.choices = store.getters[arg.type + 'sAsChoices']
|
||||
value = arg.type === 'domain' ? store.getters.mainDomain : field.props.choices[0].value
|
||||
if (arg.type === 'domain') {
|
||||
value = store.getters.mainDomain
|
||||
} else {
|
||||
value = field.props.choices.length ? field.props.choices[0].value : null
|
||||
}
|
||||
|
||||
// Unknown from the specs, try to display it as an input[text]
|
||||
// FIXME throw an error instead ?
|
||||
|
|
|
@ -28,8 +28,8 @@
|
|||
"confirm_app_default": "أمتأكد مِن أنك تود تعيين هذا التطبيق كبرنامج إفتراضي ؟",
|
||||
"confirm_change_maindomain": "متأكد من أنك تريد تغيير النطاق الرئيسي ؟",
|
||||
"confirm_delete": "هل تود حقًا حذف {name} ؟",
|
||||
"confirm_firewall_open": "متأكد مِن أنك تود فتح منفذ {port} ؟ (بروتوكول : {protocol}، إتصال : {connection})",
|
||||
"confirm_firewall_close": "متأكد مِن أنك تود إغلاق منفذ {port} ؟ (بروتوكول : {protocol}، إتصال : {connection})",
|
||||
"confirm_firewall_allow": "متأكد مِن أنك تود فتح منفذ {port} ؟ (بروتوكول : {protocol}، إتصال : {connection})",
|
||||
"confirm_firewall_disallow": "متأكد مِن أنك تود إغلاق منفذ {port} ؟ (بروتوكول : {protocol}، إتصال : {connection})",
|
||||
"confirm_install_custom_app": "إنّ خيار تنصيب تطبيقات خارجية قد يؤثر على أمان نظامكم. ربما وجب عليكم ألا تقوموا بالتنصيب إلا إن كنتم حقا مدركون بما أنتم فاعلين. هل أنتم مستعدون للمخاطرة؟",
|
||||
"confirm_install_domain_root": "لن يكون بإمكانك تنصيب أي برنامج آخر على {domain}. هل تريد المواصلة ؟",
|
||||
"confirm_postinstall": "إنك بصدد إطلاق خطوة ما بعد التنصيب على النطاق {domain}. سوف تستغرق العملية بضع دقائق، لذلك *يُرجى عدم إيقاف العملية*.",
|
||||
|
@ -54,7 +54,7 @@
|
|||
"disable": "تعطيل",
|
||||
"dns": "خدمة أسماء النطاقات",
|
||||
"domain_add": "إضافة نطاق",
|
||||
"domain_add_dns_doc": "… و قد قُمتُ <a href='//yunohost.org/dns'>بإعداد خدمة أسماء النطاقات بصورة صحيحة</a>.",
|
||||
"domain_add_dns_doc": "… و قد قُمتُ <a href='//yunohost.org/dns_config' target='_blank'>بإعداد خدمة أسماء النطاقات بصورة صحيحة</a>.",
|
||||
"domain_add_dyndns_doc": "... و إني أريد الحصول على خدمة أسماء النطاقات الديناميكي.",
|
||||
"domain_add_panel_with_domain": "عندي إسم نطاق …",
|
||||
"domain_add_panel_without_domain": "لا أمتلك إسم نطاق …",
|
||||
|
|
|
@ -28,8 +28,8 @@
|
|||
"confirm_app_default": "Està segur de voler fer aquesta aplicació predeterminada?",
|
||||
"confirm_change_maindomain": "Està segur de voler canviar el domini principal?",
|
||||
"confirm_delete": "Està segur de voler eliminar {name}?",
|
||||
"confirm_firewall_open": "Està segur de voler obrir el port {port}? (protocol: {protocol}, connexió: {connection})",
|
||||
"confirm_firewall_close": "Està segur de voler tancar el port {port}? (protocol: {protocol}, connexió: {connection})",
|
||||
"confirm_firewall_allow": "Està segur de voler obrir el port {port}? (protocol: {protocol}, connexió: {connection})",
|
||||
"confirm_firewall_disallow": "Està segur de voler tancar el port {port}? (protocol: {protocol}, connexió: {connection})",
|
||||
"confirm_install_custom_app": "ATENCIÓ! La instal·lació d'aplicacions de terceres parts pot comprometre la integritat i seguretat del seu sistema. No hauríeu d'instal·lar-ne a no ser que sapigueu el que feu. Esteu segurs de voler córrer aquest risc?",
|
||||
"confirm_install_domain_root": "No podrà instal·lar cap altra aplicació {domain}. Vol continuar?",
|
||||
"confirm_migrations_skip": "Saltar-se les migracions no està recomanat. Està segur de voler continuar?",
|
||||
|
@ -55,7 +55,7 @@
|
|||
"disable": "Desactivar",
|
||||
"dns": "DNS",
|
||||
"domain_add": "Afegir domini",
|
||||
"domain_add_dns_doc": "... i he <a href='//yunohost.org/dns'> configurat el meu DNS correctament</a>.",
|
||||
"domain_add_dns_doc": "... i he <a href='//yunohost.org/dns_config' target='_blank'> configurat el meu DNS correctament</a>.",
|
||||
"domain_add_dyndns_doc": "... i vull uns servei de DNS dinàmic.",
|
||||
"domain_add_panel_with_domain": "Ja tinc un nom de domini…",
|
||||
"domain_add_panel_without_domain": "No tinc un nom de domini…",
|
||||
|
|
10
app/src/i18n/locales/ckb.json
Normal file
10
app/src/i18n/locales/ckb.json
Normal file
|
@ -0,0 +1,10 @@
|
|||
{
|
||||
"address": {
|
||||
"domain_description": {
|
||||
"email": "دامینی بو لاپه ره الکترونیکی خوت هه لبژیرکه.",
|
||||
"domain": "هه لبژاردنی دامین."
|
||||
}
|
||||
},
|
||||
"add": "زیاکردن",
|
||||
"action": "چالاکی"
|
||||
}
|
|
@ -2,14 +2,498 @@
|
|||
"password": "Heslo",
|
||||
"app_info_access_desc": "Skupiny a uživatelé kterým je povolen přístup aplikace:",
|
||||
"app_change_url": "Změnit adresu",
|
||||
"api_not_responding": "API YunoHost neodpovídá. Je možné, že „yunohost-api“ spadlo nebo bylo restartováno.",
|
||||
"api_not_responding": "API YunoHost neodpovídá. Je možné, že 'yunohost-api' aktuálně neběží nebo bylo restartováno?",
|
||||
"apply": "Použít",
|
||||
"all_apps": "Všechny aplikace",
|
||||
"all": "Všechno",
|
||||
"administration_password": "Heslo administrátora",
|
||||
"administration_password": "Heslo správce",
|
||||
"add": "Přidat",
|
||||
"active": "Aktivní",
|
||||
"action": "Akce",
|
||||
"cancel": "Storno",
|
||||
"ok": "OK"
|
||||
"ok": "OK",
|
||||
"certificate_alert_selfsigned": "Varování: Současný certifikát je typu self-signed. Novým uživatelům budou jejich prohlížeče zobrazovat odrazující varování!",
|
||||
"postinstall_intro_3": "Pro více informací navštivte <a href='//yunohost.org/en/install/hardware:vps_debian#fa-cog-proceed-with-the-initial-configuration' target='_blank'>příslušnou stránku dokumentace</a>",
|
||||
"app_choose_category": "Vybrat kategorii",
|
||||
"app_actions_label": "Provést akce",
|
||||
"app_actions": "Akce",
|
||||
"api_waiting": "Čekáme na odpověď serveru...",
|
||||
"api_not_found": "Zdá se, že web-admin zkusil dotazovat něco, co neexistuje.",
|
||||
"api_errors_titles": {
|
||||
"APIConnexionError": "YunoHost zaznamenal chybu spojení",
|
||||
"APINotRespondingError": "YunoHost API neodpovídá",
|
||||
"APINotFoundError": "YunoHost API nenalezlo trasu",
|
||||
"APIInternalError": "YunoHost zaznamenal interní chybu",
|
||||
"APIBadRequestError": "YunoHost zaznamenal chybu",
|
||||
"APIError": "YunoHost zaznamenal neočekávanou chybu"
|
||||
},
|
||||
"api_error": {
|
||||
"view_error": "Zobrazit chybu",
|
||||
"sorry": "Za toto se omlouváme.",
|
||||
"server_said": "Odpověď serveru během zpracování akce:",
|
||||
"info": "Následující informace mohou být užitečné při řešení problému:",
|
||||
"help": "Pro vyhledání pomoci navštivte <a href=\"https://forum.yunohost.org/\">fórum</a> nebo <a href=\"https://chat.yunohost.org/\">chat</a>, případně nahlašte chybu na <a href=\"https://github.com/YunoHost/issues\">Github bugtracker</a>.",
|
||||
"error_message": "Chybová zpráva:"
|
||||
},
|
||||
"api": {
|
||||
"query_status": {
|
||||
"warning": "Úspěšně dokončeno avšak s chybami nebo výstrahami",
|
||||
"success": "Úspěšně dokončeno",
|
||||
"pending": "Ve zpracování",
|
||||
"error": "Neúspěšné"
|
||||
},
|
||||
"processing": "Server zpracovává akci..."
|
||||
},
|
||||
"app_install_custom_no_manifest": "Soubor manifest.json nenalezen",
|
||||
"app_info_uninstall_desc": "Odstranit tuto aplikaci.",
|
||||
"app_info_change_url_disabled_tooltip": "Tato funkce do této aplikace ještě nebyla přidána",
|
||||
"app_info_changeurl_desc": "Změnit přístupovou adresu této aplikace (doména a/nebo cesta).",
|
||||
"app_info_default_desc": "Přesměrovat kořen domény na tuto aplikaci ({domain}).",
|
||||
"address": {
|
||||
"local_part_description": {
|
||||
"email": "Vyberte email pro poddoménu.",
|
||||
"domain": "Vyberte poddoménu."
|
||||
},
|
||||
"domain_description": {
|
||||
"email": "Vyberte doménu pro váš email.",
|
||||
"domain": "Vyberte doménu."
|
||||
}
|
||||
},
|
||||
"hook_conf_ynh_mysql": "MySQL heslo",
|
||||
"hook_conf_ynh_firewall": "Firewall",
|
||||
"hook_conf_ynh_certs": "SSL certifikáty",
|
||||
"hook_conf_xmpp": "XMPP",
|
||||
"hook_conf_ssowat": "SSOwat",
|
||||
"hook_conf_ssh": "SSH",
|
||||
"hook_conf_nginx": "Nginx",
|
||||
"hook_conf_ldap": "Databáze uživatelů",
|
||||
"hook_conf_ynh_currenthost": "Aktuální výchozí doména",
|
||||
"hook_conf_cron": "Automatické úlohy",
|
||||
"hook_adminjs_group_configuration": "Systémové konfigurace",
|
||||
"home": "Domů",
|
||||
"history": {
|
||||
"methods": {
|
||||
"PUT": "upravit",
|
||||
"POST": "založit/spustit",
|
||||
"GET": "číst",
|
||||
"DELETE": "smazat"
|
||||
},
|
||||
"last_action": "Poslední akce:",
|
||||
"title": "Historie",
|
||||
"is_empty": "V historii prozatím nic není."
|
||||
},
|
||||
"permissions": "Oprávnění",
|
||||
"groups_and_permissions_manage": "Spravovat skupiny a oprávnění",
|
||||
"groups_and_permissions": "Skupiny a oprávnění",
|
||||
"group_specific_permissions": "Specifické oprávnění uživatele",
|
||||
"group_explain_visitors_needed_for_external_client": "Některé aplikace pro správný provoz vyžadují povolení anonymního přístupu pro externí klienty. Například Nextcloud pro synchronizačního klienta na mobilním zařízení nebo desktopovém počítači.",
|
||||
"group_explain_visitors": "Toto je specifická skupina obsahující nepřihlášené (anonymní) uživatele",
|
||||
"group_explain_all_users": "Toto je specifická skupina obsahující všechny uživatelské účty na tomto serveru",
|
||||
"group_new": "Nová skupina",
|
||||
"group_add_permission": "Přidat oprávnění",
|
||||
"group_add_member": "Přidat uživatele",
|
||||
"group_format_name_help": "Můžete použít alfanumerické znaky a podtržítko",
|
||||
"group_visitors": "Hosté",
|
||||
"group_all_users": "Všichni uživatelé",
|
||||
"group_name": "Jméno skupiny",
|
||||
"group": "Skupina",
|
||||
"good_practices_about_admin_password": "Nyní definujte nové administrační heslo. Heslo by mělo obsahovat minimálně 8 znaků, avšak je doporučeno používat delší (např. ve tvaru více slov) při využití různých znaků (velká, malá, čísla a speciální znaky).",
|
||||
"go_back": "Jít zpět",
|
||||
"from_to": "od {0} do {1}",
|
||||
"form_input_example": "Příklad: {example}",
|
||||
"form_errors": {
|
||||
"required": "Položka je vyžadována.",
|
||||
"passwordMatch": "Hesla vzájemně nesouhlasí.",
|
||||
"passwordLenght": "Heslo musí být o délce nejméně 8 znaků.",
|
||||
"number": "Hodnota musí být číslo.",
|
||||
"notInUsers": "Uživatel '{value}' již existuje.",
|
||||
"minValue": "Hodnota musí být číslo rovno nebo vyšší než {min}.",
|
||||
"name": "Jména nemohou obsahovat speciální znaky mimo <code> ,.'-</code>",
|
||||
"githubLink": "Url musí být validní odkaz na Github repositář",
|
||||
"emailForward": "Nesprávný tvar email pro přesměrování: může obsahovat pouze alfanumerické znaky a <code>_.-+</code> (např. someone+tag@example.com, s0me-1+tag@example.com)",
|
||||
"email": "Nesprávný tvar emailu: může obsahovat alfanumerické znaky a <code>_.-</code> (např. someone@example.com, s0me-1@example.com)",
|
||||
"dynDomain": "Nesprávný tvar doménového jména: může obsahovat pouze malé alfanumerické znaky a pomlčku",
|
||||
"domain": "Nesprávný tvar doménového jména: musí obsahovat pouze malé alfanumerické znaky, tečku a pomlčku",
|
||||
"between": "Hodnota musí být mezi {min} a {max}.",
|
||||
"alphalownum_": "Hodnota musí obsahovat pouze alfanumerické znaky a podtržítko.",
|
||||
"alpha": "Hodnota musí obsahovat pouze čísla."
|
||||
},
|
||||
"footer": {
|
||||
"donate": "Darovat",
|
||||
"help": "Potřebujete pomoc?",
|
||||
"documentation": "Dokumentace"
|
||||
},
|
||||
"footer_version": "Provozováno na <a href='https://yunohost.org'>YunoHost</a> {version} ({repo}).",
|
||||
"firewall": "Firewall",
|
||||
"experimental_warning": "Varování: tato vlastnost je experimentální a není považována za stabilní. Nepoužívejte, pokud opravdu nevíte, co děláte.",
|
||||
"experimental": "Experimentální",
|
||||
"everything_good": "Vše v pořádku!",
|
||||
"error_connection_interrupted": "Server ukončil spojení místo odpovědi. Byli nginx nebo yunohost-api restartovány nebo zastaveny z libovolného důvodu?",
|
||||
"error_server_unexpected": "Neočekávaná chyba serveru",
|
||||
"error_modify_something": "Měli by jste něco upravit",
|
||||
"error": "Chyba",
|
||||
"enabled": "Povoleno",
|
||||
"enable": "Povolit",
|
||||
"download": "Stáhnout",
|
||||
"domains": "Domény",
|
||||
"domain_visit_url": "Otevřít {url}",
|
||||
"domain_visit": "Otevřít",
|
||||
"domain_name": "Doménové jméno",
|
||||
"domain_dns_longdesc": "Zobrazit DNS nastavení",
|
||||
"domain_dns_config": "DNS nastavení",
|
||||
"domain_delete_forbidden_desc": "Nemůžete smazat doménu '{domain}', protože je výchozí. Nejprve vyberte jinou doménu (nebo <a href='#/domains/add'>přidejte novou</a>) a nastavte ji jako výchozí.",
|
||||
"domain_delete_longdesc": "Smazat tuto doménu",
|
||||
"domain_default_longdesc": "Toto je výchozí doména.",
|
||||
"domain_default_desc": "Uživatelé se přihlašují na výchozí doméně.",
|
||||
"domain_add_panel_without_domain": "Nemám doménové jméno…",
|
||||
"domain_add_panel_with_domain": "Již mám doménové jméno…",
|
||||
"domain_add_dyndns_forbidden": "Již jste svoji doménu zaregistrovali u DynDNS, proto se můžete zeptat na odebrání vaší současné DynDNS domény na fóru <a href='//forum.yunohost.org/t/nohost-domain-recovery-suppression-de-domaine-en-nohost-me-noho-st-et-ynh-fr/442'>v samostatném diskuzním příspěvku</a>.",
|
||||
"domain_add_dyndns_doc": "... chci využít službu dynamického DNS.",
|
||||
"domain_add_dns_doc": "… provedeno <a href='//yunohost.org/dns_config' target='_blank'>nastavení DNS</a>.",
|
||||
"domain_add": "Přidat doménu",
|
||||
"dns": "DNS",
|
||||
"disabled": "Zakázáno",
|
||||
"disable": "Zakázat",
|
||||
"run_first_diagnosis": "Spustit výchozí diagnostiku",
|
||||
"run": "Spustit",
|
||||
"confirm_install_app_lowquality": "Upozornění: tato aplikace může fungovat správně, avšak není plně integrována s YunoHost. Některé vlastnosti jako např. jednotné přihlášení nemusí být dostupné.",
|
||||
"confirm_app_install": "Opravdu chcete instalovat tuto aplikaci?",
|
||||
"confirm_install_domain_root": "Opravdu chcete instalovat tuto aplikaci na \"/\"? Nebude možné pak instalovat žádné další aplikace na {domain}",
|
||||
"confirm_install_custom_app": "VAROVÁNÍ! Instalace aplikací třetích stran může kompromitovat integritu a bezpečnost vašeho systému. Pravděpodobně byste toto NEMĚLI provádět, pokud opravdu nevíte, co děláte. Jste připraveni přijmout toto riziko?",
|
||||
"confirm_group_add_access_permission": "Opravdu chcete přidělit oprávnění {perm} k {name}? Tímto značně zvýšíte možnost zneužití, zejména pokud {name} nebude mít čisté úmysly. Proveďte pouze pokud DŮVĚŘUJETE této osobě/skupině.",
|
||||
"confirm_firewall_disallow": "Opravdu chcete uzavřít port {port} (protokol: {protocol}, spojení: {connection})",
|
||||
"confirm_firewall_allow": "Opravdu chcete otevřít {port} (protokol: {protocol}, spojení: {connection})",
|
||||
"confirm_delete": "Opravdu chcete smazat {name}?",
|
||||
"confirm_app_change_url": "Opravdu chcete změnit přístupové URL aplikace?",
|
||||
"confirm_change_maindomain": "Opravdu chcete změnit hlavní doménu?",
|
||||
"confirm_app_default": "Opravdu chcete nastavit tuto aplikaci jako výchozí?",
|
||||
"configuration": "Nastavení",
|
||||
"common": {
|
||||
"lastname": "Příjmení",
|
||||
"firstname": "Křestní jméno"
|
||||
},
|
||||
"code": "Zdroj",
|
||||
"close": "Zavřít",
|
||||
"check": "Kontrola",
|
||||
"catalog": "Katalog",
|
||||
"both": "Obojí",
|
||||
"begin": "Zahájit",
|
||||
"backup_new": "Nová záloha",
|
||||
"backup_create": "Vytvořit zálohu",
|
||||
"backup_content": "Obsah zálohy",
|
||||
"backup_action": "Zálohovat",
|
||||
"backup": "Záloha",
|
||||
"archive_empty": "Prázdný archiv",
|
||||
"applications": "Aplikace",
|
||||
"app_state_working_explanation": "Správce této aplikace ji deklaruje jako \"funkční\". To znamená, že může být funkční, avšak nebyla řádně zkontrolována, může tedy obsahovat chyby nebo není plně integrována s YunoHost.",
|
||||
"app_state_working": "funkční",
|
||||
"app_state_highquality_explanation": "Tato aplikace dosahuje během uplynulého roku vysoké kvality.",
|
||||
"app_state_highquality": "vysoká kvalita",
|
||||
"app_state_lowquality_explanation": "Tato aplikace může být funkční, ale stále obsahuje chyby nebo není plně integrována s YunoHost nebo nerespektuje obecná doporučení.",
|
||||
"app_state_lowquality": "nízká kvalita",
|
||||
"app_state_notworking_explanation": "Správce této aplikace deklaruje, že aplikace \"není funkční\". DOJDE K POŠKOZENÍ VAŠEHO SYSTÉMU!",
|
||||
"app_state_notworking": "nefunkční",
|
||||
"app_state_inprogress_explanation": "Správce této aplikace deklaruje, že aplikace není vhodná pro produkční využívání. BUĎTE OPARTNÍ!",
|
||||
"app_state_inprogress": "zatím nefunkční",
|
||||
"app_show_categories": "Zobrazit kategorie",
|
||||
"app_no_actions": "Tato aplikace nemá žádné akce",
|
||||
"app_make_default": "Nastavit výchozí",
|
||||
"app_manage_label_and_tiles": "Správa štítků a dlaždic",
|
||||
"app_install_parameters": "Nastavení instalace",
|
||||
"app_config_panel_no_panel": "Tato aplikace nemá dostupné nastavení",
|
||||
"app_config_panel_label": "Nastavit tuto aplikaci",
|
||||
"app_config_panel": "Konfigurační panel",
|
||||
"unmaintained": "Neudržované",
|
||||
"unknown": "Neznámé",
|
||||
"uninstall": "Odinstalovat",
|
||||
"unignore": "Smazat ignoraci",
|
||||
"unauthorized": "Nepřihlášeno",
|
||||
"udp": "UDP",
|
||||
"traceback": "Zpětné dohledání",
|
||||
"tools_webadmin_settings": "Nastavení webové administrace",
|
||||
"tools_webadmin": {
|
||||
"transitions": "Animované přechody stránek",
|
||||
"experimental_description": "Bude povolen přístup k experimentálním vlastnostem. Ty jsou ale považovány za nestabilní a může dojít k poškození vašeho systému.<br>Povolte toto nastavení pouze v případě, kdy víte, co děláte.",
|
||||
"experimental": "Experimentální režim",
|
||||
"cache_description": "Pokud plánujete pracovat s CLI (příkazovou řádkou) a zároveň s webovou administrací, zvažte vypnutí mezipaměti.",
|
||||
"cache": "Mezipamět",
|
||||
"fallback_language_description": "Jazyk, který se vám zobrazí v případě neexistujícího překladu do vámi zvoleného primárního.",
|
||||
"fallback_language": "Záložní jazyk",
|
||||
"language": "Jazyk"
|
||||
},
|
||||
"tools_shutdown_reboot": "Vypnutí/Restart",
|
||||
"tools_shuttingdown": "Váš server se vypíná. Po dobu vypnutí vašeho serveru není webová administrace funkční.",
|
||||
"tools_shutdown_done": "Probíhá vypnutí...",
|
||||
"tools_shutdown_btn": "Vypnout",
|
||||
"tools_shutdown": "Vypnout váš server",
|
||||
"tools_rebooting": "Váš server se restartuje. Pro návrat do webové administrace vyčkejte naběhnutí vašeho serveru. Můžete zkoušet obnovovat (F5) tuto přihlašovací stránku.",
|
||||
"tools_reboot_done": "Probíhá restart...",
|
||||
"tools_reboot_btn": "Restartovat",
|
||||
"tools_reboot": "Restartovat váš server",
|
||||
"tools_power_up": "Váš server se zdá být dostupným, můžete se zkusit přihlásit.",
|
||||
"tools_adminpw_current_placeholder": "Zadejte vaše stávající heslo",
|
||||
"tools_adminpw_current": "Stávající heslo",
|
||||
"tools_adminpw": "Změnit administrační heslo",
|
||||
"tools": "Nástroje",
|
||||
"tip_about_user_email": "Uživatelům je vytvořena příslušná emailová adresa (a XMPP účet) ve tvaru uzivatelskejmeno@vasedomena.cz. Další emailové aliasy a emailové přesměrování mohou být později přidány administrátorem a také samotnými uživateli.",
|
||||
"tcp": "TCP",
|
||||
"system_upgrade_all_packages_btn": "Aktualizovat všechny balíky",
|
||||
"system_upgrade_all_applications_btn": "Aktualizovat všechny aplikace",
|
||||
"system_upgrade_btn": "Aktualizace",
|
||||
"system_update": "Aktualizace systému",
|
||||
"system_packages_nothing": "Všechny systémové balíky jsou aktuální!",
|
||||
"system_apps_nothing": "Všechny aplikace jsou aktuální!",
|
||||
"system": "Systém",
|
||||
"stop": "Zastavit",
|
||||
"status": "Stav",
|
||||
"start": "Spustit",
|
||||
"skip": "Přeskočit",
|
||||
"since": "od",
|
||||
"size": "Velikost",
|
||||
"set_default": "Nastavit výchozí",
|
||||
"services": "Služby",
|
||||
"service_start_on_boot": "Spustit při startu",
|
||||
"select_none": "Nevybrat nic",
|
||||
"select_all": "Vybrat vše",
|
||||
"search": {
|
||||
"not_found": "Nalezeny {items} odpovídající vašemu zadání.",
|
||||
"for": "Hledat {items}..."
|
||||
},
|
||||
"save": "Uložit",
|
||||
"running": "Provádí se",
|
||||
"human_routes": {
|
||||
"users": {
|
||||
"update": "Editovat uživatele '{name}'",
|
||||
"delete": "Smazat uživatele '{name}'",
|
||||
"create": "Založit uživatele '{name}'"
|
||||
},
|
||||
"upgrade": {
|
||||
"app": "Aktualizovat '{app}' aplikaci",
|
||||
"apps": "Aktualizovat všechny aplikace",
|
||||
"system": "Aktualizovat systém"
|
||||
},
|
||||
"update": "Zkontrolovat aktualizace",
|
||||
"shutdown": "Vypnout server",
|
||||
"share_logs": "Vygenerovat odkaz pro záznam '{name}'",
|
||||
"services": {
|
||||
"stop": "Zastavit službu '{name}'",
|
||||
"start": "Spustit službu '{name}'",
|
||||
"restart": "Restartovat službu '{name}'"
|
||||
},
|
||||
"reboot": "Restartovat server",
|
||||
"postinstall": "Spustit post instalační akce",
|
||||
"permissions": {
|
||||
"remove": "Odebrat '{name}' přístup k '{perm}'",
|
||||
"add": "Povolit '{name}' přístup k '{perm}'"
|
||||
},
|
||||
"migrations": {
|
||||
"skip": "Přeskočit migrace",
|
||||
"run": "Spustit migrace"
|
||||
},
|
||||
"groups": {
|
||||
"remove": "Odstranit '{user}' ze skupiny '{name}'",
|
||||
"add": "Přidat '{user}' do skupiny '{name}'",
|
||||
"delete": "Smazat skupinu '{name}'",
|
||||
"create": "Založit skupinu '{name}'"
|
||||
},
|
||||
"firewall": {
|
||||
"upnp": "{action} UPnP",
|
||||
"ports": "{action} port {port} ({protocol}, {connection})"
|
||||
},
|
||||
"domains": {
|
||||
"set_default": "Nastavit '{name}' jako výchozí doménu",
|
||||
"revert_to_selfsigned": "Navrátit se k sám sebou podepsaném certifikátu '{name}'",
|
||||
"regen_selfsigned": "Obnovit certifikát podepsaný sám sebou '{name}'",
|
||||
"manual_renew_LE": "Obnovit certifikát pro '{name}'",
|
||||
"install_LE": "Instalovat certifikát pro '{name}'",
|
||||
"delete": "Smazat doménu '{name}'",
|
||||
"add": "Přidat doménu '{name}'"
|
||||
},
|
||||
"diagnosis": {
|
||||
"unignore": {
|
||||
"warning": "Smazat ignoraci varování",
|
||||
"error": "Smazat ignoraci chyby"
|
||||
},
|
||||
"run_specific": "Spustit '{description}' diagnostiku",
|
||||
"run": "Znovu spustit diagnostiku",
|
||||
"ignore": {
|
||||
"warning": "Ignorovat varování",
|
||||
"error": "Ignorovat chybu/hlášení"
|
||||
}
|
||||
},
|
||||
"backups": {
|
||||
"restore": "Obnovit zálohu '{name}'",
|
||||
"delete": "Smazat zálohu '{name}'",
|
||||
"create": "Vytvořit zálohu"
|
||||
},
|
||||
"apps": {
|
||||
"update_config": "Upravit konfiguraci aplikace '{name}'",
|
||||
"uninstall": "Odinstalovat aplikaci '{name}'",
|
||||
"perform_action": "Vykonat akci '{action}' aplikace '{name}'",
|
||||
"set_default": "Přesměrovat '{domain}' doménový kořen na '{name}'",
|
||||
"install": "Instalovat aplikaci '{name}'",
|
||||
"change_url": "Změnit přístupové url '{name}'",
|
||||
"change_label": "Změnit popis z '{prevName}' na '{nextName}'"
|
||||
},
|
||||
"adminpw": "Změnit administrační heslo"
|
||||
},
|
||||
"logs_no_logs_registered": "V této kategorii není žádný záznam",
|
||||
"logs_app": "Aplikační záznamy",
|
||||
"logs_service": "Záznamy služeb",
|
||||
"logs_access": "Seznam povolených a zakázaných přístupů (banánů ;-)",
|
||||
"logs_system": "Záznamy jádra Linuxu a další nízkoúrovňové záznamy",
|
||||
"logs_package": "Historie Debian balíkového systému",
|
||||
"logs_history": "Historie spuštěných příkazů",
|
||||
"logs_operation": "YunoHost provedené akce",
|
||||
"logs_suboperations": "Další akce",
|
||||
"logs": "Záznamy",
|
||||
"placeholder": {
|
||||
"domain": "moje-domena.cz",
|
||||
"groupname": "Moje skupina",
|
||||
"lastname": "Novák",
|
||||
"firstname": "Jan",
|
||||
"username": "jannovak"
|
||||
},
|
||||
"perform": "Vykonat",
|
||||
"path": "Cesta",
|
||||
"password_confirmation": "Ověření hesla",
|
||||
"operation_failed_explanation": "Tato akce neproběhla správně! Omlouváme se :( Můžete se zkusit <a href='https://yunohost.org/help'>zeptat</a>. Pomáhajícím uživatelům dodejte prosím *veškeré záznamy* proběhnuté akce. Můžete tak učinit kliknutím zelené tlačítko 'Sdílet s Yunopaste'. Při sdílení záznamů se YunoHost pokusí automaticky anonymizovat privátní data jako např. doménová jména a IP adresy.",
|
||||
"others": "Ostatní",
|
||||
"orphaned_details": "Určitou dobu tato aplikace již není spravována. Může být stále funkční, avšak již nebude aktualizována, pokud se její správy neujme nějaký dobrovolník. Staňte se jím třeba vy!",
|
||||
"orphaned": "Neudržované/opuštěné",
|
||||
"operations": "Operace",
|
||||
"open": "Otevřít",
|
||||
"only_decent_quality_apps": "Pouze aplikace přijatelné kvality",
|
||||
"only_working_apps": "Pouze fungující aplikace",
|
||||
"only_highquality_apps": "Pouze aplikace vysoké kvality",
|
||||
"nobody": "Nikomu",
|
||||
"no": "Ne",
|
||||
"next": "Další",
|
||||
"myserver": "můj server",
|
||||
"multi_instance": "Může být instalováno ve více instancích",
|
||||
"migrations_disclaimer_not_checked": "Před spuštěním této migrace je vyžadován souhas s prohlášením.",
|
||||
"migrations_disclaimer_check_message": "Přečetl/a jsem si a rozumím tomuto prohlášení",
|
||||
"migrations_no_done": "Žádné předchozí migrace",
|
||||
"migrations_no_pending": "Žádné čekající migrace",
|
||||
"migrations_done": "Předchozí migrace",
|
||||
"migrations_pending": "Čekající migrace",
|
||||
"migrations": "Migrace",
|
||||
"manage_users": "Spravovat uživatele",
|
||||
"manage_domains": "Spravovat domény",
|
||||
"manage_apps": "Spravovat aplikace",
|
||||
"mailbox_quota_placeholder": "Pro zakázání/neomezeno nastavte 0.",
|
||||
"mailbox_quota_example": "700M odpovídá CD, 4700M odpovídá DVD",
|
||||
"mailbox_quota_description": "Nastavit limit úložiště pro obsah emailů.<br>Pro neomezený limit nastavte 0.",
|
||||
"local_archives": "Lokální zálohy",
|
||||
"license": "Licence",
|
||||
"last_ran": "Čas posledního spuštění:",
|
||||
"label_for_manifestname": "Název pro {name}",
|
||||
"label": "Název",
|
||||
"items_verbose_items_left": "Zbývá {items} položek.",
|
||||
"items_verbose_count": "Počet položek {items}.",
|
||||
"items": {
|
||||
"users": "žádní uživatelé | uživatel | {c} uživatelů",
|
||||
"services": "žádné služby | služba | {c} služeb",
|
||||
"permissions": "žádná oprávnění | oprávnění | {c} oprávnění",
|
||||
"logs": "žádné záznamy | záznam | {c} záznamů",
|
||||
"installed_apps": "žádné instalované aplikace | instalovaná aplikace | {c} instalovaných aplikací",
|
||||
"groups": "žádná skupina | skupina | {c} skupin",
|
||||
"domains": "žádné domény | doména | {c} domén",
|
||||
"backups": "žádné zálohy | záloha | {c} záloh",
|
||||
"apps": "žádné aplikace | aplikace | {c} aplikací"
|
||||
},
|
||||
"issues": "{count} chyb/problémů",
|
||||
"ipv6": "IPv6",
|
||||
"ipv4": "IPv4",
|
||||
"installed": "Instalováno",
|
||||
"installation_complete": "Instalace dokončena",
|
||||
"install_time": "Délka instalace",
|
||||
"install_name": "Instalovat {id}",
|
||||
"install": "Instalovat",
|
||||
"infos": "Informace",
|
||||
"ignored": "{count} ignorovaných",
|
||||
"ignore": "Ignorovat",
|
||||
"id": "ID",
|
||||
"hook_data_xmpp_desc": "Konfigurace uživatelů, místností a nahrávání souborů",
|
||||
"hook_data_xmpp": "XMPP data",
|
||||
"hook_data_mail_desc": "Emaily ve zdrojové podobě uložené na serveru",
|
||||
"hook_data_mail": "Email",
|
||||
"hook_data_home_desc": "Data uživatelů se nalézají v /home/USER",
|
||||
"hook_data_home": "Data uživatelů",
|
||||
"hook_conf_manually_modified_files": "Manuálně změněné konfigurace",
|
||||
"hook_conf_ynh_settings": "YunoHost konfigurace",
|
||||
"diagnosis_explanation": "Pro zachování bezchybného provozu se diagnostika se pokusí identifikovat obvyklé problémy. Diagnostika je také spouštěna pravidelně dvakrát denně a emailem administrátorovi je zasílán report. Pokud nevyužíváte některé vlastnosti (např. XMPP) nebo máte vlastní složitější nastavení, prováděné testy nemusí být pro vás relevantní. V takových případech (a pokud víte, co děláte) je v pořádku nastavit ignoraci u příslušných problémů.",
|
||||
"diagnosis_first_run": "Pro zachování bezchybného provozu se diagnostika se pokusí identifikovat obvyklé problémy. V případě nalezených chyb či problémů není nutno panikařit: spíše se jimy nechte inspirovat. Mimochodem diagnostika je spouštěna pravidelně dvakrát denně a emailem administrátorovi je zasílán report.",
|
||||
"diagnosis_experimental_disclaimer": "Pozor, tato diagnostika je stále experimentální a nemusí být zcela spolehlivá.",
|
||||
"diagnosis": "Diagnostika",
|
||||
"domain_dns_conf_is_just_a_recommendation": "Tato stránka vám zobrazuje *doporučené* nastavení. *Nenastavujeme* DNS za vás. Nastavení DNS je nutné provést u vašeho DNS registrátora dle tohoto doporučení.",
|
||||
"details": "Detaily",
|
||||
"description": "Popis",
|
||||
"delete": "Smazat",
|
||||
"dead": "Neaktivní",
|
||||
"day_validity": " Vypršelo | 1 den | {count} dní/ů",
|
||||
"custom_app_install": "Instalovat vlastní aplikaci",
|
||||
"created_at": "Vytvořeno v",
|
||||
"connection": "Připojení",
|
||||
"confirm_reboot_action_shutdown": "Opravdu chcete vypnout váš server?",
|
||||
"confirm_reboot_action_reboot": "Opravdu chcete restartovat váš server?",
|
||||
"confirm_upnp_disable": "Opravdu chcete zakázat UPnP?",
|
||||
"confirm_upnp_enable": "Opravdu chcete povolit UPnP?",
|
||||
"confirm_update_specific_app": "Opravdu chcete aktualizovat aplikaci {app}?",
|
||||
"confirm_update_system": "Opravdu chcete aktualizovat všechny systémové balíky?",
|
||||
"confirm_update_apps": "Opravdu chcete aktualizovat všechny aplikace?",
|
||||
"confirm_uninstall": "Opravdu chcete odinstalovat {name}?",
|
||||
"confirm_service_stop": "Opravdu chcete zastavit {name}?",
|
||||
"confirm_service_start": "Opravdu chcete spustit {name}?",
|
||||
"confirm_service_restart": "Opravdu chcete restartovat {name}?",
|
||||
"confirm_restore": "Opravdu chcete obnovit {name}?",
|
||||
"confirm_postinstall": "Nyní se spustí post instalační akce na doméně {domain}. Může to trvat několik minut, *nepřerušujte tuto operaci*.",
|
||||
"confirm_migrations_skip": "Přeskočení migrací není doporučeno. Opravdu tomu tak chcete?",
|
||||
"confirm_install_app_inprogress": "VAROVÁNÍ! Tato aplikace je stále experimentální (případně nepracuje správně) a může poškodit váš systém! Neměli byste ji instalovat pokud si tím opravdu nejste jisti. Risknete to?",
|
||||
"restart": "Restartovat",
|
||||
"restore": "Obnovit",
|
||||
"rerun_diagnosis": "Znovu spustit diagnostiku",
|
||||
"readme": "Přečti si",
|
||||
"protocol": "Protokol",
|
||||
"previous": "Předchozí",
|
||||
"postinstall_set_password": "Nastavit administrační heslo",
|
||||
"postinstall_set_domain": "Nastavit hlavní doménu",
|
||||
"postinstall_password": "Toto heslo bude použito pro správu veškerého nastavení vašeho serveru. Zvažte využití opravdu silného hesla.",
|
||||
"postinstall_intro_2": "K aktivaci serverových služeb jsou vyžadovány další dva konfigurační kroky.",
|
||||
"postinstall_intro_1": "Gratulujeme! YunoHost byl úspěšně nainstalován.",
|
||||
"postinstall_domain": "Toto je první doména nastavená na vašem YunoHost serveru, bude použita pro přihlašování vašich uživatelů. Bude zobrazena komukoliv, proto ji zvolte s rozvahou.",
|
||||
"postinstall": {
|
||||
"force": "Vynutit post instalaci"
|
||||
},
|
||||
"ports": "Porty",
|
||||
"port": "Port",
|
||||
"permission_show_tile_enabled": "Zobrazit jako dlaždici v uživatelském portálu",
|
||||
"permission_main": "Hlavní nadpis",
|
||||
"permission_corresponding_url": "Odpovídající URL",
|
||||
"pending_migrations": "Na spuštění čekají migrační akce. Prosím spusťte je v sekci <a href='#/tools/migrations'>Nástroje > Migrace</a> .",
|
||||
"logs_more": "Zobrazit více řádků",
|
||||
"logs_share_with_yunopaste": "Sdílet logy pomocí YunoPaste",
|
||||
"logs_context": "Kontext",
|
||||
"logs_path": "Cesta",
|
||||
"logs_started_at": "Spustit",
|
||||
"logs_ended_at": "Konec",
|
||||
"logs_error": "Chyba",
|
||||
"logout": "Odhlásit se",
|
||||
"login": "Přihlásit se",
|
||||
"good_practices_about_user_password": "Nyní zvolte nové heslo uživatele. Heslo by mělo být minimálně 8 znaků dlouhé, avšak je dobrou taktikou jej mít delší (např. použít více slov) a použít kombinaci znaků (velké, malé, čísla a speciální znaky).",
|
||||
"user_username": "Uživatelské jméno",
|
||||
"user_new_forward": "adresa-pro-presmerovani@jina-domena.cz",
|
||||
"user_mailbox_use": "Zabrané místo emailové schránky",
|
||||
"user_mailbox_quota": "Kvóta emailové schránky",
|
||||
"user_interface_link": "Uživatelské rozhraní",
|
||||
"user_fullname": "Celé jméno",
|
||||
"user_emailforward_add": "Přidat email k přesměrování",
|
||||
"user_emailforward": "Přesměrovaní emailu",
|
||||
"user_emailaliases_add": "Přidat emailový alias",
|
||||
"user_emailaliases": "Emailové aliasy",
|
||||
"user_email": "Email",
|
||||
"url": "URL",
|
||||
"upnp_enabled": "UPnP je povoleno.",
|
||||
"upnp_disabled": "UPnP je zákázáno.",
|
||||
"upnp": "UPnP"
|
||||
}
|
||||
|
|
|
@ -3,9 +3,9 @@
|
|||
"add": "Hinzufügen",
|
||||
"administration_password": "Verwaltungspasswort",
|
||||
"api_not_responding": "Die YunoHost-API antwortet nicht. Vielleicht ist 'yunohost-api' ausgefallen oder wurde neu gestartet?",
|
||||
"app_info_access_desc": "Gruppen / Benutzer*innen, die auf diese App zugreifen dürfen:",
|
||||
"app_info_default_desc": "Hauptdomain auf diese App ({domain}) weiterleiten.",
|
||||
"app_info_uninstall_desc": "Diese App löschen.",
|
||||
"app_info_access_desc": "Gruppen / Benutzer:innen, die auf diese Applikation zugreifen dürfen:",
|
||||
"app_info_default_desc": "Hauptdomäne auf diese Applikation ({domain}) weiterleiten.",
|
||||
"app_info_uninstall_desc": "Diese Applikation löschen.",
|
||||
"app_install_custom_no_manifest": "Keine manifest.json Datei",
|
||||
"app_make_default": "Als Standard setzen",
|
||||
"applications": "Applikationen",
|
||||
|
@ -19,27 +19,27 @@
|
|||
"both": "Beide",
|
||||
"check": "Prüfen",
|
||||
"close": "Schließen",
|
||||
"confirm_app_default": "Möchtest du diese App als Standard einstellen?",
|
||||
"confirm_change_maindomain": "Möchtest du wirklich die Hauptdomain ändern?",
|
||||
"confirm_delete": "Möchtest du wirklich {name} löschen?",
|
||||
"confirm_install_custom_app": "WARNUNG! Die Installation von Drittanbieter Apps könnte die Sicherheit und Integrität deines Systems gefährden. Du solltest sie nicht installieren außer du weißt was du tust. Willst du das Risiko eingehen?",
|
||||
"confirm_install_domain_root": "Bist du sicher das du die Anwendung '/'? installieren willst? Du kann keine andere App auf der Domäne {domain} installieren",
|
||||
"confirm_postinstall": "Du bist dabei, den Konfigurationsprozess für die Domain {domain} starten. Dies wird ein paar Minuten dauern, *die Ausführung nicht unterbrechen*.",
|
||||
"confirm_restore": "Möchtest du wirklich {name} wiederherstellen?",
|
||||
"confirm_uninstall": "Möchtest du wirklich {name} deinstallieren?",
|
||||
"confirm_app_default": "Möchten Sie diese Applikation als Standard setzen?",
|
||||
"confirm_change_maindomain": "Möchten Sie wirklich die Hauptdomäne ändern?",
|
||||
"confirm_delete": "Möchten Sie {name} wirklich löschen?",
|
||||
"confirm_install_custom_app": "WARNUNG! Die Installation von Drittanbieterapplikation könnte die Sicherheit und Integrität Ihres Systems gefährden. Sie sollten sie nicht installieren, ausser Sie wissen, was Sie tun. Wollen Sie dieses Risiko eingehen?",
|
||||
"confirm_install_domain_root": "Sind Sie sicher, dass Sie diese Applikation auf '/'? installieren wollen? Sie können keine andere Applikation auf der Domäne {domain} installieren",
|
||||
"confirm_postinstall": "Sie sind dabei, den Konfigurationsprozess für die Domäne {domain} zu starten. Dies wird ein paar Minuten dauern, *unterbrechen Sie diese Operation nicht*.",
|
||||
"confirm_restore": "Möchten Sie {name} wirklich wiederherstellen?",
|
||||
"confirm_uninstall": "Möchten Sie {name} wirklich deinstallieren?",
|
||||
"connection": "Verbindung",
|
||||
"created_at": "Erstellt am",
|
||||
"custom_app_install": "Benutzerdefinierte App installieren",
|
||||
"custom_app_install": "Benutzerdefinierte Applikation installieren",
|
||||
"custom_app_url_only_github": "Derzeit nur von GitHub aus möglich",
|
||||
"delete": "Löschen",
|
||||
"description": "Beschreibung",
|
||||
"disable": "Deaktivieren",
|
||||
"domain_add": "Domain hinzufügen",
|
||||
"domain_add_dns_doc": "... und ich habe <a href='//yunohost.org/dns'>meine DNS Einstellung richtig hinterlegt</a>.",
|
||||
"domain_add_dns_doc": "... und ich habe <a href='//yunohost.org/dns_config' target='_blank'>meine DNS Einstellung richtig hinterlegt</a>.",
|
||||
"domain_add_dyndns_doc": "... und ich möchte einen Dienst für dynamisches DNS nutzen.",
|
||||
"domain_add_panel_with_domain": "Ich habe schon eine Domain…",
|
||||
"domain_add_panel_without_domain": "Ich habe keine Domain…",
|
||||
"domain_default_desc": "Die Standarddomain ist die Domain, an der sich die Benutzer anmelden.",
|
||||
"domain_default_desc": "Die Standarddomain ist die Domain, an der sich die Benutzer:innen anmelden.",
|
||||
"domain_name": "Domainname",
|
||||
"domains": "Domänen",
|
||||
"download": "Herunterladen",
|
||||
|
@ -49,7 +49,7 @@
|
|||
"home": "Home",
|
||||
"hook_adminjs_group_configuration": "Systemkonfigurationen",
|
||||
"hook_conf_cron": "Automatisierte Aufgaben",
|
||||
"hook_conf_ldap": "LDAP Datenbank",
|
||||
"hook_conf_ldap": "Benutzerdatenbank",
|
||||
"hook_conf_nginx": "Nginx",
|
||||
"hook_conf_ssh": "SSH",
|
||||
"hook_conf_ssowat": "SSOwat",
|
||||
|
@ -78,8 +78,8 @@
|
|||
"mailbox_quota_description": "Zum Beispiel, eine CD verfügt über 700M, eine über 4700M.",
|
||||
"manage_apps": "Apps verwalten",
|
||||
"manage_domains": "Domains verwalten",
|
||||
"manage_users": "Benutzer*innen verwalten",
|
||||
"multi_instance": "Mehrere Instanzen",
|
||||
"manage_users": "Benutzer:innen verwalten",
|
||||
"multi_instance": "Kann mehrere Male installiert werden",
|
||||
"myserver": "meinserver",
|
||||
"next": "Weiter",
|
||||
"no": "Nein",
|
||||
|
@ -90,15 +90,15 @@
|
|||
"path": "Pfad",
|
||||
"port": "Port",
|
||||
"ports": "Ports",
|
||||
"postinstall_domain": "Dies ist die primäre Domain für deinen YunoHost Server und auch die Domain, an der sich die Benutzer*innen anmelden werden. Sie wird für alle Benutzer*innen sichtbar sein, daher wähle die primäre Domain sorgfältig aus.",
|
||||
"postinstall_domain": "Dies ist die primäre Domain für deinen YunoHost Server und auch die Domain, an der sich die Benutzer:innen anmelden werden. Sie wird für alle Benutzer:innen sichtbar sein, daher wähle die primäre Domain sorgfältig aus.",
|
||||
"postinstall_intro_1": "Gratuliere! YunoHost wurde erfolgreich installiert.",
|
||||
"postinstall_intro_2": "Zwei weitere Einstellungen sind notwendig, um den Dienst auf deinem Server zu aktivieren.",
|
||||
"postinstall_intro_3": "Du kannst mehr Informationen in der <a href='//yunohost.org/postinstall' target='_blank'>Dokumentation</a> finden",
|
||||
"postinstall_intro_3": "Sie können mehr Informationen erhalten, wenn Sie in der<a href='//yunohost.org/postinstall' target='_blank'>entsprechenden Dokumentationsseite</a> nachlesen",
|
||||
"postinstall_password": "Dieses Passwort wird zur Verwaltung deines Servers benötigt. Wähle es mit Bedacht.",
|
||||
"previous": "Zurück",
|
||||
"protocol": "Protokoll",
|
||||
"restore": "Wiederherstellen",
|
||||
"running": "Im Betrieb",
|
||||
"running": "In Betrieb",
|
||||
"save": "Speichern",
|
||||
"service_start_on_boot": "Beim Hochfahren starten",
|
||||
"services": "Dienste",
|
||||
|
@ -128,14 +128,14 @@
|
|||
"user_emailaliases": "E-Mail Aliase",
|
||||
"user_emailforward": "E-Mail Weiterleitung",
|
||||
"user_fullname": "Vollständiger Name",
|
||||
"user_interface_link": "Benutzer*innenoberfläche",
|
||||
"user_interface_link": "Benutzeroberfläche",
|
||||
"user_mailbox_quota": "Mailbox Kontingent",
|
||||
"user_new_forward": "weiterleitung@externedomain.org",
|
||||
"user_username": "Benutzer*innenname",
|
||||
"user_username": "Benutzer:inname",
|
||||
"user_username_edit": "Account von {name} bearbeiten",
|
||||
"users": "Benutzer*in",
|
||||
"users_new": "Neue_r Benutzer*in",
|
||||
"users_no": "Keine Benutzer*in.",
|
||||
"users": "Benutzer:innen",
|
||||
"users_new": "Neue:r Benutzer:in",
|
||||
"users_no": "Keine Benutzer:in.",
|
||||
"wrong_password": "Falsches Passwort",
|
||||
"yes": "Ja",
|
||||
"app_state_inprogress": "funktioniert noch nicht",
|
||||
|
@ -155,7 +155,7 @@
|
|||
"mailbox_quota_placeholder": "Leer lassen oder 0 zum Deaktivieren eintragen.",
|
||||
"user_mailbox_use": "von der Mailbox verwendeter Speicherplatz",
|
||||
"certificate_alert_not_valid": "KRITISCH : Das aktuelle Zertifikat ist nicht gültig ! HTTPS wird nicht funktionieren !",
|
||||
"certificate_alert_selfsigned": "WARNUNG : Es wird ein selbstsigniertes Zertifikat verwendet. Der Browser wird neuen Besucher*innen daher eine Fehlermeldung anzeigen !",
|
||||
"certificate_alert_selfsigned": "WARNUNG : Es wird ein selbstsigniertes Zertifikat verwendet. Der Browser wird neuen Besuchern daher eine Fehlermeldung anzeigen !",
|
||||
"certificate_alert_letsencrypt_about_to_expire": "Das aktuelle Zertifikat läuft in Kürze ab. Es wird bald automatisch erneuert.",
|
||||
"certificate_alert_about_to_expire": "WARNUNG : Das aktuelle Zertifikat läuft in Kürze ab ! Es wird NICHT automatisch erneuert !",
|
||||
"certificate_alert_good": "Okay, das aktuelle Zertifikat scheint zu funktionieren !",
|
||||
|
@ -180,46 +180,46 @@
|
|||
"revert_to_selfsigned_cert_message": "Wenn du willst, kannst du erneut ein selbstsigniertes Zertifikat installieren. (Nicht empfohlen)",
|
||||
"revert_to_selfsigned_cert": "In ein selbstsigniertes Zertifikat umwandeln",
|
||||
"confirm_cert_revert_to_selfsigned": "Bist du sicher, dass du dieser Domain erneut ein selbstsigniertes Zertifikat zuweisen willst ?",
|
||||
"confirm_service_start": "Möchtest du wirklich {name} starten?",
|
||||
"confirm_service_stop": "Möchtest du wirklich {name} anhalten?",
|
||||
"confirm_update_apps": "Möchtest du wirklich alle Anwendungen aktualisieren?",
|
||||
"confirm_upnp_enable": "Möchtest du wirklich UPnP aktivieren?",
|
||||
"confirm_upnp_disable": "Möchtest du wirklich UPnP deaktivieren?",
|
||||
"confirm_firewall_open": "Möchtest du wirklich Port {port}1 öffnen? (Protokoll: {protocol}2, Verbindung: {connection}3)",
|
||||
"confirm_firewall_close": "Möchtest du wirklich Port {port}1 schließen? (Protokoll: {protocol}2, Verbindung: {connection}3)",
|
||||
"confirm_update_specific_app": "Möchtest du wirklich {app} aktualisieren?",
|
||||
"confirm_reboot_action_reboot": "Möchtest du wirklich den Server neustarten?",
|
||||
"confirm_reboot_action_shutdown": "Möchtest du wirklich den Server herunterfahren?",
|
||||
"domain_dns_conf_is_just_a_recommendation": "Diese Seite zeigt dir die *empfohlene* Konfiguration. Sie konfiguriert *nicht* den DNS für dich. Es liegt in deiner Verantwortung, deine Zone bei deinem Registrar entsprechend dieser Empfehlung zu konfigurieren.",
|
||||
"confirm_service_start": "Möchten Sie {name} wirklich starten?",
|
||||
"confirm_service_stop": "Möchten Sie {name} wirklich anhalten?",
|
||||
"confirm_update_apps": "Möchten Sie wirklich alle Applikationen aktualisieren?",
|
||||
"confirm_upnp_enable": "Möchten Sie UPnP wirklich aktivieren?",
|
||||
"confirm_upnp_disable": "Möchten Sie UPnP wirklich deaktivieren?",
|
||||
"confirm_firewall_allow": "Sind Sie sicher, dass Sie den Port {port} (protocol: {protocol}, Verbindung: {connection}) öffnen wollen",
|
||||
"confirm_firewall_disallow": "Sind Sie sicher, dass Sie den Port {port} (protocol: {protocol}, Verbindung {connection}) schliessen wollen",
|
||||
"confirm_update_specific_app": "Möchten Sie {app} wirklich aktualisieren?",
|
||||
"confirm_reboot_action_reboot": "Möchten Sie den Server wirklich neustarten?",
|
||||
"confirm_reboot_action_shutdown": "Möchten Sie den Server wirklich herunterfahren?",
|
||||
"domain_dns_conf_is_just_a_recommendation": "Diese Seite zeigt dir die *empfohlene* Konfiguration. Sie konfiguriert *nicht* das DNS für dich. Es liegt in deiner Verantwortung, die DNS-Zone bei deinem DNS-Registrar nach dieser Empfehlung zu konfigurieren.",
|
||||
"ok": "OK",
|
||||
"system_upgrade_all_applications_btn": "Aktualisiere alle Applikationen",
|
||||
"system_upgrade_all_packages_btn": "Aktualisiere alle Pakete",
|
||||
"tools_reboot": "Starte deine Server neu",
|
||||
"tools_reboot": "Starten Sie Ihre Server neu",
|
||||
"tools_reboot_btn": "Neustart",
|
||||
"tools_reboot_done": "Starte neu...",
|
||||
"tools_rebooting": "Dein Server startet neu. Um zur Verwaltungsoberfläche zurückzukehren, musst du warten bis der Server hochgefahren ist. Prüfen kannst du es, in dem du die Seite neu lädst (F5).",
|
||||
"tools_shutdown": "Fahre deinen Server herunter",
|
||||
"tools_rebooting": "Ihr Server startet neu. Um zur Verwaltungsoberfläche zurückzukehren, müssen Sie warten, bis der Server hochgefahren ist. Überprüfen können Sie es, indem Sie die Seite neu laden (F5).",
|
||||
"tools_shutdown": "Fahren Sie Ihren Server herunter",
|
||||
"tools_shutdown_btn": "Herunterfahren",
|
||||
"tools_shutdown_done": "Fahre herunter...",
|
||||
"tools_shuttingdown": "Dein Server wird heruntergefahren. Solange dein Server ausgeschaltet ist, kannst du die Verwaltungsoberfläche nicht benutzen.",
|
||||
"tools_shuttingdown": "Ihr Server wird heruntergefahren. Solange Ihr Server ausgeschaltet ist, können Sie die Verwaltungsoberfläche nicht benutzen.",
|
||||
"tools_shutdown_reboot": "Herunterfahren/Neustarten",
|
||||
"app_state_working_explanation": "Der/die Verwalter*in dieser App deklariert sie als 'funktionierend'. Das heißt sie sollte funktionieren (vgl. App Level) aber ist nicht zwangsläufig begutachtet, sie kann Probleme enthalten oder ist nicht vollkommen integriert in YunoHost.",
|
||||
"app_state_working_explanation": "Der/die Entwickler:in dieser Applikation deklariert sie als 'funktionierend'. Das heißt, sie sollte funktionieren (vgl. Applikations-Level). Sie ist jedoch nicht zwangsläufig überprüft, weshalb sie Probleme enthalten kann oder nicht vollständig in YunoHost integriert ist.",
|
||||
"app_state_highquality": "hohe Qualität",
|
||||
"app_state_notworking_explanation": "Der/die Verwalter*in dieser App deklariert sie als 'nicht funktionierend'. SIE WIRD IHR SYSTEM ZERSTÖREN!",
|
||||
"app_state_inprogress_explanation": "Der/die Verwalter*in dieser App deklariert sie als nicht bereit für den produktiven Einsatz. SEIEN SIE VORSICHTIG!",
|
||||
"app_no_actions": "Diese Anwendung hat keine Aktionen",
|
||||
"app_state_notworking_explanation": "Der/die Entwickler:in dieser Applikation deklariert sie als 'nicht funktionierend'. SIE WIRD IHR SYSTEM ZERSTÖREN!",
|
||||
"app_state_inprogress_explanation": "Der Entwickler dieser Applikation hat angegeben, dass sie nicht bereit für den produktiven Einsatz bereit ist. BITTE SEI VORSICHTIG!",
|
||||
"app_no_actions": "Diese Applikation hat keine Aktionen",
|
||||
"all_apps": "Alle Apps",
|
||||
"app_info_changeurl_desc": "Ändern Sie die Zugriffs URL dieser Anwendung (Domain und/oder Pfad).",
|
||||
"app_state_highquality_explanation": "Diese App ist gut in YunoHost integriert. Sie wurde (und wird!) vom YunoHost-App-Team begutachtet. Es kann erwartet werden, dass sie sicher ist und langfristig gewartet wird.",
|
||||
"app_info_change_url_disabled_tooltip": "Dieses Feature wurde noch nicht in der App implementiert",
|
||||
"confirm_app_change_url": "Sind Sie sicher, dass sie die App-Zugangs-URL ändern möchten?",
|
||||
"confirm_update_system": "Bist du sicher, dass du alle Systempakete aktualisieren möchtest?",
|
||||
"confirm_migrations_skip": "Das Überspringen von Migrationen wird nicht empfohlen. Bist du sicher, dass du das tun willst?",
|
||||
"confirm_install_app_inprogress": "ACHTUNG! Diese Applikation ist noch experimentell (wenn nicht sogar nicht funktionsfähig) und es ist wahrscheinlich, dass sie Dein System zerstört! Du solltest sie besser NICHT installieren, es sei denn, du weißt, was du tust. Bist du bereit, dieses Risiko einzugehen?",
|
||||
"confirm_install_app_lowquality": "Achtung: Diese Anwendung kann funktionieren, ist aber nicht gut in YunoHost integriert. Einige Funktionen wie Single Sign-On und Backup/Restore sind möglicherweise nicht verfügbar.",
|
||||
"good_practices_about_admin_password": "Du bist nun dabei, ein neues Admin-Passwort zu definieren. Das Passwort sollte mindestens 8 Zeichen lang sein - es ist jedoch empfehlenswert, ein längeres Passwort (z.B. eine Passphrase) und/oder verschiedene Arten von Zeichen (Groß- und Kleinschreibung, Ziffern und Sonderzeichen) zu verwenden.",
|
||||
"app_info_changeurl_desc": "Ändern Sie die Zugriffs-URL dieser Anwendung (Domäne und/oder Pfad).",
|
||||
"app_state_highquality_explanation": "Diese Applikation ist seit mindestens einem Jahr gut in YunoHost integriert.",
|
||||
"app_info_change_url_disabled_tooltip": "Dieses Feature wurde in dieser Applikation noch nicht implementiert",
|
||||
"confirm_app_change_url": "Sind Sie sicher, dass Sie die Applikations-Zugangs-URL ändern möchten?",
|
||||
"confirm_update_system": "Sind Sie sicher, dass Sie alle Systempakete aktualisieren wollen?",
|
||||
"confirm_migrations_skip": "Migrationen zu überspringen wird nicht empfohlen. Sind Sie sicher, dass Sie das tun wollen?",
|
||||
"confirm_install_app_inprogress": "ACHTUNG! Diese Applikation ist noch experimentell (wenn nicht sogar nicht funktionsfähig) und es ist wahrscheinlich, dass sie Ihr System zerstört! Sie sollten sie besser NICHT installieren, es sei denn, Sie wissen, was Sie tun. Sind Sie bereit, dieses Risiko einzugehen?",
|
||||
"confirm_install_app_lowquality": "Warnung: Diese Applikation könnte funktionieren, ist aber nicht gut in YunoHost integriert. Einige Funktionen wie Single-Sign-On und Backup/Restore sind möglicherweise nicht verfügbar.",
|
||||
"good_practices_about_admin_password": "Du bist nun dabei, ein neues Administratorpasswort zu definieren. Das Passwort sollte mindestens 8 Zeichen lang sein - es ist jedoch empfehlenswert, ein längeres Passwort (z.B. eine Passphrase) und/oder verschiedene Arten von Zeichen (Groß- und Kleinschreibung, Ziffern und Sonderzeichen) zu verwenden.",
|
||||
"from_to": "von {0} nach {1}",
|
||||
"experimental_warning": "Achtung: Diese Funktion ist experimentell und gilt nicht als stabil, du solltest sie nicht verwenden, außer du weißt, was du tust.",
|
||||
"experimental_warning": "Achtung: Diese Funktion ist experimentell und gilt nicht als stabil, Sie sollten sie nicht verwenden, außer Sie wissen, was Sie tun.",
|
||||
"error_connection_interrupted": "Der Server hat die Verbindung geschlossen, anstatt sie zu beantworten. Wurde nginx oder die yunohost-api aus irgendeinem Grund neu gestartet oder gestoppt?",
|
||||
"hook_conf_ynh_currenthost": "Aktuelle Haupt-Domain",
|
||||
"good_practices_about_user_password": "Du bist nun dabei, ein neues Benutzerpasswort zu definieren. Das Passwort sollte mindestens 8 Zeichen lang sein - es ist jedoch empfehlenswert, ein längeres Passwort (z.B. eine Passphrase) und/oder verschiedene Arten von Zeichen (Groß- und Kleinschreibung, Ziffern und Sonderzeichen) zu verwenden.",
|
||||
|
@ -235,7 +235,7 @@
|
|||
"migrations_pending": "Ausstehende Migrationen",
|
||||
"logs_operation": "Operationen, die auf dem System mit YunoHost durchgeführt wurden",
|
||||
"logs_history": "Historie der Befehlsausführung auf dem System",
|
||||
"purge_user_data_warning": "Die Löschung der Benutzer*indaten ist nicht umkehrbar. Sei Dir sicher, was du tust!",
|
||||
"purge_user_data_warning": "Die Löschung der Daten von Benutzer:innen ist unumkehrbar. Sei Dir sicher, was du tust!",
|
||||
"logs_error": "Fehler",
|
||||
"logs_package": "Historie des Debian-Paket-Managements",
|
||||
"logs_started_at": "Beginn",
|
||||
|
@ -259,24 +259,25 @@
|
|||
"select_all": "Wähle alle",
|
||||
"migrations_done": "Vorherige Migrationen",
|
||||
"groups_and_permissions_manage": "Verwalten von Gruppen und Berechtigungen",
|
||||
"unignore": "Unignorieren",
|
||||
"unignore": "Nicht ignorieren",
|
||||
"warnings": "{count} Warnungen",
|
||||
"words": {
|
||||
"default": "Vorgabe",
|
||||
"collapse": "Zusammenbruch"
|
||||
"collapse": "Zusammenbruch",
|
||||
"dismiss": "Zurückweisen"
|
||||
},
|
||||
"group": "Gruppe",
|
||||
"details": "Details",
|
||||
"everything_good": "Alles gut!",
|
||||
"ignore": "Ignorieren",
|
||||
"configuration": "Konfiguration",
|
||||
"group_explain_all_users": "Dies ist eine spezielle Gruppe, die alle Benutzer*innenkonten auf dem Server enthält",
|
||||
"group_explain_all_users": "Dies ist eine spezielle Gruppe, die alle Konten der Benutzer:innen auf diesem Server enthält",
|
||||
"ignored": "{count} wird ignoriert",
|
||||
"last_ran": "Das letzte Mal lief es:",
|
||||
"last_ran": "Zuletzt ausgeführt:",
|
||||
"group_name": "Gruppenname",
|
||||
"group_all_users": "Alle Benutzer*innen",
|
||||
"group_visitors": "Besucher*innen",
|
||||
"group_add_member": "Eine_n Benutzer*in hinzufügen",
|
||||
"group_all_users": "Alle Benutzer:innen",
|
||||
"group_visitors": "Besucher",
|
||||
"group_add_member": "Eine:n Benutzer:in hinzufügen",
|
||||
"group_add_permission": "Hinzufügen einer Berechtigung",
|
||||
"group_specific_permissions": "Benutzerspezifische Berechtigungen",
|
||||
"groups_and_permissions": "Gruppen und Berechtigungen",
|
||||
|
@ -286,36 +287,40 @@
|
|||
"diagnosis_experimental_disclaimer": "Beachten Sie, dass die Diagnosefunktion noch experimentell und in Bearbeitung ist und möglicherweise nicht vollständig zuverlässig ist.",
|
||||
"group_format_name_help": "Sie können alphanumerische Zeichen und Leerzeichen verwenden",
|
||||
"group_new": "Neue Gruppe",
|
||||
"group_explain_visitors": "Dies ist eine spezielle Gruppe, die anonyme Besucher*innen repräsentiert",
|
||||
"group_explain_visitors": "Dies ist eine spezielle Gruppe, die anonyme Besucher repräsentiert",
|
||||
"rerun_diagnosis": "Diagnose wiederholen",
|
||||
"app_state_lowquality_explanation": "Diese App kann bereits funktionieren, enthält aber eventuell noch Fehler und/oder ist noch nicht vollständig integriert in YunoHost und/oder befolgt nicht die empfohlene Praxis.",
|
||||
"app_state_lowquality_explanation": "Diese Applikation kann bereits funktionieren, enthält aber eventuell noch Fehler und/oder ist noch nicht vollständig integriert in YunoHost und/oder befolgt nicht die empfohlene Praxis.",
|
||||
"others": "Anderes",
|
||||
"catalog": "Katalog",
|
||||
"app_state_lowquality": "geringe Qualität",
|
||||
"all": "Alle",
|
||||
"confirm_service_restart": "Bist du sicher, dass du {name} neustarten möchtest?",
|
||||
"confirm_service_restart": "Sind Sie sicher, dass Sie {name} neustarten möchten?",
|
||||
"run_first_diagnosis": "Initiale Diagnose läuft",
|
||||
"diagnosis_first_run": "Die Diagnose Funktion wird versuchen, gängige Probleme in verschiedenen Teilen deines Servers zu finden, damit alles reibungslos läuft. Hab keine Angst, wenn du ein paar Fehlermeldungen siehst nachdem du deinen Server aufgesetzt hast: es soll versuchen dir zu helfen, Probleme zu identifizieren und Tipps für Lösungen zu zeigen. Die Diagnose wird auch automatisch zweimal täglich ausgeführt, falls Fehler gefunden werden, bekommt der Administrator ein E-Mail.",
|
||||
"unmaintained_details": "Diese Anwendung wurde seit einiger Zeit nicht gewartet und der frühere Wart hat die Anwendung aufgegeben oder hat keine Zeit mehr für die Wartung. Du bist herzlich eingeladen dir die Quellen und Unterlagen anzusehen und Hilfe zu leisten",
|
||||
"group_explain_visitors_needed_for_external_client": "Sei vorsichtig und beachte, dass du manche Anwendungen für externe Besucher*innen freigeben musst, falls du beabsichtigst, diese mit externen Clients aufzurufen. Zum Beispiel trifft das auf Nextcloud zu, wenn du eine Synchronisation auf dem Smartphone oder Desktop PC haben möchtest.",
|
||||
"unmaintained_details": "Diese Applikation wurde seit einiger Zeit nicht aktuallisiert und der frühere Entwickler hat die Applikation aufgegeben oder hat keine Zeit mehr für die Instandhaltung. Du bist herzlich eingeladen dir die Quellen und Repositorien anzusehen und Hilfe zu leisten",
|
||||
"group_explain_visitors_needed_for_external_client": "Sei vorsichtig und beachte, dass du manche Anwendungen für externe Besucher:innen freigeben musst, falls du beabsichtigst, diese mit externen Clients aufzurufen. Zum Beispiel trifft das auf Nextcloud zu, wenn du eine Synchronisation auf dem Smartphone oder Desktop PC haben möchtest.",
|
||||
"issues": "{count} Probleme",
|
||||
"restart": "Neustart",
|
||||
"operation_failed_explanation": "Die Operation ist fehlgeschlagen! Das tut uns leid :( Sie können Sich <a href='https://yunohost.org/help'>hier Hilfe holen</a>. Bitte stellen Sie *die ganzen Logs* der Operation bereit, damit Ihnen besser geholfen werden kann. Dies tun Sie, indem Sie auf den grünen 'mit Yunopaste teilen' Knopf drücken. Wenn Sie die Logs teilen, wird Yunohost automatisch versuchen Ihre privaten Daten wie Domainnamen und IP's zu anonymisieren.",
|
||||
"diagnosis_explanation": "Die Diagnose Funktion wird versuchen, gängige Probleme in verschiedenen Teilen deines Servers zu finden, damit alles reibungslos läuft. Die Diagnose wird auch automatisch zweimal täglich ausgeführt, falls Fehler gefunden werden, bekommt der Administrator ein E-Mail. Beachte, dass einige tests nicht relevant sind, wenn du einzelne Features (zum Beispiel XMPP) nicht benutzt oder du ein komplexes Setup hast. In diesem Fall und wenn du weisst was du tust ist es in Ordnung die dazugehoerigen Warnungen und Hinweise zu ignorieren.",
|
||||
"pending_migrations": "Es gibt einige ausstehende Migrationen, die darauf warten, ausgeführt zu werden. Bitte gehen Sie auf <a href='#/tools/migrations'>Werkzeuge > Migrationen</a> um diese auszuführen.",
|
||||
"tip_about_user_email": "Benutzer*innen werden mit einer verknüpften eMail-Adresse (und XMPP Account) erstellt im Format username@domain.tld. Zusätzliche eMail-Aliasse and eMail-Weiterleitungen können später durch den/die Admin und User*in hinzugefügt werden.",
|
||||
"tip_about_user_email": "Benutzer:innen werden mit einer verknüpften E-Mail-Adresse (und XMPP Account) erstellt im Format username@domain.tld. Zusätzliche E-Mail-Aliasse and E-Mail-Weiterleitungen können später durch den/die Admin und Benutzer*in hinzugefügt werden.",
|
||||
"logs_suboperations": "Unter-Operationen",
|
||||
"api_errors_titles": {
|
||||
"APIBadRequestError": "Yunohost ist ein Fehler widerfahren",
|
||||
"APIError": "Yunohost ist ein unerwarteter Fehler widerfahren",
|
||||
"APIConnexionError": "Yunohost hat ein Verbindungsfehler festgestellt",
|
||||
"APINotRespondingError": "Die Yunohost API antwortet nicht",
|
||||
"APIInternalError": "Im Yunohost ist ein interner Fehler aufgetreten"
|
||||
"APIBadRequestError": "Es ist ein Fehler in Yunohost aufgetreten",
|
||||
"APIError": "Es ist ein unerwarteter Fehler in Yunohost aufgetreten",
|
||||
"APIConnexionError": "YunoHost hat einen Verbindungsfehler festgestellt",
|
||||
"APINotRespondingError": "Die YunoHost API antwortet nicht",
|
||||
"APIInternalError": "Es ist ein interner Fehler in Yunohost aufgetreten",
|
||||
"APINotFoundError": "YunoHost API konnte keine Route finden"
|
||||
},
|
||||
"api_error": {
|
||||
"sorry": "Tut uns wirklich leid.",
|
||||
"info": "Die folgenden Informationen könnten nützlich sein für die Person, die Ihnen hilft:",
|
||||
"help": "Sie sollten für Hilfe <a href=\"https://forum.yunohost.org/\">im Forum</a> oder <a href=\"https://chat.yunohost.org/\">im Chat</a> nachschauen, um das Problem zu beheben, oder einen Bug melden im <a href=\"https://github.com/YunoHost/issues\">Bugtracker</a>."
|
||||
"info": "Die folgenden Informationen könnten für die Person, die Ihnen hilft, nützlich sein:",
|
||||
"help": "Sie sollten für Hilfe <a href=\"https://forum.yunohost.org/\">im Forum</a> oder <a href=\"https://chat.yunohost.org/\">im Chat</a> nachschauen, um das Problem zu beheben, oder einen Bug melden im <a href=\"https://github.com/YunoHost/issues\">Bugtracker</a>.",
|
||||
"view_error": "Fehler ansehen",
|
||||
"server_said": "Während der Verarbeitung der Aktion hat der Server gemeldet:",
|
||||
"error_message": "Fehlermeldung:"
|
||||
},
|
||||
"address": {
|
||||
"local_part_description": {
|
||||
|
@ -328,12 +333,12 @@
|
|||
}
|
||||
},
|
||||
"permission_show_tile_enabled": "Sichtbar als Kachel im Benutzerportal",
|
||||
"permission_main": "Hauptrechte",
|
||||
"permission_main": "Haupt-Label",
|
||||
"permission_corresponding_url": "Entsprechender URL",
|
||||
"cancel": "Abbrechen",
|
||||
"app_show_categories": "Kategorien anzeigen",
|
||||
"app_manage_label_and_tiles": "Etiketten und Kacheln verwalten",
|
||||
"app_config_panel_no_panel": "Für diese Anwendung ist keine Konfiguration verfügbar",
|
||||
"app_config_panel_no_panel": "Für diese Applikation ist keine Konfiguration verfügbar",
|
||||
"app_config_panel_label": "Konfigurieren dieser App",
|
||||
"app_config_panel": "Konfigurationsfenster",
|
||||
"app_choose_category": "Kategorie auswählen",
|
||||
|
@ -348,15 +353,15 @@
|
|||
"transitions": "Seitenübergangsanimationen",
|
||||
"experimental_description": "Ermöglicht den Zugriff auf experimentelle Funktionen. Diese gelten als instabil und können Ihr System beschädigen.<br>Nur aktivieren, wenn Sie wissen, was Sie tun.",
|
||||
"experimental": "Experimenteller Modus",
|
||||
"cache_description": "Deaktivieren Sie den Cache, wenn Sie mit der CLI arbeiten möchten, während Sie gleichzeitig in diesem Webadministrator navigieren.",
|
||||
"cache_description": "Deaktivieren Sie den Cache, wenn Sie mit der CLI arbeiten möchten, während Sie gleichzeitig in dieser Webadministration navigieren.",
|
||||
"cache": "Zwischenspeicher",
|
||||
"fallback_language_description": "Sprache, die verwendet wird, falls die Übersetzung nicht in der Hauptsprache verfügbar ist.",
|
||||
"language": "Sprache",
|
||||
"fallback_language": "Fallback Sprache"
|
||||
"fallback_language": "Sprache, auf die Notfalls zurückgegriffen wird"
|
||||
},
|
||||
"tools_power_up": "Ihr Server scheint zugänglich zu sein. Sie können jetzt versuchen, sich anzumelden.",
|
||||
"search": {
|
||||
"not_found": "Es gibt {Elemente}, die Ihren Kriterien entsprechen.",
|
||||
"not_found": "Es gibt {items}, die Ihren Auswahlkriterien entsprechen.",
|
||||
"for": "Suche nach {items} ..."
|
||||
},
|
||||
"readme": "Readme",
|
||||
|
@ -375,30 +380,33 @@
|
|||
"mailbox_quota_example": "700M ist eine CD, 4700M ist eine DVD",
|
||||
"items_verbose_count": "Es gibt {items}.",
|
||||
"items": {
|
||||
"users": "keine Benutzer | Benutzer | {c} Benutzer",
|
||||
"users": "keine Benutzer:innen | Benutzer:in | {c} Benutzer:innen",
|
||||
"services": "keine Dienste | Dienst | {c} Dienste",
|
||||
"logs": "keine Protokolle | Protokoll | {c} Protokolle",
|
||||
"installed_apps": "keine installierten Apps | installierte App | {c} installierte Apps",
|
||||
"groups": "keine Gruppen | Gruppe | {c} Gruppen",
|
||||
"domains": "keine Domains | Domain | {c} Domains",
|
||||
"backups": "keine Backups | Backup | {c} Backups",
|
||||
"apps": "keine Apps | App | {c} Apps"
|
||||
"apps": "keine Apps | App | {c} Apps",
|
||||
"permissions": "keine Berechtigungen | Berechtigung | {c} Berechtigungen"
|
||||
},
|
||||
"history": {
|
||||
"methods": {
|
||||
"DELETE": "entfernen",
|
||||
"PUT": "bearbeiten",
|
||||
"POST": "erstellen/ausführen"
|
||||
"POST": "erstellen/ausführen",
|
||||
"GET": "lesen"
|
||||
},
|
||||
"last_action": "Letzte Aktion:",
|
||||
"title": "Historie"
|
||||
"title": "Historie",
|
||||
"is_empty": "Momentan nichts in der History."
|
||||
},
|
||||
"form_errors": {
|
||||
"required": "Feld ist erforderlich.",
|
||||
"passwordMatch": "Passwörter stimmen nicht überein.",
|
||||
"passwordLenght": "Das Passwort muss mindestens 8 Zeichen lang sein.",
|
||||
"number": "Wert muss eine Zahl sein.",
|
||||
"notInUsers": "Der Benutzer '{value}' existiert bereits.",
|
||||
"notInUsers": "Der/die Benutzer:in '{value}' existiert bereits.",
|
||||
"minValue": "Der Wert muss eine Zahl sein, die gleich oder größer als {min} ist.",
|
||||
"name": "Namen dürfen keine Sonderzeichen außer <code>, .'- </code> enthalten",
|
||||
"githubLink": "Die URL muss ein gültiger Github-Link zu einem Repository sein",
|
||||
|
@ -423,11 +431,108 @@
|
|||
"disabled": "Deaktiviert",
|
||||
"dead": "Inaktiv",
|
||||
"day_validity": " Abgelaufen seit | einem Tag | {count} Tage",
|
||||
"confirm_app_install": "Möchtest du diese Anwendung wirklich installieren?",
|
||||
"confirm_app_install": "Möchten Sie diese Applikation wirklich installieren?",
|
||||
"common": {
|
||||
"lastname": "Nachname",
|
||||
"firstname": "Vorname"
|
||||
},
|
||||
"code": "Code",
|
||||
"app_actions": "Aktionen"
|
||||
"app_actions": "Aktionen",
|
||||
"go_back": "Gehe zurück",
|
||||
"api_not_found": "Es scheint, als ob das Web-Admin versucht hat etwas aufzulösen das nicht existiert.",
|
||||
"api": {
|
||||
"query_status": {
|
||||
"warning": "Erfolgreich durchführt mit Fehlern oder Warnungen",
|
||||
"success": "Vollständig durchgeführt",
|
||||
"pending": "In Bearbeitung",
|
||||
"error": "Nicht erfolgreich"
|
||||
},
|
||||
"processing": "Der Server verarbeitet die Aktion..."
|
||||
},
|
||||
"hook_data_xmpp": "XMPP-Daten",
|
||||
"hook_conf_manually_modified_files": "Manuell geänderte Konfigurationsdateien",
|
||||
"hook_conf_ynh_settings": "YunoHost-Konfigurationen",
|
||||
"human_routes": {
|
||||
"backups": {
|
||||
"delete": "Das Backup '{name}' löschen",
|
||||
"create": "Ein Backup erstellen",
|
||||
"restore": "Das Backup '{name}' wiederherstellen"
|
||||
},
|
||||
"apps": {
|
||||
"update_config": "Die Konfiguration der Applikation '{name}' aktualisieren",
|
||||
"uninstall": "Die Applikation '{name}' deinstallieren",
|
||||
"perform_action": "Die Aktion '{action}' durchführen für die Applikation '{name}'",
|
||||
"install": "Die Applikation '{name}' installieren",
|
||||
"change_url": "Die Zugriffs-URL für '{name}' ändern",
|
||||
"change_label": "Das Label von '{prevName}' nach '{nextName}' ändern",
|
||||
"set_default": "Weiterleitung des Domänen-Rootverzeichnisses von '{domain}' zu '{name}'"
|
||||
},
|
||||
"adminpw": "Administratorpasswort ändern",
|
||||
"domains": {
|
||||
"add": "Die Domäne '{name}' hinzufügen",
|
||||
"set_default": "Definiere '{name}' als Standarddomäne",
|
||||
"revert_to_selfsigned": "Rückkehr zu selbstsigniertem Zertifikat für '{name}'",
|
||||
"regen_selfsigned": "Erneuere das selbstsignierte Zertifikat für '{name}'",
|
||||
"manual_renew_LE": "Erneuere das Zertifikat für '{name}'",
|
||||
"install_LE": "Installiere das Zertifikat für '{name}'",
|
||||
"delete": "Lösche die Domäne '{name}'"
|
||||
},
|
||||
"diagnosis": {
|
||||
"unignore": {
|
||||
"warning": "Eine Warnung nicht ignorieren",
|
||||
"error": "Einen Fehler nicht ignorieren"
|
||||
},
|
||||
"run_specific": "Die Diagnose für '{description}' durchführen",
|
||||
"run": "Die Diagnose durchführen",
|
||||
"ignore": {
|
||||
"warning": "Eine Warnung ignorieren",
|
||||
"error": "Einen Fehler ignorieren"
|
||||
}
|
||||
},
|
||||
"groups": {
|
||||
"create": "Erstelle die Gruppe '{name}'",
|
||||
"remove": "'{user}' aus der Gruppe '{name}' entfernen",
|
||||
"add": "'{user}' zur Gruppe '{name}' hinzufügen",
|
||||
"delete": "Gruppe '{name}' löschen"
|
||||
},
|
||||
"firewall": {
|
||||
"upnp": "{action} UPnP",
|
||||
"ports": "{action} Port {port} ({protocol}, {connection})"
|
||||
},
|
||||
"services": {
|
||||
"start": "Den Dienst '{name}' starten",
|
||||
"restart": "Den Dienst '{name}' neustarten",
|
||||
"stop": "Den Dienst '{name}' stoppen"
|
||||
},
|
||||
"reboot": "Den Server neustarten",
|
||||
"postinstall": "Post-Installation ausführen",
|
||||
"permissions": {
|
||||
"remove": "'{name}' Autorisierung entziehen für Zugriff auf '{perm}'",
|
||||
"add": "'{name}' autorisieren für Zugriff auf '{perm}'"
|
||||
},
|
||||
"migrations": {
|
||||
"skip": "Migrationen überspringen",
|
||||
"run": "Migrationen durchführen"
|
||||
},
|
||||
"users": {
|
||||
"update": "Benutzer:in '{name}' aktualisieren",
|
||||
"delete": "Benutzer:in '{name}' löschen",
|
||||
"create": "Benutzer:in '{name}' erstellen"
|
||||
},
|
||||
"upgrade": {
|
||||
"app": "Die Applikation '{app}' aktualisieren",
|
||||
"apps": "Alle Anwendungen aktualisieren",
|
||||
"system": "Das System aktualisieren"
|
||||
},
|
||||
"update": "Nach Updates suchen",
|
||||
"shutdown": "Den Server herunterfahren",
|
||||
"share_logs": "Einen Link für den Log '{name}' erstellten"
|
||||
},
|
||||
"postinstall": {
|
||||
"force": "Forciere den Post-Install"
|
||||
},
|
||||
"hook_data_xmpp_desc": "Konfiguration für Räume und Benutzer, hochgeladene Dateien",
|
||||
"items_verbose_items_left": "Es bleiben {items} übrig.",
|
||||
"confirm_group_add_access_permission": "Sind Sie sicher, dass Sie Zugriff auf {perm} an {name} geben wollen? Ein derartiger Zugriff erhöht die Angriffsoberfläche signifikant, wenn {name} boshaft ist. Die sollten dies nur tun, wenn Sie dieser Person/Gruppe VERTRAUEN.",
|
||||
"app_install_parameters": "Installationsparameter"
|
||||
}
|
||||
|
|
|
@ -31,15 +31,15 @@
|
|||
"view_error": "View error"
|
||||
},
|
||||
"api_errors_titles": {
|
||||
"APIError": "Yunohost encountered an unexpected error",
|
||||
"APIBadRequestError": "Yunohost encountered an error",
|
||||
"APIInternalError": "Yunohost encountered an internal error",
|
||||
"APINotFoundError": "Yunohost API could not find a route",
|
||||
"APINotRespondingError": "Yunohost API is not responding",
|
||||
"APIConnexionError": "Yunohost encountered a connexion error"
|
||||
"APIError": "YunoHost encountered an unexpected error",
|
||||
"APIBadRequestError": "YunoHost encountered an error",
|
||||
"APIInternalError": "YunoHost encountered an internal error",
|
||||
"APINotFoundError": "YunoHost API could not find a route",
|
||||
"APINotRespondingError": "YunoHost API is not responding",
|
||||
"APIConnexionError": "YunoHost encountered a connection error"
|
||||
},
|
||||
"all_apps": "All apps",
|
||||
"api_not_found": "Seems like the web-admin tryed to query something that doesn't exist.",
|
||||
"api_not_found": "Seems like the web-admin tried to query something that doesn't exist.",
|
||||
"api_not_responding": "The YunoHost API is not responding. Maybe 'yunohost-api' is down or got restarted?",
|
||||
"api_waiting": "Waiting for the server's response...",
|
||||
"app_actions": "Actions",
|
||||
|
@ -54,6 +54,7 @@
|
|||
"app_info_change_url_disabled_tooltip": "This feature hasn't been implemented in this app yet",
|
||||
"app_info_uninstall_desc": "Remove this application.",
|
||||
"app_install_custom_no_manifest": "No manifest.json file",
|
||||
"app_install_parameters": "Install settings",
|
||||
"app_manage_label_and_tiles": "Manage label and tiles",
|
||||
"app_make_default": "Make default",
|
||||
"app_no_actions": "This application doesn't have any actions",
|
||||
|
@ -65,7 +66,7 @@
|
|||
"app_state_lowquality": "low quality",
|
||||
"app_state_lowquality_explanation": "This app may be functional, but may still contain issues, or is not fully integrated with YunoHost, or it does not respect the good practices.",
|
||||
"app_state_highquality": "high quality",
|
||||
"app_state_highquality_explanation": "This app is well-integrated with YunoHost. It has been (and is!) peer-reviewed by the YunoHost app team. It can be expected to be safe and maintained on the long-term.",
|
||||
"app_state_highquality_explanation": "This app is well-integrated with YunoHost since at least a year.",
|
||||
"app_state_working": "working",
|
||||
"app_state_working_explanation": "The maintainer of this app declared it as 'working'. It means that it should be functional (c.f. application level) but is not necessarily peer-reviewed, it may still contain issues or is not fully integrated with YunoHost.",
|
||||
"applications": "Applications",
|
||||
|
@ -91,8 +92,9 @@
|
|||
"confirm_app_default": "Are you sure you want to make this app default?",
|
||||
"confirm_change_maindomain": "Are you sure you want to change the main domain?",
|
||||
"confirm_delete": "Are you sure you want to delete {name}?",
|
||||
"confirm_firewall_open": "Are you sure you want to open port {port} (protocol: {protocol}, connection: {connection})",
|
||||
"confirm_firewall_close": "Are you sure you want to close port {port} (protocol: {protocol}, connection: {connection})",
|
||||
"confirm_firewall_allow": "Are you sure you want to open port {port} (protocol: {protocol}, connection: {connection})",
|
||||
"confirm_firewall_disallow": "Are you sure you want to close port {port} (protocol: {protocol}, connection: {connection})",
|
||||
"confirm_group_add_access_permission": "Are you sure you want to grant {perm} access to {name}? Such access significantly increases the attack surface if {name} happens to be a malicious person. You should only do so if you TRUST this person/group.",
|
||||
"confirm_install_custom_app": "WARNING! Installing 3rd party applications may compromise the integrity and security of your system. You should probably NOT install it unless you know what you are doing. Are you willing to take that risk?",
|
||||
"confirm_install_domain_root": "Are you sure you want to install this application on '/'? You will not be able to install any other app on {domain}",
|
||||
"confirm_app_install": "Are you sure you want to install this application?",
|
||||
|
@ -115,13 +117,12 @@
|
|||
"connection": "Connection",
|
||||
"created_at": "Created at",
|
||||
"custom_app_install": "Install custom app",
|
||||
"custom_app_url_only_github": "Currently only from GitHub",
|
||||
"day_validity": " Expired | 1 day | {count} days",
|
||||
"dead": "Inactive",
|
||||
"delete": "Delete",
|
||||
"description": "Description",
|
||||
"details": "Details",
|
||||
"domain_dns_conf_is_just_a_recommendation": "This page shows you the *recommended* configuration. It does *not* configure the DNS for you. It is your responsability to configure your DNS zone in your DNS registrar according to this recommendation.",
|
||||
"domain_dns_conf_is_just_a_recommendation": "This page shows you the *recommended* configuration. It does *not* configure the DNS for you. It is your responsibility to configure your DNS zone in your DNS registrar according to this recommendation.",
|
||||
"diagnosis": "Diagnosis",
|
||||
"diagnosis_experimental_disclaimer": "Be aware that the diagnosis feature is still experimental and being polished, and it may not be fully reliable.",
|
||||
"diagnosis_first_run": "The diagnosis feature will attempt to identify common issues on the different aspects of your server to make sure everything runs smoothly. Please do not panic if you see a bunch of errors right after setting up your server: it is precisely meant to help you to identify issues and guide you to fix them. The diagnosis will also run automatically twice a day and an email is sent to the administrator if issues are found.",
|
||||
|
@ -131,7 +132,7 @@
|
|||
"disabled": "Disabled",
|
||||
"dns": "DNS",
|
||||
"domain_add": "Add domain",
|
||||
"domain_add_dns_doc": "… and I have <a href='//yunohost.org/dns'>set my DNS correctly</a>.",
|
||||
"domain_add_dns_doc": "… and I have <a href='//yunohost.org/dns_config' target='_blank'>set my DNS correctly</a>.",
|
||||
"domain_add_dyndns_doc": "… and I want a dynamic DNS service.",
|
||||
"domain_add_dyndns_forbidden": "You have already subscribed to a DynDNS domain, you can ask to remove your current DynDNS domain on the forum <a href='//forum.yunohost.org/t/nohost-domain-recovery-suppression-de-domaine-en-nohost-me-noho-st-et-ynh-fr/442'>in the dedicated thread</a>.",
|
||||
"domain_add_panel_with_domain": "I already have a domain name…",
|
||||
|
@ -155,7 +156,7 @@
|
|||
"error_connection_interrupted": "The server closed the connection instead of answering it. Has nginx or the yunohost-api been restarted or stopped for some reason?",
|
||||
"everything_good": "Everything good!",
|
||||
"experimental": "Experimental",
|
||||
"experimental_warning": "Warning: this feature is experimental and not consider stable, you shouldn't be using it except if you know what you are doing.",
|
||||
"experimental_warning": "Warning: this feature is experimental and not considered stable, you shouldn't be using it except if you know what you are doing.",
|
||||
"firewall": "Firewall",
|
||||
"footer_version": "Powered by <a href='https://yunohost.org'>YunoHost</a> {version} ({repo}).",
|
||||
"footer": {
|
||||
|
@ -172,7 +173,7 @@
|
|||
"email": "Invalid email: must be alphanumeric and <code>_.-</code> characters only (e.g. someone@example.com, s0me-1@example.com)",
|
||||
"emailForward": "Invalid email forward: must be alphanumeric and <code>_.-+</code> characters only (e.g. someone+tag@example.com, s0me-1+tag@example.com)",
|
||||
"githubLink": "Url must be a valid Github link to a repository",
|
||||
"name": "Names may not includes special characters except <code> ,.'-</code>",
|
||||
"name": "Names may not include special characters except <code> ,.'-</code>",
|
||||
"minValue": "Value must be a number equal or greater than {min}.",
|
||||
"notInUsers": "The user '{value}' already exists.",
|
||||
"number": "Value must be a number.",
|
||||
|
@ -195,12 +196,13 @@
|
|||
"group_new": "New group",
|
||||
"group_explain_all_users": "This is a special group containing all users accounts on the server",
|
||||
"group_explain_visitors": "This is a special group representing anonymous visitors",
|
||||
"group_explain_visitors_needed_for_external_client": "Be careful that you need to keep some applications allowed to visitors if you intend to use them with external clients. For example, this is the case for Nextcloud if you want intend to use a synchronization client on your smartphone or desktop computer.",
|
||||
"group_explain_visitors_needed_for_external_client": "Be careful that you need to keep some applications allowed to visitors if you intend to use them with external clients. For example, this is the case for Nextcloud if you intend to use a synchronization client on your smartphone or desktop computer.",
|
||||
"group_specific_permissions": "User specific permissions",
|
||||
"groups_and_permissions": "Groups and permissions",
|
||||
"groups_and_permissions_manage": "Manage groups and permissions",
|
||||
"permissions": "Permissions",
|
||||
"history": {
|
||||
"is_empty": "Nothing in history for now.",
|
||||
"title": "History",
|
||||
"last_action": "Last action:",
|
||||
"methods": {
|
||||
|
@ -212,20 +214,16 @@
|
|||
},
|
||||
"home": "Home",
|
||||
"hook_adminjs_group_configuration": "System configurations",
|
||||
"hook_conf_cron": "Automatic tasks",
|
||||
"hook_conf_ynh_currenthost": "Current main domain",
|
||||
"hook_conf_ldap": "LDAP database",
|
||||
"hook_conf_nginx": "Nginx",
|
||||
"hook_conf_ssh": "SSH",
|
||||
"hook_conf_ssowat": "SSOwat",
|
||||
"hook_conf_xmpp": "XMPP",
|
||||
"hook_conf_ldap": "User database",
|
||||
"hook_conf_ynh_certs": "SSL certificates",
|
||||
"hook_conf_ynh_firewall": "Firewall",
|
||||
"hook_conf_ynh_mysql": "MySQL password",
|
||||
"hook_conf_ynh_settings": "YunoHost configurations",
|
||||
"hook_conf_manually_modified_files": "Manually modified configurations",
|
||||
"hook_data_home": "User data",
|
||||
"hook_data_home_desc": "User data located in /home/USER",
|
||||
"hook_data_mail": "Mail",
|
||||
"hook_data_mail_desc": "Raw emails stored on the server",
|
||||
"hook_data_xmpp": "XMPP data",
|
||||
"hook_data_xmpp_desc": "Room and user configurations, file uploads",
|
||||
"id": "ID",
|
||||
"ignore": "Ignore",
|
||||
"ignored": "{count} ignored",
|
||||
|
@ -245,10 +243,12 @@
|
|||
"groups": "no groups | group | {c} groups",
|
||||
"installed_apps": "no installed apps | installed app | {c} installed apps",
|
||||
"logs": "no logs | log | {c} logs",
|
||||
"permissions": "no permissions | permission | {c} permissions",
|
||||
"services": "no services | service | {c} services",
|
||||
"users": "no users | user | {c} users"
|
||||
},
|
||||
"items_verbose_count": "There is {items}.",
|
||||
"items_verbose_count": "There are {items}.",
|
||||
"items_verbose_items_left": "There are {items} left.",
|
||||
"label": "Label",
|
||||
"label_for_manifestname": "Label for {name}",
|
||||
"last_ran": "Last time ran:",
|
||||
|
@ -268,8 +268,8 @@
|
|||
"migrations_no_pending": "No pending migrations",
|
||||
"migrations_no_done": "No previous migrations",
|
||||
"migrations_disclaimer_check_message": "I read and understood this disclaimer",
|
||||
"migrations_disclaimer_not_checked": "This migration require you to acknowledge its disclaimer before running it.",
|
||||
"multi_instance": "Multi instance",
|
||||
"migrations_disclaimer_not_checked": "This migration requires you to acknowledge its disclaimer before running it.",
|
||||
"multi_instance": "Can be installed several times",
|
||||
"myserver": "myserver",
|
||||
"next": "Next",
|
||||
"no": "No",
|
||||
|
@ -314,14 +314,17 @@
|
|||
"logs_more": "Display more lines",
|
||||
"pending_migrations": "There are some pending migrations waiting to be ran. Please go to the <a href='#/tools/migrations'>Tools > Migrations</a> view to run them.",
|
||||
"permission_corresponding_url": "Corresponding URL",
|
||||
"permission_main": "Main permission",
|
||||
"permission_main": "Main label",
|
||||
"permission_show_tile_enabled": "Visible as tile in user portal",
|
||||
"port": "Port",
|
||||
"ports": "Ports",
|
||||
"postinstall": {
|
||||
"force": "Force the post-install"
|
||||
},
|
||||
"postinstall_domain": "This is the first domain name linked to your YunoHost server, but also the one which will be used by your server's users to access the authentication portal. Accordingly, it will be visible by everyone, so choose it carefully.",
|
||||
"postinstall_intro_1": "Congratulations! YunoHost has been successfully installed.",
|
||||
"postinstall_intro_2": "Two more configuration steps are required to activate you server's services.",
|
||||
"postinstall_intro_3": "You can obtain more information by visiting the <a href='//yunohost.org/postinstall' target='_blank'>appropriate documentation page</a>",
|
||||
"postinstall_intro_3": "You can obtain more information by visiting the <a href='//yunohost.org/en/install/hardware:vps_debian#fa-cog-proceed-with-the-initial-configuration' target='_blank'>appropriate documentation page</a>",
|
||||
"postinstall_password": "This password will be used to manage everything on your server. Take the time to choose it wisely.",
|
||||
"postinstall_set_domain": "Set main domain",
|
||||
"postinstall_set_password": "Set administration password",
|
||||
|
@ -331,12 +334,88 @@
|
|||
"rerun_diagnosis": "Rerun diagnosis",
|
||||
"restore": "Restore",
|
||||
"restart": "Restart",
|
||||
"human_routes": {
|
||||
"adminpw": "Change admin password",
|
||||
"apps": {
|
||||
"change_label": "Change label of '{prevName}' for '{nextName}'",
|
||||
"change_url": "Change access URL of '{name}'",
|
||||
"install": "Install app '{name}'",
|
||||
"set_default": "Redirect '{domain}' domain root to '{name}'",
|
||||
"perform_action": "Perform action '{action}' of app '{name}'",
|
||||
"uninstall": "Uninstall app '{name}'",
|
||||
"update_config": "Update app '{name}' configuration"
|
||||
},
|
||||
"backups": {
|
||||
"create": "Create a backup",
|
||||
"delete": "Delete backup '{name}'",
|
||||
"restore": "Restore backup '{name}'"
|
||||
},
|
||||
"diagnosis": {
|
||||
"ignore": {
|
||||
"error": "Ignore an error",
|
||||
"warning": "Ignore a warning"
|
||||
},
|
||||
"run": "Run the diagnosis",
|
||||
"run_specific": "Run '{description}' diagnosis",
|
||||
"unignore": {
|
||||
"error": "Unignore an error",
|
||||
"warning": "Unignore a warning"
|
||||
}
|
||||
},
|
||||
"domains": {
|
||||
"add": "Add domain '{name}'",
|
||||
"delete": "Delete domain '{name}'",
|
||||
"install_LE": "Install certificate for '{name}'",
|
||||
"manual_renew_LE": "Renew certificate for '{name}'",
|
||||
"regen_selfsigned": "Renew self-signed certificate for '{name}'",
|
||||
"revert_to_selfsigned": "Revert to self-signed certificate for '{name}'",
|
||||
"set_default": "Set '{name}' as default domain"
|
||||
},
|
||||
"firewall": {
|
||||
"ports": "{action} port {port} ({protocol}, {connection})",
|
||||
"upnp": "{action} UPnP"
|
||||
},
|
||||
"groups": {
|
||||
"create": "Create group '{name}'",
|
||||
"delete": "Delete group '{name}'",
|
||||
"add": "Add '{user}' to group '{name}'",
|
||||
"remove": "Remove '{user}' from group '{name}'"
|
||||
},
|
||||
"migrations": {
|
||||
"run": "Run migrations",
|
||||
"skip": "Skip migrations"
|
||||
},
|
||||
"permissions": {
|
||||
"add": "Allow '{name}' to access '{perm}'",
|
||||
"remove": "Remove '{name}' access to '{perm}'"
|
||||
},
|
||||
"postinstall": "Run the post-install",
|
||||
"reboot": "Reboot the server",
|
||||
"services": {
|
||||
"restart": "Restart the service '{name}'",
|
||||
"start": "Start the service '{name}'",
|
||||
"stop": "Stop the service '{name}'"
|
||||
},
|
||||
"share_logs": "Generate link for log '{name}'",
|
||||
"shutdown": "Shutdown the server",
|
||||
"update": "Check for updates",
|
||||
"upgrade": {
|
||||
"system": "Upgrade the system",
|
||||
"apps": "Upgrade all apps",
|
||||
"app": "Upgrade '{app}' app"
|
||||
},
|
||||
"users": {
|
||||
"create": "Create user '{name}'",
|
||||
"delete": "Delete user '{name}'",
|
||||
"update": "Update user '{name}'"
|
||||
}
|
||||
},
|
||||
"run": "Run",
|
||||
"running": "Running",
|
||||
"save": "Save",
|
||||
"search": {
|
||||
"for": "Search for {items}...",
|
||||
"not_found": "There is {items} matching your criteria."
|
||||
"not_found": "There are {items} matching your criteria."
|
||||
},
|
||||
"select_all": "Select all",
|
||||
"select_none": "Select none",
|
||||
|
@ -379,7 +458,7 @@
|
|||
"cache": "Cache",
|
||||
"cache_description": "Consider disabling the cache if you plan on working with the CLI while also navigating in this web-admin.",
|
||||
"experimental": "Experimental mode",
|
||||
"experimental_description": "Gives you access to experimental features. These are considered unstable and may break your system.<br> Enabled this only if you know what you are doing.",
|
||||
"experimental_description": "Gives you access to experimental features. These are considered unstable and may break your system.<br> Enable this only if you know what you are doing.",
|
||||
"transitions": "Page transition animations"
|
||||
},
|
||||
"tools_webadmin_settings": "Web-admin settings",
|
||||
|
@ -390,7 +469,7 @@
|
|||
"uninstall": "Uninstall",
|
||||
"unknown": "Unknown",
|
||||
"unmaintained": "Unmaintained",
|
||||
"unmaintained_details": "This app has not been update for quite a while and the previous maintainer has gone away or does not have time to maintain this app. Feel free to check the app repository to provide your help",
|
||||
"unmaintained_details": "This app has not been updated for quite a while and the previous maintainer has gone away or does not have time to maintain this app. Feel free to check the app repository to provide your help",
|
||||
"upnp": "UPnP",
|
||||
"upnp_disabled": "UPnP is disabled.",
|
||||
"upnp_enabled": "UPnP is enabled.",
|
||||
|
@ -414,8 +493,7 @@
|
|||
"warnings": "{count} warnings",
|
||||
"words": {
|
||||
"collapse": "Collapse",
|
||||
"default": "Default",
|
||||
"dismiss": "Dismiss"
|
||||
"default": "Default"
|
||||
},
|
||||
"wrong_password": "Wrong password",
|
||||
"yes": "Yes",
|
||||
|
|
|
@ -32,7 +32,7 @@
|
|||
"hook_conf_ssh": "SSH",
|
||||
"confirm_update_system": "Ĉu vi certas, ke vi volas ĝisdatigi ĉiujn sistemajn pakaĵojn ?",
|
||||
"installation_complete": "Kompleta instalado",
|
||||
"confirm_firewall_open": "Ĉu vi certas, ke vi volas malfermi havenojn {port} ? (Protokoloj {protocol}, konekto: {connection})",
|
||||
"confirm_firewall_allow": "Ĉu vi certas, ke vi volas malfermi havenojn {port} ? (Protokoloj {protocol}, konekto: {connection})",
|
||||
"confirm_postinstall": "Vi tuj lanĉos la postinstalaran procezon sur la domajno {domain}. Eble daŭras kelkajn minutojn, *ne interrompu la operacion*.",
|
||||
"description": "priskribo",
|
||||
"hook_conf_ynh_mysql": "MySQL pasvorto",
|
||||
|
@ -64,7 +64,7 @@
|
|||
"mailbox_quota_placeholder": "Lasu malplenan aŭ agordi al 0 por malaktivigi.",
|
||||
"domain_default_desc": "La defaŭlta domajno estas la konekta domajno, kie uzantoj ensalutas.",
|
||||
"domain_dns_longdesc": "Vidu DNS-agordon",
|
||||
"domain_add_dns_doc": "... kaj mi <a href='//yunohost.org/dns'> agordis mian DNS ĝuste </a>.",
|
||||
"domain_add_dns_doc": "... kaj mi <a href='//yunohost.org/dns_config' target='_blank'> agordis mian DNS ĝuste </a>.",
|
||||
"confirm_update_apps": "Ĉu vi certas, ke vi volas ĝisdatigi ĉiujn aplikojn ?",
|
||||
"confirm_install_custom_app": "AVERTO! Instali aplikojn de tria partio eble kompromitos la integrecon kaj sekurecon de via sistemo. Vi probable ne devas instali ĝin krom se vi scias kion vi faras. Ĉu vi pretas riski tion?",
|
||||
"add": "Aldoni",
|
||||
|
@ -84,7 +84,7 @@
|
|||
"hook_data_mail": "Poŝto",
|
||||
"backup_create": "Krei sekurkopion",
|
||||
"confirm_uninstall": "Ĉu vi certas, ke vi volas malinstali {name} ?",
|
||||
"confirm_firewall_close": "Ĉu vi certas, ke vi volas fermi havenon {port} ? (protokolo: {protocol}, rilato: {connection})",
|
||||
"confirm_firewall_disallow": "Ĉu vi certas, ke vi volas fermi havenon {port} ? (protokolo: {protocol}, rilato: {connection})",
|
||||
"created_at": "Kreita ĉe",
|
||||
"confirm_app_change_url": "Ĉu vi certas, ke vi volas ŝanĝi la URL-aliron de la aplikaĵo?",
|
||||
"ipv6": "IPv6",
|
||||
|
@ -298,5 +298,28 @@
|
|||
"restart": "Rekomenci",
|
||||
"unmaintained_details": "Ĉi tiu app ne estis ĝisdatigita antaŭ tre tempo kaj la antaŭa prizorganto foriĝis aŭ ne havas tempon por subteni ĉi tiun app. Bonvolu kontroli la app-deponejon por doni vian helpon",
|
||||
"run_first_diagnosis": "Kuru komencan diagnozon",
|
||||
"issues": "{count} aferoj"
|
||||
"issues": "{count} aferoj",
|
||||
"api_error": {
|
||||
"error_message": "Erarmesaĝo:"
|
||||
},
|
||||
"api": {
|
||||
"query_status": {
|
||||
"warning": "Sukcese kompletigita kun eraroj aŭ atentigoj",
|
||||
"success": "Sukcese kompletigita",
|
||||
"pending": "En progreso",
|
||||
"error": "Malsukcesa"
|
||||
},
|
||||
"processing": "La servilo prilaboras la agon..."
|
||||
},
|
||||
"address": {
|
||||
"local_part_description": {
|
||||
"email": "Elektu lokan parton por via retpoŝto.",
|
||||
"domain": "Elektu subdomanon."
|
||||
},
|
||||
"domain_description": {
|
||||
"email": "Elektu domajnon por via retpoŝto.",
|
||||
"domain": "Elektu domajnon."
|
||||
}
|
||||
},
|
||||
"cancel": "Nuligi"
|
||||
}
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
"api_not_responding": "La API de YunoHost no responde. ¿Tal vez «yunohost-api» está inoperativa o ha sido reiniciada?",
|
||||
"app_info_access_desc": "Grupos / usuarios actualmente autorizados a acceder a esta aplicación:",
|
||||
"app_info_default_desc": "Redirigir la raíz del dominio para esta aplicación ({domain} 6).",
|
||||
"app_info_uninstall_desc": "Eliminar a esta aplicación.",
|
||||
"app_info_uninstall_desc": "Eliminar esta aplicación.",
|
||||
"app_install_custom_no_manifest": "Archivo manifest.json no encontrado",
|
||||
"app_make_default": "Establecer como predeterminado",
|
||||
"app_state_inprogress": "Todavía no trabajando",
|
||||
|
@ -40,7 +40,7 @@
|
|||
"disable": "Inhabilitar",
|
||||
"dns": "DNS",
|
||||
"domain_add": "Añadir dominio",
|
||||
"domain_add_dns_doc": "... y tengo <a href='//yunohost.org/dns'>mi DNS correctamente configurado</a>.",
|
||||
"domain_add_dns_doc": "... y tengo <a href='//yunohost.org/dns_config' target='_blank'>mi DNS correctamente configurado</a>.",
|
||||
"domain_add_dyndns_doc": "…y quiero un servicio de DNS dinámico.",
|
||||
"domain_add_panel_with_domain": "Ya tengo un nombre de dominio…",
|
||||
"domain_add_panel_without_domain": "No tengo un nombre de dominio…",
|
||||
|
@ -61,7 +61,7 @@
|
|||
"home": "Inicio",
|
||||
"hook_adminjs_group_configuration": "ajustes del sistema",
|
||||
"hook_conf_cron": "Tareas automáticas",
|
||||
"hook_conf_ldap": "base de datos LDAP",
|
||||
"hook_conf_ldap": "Base de datos de usuario",
|
||||
"hook_conf_nginx": "Nginx",
|
||||
"hook_conf_ssh": "SSH",
|
||||
"hook_conf_ssowat": "SSOwat",
|
||||
|
@ -180,8 +180,8 @@
|
|||
"revert_to_selfsigned_cert_message": "Si realmente lo desea, puede reinstalar un certificado autofirmado. (No recomendado)",
|
||||
"revert_to_selfsigned_cert": "Volver a un certificado autofirmado",
|
||||
"user_mailbox_use": "Espacio utilizado",
|
||||
"confirm_firewall_open": "¿Está seguro de que desea abrir el puerto {port}? (protocolo: {protocol}, conexión: {connection})",
|
||||
"confirm_firewall_close": "¿Está seguro de que desea cerrar el puerto {port}? (protocolo: {protocol}, conexión: {connection})",
|
||||
"confirm_firewall_allow": "¿Está seguro de que desea abrir el puerto {port}? (protocolo: {protocol}, conexión: {connection})",
|
||||
"confirm_firewall_disallow": "¿Está seguro de que desea cerrar el puerto {port}? (protocolo: {protocol}, conexión: {connection})",
|
||||
"confirm_service_start": "¿Está seguro de que desea iniciar {name}?",
|
||||
"confirm_service_stop": "¿Está seguro de que desea parar {name}?",
|
||||
"confirm_update_apps": "¿Está seguro de que desea actualizar todas las aplicaciones?",
|
||||
|
@ -217,7 +217,7 @@
|
|||
"only_decent_quality_apps": "Solo aplicaciones de calidad aceptable",
|
||||
"orphaned": "No mantenido",
|
||||
"app_state_inprogress_explanation": "El mantenedor de esta aplicación declara que aún no está lista para su uso en producción. ¡TENGA CUIDADO!",
|
||||
"app_state_highquality_explanation": "Esta aplicación está bien integrada en YunoHost. Ha sido (¡y continúa siendo!) revisada por especialistas del equipo de aplicaciones de YunoHost. Se puede esperar que sea segura y mantenida a largo plazo.",
|
||||
"app_state_highquality_explanation": "Esta aplicación está bien integrada en YunoHost desde al menos un año.",
|
||||
"app_state_working_explanation": "El mantenedor de esta aplicación declara que «funciona». Significa que debería ser funcional (comparada a nivel de aplicación) pero no está revisada por especialistas necesariamente, puede tener aún problemas o no está totalmente integrada en YunoHost.",
|
||||
"orphaned_details": "Esta aplicación no se ha mantenido durante bastante tiempo. Todavía puede estar funcionando, pero no recibirá ninguna actualización hasta que alguien se ofrezca como voluntario para encargarse de ello. ¡Siéntase libre de contribuir para revivirlo!",
|
||||
"tools_rebooting": "Su servidor se está reiniciando. Para volver a la interfaz de administración web necesita esperar a que el servidor esté listo. Puede comprobarlo recargando esta página (F5).",
|
||||
|
@ -307,5 +307,74 @@
|
|||
"pending_migrations": "Hay algunas migraciones esperando ejecutar. Por favor vaya a <a href='#/tools/migrations'>Herramientas > Migraciones</a> para verlas.",
|
||||
"logs_suboperations": "Sub-operaciones",
|
||||
"operation_failed_explanation": "¡Esta operación falló! Lo sentimos mucho :( Puede intentar <a href='https://yunohost.org/help'>pedir ayuda</a>. Por favor comparta el *log completo* de la operación a la gente que ayude. Puede hacerlo haciendo click en el botón verde que dice 'Share with Yunopaste'. Cuando comparta los logs, YunoHost intentará automáticamente anonimizar datos privados como nombres de dominio y IPs.",
|
||||
"app_manage_label_and_tiles": "Administrar etiquetas y tiles"
|
||||
"app_manage_label_and_tiles": "Administrar etiquetas y tiles",
|
||||
"cancel": "Cancelar",
|
||||
"api_errors_titles": {
|
||||
"APIConnexionError": "YunoHost ha encontrado un error de conexión",
|
||||
"APINotRespondingError": "La API de YunoHost no está respondiendo",
|
||||
"APINotFoundError": "La API de YunoHost no pudo encontrar una ruta",
|
||||
"APIInternalError": "YunoHost ha encontrado un error interno",
|
||||
"APIBadRequestError": "Yunohost ha econtrado un error",
|
||||
"APIError": "YunoHost encontró un error inesperado"
|
||||
},
|
||||
"api_error": {
|
||||
"view_error": "Ver error",
|
||||
"sorry": "Lo siento mucho por eso.",
|
||||
"server_said": "Mientras se procesaba la acción, el servidor informó:",
|
||||
"info": "La siguiente información puede ser útil para la persona que le esté ayudando:",
|
||||
"help": "Debes buscar ayuda en <a href=\"https://forum.yunohost.org/\">el foro</a> o en <a href=\"https://chat.yunohost.org/\">el chat</a> para solucionar la situación. También puedes informar del fallo en <a href=\"https://github.com/YunoHost/issues\">el bugtracker</a>.",
|
||||
"error_message": "Mensaje de error:"
|
||||
},
|
||||
"api": {
|
||||
"query_status": {
|
||||
"warning": "Completado pero con errores y/o alertas",
|
||||
"success": "Completado correctamente",
|
||||
"pending": "En progreso",
|
||||
"error": "No se ha podido realizar"
|
||||
},
|
||||
"processing": "El servidor está procesando la acción..."
|
||||
},
|
||||
"address": {
|
||||
"local_part_description": {
|
||||
"domain": "Elige un subdominio.",
|
||||
"email": "Elija una parte local para su correo electrónico."
|
||||
},
|
||||
"domain_description": {
|
||||
"email": "Elige un dominio para tu email.",
|
||||
"domain": "Elige un dominio."
|
||||
}
|
||||
},
|
||||
"form_errors": {
|
||||
"domain": "Nombre de dominio inválido: debe ser alfanumérico en minúsculas, solo caracteres de puntos y guiones",
|
||||
"between": "El valor debe estar entre {min} y {max}.",
|
||||
"alphalownum_": "El valor debe ser alfanumérico en minúsculas y solo caracteres subrayados.",
|
||||
"alpha": "El valor debe ser solo caracteres alfabéticos."
|
||||
},
|
||||
"footer": {
|
||||
"donate": "Donar",
|
||||
"help": "¿Necesitas ayuda?",
|
||||
"documentation": "Documentación"
|
||||
},
|
||||
"experimental": "Experimental",
|
||||
"error": "Error",
|
||||
"enabled": "Habilitado",
|
||||
"disabled": "Deshabilitado",
|
||||
"dead": "Inactivo",
|
||||
"day_validity": " Expirado hace | 1 día | {count} días",
|
||||
"confirm_app_install": "¿Estás seguro de que deseas instalar esta aplicación?",
|
||||
"common": {
|
||||
"lastname": "Apellido",
|
||||
"firstname": "Nombre"
|
||||
},
|
||||
"code": "Código",
|
||||
"app_show_categories": "Mostrar categorías",
|
||||
"app_install_parameters": "Instalar la configuración",
|
||||
"app_config_panel_no_panel": "Esta aplicación no tiene ninguna configuración disponible",
|
||||
"app_config_panel_label": "Configura esta app",
|
||||
"app_config_panel": "Panel de configuración",
|
||||
"app_choose_category": "Elige una categoría",
|
||||
"app_actions_label": "Realizar acciones",
|
||||
"app_actions": "Acciones",
|
||||
"api_waiting": "Esperando la respuesta del servidor...",
|
||||
"api_not_found": "Parece que el administrador de la web ha intentado consultar algo que no existe."
|
||||
}
|
||||
|
|
528
app/src/i18n/locales/fa.json
Normal file
528
app/src/i18n/locales/fa.json
Normal file
|
@ -0,0 +1,528 @@
|
|||
{
|
||||
"api_error": {
|
||||
"error_message": "پیغام خطا :",
|
||||
"view_error": "مشاهده خطا",
|
||||
"sorry": "از این بابت واقعاً متاسفم.",
|
||||
"server_said": "هنگام پردازش و اجرای دستورات ، سرور مذکور:",
|
||||
"info": "اطلاعات زیر ممکن است برای شخصی که به شما کمک می کند مفید باشد :",
|
||||
"help": "برای دریافت کمک شما بایدببینید<a href=\"https://forum.yunohost.org/\">انجمن تخصصی</a> یا <a href=\"https://chat.yunohost.org/\">گفتگوی آنلاین</a>و برای برطرف کردن مشکلات و یا گزارش اشکال و خطا مراجعه کنید به آدرس<a href=\"https://github.com/YunoHost/issues\"> ردگیری باگ و خطا</a>."
|
||||
},
|
||||
"api": {
|
||||
"query_status": {
|
||||
"warning": "با خطا یا هشدار با موفقیت انجام شد",
|
||||
"success": "با موفقیت انجام شد",
|
||||
"pending": "در حال پیش رفت",
|
||||
"error": "ناموفّق"
|
||||
},
|
||||
"processing": "سرور در حال پردازش دستورات است..."
|
||||
},
|
||||
"all": "همه",
|
||||
"administration_password": "رمز مدیریت",
|
||||
"address": {
|
||||
"local_part_description": {
|
||||
"email": "یک بخش محلی برای ایمیل خود انتخاب کنید.",
|
||||
"domain": "یک زیردامنه انتخاب کنید."
|
||||
},
|
||||
"domain_description": {
|
||||
"email": "یک دامنه برای ایمیل خود انتخاب کنید.",
|
||||
"domain": "یک دامنه انتخاب کنید."
|
||||
}
|
||||
},
|
||||
"add": "اضافه کردن",
|
||||
"action": "اجرا",
|
||||
"api_not_found": "به نظر می رسد مدیر وب سعی کرده است از چیزی که وجود ندارد پرس و جو کند.",
|
||||
"all_apps": "همه اپلیکیشن ها",
|
||||
"api_errors_titles": {
|
||||
"APIConnexionError": "سیستم با خطای اتصال مواجه شده",
|
||||
"APINotRespondingError": "رابط کاربری سیستم پاسخ نمی دهد",
|
||||
"APINotFoundError": "رابط کاربری سیستم نتوانست مسیری را پیدا کند",
|
||||
"APIInternalError": "سیستم با خطای داخلی مواجه شده",
|
||||
"APIBadRequestError": "سیستم با خطا مواجه شده",
|
||||
"APIError": "سیستم با خطای غیر منتظره ای روبرو شده"
|
||||
},
|
||||
"form_errors": {
|
||||
"name": "اسامی نبایدشامل کاراکتر های خاص باشند! بغیر از:<code> ,.'-</code>",
|
||||
"githubLink": "آدرس اینترنتی باید یک پیوند معتبر Github به مخزن باشد",
|
||||
"emailForward": "ایمیل فوروارد نامعتبر: باید فقط حروف الفبا و عدد و کاراکترهای <code>_.-</code> باشد (بطور مثال : someone@example.com, s0me-1@example.com)",
|
||||
"email": "ایمیل نامعتبر: باید فقط حروف الفبا و عدد و کاراکترهای <code>_.-</code> باشد (بطور مثال : someone@example.com, s0me-1@example.com)",
|
||||
"dynDomain": "نام دامنه نامعتبر است: فقط باید حروف کوچک وکاراکتر خط تیره باشد",
|
||||
"domain": "نام دامنه نامعتبر است: فقط باید حروف کوچک ، دات وکاراکتر خط تیره باشد",
|
||||
"between": "مقدار باید بین {min} و {max} باشد.",
|
||||
"alphalownum_": "مقدار باید فقط حروف کوچک و خط زیرین باشد.",
|
||||
"alpha": "مقدار باید فقط حروف الفبا باشد.",
|
||||
"required": "فیلد الزامی است.",
|
||||
"passwordMatch": "کلمه های عبور مطابقت ندارند.",
|
||||
"passwordLenght": "رمز عبور باید حداقل 8 کاراکتر باشد.",
|
||||
"number": "مقدار باید یک عدد باشد.",
|
||||
"notInUsers": "کاربر '{value}' در حال حاضر وجود دارد.",
|
||||
"minValue": "مقدار باید عددی برابر یا بزرگتر از {min} باشد."
|
||||
},
|
||||
"footer": {
|
||||
"donate": "اهدا کنید",
|
||||
"help": "نیاز به کمک دارید؟",
|
||||
"documentation": "مستندات"
|
||||
},
|
||||
"footer_version": "طراحی شده توسط<a href='https://yunohost.org'>YunoHost</a>{version} ({repo}).",
|
||||
"firewall": "فایروال",
|
||||
"experimental_warning": "هشدار: این ویژگی آزمایشی است و پایدار تلقی نمی شود ، نباید از آن استفاده کنید مگر اینکه بدانید در حال انجام چه کاری هستید.",
|
||||
"experimental": "تجربی, آزمایشی",
|
||||
"everything_good": "همه چیز خوب است!",
|
||||
"error_connection_interrupted": "سرور به جای پاسخ دادن ، اتصال را بست. nginx یا yunohost-api دوباره راه اندازی شده یا به دلایلی متوقف شده است؟",
|
||||
"error_server_unexpected": "خطای غیرمنتظره سرور",
|
||||
"error_modify_something": "شما باید چیزی را اصلاح کنید",
|
||||
"error": "اشکال",
|
||||
"enabled": "فعال شد",
|
||||
"enable": "فعال",
|
||||
"download": "دانلود",
|
||||
"domains": "دامنه ها",
|
||||
"domain_visit_url": "بازدید {url}",
|
||||
"domain_visit": "بازدید",
|
||||
"domain_name": "نام دامنه",
|
||||
"domain_dns_longdesc": "مشاهده پیکربندی DNS",
|
||||
"domain_dns_config": "پیکربندی DNS",
|
||||
"domain_delete_forbidden_desc": "از آنجا که دامنه '{domain}' پیش فرض است ، شما نمی توانید آن را حذف کنید، شما باید دامنه دیگری را انتخاب کنید (یا <a href='#/domains/add'> جدید اضافه کنید</a>) و آن را به عنوان دامنه پیش فرض تنظیم نموده تا بتوانید این دامنه را حذف کنید.",
|
||||
"domain_delete_longdesc": "این دامنه را حذف کنید",
|
||||
"domain_default_longdesc": "این دامنه پیش فرض شما است.",
|
||||
"domain_default_desc": "دامنه پیش فرض دامنه اتصال است که کاربران در آن وارد می شوند.",
|
||||
"domain_add_panel_without_domain": "من نام دامنه ندارم…",
|
||||
"domain_add_panel_with_domain": "من قبلاً نام دامنه دارم…",
|
||||
"domain_add_dyndns_forbidden": "شما قبلاً در یک دامنه DynDNS مشترک شده اید، می توانید از انجمن و فروم تخصصی درخواست حذف دامنه DynDNS فعلی خودرا در آدرس:<a href='//forum.yunohost.org/t/nohost-domain-recovery-suppression-de-domaine-en-nohost-me-noho-st-et-ynh-fr/442'>و در یک تاپیک اختصاصی، ارائه دهید</a>.",
|
||||
"domain_add_dyndns_doc": "... و من یک سرویس DNS پویا می خواهم.",
|
||||
"domain_add_dns_doc": "… و من دارم <a href='//yunohost.org/dns_config' target='_blank'> سیستم نام دامنه مرا بدرستی تنظیم کنید</a>.",
|
||||
"domain_add": "افزودن دامنه",
|
||||
"dns": "DNS",
|
||||
"disabled": "غیرفعال شد",
|
||||
"disable": "غیرفعال",
|
||||
"run_first_diagnosis": "اجرای عیب یابی اولیه",
|
||||
"diagnosis_explanation": "ویژگی عیب یابی و تشخیص سعی می کند مسائل رایج در جنبه های مختلف سرور شما را شناسایی کند تا مطمئن شوید همه چیز بدون مشکل اجرا می شود. عیب یابی به طور خودکار دو بار در روز انجام می شود و در صورت وجود مشکل به مدیر سیستم ایمیل ارسال می شود. توجه داشته باشید که اگر نمی خواهید از برخی ویژگی های خاص (به عنوان مثال XMPP) استفاده کنید ، ممکن است برخی از تست ها مرتبط نباشند یا اگر تنظیمات پیچیده ای داشته باشید ممکن است با شکست مواجه شوند. در چنین مواردی ، و اگر می دانید چه می کنید ، اشکالی ندارد که مسائل یا هشدارهای مربوطه را نادیده بگیرید.",
|
||||
"diagnosis_first_run": "ویژگی عیب یابی سعی می کند مسائل رایج در جنبه های مختلف سرور شما را شناسایی کند تا مطمئن شوید همه چیز بدون مشکل اجرا می شود. لطفاً اگر بلافاصله پس از راه اندازی سرور خطاهای زیادی را مشاهده کردید نگران نشوید : این دقیقاً به منظور کمک به شناسایی و تشخیص مشکلات و راهنمایی شما برای رفع آنها است. همچنین عیب یابی سیستم ، دو بار در روز بطور خودکار انجام می شود و در صورت وجود هرگونه مشکلی، ایمیل و ابلاغ به مدیر سیستم ارسال می شود.",
|
||||
"diagnosis_experimental_disclaimer": "توجه داشته باشید که ویژگی عیب یابی سیستم هنوز آزمایشی است و در حال اصلاح است و ممکن است کاملاً قابل اعتماد نباشد.",
|
||||
"diagnosis": "عیب یابی",
|
||||
"domain_dns_conf_is_just_a_recommendation": "این صفحه پیکربندی * توصیه شده * را به شما نشان می دهد. برای شما سیستم نام دامنه DNS را پیکربندی *نمی کند*. پیکربندی منطقه سیستم نام دامنه مطابق این توصیه در ثبت کننده سیستم نام دامنه خود، بعهده شماست.",
|
||||
"details": "جزئیات",
|
||||
"description": "شرح",
|
||||
"delete": "حذف",
|
||||
"dead": "غیر فعال",
|
||||
"day_validity": " منقضی شده | 1 روز | {count} روز",
|
||||
"custom_app_install": "نصب برنامه سفارشی",
|
||||
"created_at": "ایجاد شده در",
|
||||
"connection": "ارتباط",
|
||||
"confirm_reboot_action_shutdown": "آیا مطمئن هستید که می خواهید سرور خود را خاموش کنید؟",
|
||||
"confirm_reboot_action_reboot": "آیا مطمئن هستید که می خواهید سرور خود را راه اندازی مجدد کنید؟",
|
||||
"confirm_upnp_disable": "آیا مطمئن هستید که می خواهید UPnP را غیرفعال کنید؟",
|
||||
"confirm_upnp_enable": "آیا مطمئن هستید که می خواهید UPnP را فعال کنید؟",
|
||||
"confirm_update_specific_app": "آیا مطمئن هستید که می خواهید {app} را به روز رسانی کنید؟",
|
||||
"confirm_update_system": "آیا مطمئن هستید که می خواهید همه بسته های سیستم را به روز کنید؟",
|
||||
"confirm_update_apps": "آیا مطمئن هستید که می خواهید همه برنامه ها را به روز کنید؟",
|
||||
"confirm_uninstall": "آیا مطمئن هستید که می خواهید {name} را ، از نصب حذف کنید؟",
|
||||
"confirm_service_stop": "آیا مطمئن هستید که می خواهید {name} را ، متوقف کنید؟",
|
||||
"confirm_service_start": "آیا مطمئن هستید که می خواهید {name} را ، راه اندازی کنید؟",
|
||||
"confirm_service_restart": "آیا مطمئن هستید که می خواهید {name} راه اندازی مجدد کنید؟",
|
||||
"confirm_restore": "آیا مطمئن هستید که می خواهید {name} بازیابی کنید؟",
|
||||
"confirm_postinstall": "شما در حال راه اندازی مراحل پس از نصب در دامنه {domain} هستید و ممکن است چند دقیقه طول بکشد ، *عملیات را قطع نکنید *.",
|
||||
"confirm_migrations_skip": "رد کردن مهاجرت ها توصیه نمی شود. آیا شما مطمئن هستید که میخواهید انجام دهید؟",
|
||||
"confirm_install_app_inprogress": "هشدار! این برنامه هنوز آزمایشی است (اگر صراحتا کار نمی کند) و احتمال دارد سیستم شما را از کار بیندازد! احتمالاً نباید آن را نصب کنید مگر اینکه بدانید در حال انجام چه کاری هستید. آیا حاضرید این ریسک را انجام دهید؟",
|
||||
"confirm_install_app_lowquality": "هشدار ! : این برنامه ممکن است کار کند اما به خوبی در سیستم یکپارچه نشده است. برخی از ویژگی ها مانند ورود به سیستم و پشتیبان گیری/بازیابی ممکن است در دسترس نباشد.",
|
||||
"confirm_app_install": "آیا مطمئن هستید که می خواهید این برنامه را نصب کنید؟",
|
||||
"confirm_install_domain_root": "آیا مطمئن هستید که می خواهید این برنامه را روی '/' نصب کنید؟ شما نمی توانید برنامه دیگری در {domain} نصب کنید",
|
||||
"confirm_install_custom_app": "هشدار! نصب برنامه های شخص ثالث ممکن است یکپارچگی و امنیت سیستم شما را به خطر بیندازد. احتمالاً نباید آن را نصب کنید مگر اینکه بدانید در حال انجام چه کاری هستید. آیا حاضرید این ریسک را انجام دهید؟",
|
||||
"confirm_group_add_access_permission": "آیا مطمئن هستید که می خواهید اجازه دسترسی {perm} را به {name} بدهید؟اگر {name} یک شخص مخرب باشد ، چنین دسترسی به میزان قابل توجهی سطح حمله را افزایش می دهد. شما این سطح دسترسی را فقط باید به شخص/گروهی که اعتماد کامل دارید اعطاء کنید.",
|
||||
"confirm_firewall_disallow": "آیا مطمئن هستید برای بستن پورت {port} (پروتکل: {protocol}, ارتباط: {connection})",
|
||||
"confirm_firewall_allow": "آیا مطمئن هستید برای بازکردن پورت {port} (پروتکل: {protocol}, ارتباط: {connection})",
|
||||
"confirm_delete": "آیا مطمئن هستیدبرای حذف {name} ؟",
|
||||
"confirm_change_maindomain": "آیا مطمئن هستید که می خواهید دامنه اصلی را تغییر دهید؟",
|
||||
"confirm_app_default": "آیا مطمئن هستید که می خواهید این برنامه را پیش فرض قراردهید؟",
|
||||
"confirm_app_change_url": "آیا مطمئن هستید که می خواهید آدرس دسترسی برنامه را تغیر دهید؟",
|
||||
"configuration": "پیکربندی",
|
||||
"common": {
|
||||
"lastname": "نام خانوادگی",
|
||||
"firstname": "نام کوچک"
|
||||
},
|
||||
"code": "کُد",
|
||||
"close": "بستن",
|
||||
"check": "بررسی",
|
||||
"catalog": "کاتالوگ",
|
||||
"cancel": "لغو",
|
||||
"both": "هر دو",
|
||||
"begin": "شروع",
|
||||
"backup_new": "پشتیبان گیری جدید",
|
||||
"backup_create": "پشتیبان و بکآپ تهیه کنید",
|
||||
"app_state_inprogress_explanation": "نگهدارنده این برنامه به صراحت اعلام کرده است که هنوز برای استفاده در تولید آماده نیست. مراقب باشید!",
|
||||
"app_state_inprogress": "هنوز کار نمی کند",
|
||||
"app_show_categories": "نمایش دسته ها",
|
||||
"app_no_actions": "این برنامه هیچ اقدامی ندارد",
|
||||
"app_make_default": "پیش فرض قرار دهید",
|
||||
"app_manage_label_and_tiles": "مدیریت برچسب و کاشی",
|
||||
"app_install_parameters": "نصب تنظیمات",
|
||||
"app_install_custom_no_manifest": "فایل manifest.json وجود ندارد",
|
||||
"app_info_uninstall_desc": "این برنامه را حذف کنید.",
|
||||
"app_info_change_url_disabled_tooltip": "این ویژگی هنوز در این برنامه اجرا نشده است",
|
||||
"app_info_changeurl_desc": "آدرس دسترسی این برنامه (دامنه و / یا مسیر) را تغییر دهید.",
|
||||
"app_info_default_desc": "دامنه ریشه را به این برنامه هدایت کنید ({domain}).",
|
||||
"app_info_access_desc": "گروه ها / کاربرانی که در حال حاضر مجاز به دسترسی این برنامه هستند :",
|
||||
"app_config_panel_no_panel": "این برنامه هیچ پیکربندی در دسترس ندارد",
|
||||
"app_config_panel_label": "پیکربندی این برنامه",
|
||||
"app_config_panel": "پنل پیکربندی",
|
||||
"app_choose_category": "یک دسته را انتخاب کنید",
|
||||
"app_actions_label": "اجراءکردن اقدامات",
|
||||
"app_actions": "اقدامات",
|
||||
"api_waiting": "منتظر پاسخ سِرورها باشید...",
|
||||
"api_not_responding": "رابط کاربری سیستم پاسخ نمی دهد، شاید 'yunohost-api' خاموش و یا راه اندازی مجدد شده؟",
|
||||
"purge_user_data_warning": "پاکسازی داده های کاربر برگشت پذیر نیست. مطمئن باشید که می دانید چه می کنید!",
|
||||
"purge_user_data_checkbox": "داده های {name} پاک شود؟ (با این کار محتوای فهرست های خانه و ایمیل آن حذف می شود.)",
|
||||
"revert_to_selfsigned_cert": "بازگشت به گواهی خود امضا شده",
|
||||
"revert_to_selfsigned_cert_message": "اگر واقعاً می خواهید ، می توانید یک گواهی خود امضا شده را دوباره نصب کنید. (توصیه نمیشود)",
|
||||
"regenerate_selfsigned_cert": "بازسازی گواهی خود امضا شده",
|
||||
"regenerate_selfsigned_cert_message": "در صورت تمایل ، می توانید گواهی خود امضا شده را دوباره ایجاد کنید.",
|
||||
"manually_renew_letsencrypt": "اکنون به صورت دستی تمدید کنید",
|
||||
"manually_renew_letsencrypt_message": "گواهینامه بطور خودکار تمدید می شود پس از طی 15 روز اعتبار. در صورت تمایل می توانید آن را به صورت دستی تمدید کنید. (توصیه نمیشود).",
|
||||
"install_letsencrypt_cert": "نصب گواهینامه اجازه رمزنگاری",
|
||||
"domain_not_eligible_for_ACME": "به نظر می رسد این دامنه برای گواهی اجازه رمزنگاری آماده نیست. لطفا پیکربندی DNS و قابلیت دسترسی سرور HTTP خود را بررسی کنید. بخش 'DNS records' و بخش 'Web' در <a href='#/diagnosis'>صفحه تشخیص عیب یابی</a> می تواند به شما کمک کند بفهمید چه چیزی اشتباه تنظیم شده است.",
|
||||
"domain_is_eligible_for_ACME": "به نظر می رسد این دامنه برای نصب گواهی اجازه رمزگذاری ، به درستی پیکربندی شده است!",
|
||||
"validity": "اعتبار",
|
||||
"certificate_authority": "مرجع صدور گواهینامه",
|
||||
"certificate_status": "وضعیت گواهینامه",
|
||||
"certificate": "گواهی نامه",
|
||||
"confirm_cert_revert_to_selfsigned": "آیا مطمئن هستید که می خواهید این دامنه را به گواهی خود امضا برگردانید؟",
|
||||
"confirm_cert_manual_renew_LE": "آیا مطمئن هستید که می خواهید گواهی اجازه رمزگذاری را برای این دامنه به صورت دستی تمدید کنید؟",
|
||||
"confirm_cert_regen_selfsigned": "آیا مطمئن هستید که می خواهید دوباره یک گواهی خود امضا شده برای این دامنه ایجاد کنید؟",
|
||||
"confirm_cert_install_LE": "آیا مطمئن هستید که می خواهید گواهی اجازه رمزگذاری برای این دامنه را نصب کنید؟",
|
||||
"ssl_certificate": "گواهی SSL",
|
||||
"certificate_manage": "مدیریت گواهی SSL",
|
||||
"certificate_alert_great": "بسیار هم عالی! شما از گواهینامه امنیتی معتبر Let's Encrypt استفاده می کنید!",
|
||||
"certificate_alert_unknown": "وضعیت نامعلوم",
|
||||
"certificate_alert_good": "بسیار هم عالی ، گواهینامه فعلی خوب به نظر می رسد!",
|
||||
"certificate_alert_about_to_expire": "هشدار: گواهی فعلی در حال انقضاء میباشد! به طور خودکار تمدید نمی شود!",
|
||||
"certificate_alert_letsencrypt_about_to_expire": "گواهینامه کنونی در حال انقضاء است. به زودی باید به صورت خودکار تمدید شود.",
|
||||
"certificate_alert_selfsigned": "هشدار: گواهینامه فعلی ، خودامضا شده است. مرورگرها یک هشدار ترسناک به بازدیدکنندگان جدید نشان می دهند!",
|
||||
"certificate_alert_not_valid": "مهم : گواهینامه فعلی معتبر نیست! درکل HTTPS کار نمی کند!",
|
||||
"yes": "بله",
|
||||
"wrong_password": "رمز عبور اشتباه",
|
||||
"words": {
|
||||
"default": "پیش فرض",
|
||||
"collapse": "گستراندن"
|
||||
},
|
||||
"warnings": "{count} هشدارها",
|
||||
"version": "نسخه",
|
||||
"users_no": "کاربری وجود ندارد.",
|
||||
"users_new": "کاربر جدید",
|
||||
"users": "کاربران",
|
||||
"user_username_edit": "ویرایش حساب کاربری {name}",
|
||||
"user_username": "نام کاربری",
|
||||
"user_new_forward": "newforward@myforeigndomain.org",
|
||||
"user_mailbox_use": "فضای استفاده شده صندوق پستی",
|
||||
"user_mailbox_quota": "سهمیه صندوق پستی",
|
||||
"user_interface_link": "رابط کاربری",
|
||||
"user_fullname": "نام و نام خانوادگی",
|
||||
"user_emailforward_add": "افزودن ارسال به جلو ایمیل",
|
||||
"user_emailforward": "ارسال به جلو ایمیل",
|
||||
"user_emailaliases_add": "افزودن نام مستعار ایمیل",
|
||||
"user_emailaliases": "نام مستعار ایمیل",
|
||||
"user_email": "ایمیل",
|
||||
"url": "آدرس اینترنتی",
|
||||
"upnp_enabled": "UPnP فعال است.",
|
||||
"upnp_disabled": "UPnP غیرفعال است.",
|
||||
"upnp": "UPnP",
|
||||
"unmaintained_details": "این برنامه مدتی است که به روز نشده است و نگهدارنده قبلی از بین رفته است یا وقت کافی برای نگهداری این برنامه ندارد. با خیال راحت مخزن برنامه را بررسی کنید تا راهنماییتان کند",
|
||||
"unmaintained": "نگهداری نشده",
|
||||
"unknown": "ناشناخته",
|
||||
"uninstall": "حذف نصب",
|
||||
"unignore": "توجه مجدد",
|
||||
"unauthorized": "غیرمجاز",
|
||||
"udp": "UDP",
|
||||
"traceback": "ردیابی",
|
||||
"tools_webadmin_settings": "تنظیمات مدیریت وب",
|
||||
"tools_webadmin": {
|
||||
"transitions": "انیمیشن های انتقال صفحه",
|
||||
"experimental_description": "به شما امکان دسترسی به ویژگی های آزمایشی را می دهد. اینها ناپایدار در نظر گرفته می شوند و ممکن است سیستم شما را خراب کنند. <br> این مورد را تنها در صورتی فعال کنید که میدانید در حال انجام چه کاری هستید.",
|
||||
"experimental": "حالت آزمایشی",
|
||||
"cache_description": "اگر قصد دارید با CLI کار کنید و در عین حال در این مدیر وب نیز حرکت کنید ، حافظه پنهان را غیرفعال کنید.",
|
||||
"cache": "حافظه پنهان",
|
||||
"fallback_language_description": "زبانی که در صورت عدم وجود ترجمه اصلی مورد استفاده قرار می گیرد.",
|
||||
"fallback_language": "زبان جایگزین",
|
||||
"language": "زبان"
|
||||
},
|
||||
"tools_shutdown_reboot": "خاموش/ راه اندازی مجدد",
|
||||
"tools_shuttingdown": "سرور شما خاموش است. تا زمانی که سرور شما خاموش است ، نمی توانید از مدیریت وب استفاده کنید.",
|
||||
"tools_shutdown_done": "خاموش کردن...",
|
||||
"tools_shutdown_btn": "خاموش شدن",
|
||||
"tools_shutdown": "سرور خود را خاموش کنید",
|
||||
"tools_rebooting": "سرور شما در حال راه اندازی مجدد است. برای بازگشت به رابط مدیریت وب ، منتظر بمانید تا سرور شما روشن شود. می توانید منتظر ظاهر شدن فرم ورود باشید ، یا با فشاردادن کلید (F5) و تازه کردن صفحه آن را بررسی کنید.",
|
||||
"tools_reboot_done": "در حال راه اندازی مجدد...",
|
||||
"tools_reboot_btn": "راه اندازی مجدد",
|
||||
"tools_reboot": "راه اندازی مجدد سرور شما",
|
||||
"tools_power_up": "به نظر می رسد سرور شما در دسترس است ، اکنون می توانید سعی کنید وارد شوید.",
|
||||
"tools_adminpw_current_placeholder": "رمز عبور فعلی خود را وارد کنید",
|
||||
"tools_adminpw_current": "رمز عبور فعلی",
|
||||
"tools_adminpw": "تغییر رمز مدیریت",
|
||||
"tools": "ابزارها",
|
||||
"tip_about_user_email": "کاربران با یک آدرس ایمیل مرتبط (و حساب XMPP) با قالب username@domain.tld ایجاد می شوند. نام مستعار ایمیل اضافی و ایمیل ارسال شده بعداً توسط مدیر و کاربر اضافه می شود.",
|
||||
"tcp": "TCP",
|
||||
"system_upgrade_all_packages_btn": "ارتقاء تمام بسته ها",
|
||||
"system_upgrade_all_applications_btn": "ارتقاء تمام برنامه های کاربردی",
|
||||
"system_upgrade_btn": "ارتقاء",
|
||||
"system_update": "به روزرسانی سیستم",
|
||||
"system_packages_nothing": "همه بسته های سیستم به روز هستند!",
|
||||
"system_apps_nothing": "همه برنامه ها به روز هستند!",
|
||||
"system": "سیستم",
|
||||
"stop": "توقف",
|
||||
"status": "وضعیّت",
|
||||
"start": "شروع",
|
||||
"skip": "رد شدن",
|
||||
"since": "از آنجا که",
|
||||
"size": "اندازه",
|
||||
"set_default": "تنظیم پیش فرض",
|
||||
"services": "سرویس ها",
|
||||
"service_start_on_boot": "شروع هنگام بوت",
|
||||
"select_none": "انتخاب هیچکدام",
|
||||
"select_all": "انتخاب همه",
|
||||
"search": {
|
||||
"not_found": "{item} با معیارهای شما مطابقت دارد.",
|
||||
"for": "جستجو برای {items} ..."
|
||||
},
|
||||
"save": "ذخیره",
|
||||
"running": "درحال اجرا",
|
||||
"run": "اجرا",
|
||||
"human_routes": {
|
||||
"users": {
|
||||
"update": "به روزرسانی کاربر: '{name}'",
|
||||
"delete": "حذف کاربر: '{name}'",
|
||||
"create": "ایجاد کاربر: '{name}'"
|
||||
},
|
||||
"upgrade": {
|
||||
"app": "ارتقاء برنامه کاربردی '{app}'",
|
||||
"apps": "ارتقاء تمام برنامه های کاربردی",
|
||||
"system": "ارتقاء سیستم"
|
||||
},
|
||||
"update": "برای بروزرسانی ها بررسی کنید",
|
||||
"shutdown": "خاموش کردن سرور",
|
||||
"share_logs": "ایجاد پیوند برای گزارش '{name}'",
|
||||
"services": {
|
||||
"stop": "توقف سرویس '{name}'",
|
||||
"start": "شروع سرویس '{name}'",
|
||||
"restart": "راه اندازی مجدد سرویس '{name}'"
|
||||
},
|
||||
"reboot": "راه اندازی مجدد سِرور",
|
||||
"postinstall": "اجرای پس از نصب",
|
||||
"permissions": {
|
||||
"remove": "حذف دسترسی '{name}' به '{perm}'",
|
||||
"add": "اجازه دهید '{name}' به '{perm}' دسترسی پیدا کند"
|
||||
},
|
||||
"migrations": {
|
||||
"skip": "ردکردن مهاجرت ها",
|
||||
"run": "اجرای مهاجرت ها"
|
||||
},
|
||||
"groups": {
|
||||
"remove": "حذف '{user}' از گروه '{name}'",
|
||||
"add": "افزودن '{user}' به گروه '{name}'",
|
||||
"delete": "حذف گروه '{name}'",
|
||||
"create": "ایجاد گروه '{name}'"
|
||||
},
|
||||
"firewall": {
|
||||
"upnp": "{action} UPnP",
|
||||
"ports": "{action} پورت {port} ({protocol}, {connection})"
|
||||
},
|
||||
"domains": {
|
||||
"set_default": "'{name}' را به عنوان دامنه پیش فرض تنظیم کنید",
|
||||
"revert_to_selfsigned": "ارجاع به گواهینامه خود امضا شده برای '{name}'",
|
||||
"regen_selfsigned": "تمدید گواهینامه خود امضا شده برای '{name}'",
|
||||
"manual_renew_LE": "تمدید گواهینامه برای '{name}'",
|
||||
"install_LE": "نصب گواهینامه برای '{name}'",
|
||||
"delete": "حذف دامنه '{name}'",
|
||||
"add": "افزودن دامنه '{name}'"
|
||||
},
|
||||
"diagnosis": {
|
||||
"unignore": {
|
||||
"warning": "حذف هشدار",
|
||||
"error": "حذف خطا"
|
||||
},
|
||||
"run_specific": "اجرای '{description}' عیب یابی",
|
||||
"run": "اجرای عیب یابی",
|
||||
"ignore": {
|
||||
"warning": "نادیده گرفتن هشدار",
|
||||
"error": "نادیده گرفتن خطاء"
|
||||
}
|
||||
},
|
||||
"backups": {
|
||||
"restore": "بازیابی نسخه پشتیبان '{name}'",
|
||||
"delete": "حذف نسخه پشتیبان '{name}'",
|
||||
"create": "پشتیبان تهیه کنید"
|
||||
},
|
||||
"apps": {
|
||||
"update_config": "به روزرسانی پیکربندی برنامه '{name}'",
|
||||
"uninstall": "حذف برنامه '{name}'",
|
||||
"perform_action": "اجرای عملیّات '{action}' از برنامه '{name}'",
|
||||
"set_default": "تغییر مسیر ریشه دامنه '{domain}' به '{name}'",
|
||||
"install": "نصب برنامه '{name}'",
|
||||
"change_url": "تغییر آدرس دسترسی از '{name}'",
|
||||
"change_label": "تغییر برچسب از '{prevName}' به '{nextName}'"
|
||||
},
|
||||
"adminpw": "تغییر رمز مدیریت"
|
||||
},
|
||||
"restart": "راه اندازی مجدد",
|
||||
"restore": "بازگرداندن",
|
||||
"rerun_diagnosis": "عیب یابی مجدد",
|
||||
"readme": "مرا بخوان",
|
||||
"protocol": "پروتکل",
|
||||
"previous": "قبلی",
|
||||
"postinstall_set_password": "تنظیم رمز عبور مدیریت",
|
||||
"postinstall_set_domain": "تنظیم دامنه اصلی",
|
||||
"postinstall_password": "این کلمه عبور برای مدیریت همه چیز در سرور شما مورداستفاده قرار میگیرد. برای انتخاب آن عاقلانه وقت بگذارید.",
|
||||
"postinstall_intro_3": "با مراجعه به آدرس می توانید اطلاعات بیشتری کسب کنید <a href='//yunohost.org/en/install/hardware:vps_debian#fa-cog-proceed-with-the-initial-configuration' target='_blank'>صفحه مستندات مناسب</a>",
|
||||
"postinstall_intro_2": "دو مرحله پیکربندی دیگر برای فعال کردن خدمات سرور مورد نیاز است.",
|
||||
"postinstall_intro_1": "تبریک می گوئیم! YunoHost با موفقیت نصب شد.",
|
||||
"postinstall_domain": "این اولین نام دامنه ای است که به سرور YunoHost شما پیوند داده شده است ، اما همچنین نامی است که توسط کاربران سرور شما برای دسترسی به پورتال احراز هویت مورد استفاده قرار می گیرد. بر این اساس ، برای همه قابل مشاهده خواهد بود ، بنابراین آن را با دقت انتخاب کنید.",
|
||||
"postinstall": {
|
||||
"force": "پس از نصب را مجبورکنید"
|
||||
},
|
||||
"ports": "پورت ها",
|
||||
"port": "درگاه، پورت",
|
||||
"permission_show_tile_enabled": "به صورت کاشی در پورتال کاربر قابل مشاهده است",
|
||||
"permission_main": "برچسب اصلی",
|
||||
"permission_corresponding_url": "آدرس اینترنتی متناظر",
|
||||
"pending_migrations": "برخی از مهاجرت های معلق در انتظار اجرا هستند. لطفا برای مشاهده و اجرای آن ها به <a href='#/tools/migrations'>ابزارها> مهاجرت ها</a>مراجعه نمائید.",
|
||||
"placeholder": {
|
||||
"domain": "my-domain.com",
|
||||
"groupname": "نام گروه من",
|
||||
"lastname": "دو",
|
||||
"firstname": "جان",
|
||||
"username": "اسم فرضی"
|
||||
},
|
||||
"ipv6": "IPv6",
|
||||
"ipv4": "IPv4",
|
||||
"logs_more": "نمایش خطوط بیشتر",
|
||||
"logs_share_with_yunopaste": "گزارش ها را با YunoPaste به اشتراک بگذارید",
|
||||
"logs_context": "نوشتار",
|
||||
"logs_path": "مسیر",
|
||||
"logs_started_at": "شروع",
|
||||
"logs_ended_at": "پایان",
|
||||
"logs_error": "خطاء",
|
||||
"logs_no_logs_registered": "هیچ لاگ و گزارشی برای این دسته ثبت نشده است",
|
||||
"logs_app": "گزارشات برنامه های کاربردی",
|
||||
"logs_service": "گزارشات سرویس ها",
|
||||
"logs_access": "لیست دسترسی و ممنوعیت ها",
|
||||
"logs_system": "گزارش هسته و سایر رویدادهای سطح پایین",
|
||||
"logs_package": "سوابق مدیریت بسته های دبیان",
|
||||
"logs_history": "سابقه اجرای دستور روی سیستم",
|
||||
"logs_operation": "عملیّات انجام شده بر روی سیستم با YunoHost",
|
||||
"logs_suboperations": "عملیّات فرعی",
|
||||
"logs": "لاگ ها",
|
||||
"perform": "انجام دادن",
|
||||
"path": "مسیر",
|
||||
"password_confirmation": "تایید کلمه عبور",
|
||||
"password": "کلمه عبور",
|
||||
"operation_failed_explanation": "این عملیات شکست خورد! واقعاً متأسفم :( می توانید امتحان کنید<a href='https://yunohost.org/help'>کمک بخواهید</a>. لطفاً * گزارش کامل * عملیات را به افرادی که به شما کمک می کنند ارائه دهید. می توانید این کار را با کلیک روی دکمه سبز \"Share with Yunopaste\" انجام دهید. هنگام به اشتراک گذاری گزارش ها ، YunoHost به طور خودکار سعی می کند داده های خصوصی مانند نام دامنه و IP ها را ناشناس کند.",
|
||||
"others": "دیگران",
|
||||
"orphaned_details": "این برنامه مدتی است که نگهداری نمی شود.ممکن است هنوز کار کند ، اما تا زمانی که کسی داوطلب مراقبت از آن نشود ، هیچ ارتقا ای دریافت نمی کند. با خیال راحت در احیای آن مشارکت کنید!",
|
||||
"orphaned": "نگهداری نمی شود",
|
||||
"operations": "عملیّات",
|
||||
"open": "باز",
|
||||
"only_decent_quality_apps": "فقط برنامه های با کیفیّت مناسب",
|
||||
"only_working_apps": "فقط برنامه های کاربردی",
|
||||
"only_highquality_apps": "فقط برنامه های با کیفیّت بالا",
|
||||
"ok": "خوب",
|
||||
"nobody": "هيچ كس",
|
||||
"no": "خیر",
|
||||
"next": "بعدی",
|
||||
"myserver": "سرور من",
|
||||
"multi_instance": "می توان چندین بار نصب کرد",
|
||||
"migrations_disclaimer_not_checked": "این مهاجرت مستلزم آن است که قبل از اجرای آن ، سلب مسئولیت آن را تصدیق کنید.",
|
||||
"migrations_disclaimer_check_message": "من این سلب مسئولیت را خواندم و فهمیدم",
|
||||
"migrations_no_done": "مهاجرت قبلی وجود ندارد",
|
||||
"migrations_no_pending": "مهاجرت معلق وجود ندارد",
|
||||
"migrations_done": "مهاجرت های قبلی",
|
||||
"migrations_pending": "مهاجرت های در انتظار",
|
||||
"migrations": "مهاجرت ها",
|
||||
"manage_users": "مدیریت کاربران",
|
||||
"manage_domains": "مدیریت دامنه ها",
|
||||
"manage_apps": "مدیریت برنامه ها",
|
||||
"mailbox_quota_placeholder": "برای غیرفعال کردن روی 0 تنظیم کنید.",
|
||||
"mailbox_quota_example": "گنجایش یک سی-دی 700 مگابایت، و یک دی-وی-دی 4700 مگابایت میباشد",
|
||||
"mailbox_quota_description": "محدودیت اندازه ذخیره سازی برای محتوای ایمیل تعیین کنید. <br> برای غیرفعال کردن روی 0 تنظیم کنید.",
|
||||
"logout": "خروج",
|
||||
"login": "ورود",
|
||||
"local_archives": "بایگانی های محلی",
|
||||
"license": "لایسنس، مجوز",
|
||||
"last_ran": "زمان آخرین اجرا:",
|
||||
"label_for_manifestname": "برچسب برای {name}",
|
||||
"label": "برچسب",
|
||||
"items_verbose_items_left": "{items} باقی مانده است.",
|
||||
"items_verbose_count": "{items} وجود دارد.",
|
||||
"items": {
|
||||
"users": "بدون کاربر | کاربر | {c} کاربران",
|
||||
"services": "بدون سرویس | سرویس | {c} سرویس ها",
|
||||
"permissions": "بدون مجوز | اجازه | {c} مجوزها",
|
||||
"logs": "بدون لاگ | لاگ | {c} لاگ ها",
|
||||
"installed_apps": "بدون برنامه های نصب شده | برنامه نصب شده | {c} برنامه های نصب شده",
|
||||
"groups": "بدون گروه | گروه | {c} گروه ها",
|
||||
"domains": "بدون دامنه | دامنه | {c} دامنه ها",
|
||||
"backups": "بدون پشتیبان گیری | پشتیبان گیری | {c} پشتیبان گیری",
|
||||
"apps": "بدون برنامه | برنامه | {c} برنامه ها"
|
||||
},
|
||||
"issues": "{count} مسائل",
|
||||
"installed": "نصب شد",
|
||||
"installation_complete": "نصب کامل",
|
||||
"install_time": "زمان نصب",
|
||||
"install_name": "نصب {id}",
|
||||
"install": "نصب",
|
||||
"infos": "اطلاعات",
|
||||
"ignored": "{count} نادیده گرفته شده",
|
||||
"ignore": "چشم پوشی",
|
||||
"id": "شناسه",
|
||||
"hook_data_xmpp_desc": "تنظیمات اتاق و کاربر ، بارگذاری فایل",
|
||||
"hook_data_xmpp": "داده های XMPP",
|
||||
"hook_data_mail_desc": "ایمیل های خام ذخیره شده در سرور",
|
||||
"hook_data_mail": "ایمیل",
|
||||
"hook_data_home_desc": "داده های کاربر واقع در /home/USER",
|
||||
"hook_data_home": "داده های کاربر",
|
||||
"hook_conf_manually_modified_files": "تنظیمات دستی تغییر یافته",
|
||||
"hook_conf_ynh_settings": "پیکربندی سیستم YunoHost",
|
||||
"hook_conf_ynh_certs": "گواهینامه های SSL",
|
||||
"hook_conf_ldap": "پایگاه داده کاربر",
|
||||
"hook_adminjs_group_configuration": "تنظیمات سیستم",
|
||||
"home": "خانه",
|
||||
"history": {
|
||||
"methods": {
|
||||
"PUT": "اصلاح کردن",
|
||||
"POST": "ایجاد / اجرا",
|
||||
"GET": "خواندن",
|
||||
"DELETE": "حذف"
|
||||
},
|
||||
"last_action": "اقدام اخیر:",
|
||||
"title": "سابقه",
|
||||
"is_empty": "درحال حاضر هیچ سابقه ای وجود ندارد."
|
||||
},
|
||||
"permissions": "مجوز ها",
|
||||
"groups_and_permissions_manage": "مدیریت گروه ها و مجوزهای دسترسی",
|
||||
"groups_and_permissions": "گروه ها و مجوزها",
|
||||
"group_specific_permissions": "مجوزهای خاص کاربر",
|
||||
"group_explain_visitors_needed_for_external_client": "مراقب باشید نیاز است تا برخی از برنامه های کاربردی را برای بازدیدکنندگان مجاز بگذارید، اگر قصد دارید با کلاینت های خارجی از برنامه ها استفاده کنید. برای مثال: اگر قصد دارید از کلاینت همگام سازی در تلفن هوشمند یا رایانه رومیزی خود استفاده کنید ، این مورد برای Nextcloud صدق می کند.",
|
||||
"group_explain_visitors": "این گروه ویژه نماینده بازدیدکنندگان ناشناس است",
|
||||
"group_explain_all_users": "این یک گروه خاص است که شامل تمام حساب های کاربری روی سرور است",
|
||||
"group_new": "گروه جدید",
|
||||
"group_add_permission": "افزودن مجوز دسترسی",
|
||||
"group_add_member": "افزودن کاربر",
|
||||
"group_format_name_help": "می توانید از کاراکترهای الفبائی و عددو خط زیرین استفاده کنید",
|
||||
"group_visitors": "بازدید کنندگان",
|
||||
"group_all_users": "تمام کاربران",
|
||||
"group_name": "نام گروه",
|
||||
"group": "گروه",
|
||||
"good_practices_about_user_password": "اکنون در حال تعریف رمز عبور کاربر جدید هستید. گذرواژه باید حداقل 8 کاراکتر باشد - استفاده از رمز عبور طولانی تمرین خوبی است (یعنی عبارت عبور) و/یا استفاده وترکیب انواع مختلف کاراکترها (حروف بزرگ ، کوچک ، عدد و کاراکترهای خاص).",
|
||||
"good_practices_about_admin_password": "اکنون در حال تعریف رمز عبور جدید مدیر سیستم هستید. گذرواژه باید حداقل 8 کاراکتر باشد - هرچند استفاده از رمز عبور طولانی تمرین خوبی است (یعنی عبارت عبور) و/یا استفاده وترکیب انواع مختلف کاراکترها (حروف بزرگ ، کوچک ، عدد و کاراکترهای خاص).",
|
||||
"go_back": "برگشتن به عقب",
|
||||
"from_to": "از {0} تا {1}",
|
||||
"form_input_example": "مثال : {example}",
|
||||
"backup_content": "محتوای نسخه پشتیبان",
|
||||
"backup_action": "پشتیبان گیری",
|
||||
"backup": "پشتیبان گیری",
|
||||
"archive_empty": "بایگانی خالی",
|
||||
"applications": "برنامه های کاربردی",
|
||||
"app_state_working_explanation": "نگهدارنده این برنامه آن را \"در حال کار\" اعلام کرد. این بدان معناست که باید کاربردی باشد (سطح برنامه سی.اف.) اما لزوماً مورد بازبینی قرار نگرفته است ، ممکن است هنوز دارای مشکلاتی باشد یا کاملاً با سیستم YunoHost یکپارچه نشده باشد.",
|
||||
"app_state_working": "درحال کار",
|
||||
"app_state_highquality_explanation": "این برنامه حداقل از یک سال پیش به خوبی با سیستم YunoHost ادغام ویکپارچه شده است.",
|
||||
"app_state_highquality": "کیفیّت بالا",
|
||||
"app_state_lowquality_explanation": "این برنامه ممکن است کاربردی باشد ، اما ممکن است همچنان دارای مشکلاتی باشد یا به طور کامل با سیستم YunoHost یکپارچه نشده باشد و یا به شیوه های خوب احترام نمی گذارد.",
|
||||
"app_state_lowquality": "کیفیّت پایین",
|
||||
"app_state_notworking_explanation": "نگهدارنده برنامه صراحتاً اعلام کرد این برنامه کار نمی کند. سیستم را خراب و یا از کار می اندازد!",
|
||||
"app_state_notworking": "کار نمیکند"
|
||||
}
|
97
app/src/i18n/locales/fi.json
Normal file
97
app/src/i18n/locales/fi.json
Normal file
|
@ -0,0 +1,97 @@
|
|||
{
|
||||
"app_state_inprogress": "ei vielä toimi",
|
||||
"app_show_categories": "Näytä kategoriat",
|
||||
"app_no_actions": "Tällä sovelluksella ei ole mitään toimintoja",
|
||||
"app_make_default": "Laita oletusarvoksi",
|
||||
"app_manage_label_and_tiles": "Hallitse lappuja ja ruutuja",
|
||||
"app_install_parameters": "Asenna asetukset",
|
||||
"app_install_custom_no_manifest": "manifest.json tiedostoa ei löytynyt",
|
||||
"app_info_uninstall_desc": "Poista tämä sovellus.",
|
||||
"app_info_change_url_disabled_tooltip": "Tätä ominaisuutta ei ole vielä toteutettu tässä sovelluksessa",
|
||||
"app_info_changeurl_desc": "Muuta tämän sovelluksen käyttö-URL-osoitetta (verkkotunnus ja/tai polku).",
|
||||
"app_info_default_desc": "Uudelleen ohjaa verkkotunnuksen juuri tähän sovellukseen ({domain}).",
|
||||
"app_info_access_desc": "Ryhmät / käyttäjät jolla on oikeus tähän sovellukseen:",
|
||||
"app_config_panel_no_panel": "Tällä sovelluksella ei ole mitään konfigurointia saatavilla",
|
||||
"app_config_panel_label": "Konfiguroi tämä sovellus",
|
||||
"app_config_panel": "Konfigurointi paneeli",
|
||||
"app_choose_category": "Valitse kategoria",
|
||||
"app_actions_label": "Suorita toimia",
|
||||
"app_actions": "Toiminnot",
|
||||
"api_waiting": "Odotetaan palvelimen vastausta...",
|
||||
"api_not_responding": "YunoHost API ei vastaa. Ehkä 'yunohost-api' on kaatunut tai käynnsityi uudelleen?",
|
||||
"api_not_found": "Näyttää siltä, että web-järjestelmänvalvoja yritti kysyä jotain, jota ei ole olemassa.",
|
||||
"all_apps": "Kaikki sovellukset",
|
||||
"api_errors_titles": {
|
||||
"APIConnexionError": "YunoHost kohtasi yhteysvirheen",
|
||||
"APINotRespondingError": "YunoHost API ei vastaa",
|
||||
"APINotFoundError": "YunoHost API ei löytänyt reittiä",
|
||||
"APIInternalError": "YunoHost kohtasi sisäisen virheen",
|
||||
"APIBadRequestError": "YunoHost kohtasi virheen",
|
||||
"APIError": "YunoHost kohtasi odottamattoman virheen"
|
||||
},
|
||||
"api_error": {
|
||||
"view_error": "Näytä virhe",
|
||||
"sorry": "Suokaa anteeksi.",
|
||||
"server_said": "Toimenpiteen käsittelyn aikana palvelin sanoi:",
|
||||
"info": "Nämä tiedot voivat olla hyödyllisiä sinua autavalle henkilölle:",
|
||||
"help": "Sinun kannattaisi hakea apua <a href=\"https://forum.yunohost.org/\">foorumilla</a> or <a href=\"https://chat.yunohost.org/\">chätissä</a> tämän ongelman korjaamiseksi, tai raportoida bugi <a href=\"https://github.com/YunoHost/issues\">bugtrackerissa</a>.",
|
||||
"error_message": "Virhe viesti:"
|
||||
},
|
||||
"api": {
|
||||
"query_status": {
|
||||
"warning": "Onnistui virheillä tai hälytyksillä",
|
||||
"success": "Onnistuneesti suoritettu",
|
||||
"pending": "Käynnissä",
|
||||
"error": "Epäonnistui"
|
||||
},
|
||||
"processing": "Palvelin käsittelee toimintoa."
|
||||
},
|
||||
"all": "Kaikki",
|
||||
"administration_password": "Järjestelmänvalvojan salasana",
|
||||
"address": {
|
||||
"local_part_description": {
|
||||
"email": "Valitse sähköpostiosoitteesi paikallinen osa.",
|
||||
"domain": "Valitse aliverkkotunnus."
|
||||
},
|
||||
"domain_description": {
|
||||
"email": "Valitse verkkotunnus sähköpostillesi.",
|
||||
"domain": "Valitse verkkotunnus."
|
||||
}
|
||||
},
|
||||
"add": "Lisää",
|
||||
"action": "Toiminta",
|
||||
"confirm_firewall_disallow": "Haluatko varmasti sulkea portin {port} (protokooli: {protocol}, yhteys: {connection})",
|
||||
"confirm_firewall_allow": "Haluatko varmasti avata portin {port} (protokooli: {protocol}, yhteys: {connection})",
|
||||
"confirm_delete": "Oletko varma että haluat poistaa {name}?",
|
||||
"confirm_change_maindomain": "Haluatko varmasti vaihtaa pääverkkotunnuksen?",
|
||||
"confirm_app_default": "Haluatko varmasti asettaa tämän sovelluksen oletukseksi?",
|
||||
"confirm_app_change_url": "Haluatko varmasti vaihtaa sovelluksen URL-Osoitten?",
|
||||
"configuration": "Kokoonpano",
|
||||
"common": {
|
||||
"lastname": "Sukunimi",
|
||||
"firstname": "Etunimi"
|
||||
},
|
||||
"code": "Koodi",
|
||||
"close": "Sulje",
|
||||
"check": "Tarkista",
|
||||
"catalog": "Luettelo",
|
||||
"cancel": "Peruuta",
|
||||
"both": "Molemmat",
|
||||
"begin": "Aloita",
|
||||
"backup_new": "Uusi varmuuskopio",
|
||||
"backup_create": "Luo varmuuskopio",
|
||||
"backup_content": "Varmuuskopion sisältö",
|
||||
"backup_action": "Varmuuskopio",
|
||||
"backup": "Varmuuskopio",
|
||||
"archive_empty": "Tyhjä arkisto",
|
||||
"applications": "Sovellukset",
|
||||
"app_state_working_explanation": "Tämän sovelluksen ylläpitäjä ilmoitti sen toimivaksi. Se tarkoittaa, että sen on oltava toimiva (vrt. Sovellustaso), mutta sitä ei välttämättä vertaisarvioitu, joten se voi silti sisältää ongelmia tai sitä ei ole täysin integroitu YunoHostiin.",
|
||||
"app_state_working": "toimii",
|
||||
"app_state_highquality_explanation": "Tämä sovellus on hyvin integroitu YunoHostin kanssa vähintään vuoden.",
|
||||
"app_state_highquality": "hyvälaatutinen",
|
||||
"app_state_lowquality_explanation": "Sovellus voi toimia, mutta siinä voi esiintyä ongelmia, tai ei ole täysin integroitu YunoHostin kanssa, tai ei arvosta hyviä käytäntöjä.",
|
||||
"app_state_lowquality": "heikkolaatuinen",
|
||||
"app_state_notworking_explanation": "Sovelluksen ylläpitäjä on sanonut että sovellus 'ei toimi'. TÄMÄ RIKKOO JÄRJESTELMÄSI!",
|
||||
"app_state_notworking": "ei toimi",
|
||||
"app_state_inprogress_explanation": "Sovelluksen ylläpitäjä on sanonut että tämä sovellus ei ole valmis tuotantokäytöön. OLE VAROVAINEN!"
|
||||
}
|
|
@ -7,10 +7,11 @@
|
|||
"app_info_default_desc": "Redirige la racine du domaine vers cette application ({domain}).",
|
||||
"app_info_uninstall_desc": "Supprimer cette application.",
|
||||
"app_install_custom_no_manifest": "Aucun fichier manifest.json",
|
||||
"app_install_parameters": "Paramètres d'installation",
|
||||
"app_make_default": "Définir par défaut",
|
||||
"app_state_inprogress": "ne fonctionne pas encore",
|
||||
"app_state_notworking": "Non fonctionnelle",
|
||||
"app_state_working": "fonctionnelle",
|
||||
"app_state_working": "Fonctionnelle",
|
||||
"applications": "Applications",
|
||||
"archive_empty": "L’archive est vide",
|
||||
"backup": "Sauvegarde",
|
||||
|
@ -40,10 +41,10 @@
|
|||
"disable": "Désactiver",
|
||||
"dns": "DNS",
|
||||
"domain_add": "Ajouter un domaine",
|
||||
"domain_add_dns_doc": "… et j'ai <a href='//yunohost.org/dns'>configuré mes DNS correctement</a>.",
|
||||
"domain_add_dns_doc": "… et j'ai <a href='//yunohost.org/dns_config' target='_blank'>configuré mes DNS correctement</a>.",
|
||||
"domain_add_dyndns_doc": "… et je souhaite ajouter un service DNS dynamique.",
|
||||
"domain_add_panel_with_domain": "J'ai déjà un nom de domaine …",
|
||||
"domain_add_panel_without_domain": "Je n'ai pas de nom de domaine …",
|
||||
"domain_add_panel_with_domain": "J'ai déjà un nom de domaine…",
|
||||
"domain_add_panel_without_domain": "Je n'ai pas de nom de domaine…",
|
||||
"domain_default_desc": "Les utilisateurs se connecteront au domaine par défaut.",
|
||||
"domain_default_longdesc": "Ceci est votre domaine par défaut.",
|
||||
"domain_delete_longdesc": "Supprimer ce domaine",
|
||||
|
@ -59,20 +60,17 @@
|
|||
"error_server_unexpected": "Erreur serveur inattendue",
|
||||
"firewall": "Pare-feu",
|
||||
"home": "Accueil",
|
||||
"hook_adminjs_group_configuration": "Configuration système",
|
||||
"hook_conf_cron": "Tâches automatiques",
|
||||
"hook_conf_ldap": "Base de donnée LDAP",
|
||||
"hook_conf_nginx": "Nginx",
|
||||
"hook_conf_ssh": "SSH",
|
||||
"hook_conf_ssowat": "SSOwat",
|
||||
"hook_conf_xmpp": "XMPP",
|
||||
"hook_adminjs_group_configuration": "Configurations système",
|
||||
"hook_conf_ldap": "Annuaire des utilisateurs",
|
||||
"hook_conf_ynh_certs": "Certificats SSL",
|
||||
"hook_conf_ynh_firewall": "Pare-feu",
|
||||
"hook_conf_ynh_mysql": "Mot de passe MySQL",
|
||||
"hook_data_home": "Données de l’utilisateur",
|
||||
"hook_data_home_desc": "Les données de l’utilisateur situées dans /home/USER",
|
||||
"hook_data_mail": "Courriel",
|
||||
"hook_conf_ynh_settings": "Configurations de YunoHost",
|
||||
"hook_conf_manually_modified_files": "Fichiers de configuration modifiés manuellement",
|
||||
"hook_data_home": "Données des utilisateurs",
|
||||
"hook_data_home_desc": "Données utilisateurs situées dans /home/USER",
|
||||
"hook_data_mail": "Courriels",
|
||||
"hook_data_mail_desc": "Courriels (au format brut) stockés sur le serveur",
|
||||
"hook_data_xmpp": "Données XMPP",
|
||||
"hook_data_xmpp_desc": "Configurations des salons et des utilisateurs, fichiers téléversés",
|
||||
"id": "ID",
|
||||
"infos": "Info",
|
||||
"install": "Installer",
|
||||
|
@ -92,7 +90,7 @@
|
|||
"manage_apps": "Gérer les applications",
|
||||
"manage_domains": "Gérer les domaines",
|
||||
"manage_users": "Gérer les utilisateurs",
|
||||
"multi_instance": "Instance multiple",
|
||||
"multi_instance": "Peut être installée plusieurs fois",
|
||||
"myserver": "monserveur",
|
||||
"next": "Suivant",
|
||||
"no": "Non",
|
||||
|
@ -103,11 +101,11 @@
|
|||
"path": "Chemin",
|
||||
"port": "Port",
|
||||
"ports": "Ports",
|
||||
"postinstall_domain": "C'est le premier nom de domaine lié à votre serveur YunoHost, mais également celui qui servira pour le portail d'authentification. Il sera donc visible pour tous vos utilisateurs, choisissez-le avec soin.",
|
||||
"postinstall_domain": "Il s'agit du premier nom de domaine lié à votre serveur YunoHost. C'est également celui qui servira pour le portail d'authentification. Il sera donc visible pour tous vos utilisateurs, choisissez-le avec soin.",
|
||||
"postinstall_intro_1": "Félicitations ! YunoHost a été installé avec succès.",
|
||||
"postinstall_intro_2": "Deux étapes de configuration supplémentaires sont nécessaires pour activer les services de votre serveur.",
|
||||
"postinstall_intro_3": "Vous pouvez obtenir plus d'informations en vous rendant sur <a href='//yunohost.org/postinstall_fr' target='_blank'>la page de documentation appropriée</a>",
|
||||
"postinstall_password": "C'est le mot de passe qui vous permettra d'accéder à l'interface d'administration et de contrôler votre serveur. Prenez le temps d'en choisir un bon.",
|
||||
"postinstall_intro_3": "Vous pouvez obtenir plus d'informations en vous rendant sur <a href='//yunohost.org/postinstall' target='_blank'>la page de documentation appropriée</a>",
|
||||
"postinstall_password": "Il s'agit du mot de passe qui permettra d'accéder à l'interface d'administration et de contrôler votre serveur. Prenez le temps d'en choisir un bon.",
|
||||
"previous": "Précédent",
|
||||
"protocol": "Protocole",
|
||||
"restore": "Restaurer",
|
||||
|
@ -179,11 +177,11 @@
|
|||
"manually_renew_letsencrypt": "Renouveler manuellement maintenant",
|
||||
"regenerate_selfsigned_cert_message": "Si vous le souhaitez, vous pouvez régénérer le certificat auto-signé.",
|
||||
"regenerate_selfsigned_cert": "Régénérer le certificat auto-signé",
|
||||
"revert_to_selfsigned_cert_message": "Si vous le souhaitez vraiment, vous pouvez réinstaller un certificat auto-signé (non recommandé).",
|
||||
"revert_to_selfsigned_cert_message": "Si vous le souhaitez vraiment, vous pouvez réinstaller un certificat auto-signé (non recommandé)",
|
||||
"revert_to_selfsigned_cert": "Retourner à un certificat auto-signé",
|
||||
"user_mailbox_use": "Espace utilisé de la boite aux lettres",
|
||||
"confirm_firewall_open": "Voulez-vous vraiment ouvrir le port {port} ? (protocole : {protocol}, connexion : {connection})",
|
||||
"confirm_firewall_close": "Voulez-vous vraiment fermer le port {port} ? (protocole : {protocol}, connexion : {connection})",
|
||||
"confirm_firewall_allow": "Êtes-vous sûr de vouloir ouvrir le port {port} (protocole : {protocol}, connexion : {connection})",
|
||||
"confirm_firewall_disallow": "Êtes-vous sûr de vouloir fermer le port {port} (protocole : {protocol}, connexion : {connection})",
|
||||
"confirm_service_start": "Voulez-vous vraiment démarrer {name} ?",
|
||||
"confirm_service_stop": "Voulez-vous vraiment arrêter {name} ?",
|
||||
"confirm_update_apps": "Voulez-vous vraiment mettre à jour toutes les applications ?",
|
||||
|
@ -220,10 +218,10 @@
|
|||
"app_no_actions": "Cette application ne possède aucune action",
|
||||
"confirm_install_app_lowquality": "Avertissement : cette application peut fonctionner mais n’est pas bien intégrée dans YunoHost. Certaines fonctionnalités telles que l’authentification unique et la sauvegarde/restauration pourraient ne pas être disponibles.",
|
||||
"confirm_install_app_inprogress": "AVERTISSEMENT ! Cette application est encore expérimentale et risque de casser votre système ! Vous ne devriez probablement PAS l’installer si vous ne savez pas ce que vous faites. Voulez-vous vraiment prendre ce risque ?",
|
||||
"error_connection_interrupted": "Le serveur a fermé la connexion au lieu d’y répondre. Est-ce que nginx ou yunohost-api ont été redémarrés ou arrêtés pour une raison quelconque?",
|
||||
"error_connection_interrupted": "Le serveur a fermé la connexion au lieu d’y répondre. Est-ce que NGINX ou yunohost-api ont été redémarrés ou arrêtés pour une raison quelconque ?",
|
||||
"experimental_warning": "Attention : cette fonctionnalité est expérimentale et ne doit pas être considérée comme stable, vous ne devriez pas l’utiliser à moins que vous ne sachiez ce que vous faites...",
|
||||
"good_practices_about_admin_password": "Vous êtes maintenant sur le point de définir un nouveau mot de passe administrateur. Le mot de passe doit comporter au moins 8 caractères — bien qu’il soit recommandé d’utiliser un mot de passe plus long (c’est-à-dire une phrase secrète) et/ou d’utiliser différents types de caractères (majuscules, minuscules, chiffres et caractères spéciaux).",
|
||||
"good_practices_about_user_password": "Vous êtes maintenant sur le point de définir un nouveau mot de passe pour l'utilisateur. Le mot de passe doit comporter au moins 8 caractères - bien qu’il soit recommandé d’utiliser un mot de passe plus long (c’est-à-dire une phrase secrète) et/ou d’utiliser différents types de caractères tels que : majuscules, minuscules, chiffres et caractères spéciaux.",
|
||||
"good_practices_about_admin_password": "Vous êtes sur le point de définir un nouveau mot de passe administrateur. Le mot de passe doit comporter au moins 8 caractères - bien qu'il soit recommandé d'utiliser un mot de passe plus long (c'est-à-dire une phrase secrète) et/ou d'utiliser différents types de caractères (majuscules, minuscules, chiffres et caractères spéciaux).",
|
||||
"good_practices_about_user_password": "Vous êtes sur le point de définir un nouveau mot de passe pour l'utilisateur. Le mot de passe doit comporter au moins 8 caractères - bien qu’il soit recommandé d’utiliser un mot de passe plus long (c’est-à-dire une phrase secrète) et/ou d’utiliser différents types de caractères tels que : majuscules, minuscules, chiffres et caractères spéciaux.",
|
||||
"only_working_apps": "Applications fonctionnelles uniquement",
|
||||
"logs": "Journaux",
|
||||
"logs_operation": "Opérations effectuées sur le système avec YunoHost",
|
||||
|
@ -242,15 +240,15 @@
|
|||
"logs_share_with_yunopaste": "Partager les logs avec YunoPaste",
|
||||
"logs_more": "Afficher plus de lignes",
|
||||
"unmaintained": "Non maintenue",
|
||||
"purge_user_data_checkbox": "Purger les données de {name}? (Cela supprimera toutes les données de son répertoire ainsi que ses courriels)",
|
||||
"purge_user_data_checkbox": "Purger les données de {name} ? (Cela supprimera toutes les données de son répertoire ainsi que ses emails)",
|
||||
"purge_user_data_warning": "La purge des données de l’utilisateur n’est pas réversible. Assurez-vous de savoir ce que vous faites !",
|
||||
"version": "Version",
|
||||
"confirm_update_system": "Voulez-vous vraiment mettre à jour tous les paquets système ?",
|
||||
"app_state_inprogress_explanation": "Le responsable de cette application a déclaré que cette application n'est pas encore prête pour une utilisation en production. ATTENTION !",
|
||||
"app_state_notworking_explanation": "Le responsable de cette application l'a décrite comme 'non fonctionnelle'. ATTENTION : SON INSTALLATION POURRAIT CASSER VOTRE SYSTÈME !",
|
||||
"app_state_inprogress_explanation": "Le mainteneur de cette application précise qu'elle n'est pas encore prête à être utilisée en production. SOYEZ PRUDENTS !",
|
||||
"app_state_notworking_explanation": "Le mainteneur de cette application l'a décrite comme \"non fonctionnelle\". ATTENTION : SON INSTALLATION POURRAIT CASSER VOTRE SYSTÈME !",
|
||||
"app_state_highquality": "bonne qualité",
|
||||
"app_state_highquality_explanation": "Cette application est bien intégrée à YunoHost. Elle a été (et est !) revue par l'équipe applicative de YunoHost. On peut s'attendre à ce qu'elle soit sûre et maintenue sur le long terme.",
|
||||
"app_state_working_explanation": "Le responsable de cette application l'a déclarée comme 'fonctionnelle'. Cela signifie qu'elle doit fonctionner (voir son niveau d'intégration) mais n'est pas nécessairement revue, elle peut encore contenir des bugs ou bien n'est pas entièrement intégrée à YunoHost.",
|
||||
"app_state_highquality_explanation": "Cette application est bien intégrée à YunoHost depuis au moins un an.",
|
||||
"app_state_working_explanation": "Le mainteneur a déclarée cette application comme \"fonctionnelle\". Cela signifie qu'elle doit fonctionner mais n'est pas nécessairement vérifiée (voir le niveau d'intégration des applications), elle peut encore contenir des bugs ou bien ne pas être entièrement intégrée à YunoHost.",
|
||||
"hook_conf_ynh_currenthost": "Domaine principal actuellement utilisé",
|
||||
"license": "Licence",
|
||||
"only_highquality_apps": "Seulement les applications de bonne qualité",
|
||||
|
@ -298,21 +296,21 @@
|
|||
"confirm_service_restart": "Êtes-vous certain de vouloir redémarrer {name} ?",
|
||||
"restart": "Redémarrer",
|
||||
"unmaintained_details": "Cette application n'a pas été mise à jour depuis un bon moment et le responsable précédent est parti ou n'a pas le temps de maintenir cette application. N'hésitez pas à consulter le référentiel des applications pour apporter votre aide",
|
||||
"group_explain_visitors_needed_for_external_client": "Veillez à ce que certaines applications soient autorisées pour les visiteurs si vous avez l'intention de les utiliser avec des clients externes. Par exemple, c'est le cas pour Nextcloud si vous souhaitez avoir l'intention d'utiliser un client de synchronisation sur votre smartphone ou ordinateur de bureau.",
|
||||
"group_explain_visitors_needed_for_external_client": "Veillez à ce que certaines applications soient autorisées pour les visiteurs si vous avez l'intention de les utiliser avec des clients externes. Par exemple, c'est le cas pour Nextcloud si vous souhaitez utiliser un client de synchronisation sur votre smartphone ou ordinateur de bureau.",
|
||||
"issues": "{count} problèmes",
|
||||
"operation_failed_explanation": "L'opération a échoué ! Veuillez-nous excuser pour ça :( Vous pouvez essayer de <a href='https://yunohost.org/help'>demander de l'aide</a>. Merci de fournir *le log complet* de l'opération pour les personnes qui vont vous aider. Vous pouvez cliquer sur le bouton vert 'Partager avec Yunopaste'. Quand vous partagez les logs, YunoHost essaie automatiquement d'anonymiser les informations privées comme le nom de domaine et l'adresses IP.",
|
||||
"diagnosis_explanation": "La fonctionnalité de diagnostic va tenter de trouver certains problèmes communs sur différents aspects de votre serveur pour être sûr que tout fonctionne normalement. Le diagnostic sera également effectué deux fois par jour et enverra un courriel à l'administrateur si des erreurs sont détectées. À noter que certains tests ne seront pas montrés si vous n'utilisez pas certaines fonctions spécifiques (XMPP, par exemple) ou s'ils échouent à cause d'une configuration trop complexe. Dans ce cas, et si vous savez ce que vous avez modifié, vous pouvez ignorer les problèmes et les avertissements correspondantes.",
|
||||
"pending_migrations": "Il y a des migrations en suspens qui attentent d'être exécutées. Veuillez aller dans <a href='#/tools/migrations'>Outils > Migrations</a> pour les exécuter.",
|
||||
"tip_about_user_email": "Les utilisateurs sont créés avec une adresse e-mail associée (et un compte XMPP) au format username@domain.tld. Des alias d'email et des transferts d'emails supplémentaires peuvent être ajoutés ultérieurement par l'administrateur et l'utilisateur.",
|
||||
"pending_migrations": "Certaines migrations en suspens attendent d'être exécutées. Veuillez aller dans <a href='#/tools/migrations'>Outils > Migrations</a> pour les exécuter.",
|
||||
"tip_about_user_email": "Les utilisateurs sont créés avec une adresse email associée (et un compte XMPP) au format username@domain.tld. Des alias d'email et des transferts d'emails supplémentaires peuvent être ajoutés ultérieurement par l'administrateur et l'utilisateur.",
|
||||
"logs_suboperations": "Sous-opérations",
|
||||
"permission_show_tile_enabled": "Visible en tuile dans le portail utilisateur",
|
||||
"permission_main": "Permission principale",
|
||||
"permission_main": "Label principal",
|
||||
"permission_corresponding_url": "URL correspondante",
|
||||
"app_manage_label_and_tiles": "Gérer les étiquettes et les tuiles",
|
||||
"user_emailforward_add": "Ajouter une adresse mail de redirection",
|
||||
"user_emailaliases_add": "Ajouter un alias de courriel",
|
||||
"unknown": "Inconnu",
|
||||
"traceback": "Trace",
|
||||
"traceback": "Retraçage",
|
||||
"tools_webadmin_settings": "Paramètres de l'administration web",
|
||||
"tools_webadmin": {
|
||||
"transitions": "Animations de transition entre les pages",
|
||||
|
@ -327,7 +325,7 @@
|
|||
"tools_power_up": "Votre serveur semble être accessible, vous pouvez maintenant essayer de vous connecter.",
|
||||
"search": {
|
||||
"not_found": "Il y a des {items} qui correspondent à vos critères.",
|
||||
"for": "Rechercher {items} ..."
|
||||
"for": "Rechercher {items}..."
|
||||
},
|
||||
"readme": "Lisez-moi",
|
||||
"postinstall_set_password": "Définir le mot de passe d'administration",
|
||||
|
@ -343,7 +341,7 @@
|
|||
"migrations_disclaimer_not_checked": "Cette migration nécessite que vous preniez connaissance de sa décharge de responsabilité avant de l'exécuter.",
|
||||
"migrations_disclaimer_check_message": "J'ai lu et compris cette décharge de responsabilité",
|
||||
"mailbox_quota_example": "700 M correspond à un CD, 4 700 M correspond à un DVD",
|
||||
"items_verbose_count": "Il y a {items}.",
|
||||
"items_verbose_count": "Il y a des {items}.",
|
||||
"items": {
|
||||
"users": "aucun utilisateur | utilisateur | {c} utilisateurs",
|
||||
"services": "aucun service | service | {c} services",
|
||||
|
@ -352,16 +350,19 @@
|
|||
"groups": "aucun groupe | groupe | {c} groupes",
|
||||
"domains": "aucun domaine | domaine | {c} domaines",
|
||||
"backups": "aucune sauvegarde | sauvegarde | {c} sauvegardes",
|
||||
"apps": "aucune application | app | {c} apps"
|
||||
"apps": "aucune application | app | {c} apps",
|
||||
"permissions": "pas d'autorisations | permission | {c} autorisations"
|
||||
},
|
||||
"history": {
|
||||
"methods": {
|
||||
"DELETE": "effacer",
|
||||
"DELETE": "supprimer",
|
||||
"PUT": "modifier",
|
||||
"POST": "créer/exécuter"
|
||||
"POST": "créer/exécuter",
|
||||
"GET": "lire"
|
||||
},
|
||||
"last_action": "Dernière action :",
|
||||
"title": "Historique"
|
||||
"title": "Historique",
|
||||
"is_empty": "Rien dans l'historique pour le moment."
|
||||
},
|
||||
"form_errors": {
|
||||
"required": "Ce champ est obligatoire.",
|
||||
|
@ -407,18 +408,22 @@
|
|||
"app_choose_category": "Choisissez une catégorie",
|
||||
"app_actions_label": "Exécuter les actions",
|
||||
"app_actions": "Actions",
|
||||
"api_waiting": "Attente de la réponse du serveur ...",
|
||||
"api_waiting": "Attente de la réponse du serveur...",
|
||||
"api_errors_titles": {
|
||||
"APIConnexionError": "Yunohost a rencontré une erreur de connexion",
|
||||
"APINotRespondingError": "L'API Yunohost ne répond pas",
|
||||
"APIInternalError": "Yunohost a rencontré une erreur interne",
|
||||
"APIBadRequestError": "Yunohost a rencontré une erreur",
|
||||
"APIError": "Yunohost a rencontré une erreur inattendue"
|
||||
"APIConnexionError": "YunoHost a rencontré une erreur de connexion",
|
||||
"APINotRespondingError": "L'API YunoHost ne répond pas",
|
||||
"APIInternalError": "YunoHost a rencontré une erreur interne",
|
||||
"APIBadRequestError": "YunoHost a rencontré une erreur",
|
||||
"APIError": "YunoHost a rencontré une erreur inattendue",
|
||||
"APINotFoundError": "L'API YunoHost n'a pas pu trouver de chemin"
|
||||
},
|
||||
"api_error": {
|
||||
"sorry": "Vraiment désolé de cela.",
|
||||
"info": "Les informations suivantes peuvent être utiles à la personne qui vous aide :",
|
||||
"help": "Vous devez chercher de l'aide sur <a href=\"https://forum.yunohost.org/\"> le forum</a> ou <a href=\"https://chat.yunohost.org/\">le chat</a> pour corriger la situation, ou signaler le bug sur <a href=\"https://github.com/YunoHost/issues\"> le bugtracker</a>."
|
||||
"help": "Vous devez chercher de l'aide sur <a href=\"https://forum.yunohost.org/\"> le forum</a> ou <a href=\"https://chat.yunohost.org/\">le chat</a> pour corriger la situation, ou signaler le bug sur <a href=\"https://github.com/YunoHost/issues\"> le bugtracker</a>.",
|
||||
"error_message": "Message d'erreur :",
|
||||
"view_error": "Afficher l'erreur",
|
||||
"server_said": "Pendant le traitement de l'action, le serveur a dit :"
|
||||
},
|
||||
"address": {
|
||||
"local_part_description": {
|
||||
|
@ -429,5 +434,97 @@
|
|||
"email": "Choisissez un domaine pour votre courrier électronique.",
|
||||
"domain": "Choisissez un domaine."
|
||||
}
|
||||
}
|
||||
},
|
||||
"api_not_found": "L'administrateur a essayé d'accéder à quelque chose qui n'existe pas.",
|
||||
"api": {
|
||||
"query_status": {
|
||||
"error": "Échec",
|
||||
"success": "Terminé avec succès",
|
||||
"warning": "Terminé avec succès avec des erreurs ou des alertes",
|
||||
"pending": "En cours"
|
||||
},
|
||||
"processing": "Le serveur traite l'action..."
|
||||
},
|
||||
"go_back": "Revenir",
|
||||
"postinstall": {
|
||||
"force": "Forcer la post-installation"
|
||||
},
|
||||
"human_routes": {
|
||||
"users": {
|
||||
"update": "Mettre à jour l'utilisateur '{name}'",
|
||||
"delete": "Supprimer l'utilisateur '{name}'",
|
||||
"create": "Créer l'utilisateur '{name}'"
|
||||
},
|
||||
"upgrade": {
|
||||
"app": "Mettre à jour l'application '{app}'",
|
||||
"apps": "Mettre à jour toutes les applications",
|
||||
"system": "Mettre à jour le système"
|
||||
},
|
||||
"update": "Rechercher les mises à jour",
|
||||
"shutdown": "Arrêter le serveur",
|
||||
"share_logs": "Générer le lien pour le journal '{name}'",
|
||||
"services": {
|
||||
"stop": "Arrêter le service '{name}'",
|
||||
"start": "Démarrer le service '{name}'",
|
||||
"restart": "Redémarrer le service '{name}'"
|
||||
},
|
||||
"reboot": "Redémarrer le serveur",
|
||||
"postinstall": "Exécuter la post-installation",
|
||||
"permissions": {
|
||||
"remove": "Supprimer l'accès '{name}' à '{perm}'",
|
||||
"add": "Autoriser '{name}' à accéder à '{perm}'"
|
||||
},
|
||||
"migrations": {
|
||||
"skip": "Ignorer les migrations",
|
||||
"run": "Exécuter les migrations"
|
||||
},
|
||||
"groups": {
|
||||
"remove": "Supprimer '{user}' du groupe '{name}'",
|
||||
"add": "Ajouter '{user}' au groupe '{name}'",
|
||||
"delete": "Supprimer le groupe '{name}'",
|
||||
"create": "Créer le groupe '{name}'"
|
||||
},
|
||||
"firewall": {
|
||||
"upnp": "{action} UPnP",
|
||||
"ports": "{action} port {port} ({protocol}, {connection})"
|
||||
},
|
||||
"domains": {
|
||||
"set_default": "Définir '{name}' comme domaine par défaut",
|
||||
"revert_to_selfsigned": "Revenir au certificat auto-signé pour '{name}'",
|
||||
"regen_selfsigned": "Renouveler le certificat auto-signé pour '{name}'",
|
||||
"manual_renew_LE": "Renouveler le certificat pour '{name}'",
|
||||
"install_LE": "Installer le certificat pour '{name}'",
|
||||
"delete": "Supprimer le domaine '{name}'",
|
||||
"add": "Ajouter le domaine '{name}'"
|
||||
},
|
||||
"diagnosis": {
|
||||
"unignore": {
|
||||
"warning": "Ne pas ignorer un avertissement",
|
||||
"error": "Ne pas ignorer une erreur"
|
||||
},
|
||||
"run_specific": "Lancer le diagnostic '{description}'",
|
||||
"run": "Exécuter le diagnostic",
|
||||
"ignore": {
|
||||
"warning": "Ignorer un avertissement",
|
||||
"error": "Ignorer une erreur"
|
||||
}
|
||||
},
|
||||
"backups": {
|
||||
"restore": "Restaurer la sauvegarde '{name}'",
|
||||
"delete": "Supprimer la sauvegarde '{name}'",
|
||||
"create": "Créer une sauvegarde"
|
||||
},
|
||||
"apps": {
|
||||
"update_config": "Mise à jour de la configuration de l'application '{name}'",
|
||||
"uninstall": "Désinstaller l'application '{name}'",
|
||||
"perform_action": "Exécuter l'action '{action}' de l'application '{name}'",
|
||||
"set_default": "Rediriger la racine du domaine '{domain}' vers '{name}'",
|
||||
"install": "Installer l'application '{name}'",
|
||||
"change_url": "Modifier l'URL d'accès de '{name}'",
|
||||
"change_label": "Changer le libellé de '{prevName}' par '{nextName}'"
|
||||
},
|
||||
"adminpw": "Changer le mot de passe administrateur"
|
||||
},
|
||||
"items_verbose_items_left": "Il reste des {items}.",
|
||||
"confirm_group_add_access_permission": "Voulez-vous vraiment accorder l'accès à {perm} à {name} ? Un tel accès augmente considérablement la surface d'attaque si {name} se trouve être une personne malveillante. Vous ne devriez le faire que si vous FAITES CONFIANCE à cette personne/ ce groupe."
|
||||
}
|
||||
|
|
528
app/src/i18n/locales/gl.json
Normal file
528
app/src/i18n/locales/gl.json
Normal file
|
@ -0,0 +1,528 @@
|
|||
{
|
||||
"cancel": "Cancelar",
|
||||
"ok": "Ok",
|
||||
"password": "Contrasinal",
|
||||
"api_errors_titles": {
|
||||
"APINotRespondingError": "A API de YunoHost non está a responder",
|
||||
"APINotFoundError": "A API de YunoHost non puido atopar unha ruta",
|
||||
"APIInternalError": "YunoHost atopou un erro interno",
|
||||
"APIBadRequestError": "YunoHost atopou un erro",
|
||||
"APIError": "YunoHost atopou un erro non agardado",
|
||||
"APIConnexionError": "YunoHost atopou un fallo de conexión"
|
||||
},
|
||||
"api_error": {
|
||||
"view_error": "Ver erro",
|
||||
"sorry": "Sentimos gran pesar por isto.",
|
||||
"server_said": "Ao procesar a acción o servidor respondeu:",
|
||||
"info": "A seguinte información podería ser útil para a persoa que che axude:",
|
||||
"help": "Podes buscar axuda no <a href=\"https://forum.yunohost.org/\">foro</a> ou <a href=\"https://chat.yunohost.org/\">no chat</a> para arranxar a situación, ou informar do fallo no <a href=\"https://github.com/YunoHost/issues\">seguimento de fallos</a>.",
|
||||
"error_message": "Mensaxe do erro:"
|
||||
},
|
||||
"api": {
|
||||
"query_status": {
|
||||
"warning": "Completada correctamente con erros ou alertas",
|
||||
"success": "Completada correctamente",
|
||||
"pending": "En progreso",
|
||||
"error": "Sen éxito"
|
||||
},
|
||||
"processing": "O servidor está procesando a acción..."
|
||||
},
|
||||
"all": "Todo",
|
||||
"administration_password": "Contrasinal de administración",
|
||||
"address": {
|
||||
"local_part_description": {
|
||||
"domain": "Elixe un subdominio.",
|
||||
"email": "Elixe a parte local para o teu email."
|
||||
},
|
||||
"domain_description": {
|
||||
"email": "Elixe un dominio para o teu email.",
|
||||
"domain": "Elixe un dominio."
|
||||
}
|
||||
},
|
||||
"add": "Engadir",
|
||||
"action": "Acción",
|
||||
"confirm_firewall_disallow": "Tes a certeza de querer pechar o porto {port} (protocolo: {protocol}, conexión: {connection})",
|
||||
"confirm_firewall_allow": "Tes a certeza de querer abrir o porto {port} (protocolo: {protocol}, conexión: {connection})",
|
||||
"confirm_delete": "Tes a certeza de querer eliminar {name}?",
|
||||
"confirm_change_maindomain": "Tes a certeza de querer cambiar o dominio principal?",
|
||||
"confirm_app_default": "Tes a certeza de querer establecer esta como a app por defecto?",
|
||||
"confirm_app_change_url": "Tes a certeza de querer cambiar o URL de acceso á app?",
|
||||
"configuration": "Configuración",
|
||||
"common": {
|
||||
"lastname": "Apelido",
|
||||
"firstname": "Nome"
|
||||
},
|
||||
"code": "Código",
|
||||
"close": "Pechar",
|
||||
"check": "Comprobar",
|
||||
"catalog": "Catálogo",
|
||||
"both": "Ambos",
|
||||
"begin": "Comezar",
|
||||
"backup_new": "Nova copia de apoio",
|
||||
"backup_create": "Crear copia de apoio",
|
||||
"backup_content": "Contido da copia de apoio",
|
||||
"backup_action": "Copia de apoio",
|
||||
"backup": "Copia de apoio",
|
||||
"archive_empty": "Arquivo baleiro",
|
||||
"applications": "Aplicacións",
|
||||
"app_state_working_explanation": "As persoas encargadas desta app din que 'funciona'. Significa que debería ser funcional (a nivel aplicación) pero non necesariamente foi revisada por pares, e podería aínda ter algún problemiña ou non estar completamente integrada en YunoHost.",
|
||||
"app_state_working": "a funcionar",
|
||||
"app_state_highquality_explanation": "Esta app está ben integrada en YunoHost desde hai polo menos un ano.",
|
||||
"app_state_highquality": "alta calidade",
|
||||
"app_state_lowquality_explanation": "Esta app podería funcionar, pero con algún problema, ou non completamente integrada en YunoHost, ou non respectando as boas prácticas.",
|
||||
"app_state_lowquality": "baixa calidade",
|
||||
"app_state_notworking_explanation": "As persoas encargadas desta app din que 'non funciona'. PODERÍA ESTRAGAR O TEU SISTEMA!",
|
||||
"app_state_notworking": "non funciona",
|
||||
"app_state_inprogress": "aínda non funciona",
|
||||
"app_show_categories": "Mostrar categorías",
|
||||
"app_no_actions": "Esta aplicación non ten ningunha acción",
|
||||
"app_make_default": "Establecer por defecto",
|
||||
"app_install_parameters": "Axustes da instalación",
|
||||
"app_install_custom_no_manifest": "Non hai ficheiro manifest.json",
|
||||
"app_info_uninstall_desc": "Eliminar esta aplicación.",
|
||||
"app_info_change_url_disabled_tooltip": "Aínda non se implementou esta función para a app",
|
||||
"app_info_changeurl_desc": "Cambiar o URL de acceso a esta aplicación (domino e/ou ruta).",
|
||||
"app_info_default_desc": "Redireccionar a raíz do dominio a esta aplicación ({domain}).",
|
||||
"app_info_access_desc": "Gupos / usuarias que actualmente teñen acceso a esta app:",
|
||||
"app_config_panel_no_panel": "Esta aplicación non ten ningunha configuración dispoñible",
|
||||
"app_config_panel_label": "Configurar esta app",
|
||||
"app_config_panel": "Configurar panel",
|
||||
"app_choose_category": "Elixe unha categoría",
|
||||
"app_actions_label": "Realizar accións",
|
||||
"app_actions": "Accións",
|
||||
"api_waiting": "Agardando pola resposta do servidor...",
|
||||
"api_not_responding": "A API de YunoHost non responde. Pode que 'yunohost-api' esté caída ou esté reiniciando?",
|
||||
"api_not_found": "Semella que o web-admin intentou solicitar algún recurso que non existe.",
|
||||
"all_apps": "Tódalas apps",
|
||||
"domain_delete_longdesc": "Eliminar este domino",
|
||||
"domain_default_longdesc": "Este é o teu dominio por defecto.",
|
||||
"domain_default_desc": "O dominio por defecto é o dominio de conexión onde se conectarán as usuarias.",
|
||||
"domain_add_panel_without_domain": "Non teño un nome de dominio…",
|
||||
"domain_add_panel_with_domain": "Xa teño un nome de dominio…",
|
||||
"domain_add_dyndns_forbidden": "Xa estás subscrita a un dominio DynDNS, podes pedir no foro que se elimine o teu dominio DynDNS <a href='//forum.yunohost.org/t/nohost-domain-recovery-suppression-de-domaine-en-nohost-me-noho-st-et-ynh-fr/442'>no tema dedicado</a>.",
|
||||
"domain_add_dyndns_doc": "... e quero un servizo de DNS dynamico.",
|
||||
"domain_add_dns_doc": "... e configurei correctamente <a href='//yunohost.org/dns_config' target='_blank'>as zonas DNS</a>.",
|
||||
"domain_add": "Engadir dominio",
|
||||
"dns": "DNS",
|
||||
"disabled": "Desactivado",
|
||||
"disable": "Desactivar",
|
||||
"run_first_diagnosis": "Executar diagnóstico inicial",
|
||||
"diagnosis_explanation": "A ferramenta de diagnóstico intentará identificar problemas habituais en diferentes ámbitos do teu servidor para asegurarse de que todo funciona como debe. O diagnóstico realízase automáticamente un par de veces ao día e envíase un email á usuaria administradora se aparecen problemas. Ten en conta que algúns test poderían non ser relevantes se non utilizas dito servizo (por exemplo XMPP) ou poderían fallar se realizas unha configuración moi complexa. Nestos casos, e se sabes o que estás a facer, podes ignorar estos avisos ou problemas.",
|
||||
"diagnosis_first_run": "A ferramenta de diagnóstico intentará identificar problemas habituais en diferentes ámbitos do teu servidor para ter a certeza de que todo funciona como debe. Non te preocupes se ves moitos erros cando finalizas a configuración do servidor: para iso está a ferramenta, para axudarche a identificar os problemas e guiarte coa solución. O diagnóstico execútase automáticamente un par de veces ao día e envíase un email á usuaria administradora se se atopan problemas.",
|
||||
"diagnosis_experimental_disclaimer": "Ten en conta que a ferramenta de diagnóstico aínda é experimental e en continua mellora, podería non ser totalmente fiable.",
|
||||
"diagnosis": "Diagnóstico",
|
||||
"domain_dns_conf_is_just_a_recommendation": "Esta páxina amósache a configuración *recomendada*. *Non configura* os rexistros DNS por ti. É responsabilidade túa configurar as zonas DNS seguindo esta recomendación na web da empresa onde rexistraches o dominio.",
|
||||
"details": "Detalles",
|
||||
"description": "Descrición",
|
||||
"delete": "Eliminar",
|
||||
"dead": "Inactiva",
|
||||
"day_validity": " Caducada | 1 día | {count} días",
|
||||
"custom_app_install": "Instalar app personalizada",
|
||||
"created_at": "Creado o",
|
||||
"connection": "Conexión",
|
||||
"confirm_reboot_action_shutdown": "Tes a certeza de querer apagar o teu servidor?",
|
||||
"confirm_reboot_action_reboot": "Tes a certeza de querer reiniciar o teu servidor?",
|
||||
"confirm_upnp_disable": "Tes a certeza de querer desactivar UPnP?",
|
||||
"confirm_upnp_enable": "Tes a certeza de querer activar UPnP?",
|
||||
"confirm_update_specific_app": "Tes a certeza de querer actualizar {app}?",
|
||||
"confirm_update_system": "Tes a certeza de querer actualizar tódolos paquetes do sistema?",
|
||||
"confirm_update_apps": "Tes a certeza de querer actualizar tódalas aplicacións?",
|
||||
"confirm_uninstall": "Tes a certeza de querer desinstalar {name}?",
|
||||
"confirm_service_stop": "Tes a certeza de querer deter {name}?",
|
||||
"confirm_service_start": "Tes a certeza de querer iniciar {name}?",
|
||||
"confirm_service_restart": "Tes a certeza de querer reiniciar {name}?",
|
||||
"confirm_restore": "Tes a certeza de querer restaurar {name}?",
|
||||
"confirm_postinstall": "Vas a iniciar o proceso post-instalación no dominio {domain}. Pode demorar uns minutos, *non interrumpas a operación*.",
|
||||
"confirm_migrations_skip": "Non se recomenda omitir as migracións. Tes a certeza de querer facer isto?",
|
||||
"confirm_install_app_inprogress": "AVISO! Esta aplicación aínda é experimental (pode que aínda non sexa funcional) e probablemente estrague o teu sistema! Probablemente NON DEBERÍAS instalala a menos que sepas o que fas. Estás preparada para asumir este risco?",
|
||||
"confirm_install_app_lowquality": "Aviso: esta aplicación seguramente funcione pero non está completamente integrada en YunoHost. Algunhas características como a conexión unificada e copia/restauración poderían non estar dispoñibles.",
|
||||
"confirm_app_install": "Tes a certeza de querer instalar esta aplicación?",
|
||||
"confirm_install_domain_root": "Tes a certeza de querer instalar esta aplicación en '/'? Non poderás instalar ningunha outra app en {domain}",
|
||||
"confirm_install_custom_app": "AVISO! Ao instalar aplicacións de terceiras partes podes comprometer a integridade e seguridade do teu sistema. Probablemente NON deberías instalalas a non ser que sepas o que fas. Estás preparada para asumir ese risco?",
|
||||
"confirm_group_add_access_permission": "Tes a certeza de querer concederlle a {name} acceso a {perm}? Este nivel de acceso aumenta de xeito significativo o risco de ataques se {name} resulta ser unha persoa maliciosa. Deberías facer isto só se CONFÍAS nesta persoa/grupo.",
|
||||
"app_state_inprogress_explanation": "As responsables desta app declaran que esta aplicación non está lista para usar en produción. TEN COIDADO!",
|
||||
"permission_show_tile_enabled": "Visible como tesela no portal da usuaria",
|
||||
"app_manage_label_and_tiles": "Xestionar etiqueta e teselas",
|
||||
"good_practices_about_admin_password": "Vas definir un novo contrasinal de administración. O contrasinal debe ter polo menos 8 caracteres - aínda que é mellor que teña máis (por exemplo unha frase de paso) e/ou utilices varios tipos de caracteres (maiúsculas, minúsculas, números e caracteres especiais).",
|
||||
"go_back": "Volver",
|
||||
"from_to": "de {0} a {1}",
|
||||
"form_input_example": "Exemplo: {example}",
|
||||
"form_errors": {
|
||||
"required": "O campo é requerido.",
|
||||
"passwordMatch": "Os contrasinais non concordan.",
|
||||
"passwordLenght": "O contrasinal debe ter polo menos 8 caracteres.",
|
||||
"number": "Ten que ser un número.",
|
||||
"notInUsers": "A usuaria '{value}' xa existe.",
|
||||
"minValue": "O valor debe ser un número igual ou superior a {min}.",
|
||||
"name": "Os nomes non inclúen caracteres especiais excepto <code> ,.'-</code>",
|
||||
"githubLink": "A URL debe ser unha ligazón de Github a un repositorio",
|
||||
"emailForward": "Email de reenvío non válido: ten que ser alfanumérico e caracteres <code>_.-+</code> (ex. menganito+etiqueta@exemplo.com, m3ng4ni7-o+etiqueta@exemplo.com)",
|
||||
"email": "Email non válido: debe ser alfanumércio e caracteres <code>_.-</code> (ex. menganito@exemplo.com, p4c-0@exemplo.com)",
|
||||
"dynDomain": "Nome de dominio non válido: Só pode ter caracteres alfanuméricos en minúscula e barra",
|
||||
"domain": "Nome de dominio non válido: Só pode ser alfanumérico en minúsculas, punto e barra",
|
||||
"between": "O valor ten que estar entre {min} e {max}.",
|
||||
"alphalownum_": "O valor só pode ter caracteres alfanuméricos en minúscula e trazos baixos.",
|
||||
"alpha": "O valor só pode ter caracteres alfanuméricos."
|
||||
},
|
||||
"footer": {
|
||||
"donate": "Doa",
|
||||
"help": "Precisas axuda?",
|
||||
"documentation": "Documentación"
|
||||
},
|
||||
"footer_version": "Grazas a <a href='https://yunohost.org'>YunoHost</a> {version} ({repo}).",
|
||||
"firewall": "Cortalumes",
|
||||
"experimental_warning": "Aviso: esta característica é experimental e non se considera estable, non deberías utilizala a non ser que saibas o que estás a facer.",
|
||||
"experimental": "Experimental",
|
||||
"everything_good": "Todo ben!",
|
||||
"error_connection_interrupted": "O servidor pechou a conexión no lugar de responder. Detivéronse ou reiniciáronse por algunha razón nginx ou yunohost-api?",
|
||||
"error_server_unexpected": "Erro do servidor non agardado",
|
||||
"error_modify_something": "Deberías cambiar algo",
|
||||
"error": "Erro",
|
||||
"enabled": "Desactivado",
|
||||
"enable": "Activar",
|
||||
"download": "Descargar",
|
||||
"domains": "Dominios",
|
||||
"domain_visit_url": "Vai a {url}",
|
||||
"domain_visit": "Visitar",
|
||||
"domain_name": "Nome de dominio",
|
||||
"domain_dns_longdesc": "Ver configuración DNS",
|
||||
"domain_dns_config": "Configuración DNS",
|
||||
"domain_delete_forbidden_desc": "Non podes eliminar '{domain}' porque é o dominio por defecto, tes que elexir outro dominio (ou <a href='#/domains/add'>engadir un novo</a>) e configuralo como dominio por defecto antes de poder eliminar este.",
|
||||
"items": {
|
||||
"groups": "sen grupos | grupo | {c} grupos",
|
||||
"domains": "sen dominios | dominio | {c} dominios",
|
||||
"backups": "sen copia | copia | {c} copias de apoio",
|
||||
"apps": "sen apps | app | {c} apps",
|
||||
"users": "sen usuarias | usuaria | {c} usuarias",
|
||||
"services": "sen servizos | servizo | {c} servizos",
|
||||
"permissions": "sen permisos | permiso | {c} permisos",
|
||||
"logs": "sen rexistros | rexistro | {c} rexistros",
|
||||
"installed_apps": "sen apps instaladas | app instalada | {c} apps instaladas"
|
||||
},
|
||||
"issues": "{count} asuntos",
|
||||
"ipv6": "IPv6",
|
||||
"ipv4": "IPv4",
|
||||
"installed": "Instalada",
|
||||
"installation_complete": "Instalación completa",
|
||||
"install_time": "Tempo de instalación",
|
||||
"install_name": "Instalar {id}",
|
||||
"install": "Instalar",
|
||||
"infos": "Info",
|
||||
"ignored": "{count} ignorados",
|
||||
"ignore": "Ignorar",
|
||||
"id": "ID",
|
||||
"hook_data_xmpp_desc": "Configuracións de salas e usuarias e ficheiros subidos",
|
||||
"hook_data_xmpp": "Datos XMPP",
|
||||
"hook_data_mail_desc": "Emails en bruto almacenados no servidor",
|
||||
"hook_data_mail": "Email",
|
||||
"hook_data_home_desc": "Datos da usuaria localizados en /home/USUARIA",
|
||||
"hook_data_home": "Datos da usuaria",
|
||||
"hook_conf_manually_modified_files": "Configuracións realizadas manualmente",
|
||||
"hook_conf_ynh_settings": "Configuracións de YunoHost",
|
||||
"hook_conf_ynh_certs": "Certificados SSL",
|
||||
"hook_conf_ldap": "Base de datos de usuarias",
|
||||
"hook_adminjs_group_configuration": "Configuracións do sistema",
|
||||
"home": "Inicio",
|
||||
"history": {
|
||||
"methods": {
|
||||
"PUT": "modificar",
|
||||
"POST": "crear/executar",
|
||||
"GET": "ler",
|
||||
"DELETE": "eliminar"
|
||||
},
|
||||
"last_action": "Última acción:",
|
||||
"title": "Historial",
|
||||
"is_empty": "Por agora non hai nada no historial."
|
||||
},
|
||||
"permissions": "Permisos",
|
||||
"groups_and_permissions_manage": "Xestionar grupos e permisos",
|
||||
"groups_and_permissions": "Grupos e permisos",
|
||||
"group_specific_permissions": "Permisos específicos da usuaria",
|
||||
"group_explain_visitors_needed_for_external_client": "Ten en conta que algunhas aplicacións precisan permitir o acceso a visitantes para poder utilizalas con clientes externos. É o caso de, por exemplo, Nextcloud se vas a utilizar un cliente de sincronización no teléfono móbil ou computadora de escritorio.",
|
||||
"group_explain_visitors": "Este é un grupo especial que representa ás persoas visitantes anónimas",
|
||||
"group_explain_all_users": "Este é un grupo especial que contén tódalas contas de usuaria do servidor",
|
||||
"group_new": "Novo grupo",
|
||||
"group_add_permission": "Engadir un permiso",
|
||||
"group_add_member": "Engadir usuaria",
|
||||
"group_format_name_help": "Podes utilizar caracteres alfanuméricos e trazo baixo",
|
||||
"group_visitors": "Visitantes",
|
||||
"group_all_users": "Todas as usuarias",
|
||||
"group_name": "Nome do grupo",
|
||||
"group": "Grupo",
|
||||
"good_practices_about_user_password": "Vas establecer un novo contrasinal de usuaria. O contrasinal debe ter polo menos 8 caracteres - aínda que é aconsellable que sexa máis longo (ex. unha frase) e/ou utilices diferentes tipos de caracteres (maiúsculas, minúsculas, números e caracteres especiais).",
|
||||
"orphaned": "Sen mantemento",
|
||||
"operations": "Operacións",
|
||||
"open": "Abrir",
|
||||
"only_decent_quality_apps": "Só apps de calidade decente",
|
||||
"only_working_apps": "Só apps que funcionan",
|
||||
"only_highquality_apps": "Só apps de alta calidade",
|
||||
"nobody": "Ninguén",
|
||||
"no": "Non",
|
||||
"next": "Seguinte",
|
||||
"myserver": "omeuservidor",
|
||||
"multi_instance": "Pode ser instalada varias veces",
|
||||
"migrations_disclaimer_not_checked": "Esta migración require que aceptes o descargo de responsabilidade antes de realizala.",
|
||||
"migrations_disclaimer_check_message": "Lin e entendín o descargo de responsabilidade",
|
||||
"migrations_no_done": "Sen migracións previas",
|
||||
"migrations_no_pending": "Sen migracións pendentes",
|
||||
"migrations_done": "Migracións anteriores",
|
||||
"migrations_pending": "Migracións pendentes",
|
||||
"migrations": "Migracións",
|
||||
"manage_users": "Xestión de usuarias",
|
||||
"manage_domains": "Xestión de dominios",
|
||||
"manage_apps": "Xestión de apps",
|
||||
"mailbox_quota_placeholder": "Escribe 0 para desactivar.",
|
||||
"mailbox_quota_example": "700M é un CD, 4700M é un DVD",
|
||||
"mailbox_quota_description": "Establece o tamaño máximo para almacenaxe de email. <br>0 para desactivar.",
|
||||
"logout": "Pechar sesión",
|
||||
"login": "Conectar",
|
||||
"local_archives": "Arquivos locais",
|
||||
"license": "Licenza",
|
||||
"last_ran": "Última execución:",
|
||||
"label_for_manifestname": "Etiqueta para {name}",
|
||||
"label": "Etiqueta",
|
||||
"items_verbose_items_left": "Restan {items}.",
|
||||
"items_verbose_count": "Hai {items}.",
|
||||
"logs_share_with_yunopaste": "Compartir rexistros con YunoPaste",
|
||||
"logs_context": "Contexto",
|
||||
"logs_path": "Ruta",
|
||||
"logs_started_at": "Inicio",
|
||||
"logs_ended_at": "Fin",
|
||||
"logs_error": "Erro",
|
||||
"logs_no_logs_registered": "Sen rexistros nesta categoría",
|
||||
"logs_app": "Rexistros de apps",
|
||||
"logs_service": "Rexistros de servizos",
|
||||
"logs_access": "Lista de accesos e vetos",
|
||||
"logs_system": "Rexistros do kernel e outros eventos de baixo nivel",
|
||||
"logs_package": "Historial da xestión de paquetes Debian",
|
||||
"logs_history": "Historial de comandos executados no sistema",
|
||||
"logs_operation": "Operacións feitas no sistema con YunoHost",
|
||||
"logs_suboperations": "Sub-operacións",
|
||||
"logs": "Rexistros",
|
||||
"placeholder": {
|
||||
"domain": "o-meu-dominio.com",
|
||||
"groupname": "Nome do grupo",
|
||||
"lastname": "Pérez",
|
||||
"firstname": "Josefa",
|
||||
"username": "pepitaperez"
|
||||
},
|
||||
"perform": "Realizar",
|
||||
"path": "Ruta",
|
||||
"password_confirmation": "Confirmación do contrasinal",
|
||||
"operation_failed_explanation": "A operación fallou! Lamentámolo :( Podes intentar <a href='https://yunohost.org/help'>pedir axuda</a>. Proporciona o *rexistro completo* da operación ás persoas que che axuden. Podes facelo premendo no botón verde 'Compartir con Yunopaste'. Ao compartir o rexistro, YunoHost intentará de xeito automático eliminar e anonimizar datos privados como nomes de dominio e IPs.",
|
||||
"others": "Outras",
|
||||
"orphaned_details": "Esta app non ten mantemento desde hai tempo. Aínda podería funcionar, pero non recibirá melloras ata que algunha persoa voluntaria se ocupe dela. Anímate a colaborar e revivila!",
|
||||
"system_packages_nothing": "Tódolos paquetes do sistema están ao día!",
|
||||
"system_apps_nothing": "Tódalas apps están ao día!",
|
||||
"system": "Sistema",
|
||||
"stop": "Deter",
|
||||
"status": "Estado",
|
||||
"start": "Iniciar",
|
||||
"skip": "Omitir",
|
||||
"since": "desde",
|
||||
"size": "Tamaño",
|
||||
"set_default": "Establecer por defecto",
|
||||
"services": "Servizos",
|
||||
"service_start_on_boot": "Executar no inicio",
|
||||
"select_none": "Elexir ningún",
|
||||
"select_all": "Elexir todo",
|
||||
"search": {
|
||||
"not_found": "Hai {items} que cumpren o teu criterio.",
|
||||
"for": "Buscar {items}..."
|
||||
},
|
||||
"save": "Gardar",
|
||||
"running": "Executando",
|
||||
"run": "Executar",
|
||||
"human_routes": {
|
||||
"users": {
|
||||
"update": "Actualizar usuaria '{name}'",
|
||||
"delete": "Eliminar usuaria '{user}'",
|
||||
"create": "Crear usuaria '{user}'"
|
||||
},
|
||||
"upgrade": {
|
||||
"app": "Actualizar a app '{app}'",
|
||||
"apps": "Actualizar tódalas apps",
|
||||
"system": "Actualizar o sistema"
|
||||
},
|
||||
"update": "Comprobar actualizacións",
|
||||
"shutdown": "Apagar o servidor",
|
||||
"share_logs": "Crear ligazón para o rexistro '{name}'",
|
||||
"services": {
|
||||
"stop": "Deter o servizo '{name}'",
|
||||
"start": "Iniciar o servizo '{name}'",
|
||||
"restart": "Reiniciar o servizo '{name}'"
|
||||
},
|
||||
"reboot": "Reiniciar o servidor",
|
||||
"postinstall": "Executar a post-instalación",
|
||||
"permissions": {
|
||||
"remove": "Retirarlle a '{name}' o acceso a '{perm}'",
|
||||
"add": "Permitirlle a '{name}' acceso a '{perm}'"
|
||||
},
|
||||
"migrations": {
|
||||
"skip": "Omitir migracións",
|
||||
"run": "Realizar migracións"
|
||||
},
|
||||
"groups": {
|
||||
"remove": "Eliminar a '{user]' do grupo '{name}'",
|
||||
"add": "Engadir '{user}' ao grupo '{name}'",
|
||||
"delete": "Eliminar grupo '{name}'",
|
||||
"create": "Crear grupo '{name}'"
|
||||
},
|
||||
"firewall": {
|
||||
"upnp": "{action} UPnP",
|
||||
"ports": "{action} porto {port} ({protocol}, {connection})"
|
||||
},
|
||||
"domains": {
|
||||
"set_default": "Establecer '{name}' como dominio por defecto",
|
||||
"revert_to_selfsigned": "Volver a certificado auto-asinado anterior para '{name}'",
|
||||
"regen_selfsigned": "Renovar certificado auto-asinado para '{name}'",
|
||||
"manual_renew_LE": "Renovar certificado para '{name}'",
|
||||
"install_LE": "Instalar certificado para '{name}'",
|
||||
"delete": "Eliminar dominio '{name}'",
|
||||
"add": "Engadir dominio '{name}'"
|
||||
},
|
||||
"diagnosis": {
|
||||
"unignore": {
|
||||
"warning": "Non ignorar aviso",
|
||||
"error": "Non ignorar erro"
|
||||
},
|
||||
"run_specific": "Realizar diagnóstico '{description}'",
|
||||
"run": "Realizar diagnóstico",
|
||||
"ignore": {
|
||||
"warning": "Ignorar un aviso",
|
||||
"error": "Ignorar un erro"
|
||||
}
|
||||
},
|
||||
"backups": {
|
||||
"restore": "Restaurar copia de apoio '{name}'",
|
||||
"delete": "Eliminar copia de apoio '{name}'",
|
||||
"create": "Crear copia de apoio"
|
||||
},
|
||||
"apps": {
|
||||
"update_config": "Actualizar configuración da app '{name}'",
|
||||
"uninstall": "Desinstalar app '{name}'",
|
||||
"perform_action": "Realizar acción '{action}' da app '{name}'",
|
||||
"set_default": "Redirixir raiz do dominio '{domain}' a '{name}'",
|
||||
"install": "Intalar app '{name}'",
|
||||
"change_url": "Cambiar URL de acceso a '{name}'",
|
||||
"change_label": "Cambiar etiqueta de '{prevName}' a '{nextName}'"
|
||||
},
|
||||
"adminpw": "Cambiar contrasinal admin"
|
||||
},
|
||||
"restart": "Reiniciar",
|
||||
"restore": "Restaurar",
|
||||
"rerun_diagnosis": "Volver a executar diagnóstico",
|
||||
"readme": "Información",
|
||||
"protocol": "Protocolo",
|
||||
"previous": "Anterior",
|
||||
"postinstall_set_password": "Establecer contrasinal de administración",
|
||||
"postinstall_set_domain": "Establecer nome de dominio principal",
|
||||
"postinstall_password": "Este contrasinal utilizarase para xestionar todo no teu servidor. Pon coidado en elexir o axeitado.",
|
||||
"postinstall_intro_3": "Podes ler máis información se visitas a <a href='//yunohost.org/en/install/hardware:vps_debian#fa-cog-proceed-with-the-initial-configuration' target='_blank'>páxina coa documentación relativa</a>",
|
||||
"postinstall_intro_2": "Requírense un par de pasos máis para activar os servizos do teu servidor.",
|
||||
"postinstall_intro_1": "Parabéns! YunoHost instalouse correctamente.",
|
||||
"postinstall_domain": "Este é o primeiro nome de dominio ligado ao teu servidor YunoHost, pero tamén o que utilizarán as usuarias para acceder ao portal de autenticación. Por isto, será visible para todo o mundo, así que elíxeo con coidado.",
|
||||
"postinstall": {
|
||||
"force": "Forzar a post-instalación"
|
||||
},
|
||||
"ports": "Portos",
|
||||
"port": "Porto",
|
||||
"permission_main": "Etiqueta principal",
|
||||
"permission_corresponding_url": "URL correspondente",
|
||||
"pending_migrations": "Hai algunha migración pendente agardando a ser executada. Vai a <a href='#/tools/migrations'>Ferramentas > Migracións</a> para velas e executalas.",
|
||||
"logs_more": "Mostrar máis liñas",
|
||||
"user_fullname": "Nome completo",
|
||||
"user_emailforward_add": "Engadir un reenvío de correo",
|
||||
"user_emailforward": "Reenvío de correo",
|
||||
"user_emailaliases_add": "Engadir un alias de email",
|
||||
"user_emailaliases": "Alias de email",
|
||||
"user_email": "Email",
|
||||
"url": "URL",
|
||||
"upnp_enabled": "UPnP activado.",
|
||||
"upnp_disabled": "UPnP desactivado.",
|
||||
"upnp": "UPnP",
|
||||
"unmaintained_details": "Esta app hai tempo que non se actualiza e as persoas anteriormente encargadas dela xa non están ou non teñen tempo para tela ao día. Podes ir ao repositorio da app e axudar a mantela actualizada",
|
||||
"unmaintained": "Sen mantemento",
|
||||
"unknown": "Descoñecido",
|
||||
"uninstall": "Desinstalar",
|
||||
"unignore": "Non ignorar",
|
||||
"unauthorized": "Sen autorización",
|
||||
"udp": "UDP",
|
||||
"traceback": "Trazas",
|
||||
"tools_webadmin_settings": "Axustes Web-admin",
|
||||
"tools_webadmin": {
|
||||
"transitions": "Animacións de transición de páxinas",
|
||||
"experimental_description": "Dache acceso a ferramentas experimentais. Considéranse inestables e poderían estragar o teu sistema. <br> Activa isto só se sabes o que estás a facer.",
|
||||
"experimental": "Modo experimental",
|
||||
"cache_description": "Considera desactivar a caché se pretendes traballar a través da CLI e ao mesmo tempo usar esta web-admin.",
|
||||
"cache": "Caché",
|
||||
"fallback_language_description": "Idioma que se utilizará en caso de que a tradución non esté dispoñible no idioma principal.",
|
||||
"fallback_language": "Idioma de apoio",
|
||||
"language": "Idioma"
|
||||
},
|
||||
"tools_shutdown_reboot": "Apagar/Reiniciar",
|
||||
"tools_shuttingdown": "O servidor estase apagando. Cando esté apagado non poderás usar a web de administración.",
|
||||
"tools_shutdown_done": "Apagando...",
|
||||
"tools_shutdown_btn": "Apagar",
|
||||
"tools_shutdown": "Apagando o servidor",
|
||||
"tools_rebooting": "O servidor está reiniciando. Para volver á interface web de administración tes que agardar a que o servidor esté accesible. Podes agardar a que apareza o formulario de acceso ou actualizar a páxina (F5).",
|
||||
"tools_reboot_done": "Reiniciando...",
|
||||
"tools_reboot_btn": "Reiniciar",
|
||||
"tools_reboot": "Reinicia o servidor",
|
||||
"tools_power_up": "O servidor parece estar accesible, podes intentar conectarte.",
|
||||
"tools_adminpw_current_placeholder": "Escribe o teu contrasinal actual",
|
||||
"tools_adminpw_current": "Contrasinal actual",
|
||||
"tools_adminpw": "Cambiar contrasinal de administración",
|
||||
"tools": "Ferramentas",
|
||||
"tip_about_user_email": "As usuarias créanse cun enderezo de email asociado (e conta XMPP) co formato usuaria@dominio.tld. Alias de email adicionais e reenvíos de email pódense engadir posteriormente por parte da administración e a usuaria.",
|
||||
"tcp": "TCP",
|
||||
"system_upgrade_all_packages_btn": "Actualizar tódolos paquetes",
|
||||
"system_upgrade_all_applications_btn": "Actualizar tódalas aplicacións",
|
||||
"system_upgrade_btn": "Actualizar",
|
||||
"system_update": "Actualización do sistema",
|
||||
"purge_user_data_warning": "A eliminación dos datos da usuaria non é reversible. Ten a certeza de que sabes o que estás a facer!",
|
||||
"purge_user_data_checkbox": "Purgar os datos de {name}? (Esto vai eliminar o contido do seu /home e directorio de email.)",
|
||||
"revert_to_selfsigned_cert": "Volver a un certificado auto-asinado",
|
||||
"revert_to_selfsigned_cert_message": "Se realmente queres facelo, podes reinstalar o certificado auto-asinado. (Non se recomenda)",
|
||||
"regenerate_selfsigned_cert": "Rexenerar o certificado auto-asinado",
|
||||
"regenerate_selfsigned_cert_message": "Se queres podes rexenerar o certificado auto-asinado.",
|
||||
"manually_renew_letsencrypt": "Renovar agora manualmente",
|
||||
"manually_renew_letsencrypt_message": "O certificado será automáticamente renovado durante os últimos 15 días da súa validez. Podes renovalo automáticamente cando queiras. (Non se recomenda).",
|
||||
"install_letsencrypt_cert": "Instalar un certificado Let's Encrypt",
|
||||
"domain_not_eligible_for_ACME": "Este dominio non semella preparado para o certificado Let's Encrypt. Comproba a configuración DNS e a accesibilidade HTTP do servidor. Os 'rexistros DNS' e sección 'Web' na <a href='#/diagnosis'>páxina de diagnóstico</a> pode axudarche a saber cal é o problema na configuración.",
|
||||
"domain_is_eligible_for_ACME": "Este dominio semella correctamente configurado para instalar un certificado Let's Encrypt!",
|
||||
"validity": "Validez",
|
||||
"certificate_authority": "Autoridade certificadora",
|
||||
"certificate_status": "Estado do certificado",
|
||||
"certificate": "Certificado",
|
||||
"confirm_cert_revert_to_selfsigned": "Tes a certeza de querer volver a un certificado auto-asinado para este dominio?",
|
||||
"confirm_cert_manual_renew_LE": "Tes a certeza de querer renovar manualmente agora o certificado Let's Encrypt para este dominio?",
|
||||
"confirm_cert_regen_selfsigned": "Tes a certeza de querer rexenerar o certificado auto-asinado para este dominio?",
|
||||
"confirm_cert_install_LE": "Tes a certeza de querer intalar un certificado Let's Encrypt para este dominio?",
|
||||
"ssl_certificate": "Certificado SSL",
|
||||
"certificate_manage": "Xestionar certificado SSL",
|
||||
"certificate_alert_unknown": "Estado descoñecido",
|
||||
"certificate_alert_great": "Ben! Estás a utilizar un certificado válido Let's Encrypt!",
|
||||
"certificate_alert_good": "Correcto, o certificado actual ten bo aspecto!",
|
||||
"certificate_alert_about_to_expire": "AVISO: O certificado actual vai caducar! NON vai ser renovado automáticamente!",
|
||||
"certificate_alert_letsencrypt_about_to_expire": "O certificado actual vai caducar. Pronto debería ser renovado automáticamente.",
|
||||
"certificate_alert_selfsigned": "AVISO: O certificado actual está auto-asinado. Os navegadores van mostrar un aviso molesto ás persoas visitantes!",
|
||||
"certificate_alert_not_valid": "CRÍTICO: O certificado actual non é válido! HTPPS non funcionará!",
|
||||
"yes": "Si",
|
||||
"wrong_password": "Contrasinal incorrecto",
|
||||
"words": {
|
||||
"default": "Por defecto",
|
||||
"collapse": "Pechar"
|
||||
},
|
||||
"warnings": "{count} avisos",
|
||||
"version": "Versión",
|
||||
"users_no": "Sen usuarias.",
|
||||
"users_new": "Nova usuaria",
|
||||
"users": "Usuarias",
|
||||
"user_username_edit": "Editar a conta de {name}",
|
||||
"user_username": "Nome de usuaria",
|
||||
"user_new_forward": "novoreenvio@omeudominoexterno.org",
|
||||
"user_mailbox_use": "Espazo de correo utilizado",
|
||||
"user_mailbox_quota": "Cota de correo",
|
||||
"user_interface_link": "Interface de usuaria"
|
||||
}
|
|
@ -3,5 +3,14 @@
|
|||
"action": "कार्रवाई",
|
||||
"add": "जोड़े।",
|
||||
"administration_password": "एडमिनिस्ट्रेटर का पासवर्ड।",
|
||||
"ok": "ठीक है"
|
||||
"ok": "ठीक है",
|
||||
"address": {
|
||||
"local_part_description": {
|
||||
"domain": "एक उपडोमेन चुनें"
|
||||
},
|
||||
"domain_description": {
|
||||
"email": "अपने ईमेल के लिए एक डोमेन चुनें।",
|
||||
"domain": "एक डोमेन चुनें"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -29,7 +29,7 @@
|
|||
"description": "Descrizione",
|
||||
"disable": "Disabilita",
|
||||
"domain_add": "Aggiungi dominio",
|
||||
"domain_add_dns_doc": "… e ho <a href='//yunohost.org/dns'>correttamente impostato il mio DNS</a>.",
|
||||
"domain_add_dns_doc": "… e ho <a href='//yunohost.org/dns_config' target='_blank'>correttamente impostato il mio DNS</a>.",
|
||||
"domain_add_dyndns_doc": "... e voglio un servizio DNS dinamico.",
|
||||
"domain_add_panel_with_domain": "Ho già un nome di domino…",
|
||||
"domain_add_panel_without_domain": "Non ho un nome di domino…",
|
||||
|
@ -42,7 +42,7 @@
|
|||
"firewall": "Firewall",
|
||||
"home": "Home",
|
||||
"hook_adminjs_group_configuration": "Configurazioni di sistema",
|
||||
"hook_conf_ldap": "Database LDAP",
|
||||
"hook_conf_ldap": "Database utenti",
|
||||
"hook_conf_nginx": "Nginx",
|
||||
"hook_conf_ssh": "SSH",
|
||||
"hook_conf_ssowat": "SSOwat",
|
||||
|
@ -68,7 +68,7 @@
|
|||
"manage_apps": "Gestisci app",
|
||||
"manage_domains": "Gestisci domini",
|
||||
"manage_users": "Gestisci utenti",
|
||||
"multi_instance": "Istanze multiple",
|
||||
"multi_instance": "Può essere installato più volte",
|
||||
"myserver": "mioserver",
|
||||
"next": "Successivo",
|
||||
"no": "No",
|
||||
|
@ -124,7 +124,7 @@
|
|||
"yes": "Si",
|
||||
"app_state_inprogress": "ancora non funzionante",
|
||||
"confirm_install_custom_app": "ATTENZIONE! L'installazione di applicazioni di terze parti può compromettere l'integrità e la sicurezza del tuo sistema. Probabilmente NON dovresti installarle a meno che tu non sappia cosa stai facendo. Sei sicuro di volerti prendere questo rischio?",
|
||||
"confirm_install_domain_root": "Non sarai in grado di installare qualsiasi altra applicazione su {domain}. Continuare ?",
|
||||
"confirm_install_domain_root": "Sei sicuro di voler installare l'applicazione su '/'? Non sarai in grado di installare qualsiasi altra applicazione su {domain}",
|
||||
"app_state_notworking": "non funzionante",
|
||||
"app_state_working": "funzionante",
|
||||
"begin": "Iniziamo",
|
||||
|
@ -150,7 +150,7 @@
|
|||
"mailbox_quota_placeholder": "Lascia vuoto o metti 0 per disattivare.",
|
||||
"postinstall_domain": "Questo è il primo nome di dominio collegato al tuo server Yunohost, ma anche quello che verrà usato dagli utenti del tuo server per accedere al portale di autenticazione. Di conseguenza sarà visibile da tutti, perciò sceglilo con attenzione.",
|
||||
"postinstall_intro_2": "Sono richiesti ancora due passi da configurare per attivare i servizi del tuo server.",
|
||||
"postinstall_intro_3": "Puoi ottenere ulteriori informazioni visitando la <a href='//yunohost.org/postinstall' target='_blank'>pagina appropriata nella documentazione</a>",
|
||||
"postinstall_intro_3": "Puoi ottenere ulteriori informazioni visitando la <a href='//yunohost.org/it/install/hardware:vps_debian#fa-cog-proceed-with-the-initial-configuration' target='_blank'>pagina appropriata nella documentazione</a>",
|
||||
"running": "In esecuzione",
|
||||
"system_update": "Aggiornamento del sistema",
|
||||
"user_mailbox_use": "Spazio utilizzato dalla casella di posta",
|
||||
|
@ -160,8 +160,8 @@
|
|||
"app_info_changeurl_desc": "Cambia l'URL di accesso di questa applicazione (dominio e/o percorso).",
|
||||
"app_info_change_url_disabled_tooltip": "Questa funzionalità non è ancora stata implementata in questa applicazione",
|
||||
"confirm_app_change_url": "Sei sicuro di voler cambiare l'URL di accesso all'applicazione ?",
|
||||
"confirm_firewall_open": "Sei sicuro di voler aprire la porta {port}? (protocollo: {protocol}, connessione: {connection})",
|
||||
"confirm_firewall_close": "Sei sicuro di voler chiudere la porta {port}? (protocollo: {protocol}, connessione: {connection})",
|
||||
"confirm_firewall_allow": "Sei sicuro di voler aprire la porta {port}? (protocollo: {protocol}, connessione: {connection})",
|
||||
"confirm_firewall_disallow": "Sei sicuro di voler chiudere la porta {port}? (protocollo: {protocol}, connessione: {connection})",
|
||||
"confirm_migrations_skip": "Saltare le migrazioni è sconsigliato. Sei sicuro di volerlo fare?",
|
||||
"confirm_service_start": "Sei sicuro di voler eseguire {name}?",
|
||||
"confirm_service_stop": "Sei sicuro di voler fermare {name}?",
|
||||
|
@ -171,7 +171,7 @@
|
|||
"confirm_upnp_disable": "Sei sicuro di voler disabilitare UPnP?",
|
||||
"confirm_reboot_action_reboot": "Sei sicuro di voler riavviare il tuo server?",
|
||||
"confirm_reboot_action_shutdown": "Sei sicuro di voler spegnere il tuo server?",
|
||||
"domain_dns_conf_is_just_a_recommendation": "Questa pagina ti mostra la configurazione *raccomandata*. *Non* configura il DNS per te. Configurare le tue zone DNS e il registrar DNS in accordo con queste raccomandazioni è compito tuo.",
|
||||
"domain_dns_conf_is_just_a_recommendation": "Questa pagina ti mostra la configurazione *raccomandata*. *Non* configura il DNS per te. Configurare le tue zone DNS nel registrar DNS in accordo con queste raccomandazioni è compito tuo.",
|
||||
"migrations": "Migrazioni",
|
||||
"migrations_pending": "Migrazioni in attesa",
|
||||
"migrations_done": "Migrazioni precedenti",
|
||||
|
@ -258,7 +258,7 @@
|
|||
"group_visitors": "Visitori",
|
||||
"group_format_name_help": "È possibile utilizzare caratteri alfanumerici e spazio",
|
||||
"group_add_member": "Aggiungere un utente",
|
||||
"app_state_highquality_explanation": "Questa applicazione è ben integrata con YunoHost. È stata (ed è!) peer-reviewed dal team di YunoHost app. Ci si può aspettare che sia sicura e mantenuta a lungo termine.",
|
||||
"app_state_highquality_explanation": "Questa applicazione è ben integrata con YunoHost da almeno un anno a questa parte.",
|
||||
"details": "Dettagli",
|
||||
"diagnosis_experimental_disclaimer": "Siate consapevoli che la funzione di diagnosi è ancora sperimentale e in fase di perfezionamento, e potrebbe non essere completamente affidabile.",
|
||||
"everything_good": "Tutto bene!",
|
||||
|
@ -268,9 +268,11 @@
|
|||
"group_new": "Nuovo gruppo",
|
||||
"warnings": "{count} avvisi",
|
||||
"words": {
|
||||
"default": "Predefinito"
|
||||
"default": "Predefinito",
|
||||
"dismiss": "Annulla",
|
||||
"collapse": "Collassa"
|
||||
},
|
||||
"unmaintained_details": "Questa applicazione non è stata aggiornata da tempo e il mantainer precedente se n'è andato oppure non ha più tempo per manutenerla. Potresti controllare il repository per dare il tuo aiuto",
|
||||
"unmaintained_details": "Questa applicazione non è stata aggiornata da tempo e il mantainer precedente se n'è andato oppure non ha più tempo per manutentarla. Potresti controllare il repository per dare il tuo aiuto",
|
||||
"unignore": "Non ignorare più",
|
||||
"since": "da",
|
||||
"restart": "Riavvia",
|
||||
|
@ -305,7 +307,232 @@
|
|||
"tip_about_user_email": "Gli utenti sono creati associati ad un indirizzo email (e un account XMPP) del tipo utente@domain.tld. Indirizzi email addizionali e forward possono essere aggiunti successivamente dall'amministratore e dall'utente.",
|
||||
"logs_suboperations": "Sub-operazioni",
|
||||
"permission_show_tile_enabled": "Mostra il tile nel portale dell'utente",
|
||||
"permission_main": "Permesso principale",
|
||||
"permission_main": "Etichetta principale",
|
||||
"permission_corresponding_url": "URL corrispondente",
|
||||
"app_manage_label_and_tiles": "Gestisci etichette e tiles"
|
||||
"app_manage_label_and_tiles": "Gestisci etichette e tiles",
|
||||
"user_emailforward_add": "Aggiungi un reindirizzamento mail",
|
||||
"user_emailaliases_add": "Aggiungi un alias mail",
|
||||
"unknown": "Sconosciuto",
|
||||
"traceback": "Traceback",
|
||||
"tools_webadmin_settings": "Impostazioni Web-admin",
|
||||
"tools_webadmin": {
|
||||
"transitions": "Animazione di transizione di pagina",
|
||||
"experimental_description": "Ti concede l'accesso alle funzionalità sperimentali. Sono considerate instabili e potrebbero rompere il tuo sistema.<br>Abilita solo se sai quello che stai facendo.",
|
||||
"experimental": "Modalità sperimentale",
|
||||
"cache_description": "Prendi in considerazione di disabilitare la cache se pianifichi di lavorare con la CLI nel mentre che navighi in questo web-admin.",
|
||||
"cache": "Cache",
|
||||
"fallback_language_description": "Lingua utilizzata nel caso che la traduzione non sia disponibile.",
|
||||
"fallback_language": "Lingua di riserva",
|
||||
"language": "Lingua"
|
||||
},
|
||||
"tools_power_up": "Il tuo server sembra accessibile, puoi provare a collegarti.",
|
||||
"search": {
|
||||
"not_found": "Ci sono {items} che corrispondono ai tuoi criteri.",
|
||||
"for": "Cerca per {items}..."
|
||||
},
|
||||
"readme": "Leggimi",
|
||||
"postinstall_set_password": "Imposta la password d'amministratore",
|
||||
"postinstall_set_domain": "Imposta dominio principale",
|
||||
"placeholder": {
|
||||
"domain": "mio-dominio.it",
|
||||
"groupname": "Nome del mio gruppo",
|
||||
"lastname": "Rossi",
|
||||
"firstname": "Mario",
|
||||
"username": "mariorossi"
|
||||
},
|
||||
"perform": "Eseguire",
|
||||
"migrations_disclaimer_not_checked": "Questa migrazione necessita della tua accettazione delle condizioni d'utilizzo prima di essere eseguita.",
|
||||
"migrations_disclaimer_check_message": "Ho letto e compreso le condizioni d'utilizzo",
|
||||
"mailbox_quota_example": "700MB è un CD, 4700M è un DVD",
|
||||
"items_verbose_count": "Ci sono {items}.",
|
||||
"items": {
|
||||
"users": "nessun utente | utente | {c} utenti",
|
||||
"services": "nessun servizio | servizio | {c} servizi",
|
||||
"logs": "nessun log | log | {c} logs",
|
||||
"installed_apps": "nessun app installata | app installata | {c} apps installate",
|
||||
"groups": "nessun gruppo | gruppo | {c} gruppi",
|
||||
"domains": "nessun dominio | dominio | {c} domini",
|
||||
"backups": "nessun backup | backup | {c} backups",
|
||||
"apps": "nessuna app | app | {c} apps",
|
||||
"permissions": "nessun permesso | permesso | {c} permessi"
|
||||
},
|
||||
"history": {
|
||||
"methods": {
|
||||
"PUT": "modifica",
|
||||
"POST": "crea/esegui",
|
||||
"GET": "leggi",
|
||||
"DELETE": "elimina"
|
||||
},
|
||||
"last_action": "Ultima azione:",
|
||||
"title": "Cronologia",
|
||||
"is_empty": "Nessuno storico per ora."
|
||||
},
|
||||
"go_back": "Torna indietro",
|
||||
"form_errors": {
|
||||
"required": "Campo richiesto.",
|
||||
"passwordMatch": "Le password non coincidono.",
|
||||
"passwordLenght": "La password dev'essere di almeno 8 caratteri.",
|
||||
"number": "Il valore dev'essere un numero.",
|
||||
"notInUsers": "L'utente '{value}' esiste già.",
|
||||
"minValue": "Il valore dev'essere maggiore o uguale a {min}.",
|
||||
"name": "I nomi non devono includere caratteri speciali, tolti <code> ,.'-</code>",
|
||||
"githubLink": "L'url dev'essere un repository Github valido",
|
||||
"emailForward": "Inoltro email non valido: dev'esser composta di soli caratteri alfanumerici e <code>_.-+</code> (es: prova+ricevute@esempio.com, m4r1-0@esempio.com)",
|
||||
"email": "Email non valida: dev'esser composta di soli caratteri alfanumerici e <code>_.-</code> (es: prova@esempio.com, m4r1-0@esempio.com)",
|
||||
"dynDomain": "Nome dominio non valido: Dev'esser composto di soli caratteri alfanumerici minuscoli e trattini",
|
||||
"domain": "Nome dominio non valido: Dev'esser composto di soli caratteri alfanumerici minuscoli, punti e trattini",
|
||||
"between": "Il valore dev'essere compreso tra {min} e {max}.",
|
||||
"alphalownum_": "Il valore deve contenere solo caratteri alfanumerici minuscoli e underscore.",
|
||||
"alpha": "Il valore deve comprendere solo caratteri alfanumerici."
|
||||
},
|
||||
"footer": {
|
||||
"donate": "Dona",
|
||||
"help": "Serve aiuto?",
|
||||
"documentation": "Documentazione"
|
||||
},
|
||||
"experimental": "Sperimentale",
|
||||
"error": "Errore",
|
||||
"enabled": "Abilitato",
|
||||
"domain_delete_forbidden_desc": "Non puoi rimuovere '{domain}' fintanto che è il tuo dominio principale, devi prima selezionare un altro dominio (o <a href='#/domains/add'>crearne un'altro</a>) e impostarlo come dominio principale.",
|
||||
"domain_add_dyndns_forbidden": "Hai già sottoscritto un dominio DynDNS, puoi richiedere di rimuovere il tuo dominio DynDNS corrente sul forum <a href='//forum.yunohost.org/t/nohost-domain-recovery-suppression-de-domaine-en-nohost-me-noho-st-et-ynh-fr/442'>nel thread dedicato</a>.",
|
||||
"disabled": "Disabilitato",
|
||||
"dead": "Inattivo",
|
||||
"day_validity": " Scaduto | 1 giorno | {count} giorni",
|
||||
"confirm_app_install": "Sicuro di voler installare questa applicazione?",
|
||||
"common": {
|
||||
"lastname": "Cognome",
|
||||
"firstname": "Nome"
|
||||
},
|
||||
"code": "Codice",
|
||||
"app_show_categories": "Mostra categorie",
|
||||
"app_config_panel_no_panel": "Questa applicazione non ha nessuna configurazione disponibile",
|
||||
"app_config_panel_label": "Configura l'app",
|
||||
"app_config_panel": "Pannello configurazioni",
|
||||
"app_choose_category": "Scegli una categoria",
|
||||
"app_actions_label": "Esegui azioni",
|
||||
"app_actions": "Azioni",
|
||||
"api_waiting": "Aspetto la risposta del server...",
|
||||
"api_not_found": "Sembra che l'amministratore ha provato a richiedere qualcosa che non esiste.",
|
||||
"api_errors_titles": {
|
||||
"APIConnexionError": "YunoHost ha riscontrato un errore di connessione",
|
||||
"APINotRespondingError": "La YunoHost API non risponde",
|
||||
"APINotFoundError": "La YunoHost API non ha trovato un percorso",
|
||||
"APIInternalError": "YunoHost ha riscontrato un errore interno",
|
||||
"APIBadRequestError": "YunoHost ha incontrato un errore",
|
||||
"APIError": "YunoHost ha incontrato un errore inaspettato"
|
||||
},
|
||||
"api_error": {
|
||||
"view_error": "Visualizza errore",
|
||||
"sorry": "Sono molto dispiaciuto per questo.",
|
||||
"server_said": "Processando la richiesta, il server dice:",
|
||||
"info": "La seguente informazione potrebbe essere utile alla persona che ti sta aiutando:",
|
||||
"help": "Cerca supporto <a href=\"https://forum.yunohost.org/\">sul forum</a> o<a href=\"https://chat.yunohost.org/\">sulla chat</a> per risolvere la situazione, o segnala un bug <a href=\"https://github.com/YunoHost/issues\">sul bugtracker</a>.",
|
||||
"error_message": "Messaggio d'errore:"
|
||||
},
|
||||
"api": {
|
||||
"query_status": {
|
||||
"warning": "Completato con errori o alert",
|
||||
"success": "Completato con successo",
|
||||
"pending": "In corso",
|
||||
"error": "Fallito"
|
||||
},
|
||||
"processing": "Il server sta processando la richiesta..."
|
||||
},
|
||||
"address": {
|
||||
"local_part_description": {
|
||||
"email": "Scegli il nome dell'indirizzo mail.",
|
||||
"domain": "Scegli un sottodominio."
|
||||
},
|
||||
"domain_description": {
|
||||
"email": "Seleziona un dominio per la tua email.",
|
||||
"domain": "Scegli un dominio."
|
||||
}
|
||||
},
|
||||
"cancel": "Annulla",
|
||||
"human_routes": {
|
||||
"users": {
|
||||
"update": "Aggiorna utente '{name}'",
|
||||
"delete": "Elimina utente '{name}'",
|
||||
"create": "Crea utente '{name}'"
|
||||
},
|
||||
"upgrade": {
|
||||
"app": "Aggiorna l'app '{app}'",
|
||||
"apps": "Aggiorna tutte le app",
|
||||
"system": "Aggiorna il sistema"
|
||||
},
|
||||
"update": "Controlla aggiornamenti",
|
||||
"shutdown": "Spegni il server",
|
||||
"share_logs": "Genera link per il log '{name}'",
|
||||
"services": {
|
||||
"stop": "Ferma il servizio '{name}'",
|
||||
"start": "Avvio il servizio '{name}'",
|
||||
"restart": "Riavvia il servizio '{name}'"
|
||||
},
|
||||
"reboot": "Riavvia il server",
|
||||
"postinstall": "Esegui il post-install",
|
||||
"permissions": {
|
||||
"remove": "Rimuovi l'accesso per '{perm}' a '{name}'",
|
||||
"add": "Permetti a '{name}' di accedere a '{perm}'"
|
||||
},
|
||||
"migrations": {
|
||||
"skip": "Salta migrazioni",
|
||||
"run": "Esegui migrazioni"
|
||||
},
|
||||
"groups": {
|
||||
"remove": "Rimuovi {'user'} dal gruppo '{name}'",
|
||||
"add": "Aggiungi '{user}' al gruppo '{name}'",
|
||||
"delete": "Elimina gruppo '{name}'",
|
||||
"create": "Crea gruppo '{name}'"
|
||||
},
|
||||
"firewall": {
|
||||
"upnp": "{action} UPnP",
|
||||
"ports": "{action} porta {port} ({protocol}, {connection})"
|
||||
},
|
||||
"domains": {
|
||||
"set_default": "Imposta '{name}' come dominio di default",
|
||||
"revert_to_selfsigned": "Ripristina certificato auto-firmato per '{name}'",
|
||||
"regen_selfsigned": "Rinnova certificato auto-firmato per '{name}'",
|
||||
"manual_renew_LE": "Rinnova certificato per '{name}'",
|
||||
"install_LE": "Installa certificato per '{name}'",
|
||||
"delete": "Elimina dominio '{name}'",
|
||||
"add": "Aggiungi dominio '{name}'"
|
||||
},
|
||||
"diagnosis": {
|
||||
"unignore": {
|
||||
"warning": "Non ignorare avviso",
|
||||
"error": "Non ignorare errore"
|
||||
},
|
||||
"run_specific": "Esegui diagnosi '{description}'",
|
||||
"run": "Esegui diagnosi",
|
||||
"ignore": {
|
||||
"warning": "Ignora avviso",
|
||||
"error": "Ignora errore"
|
||||
}
|
||||
},
|
||||
"backups": {
|
||||
"restore": "Ripristina backup '{name}'",
|
||||
"delete": "Elimina backup '{name}'",
|
||||
"create": "Crea backup"
|
||||
},
|
||||
"apps": {
|
||||
"update_config": "Aggiorna la configurazione dell'app '{name}'",
|
||||
"uninstall": "Disinstalla l'app '{name}'",
|
||||
"perform_action": "Esegui l'azione '{action}' dell'app '{name}'",
|
||||
"set_default": "Reindirizza la domain root di '{domain}' a '{name}'",
|
||||
"install": "Installa l'app '{name}'",
|
||||
"change_url": "Cambia l'url d'accesso di '{name}'",
|
||||
"change_label": "Cambia label da '{prevName}' a '{nextName}'"
|
||||
},
|
||||
"adminpw": "Cambia password d'amministratore"
|
||||
},
|
||||
"postinstall": {
|
||||
"force": "Forza il post-install"
|
||||
},
|
||||
"items_verbose_items_left": "Ci sono {items} oggetti rimasti.",
|
||||
"hook_data_xmpp_desc": "Configurazioni utenti e stanze, upload file",
|
||||
"hook_data_xmpp": "Dati XMPP",
|
||||
"hook_conf_manually_modified_files": "Configurazioni modificate manualmente",
|
||||
"hook_conf_ynh_settings": "Configurazioni YunoHost",
|
||||
"confirm_group_add_access_permission": "Sei sicuro di voler concedere l'accesso {perm} a {name}? Questo accesso aumenta significativamente la superficie di attacco nel caso {name} fosse una persona malevola. Dovresti effettuare quest'azione solo se hai FIDUCIA in questa persona/gruppo.",
|
||||
"app_install_parameters": "Parametri installazione"
|
||||
}
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
"action": "Actie",
|
||||
"add": "Toevoegen",
|
||||
"administration_password": "Beheerderswachtwoord",
|
||||
"api_not_responding": "De YunoHost API reageert niet. De 'yunohost-api' is misschien stuk of werd herstart?",
|
||||
"api_not_responding": "De YunoHost API reageert niet. Misschien is de 'yunohost-api' offline of wordt deze opnieuw opgestart?",
|
||||
"app_info_access_desc": "Groepen/gebruikers die op dit ogenblik toegang hebben tot deze applicatie:",
|
||||
"app_info_default_desc": "Domeinnaam wortel (root) doorverwijzen naar deze applicatie ({domain}).",
|
||||
"app_info_uninstall_desc": "Deze applicatie verwijderen.",
|
||||
|
@ -22,7 +22,7 @@
|
|||
"confirm_app_default": "Ben je zeker dat je dit de standaardapplicatie wil maken?",
|
||||
"confirm_change_maindomain": "Ben je zeker dat je de domeinnaam wil wijzigen?",
|
||||
"confirm_delete": "Ben je zeker dat je {name} wil verwijderen?",
|
||||
"confirm_install_custom_app": "Applicaties van derden installeren kan de veiligheid van je systeem in gevaar brengen. Gebruik op eigen risico.",
|
||||
"confirm_install_custom_app": "Waarschuwing: applicaties van derden installeren kan de veiligheid van je systeem in gevaar brengen. Gebruik op eigen risico.",
|
||||
"confirm_install_domain_root": "Het zal niet meer mogelijk zijn om een andere app te installeren op {domain}. Verdergaan?",
|
||||
"confirm_postinstall": "Je gaat zo het post-installatieproces starten op domein {domain}. Dit kan enkele minuten duren, *onderbreek het proces niet*.",
|
||||
"confirm_restore": "Weet je zeker dat je {name} wilt herstellen?",
|
||||
|
@ -35,7 +35,7 @@
|
|||
"description": "Beschrijving",
|
||||
"disable": "Uitschakelen",
|
||||
"domain_add": "Domeinnaam toevoegen",
|
||||
"domain_add_dns_doc": "... en ik heb <a href='//yunohost.org/dns'>mijn DNS correct ingesteld</a>.",
|
||||
"domain_add_dns_doc": "... en ik heb <a href='//yunohost.org/dns_config' target='_blank'>mijn DNS correct ingesteld</a>.",
|
||||
"domain_add_dyndns_doc": "... en ik wil een dynamische DNS-dienst (Dynamic DNS).",
|
||||
"domain_add_panel_with_domain": "Ik heb al een domeinnaam…",
|
||||
"domain_add_panel_without_domain": "Ik heb nog geen domeinnaam…",
|
||||
|
@ -144,7 +144,7 @@
|
|||
"app_info_changeurl_desc": "URL van deze applicatie veranderen (domein en/of locatie).",
|
||||
"app_info_change_url_disabled_tooltip": "Functie is nog niet geïmplementeerd voor deze applicatie",
|
||||
"app_state_inprogress": "functioneert nog niet",
|
||||
"app_state_notworking": "Werkt niet",
|
||||
"app_state_notworking": "werkt niet",
|
||||
"app_state_working": "Werkt",
|
||||
"ok": "OK",
|
||||
"app_state_highquality_explanation": "Deze applicatie is goed geïntegreerd met Yunohost. Ze werd en wordt beoordeel door de applicatie ploeg van Yunohost. Er kan gesteld worden dat ze veilig werkt en op lange termijn onderhouden zal worden.",
|
||||
|
@ -155,5 +155,36 @@
|
|||
"app_state_inprogress_explanation": "De persoon die deze applicatie onderhoudt, heeft verklaard dat ze nog niet klaar is voor een gebruik in productie. WEES VOORZICHTIG!",
|
||||
"app_no_actions": "Deze applicaties beschikt niet over acties",
|
||||
"all_apps": "Alle applicaties",
|
||||
"all": "Alles"
|
||||
"all": "Alles",
|
||||
"app_manage_label_and_tiles": "Stel label en tegels in",
|
||||
"app_choose_category": "Kies een categorie",
|
||||
"api_waiting": "Aan het wachten op de reactie van de server...",
|
||||
"api_errors_titles": {
|
||||
"APINotRespondingError": "Yunohost API reageert niet",
|
||||
"APIError": "Yunohost kwam een onverwachte fout tegen"
|
||||
},
|
||||
"api_error": {
|
||||
"info": "De volgende informatie kan handig zijn voor de persoon die jou helpt:",
|
||||
"help": "Je zou om hulp kunnen vragen op het <a href=\"https://forum.yunohost.org/\">forum</a> of <a href=\"https://chat.yunohost.org/\">in de chat</a> om dit op te lossen, of een bug melden op <a href=\"https://github.com/YunoHost/issues\">de bugtracker</a>.",
|
||||
"error_message": "Foutmelding:"
|
||||
},
|
||||
"api": {
|
||||
"query_status": {
|
||||
"warning": "Succesvol afgerond met fouten of waarschuwingen",
|
||||
"success": "Succesvol afgerond",
|
||||
"pending": "Bezig",
|
||||
"error": "Niet geslaagd"
|
||||
},
|
||||
"processing": "De server is aan het verwerken..."
|
||||
},
|
||||
"address": {
|
||||
"local_part_description": {
|
||||
"domain": "Kies een subdomein."
|
||||
},
|
||||
"domain_description": {
|
||||
"email": "Kies een domein voor je email.",
|
||||
"domain": "Kies een domein."
|
||||
}
|
||||
},
|
||||
"cancel": "Annuleer"
|
||||
}
|
||||
|
|
|
@ -28,8 +28,8 @@
|
|||
"confirm_app_default": "Volètz vertadièrament definir aquesta aplicacion coma aplicacion per defaut ?",
|
||||
"confirm_change_maindomain": "Volètz vertadièrament cambiar lo domeni màger ?",
|
||||
"confirm_delete": "Volètz vertadièrament escafar {name} ?",
|
||||
"confirm_firewall_open": "Volètz vertadièrament dobrir lo pòrt {port} ? (protocòl : {protocol}, connexion : {connection})",
|
||||
"confirm_firewall_close": "Volètz vertadièrament tampar lo pòrt {port} ? (protocòl : {protocol}, connexion : {connection})",
|
||||
"confirm_firewall_allow": "Volètz vertadièrament dobrir lo pòrt {port} ? (protocòl : {protocol}, connexion : {connection})",
|
||||
"confirm_firewall_disallow": "Volètz vertadièrament tampar lo pòrt {port} ? (protocòl : {protocol}, connexion : {connection})",
|
||||
"confirm_install_custom_app": "Atencion ! L’installacion d’aplicacions tèrças pòt perilhar l’integritat e la seguretat del sistèma. Auriatz PAS de n’installar levat que saupèssetz çò que fasètz. Volètz vertadièrament córrer aqueste risc ?",
|
||||
"confirm_install_domain_root": "Poiretz pas installar mai aplicacions sus {domain}. Contunhar ?",
|
||||
"confirm_migrations_skip": "Passar las migracions es pas recomandat. Volètz vertadièrament o far ?",
|
||||
|
@ -54,7 +54,7 @@
|
|||
"disable": "Desactivar",
|
||||
"dns": "DNS",
|
||||
"domain_add": "Ajustar un domeni",
|
||||
"domain_add_dns_doc": "… e ai <a href='//yunohost.org/dns'>>corrèctament configurat mos DNS</a>.",
|
||||
"domain_add_dns_doc": "… e ai <a href='//yunohost.org/dns_config' target='_blank'>>corrèctament configurat mos DNS</a>.",
|
||||
"domain_add_dyndns_doc": "… e desiri un nom de domeni preconfigurat.",
|
||||
"domain_add_panel_with_domain": "Ai ja mon nom de domeni…",
|
||||
"domain_add_panel_without_domain": "Ai pas de nom de domeni…",
|
||||
|
@ -77,7 +77,7 @@
|
|||
"home": "Acuèlh",
|
||||
"hook_adminjs_group_configuration": "Configuracion del sistèma",
|
||||
"hook_conf_cron": "Tascas automaticas",
|
||||
"hook_conf_ldap": "Basa de donadas LDAP",
|
||||
"hook_conf_ldap": "Annuari dels utilizaires",
|
||||
"hook_conf_nginx": "Nginx",
|
||||
"hook_conf_ssh": "SSH",
|
||||
"hook_conf_ssowat": "SSOwat",
|
||||
|
@ -113,7 +113,7 @@
|
|||
"migrations_done": "Migracions precedentas",
|
||||
"migrations_no_pending": "Pas cap de migracion en espèra",
|
||||
"migrations_no_done": "Pas cap de migracion precedenta",
|
||||
"multi_instance": "Instància multipla",
|
||||
"multi_instance": "Pòt èsser installada mantun còp",
|
||||
"myserver": "monservidor",
|
||||
"next": "Seguent",
|
||||
"no": "Non",
|
||||
|
@ -177,7 +177,7 @@
|
|||
"domain_dns_conf_is_just_a_recommendation": "Aquesta pagina mòstra la configuracion *recomandada*. Configura *pas* lo DNS per vos. Es vòstra responsabilitat la configuracion de la zòna DNS en çò vòstre registrar DNS amb aquesta recomandacion.",
|
||||
"postinstall_domain": "Aquò es lo primièr nom de domeni ligat al servidor YunoHost, mas tanben lo que servirà al portanèl d’identificacion. Serà doncas visible per totes los utilizaires, causissètz-lo amb suènh.",
|
||||
"postinstall_intro_2": "Doas etapas mai son necessàrias per activar lo servidor.",
|
||||
"postinstall_intro_3": "Podètz trapar mai d’informacion en anar a <a href='//yunohost.org/postinstall' target='_blank'> la pagina de documentacion en question</a>",
|
||||
"postinstall_intro_3": "Podètz trapar mai d’informacion en anar a <a href='//yunohost.org/en/install/hardware:vps_debian#fa-cog-proceed-with-the-initial-configuration' target='_blank'> la pagina de documentacion en question</a>",
|
||||
"postinstall_password": "Aqueste senhal vos permetrà d’accedir a l’interfàcia d’administracion e de contrarotlar lo servidor. Prenètz lo temps de ne causir un bon.",
|
||||
"tools_rebooting": "Lo servidor es a tornar aviar. Per tornar a l’interfàcia d’administracion devètz esperar que lo servidor siá aviat. Podètz o verificar en actualizant aquesta pagina (F5).",
|
||||
"tools_shuttingdown": "Lo servidor es atudat. Del temps que lo servidor es atudat podètz pas accedir a l’interfàcia d’administracion.",
|
||||
|
@ -185,7 +185,8 @@
|
|||
"user_username_edit": "Modificar lo compte a {name}",
|
||||
"users_no": "Pas cap d’utilizaire.",
|
||||
"words": {
|
||||
"default": "Defaut"
|
||||
"default": "Defaut",
|
||||
"collapse": "Plegar"
|
||||
},
|
||||
"wrong_password": "Senhal incorrècte",
|
||||
"yes": "Òc",
|
||||
|
@ -239,8 +240,8 @@
|
|||
"confirm_install_app_lowquality": "Atencion : aquesta aplicacion foncionarà mas es pas encara ben integrada a YunoHost. Unas foncionalitats coma l’identificacion unica e la salvagarda/restauracion pòdon èsser pas disponiblas.",
|
||||
"confirm_install_app_inprogress": "ATENCION ! Aquesta aplicacion es encara experimentala (o fonciona pas dirèctament) e es probable que còpe lo sistèma ! Deuriatz pas l’installar levat que saupèssetz çò que fasètz. Volètz vertadièrament córrer aqueste risc ?",
|
||||
"error_connection_interrupted": "Lo servidor a tampat la connexion allòc de respondre. Nginx o yunohost-api es estat relançat o arrestat per error ?",
|
||||
"good_practices_about_admin_password": "Sètz a mand de definir un nòu senhal d’administrator. Lo nòu senhal deu conténer almens 8 caractèrs, es de bon far d’utilizar un senhal mai long (es a dire una frasa de senhal) e/o utilizar mantuns tipes de caractèrs (majusculas, minusculas, nombres e caractèrs especials).",
|
||||
"good_practices_about_user_password": "Sètz a mand de definir un nòu senhal d’utilizaire. Lo nòu senhal deu conténer almens 8 caractèrs, es de bon far d’utilizar un senhal mai long (es a dire una frasa de senhal) e/o utilizar mantuns tipes de caractèrs (majusculas, minusculas, nombres e caractèrs especials).",
|
||||
"good_practices_about_admin_password": "Sètz a mand de definir un nòu senhal d’administrator. Lo nòu senhal deu conténer almens 8 caractèrs, es de bon far d’utilizar un senhal mai long (es a dire una frasa de senhal) e/o utilizar mantun tipe de caractèrs (majusculas, minusculas, nombres e caractèrs especials).",
|
||||
"good_practices_about_user_password": "Sètz a mand de definir un nòu senhal d’utilizaire. Lo nòu senhal deu conténer almens 8 caractèrs, es de bon far d’utilizar un senhal mai long (es a dire una frasa de senhal) e/o utilizar mantun tipe de caractèrs (majusculas, minusculas, nombres e caractèrs especials).",
|
||||
"only_working_apps": "Solament aplicacions que foncionan",
|
||||
"select_all": "O seleccionar tot",
|
||||
"select_none": "O deselecionnar tot",
|
||||
|
@ -251,7 +252,7 @@
|
|||
"app_state_inprogress_explanation": "Lo manteneire d’aquesta aplicacion declarèt qu’aquesta aplicacion es pas encara prèsta per un usatge en produccion. SIATZ PRUDENT !",
|
||||
"app_state_notworking_explanation": "Lo manteneire d’aquesta aplicacion declarèt que « fonciona pas ». COPARÀ VÒSTRE SISTÈMA !",
|
||||
"app_state_highquality": "nauta qualitat",
|
||||
"app_state_highquality_explanation": "Aquesta aplicacion es plan integrada amb YunoHost. Es estada (e es) repassada per la còla d’aplicacion de YunoHost. Òm pòt esperar que siá segura e mantenguda per un long moment.",
|
||||
"app_state_highquality_explanation": "Aquesta aplicacion es plan integrada amb YunoHost fa almens un an.",
|
||||
"app_state_working_explanation": "Lo manteneire de l’aplicacion declarèt que « foncion ». Significa que deu èsser foncionala (c.f. nivèls d’aplicacion) mas es pas forçadament repassada, e pòt totjorn contenir de problèmas o èsser pas complètament integrada a YunoHost.",
|
||||
"confirm_update_system": "Volètz vertadièrament actualizar totes los paquets del sistèma ?",
|
||||
"hook_conf_ynh_currenthost": "Domeni principal actual",
|
||||
|
@ -303,17 +304,234 @@
|
|||
"diagnosis_explanation": "La foncionalitat de diagnostic provarà trobar problèmas comuns sus diferents aspèctes de vòstre servidor per s’assegurar que tot fonciona normalament. Lo diagnostic serà tanben realizat dos còps per jorn e enviarà un corrièl a l’administrator se d’errors son detectadas. De notar que d’unes ensages seràn pas mostrats s’utilizatz pas certanas foncions especificas (XMPP, per exemple) o se fracassan a causa d’una configuracion tròp complèxa. Dins aqueste cas, e se sabètz çò qu’avètz modificat, podètz ignorar los problèmas e avertiments correspondents.",
|
||||
"pending_migrations": "I a unas migracions en espèra d’execucion. Anatz a <a href='#/tools/migrations'>Aisinas > Migracions</a> per las lançar.",
|
||||
"logs_suboperations": "Jos-operacions",
|
||||
"diagnosis_first_run": "La foncionalitat de diagnostic ensajarà d’identificar los problèmas abituals de diferents aspèctes del servidor per dire d’assegurar que tot foncione de la melhora manièra possibla. Ajatz pas paur se vesètz mantunas error aprèp configurar lo servidor : es precisament fach per ajudar a identificar los problèmas e ofrir una guida per los reglar. Lo diagnostic s’executarà tanben dos còps per jorn e enviarà un corrièl a l’administrator se tròba unas error.",
|
||||
"diagnosis_first_run": "La foncionalitat de diagnostic ensajarà d’identificar los problèmas abituals de diferents aspèctes del servidor per dire d’assegurar que tot foncione de la melhora manièra possibla. Ajatz pas paur se vesètz mantuna error aprèp configurar lo servidor : es precisament fach per ajudar a identificar los problèmas e ofrir una guida per los reglar. Lo diagnostic s’executarà tanben dos còps per jorn e enviarà un corrièl a l’administrator se tròba unas error.",
|
||||
"app_manage_label_and_tiles": "Gestion de las apelacions e títols",
|
||||
"permission_corresponding_url": "URL correspondenta",
|
||||
"permission_main": "Permission principala",
|
||||
"permission_main": "Etiqueta principala",
|
||||
"permission_show_tile_enabled": "Afichar lo teule al portal utilizaire",
|
||||
"address": {
|
||||
"local_part_description": {
|
||||
"domain": "Causissètz un jos-domeni."
|
||||
"domain": "Causissètz un jos-domeni.",
|
||||
"email": "Causissètz una seccion locala pel corrièr electronic."
|
||||
},
|
||||
"domain_description": {
|
||||
"domain": "Causissètz un domeni."
|
||||
"domain": "Causissètz un domeni.",
|
||||
"email": "Causissètz un domeni pel corrièr electronic."
|
||||
}
|
||||
}
|
||||
},
|
||||
"cancel": "Anullar",
|
||||
"readme": "DeLegir",
|
||||
"postinstall_set_password": "Definir lo senhal d’administracion",
|
||||
"postinstall_set_domain": "Definir lo domeni principal",
|
||||
"human_routes": {
|
||||
"domains": {
|
||||
"install_LE": "Installar lo certificat per « {name} »",
|
||||
"delete": "Suprimir lo domeni « {name} »",
|
||||
"add": "Apondre lo domeni « {name} »",
|
||||
"set_default": "Definir « {name} » coma domeni principal",
|
||||
"revert_to_selfsigned": "Tornar al certificat auto-signat per « {name} »",
|
||||
"regen_selfsigned": "Renovar lo certificat auto-signat per « {name} »",
|
||||
"manual_renew_LE": "Renovar lo certificat per « {name} »"
|
||||
},
|
||||
"migrations": {
|
||||
"skip": "Ignorar las migracions",
|
||||
"run": "Executar las migracions"
|
||||
},
|
||||
"groups": {
|
||||
"add": "Apondre « {user} » al grop « {name} »",
|
||||
"delete": "Suprimir lo grop « {name} »",
|
||||
"remove": "Levar « {user} » d’al grop « {name} »",
|
||||
"create": "Crear lo grop « {name} »"
|
||||
},
|
||||
"postinstall": "Executar la post-installacion",
|
||||
"services": {
|
||||
"stop": "Arrestar lo servici « {name} »",
|
||||
"start": "Lançar lo servici « {name} »",
|
||||
"restart": "Relançar lo servici « {name} »"
|
||||
},
|
||||
"reboot": "Reaviar lo servidor",
|
||||
"shutdown": "Atudar lo servidor",
|
||||
"upgrade": {
|
||||
"apps": "Metre a jorn totas las aplicacions",
|
||||
"system": "Metre a jorn lo sistèma",
|
||||
"app": "Metre a jorn l’aplicacion « {app} »"
|
||||
},
|
||||
"users": {
|
||||
"update": "Metre a jorn l’utilizaire « {name} »",
|
||||
"delete": "Suprimir l’utilizaire « {name} »",
|
||||
"create": "Crear l’utilizaire « {name} »"
|
||||
},
|
||||
"update": "Recercar las mesas a jorn",
|
||||
"share_logs": "Generar un ligam pel jornal « {name} »",
|
||||
"permissions": {
|
||||
"remove": "Levar l’accès « {name} » a « {perm} »",
|
||||
"add": "Autorizar « {name} » a accedir a « {perm} »"
|
||||
},
|
||||
"firewall": {
|
||||
"upnp": "{action} UPnP",
|
||||
"ports": "{action} pòrt {port} ({protocol}, {connection})"
|
||||
},
|
||||
"diagnosis": {
|
||||
"unignore": {
|
||||
"warning": "Ignorar pas un avertiment",
|
||||
"error": "Ignorar pas una error"
|
||||
},
|
||||
"run": "Executar lo diagnostic",
|
||||
"ignore": {
|
||||
"warning": "Ignorar un avertiment",
|
||||
"error": "Ignorar una error"
|
||||
},
|
||||
"run_specific": "Lançar lo diagnostic « {description} »"
|
||||
},
|
||||
"backups": {
|
||||
"restore": "Restaurar la salvagarda « {name} »",
|
||||
"delete": "Suprimir la salvagarda « {name} »",
|
||||
"create": "Crear una salvagarda"
|
||||
},
|
||||
"apps": {
|
||||
"update_config": "Mesa a jorn de la configuracion de l’aplicacion « {name} »",
|
||||
"uninstall": "Desinstallar l’aplicacion « {name} »",
|
||||
"perform_action": "Executar l’accion « {action} » de l’aplicacion « {name} »",
|
||||
"install": "Installar l’aplicacion « {name} »",
|
||||
"change_url": "Modificar l’URL d’accès de « {name} »",
|
||||
"change_label": "Cambiar l’etiqueta de « {prevName} » per « {nextName} »",
|
||||
"set_default": "Desviar la raiç del domeni « {domain} » cap a « {name} »"
|
||||
},
|
||||
"adminpw": "Cambiar lo senhal administrator"
|
||||
},
|
||||
"search": {
|
||||
"for": "Recercar {items}...",
|
||||
"not_found": "I a {items} que correspondon a vòstres critèris."
|
||||
},
|
||||
"tools_webadmin": {
|
||||
"language": "Lenga",
|
||||
"fallback_language": "Lenga de secors",
|
||||
"cache": "Cache",
|
||||
"experimental": "Mòde experimental",
|
||||
"transitions": "Animacion de transicion entre las paginas",
|
||||
"fallback_language_description": "La lenga que serà utilizada se per cas la traduccion es pas disponibla dins la lenga principala.",
|
||||
"experimental_description": "Aquò vos dòna accès a de foncionalitats experimentalas. Aquelas son consideradas coma instablas e pòdon copar vòstre sistèma. <br> Activatz-las sonque se sabètz çò que fasètz.",
|
||||
"cache_description": "Pensatz de vos desactivar lo cache se prevesètz de trabalhar amb l’interfàcia en linha de comanda (CLI) tot en navigant dins l’administracion web (web-admin/panel web)."
|
||||
},
|
||||
"tools_webadmin_settings": "Paramètres de l'administracion web",
|
||||
"unknown": "Desconegut",
|
||||
"user_emailforward_add": "Ajustar una adreça de transferiment",
|
||||
"user_emailaliases_add": "Ajustar un alias d’adreça electronica",
|
||||
"postinstall": {
|
||||
"force": "Forçar la post-installacion"
|
||||
},
|
||||
"placeholder": {
|
||||
"domain": "mon-domeni.fr",
|
||||
"groupname": "Lo nom de mon grop",
|
||||
"lastname": "Delbosc",
|
||||
"firstname": "Joan",
|
||||
"username": "joandelbosc"
|
||||
},
|
||||
"perform": "Executar",
|
||||
"migrations_disclaimer_check_message": "Ai legida e compresa la descarga de responsabilitat",
|
||||
"mailbox_quota_example": "700 Mo correspond a un CD, 4 700 Mo correspond a un DVD",
|
||||
"items_verbose_items_left": "Demòran {items}.",
|
||||
"items_verbose_count": "I a {items}.",
|
||||
"items": {
|
||||
"users": "cap d’utilizaire | utilizaire | {c} utilizaires",
|
||||
"services": "cap de servici | servici | {c} servicis",
|
||||
"installed_apps": "cap d’aplicacion pas installada | aplicacion installada | {c} aplicacions installadas",
|
||||
"groups": "cap de grop | grop | {c} grops",
|
||||
"domains": "cap de domeni | domeni | {c} domenis",
|
||||
"backups": "cap de salvagarda | salvagarda | {c} salvagardas",
|
||||
"apps": "cap d’aplicacion | app | {c} aplicacions",
|
||||
"permissions": "cap de permission | permission | {c} permissions",
|
||||
"logs": "cap de jornal| jornal | {c} jornals"
|
||||
},
|
||||
"hook_data_xmpp": "Donadas XMPP",
|
||||
"hook_conf_manually_modified_files": "Fichièr de configuracion modificat manualament",
|
||||
"hook_conf_ynh_settings": "Configuracion de YunoHost",
|
||||
"history": {
|
||||
"methods": {
|
||||
"PUT": "modificar",
|
||||
"POST": "crear/executar",
|
||||
"GET": "legir",
|
||||
"DELETE": "suprimir"
|
||||
},
|
||||
"last_action": "Darrièra accion :",
|
||||
"title": "Istoric",
|
||||
"is_empty": "Pas res dins l’istoric pel moment."
|
||||
},
|
||||
"go_back": "Tornar",
|
||||
"form_errors": {
|
||||
"required": "Aqueste camp es obligatòri.",
|
||||
"number": "La valor deu èsser un nombre.",
|
||||
"notInUsers": "L’utilizaire « {value} » existís ja.",
|
||||
"name": "Los noms devon pas conténer de caractèrs especials levats <code>,.'-</code>",
|
||||
"domain": "Nom de domeni invalid : deu èsser compausat de minusculas alfranumericas, de punts e de jonhents bas",
|
||||
"alphalownum_": "La valor deu sonque de caractèrs alfanumerics en minuscula e jonhent bas.",
|
||||
"minValue": "La valor deu èsser un nombre egal o superiora a {min}.",
|
||||
"between": "La valor deu èsser compresa entre {min} e {max}.",
|
||||
"alpha": "La cadena de caractèrs deu conténer sonque de letras.",
|
||||
"passwordMatch": "Los senhals correspondon pas.",
|
||||
"passwordLenght": "Lo senhal deu conténer almens 8 caractèrs.",
|
||||
"githubLink": "L’URL deu èsser un ligam Github valid cap a un depaus",
|
||||
"emailForward": "Adreça de transferiment invalida : deu sonque conténer de caractèrs alfranumerics e los caractèrs <code>_.-+</code> (per exemple, quauqun@exemple.com, kal-k1+etiqueta@exemple.com)",
|
||||
"email": "Adreça electronica invalida : deu sonque conténer de caractèrs alfanumerics e los caractèrs <code>_.-</code> (per exemple quauqun@exemple.com, k4l-k1@exemple.com)",
|
||||
"dynDomain": "Nom de domeni invalid : deu conténer sonque de minusculas alfanumericas e de jonhents basses"
|
||||
},
|
||||
"footer": {
|
||||
"donate": "Far un don",
|
||||
"documentation": "Documentacion",
|
||||
"help": "Besonh d’ajuda ?"
|
||||
},
|
||||
"experimental": "Experimental",
|
||||
"error": "Error",
|
||||
"enabled": "Activat",
|
||||
"disabled": "Desactivat",
|
||||
"dead": "Inactiu",
|
||||
"day_validity": " Expirat | 1 jorn | {count} jorns",
|
||||
"confirm_app_install": "Volètz vertadièrament installar aquesta aplicacion ?",
|
||||
"common": {
|
||||
"lastname": "Nom d’ostal",
|
||||
"firstname": "Prenom"
|
||||
},
|
||||
"code": "Còdi",
|
||||
"app_show_categories": "Mostrar las categorias",
|
||||
"app_install_parameters": "Paramètres d’installacion",
|
||||
"app_config_panel_label": "Configurar aquesta aplicacion",
|
||||
"app_config_panel": "Panèl de configuracion",
|
||||
"app_choose_category": "Causissètz una categoria",
|
||||
"app_actions_label": "Executar las accions",
|
||||
"app_actions": "Accions",
|
||||
"api_waiting": "En espèra de la responsa del servidor...",
|
||||
"api_errors_titles": {
|
||||
"APIConnexionError": "YunoHost a rescontrat una error de connexion",
|
||||
"APIInternalError": "YunoHost a rescontrat una error intèrna",
|
||||
"APIBadRequestError": "YunoHost a rescontrat una error",
|
||||
"APIError": "YunoHost a rescontrat una error inesperada",
|
||||
"APINotRespondingError": "L’API YunoHost respond pas",
|
||||
"APINotFoundError": "L’API YunoHost a pas pogut trobar de camin"
|
||||
},
|
||||
"api_error": {
|
||||
"view_error": "Veire l’error",
|
||||
"sorry": "O planhèm plan.",
|
||||
"server_said": "Pendent lo tractament de l’accion, lo servidor a dich :",
|
||||
"info": "Las informacions seguentas pòdon èsser utilas a las persona que vos ajuda :",
|
||||
"error_message": "Messatge d’error :",
|
||||
"help": "Podètz cercar d’ajuda <a href=\"https://forum.yunohost.org/\">al forum</a> o <a href=\"https://chat.yunohost.org/\">al chat</a> per corregir la situacion o senhalar l’error <a href=\"https://github.com/YunoHost/issues\">al bugtracker</a>."
|
||||
},
|
||||
"api": {
|
||||
"query_status": {
|
||||
"warning": "Acabat corrèctament amb d’error o d’alèrtas",
|
||||
"success": "Acabat corrèctament",
|
||||
"pending": "En cors",
|
||||
"error": "Fracàs"
|
||||
},
|
||||
"processing": "Lo servidor es a tractar l’accion..."
|
||||
},
|
||||
"domain_delete_forbidden_desc": "Podètz pas suprimir « {domain} » perque es lo domeni per defaut, devètz causir un autre domeni (o <a href='#/domains/add'>ajustatz-ne un</a>) e lo definir coma lo demeni per defaut per poder suprimir aquel.",
|
||||
"tools_power_up": "Vòstre servidor sembla accessible, podètz ara ensajar de vos connectar.",
|
||||
"domain_add_dyndns_forbidden": "Se vos abonèretz a un domeni DynDNS, podètz demandar la supression de vòstre domeni DynDNS actual sul forum<a href='//forum.yunohost.org/t/nohost-domain-recovery-suppression-de-domaine-en-nohost-me-noho-st-et-ynh-fr/442'> al fial de discussion dedicat</a>.",
|
||||
"confirm_group_add_access_permission": "Volètz vertadièrament donar l’accès a {perm} a {name} ? Un tal accès aumenta bravament la susfàcia d’ataca se {name} se tròba qu’es un mala persona. Deuriatz sonque o far se VOS FISATZ d’aquesta persona / aqueste grop.",
|
||||
"traceback": "Traça",
|
||||
"migrations_disclaimer_not_checked": "Aquesta migracion requerís que vos assabentetz de la descarga de responsabilitat abans de l’executar.",
|
||||
"hook_data_xmpp_desc": "Configuracion de las salas e dels utilizaires, fichièrs enviats",
|
||||
"app_config_panel_no_panel": "Aquesta aplicacion a pas cap de configuracion disponibla",
|
||||
"api_not_found": "L’administrator a ensajat d'accedir a quicòm qu’existís pas."
|
||||
}
|
||||
|
|
|
@ -26,7 +26,111 @@
|
|||
"both": "Oba",
|
||||
"check": "Sprawdź",
|
||||
"close": "Zamknij",
|
||||
"login": "Zaloguj",
|
||||
"login": "Zaloguj się",
|
||||
"logout": "Wyloguj",
|
||||
"ok": "OK"
|
||||
"ok": "OK",
|
||||
"confirm_app_install": "Czy na pewno chcesz zainstalować tę aplikację?",
|
||||
"confirm_firewall_disallow": "Czy na pewno chcesz zamknąć port {port} (protocol:{protocol}, connection: {connection})",
|
||||
"confirm_firewall_allow": "Czy na pewno chcesz otworzyć port {port} (protocol:{protocol}, connection: {connection})",
|
||||
"confirm_delete": "Czy na pewno chcesz usunąć {name}?",
|
||||
"confirm_change_maindomain": "Czy na pewno chcesz zmienić domenę podstawową?",
|
||||
"confirm_app_default": "Czy na pewno chcesz ustawić tę aplikację jako domyślną?",
|
||||
"confirm_app_change_url": "Czy na pewno chcesz zmienić adres URL do aplikacji?",
|
||||
"configuration": "Konfiguracja",
|
||||
"common": {
|
||||
"lastname": "Nazwisko",
|
||||
"firstname": "Imię"
|
||||
},
|
||||
"code": "Kod",
|
||||
"catalog": "Katalog",
|
||||
"cancel": "Anuluj",
|
||||
"app_state_highquality": "wysoka jakość",
|
||||
"app_state_lowquality": "niska jakość",
|
||||
"app_state_notworking_explanation": "Opiekun tej aplikacji zadeklarował ją jako 'nie działająca' USZKODZI TWÓJ SYSTEM!",
|
||||
"app_state_inprogress_explanation": "Opiekun tej aplikacji zadeklarował, że ta aplikacja nie jest jeszcze gotowa do użytku zewnętrznego. BĄDŹ OSTROŻNY!",
|
||||
"app_show_categories": "Pokaż kategorie",
|
||||
"app_config_panel_no_panel": "Konfiguracja dla tej aplikacji jest niedostępna",
|
||||
"app_config_panel_label": "Skonfiguruj aplikację",
|
||||
"app_config_panel": "Panel konfiguracji",
|
||||
"app_choose_category": "Wybierz kategorię",
|
||||
"api_waiting": "Czekam na odpowiedź serwera...",
|
||||
"all_apps": "Wszystkie aplikacje",
|
||||
"api_errors_titles": {
|
||||
"APIConnexionError": "YunoHost napotkał błąd połączenia",
|
||||
"APINotRespondingError": "YunoHost API nie odpowiada",
|
||||
"APINotFoundError": "YunoHost API nie może znaleźć trasy",
|
||||
"APIInternalError": "YunoHost napotkał błąd wewnętrzny",
|
||||
"APIBadRequestError": "YunoHost napotkał błąd",
|
||||
"APIError": "YunoHost napotkał nieoczekiwany błąd"
|
||||
},
|
||||
"api_error": {
|
||||
"view_error": "Zobacz błąd",
|
||||
"sorry": "Bardzo przepraszam za to.",
|
||||
"server_said": "Podczas wykonywania zadania serwer odpowiedział:",
|
||||
"info": "Ta informacja może być pomocna dla osoby pomagającej Tobie:",
|
||||
"error_message": "Wiadomość błędu:",
|
||||
"help": "Poszukaj pomocy na <a href=\"https://forum.yunohost.org/\">forum</a>lub na <a href=\"https://chat.yunohost.org/\">czacie</a> aby rozwiązać problem, albo zgłoś błąd na <a href=\"https://github.com/YunoHost/issues\">bugtrackerze\"</a>."
|
||||
},
|
||||
"api": {
|
||||
"query_status": {
|
||||
"warning": "Zakończone pomyślnie z błędami lub ostrzeżeniami",
|
||||
"success": "Zakończone pomyślnie",
|
||||
"pending": "W trakcie",
|
||||
"error": "Nieudane"
|
||||
},
|
||||
"processing": "Serwer w trakcie wykonywania zadania..."
|
||||
},
|
||||
"all": "Wszystko",
|
||||
"address": {
|
||||
"local_part_description": {
|
||||
"domain": "Wybierz subdomenę.",
|
||||
"email": "Wybierz nazwę lokalną dla konta pocztowego."
|
||||
},
|
||||
"domain_description": {
|
||||
"email": "Wybierz domenę dla poczty.",
|
||||
"domain": "Wybierz domenę."
|
||||
}
|
||||
},
|
||||
"app_manage_label_and_tiles": "Zarządzaj etykietami",
|
||||
"api_not_found": "Wygląda na to że web-admin zapytał o coś co nie istnieje.",
|
||||
"confirm_migrations_skip": "Pomijanie migracji nie jest zalecane. Czy na pewno chcesz to zrobić?",
|
||||
"confirm_install_app_inprogress": "OSTRZEŻENIE! Ta aplikacja jest nadal eksperymentalna (może wprost nie działa) i prawdopodobnie uszkodzi Twój system! Prawdopodobnie NIE powinieneś jej instalować, chyba że wiesz, co robisz. Czy chcesz podjąć to ryzyko?",
|
||||
"confirm_install_app_lowquality": "Ostrzeżenie: ta aplikacja może działać, ale nie jest dobrze zintegrowana z YunoHost. Niektóre funkcje, takie jak logowanie jednokrotne i tworzenie kopii zapasowych / przywracanie, mogą być niedostępne.",
|
||||
"confirm_install_domain_root": "Czy na pewno chcesz zainstalować tę aplikację na „/”? Nie będziesz mógł zainstalować żadnej innej aplikacji w domenie {domain}",
|
||||
"app_state_highquality_explanation": "Ta aplikacja jest dobrze zintegrowana z YunoHost od ponad roku.",
|
||||
"app_state_lowquality_explanation": "Ta aplikacja może działać, ale nadal może zawierać błędy, albo nie być w pełni zintegrowaną z YunoHost, lub nie przestrzega dobrych praktyk.",
|
||||
"diagnosis_explanation": "Funkcja diagnostyki spróbuje zidentyfikować typowe problemy dotyczące różnych aspektów serwera, aby upewnić się, że wszystko działa sprawnie. Diagnoza przebiega automatycznie dwa razy dziennie, a w przypadku znalezienia problemów do administratora wysyłana jest wiadomość e-mail. Zwróć uwagę, że niektóre testy mogą nie być odpowiednie, jeśli nie chcesz używać określonych funkcji (na przykład XMPP) lub mogą się nie powieść, jeśli masz złożoną konfigurację. W takich przypadkach i jeśli wiesz, co robisz, możesz zignorować odpowiednie problemy lub ostrzeżenia.",
|
||||
"diagnosis_first_run": "Funkcja diagnostyki spróbuje zidentyfikować typowe problemy dotyczące różnych aspektów serwera, aby upewnić się, że wszystko działa sprawnie. Nie panikuj, jeśli zaraz po skonfigurowaniu serwera zobaczysz kilka błędów: ma to dokładnie pomóc w zidentyfikowaniu problemów i ich naprawieniu. Diagnostyka będzie również uruchamiana automatycznie dwa razy dziennie, a w przypadku znalezienia problemów do administratora zostanie wysłana wiadomość e-mail.",
|
||||
"diagnosis_experimental_disclaimer": "Należy pamiętać, że funkcja diagnostyki jest wciąż eksperymentalna i dopracowywana i może nie być w pełni wiarygodna.",
|
||||
"diagnosis": "Diagnostyka",
|
||||
"domain_dns_conf_is_just_a_recommendation": "Ta strona przedstawia *zalecaną* konfigurację. *Nie* konfiguruje DNS za Ciebie. Do Ciebie należy skonfigurowanie strefy DNS u rejestratora DNS zgodnie z tym zaleceniem.",
|
||||
"details": "Szczegóły",
|
||||
"description": "Opis",
|
||||
"delete": "Usuń",
|
||||
"dead": "Nieaktywne",
|
||||
"custom_app_install": "Zainstaluj niestandardową aplikację",
|
||||
"connection": "Połączenie",
|
||||
"confirm_reboot_action_shutdown": "Czy na pewno chcesz wyłączyć swój serwer?",
|
||||
"confirm_reboot_action_reboot": "Czy na pewno chcesz zrestartować swój serwer?",
|
||||
"confirm_upnp_disable": "Czy na pewno chcesz wyłączyć UPnP?",
|
||||
"confirm_upnp_enable": "Czy na pewno chcesz włączyć UPnP?",
|
||||
"confirm_update_specific_app": "Czy na pewno chcesz zaktualizować {app}?",
|
||||
"confirm_update_system": "Czy na pewno chcesz zaktualizować wszystkie pakiety systemowe?",
|
||||
"confirm_update_apps": "Czy na pewno chcesz zaktualizować wszystkie aplikacje?",
|
||||
"confirm_uninstall": "Czy na pewno chcesz odinstalować {name}?",
|
||||
"confirm_service_stop": "Czy na pewno chcesz zatrzymać {name}?",
|
||||
"confirm_service_start": "Czy na pewno chcesz uruchomić {name}?",
|
||||
"confirm_service_restart": "Czy na pewno chcesz ponownie uruchomić {name}?",
|
||||
"confirm_restore": "Czy na pewno chcesz przywrócić {name}?",
|
||||
"confirm_postinstall": "Masz zamiar uruchomić proces poinstalacyjny w domenie {domena}. Może to zająć kilka minut, * nie przerywaj operacji *.",
|
||||
"confirm_install_custom_app": "OSTRZEŻENIE! Instalowanie aplikacji innych firm może zagrozić integralności i bezpieczeństwu systemu. Prawdopodobnie NIE powinieneś jej instalować, chyba że wiesz, co robisz. Czy jesteś gotów podjąć to ryzyko?",
|
||||
"confirm_group_add_access_permission": "Czy na pewno chcesz udzielić {perm} dostępu do: {name}? Taki dostęp znacznie zwiększa możliwość ataku, jeśli {name} jest niezaufaną osobą. Powinieneś to zrobić tylko wtedy, gdy UFASZ tej osobie / grupie.",
|
||||
"app_install_parameters": "Ustawienia instalacji",
|
||||
"good_practices_about_user_password": "Musisz teraz zdefiniować nowe hasło użytkownika. Hasło powinno mieć co najmniej 8 znaków - chociaż dobrym zwyczajem jest używanie dłuższego hasła (np. tekst szyfrujący) i / lub używanie różnego rodzaju znaków (duże, małe litery, cyfry i znaki specjalne).",
|
||||
"error": "Błąd",
|
||||
"app_actions_label": "Wykonaj działania",
|
||||
"app_actions": "Działania",
|
||||
"day_validity": " Wygasł | 1 dzień | {count} dni",
|
||||
"created_at": "Utworzony w",
|
||||
"app_state_working_explanation": "Opiekun tej aplikacji uznał ją za „działającą”. Oznacza to, że powinna działać, ale nie została do końca oceniona, może nadal zawierać problemy lub nie jest w pełni zintegrowana z YunoHost."
|
||||
}
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
"confirm_app_default": "Confirma esta aplicação como pré-definida?",
|
||||
"confirm_change_maindomain": "Confirma a alteração do domínio principal?",
|
||||
"confirm_delete": "Confirma a eliminação de {name} ?",
|
||||
"confirm_postinstall": "Está prestes a iniciar o processo de pós-instalação no servidor {domain}. Poderá demorar alguns minutos.\n*não interrompa a operação*.",
|
||||
"confirm_postinstall": "Está prestes a iniciar o processo de pós-instalação no servidor {domain}. Poderá demorar alguns minutos. *não interrompa a operação*.",
|
||||
"confirm_uninstall": "Confirma a desinstalação de {name} ?",
|
||||
"connection": "Ligação",
|
||||
"custom_app_install": "Instalar aplicação personalizada",
|
||||
|
@ -23,7 +23,7 @@
|
|||
"description": "Descrição",
|
||||
"disable": "Desativar",
|
||||
"domain_add": "Adicionar domínio",
|
||||
"domain_add_dns_doc": "… coloco <a href='//yunohost.org/dns'>para definir o meu DNS</a>.",
|
||||
"domain_add_dns_doc": "… coloco <a href='//yunohost.org/dns_config' target='_blank'>para definir o meu DNS</a>.",
|
||||
"domain_add_dyndns_doc": "... quero um serviço DNS dinâmico.",
|
||||
"domain_add_panel_with_domain": "Já tenho um domínio registado…",
|
||||
"domain_add_panel_without_domain": "Ainda não registei um domínio…",
|
||||
|
@ -33,7 +33,7 @@
|
|||
"enable": "Ativar",
|
||||
"error_modify_something": "Deve realizar alterações",
|
||||
"firewall": "Firewall",
|
||||
"hook_conf_ldap": "Base de dados LDAP",
|
||||
"hook_conf_ldap": "Base de dados",
|
||||
"hook_conf_nginx": "Nginx",
|
||||
"hook_conf_ssh": "SSH",
|
||||
"hook_conf_ssowat": "SSOwat",
|
||||
|
@ -50,12 +50,12 @@
|
|||
"ipv6": "IPv6",
|
||||
"label": "Etiqueta",
|
||||
"label_for_manifestname": "Rótulo para {name}",
|
||||
"login": "Iniciar sessão",
|
||||
"logout": "Terminar sessão",
|
||||
"login": "Entrar",
|
||||
"logout": "Sair",
|
||||
"manage_apps": "Gerenciar aplicações",
|
||||
"manage_domains": "Gerir domínios",
|
||||
"manage_users": "Gerir utilizadores",
|
||||
"multi_instance": "Multi tarefas",
|
||||
"multi_instance": "Pode ser instalado várias vezes",
|
||||
"myserver": "meuservidor",
|
||||
"next": "Seguinte",
|
||||
"no": "Não",
|
||||
|
@ -69,7 +69,7 @@
|
|||
"postinstall_domain": "Este é o seu primeiro domínio ativo no seu servidor YunoHost, é este que será utilizado pelos utilizadores para acederem ao portal de autenticação. Terá que ficar visível a todos, escolha sabiamente.",
|
||||
"postinstall_intro_1": "Parabéns! YunoHost foi instalado com êxito.",
|
||||
"postinstall_intro_2": "São requeridos mais dois passos nas configurações para ativar os serviços no seu servidor.",
|
||||
"postinstall_intro_3": "Pode obter mais informação ao visitar <a href='//yunohost.org/postinstall' target='_blank'>pagina de documentação apropriada</a>",
|
||||
"postinstall_intro_3": "Pode obter mais informação ao visitar <a href='//yunohost.org/en/install/hardware:vps_debian#fa-cog-proceed-with-the-initial-configuration' target='_blank'>pagina de documentação apropriada</a>",
|
||||
"postinstall_password": "Esta senha será utilizada para gerir tudo no seu servidor. Escolha-a sabiamente e demore o tempo que precisar.",
|
||||
"previous": "Anterior",
|
||||
"protocol": "Protocolo",
|
||||
|
@ -111,7 +111,8 @@
|
|||
"users_new": "Novo utilizador",
|
||||
"users_no": "Não existem utilizadores.",
|
||||
"words": {
|
||||
"default": "Pré-definido"
|
||||
"default": "Pré-definido",
|
||||
"collapse": "Colapsar"
|
||||
},
|
||||
"wrong_password": "Senha errada",
|
||||
"yes": "Sim",
|
||||
|
@ -127,7 +128,7 @@
|
|||
"app_state_notworking": "Não funcionando",
|
||||
"app_state_notworking_explanation": "O responsável desta aplicação afirmou que não está funcionando. INSTALANDO-A PODE QUEBRAR SEU SISTEMA!",
|
||||
"app_state_highquality": "Qualidade alta",
|
||||
"app_state_highquality_explanation": "Esta aplicação está bem integrada em Yunohost. Foi (e continua sendo!) avaliada pelos pares do grupo responsável da parte aplicativa de Yunohost. Pode-se esperar que seja segura e mantida no longo prazo.",
|
||||
"app_state_highquality_explanation": "Esta aplicação está bem integrada em YunoHost desde há pelo menos um ano.",
|
||||
"app_state_working": "Funcionando",
|
||||
"app_state_working_explanation": "O responsável desta aplicação afirmou que está funcionando. Significa que deveria estar funcionando (verifique o nível da aplicação) mais que não foi necessariamente avaliada pelos pares, poderia conter erros ou não estar completamente integrada em Yunohost.",
|
||||
"archive_empty": "O arquivo é vazio",
|
||||
|
@ -137,8 +138,8 @@
|
|||
"backup_new": "Nova cópia de segurança",
|
||||
"check": "Verificação",
|
||||
"confirm_app_change_url": "Tem certeza que quer mudar o endereço URL para acessar esta aplicação?",
|
||||
"confirm_firewall_open": "Tem certeza que quer abrir a porta {port}? (protocolo: {protocol}, conexão: {connection})",
|
||||
"confirm_firewall_close": "Tem certeza que quer fechar a porta {port}? (protocolo: {protocol}, conexão: {connection})",
|
||||
"confirm_firewall_allow": "Tem certeza que quer abrir a porta {port}? (protocolo: {protocol}, conexão: {connection})",
|
||||
"confirm_firewall_disallow": "Tem certeza que quer fechar a porta {port}? (protocolo: {protocol}, conexão: {connection})",
|
||||
"confirm_install_custom_app": "CUIDADO! Instalar aplicações de terceiros pode comprometer a integridade e a segurança do seu sistema. Provavelmente NÃO deveria instalar esta aplicação se não tiver certeza do que está fazendo. Quer correr esses riscos?",
|
||||
"confirm_install_domain_root": "Não será mas capaz de instalar outras aplicações em {domain}. Quer continuar?",
|
||||
"confirm_install_app_lowquality": "Aviso: esta aplicação pode funcionar mais não está bem integrada em Yunohost. Algumas funcionalidades como logon único e/ou cópia de segurança/restauro pode não ser disponível.",
|
||||
|
@ -181,5 +182,356 @@
|
|||
"details": "Detalhes",
|
||||
"catalog": "Catálogo",
|
||||
"configuration": "Configuração",
|
||||
"confirm_service_restart": "Tem certeza que deseja reiniciar {name}?"
|
||||
"confirm_service_restart": "Tem certeza que deseja reiniciar {name}?",
|
||||
"cancel": "Cancelar",
|
||||
"items_verbose_items_left": "Faltam {items}.",
|
||||
"items_verbose_count": "Existem {items}.",
|
||||
"items": {
|
||||
"users": "nenhum usuário | usuário | {c} usuários",
|
||||
"services": "nenhum serviço | serviço | {c} serviços",
|
||||
"permissions": "nenhuma permissão | permissão | {c} permissões",
|
||||
"logs": "sem logs | log | {c} logs",
|
||||
"installed_apps": "nenhum app instalado | app instalado | {c} apps instalados",
|
||||
"groups": "nenhum grupo | grupo | {c} grupos",
|
||||
"domains": "nenhum domínio | domínio | {c} domínios",
|
||||
"backups": "nenhum backup | backup | {c} backups",
|
||||
"apps": "nenhum app | spp | {c} apps"
|
||||
},
|
||||
"issues": "{count} problemas",
|
||||
"ignored": "{count} ignorado",
|
||||
"ignore": "Ignorar",
|
||||
"hook_data_xmpp_desc": "Configurações de sala e de usuário, upload de arquivos",
|
||||
"hook_data_xmpp": "Dados XMPP",
|
||||
"hook_data_mail_desc": "Raw emails armazenados no servidor",
|
||||
"hook_data_home_desc": "Dados do usuário estão em /home/USER",
|
||||
"hook_data_home": "Dados do usuário",
|
||||
"hook_conf_manually_modified_files": "Configurações modificadas manualmente",
|
||||
"hook_conf_ynh_settings": "Configurações YunoHost",
|
||||
"history": {
|
||||
"methods": {
|
||||
"PUT": "modificar",
|
||||
"POST": "criar/executar",
|
||||
"GET": "ler",
|
||||
"DELETE": "deletar"
|
||||
},
|
||||
"last_action": "Última ação:",
|
||||
"title": "Histórico",
|
||||
"is_empty": "Nada no histórico por agora."
|
||||
},
|
||||
"groups_and_permissions_manage": "Gerenciar grupos e permissões",
|
||||
"groups_and_permissions": "Grupos e permissões",
|
||||
"group_specific_permissions": "Permissões específicas de usuário",
|
||||
"group_explain_visitors_needed_for_external_client": "Preste atenção ao fato de que você precisa dar acesso a visitantes em aplicações que serão usados com clientes externos. Por exemplo, esse é o caso do Nextcloud se quiser usar um cliente de sincronização no seu smartphone ou computador desktop.",
|
||||
"group_explain_visitors": "Esse é um grupo especial que representa visitantes anônimos",
|
||||
"group_explain_all_users": "Esse é um grupo especial que contém todas as contas de usuário do servidor",
|
||||
"group_new": "Novo grupo",
|
||||
"group_add_permission": "Adicionar uma permissão",
|
||||
"group_add_member": "Adicionar um usuário",
|
||||
"group_format_name_help": "Pode-se usar caracteres alfanuméricos e underscore",
|
||||
"group_visitors": "Visitantes",
|
||||
"group_all_users": "Todos os usuários",
|
||||
"group_name": "Nome do grupo",
|
||||
"group": "Grupo",
|
||||
"go_back": "Voltar",
|
||||
"from_to": "de {0} a {1}",
|
||||
"form_input_example": "Exemplo: {exemple}",
|
||||
"form_errors": {
|
||||
"required": "Campo obrigatório.",
|
||||
"passwordMatch": "As senhas não são iguais.",
|
||||
"passwordLenght": "A senha deve ser ter pelo menos 8 caracteres.",
|
||||
"number": "O valor deve ser um número.",
|
||||
"notInUsers": "O usuário '{value}' já existe.",
|
||||
"minValue": "Valor deve ser um número maior ou igual a {min}.",
|
||||
"name": "Nomes não podem incluir caracteres especiais exceto <code>,.'</code>",
|
||||
"githubLink": "A url deve ser um repositório Github válido",
|
||||
"emailForward": "Encaminhamento de email inválido: deve ser composto somente de caracteres alfanuméricos e <code>_.-+</code> (e.g. alguem@exemplo.com, 4algu-3m@exemplo.com)",
|
||||
"email": "Email inválido: deve ser composto somente por caracteres alfanuméricos e <code>_.</code> (e.g. alguem@exemplo.com, 4algu-3m@exemplo.com)",
|
||||
"dynDomain": "Nome de domínio inválido: Deve ser composto somente por caracteres alfanuméricos e traço",
|
||||
"domain": "Nome de domínio inválido: Deve ser composto somente por caracteres alfanuméricos minúsculos, ponto e traço",
|
||||
"between": "O valor deve ser entre {min} e {max}.",
|
||||
"alphalownum_": "O valor só deve conter caracteres alfanuméricos minúsculos e o underscore.",
|
||||
"alpha": "O valor só pode ter caracteres alfanuméricos."
|
||||
},
|
||||
"domain_delete_forbidden_desc": "Você não pode remover '{domínio}' por ele ser o domínio padrão, você precisa escolher outro domínio (ou <a href='#/domains/add'> criar um novo</a>) e setá-lo como domínio padrão.",
|
||||
"domain_add_dyndns_forbidden": "Você já esta inscrito a um domínio DynDNS, pode pedir para remover seu domínio DynDNS atual no forum <a href='//forum.yunohost.org/t/nohost-domain-recovery-suppression-de-domaine-en-nohost-me-noho-st-et-ynh-fr/442'> no thread dedicado</a>.",
|
||||
"api_not_found": "Parece que o administrador web tentou consultar algo que não existe.",
|
||||
"footer": {
|
||||
"donate": "Doar",
|
||||
"help": "Precisa de ajuda?",
|
||||
"documentation": "Documentação"
|
||||
},
|
||||
"footer_version": "Com tecnologia <a href='https://yunohost.org'> YunoHost </a> {version} ({repo}).",
|
||||
"experimental_warning": "Atenção: essa funcionalidade é experimental e não é considerada estável, você não deveria usá-la a não ser que saiba o que está fazendo.",
|
||||
"experimental": "Experimental",
|
||||
"everything_good": "Tudo bom!",
|
||||
"error_connection_interrupted": "O servidor fechou a conexão em vez de responder. O nginx ou yunohost-api foi reiniciado ou parado por algum motivo?",
|
||||
"error": "Erro",
|
||||
"enabled": "Habilitado",
|
||||
"disabled": "Desabilitado",
|
||||
"run_first_diagnosis": "Executar diagnóstico inicial",
|
||||
"diagnosis_explanation": "A função de diagnóstico irá tentar identificar problemas comuns nos diferentes aspectos de seu servidor para ter certeza que tudo funcione corretamente. O diagnóstico roda duas vezes ao dia e um email é enviado ao administrador se algum problema for encontrado. Note que alguns testes podem não ser relevantes se você não quiser usar alguma funcionalidade específica (como por exemplo XMPP) ou falhar se você tiver um setup complexo. Nesses casos, e se você souber o que você está fazendo, não há problema em ignorar os erros ou alertas correspondentes.",
|
||||
"diagnosis_first_run": "A função de diagnóstico irá tentar identificar problemas comuns nos diferentes aspectos de seu servidor para ter certeza que tudo funcione corretamente. Não se assuste se você ver vários erros depois de configurar seu servidor: estes te ajudarão a identificar problemas e irão te guiar a consertá-los. O diagnóstico também rodará duas vezes ao dia e um email é enviado ao administrador se algum problema for encontrado.",
|
||||
"dead": "Inativo",
|
||||
"day_validity": " Expirou | 1 dia | {count} dias",
|
||||
"confirm_app_install": "Tem certeza que quer instalar esta aplicação?",
|
||||
"confirm_group_add_access_permission": "Você tem certeza que quer garantir acesso {perm} para {name}? Esse acesso aumenta significativamente a superfície de ataque se {name} for uma pessoa maliciosa. Você só deve fazer isso se você CONFIAR nessa pessoa/grupo.",
|
||||
"common": {
|
||||
"lastname": "Sobrenome",
|
||||
"firstname": "Nome"
|
||||
},
|
||||
"code": "Código",
|
||||
"app_show_categories": "Mostrar categorias",
|
||||
"app_manage_label_and_tiles": "Gerir etiquetas e tiles",
|
||||
"app_install_parameters": "Configurações de instalação",
|
||||
"app_config_panel_no_panel": "Essa aplicação não tem nenhuma configuração disponível",
|
||||
"app_config_panel_label": "Configurar esse app",
|
||||
"app_config_panel": "Configurar painel",
|
||||
"app_choose_category": "Escolha uma categoria",
|
||||
"app_actions_label": "Executar ações",
|
||||
"app_actions": "Ações",
|
||||
"api_waiting": "Esperando a resposta do servidor...",
|
||||
"api_errors_titles": {
|
||||
"APIConnexionError": "YunoHost encontrou um erro de conexão",
|
||||
"APINotRespondingError": "A YunoHost API não está respondendo",
|
||||
"APINotFoundError": "A YunoHost API não pôde encontrar uma rota",
|
||||
"APIInternalError": "YunoHost encontrou um erro interno",
|
||||
"APIBadRequestError": "YunoHost encontrou um erro",
|
||||
"APIError": "YunoHost encontrou um erro inesperado"
|
||||
},
|
||||
"api_error": {
|
||||
"view_error": "Ver erro",
|
||||
"sorry": "Sinto muito por isso.",
|
||||
"server_said": "Enquanto processava a ação, o servidor disse:",
|
||||
"info": "A seguinte informação pode ser útil para a pessoa que está te ajudando:",
|
||||
"help": "Você deve procurar por ajuda <a href=\"https://forum.yunohost.org/\">no fórum</a> ou <a href=\"https://chat.yunohost.org/\">no chat</a> para resolver a situação, ou reportar o bug <a href=\"https://github.com/YunoHost/issues\"> no bugtracker</a>.",
|
||||
"error_message": "Mensagem de erro:"
|
||||
},
|
||||
"api": {
|
||||
"query_status": {
|
||||
"warning": "Completado com erros ou alertas",
|
||||
"success": "Completado com sucesso",
|
||||
"pending": "Em progresso",
|
||||
"error": "Falhou"
|
||||
},
|
||||
"processing": "O servidor está processando a ação..."
|
||||
},
|
||||
"address": {
|
||||
"local_part_description": {
|
||||
"email": "Escolha a parte local para seu email.",
|
||||
"domain": "Escolha um subdomínio."
|
||||
},
|
||||
"domain_description": {
|
||||
"email": "Escolha um domínio para seu email.",
|
||||
"domain": "Escolha um domínio."
|
||||
}
|
||||
},
|
||||
"purge_user_data_warning": "A eliminação dos dados do usuário não é reversível. Esteja certo de que você sabe o que está fazendo!",
|
||||
"purge_user_data_checkbox": "Eliminar os dados de {name}? (Isso irá remover o conteúdo de seus diretórios home e email)",
|
||||
"revert_to_selfsigned_cert": "Reverter a um certificado auto assinado",
|
||||
"revert_to_selfsigned_cert_message": "Se você realmente desejar, você pode reinstalar um certificado auto assinado (Não recomendado)",
|
||||
"regenerate_selfsigned_cert": "Regenerar certificado auto assinado",
|
||||
"regenerate_selfsigned_cert_message": "Se quiser, você pode regenerar o certificado auto assinado.",
|
||||
"manually_renew_letsencrypt": "Renovar manualmente agora",
|
||||
"manually_renew_letsencrypt_message": "O certificado será automaticamente renovado durante os últimos 15 dias de validade. Você pode renová-lo manualmente se quiser. (Não recomendado).",
|
||||
"install_letsencrypt_cert": "Instalar um certificado Let's Encrypt",
|
||||
"domain_is_eligible_for_ACME": "Esse domínio parece estar corretamente configurado para instalar um certificado do Let's Encrypt!",
|
||||
"domain_not_eligible_for_ACME": "Esse domínio não parece pronto para um certificado Let's Encrypt. Por favor cheque suas configurações de DNS e acessibilidade do servidor HTTP. A seção de 'Registros DNS' e 'Web' na <a href='#/diagnosis'>página de diagnósticos</a> pode te ajudar a entender o que está configurado errado.",
|
||||
"validity": "Validade",
|
||||
"certificate_authority": "Autoridade do certificado",
|
||||
"certificate_status": "Status do certificado",
|
||||
"certificate": "Certificado",
|
||||
"confirm_cert_revert_to_selfsigned": "Tem certeza que quer reverter esse domínio para um certificado auto assinado?",
|
||||
"confirm_cert_manual_renew_LE": "Tem certeza que você quer manualmente renovar um certificado Let's Encrypt para esse domínio agora?",
|
||||
"confirm_cert_regen_selfsigned": "Tem certeza que quer regenerar um certificado auto assinado para esse domínio?",
|
||||
"confirm_cert_install_LE": "Tem certeza que quer instalar um certificado Let's Encrypt para esse domínio?",
|
||||
"ssl_certificate": "Certificado SSL",
|
||||
"certificate_manage": "Gerenciar certificado SSL",
|
||||
"certificate_alert_unknown": "Status desconhecido",
|
||||
"certificate_alert_great": "Ótimo! Você está usando um certificado Let's Encrypt válido!",
|
||||
"certificate_alert_good": "Ok, está tudo certo com o certificado atual!",
|
||||
"certificate_alert_about_to_expire": "ATENÇÃO: O certificado atual está a ponto de expirar! Ele NÃO será renovado automaticamente!",
|
||||
"certificate_alert_letsencrypt_about_to_expire": "O certificado atual está a ponto de expirar. Deve ser renovado automaticamente em breve.",
|
||||
"certificate_alert_selfsigned": "ATENÇÃO: O certificado atual é auto assinado. Navegadores irão mostrar uma aviso de cautela à novos visitantes!",
|
||||
"certificate_alert_not_valid": "CRÍTICO: O certificado atual não é válido! HTTPS não funcionará!",
|
||||
"warnings": "{count} avisos",
|
||||
"version": "Versão",
|
||||
"user_mailbox_use": "Espaço utilizado",
|
||||
"user_mailbox_quota": "Quota de armazenamento de email",
|
||||
"user_interface_link": "Interface de usuário",
|
||||
"tip_about_user_email": "Os usuários são criados com um endereço de email associado (uma conta XMPP) com o formato usuario@domain.tld. Endereços de emails adicionais e redirecionamentos de email podem ser adicionados mais tarde pelo usuário ou pelo administrador.",
|
||||
"user_emailforward_add": "Adicionar um redirecionamento de email",
|
||||
"user_emailaliases_add": "Adicionar uma alias de email",
|
||||
"unmaintained_details": "Esse app não tem sido atualizado por bastante tempo e o último responsável por ele ou foi embora ou não tem mais tempo para manter esse app. Sinta-se livre para checar o repositório do app para oferecer sua ajuda",
|
||||
"unmaintained": "Sem manutenção",
|
||||
"unknown": "Desconhecido",
|
||||
"unignore": "Não ignorar mais",
|
||||
"traceback": "Traceback",
|
||||
"tools_webadmin_settings": "Configurações do Web-admin",
|
||||
"tools_webadmin": {
|
||||
"transitions": "Animações de transição das páginas",
|
||||
"experimental_description": "Te dá acesso a funcionalidades experimentais. São consideradas instáveis e podem quebrar seu sistema. <br> Habilite isso apenas se você souber o que estiver fazendo.",
|
||||
"experimental": "Modo experimental",
|
||||
"cache_description": "Considere desabilitar o cache se você pretende usar a CLI enquanto navega nessa interface de web-admin.",
|
||||
"cache": "Cache",
|
||||
"fallback_language_description": "Linguagem que será usado caso a tradução não esteja disponível para a linguagem principal.",
|
||||
"fallback_language": "Linguagem substituta",
|
||||
"language": "Língua"
|
||||
},
|
||||
"tools_shutdown_reboot": "Desligar/Reiniciar",
|
||||
"tools_shuttingdown": "Seu servidor está sendo desligado. Enquanto ele estiver desligado, você não conseguirá usar a interface de administração.",
|
||||
"tools_shutdown_done": "Desligando...",
|
||||
"tools_shutdown_btn": "Desligar",
|
||||
"tools_shutdown": "Desligar seu servidor",
|
||||
"tools_rebooting": "Seu servidor está reiniciando. Para retornar à interface de administração você precisa esperar que seu serve fique disponível. Você pode esperar para que o formulário de login apareça ou checar se já está disponível atualizando essa página (F5).",
|
||||
"tools_reboot_done": "Reiniciando...",
|
||||
"tools_reboot_btn": "Reiniciar",
|
||||
"tools_reboot": "Reiniciar o servidor",
|
||||
"tools_power_up": "Seu servidor pare estar acessível, você pode tentar fazer login agora.",
|
||||
"system_upgrade_all_packages_btn": "Atualizar todos os pacotes",
|
||||
"system_upgrade_all_applications_btn": "Atualizar todas as aplicações",
|
||||
"skip": "Pular",
|
||||
"since": "desde",
|
||||
"select_none": "Selecionar nada",
|
||||
"select_all": "Selecionar tudo",
|
||||
"search": {
|
||||
"not_found": "Existem {items} que correspondem ao seu critério.",
|
||||
"for": "Procurar por {items}..."
|
||||
},
|
||||
"run": "Executar",
|
||||
"human_routes": {
|
||||
"users": {
|
||||
"update": "Atualizar o usuário '{name}'",
|
||||
"delete": "Deletar usuário '{name}'",
|
||||
"create": "Criar usuário '{name}'"
|
||||
},
|
||||
"upgrade": {
|
||||
"app": "Atualizar o app '{app}'",
|
||||
"apps": "Atualizar todos os apps",
|
||||
"system": "Atualizar o sistema"
|
||||
},
|
||||
"update": "Checar por atualizações",
|
||||
"shutdown": "Desligar o servidor",
|
||||
"share_logs": "Gerar link para o log '{name}'",
|
||||
"services": {
|
||||
"stop": "Parar o serviço '{name}'",
|
||||
"start": "Iniciar o serviço '{name}'",
|
||||
"restart": "Reiniciar o serviço '{name}'"
|
||||
},
|
||||
"reboot": "Reiniciar o servidor",
|
||||
"postinstall": "Executar o post-install",
|
||||
"permissions": {
|
||||
"remove": "Remover acesso a '{perm}' de '{name}'",
|
||||
"add": "Permitir '{name}'acessar '{perm}'"
|
||||
},
|
||||
"migrations": {
|
||||
"skip": "Pular migrações",
|
||||
"run": "Executar migrações"
|
||||
},
|
||||
"groups": {
|
||||
"remove": "Remover '{user}' do grupo '{name}'",
|
||||
"add": "Adicionar '{user}' ao grupo '{name}'",
|
||||
"delete": "Remover grupo '{name}'",
|
||||
"create": "Criar grupo '{name}'"
|
||||
},
|
||||
"firewall": {
|
||||
"upnp": "{action} UPnP",
|
||||
"ports": "{action} porta {port} ({protocol}, {connection})"
|
||||
},
|
||||
"domains": {
|
||||
"set_default": "Escolher '{name}' como domínio padrão",
|
||||
"revert_to_selfsigned": "Reverter para certificado auto assinado para '{name}'",
|
||||
"regen_selfsigned": "Renovar certificado auto assinado para '{name}'",
|
||||
"manual_renew_LE": "Renovar certificado para '{name}'",
|
||||
"install_LE": "Instalar certificado para '{name}'",
|
||||
"delete": "Remover domínio '{name}'",
|
||||
"add": "Adicionar domínio '{name}'"
|
||||
},
|
||||
"diagnosis": {
|
||||
"unignore": {
|
||||
"warning": "Não ignorar aviso",
|
||||
"error": "Não ignorar erro"
|
||||
},
|
||||
"run_specific": "Executar diagnóstico '{description}'",
|
||||
"run": "Executar diagnóstico",
|
||||
"ignore": {
|
||||
"warning": "Ignorar aviso",
|
||||
"error": "Ignorar erro"
|
||||
}
|
||||
},
|
||||
"backups": {
|
||||
"restore": "Restaurar backup '{name}'",
|
||||
"delete": "Deletar backup '{name]'",
|
||||
"create": "Criar um backup"
|
||||
},
|
||||
"apps": {
|
||||
"update_config": "Atualizar a configuração do app '{name}'",
|
||||
"uninstall": "Desinstalar o app '{name}'",
|
||||
"perform_action": "Executar ação '{action}' do app '{name}'",
|
||||
"set_default": "Redirecionar domínio root de '{domain}' para '{name}'",
|
||||
"install": "Instalar o app '{name}'",
|
||||
"change_url": "Mudar url de acesso de '{name}'",
|
||||
"change_label": "Mudar label de '{prevName}' para '{nextName}'"
|
||||
},
|
||||
"adminpw": "Mudar senha do administrador"
|
||||
},
|
||||
"restart": "Reiniciar",
|
||||
"rerun_diagnosis": "Reexecutar o diagnóstico",
|
||||
"readme": "Leia-me",
|
||||
"postinstall_set_password": "Escolher a senha do administrador",
|
||||
"postinstall_set_domain": "Escolher domínio principal",
|
||||
"postinstall": {
|
||||
"force": "Forçar o post-install"
|
||||
},
|
||||
"permission_show_tile_enabled": "Mostrar o título no portal do usuário",
|
||||
"permission_main": "Etiqueta principal",
|
||||
"permission_corresponding_url": "URL correspondente",
|
||||
"pending_migrations": "Existem algumas migrações pendentes esperando serem executadas. Por favor vá para <a href='#/tools/migrations'>Ferramentas > Migrações</a> para visualizá-las.",
|
||||
"logs_more": "Exibir mais linhas",
|
||||
"logs_share_with_yunopaste": "Compartilhar com YunoPaste",
|
||||
"logs_context": "Contexto",
|
||||
"logs_path": "Caminho",
|
||||
"logs_started_at": "Início",
|
||||
"logs_ended_at": "Fim",
|
||||
"logs_error": "Erro",
|
||||
"logs_no_logs_registered": "Nenhum log associado a esta categoria",
|
||||
"logs_app": "Logs de aplicações",
|
||||
"logs_service": "Logs de serviço",
|
||||
"logs_access": "Lista de acessos e bans",
|
||||
"logs_system": "Logs do Kernel e outros eventos de baixo nível",
|
||||
"logs_package": "Histórico de gerenciamento de pacotes Debian",
|
||||
"logs_history": "Histórico de comandos executados no sistema",
|
||||
"logs_operation": "Operações feitas no sistema com YunoHost",
|
||||
"logs_suboperations": "Sub-operações",
|
||||
"logs": "Logs",
|
||||
"placeholder": {
|
||||
"domain": "meu-dominio.com",
|
||||
"groupname": "Nome do meu grupo",
|
||||
"lastname": "Silva",
|
||||
"firstname": "Pedro",
|
||||
"username": "pedrosilva"
|
||||
},
|
||||
"perform": "Executar",
|
||||
"operation_failed_explanation": "Essa operação falhou! Sinto muito :( Você pode tentar <a href='https://yunohost.org/help'>pedir por ajuda</a>. Por favor informe *o log completo* da operação para as pessoas que vão te ajudar. Você pode fazer isso clicando no botão verde \"Compartilhar com Yunopaste\". Quando compartilhar os logs, YunoHost irá automaticamente tentar anonimizar dados privados como nome de domínio e IPs.",
|
||||
"others": "Outros",
|
||||
"orphaned_details": "Essa aplicação não está sendo mantida já faz bastante tempo. Ela pode estar funcionando, mas não receberá nenhuma atualização enquanto nenhum voluntário se encarregar dela. Sinta-se livre em contribuir para revivê-la!",
|
||||
"orphaned": "Não mantido",
|
||||
"only_decent_quality_apps": "Somente aplicações de qualidade decente",
|
||||
"only_working_apps": "Somente aplicações que funcionem",
|
||||
"only_highquality_apps": "Somente aplicações de alta qualidade",
|
||||
"nobody": "Ninguém",
|
||||
"migrations_disclaimer_not_checked": "Essa migração requer que você aceite seus termos de uso antes de ser executada.",
|
||||
"migrations_disclaimer_check_message": "Eu li e compreendo os termos de utilização",
|
||||
"migrations_no_done": "Não há migrações anteriores",
|
||||
"migrations_no_pending": "Nenhuma migração pendente",
|
||||
"migrations_done": "Migrações anteriores",
|
||||
"migrations_pending": "Migrações pendentes",
|
||||
"migrations": "Migrações",
|
||||
"mailbox_quota_placeholder": "Deixe como 0 para desabilitar.",
|
||||
"mailbox_quota_example": "700M é um CD, 4700M é um DVD",
|
||||
"mailbox_quota_description": "Escolha um limite de armazenamento para conteúdo de email. <br> Sete como 0 para desabilitar.",
|
||||
"local_archives": "Arquivamentos locais",
|
||||
"license": "Licença",
|
||||
"last_ran": "Última vez executado:",
|
||||
"good_practices_about_user_password": "Você está a ponto de definir uma nova senha de usuário. A senha deve ter ao menos 8 caracteres - embora seja uma boa prática usar senhas maiores (i.e. uma frase como senha) e/ou usar vários tipos de caracteres (maiúsculo, minúsculo, dígitos e caracteres especiais).",
|
||||
"good_practices_about_admin_password": "Você está a ponto de definir uma nova senha de administrador. A senha deve ter ao menos 8 caracteres - embora seja uma boa prática usar senhas maiores (i.e. uma frase como senha) e/ou usar vários tipos de caracteres (maiúsculo, minúsculo, dígitos e caracteres especiais)."
|
||||
}
|
||||
|
|
|
@ -33,8 +33,8 @@
|
|||
"confirm_app_default": "Вы хотите сделать это приложение приложением по умолчанию?",
|
||||
"confirm_change_maindomain": "Вы хотите изменить главный домен?",
|
||||
"confirm_delete": "Вы хотите удалить {name}1 ?",
|
||||
"confirm_firewall_open": "Вы хотите открыть порт {port}1 ? (протокол {protocol}2, соединение {connection}3)",
|
||||
"confirm_firewall_close": "Вы хотите закрыть порт {port}1 ? (протокол {protocol}2, соединение {connection}3)",
|
||||
"confirm_firewall_allow": "Вы хотите открыть порт {port}1 ? (протокол {protocol}2, соединение {connection}3)",
|
||||
"confirm_firewall_disallow": "Вы хотите закрыть порт {port}1 ? (протокол {protocol}2, соединение {connection}3)",
|
||||
"confirm_install_custom_app": "Установка сторонних приложений может повредить безопасности вашей системы. Установка на вашу ответственность.",
|
||||
"confirm_install_domain_root": "Вы больше не сможете устанавливать приложения на {domain}1. Продолжить?",
|
||||
"confirm_restore": "Вы хотите восстановить {name}1 ?",
|
||||
|
@ -138,7 +138,7 @@
|
|||
"manually_renew_letsencrypt_message": "Сертификат будет автоматически обновлён в последние 15 дней своего действия. Вы может вручную обновить его, если хотите. (Не рекомендуется).",
|
||||
"manually_renew_letsencrypt": "Теперь обновить вручную",
|
||||
"confirm_postinstall": "Вы начинаете процесс конфигурации домена {domain}. Это займёт несколько минут, *не прерывайте процесс*.",
|
||||
"domain_add_dns_doc": "… я <a href='//yunohost.org/dns'>set my DNS установил мой DNS правильно</a>.",
|
||||
"domain_add_dns_doc": "… я <a href='//yunohost.org/dns_config' target='_blank'>set my DNS установил мой DNS правильно</a>.",
|
||||
"tools": "Инструменты",
|
||||
"tools_adminpw": "Смените пароль администратора",
|
||||
"tools_adminpw_current": "Действующий пароль",
|
||||
|
@ -195,7 +195,7 @@
|
|||
"postinstall_domain": "Это первое доменное имя, связанное с сервером YonoHost, то есть имя, которым будут пользоваться пользователи вашего сервера, чтобы попасть на портал аутентификации. Оно будет видно каждому, выбирайте его тщательно.",
|
||||
"postinstall_intro_1": "Поздравляем! YunoHost успешно установлен.",
|
||||
"postinstall_intro_2": "Осталось сделать две настройки конфигурации, чтобы активировать службы вашего сервера.",
|
||||
"postinstall_intro_3": "Вы можете получить больше информации, <a href='//yunohost.org/postinstall' target='_blank'>посетив страницу документации</a>",
|
||||
"postinstall_intro_3": "Вы можете получить больше информации, <a href='//yunohost.org/en/install/hardware:vps_debian#fa-cog-proceed-with-the-initial-configuration' target='_blank'>посетив страницу документации</a>",
|
||||
"postinstall_password": "Этот пароль нужен для того, чтобы управлять вашим сервером. Не торопитесь, проявите мудрость, создавая его.",
|
||||
"previous": "Предыдущий",
|
||||
"protocol": "Протокол",
|
||||
|
@ -277,15 +277,16 @@
|
|||
"all_apps": "Все приложения",
|
||||
"api_errors_titles": {
|
||||
"APIConnexionError": "Ошибка внутри пакета connexion",
|
||||
"APINotRespondingError": "Апи Yunohost не отвечает",
|
||||
"APIInternalError": "Внутренняя ошибка на сервере Yunohost",
|
||||
"APIBadRequestError": "Ошибка на сервере Yunohost",
|
||||
"APIError": "Неожиданная ошибка на сервере Yunohost"
|
||||
"APINotRespondingError": "Апи YunoHost не отвечает",
|
||||
"APIInternalError": "Внутренняя ошибка на сервере YunoHost",
|
||||
"APIBadRequestError": "Ошибка на сервере YunoHost",
|
||||
"APIError": "Неожиданная ошибка на сервере YunoHost"
|
||||
},
|
||||
"api_error": {
|
||||
"sorry": "Нам очень жаль.",
|
||||
"info": "Следующая информация может быть полезня для помогающего человека:",
|
||||
"help": "Вы можете обратиться за помощью на <a href=\"https://forum.yunohost.org/\">форум</a> или в <a href=\"https://chat.yunohost.org/\">чат</a>, или сообщить о неполадке в <a href=\"https://github.com/YunoHost/issues\">багтрекер</a>."
|
||||
"help": "Вы можете обратиться за помощью на <a href=\"https://forum.yunohost.org/\">форум</a> или в <a href=\"https://chat.yunohost.org/\">чат</a>, или сообщить о неполадке в <a href=\"https://github.com/YunoHost/issues\">багтрекер</a>.",
|
||||
"error_message": "Сообщение об ошибке"
|
||||
},
|
||||
"all": "Все",
|
||||
"address": {
|
||||
|
@ -297,5 +298,14 @@
|
|||
"email": "Выберите домен для вашей почты.",
|
||||
"domain": "Выберите домен."
|
||||
}
|
||||
},
|
||||
"api": {
|
||||
"query_status": {
|
||||
"warning": "Успешно завершено с ошибками или предупреждениями",
|
||||
"success": "Успешно завершено",
|
||||
"pending": "В процессе",
|
||||
"error": "Неудачно"
|
||||
},
|
||||
"processing": "Сервер обрабатывает действие…"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -73,7 +73,7 @@
|
|||
"logs_path": "Sökväg",
|
||||
"add": "Lägg till",
|
||||
"install_name": "Installera {id}",
|
||||
"domain_add_dns_doc": "… och jag har <a href='//yunohost.org/dns'>konfigurerat min DNS korrekt</a>.",
|
||||
"domain_add_dns_doc": "… och jag har <a href='//yunohost.org/dns_config' target='_blank'>konfigurerat min DNS korrekt</a>.",
|
||||
"error_server_unexpected": "Oväntat serverfel",
|
||||
"previous": "Föregående",
|
||||
"save": "Spara",
|
||||
|
|
528
app/src/i18n/locales/uk.json
Normal file
528
app/src/i18n/locales/uk.json
Normal file
|
@ -0,0 +1,528 @@
|
|||
{
|
||||
"custom_app_install": "Установлення своїх застосунків",
|
||||
"created_at": "Створено у",
|
||||
"connection": "З'єднання",
|
||||
"confirm_reboot_action_shutdown": "Ви справді бажаєте вимкнути ваш сервер?",
|
||||
"confirm_reboot_action_reboot": "Ви справді бажаєте перезавантажити свій сервер?",
|
||||
"confirm_upnp_disable": "Ви справді бажаєте вимкнути UPnP?",
|
||||
"confirm_upnp_enable": "Ви справді бажаєте увімкнути UPnP?",
|
||||
"confirm_update_specific_app": "Ви справді бажаєте оновити {app}?",
|
||||
"confirm_update_system": "Ви справді бажаєте оновити всі системні пакети?",
|
||||
"confirm_update_apps": "Ви справді бажаєте оновити всі застосунки?",
|
||||
"confirm_uninstall": "Ви справді бажаєте видалити {name}?",
|
||||
"confirm_install_app_inprogress": "ПОПЕРЕДЖЕННЯ! Це все ще експериментальний застосунок (або взагалі спеціально неробочий) і з великою ймовірністю він зламає вашу систему. Наполегливо радимо НЕ встановлювати, якщо ви не впевнені в тому, що робите. Ви бажаєте прийняти цей ризик?",
|
||||
"confirm_service_stop": "Ви справді бажаєте зупинити {name}?",
|
||||
"confirm_service_start": "Ви бажаєте почати {name}?",
|
||||
"confirm_firewall_allow": "Ви справді бажаєте відкрити порт {port} (протокол: {protocol}, з'єднання: {connection})",
|
||||
"confirm_service_restart": "Ви точно бажаєте перезапустити {name}?",
|
||||
"confirm_restore": "Ви бажаєте відновити {name}?",
|
||||
"confirm_postinstall": "Ви запускаєте післявстановлення на домені {domain}. Це може зайняти кілька хвилин, *не переривайте перебіг*.",
|
||||
"confirm_migrations_skip": "Не рекомендовано пропускати міграції. Ви точно в цьому впевнені?",
|
||||
"confirm_install_app_lowquality": "Увага: цей застосунок може працювати, але його погано інтегровано з YunoHost. Деякі можливості типу SSO або резервних копій можуть бути не доступні.",
|
||||
"confirm_app_install": "Ви справді бажаєте встановити цей застосунок?",
|
||||
"confirm_install_domain_root": "Ви більше не зможете встановлювати застосунки на {domain}. Продовжити?",
|
||||
"confirm_install_custom_app": "ПОПЕРЕДЖЕННЯ! Встановлення застосунків сторонніх виробників може порушити цілісність і безпеку вашої системи. Вам, імовірно, НЕ слід встановлювати їх, якщо ви не знаєте, що робите. Чи готові ви піти на такий ризик?",
|
||||
"confirm_group_add_access_permission": "Ви справді бажаєте надати {perm} доступ до {name}? Такий доступ значно збільшує ділянку нападу, якщо {name} виявиться зловмисником. Ви повинні робити це тільки в тому випадку, якщо ви довіряєте цій людині/групі.",
|
||||
"confirm_firewall_disallow": "Ви справді бажаєте закрити порт {port} (протокол: {protocol}, з'єднання: {connection})",
|
||||
"confirm_delete": "Ви бажаєте видалити {name}?",
|
||||
"confirm_change_maindomain": "Ви бажаєте змінити головний домен?",
|
||||
"confirm_app_default": "Ви бажаєте зробити цей застосунок типовим?",
|
||||
"confirm_app_change_url": "Ви бажаєте змінити URL-адресу доступу до застосунку?",
|
||||
"configuration": "Конфігурація",
|
||||
"common": {
|
||||
"lastname": "Прізвище",
|
||||
"firstname": "Ім'я"
|
||||
},
|
||||
"code": "Код",
|
||||
"close": "Закрити",
|
||||
"check": "Перевірити",
|
||||
"catalog": "Каталог",
|
||||
"cancel": "Скасувати",
|
||||
"both": "Обидва",
|
||||
"begin": "Почати",
|
||||
"backup_new": "Нова резервна копія",
|
||||
"backup_create": "Створіть резервну копію",
|
||||
"backup_content": "Уміст резервної копії",
|
||||
"backup_action": "Створити резервну копію",
|
||||
"backup": "Резервне копіювання",
|
||||
"archive_empty": "Порожній архів",
|
||||
"applications": "Застосунки",
|
||||
"app_state_working_explanation": "Творець застосунку позначив його як \"працює\". Це означає, що він повинен бути робочим (на рівні застосунку), але не перевірений спільнотою. Він може містити помилки або не повністю інтегрований з YunoHost.",
|
||||
"app_state_working": "працює",
|
||||
"app_state_highquality_explanation": "Цей застосунок добре інтегрований з YunoHost принаймні з останнього року.",
|
||||
"app_state_highquality": "висока якість",
|
||||
"app_state_lowquality_explanation": "Цей застосунок може бути робочим, але все ще може містити помилки або не повністю інтегрований з YunoHost, чи не дотримується сучасних вимог програмування.",
|
||||
"app_state_lowquality": "низька якість",
|
||||
"app_state_notworking_explanation": "Творець застосунку позначив його як не робочий. ЦЕЙ ЗАСТОСУНОК ЗЛАМАЄ ВАШУ СИСТЕМУ!",
|
||||
"app_state_notworking": "не працює",
|
||||
"app_state_inprogress_explanation": "Творець позначив цей застосунок як не готовий до щоденного користування. БУДЬТЕ УВАЖНІ!",
|
||||
"app_state_inprogress": "поки що не працює",
|
||||
"app_show_categories": "Показати категорії",
|
||||
"app_no_actions": "Цей застосунок не робить жодних дій",
|
||||
"app_make_default": "Зробити типовим",
|
||||
"app_manage_label_and_tiles": "Управління міткою і заголовками",
|
||||
"app_install_parameters": "Установити налаштування",
|
||||
"app_install_custom_no_manifest": "Немає файлу manifest.json",
|
||||
"app_info_uninstall_desc": "Вилучити застосунок.",
|
||||
"app_info_change_url_disabled_tooltip": "Ця можливість ще не реалізована в цьому застосунку",
|
||||
"app_info_default_desc": "Перенаправити корінь (root) сайту в цей застосунок ({domain}).",
|
||||
"app_info_changeurl_desc": "Змінити посилання доступу до цього застосунку (домен і/чи шлях).",
|
||||
"app_info_access_desc": "Групи / користувачі, у яких є доступ до цього застосунку:",
|
||||
"app_config_panel_no_panel": "Цей застосунок не має доступної конфігурації",
|
||||
"app_config_panel_label": "Конфігурувати цей застосунок",
|
||||
"app_config_panel": "Панель конфігурації",
|
||||
"app_choose_category": "Оберіть категорію",
|
||||
"app_actions_label": "Вживати дії",
|
||||
"app_actions": "Дії",
|
||||
"api_waiting": "Очікування відповіді сервера...",
|
||||
"api_not_responding": "API YunoHost не відповідає. Може 'yunohost-api' не працює або щойно перезапускався?",
|
||||
"api_not_found": "Схоже, що вебадмін намагався запросити щось відсутнє.",
|
||||
"all_apps": "Усі застосунки",
|
||||
"api_errors_titles": {
|
||||
"APIConnexionError": "YunoHost зіткнувся з помилкою з'єднання",
|
||||
"APINotRespondingError": "API YunoHost не відповідає",
|
||||
"APINotFoundError": "API YunoHost не зміг знайти маршрут",
|
||||
"APIInternalError": "Внутрішня помилка на сервері YunoHost",
|
||||
"APIBadRequestError": "Помилка на сервері YunoHost",
|
||||
"APIError": "Несподівана помилка на сервері YunoHost"
|
||||
},
|
||||
"api_error": {
|
||||
"view_error": "Показати помилку",
|
||||
"sorry": "Нам дуже прикро.",
|
||||
"server_said": "Під час оброблення дії сервер повідомив:",
|
||||
"info": "Наступні відомості можуть бути корисними для людини що вам допомагає:",
|
||||
"help": "Ви можете звернутися за допомогою на <a href=\"https://forum.yunohost.org/\">форум</a> або в <a href=\"https://chat.yunohost.org/\">чат</a>, або повідомити про неполадки в <a href=\"https://github.com/YunoHost/issues\">відстежувач похибок</a>.",
|
||||
"error_message": "Повідомлення про помилку:"
|
||||
},
|
||||
"api": {
|
||||
"query_status": {
|
||||
"warning": "Успішно завершено з помилками або попередженнями",
|
||||
"success": "Успішно завершено",
|
||||
"pending": "Обробляється",
|
||||
"error": "Невдало"
|
||||
},
|
||||
"processing": "Сервер обробляє дію..."
|
||||
},
|
||||
"all": "Усе",
|
||||
"administration_password": "Пароль адміністратора",
|
||||
"address": {
|
||||
"local_part_description": {
|
||||
"email": "Оберіть локальну частину вашої пошти.",
|
||||
"domain": "Оберіть піддомен."
|
||||
},
|
||||
"domain_description": {
|
||||
"email": "Оберіть домен для вашої е-пошти.",
|
||||
"domain": "Оберіть домен."
|
||||
}
|
||||
},
|
||||
"add": "Додати",
|
||||
"action": "Дія",
|
||||
"day_validity": " Минуло | 1 день | {count} дні(-ів)",
|
||||
"dead": "Бездіяльний",
|
||||
"delete": "Видалити",
|
||||
"description": "Опис",
|
||||
"details": "Подробиці",
|
||||
"diagnosis": "Діагностика",
|
||||
"run_first_diagnosis": "Провести первинну діагностику",
|
||||
"disable": "Вимкнути",
|
||||
"disabled": "Вимкнено",
|
||||
"dns": "DNS",
|
||||
"domain_add": "Додати домен",
|
||||
"domain_add_dns_doc": "… я <a href='//yunohost.org/dns_config' target='_blank'>встановив мій DNS правильно</a>.",
|
||||
"domain_add_dyndns_doc": "... і я хочу використовувати службу для динамічного DNS.",
|
||||
"domain_add_panel_with_domain": "У мене вже є доменне ім'я…",
|
||||
"domain_add_panel_without_domain": "У мене немає доменного імені…",
|
||||
"domain_default_desc": "Типовий домен — це домен, де користувачі вводять логін і пароль.",
|
||||
"domain_default_longdesc": "Це ваш типовий домен.",
|
||||
"domain_delete_longdesc": "Видалити цей домен",
|
||||
"domain_dns_config": "Конфігурація DNS",
|
||||
"domain_dns_longdesc": "Переглянути конфігурацію DNS",
|
||||
"domain_name": "Доменне ім'я",
|
||||
"domain_visit": "Відвідати",
|
||||
"domain_visit_url": "Відвідати {url}",
|
||||
"domains": "Домени",
|
||||
"download": "Завантажити",
|
||||
"enable": "Увімкнути",
|
||||
"enabled": "Увімкнено",
|
||||
"error": "Помилка",
|
||||
"error_modify_something": "Ви повинні щось змінити",
|
||||
"error_server_unexpected": "Несподівана помилка сервера",
|
||||
"everything_good": "Усе справно!",
|
||||
"experimental": "Експериментальне",
|
||||
"firewall": "Фаєрвол",
|
||||
"footer_version": "Створено <a href='https://yunohost.org'></a> {version} ({repo}).",
|
||||
"footer": {
|
||||
"documentation": "Документація",
|
||||
"help": "Потрібна допомога?",
|
||||
"donate": "Пожертвування"
|
||||
},
|
||||
"form_errors": {
|
||||
"alpha": "Значенням можуть бути тільки букви.",
|
||||
"between": "Значення має бути між {min} і {max}.",
|
||||
"domain": "Неприпустиме доменне ім'я: воно має складатися тільки з букв і чисел у нижньому регістрі, крапок і тире",
|
||||
"dynDomain": "Неприпустиме доменне ім'я: воно має складатися тільки з букв і чисел в нижньому регістрі та тире",
|
||||
"email": "Неприпустима е-пошта: в ній мають бути лише букви та числа <code>_.-</code> (на зразок cholovyaha@example.com, ch0lov-1@example.com)",
|
||||
"githubLink": "URL-адреса має бути дійсним посиланням на репозиторій Github",
|
||||
"name": "Імена не можуть містити спеціальні символи, за винятком <code> ,.'-</code>",
|
||||
"minValue": "Значення має бути числом, рівним або більшим, ніж {min}.",
|
||||
"notInUsers": "Користувач '{value}' вже існує.",
|
||||
"number": "Значення має бути числом.",
|
||||
"passwordLenght": "Пароль має складатися не менше ніж з 8 символів.",
|
||||
"passwordMatch": "Паролі не збігаються.",
|
||||
"required": "Обов'язкове поле.",
|
||||
"alphalownum_": "У значенні можуть бути тільки букви в нижньому регістрі, числа та знак нижнього підкреслення.",
|
||||
"emailForward": "Неприпустима переадресація е-пошти: в ній мають бути лише букви та числа <code>_.-</code> (на зразок cholovyaha@example.com, ch0lov-1@example.com)"
|
||||
},
|
||||
"form_input_example": "Приклад: {example}",
|
||||
"from_to": "від {0} до {1}",
|
||||
"go_back": "Повернутися",
|
||||
"group": "Група",
|
||||
"group_name": "Назва групи",
|
||||
"group_all_users": "Усі користувачі",
|
||||
"group_visitors": "Відвідувачі",
|
||||
"group_format_name_help": "Ви можете використовувати буквено-числові символи та символ підкреслення",
|
||||
"group_add_member": "Додати користувача",
|
||||
"group_add_permission": "Додати дозвіл",
|
||||
"group_new": "Нова група",
|
||||
"group_explain_visitors": "Це спеціальна група, що представляє анонімних відвідувачів",
|
||||
"group_specific_permissions": "Специфічні дозволи користувача",
|
||||
"groups_and_permissions": "Групи та дозволи",
|
||||
"groups_and_permissions_manage": "Управління групами та дозволами",
|
||||
"permissions": "Дозволи",
|
||||
"history": {
|
||||
"is_empty": "У дієписі поки нічого немає.",
|
||||
"title": "Дієпис",
|
||||
"last_action": "Остання дія:",
|
||||
"methods": {
|
||||
"DELETE": "видалення",
|
||||
"GET": "читання",
|
||||
"POST": "створення/виконання",
|
||||
"PUT": "змінення"
|
||||
}
|
||||
},
|
||||
"home": "Домівка",
|
||||
"hook_adminjs_group_configuration": "Конфігурації системи",
|
||||
"hook_conf_ldap": "База даних користувачів",
|
||||
"hook_conf_ynh_certs": "Сертифікат безпеки (SSL)",
|
||||
"hook_conf_ynh_settings": "Конфігурації YunoHost",
|
||||
"hook_conf_manually_modified_files": "Вручну змінені конфігурації",
|
||||
"hook_data_home": "Користувацькі дані",
|
||||
"hook_data_home_desc": "Користувацькі дані містяться в /home/USER",
|
||||
"hook_data_mail": "Пошта",
|
||||
"hook_data_mail_desc": "Необроблені електронні листи, що зберігаються на сервері",
|
||||
"hook_data_xmpp": "Дані XMPP",
|
||||
"id": "ID",
|
||||
"ignore": "Нехтувати",
|
||||
"ignored": "{count} знехтувано",
|
||||
"infos": "Відомості",
|
||||
"install": "Установити",
|
||||
"install_name": "Установити {id}",
|
||||
"install_time": "Час установлення",
|
||||
"installation_complete": "Установлення завершено",
|
||||
"installed": "Установлено",
|
||||
"ipv4": "IPv4",
|
||||
"ipv6": "IPv6",
|
||||
"issues": "{count} проблем",
|
||||
"items": {
|
||||
"apps": "немає застосунків | застосунок | {c} застосунків",
|
||||
"backups": "немає резервних копій | резервна копія | {c} резервних копій",
|
||||
"domains": "немає доменів | домен | {c} доменів",
|
||||
"groups": "немає груп | група | {c} групи",
|
||||
"installed_apps": "немає встановлених застосунків | установлений застосунок | {c} установлених застосунків",
|
||||
"logs": "немає журналів | журнал | {c} журналів",
|
||||
"permissions": "немає дозволів | дозвіл | {c} дозволів",
|
||||
"services": "немає служб | служба | {c} служб",
|
||||
"users": "немає користувачів | користувач | {c} користувачів"
|
||||
},
|
||||
"items_verbose_count": "Наявно {items} елементів.",
|
||||
"items_verbose_items_left": "Лишилося {items} елементів.",
|
||||
"label": "Заголовок",
|
||||
"label_for_manifestname": "Заголовок для {name}",
|
||||
"last_ran": "Востаннє запущено:",
|
||||
"license": "Ліцензія",
|
||||
"local_archives": "Локальні архіви",
|
||||
"login": "Увійти",
|
||||
"logout": "Вийти",
|
||||
"mailbox_quota_example": "700 МБ це CD, 4700 МБ це DVD",
|
||||
"mailbox_quota_placeholder": "Залиште порожнім або поставте 0, щоб вимкнути.",
|
||||
"manage_apps": "Управління застосунками",
|
||||
"manage_domains": "Управління доменами",
|
||||
"migrations": "Міграція",
|
||||
"migrations_done": "Попередні міграції",
|
||||
"migrations_no_done": "Попередніх міграцій немає",
|
||||
"myserver": "мій сервер",
|
||||
"next": "Далі",
|
||||
"no": "Ні",
|
||||
"nobody": "Ніхто",
|
||||
"ok": "Гаразд",
|
||||
"open": "Відкрити",
|
||||
"others": "Інші",
|
||||
"password": "Пароль",
|
||||
"password_confirmation": "Підтвердіть пароль",
|
||||
"path": "Шлях",
|
||||
"perform": "Виконати",
|
||||
"placeholder": {
|
||||
"username": "IvanMelnyk",
|
||||
"firstname": "Ivan",
|
||||
"lastname": "Melnyk",
|
||||
"groupname": "Назва моєї групи",
|
||||
"domain": "miy-domen.ua"
|
||||
},
|
||||
"logs": "Журнали",
|
||||
"logs_suboperations": "Субоперації",
|
||||
"logs_operation": "Операції, що виконуються в системі з YunoHost",
|
||||
"logs_history": "Історія команд, запущених у системі",
|
||||
"logs_package": "Історія дій з пакетами Debian",
|
||||
"logs_system": "Журнали ядра та інші низькорівневі події",
|
||||
"logs_access": "Список доступів і блокувань",
|
||||
"logs_service": "Журнали служб",
|
||||
"logs_app": "Журнали застосунків",
|
||||
"logs_no_logs_registered": "Записаних для цієї категорії журналів немає",
|
||||
"logs_error": "Помилка",
|
||||
"logs_ended_at": "Кінець",
|
||||
"logs_started_at": "Початок",
|
||||
"logs_path": "Шлях",
|
||||
"logs_context": "Контекст",
|
||||
"logs_share_with_yunopaste": "Поділитися через YunoPaste",
|
||||
"logs_more": "Відобразити більше ліній",
|
||||
"permission_corresponding_url": "Відповідна URL-адреса",
|
||||
"permission_main": "Основний заголовок",
|
||||
"permission_show_tile_enabled": "Видимий як плитка на порталі користувача",
|
||||
"port": "Порт",
|
||||
"ports": "Порти",
|
||||
"postinstall": {
|
||||
"force": "Примусове післявстановлення"
|
||||
},
|
||||
"postinstall_intro_1": "Вітаємо! YunoHost успішно встановлено.",
|
||||
"postinstall_intro_2": "Лишилося зробити два кроки з конфігурації, щоб задіяти служби вашого сервера.",
|
||||
"postinstall_set_domain": "Установити основний домен",
|
||||
"postinstall_set_password": "Установити пароль адміністратора",
|
||||
"previous": "Назад",
|
||||
"protocol": "Протокол",
|
||||
"readme": "Прочитай-мене",
|
||||
"rerun_diagnosis": "Повторити діагностику",
|
||||
"restore": "Відновити",
|
||||
"restart": "Перезапустити",
|
||||
"human_routes": {
|
||||
"apps": {
|
||||
"install": "Установлення застосунку '{name}'",
|
||||
"change_url": "Зміна URL-адреси доступу '{name}'",
|
||||
"set_default": "Переадресація кореня домена '{domain}' на '{name}'",
|
||||
"perform_action": "Виконання дії '{action}' застосунку '{name}'",
|
||||
"uninstall": "Видалення застосунку '{name}'",
|
||||
"update_config": "Оновлення конфігурації застосунку '{name}'",
|
||||
"change_label": "Зміна заголовку з '{prevName}' на '{nextName}'"
|
||||
},
|
||||
"backups": {
|
||||
"create": "Створення резервної копії",
|
||||
"delete": "Видалення резервної копії '{name}'",
|
||||
"restore": "Відновлення резервної копії '{name}'"
|
||||
},
|
||||
"diagnosis": {
|
||||
"ignore": {
|
||||
"error": "Знехтування помилкою",
|
||||
"warning": "Знехтування попередженням"
|
||||
},
|
||||
"run": "Проведення діагностики",
|
||||
"run_specific": "Проведення діагностики '{description}'",
|
||||
"unignore": {
|
||||
"error": "Прибирання нехтування помилкою",
|
||||
"warning": "Прибирання нехтування попередженням"
|
||||
}
|
||||
},
|
||||
"domains": {
|
||||
"add": "Додавання домену '{name}'",
|
||||
"delete": "Видалення домену '{name}'",
|
||||
"manual_renew_LE": "Поновлення сертифікату для '{name}'",
|
||||
"regen_selfsigned": "Поновлення самопідписаного сертифікату для '{name}'",
|
||||
"set_default": "Установлення '{name}' як типового домена",
|
||||
"install_LE": "Установлення сертифікату для '{name}'",
|
||||
"revert_to_selfsigned": "Повернення до самопідписаного сертифікату для '{name}'"
|
||||
},
|
||||
"firewall": {
|
||||
"ports": "{action} порт {port} ({protocol}, {connection})",
|
||||
"upnp": "{action} UPnP"
|
||||
},
|
||||
"groups": {
|
||||
"create": "Створення групи '{name}'",
|
||||
"delete": "Видалення групи '{name}'",
|
||||
"add": "Додавання '{user}' до групи '{name}'",
|
||||
"remove": "Вилучення '{user}' з групи '{name}'"
|
||||
},
|
||||
"migrations": {
|
||||
"run": "Проведення міграцій",
|
||||
"skip": "Пропущення міграцій"
|
||||
},
|
||||
"permissions": {
|
||||
"add": "Надання '{name}' доступу '{perm}'",
|
||||
"remove": "Позбавлення '{name}' доступу '{perm}'"
|
||||
},
|
||||
"postinstall": "Проведення післявстановлення",
|
||||
"reboot": "Перезавантаження сервера",
|
||||
"services": {
|
||||
"restart": "Перезапускання служби '{name}'",
|
||||
"start": "Запускання служби '{name}'",
|
||||
"stop": "Зупинення служби '{name}'"
|
||||
},
|
||||
"share_logs": "Утворення посилання для журналу '{name}'",
|
||||
"shutdown": "Вимкнення сервера",
|
||||
"update": "Перевірка оновлень",
|
||||
"upgrade": {
|
||||
"system": "Оновлення системи",
|
||||
"apps": "Оновлення всіх застосунків",
|
||||
"app": "Оновлення застосунку '{app}'"
|
||||
},
|
||||
"users": {
|
||||
"create": "Створення користувача '{name}'",
|
||||
"delete": "Видалення користувача '{name}'",
|
||||
"update": "Оновлення користувача '{name}'"
|
||||
},
|
||||
"adminpw": "Зміна пароля адміністратора"
|
||||
},
|
||||
"run": "Запустити",
|
||||
"running": "Виконується",
|
||||
"save": "Зберегти",
|
||||
"search": {
|
||||
"for": "Пошук за {items}...",
|
||||
"not_found": "Є {items}, що відповідають вашим критеріям."
|
||||
},
|
||||
"select_all": "Вибрати все",
|
||||
"select_none": "Не вибирати нічого",
|
||||
"service_start_on_boot": "Запуск під час завантаження",
|
||||
"services": "Служби",
|
||||
"set_default": "Зробити типовим",
|
||||
"size": "Розмір",
|
||||
"since": "від",
|
||||
"skip": "Пропустити",
|
||||
"start": "Почати",
|
||||
"status": "Стан",
|
||||
"stop": "Зупинити",
|
||||
"system": "Система",
|
||||
"system_apps_nothing": "Усі застосунки найостаннішої версії!",
|
||||
"system_update": "Оновлення системи",
|
||||
"system_packages_nothing": "Усі системні пакети найостаннішої версії!",
|
||||
"system_upgrade_btn": "Оновлення",
|
||||
"system_upgrade_all_applications_btn": "Оновлення всіх застосунків",
|
||||
"system_upgrade_all_packages_btn": "Оновлення всіх пакетів",
|
||||
"tcp": "TCP",
|
||||
"tools": "Засоби",
|
||||
"tools_adminpw": "Змінити пароль адміністратора",
|
||||
"tools_adminpw_current": "Поточний пароль",
|
||||
"tools_adminpw_current_placeholder": "Уведіть поточний пароль",
|
||||
"tools_power_up": "Ваш сервер, схоже, доступний, тепер ви можете спробувати ввійти в систему.",
|
||||
"tools_reboot": "Перезавантажити сервер",
|
||||
"tools_reboot_btn": "Перезавантажити",
|
||||
"tools_reboot_done": "Перезавантаження...",
|
||||
"tools_shutdown_btn": "Вимкнути",
|
||||
"tools_shutdown_reboot": "Вимкнути/Перезавантажити",
|
||||
"tools_webadmin": {
|
||||
"language": "Мова",
|
||||
"fallback_language": "Допоміжна мова",
|
||||
"fallback_language_description": "Мова, яка буде використовуватися в разі відсутності перекладу основною мовою.",
|
||||
"cache": "Кеш",
|
||||
"experimental": "Експериментальний режим",
|
||||
"transitions": "Анімація переходів сторінок",
|
||||
"cache_description": "Подумайте про вимкнення кешу, якщо ви плануєте працювати з CLI та одночасно здійснювати навігацію у вебадмініструванні.",
|
||||
"experimental_description": "Дає вам доступ до експериментальних функцій. Вони вважаються нестабільними та можуть зламати вашу систему.<br>Включайте цей режим, тільки якщо ви знаєте, що робите."
|
||||
},
|
||||
"tools_webadmin_settings": "Налаштування вебадміністратора",
|
||||
"traceback": "Відслідковування (Traceback)",
|
||||
"udp": "UDP",
|
||||
"unauthorized": "Неавторизований",
|
||||
"unignore": "Прибрати нехтування",
|
||||
"uninstall": "Видалити",
|
||||
"unknown": "Невідомо",
|
||||
"unmaintained": "Не обслуговується",
|
||||
"upnp": "UPnP",
|
||||
"upnp_disabled": "UPnP вимкнено.",
|
||||
"upnp_enabled": "UPnP увімкнено.",
|
||||
"url": "URL-адреса",
|
||||
"user_email": "Е-пошта",
|
||||
"user_emailaliases": "Поштові аліаси",
|
||||
"user_emailaliases_add": "Додати поштовий аліас",
|
||||
"user_emailforward": "Переадресація пошти",
|
||||
"user_emailforward_add": "Додати переадресацію пошти",
|
||||
"user_fullname": "Повне ім'я",
|
||||
"user_interface_link": "Інтерфейс користувача",
|
||||
"user_mailbox_use": "Простір, що використовується поштовою скринькою",
|
||||
"user_new_forward": "novapereadresaciya@myforeigndomain.org",
|
||||
"user_username": "Ім'я користувача",
|
||||
"user_username_edit": "Редагувати обліковий запис користувача {name}",
|
||||
"users_new": "Новий користувач",
|
||||
"users_no": "Користувачів немає.",
|
||||
"version": "Версія",
|
||||
"warnings": "{count} попереджень",
|
||||
"words": {
|
||||
"collapse": "Колапс",
|
||||
"default": "Типово"
|
||||
},
|
||||
"wrong_password": "Неправильний пароль",
|
||||
"yes": "Так",
|
||||
"certificate_alert_good": "ДОБРЕ, встановлений сертифікат працює!",
|
||||
"certificate_alert_great": "Прекрасно! Ви використовуєте чинний сертифікат Let's Encrypt!",
|
||||
"certificate_alert_unknown": "Невідомий стан",
|
||||
"certificate_manage": "Управляти сертифікатом безпеки SSL",
|
||||
"ssl_certificate": "Сертифікат безпеки SSL",
|
||||
"confirm_cert_install_LE": "Ви справді бажаєте встановити сертифікат безпеки Let's Encrypt для цього домену?",
|
||||
"confirm_cert_regen_selfsigned": "Ви впевнені, що хочете перестворити самопідписаний сертифікат для цього домену?",
|
||||
"confirm_cert_manual_renew_LE": "Ви справді бажаєте вручну поновити сертифікат безпеки Let's Encrypt для цього домену?",
|
||||
"certificate": "Сертифікат",
|
||||
"certificate_status": "Стан сертифіката",
|
||||
"certificate_authority": "Центр сертифікації",
|
||||
"validity": "Дійсність",
|
||||
"domain_is_eligible_for_ACME": "Для встановлення сертифіката безпеки Let's Encrypt домен має бути правильно сконфігурований!",
|
||||
"install_letsencrypt_cert": "Установити сертифікат Let's Encrypt",
|
||||
"manually_renew_letsencrypt_message": "Сертифікат буде автоматично поновлено в останні 15 днів його дійсності. Ви можете вручну поновити його, якщо хочете. (не рекомендовано).",
|
||||
"manually_renew_letsencrypt": "Поновити вручну зараз",
|
||||
"regenerate_selfsigned_cert_message": "Якщо ви хочете, ви можете перестворити самопідписаний сертифікат.",
|
||||
"regenerate_selfsigned_cert": "Перестворити самопідписаний сертифікат",
|
||||
"revert_to_selfsigned_cert_message": "Якщо дуже хочеться, можна перевстановити самопідписаний сертифікат. (не рекомендовано)",
|
||||
"revert_to_selfsigned_cert": "Повернутися до самопідписаного сертифіката",
|
||||
"domain_dns_conf_is_just_a_recommendation": "На цій сторінці показано *рекомендовану* конфігурацію. Вона *не* конфігурує DNS для вас. Ви самі повинні конфігурувати свою зону DNS в реєстраторі DNS відповідно до цих рекомендацій.",
|
||||
"diagnosis_experimental_disclaimer": "Будьте уважні, адже функція діагностики все ще експериментальна і на стадії розробки й так само не на 100% надійна.",
|
||||
"diagnosis_first_run": "Функція діагностики спробує знайти типові проблеми різних аспектів вашого сервера, для того, щоб переконатися, що сервер працює стабільно. Будь ласка, не панікуйте, якщо Ви бачите купу помилок одразу після підняття сервера: ця функція якраз розроблена для того, щоб знайти помилки та допомогти вам їх полагодити. Діагностика буде запускатися двічі на день, після чого буде направлятися е-поштою звіт адміністратору в разі виявлення проблем.",
|
||||
"diagnosis_explanation": "Функція діагностики намагається виявити загальні проблеми в різних аспектах вашого сервера, щоб переконатися, що все працює без збоїв. Діагностика виконується автоматично два рази на день, і в разі виявлення проблем адміністратору надсилається електронний лист. Зверніть увагу, що деякі тести можуть бути недоречні, якщо ви не хочете використовувати деякі специфічні функції (наприклад, XMPP) або можуть не спрацювати, якщо у вас складні налаштування. У таких випадках, якщо ви знаєте, що робите, можна нехтувати відповідними проблемами або попередженнями.",
|
||||
"domain_add_dyndns_forbidden": "Ви вже підписані на домен DynDNS, ви можете попросити видалити ваш домен DynDNS на форумі <a href='//forum.yunohost.org/t/nohost-domain-recovery-suppression-de-domaine-en-nohost-me-noho-st-et-ynh-fr/442'>в цій виділеній гілці</a>.",
|
||||
"domain_delete_forbidden_desc": "Ви не можете видалити домен '{domain}', бо він є типовим. Ви повинні спочатку вибрати інший типовий домен (чи <a href='#/domains/add'>Створити новий</a>), після чого можна буде його видалити.",
|
||||
"error_connection_interrupted": "Сервер закрив з'єднання замість відповіді. Чи перезавантажувався Nginx або API YunoHost, чи вони не працюють з якоїсь причини?",
|
||||
"experimental_warning": "Попередження: ця функція є експериментальною і не вважається стабільною, ви не повинні використовувати її, якщо тільки ви знаєте, що робите.",
|
||||
"good_practices_about_admin_password": "Зараз ви маєте визначити новий пароль адміністратора. Пароль повинен складатися щонайменше з 8 символів - хоча хорошою практикою є використання довшого пароля (тобто парольної фрази) і/або використання різних символів (великих, малих, чисел і спеціальних символів).",
|
||||
"good_practices_about_user_password": "Зараз ви маєте визначити новий пароль користувача. Пароль повинен складатися щонайменше з 8 символів - хоча хорошою практикою є використання довшого пароля (тобто парольної фрази) і/або використання різних символів (великих, малих, чисел і спеціальних символів).",
|
||||
"group_explain_all_users": "Це спеціальна група, що містить усі облікові записи користувачів на сервері",
|
||||
"group_explain_visitors_needed_for_external_client": "Будьте уважні, деякі застосунки мають бути дозволеними для відвідувачів, якщо ви збираєтеся використовувати їх із зовнішніми клієнтами. Наприклад, це стосується Nextcloud, якщо ви збираєтеся використовувати клієнт синхронізації на смартфоні або настільному комп'ютері.",
|
||||
"hook_data_xmpp_desc": "Конфігурації кімнат і користувачів, вивантаження файлів",
|
||||
"mailbox_quota_description": "Установіть обмеження на розмір сховища для вмісту е-пошти.<br>Установіть значення 0, щоб вимкнути.",
|
||||
"manage_users": "Управління користувачами",
|
||||
"migrations_pending": "Незавершені міграції",
|
||||
"migrations_no_pending": "Незавершених міграцій немає",
|
||||
"migrations_disclaimer_check_message": "Я прочитав і зрозумів цю відмову від відповідальності",
|
||||
"migrations_disclaimer_not_checked": "Ця міграція вимагає, щоб ви підтвердили відмову від відповідальності перед її запуском.",
|
||||
"multi_instance": "Можна встановлювати кілька разів",
|
||||
"only_highquality_apps": "Тільки високоякісні застосунки",
|
||||
"only_working_apps": "Тільки робочі застосунки",
|
||||
"only_decent_quality_apps": "Тільки застосунки достатньої якості",
|
||||
"operations": "Операції",
|
||||
"orphaned": "Не обслуговується / Не розвивається",
|
||||
"orphaned_details": "Цей застосунок не підтримується розробниками вже досить довгий час. Можливо, він усе ще працює, але не буде оновлюватися до тих пір, поки хто-небудь добровільно не візьме на себе турботу про нього. Не соромтеся зробити свій внесок в його відродження!",
|
||||
"operation_failed_explanation": "Ця операція не вдалася! Дуже шкода :(. Ви можете спробувати <a href='https://yunohost.org/help'>попросити про допомогу</a>. Будь ласка, надайте *повний журнал* операції тим, хто вам допомагає. Ви можете зробити це, натиснувши на зелену кнопку 'Поділитися через Yunopaste'. Під час передання журналів (лоґів) YunoHost автоматично спробує втаємнити особисті дані, такі як доменні імена та IP.",
|
||||
"pending_migrations": "Є кілька незавершених міграцій, які очікують запуску. Будь ласка, перейдіть в розділ <a href='#/tools/migrations'>Засоби > Міграції</a>, щоб запустити їх.",
|
||||
"postinstall_domain": "Це перше доменне ім'я, пов'язане з сервером YonoHost, тобто ім'я, яким будуть користуватися користувачі вашого сервера, щоб потрапити на портал автентифікації. Воно буде видне кожному, вибирайте його ретельно.",
|
||||
"postinstall_intro_3": "Ви можете отримати більше відомостей, <a href='//yunohost.org/en/install/hardware:vps_debian#fa-cog-proceed-with-the-initial-configuration' target='_blank'>відвідавши сторінку документації</a>",
|
||||
"postinstall_password": "Цей пароль потрібен для того, щоб управляти вашим сервером. Не поспішайте, будьте вигадливими, створюючи його.",
|
||||
"tip_about_user_email": "Користувачі створюються із закріпленою адресою е-пошти (і обліковим записом XMPP) в форматі username@domain.tld. Додаткові псевдоніми та переадресації електронної пошти можуть бути пізніше додані адміністратором і користувачем.",
|
||||
"tools_rebooting": "Ваш сервер перезавантажується. Щоб повернутися до інтерфейсу вебадміністрування, необхідно дочекатися, поки ваш сервер перезавантажиться. Ви можете дочекатися появи форми входу або перевірити, оновивши цю сторінку (F5).",
|
||||
"tools_shutdown": "Вимкнути цей сервер",
|
||||
"tools_shutdown_done": "Вимикання...",
|
||||
"tools_shuttingdown": "Ваш сервер вимикається. Поки ваш сервер вимкнений, ви не зможете скористатися вебадмініструванням.",
|
||||
"unmaintained_details": "Цей застосунок не оновлювався досить довгий час, а попередній супроводжувач пішов або у нього немає часу підтримувати цей застосунок. Не соромтеся перевірити репозиторій застосунків, щоб допомогти з цим",
|
||||
"user_mailbox_quota": "Квота поштової скриньки",
|
||||
"users": "Користувачі",
|
||||
"certificate_alert_not_valid": "НЕБЕЗПЕЧНО: установлений сертифікат не є дійсним! HTTPS не працюватиме!",
|
||||
"certificate_alert_selfsigned": "ПОПЕРЕДЖЕННЯ: Поточний сертифікат є самопідписаним. Браузери будуть відображати моторошне попередження для нових відвідувачів!",
|
||||
"certificate_alert_letsencrypt_about_to_expire": "Строк дії сертифіката спливає. Незабаром його буде автоматично поновлено.",
|
||||
"certificate_alert_about_to_expire": "ПОПЕРЕДЖЕННЯ: Строк дії сертифіката спливає! Він НЕ буде поновлений автоматично!",
|
||||
"confirm_cert_revert_to_selfsigned": "Ви справді бажаєте повернути цей домен до самопідписаного сертифікату безпеки?",
|
||||
"domain_not_eligible_for_ACME": "Цей домен, схоже, не готовий для сертифіката безпеки Let's Encrypt. Будь ласка, перевірте конфігурацію DNS і досяжність HTTP-сервера. Розділи 'DNS-записи' і 'Мережа' на <a href='#/diagnosis'>сторінці діагностики</a> можуть допомогти вам зрозуміти, що саме неправильно сконфігуровано.",
|
||||
"purge_user_data_checkbox": "Очистити дані {name}? (це видалить вміст його домівки та поштових каталогів).",
|
||||
"purge_user_data_warning": "Очищення даних користувача не є відновлюваним. Будьте впевнені, що ви знаєте, що робите!"
|
||||
}
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"administration_password": "管理密码",
|
||||
"all": "全部",
|
||||
"all_apps": "全部应用",
|
||||
"all_apps": "所有应用",
|
||||
"add": "添加",
|
||||
"action": "动作",
|
||||
"ok": "好",
|
||||
|
@ -72,7 +72,7 @@
|
|||
"hook_conf_ssowat": "SSOwat",
|
||||
"hook_conf_xmpp": "XMPP",
|
||||
"hook_conf_ynh_certs": "SSL证书",
|
||||
"hook_conf_ldap": "LDAP数据库",
|
||||
"hook_conf_ldap": "用户数据库",
|
||||
"hook_conf_ynh_currenthost": "当前主域",
|
||||
"hook_conf_cron": "自动化任务",
|
||||
"hook_adminjs_group_configuration": "系统配置",
|
||||
|
@ -81,9 +81,12 @@
|
|||
"methods": {
|
||||
"DELETE": "删除",
|
||||
"PUT": "修改",
|
||||
"POST": "创建/执行"
|
||||
"POST": "创建/执行",
|
||||
"GET": "读取"
|
||||
},
|
||||
"title": "历史"
|
||||
"title": "历史信息",
|
||||
"last_action": "最后动作:",
|
||||
"is_empty": "暂时没有任何历史信息。"
|
||||
},
|
||||
"permissions": "权限",
|
||||
"group_new": "新群组",
|
||||
|
@ -91,7 +94,21 @@
|
|||
"group_visitors": "访客",
|
||||
"group_all_users": "所有用户",
|
||||
"form_errors": {
|
||||
"passwordLenght": "密码至少需要是8个字符长。"
|
||||
"passwordLenght": "密码至少需要是8个字符长。",
|
||||
"required": "必填项。",
|
||||
"passwordMatch": "密码不匹配。",
|
||||
"number": "值必须是数字。",
|
||||
"notInUsers": "用户'{value}'已经存在。",
|
||||
"minValue": "值必须是等于或大于{min}的数字。",
|
||||
"name": "名称中不能包含特殊字符,除了<code>,.'-</code>",
|
||||
"githubLink": "网址必须是指向存储库的有效Github链接",
|
||||
"emailForward": "无效的电子邮件转发:只能为字母数字和<code> _.- +</code>(例如,someone + tag @ example.com,s0me-1 + tag @ example.com)",
|
||||
"email": "无效的电子邮件:只能为字母数字和<code>_.-</code>字符(例如,someone @ example.com,s0me-1 @ example.com)",
|
||||
"domain": "无效的域名:必须为小写字母数字,点和破折号",
|
||||
"dynDomain": "无效的域名:只能为小写字母数字和破折号",
|
||||
"between": "值必须介于{min}和{max}之间。",
|
||||
"alphalownum_": "值必须为小写字母数字和下划线字符。",
|
||||
"alpha": "值必须是按字母顺序排列的字符。"
|
||||
},
|
||||
"footer": {
|
||||
"donate": "赞助",
|
||||
|
@ -140,8 +157,380 @@
|
|||
"domain": "选择一个网域。"
|
||||
},
|
||||
"local_part_description": {
|
||||
"domain": "选择一个子网域。"
|
||||
"domain": "选择一个子网域。",
|
||||
"email": "为您的电子邮件选择本地部分。"
|
||||
}
|
||||
},
|
||||
"cancel": "取消"
|
||||
"cancel": "取消",
|
||||
"confirm_service_stop": "您确定要停止{name}吗?",
|
||||
"confirm_service_start": "您确定要启动{name}吗?",
|
||||
"confirm_service_restart": "您确定要重新启动{name}吗?",
|
||||
"confirm_restore": "您确定要还原{name}吗?",
|
||||
"confirm_postinstall": "您将在域{domain}上启动安装后过程。 可能要花费几分钟,请*不要中断操作*。",
|
||||
"confirm_migrations_skip": "不建议跳过迁移。您确定要这样做吗?",
|
||||
"confirm_install_app_inprogress": "警告! 该应用程序仍处于试验阶段(如果未明确无法正常运行),很可能会破坏您的系统! 除非您知道自己在做什么,否则可能不应该安装它, 您愿意冒险吗?",
|
||||
"confirm_install_app_lowquality": "警告:此应用程序可能可以运行,但未与YunoHost很好地集成。 某些功能(例如单点登录和备份/还原)可能不可用。",
|
||||
"hook_data_xmpp": "XMPP数据",
|
||||
"hook_data_mail_desc": "存储在服务器上的原始电子邮件",
|
||||
"hook_data_home_desc": "用户数据位于/home/USER",
|
||||
"hook_conf_manually_modified_files": "手动修改的配置",
|
||||
"hook_conf_ynh_settings": "YunoHost配置",
|
||||
"groups_and_permissions_manage": "管理群组和权限",
|
||||
"groups_and_permissions": "组和权限",
|
||||
"group_specific_permissions": "用户特定权限",
|
||||
"group_explain_visitors_needed_for_external_client": "请注意,如果您打算在外部客户端上使用一些应用程序,您需要将这些应用的访问权限给予访问的帐号。例如您想打算在您的智能手机或台式电脑上使用Nextcloud同步客户端。",
|
||||
"group_explain_visitors": "这是一个代表匿名访客的特殊群组",
|
||||
"group_explain_all_users": "这是一个特殊组,其中包含服务器上的所有用户帐户",
|
||||
"group_add_permission": "添加权限",
|
||||
"group_format_name_help": "您可以使用字母数字字符和下划线",
|
||||
"group_name": "组名称",
|
||||
"group": "群组",
|
||||
"good_practices_about_user_password": "现在,您将设置一个新的管理员密码。 密码至少应包含8个字符。并且出于安全考虑建议使用较长的密码同时尽可能使用各种字符(大写,小写,数字和特殊字符)。",
|
||||
"good_practices_about_admin_password": "现在,您将设置一个新的管理员密码。 密码至少应包含8个字符。并且出于安全考虑建议使用较长的密码同时尽可能使用各种字符(大写,小写,数字和特殊字符)。",
|
||||
"go_back": "返回",
|
||||
"from_to": "从{0}到{1}",
|
||||
"form_input_example": "范例:{example}",
|
||||
"footer_version": "由<a href='https://yunohost.org'> YunoHost </a> {version}({repo})提供支持。",
|
||||
"experimental_warning": "警告:此功能是实验性的,不稳定,您不应该使用它,除非您知道自己在做什么。",
|
||||
"everything_good": "一切正常!",
|
||||
"error_connection_interrupted": "服务器关闭了连接,没有应答。nginx或yunohost-api是否因某种原因被重新启动或停止?",
|
||||
"error_modify_something": "您应该修改一些东西",
|
||||
"domain_delete_forbidden_desc": "您无法删除“ {domain}”,因为它是默认域,您需要选择另一个域(或<a href='#/domains/add'>添加新域</a>)并将其设置为默认域才能将其删除。",
|
||||
"domain_default_desc": "默认域为用户登录所使用的域。",
|
||||
"domain_add_dyndns_forbidden": "您已经订阅了DynDNS域名,您可以在论坛<a href='//forum.yunohost.org/t/nohost-domain-recovery-suppression-de-domaine-en-nohost-me-noho-st-et-ynh-fr/442'>上要求删除您当前的DynDNS域名</a>。",
|
||||
"domain_add_dyndns_doc": "…我想要一个动态DNS服务。",
|
||||
"domain_add_dns_doc": "...而且我已经<a href='//yunohost.org/dns_config' target='_blank'>正确设置了我的DNS</a>。",
|
||||
"diagnosis_explanation": "诊断功能将尝试确定服务器不同方面的常见问题,以确保一切正常运行。 诊断每天自动运行两次,如果发现问题,则会向管理员发送电子邮件。 请注意,如果您不想使用某些特定功能(例如XMPP),则某些测试可能不相关,或者如果您使用复杂的设置,则可能会失败。 在这种情况下,如果您知道自己在做什么,则可以忽略相应的问题或警告。",
|
||||
"diagnosis_first_run": "诊断功能将尝试确定服务器不同方面的常见问题,以确保一切正常运行。 如果在设置服务器后立即看到一堆错误,请不要惊慌:它的确是为了帮助您发现问题并指导您解决问题。 诊断还将每天自动运行两次,如果发现问题,则会向管理员发送电子邮件。",
|
||||
"diagnosis_experimental_disclaimer": "请注意,该诊断功能仍处于试验阶段并且已完善,并且可能并不完全可靠。",
|
||||
"domain_dns_conf_is_just_a_recommendation": "本页向你展示了*推荐的*配置。它并*不*为你配置DNS。你有责任根据该建议在你的DNS注册商处配置你的DNS区域。",
|
||||
"domain_add_panel_with_domain": "我已经有一个域名了……",
|
||||
"confirm_app_install": "您确定要安装此应用程序吗?",
|
||||
"confirm_install_domain_root": "您确定要在“ /”上安装此应用程序吗? 您将无法在{domain}上安装任何其他应用",
|
||||
"confirm_install_custom_app": "警告! 除非您明白可能导致的后果,否则不应该安装。安装第三方应用程序可能会损害系统的完整性和安全性。 您愿意冒险吗?",
|
||||
"confirm_firewall_disallow": "您确定要关闭端口{port}(协议:{protocol},连接:{connection})",
|
||||
"confirm_firewall_allow": "您确定要打开端口{port}(协议:{protocol},连接:{connection})",
|
||||
"confirm_delete": "您确定要删除{name}吗?",
|
||||
"confirm_change_maindomain": "您确定要更改主域吗?",
|
||||
"confirm_app_default": "您确定要将此应用设置为默认吗?",
|
||||
"code": "代码",
|
||||
"app_state_highquality_explanation": "至少一年以来,此应用与YunoHost集成良好。",
|
||||
"app_state_lowquality_explanation": "该应用程序可能可以运行,但可能仍然存在问题,或者未与YunoHost完全集成,或者不遵守良好做法。",
|
||||
"app_state_notworking_explanation": "该应用程序的维护者宣称它“不起作用”。它会破坏您的系统!",
|
||||
"app_state_inprogress_explanation": "该应用程序的维护者声明此应用程序尚未准备好用于生产。小心!",
|
||||
"app_show_categories": "显示类别",
|
||||
"app_no_actions": "这个应用程式没有任何动作",
|
||||
"app_manage_label_and_tiles": "管理标签和图块",
|
||||
"app_install_parameters": "安装设定",
|
||||
"app_info_changeurl_desc": "更改此应用程序的访问URL(域和/或路径)。",
|
||||
"app_info_access_desc": "当前允许访问此应用的群组/用户:",
|
||||
"app_config_panel_no_panel": "此应用程序没有任何可用的配置",
|
||||
"app_config_panel_label": "配置此应用",
|
||||
"app_config_panel": "配置面板",
|
||||
"app_choose_category": "选择一个类别",
|
||||
"api_not_responding": "YunoHost的API没有响应。也许'yunohost-api'已经停机或被重新启动了?",
|
||||
"api_not_found": "似乎网络管理员试图查询不存在的东西。",
|
||||
"api_errors_titles": {
|
||||
"APIConnexionError": "YunoHost遇到连接错误",
|
||||
"APINotRespondingError": "YunoHost API没有响应",
|
||||
"APIInternalError": "YunoHost遇到内部错误",
|
||||
"APIBadRequestError": "YunoHost遇到错误",
|
||||
"APIError": "YunoHost遇到意外错误",
|
||||
"APINotFoundError": "YunoHost API找不到路径"
|
||||
},
|
||||
"api_error": {
|
||||
"server_said": "在处理该行动时的服务器反馈:",
|
||||
"help": "您应该在<a href=\"https://forum.yunohost.org/\">论坛</a>或<a href=\"https://chat.yunohost.org/\">聊天</a>上寻求帮助以解决这个问题,或者在<a href=\"https://github.com/YunoHost/issues\">错误追踪</a>上报告这个错误。",
|
||||
"view_error": "查看错误",
|
||||
"sorry": "对此真的很抱歉。",
|
||||
"info": "以下信息可能对帮助你的人有用:",
|
||||
"error_message": "错误信息:"
|
||||
},
|
||||
"api": {
|
||||
"query_status": {
|
||||
"warning": "成功完成,有错误或提示",
|
||||
"success": "已成功完成",
|
||||
"pending": "正在进行中",
|
||||
"error": "失败"
|
||||
},
|
||||
"processing": "服务器正在处理这个动作..."
|
||||
},
|
||||
"ignored": "{count}个被忽略",
|
||||
"items": {
|
||||
"installed_apps": "没有安装的应用程序 | 已安装的应用 | {c}个已安装的应用",
|
||||
"groups": "没有群组 | 群组 | {c} 群组",
|
||||
"domains": "没有网域 | 域名 | {c}个域",
|
||||
"backups": "没有备份 | 备份 | {c}备份",
|
||||
"apps": "没有应用 | 应用 | {c}个应用",
|
||||
"users": "没有用户 | 用户 | {c}个用户",
|
||||
"services": "没有服务 | 服务 | {c}服务",
|
||||
"permissions": "没有权限 | 权限 | {c}权限",
|
||||
"logs": "没有日志 | 日志 | {c}个日志"
|
||||
},
|
||||
"issues": "{count}个问题",
|
||||
"label_for_manifestname": "{name}的标签",
|
||||
"mailbox_quota_placeholder": "设置为0禁用。",
|
||||
"mailbox_quota_example": "700M是CD,4700M是DVD",
|
||||
"mailbox_quota_description": "设置电子邮件内容的存储大小限制。<br>设置为0以禁用。",
|
||||
"nobody": "没有人",
|
||||
"no": "否",
|
||||
"next": "下一步",
|
||||
"myserver": "我的服务器",
|
||||
"multi_instance": "可多次安装",
|
||||
"migrations_disclaimer_not_checked": "此迁移要求您在运行它之前确认其免责声明。",
|
||||
"migrations_disclaimer_check_message": "我阅读并理解了此免责声明",
|
||||
"migrations_no_done": "以前没有迁移",
|
||||
"migrations_no_pending": "没有待处理的迁移",
|
||||
"only_highquality_apps": "只有高质量的应用",
|
||||
"password_confirmation": "确认密码",
|
||||
"operation_failed_explanation": "此操作失败!对此感到非常抱歉:(您可以尝试<a href='https://yunohost.org/help'>寻求帮助</a>。请向操作人员提供“操作的完整日志”。您可以通过单击“与Yunopaste共享”绿色按钮来实现,共享日志时,YunoHost将自动尝试匿名化域名和IP等私有数据。",
|
||||
"others": "其他",
|
||||
"orphaned_details": "这个应用程序已经有相当长的一段时间没有被维护过了。它可能仍在工作,但是除非有人自愿照顾它,否则它不会得到任何升级。欢迎随时为复兴做出贡献!",
|
||||
"orphaned": "未维护",
|
||||
"operations": "运作方式",
|
||||
"open": "开启",
|
||||
"only_decent_quality_apps": "只有质量不错的应用程序",
|
||||
"only_working_apps": "仅适用的应用",
|
||||
"logs_package": "Debian软件包管理历史",
|
||||
"logs_history": "在系统上运行命令的历史记录",
|
||||
"logs_operation": "使用YunoHost在系统上进行的操作",
|
||||
"logs_suboperations": "子作业",
|
||||
"logs_access": "访问和禁令列表",
|
||||
"logs_system": "内核日志和其他低级别事件",
|
||||
"logs_no_logs_registered": "没有为此类别注册的日志",
|
||||
"logs_context": "背景",
|
||||
"logs_share_with_yunopaste": "与YunoPaste共享日志",
|
||||
"permission_show_tile_enabled": "在用户门户中显示为图块",
|
||||
"permission_main": "主标签",
|
||||
"permission_corresponding_url": "对应的网址",
|
||||
"pending_migrations": "有一些未完成的迁移正在等待运行。请转到<a href='#/tools/migrations'>工具>迁移 </a>视图以运行它们。",
|
||||
"protocol": "协议",
|
||||
"previous": "上一步",
|
||||
"postinstall_set_password": "设置管理密码",
|
||||
"postinstall_set_domain": "设定主要网域",
|
||||
"postinstall_password": "此密码将用于管理服务器上的所有内容。花一些时间明智地选择它。",
|
||||
"postinstall_intro_3": "您可以通过访问<a href='//yunohost.org/en/install/hardware:vps_debian#fa-cog-proceed-with-the-initial-configuration' target='_blank'>适当的文档页面来获取更多信息。 </a>",
|
||||
"postinstall_intro_2": "要激活服务器的服务,还需要两个配置步骤。",
|
||||
"postinstall_intro_1": "恭喜你!YunoHost已成功安装。",
|
||||
"postinstall_domain": "这是链接到YunoHost服务器的第一个域名,也是服务器用户用来访问身份验证门户的域名, 因此,每个人都可以看到它,所以请谨慎选择。",
|
||||
"postinstall": {
|
||||
"force": "强制安装后"
|
||||
},
|
||||
"human_routes": {
|
||||
"backups": {
|
||||
"restore": "恢复备份'{name}'",
|
||||
"delete": "删除备份'{name}'",
|
||||
"create": "建立备份"
|
||||
},
|
||||
"apps": {
|
||||
"update_config": "更新应用'{name}'的配置",
|
||||
"uninstall": "卸载应用'{name}'",
|
||||
"perform_action": "执行应用程序'{action}'的操作'{name}'",
|
||||
"set_default": "将'{domain}'根域名重定向到'{name}'",
|
||||
"install": "安装应用'{name}'",
|
||||
"change_url": "更改访问网址'{name}'",
|
||||
"change_label": "将标签'{prevName}'更改为'{nextName}'"
|
||||
},
|
||||
"adminpw": "修改管理员密码",
|
||||
"firewall": {
|
||||
"upnp": "{action} UPnP",
|
||||
"ports": "{action}端口{port}({protocol},{connection})"
|
||||
},
|
||||
"domains": {
|
||||
"set_default": "将'{name}'设置为默认域",
|
||||
"revert_to_selfsigned": "恢复'{name}'的自签名证书",
|
||||
"regen_selfsigned": "为'{name}'续签自签名证书",
|
||||
"manual_renew_LE": "为'{name}'续签证书",
|
||||
"install_LE": "为'{name}'安装证书",
|
||||
"delete": "删除域'{name}'",
|
||||
"add": "添加域'{name}'"
|
||||
},
|
||||
"diagnosis": {
|
||||
"unignore": {
|
||||
"warning": "忽略警告",
|
||||
"error": "忽略错误"
|
||||
},
|
||||
"run_specific": "运行 '{description}' 诊断",
|
||||
"run": "运行诊断",
|
||||
"ignore": {
|
||||
"warning": "忽略警告",
|
||||
"error": "忽略错误"
|
||||
}
|
||||
},
|
||||
"share_logs": "生成日志链接'{name}'",
|
||||
"services": {
|
||||
"stop": "停止服务'{name}'",
|
||||
"start": "启动服务'{name}'",
|
||||
"restart": "重新启动服务'{name}'"
|
||||
},
|
||||
"reboot": "重新启动服务器",
|
||||
"postinstall": "运行安装后",
|
||||
"permissions": {
|
||||
"remove": "删除对'{perm}'的'{name}'访问权限",
|
||||
"add": "允许'{name}'访问'{perm}'"
|
||||
},
|
||||
"migrations": {
|
||||
"skip": "跳过迁移",
|
||||
"run": "运行迁移"
|
||||
},
|
||||
"groups": {
|
||||
"remove": "从'{name}'群组中删除'{user}'",
|
||||
"add": "将'{user}'添加进群组'{name}'",
|
||||
"delete": "删除群组'{name}'",
|
||||
"create": "创建群组'{name}'"
|
||||
},
|
||||
"shutdown": "关闭服务器",
|
||||
"users": {
|
||||
"update": "更新用户'{name}'",
|
||||
"delete": "删除用户'{name}'",
|
||||
"create": "创建用户'{name}'"
|
||||
},
|
||||
"upgrade": {
|
||||
"app": "升级'{app}'应用",
|
||||
"apps": "升级所有应用",
|
||||
"system": "升级系统"
|
||||
},
|
||||
"update": "检查更新"
|
||||
},
|
||||
"restart": "重新开始",
|
||||
"restore": "恢复",
|
||||
"rerun_diagnosis": "重新运行诊断",
|
||||
"readme": "自述文件",
|
||||
"select_none": "选择无",
|
||||
"select_all": "全选",
|
||||
"search": {
|
||||
"not_found": "有{item}个符合您的条件。",
|
||||
"for": "搜索{items} ..."
|
||||
},
|
||||
"save": "保存",
|
||||
"running": "运行中",
|
||||
"run": "运行",
|
||||
"system_upgrade_all_packages_btn": "升级所有软件包",
|
||||
"system_upgrade_all_applications_btn": "升级所有应用程序",
|
||||
"system_upgrade_btn": "升级",
|
||||
"system_update": "系统更新",
|
||||
"system_packages_nothing": "所有系统软件包都是最新的!",
|
||||
"system_apps_nothing": "所有应用程序都是最新的!",
|
||||
"system": "系统",
|
||||
"stop": "停止",
|
||||
"status": "状态",
|
||||
"start": "启动",
|
||||
"skip": "跳过",
|
||||
"since": "自",
|
||||
"size": "容量",
|
||||
"set_default": "默认设置",
|
||||
"services": "服务",
|
||||
"service_start_on_boot": "开机启动",
|
||||
"tools_shutdown_btn": "关机",
|
||||
"tools_shutdown": "关闭服务器",
|
||||
"tools_rebooting": "您的服务器正在重启。 如果要返回Web管理界面,您需要等待服务器启动。 您可以等待登录表单显示或通过刷新此页面(F5)进行检查。",
|
||||
"tools_reboot_done": "正在重启系统...",
|
||||
"tools_reboot_btn": "重启",
|
||||
"tools_reboot": "重新启动服务器",
|
||||
"tools_power_up": "您的服务器似乎可以访问,您现在可以尝试登录。",
|
||||
"tools_adminpw_current_placeholder": "输入当前密码",
|
||||
"tools_adminpw_current": "当前密码",
|
||||
"tools_adminpw": "更改管理密码",
|
||||
"tools": "工具",
|
||||
"tip_about_user_email": "将使用格式为username@domain.tld的关联电子邮件地址(和XMPP帐户)创建用户, 管理员和用户以后可以添加其他电子邮件别名和电子邮件转发。",
|
||||
"tcp": "TCP",
|
||||
"tools_webadmin_settings": "网络管理员设置",
|
||||
"tools_webadmin": {
|
||||
"transitions": "页面过渡动画",
|
||||
"experimental_description": "使您可以使用实验功能。 这些被认为是不稳定的,可能会破坏您的系统。<br>仅当您知道自己在做什么时才启用此功能。",
|
||||
"experimental": "实验模式",
|
||||
"cache_description": "如果您打算使用CLI并同时使用该Web管理员,请考虑禁用缓存。",
|
||||
"cache": "缓存",
|
||||
"fallback_language_description": "如果主要语言无法提供翻译时将使用的语言。",
|
||||
"fallback_language": "后备语言",
|
||||
"language": "语言"
|
||||
},
|
||||
"tools_shutdown_reboot": "关机/重启",
|
||||
"tools_shuttingdown": "您的服务器正在关闭电源。只要您的服务器关闭,您就无法使用Web管理。",
|
||||
"tools_shutdown_done": "正在关机...",
|
||||
"unauthorized": "未经授权",
|
||||
"udp": "UDP",
|
||||
"traceback": "追溯",
|
||||
"user_emailaliases_add": "添加邮箱别名",
|
||||
"user_emailaliases": "邮箱别名",
|
||||
"user_email": "邮箱",
|
||||
"url": "网址",
|
||||
"upnp_enabled": "UPnP已启用.",
|
||||
"upnp_disabled": "UPnP已禁用。",
|
||||
"upnp": "UPnP",
|
||||
"unmaintained_details": "此应用程序已经有一段时间没有更新了,以前的维护者已经离开或没有时间来维护此应用程序。 随时检查应用程序存储库以提供您的帮助",
|
||||
"unmaintained": "未维护",
|
||||
"unknown": "未知",
|
||||
"uninstall": "卸载",
|
||||
"words": {
|
||||
"collapse": "崩溃",
|
||||
"default": "默认"
|
||||
},
|
||||
"warnings": "{count}个警告",
|
||||
"version": "版本",
|
||||
"users_no": "没有用户。",
|
||||
"users_new": "新用户",
|
||||
"users": "用户",
|
||||
"user_username_edit": "编辑{name}的帐户",
|
||||
"user_username": "用户名",
|
||||
"user_new_forward": "newforward@myforeigndomain.org",
|
||||
"user_mailbox_use": "邮箱已用空间",
|
||||
"user_mailbox_quota": "邮箱配额",
|
||||
"user_interface_link": "用户界面",
|
||||
"user_fullname": "全名",
|
||||
"user_emailforward_add": "添加一个邮件转发",
|
||||
"user_emailforward": "邮件转发",
|
||||
"confirm_cert_manual_renew_LE": "您确定要立即手动续订该域的“Let's Encrypt”证书吗?",
|
||||
"confirm_cert_regen_selfsigned": "您确定要为此域重新生成自签名证书吗?",
|
||||
"confirm_cert_install_LE": "您确定要为此域安装“Let's Encrypt”证书吗?",
|
||||
"ssl_certificate": "SSL证书",
|
||||
"certificate_manage": "管理SSL证书",
|
||||
"certificate_alert_unknown": "未知状态",
|
||||
"certificate_alert_great": "优秀! 您正在使用有效的“Let's Encrypt”证书!",
|
||||
"certificate_alert_good": "好的,当前证书看起来不错!",
|
||||
"certificate_alert_about_to_expire": "警告:当前证书即将过期! 它不会自动更新!",
|
||||
"certificate_alert_letsencrypt_about_to_expire": "当前证书即将过期。它应该很快会自动更新。",
|
||||
"certificate_alert_selfsigned": "警告:当前证书是自签名的。 浏览器将向新访客显示诡异的警告!",
|
||||
"certificate_alert_not_valid": "严重:当前证书无效! HTTPS根本不起作用!",
|
||||
"yes": "是",
|
||||
"wrong_password": "密码错误",
|
||||
"purge_user_data_warning": "清除用户数据是不可逆的。 确保您知道自己在做什么!",
|
||||
"purge_user_data_checkbox": "清除{name}的数据? (这将删除其主目录和邮件目录的内容。)",
|
||||
"revert_to_selfsigned_cert": "恢复为自签名证书",
|
||||
"revert_to_selfsigned_cert_message": "如果确实需要,可以重新安装自签名证书。 (不建议)",
|
||||
"regenerate_selfsigned_cert": "重新生成自签名证书",
|
||||
"regenerate_selfsigned_cert_message": "如果需要,可以重新生成自签名证书。",
|
||||
"manually_renew_letsencrypt": "立即手动续订",
|
||||
"manually_renew_letsencrypt_message": "证书将在有效期的最后15天自动更新。 您可以根据需要手动续订。(不建议)。",
|
||||
"install_letsencrypt_cert": "安装“Let's Encrypt”证书",
|
||||
"domain_not_eligible_for_ACME": "该域似乎尚未准备好安装“Let‘s Encrypt”证书。 请检查您的DNS配置和HTTP服务器可达性, 诊断页面<a href='#/diagnosis'> </a>中的“ DNS记录”和“ Web”部分可以帮助您了解配置错误的内容。",
|
||||
"domain_is_eligible_for_ACME": "该域似乎已正确配置为“Let's Encrypt”证书!",
|
||||
"validity": "有效性",
|
||||
"certificate_authority": "认证机构",
|
||||
"certificate_status": "证书状态",
|
||||
"certificate": "证书",
|
||||
"confirm_cert_revert_to_selfsigned": "您确定要将此域还原为自签名证书吗?",
|
||||
"day_validity": " 已过期 | 1天 | {count}天",
|
||||
"created_at": "创建于",
|
||||
"confirm_reboot_action_shutdown": "您确定要关闭服务器吗?",
|
||||
"confirm_reboot_action_reboot": "您确定要重启服务器吗?",
|
||||
"confirm_upnp_disable": "您确定要禁用UPnP吗?",
|
||||
"confirm_upnp_enable": "您确定要启用UPnP吗?",
|
||||
"confirm_update_specific_app": "您确定要更新{app}吗?",
|
||||
"confirm_update_system": "您确定要更新所有系统软件包吗?",
|
||||
"confirm_update_apps": "您确定要更新所有应用程序吗?",
|
||||
"confirm_uninstall": "您确定要卸载{name}吗?",
|
||||
"placeholder": {
|
||||
"lastname": "Doe",
|
||||
"firstname": "John",
|
||||
"domain": "my-domain.com",
|
||||
"groupname": "我的群组名称",
|
||||
"username": "johndoe"
|
||||
},
|
||||
"perform": "执行",
|
||||
"items_verbose_items_left": "剩下 {items}。",
|
||||
"items_verbose_count": "有 {items}。",
|
||||
"hook_data_xmpp_desc": "空间和用户配置,文件上传",
|
||||
"confirm_group_add_access_permission": "您确定要授予{perm}对{name}的访问权限吗? 如果{name}恰好是恶意者,则这种访问会大大增加攻击面。 仅当您信任此人/组时,才应这样做。",
|
||||
"app_state_working_explanation": "此应用程序的维护者宣布它为“有效”。这意味着它应该是可用的(请参阅应用程序级别),但不一定经过同行审查,它可能仍然包含问题或未与YunoHost完全集成。"
|
||||
}
|
||||
|
|
|
@ -29,7 +29,7 @@ Vue.use(BootstrapVue, {
|
|||
// FIXME find or wait for a better way
|
||||
Vue.prototype.$askConfirmation = function (message, props) {
|
||||
return this.$bvModal.msgBoxConfirm(message, {
|
||||
okTitle: this.$i18n.t('yes'),
|
||||
okTitle: this.$i18n.t('ok'),
|
||||
cancelTitle: this.$i18n.t('cancel'),
|
||||
...props
|
||||
})
|
||||
|
|
|
@ -1,22 +1,34 @@
|
|||
/*
|
||||
|
||||
╭─────────────────────────────╮
|
||||
│ ┌─╮╭─╮╭─╮╶┬╴╭─╴╶┬╴┌─╮╭─┐┌─╮ │
|
||||
│ │╶┤│ ││ │ │ ╰─╮ │ ├┬╯├─┤├─╯ │
|
||||
│ └─╯╰─╯╰─╯ ╵ ╶─╯ ╵ ╵ ╰╵ ╵╵ │
|
||||
╰─────────────────────────────╯
|
||||
// ╭─────────────────────────────────────────────────────────────────╮
|
||||
// │ │
|
||||
// │ /!\ DO NOT IMPORT OR DEFINE ACTUAL RULES INTO THIS FILE /!\ │
|
||||
// │ │
|
||||
// │ Only things that disappear after scss compilation is allowed. │
|
||||
// │ │
|
||||
// ╰─────────────────────────────────────────────────────────────────╯
|
||||
//
|
||||
// This file is magically imported into every components so that scss variables,
|
||||
// functions and mixins can be accessed.
|
||||
// But if some rules are defined here, they will be copied into the final build as many
|
||||
// times as there are components…
|
||||
|
||||
Bootstrap and BootstrapVue overrides.
|
||||
Bootstrap default: `app/node_modules/bootstrap/scss/_variables.scss`
|
||||
BootstrapVue default: `app/node_modules/bootstrap-vue/src/_variables.scss`
|
||||
|
||||
*/
|
||||
// ╭─────────────────────────────╮
|
||||
// │ ┌─╮╭─╮╭─╮╶┬╴╭─╴╶┬╴┌─╮╭─┐┌─╮ │
|
||||
// │ │╶┤│ ││ │ │ ╰─╮ │ ├┬╯├─┤├─╯ │
|
||||
// │ └─╯╰─╯╰─╯ ╵ ╶─╯ ╵ ╵ ╰╵ ╵╵ │
|
||||
// ╰─────────────────────────────╯
|
||||
//
|
||||
// Bootstrap and BootstrapVue overrides.
|
||||
// Bootstrap default: `app/node_modules/bootstrap/scss/_variables.scss`
|
||||
// BootstrapVue default: `app/node_modules/bootstrap-vue/src/_variables.scss`
|
||||
|
||||
// TODO: add a feature so the user can set some css variables to change the global aspects ?
|
||||
// For exemple, turning rounding of elements off, the bases colors, etc.
|
||||
// $enable-rounded: false;
|
||||
|
||||
$alert-padding-x: 1rem;
|
||||
$font-size-base: .9rem;
|
||||
$font-weight-bold: 500;
|
||||
|
||||
$blue: #2f7ed2;
|
||||
$purple: #9932cc;
|
||||
|
@ -38,45 +50,50 @@ $lead-font-weight: 200;
|
|||
$font-family-sans-serif: 'FiraGO', 'Fira Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, 'Noto Sans', sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji' !default;
|
||||
$font-family-monospace: 'Fira Code', SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace !default;
|
||||
|
||||
$h2-font-size: $font-size-base * 1.5;
|
||||
$h3-font-size: $font-size-base * 1.4;
|
||||
$h4-font-size: $font-size-base * 1.25;
|
||||
$h5-font-size: $font-size-base * 1.1;
|
||||
|
||||
$alert-padding-x: 1rem;
|
||||
|
||||
$card-spacer-y: .6rem;
|
||||
$card-spacer-x: 1rem;
|
||||
|
||||
$list-group-item-padding-x: 1rem;
|
||||
|
||||
// Import default variables after the above setup to compute all other variables.
|
||||
@import '~bootstrap/scss/functions.scss';
|
||||
@import '~bootstrap/scss/variables';
|
||||
@import '~bootstrap/scss/mixins.scss';
|
||||
@import '~bootstrap-vue/src/variables';
|
||||
|
||||
// Overwrite list-group-item variants to lighter ones (used in diagnosis for example)
|
||||
@each $color, $value in $theme-colors {
|
||||
@include list-group-item-variant($color, theme-color-level($color, -11), theme-color-level($color, 6));
|
||||
}
|
||||
|
||||
// Add breakpoints for w-*
|
||||
@each $breakpoint in map-keys($grid-breakpoints) {
|
||||
@each $size, $length in $sizes {
|
||||
@include media-breakpoint-up($breakpoint) {
|
||||
.w-#{$breakpoint}-#{$size} {
|
||||
width: $length !important;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
$body-color: $gray-800;
|
||||
|
||||
/*
|
||||
$hr-border-color: $gray-200;
|
||||
|
||||
╭──────────────────────────────────────╮
|
||||
│ ┌─╴╭─╮┌─╮╷ ╭ ╭─┐╷╷╷┌─╴╭─╴╭─╮╭╮╮┌─╴ │
|
||||
│ ├─╴│ │├┬╯├┴╮╶─╴├─┤│││├─╴╰─╮│ ││││├─╴ │
|
||||
│ ╵ ╰─╯╵ ╰╵ ╵ ╵ ╵╰╯╯╰─╴╶─╯╰─╯╵╵╵╰─╴ │
|
||||
╰──────────────────────────────────────╯
|
||||
$list-group-action-color: $gray-800;
|
||||
|
||||
Fork-awesome variable overrides.
|
||||
default: `app/node_modules/fork-awesome/scss/_variables.scss`
|
||||
|
||||
*/
|
||||
// ╭──────────────────────────────────────╮
|
||||
// │ ┌─╴╭─╮┌─╮╷ ╭ ╭─┐╷╷╷┌─╴╭─╴╭─╮╭╮╮┌─╴ │
|
||||
// │ ├─╴│ │├┬╯├┴╮╶─╴├─┤│││├─╴╰─╮│ ││││├─╴ │
|
||||
// │ ╵ ╰─╯╵ ╰╵ ╵ ╵ ╵╰╯╯╰─╴╶─╯╰─╯╵╵╵╰─╴ │
|
||||
// ╰──────────────────────────────────────╯
|
||||
//
|
||||
// Fork-awesome variable overrides.
|
||||
// default: `app/node_modules/fork-awesome/scss/_variables.scss`
|
||||
|
||||
$fa-font-path: '~fork-awesome/fonts';
|
||||
$fa-font-size-base: 1rem;
|
||||
$fa-font-size-base: $font-size-base;
|
||||
|
||||
@import '~fork-awesome/scss/variables';
|
||||
|
||||
|
||||
// ╭────────────────────╮
|
||||
// │ ╭─╴╷ ╷╭─╴╶┬╴╭─╮╭╮╮ │
|
||||
// │ │ │ │╰─╮ │ │ ││││ │
|
||||
// │ ╰─╴╰─╯╶─╯ ╵ ╰─╯╵╵╵ │
|
||||
// ╰────────────────────╯
|
||||
|
||||
$thin-border: 1px solid #eee;
|
||||
|
||||
$skeleton-color: #eaeaea;
|
||||
$thin-border: $hr-border-width solid $hr-border-color;
|
||||
|
|
|
@ -1,25 +0,0 @@
|
|||
/*
|
||||
╭─────────────────────────────────────────────────────────────────╮
|
||||
│ │
|
||||
│ /!\ DO NOT IMPORT OR DEFINE ACTUAL RULES INTO THIS FILE /!\ │
|
||||
│ │
|
||||
│ Only things that disappear after scss compilation is allowed. │
|
||||
│ │
|
||||
╰─────────────────────────────────────────────────────────────────╯
|
||||
|
||||
This file is magically imported into every components so that scss variables and
|
||||
mixins can be accessed.
|
||||
But if some rules are defined here, they will be copied into the final build as many
|
||||
times as there are components…
|
||||
|
||||
*/
|
||||
|
||||
@import 'variables';
|
||||
|
||||
@import '~bootstrap/scss/functions';
|
||||
@import '~bootstrap/scss/variables';
|
||||
@import '~bootstrap/scss/mixins';
|
||||
|
||||
@import '~bootstrap-vue/src/variables';
|
||||
|
||||
@import '~fork-awesome/scss/variables';
|
|
@ -33,27 +33,29 @@ body {
|
|||
min-height: 100vh
|
||||
}
|
||||
|
||||
.menu-list {
|
||||
.list-group-item {
|
||||
padding: 0.75rem 0;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: 1.25rem;
|
||||
font-weight: 400;
|
||||
margin: 0;
|
||||
}
|
||||
.menu-list .list-group-item {
|
||||
padding: $list-group-item-padding-y 0;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
|
||||
// Bootstrap overrides
|
||||
|
||||
.list-group-item {
|
||||
padding: 0.75rem 1rem;
|
||||
// Overwrite list-group-item variants to lighter ones (used in diagnosis for example)
|
||||
@each $color, $value in $theme-colors {
|
||||
@include list-group-item-variant($color, theme-color-level($color, -11), theme-color-level($color, 6));
|
||||
}
|
||||
.list-group-item-action {
|
||||
color: #333;
|
||||
|
||||
// Add breakpoints for w-*
|
||||
@each $breakpoint in map-keys($grid-breakpoints) {
|
||||
@each $size, $length in $sizes {
|
||||
@include media-breakpoint-up($breakpoint) {
|
||||
.w-#{$breakpoint}-#{$size} {
|
||||
width: $length !important;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Allow state of input group to be displayed under the group
|
||||
|
@ -88,18 +90,16 @@ body {
|
|||
margin-top: 0;
|
||||
}
|
||||
|
||||
.card-header {
|
||||
.card, .list-group-item {
|
||||
h1, h2, h3, h4, h5, h6 {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: 1.75rem;
|
||||
}
|
||||
}
|
||||
|
||||
.card-body {
|
||||
padding: 1rem;
|
||||
.card-header, .list-group-item {
|
||||
h1, h2, h3, h4, h5, h6 {
|
||||
font-weight: $font-weight-normal;
|
||||
}
|
||||
}
|
||||
|
||||
// collapse icon
|
||||
|
@ -124,6 +124,10 @@ body {
|
|||
}
|
||||
}
|
||||
|
||||
code {
|
||||
background: ghostwhite;
|
||||
}
|
||||
|
||||
.log {
|
||||
margin-bottom: 0;
|
||||
padding: 1rem;
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
import Vue from 'vue'
|
||||
|
||||
import api from '@/api'
|
||||
import { isEmptyValue } from '@/helpers/commons'
|
||||
|
||||
|
||||
export default {
|
||||
|
@ -14,31 +15,31 @@ export default {
|
|||
}),
|
||||
|
||||
mutations: {
|
||||
'SET_DOMAINS' (state, domains) {
|
||||
'SET_DOMAINS' (state, [domains]) {
|
||||
state.domains = domains
|
||||
},
|
||||
|
||||
'ADD_DOMAINS' (state, { domain }) {
|
||||
'ADD_DOMAINS' (state, [{ domain }]) {
|
||||
state.domains.push(domain)
|
||||
},
|
||||
|
||||
'DEL_DOMAINS' (state, domain) {
|
||||
'DEL_DOMAINS' (state, [domain]) {
|
||||
state.domains.splice(state.domains.indexOf(domain), 1)
|
||||
},
|
||||
|
||||
'SET_MAIN_DOMAIN' (state, response) {
|
||||
'SET_MAIN_DOMAIN' (state, [response]) {
|
||||
state.main_domain = response.current_main_domain
|
||||
},
|
||||
|
||||
'UPDATE_MAIN_DOMAIN' (state, domain) {
|
||||
'UPDATE_MAIN_DOMAIN' (state, [domain]) {
|
||||
state.main_domain = domain
|
||||
},
|
||||
|
||||
'SET_USERS' (state, users) {
|
||||
state.users = Object.keys(users).length === 0 ? null : users
|
||||
'SET_USERS' (state, [users]) {
|
||||
state.users = users || null
|
||||
},
|
||||
|
||||
'ADD_USERS' (state, user) {
|
||||
'ADD_USERS' (state, [user]) {
|
||||
if (!state.users) state.users = {}
|
||||
Vue.set(state.users, user.username, user)
|
||||
},
|
||||
|
@ -60,7 +61,7 @@ export default {
|
|||
this.commit('SET_USERS_DETAILS', payload)
|
||||
},
|
||||
|
||||
'DEL_USERS_DETAILS' (state, username) {
|
||||
'DEL_USERS_DETAILS' (state, [username]) {
|
||||
Vue.delete(state.users_details, username)
|
||||
if (state.users) {
|
||||
Vue.delete(state.users, username)
|
||||
|
@ -70,60 +71,80 @@ export default {
|
|||
}
|
||||
},
|
||||
|
||||
'SET_GROUPS' (state, groups) {
|
||||
'SET_GROUPS' (state, [groups]) {
|
||||
state.groups = groups
|
||||
},
|
||||
|
||||
'ADD_GROUPS' (state, { name }) {
|
||||
'ADD_GROUPS' (state, [{ name }]) {
|
||||
if (state.groups !== undefined) {
|
||||
Vue.set(state.groups, name, { members: [], permissions: [] })
|
||||
}
|
||||
},
|
||||
|
||||
'DEL_GROUPS' (state, groupname) {
|
||||
'UPDATE_GROUPS' (state, [data, { groupName }]) {
|
||||
Vue.set(state.groups, groupName, data)
|
||||
},
|
||||
|
||||
'DEL_GROUPS' (state, [groupname]) {
|
||||
Vue.delete(state.groups, groupname)
|
||||
},
|
||||
|
||||
'SET_PERMISSIONS' (state, permissions) {
|
||||
'SET_PERMISSIONS' (state, [permissions]) {
|
||||
state.permissions = permissions
|
||||
},
|
||||
|
||||
'UPDATE_PERMISSIONS' (state, [_, { groupName, action, permId }]) {
|
||||
// FIXME hacky way to update the store
|
||||
const permissions = state.groups[groupName].permissions
|
||||
if (action === 'add') {
|
||||
permissions.push(permId)
|
||||
} else if (action === 'remove') {
|
||||
const index = permissions.indexOf(permId)
|
||||
if (index > -1) permissions.splice(index, 1)
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
actions: {
|
||||
'GET' ({ state, commit, rootState }, { uri, param, storeKey = uri, options = {} }) {
|
||||
const noCache = !rootState.cache || options.noCache || false
|
||||
'GET' (
|
||||
{ state, commit, rootState },
|
||||
{ uri, param, storeKey = uri, humanKey, noCache, options, ...extraParams }
|
||||
) {
|
||||
const currentState = param ? state[storeKey][param] : state[storeKey]
|
||||
// if data has already been queried, simply return
|
||||
if (currentState !== undefined && !noCache) return currentState
|
||||
|
||||
return api.fetch('GET', param ? `${uri}/${param}` : uri, null, options).then(responseData => {
|
||||
const ignoreCache = !rootState.cache || noCache || false
|
||||
if (currentState !== undefined && !ignoreCache) return currentState
|
||||
return api.fetch('GET', param ? `${uri}/${param}` : uri, null, humanKey, options).then(responseData => {
|
||||
const data = responseData[storeKey] ? responseData[storeKey] : responseData
|
||||
commit('SET_' + storeKey.toUpperCase(), param ? [param, data] : data)
|
||||
commit(
|
||||
'SET_' + storeKey.toUpperCase(),
|
||||
[param, data, extraParams].filter(item => !isEmptyValue(item))
|
||||
)
|
||||
return param ? state[storeKey][param] : state[storeKey]
|
||||
})
|
||||
},
|
||||
|
||||
'POST' ({ state, commit }, { uri, storeKey = uri, data, options }) {
|
||||
return api.fetch('POST', uri, data, options).then(responseData => {
|
||||
'POST' ({ state, commit }, { uri, storeKey = uri, data, humanKey, options, ...extraParams }) {
|
||||
return api.fetch('POST', uri, data, humanKey, options).then(responseData => {
|
||||
// FIXME api/domains returns null
|
||||
if (responseData === null) responseData = data
|
||||
responseData = responseData[storeKey] ? responseData[storeKey] : responseData
|
||||
commit('ADD_' + storeKey.toUpperCase(), responseData)
|
||||
commit('ADD_' + storeKey.toUpperCase(), [responseData, extraParams].filter(item => !isEmptyValue(item)))
|
||||
return state[storeKey]
|
||||
})
|
||||
},
|
||||
|
||||
'PUT' ({ state, commit }, { uri, param, storeKey = uri, data, options }) {
|
||||
return api.fetch('PUT', param ? `${uri}/${param}` : uri, data, options).then(responseData => {
|
||||
'PUT' ({ state, commit }, { uri, param, storeKey = uri, data, humanKey, options, ...extraParams }) {
|
||||
return api.fetch('PUT', param ? `${uri}/${param}` : uri, data, humanKey, options).then(responseData => {
|
||||
const data = responseData[storeKey] ? responseData[storeKey] : responseData
|
||||
commit('UPDATE_' + storeKey.toUpperCase(), param ? [param, data] : data)
|
||||
commit('UPDATE_' + storeKey.toUpperCase(), [param, data, extraParams].filter(item => !isEmptyValue(item)))
|
||||
return param ? state[storeKey][param] : state[storeKey]
|
||||
})
|
||||
},
|
||||
|
||||
'DELETE' ({ commit }, { uri, param, storeKey = uri, data, options }) {
|
||||
return api.fetch('DELETE', param ? `${uri}/${param}` : uri, data, options).then(() => {
|
||||
commit('DEL_' + storeKey.toUpperCase(), param)
|
||||
'DELETE' ({ commit }, { uri, param, storeKey = uri, data, humanKey, options, ...extraParams }) {
|
||||
return api.fetch('DELETE', param ? `${uri}/${param}` : uri, data, humanKey, options).then(() => {
|
||||
commit('DEL_' + storeKey.toUpperCase(), [param, extraParams].filter(item => !isEmptyValue(item)))
|
||||
})
|
||||
}
|
||||
},
|
||||
|
@ -140,9 +161,12 @@ export default {
|
|||
},
|
||||
|
||||
usersAsChoices: state => {
|
||||
return Object.values(state.users).map(({ username, fullname, mail }) => {
|
||||
return { text: `${fullname} (${mail})`, value: username }
|
||||
})
|
||||
if (state.users) {
|
||||
return Object.values(state.users).map(({ username, fullname, mail }) => {
|
||||
return { text: `${fullname} (${mail})`, value: username }
|
||||
})
|
||||
}
|
||||
return []
|
||||
},
|
||||
|
||||
user: state => name => state.users_details[name], // not cached
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
import Vue from 'vue'
|
||||
import api from '@/api'
|
||||
import router from '@/router'
|
||||
import { timeout } from '@/helpers/commons'
|
||||
import i18n from '@/i18n'
|
||||
import { timeout, isObjectLiteral } from '@/helpers/commons'
|
||||
|
||||
export default {
|
||||
state: {
|
||||
|
@ -107,7 +108,7 @@ export default {
|
|||
},
|
||||
|
||||
'LOGIN' ({ dispatch }, password) {
|
||||
return api.post('login', { password }, { websocket: false }).then(() => {
|
||||
return api.post('login', { credentials: password }, null, { websocket: false }).then(() => {
|
||||
dispatch('CONNECT')
|
||||
})
|
||||
},
|
||||
|
@ -123,8 +124,12 @@ export default {
|
|||
})
|
||||
},
|
||||
|
||||
'INIT_REQUEST' ({ commit }, { method, uri, initial, wait, websocket }) {
|
||||
let request = { method, uri, initial, status: 'pending' }
|
||||
'INIT_REQUEST' ({ commit }, { method, uri, humanKey, initial, wait, websocket }) {
|
||||
// Try to find a description for an API route to display in history and modals
|
||||
const { key, ...args } = isObjectLiteral(humanKey) ? humanKey : { key: humanKey }
|
||||
const humanRoute = key ? i18n.t('human_routes.' + key, args) : `[${method}] /${uri}`
|
||||
|
||||
let request = { method, uri, humanRoute, initial, status: 'pending' }
|
||||
if (websocket) {
|
||||
request = { ...request, messages: [], date: Date.now(), warnings: 0, errors: 0 }
|
||||
commit('ADD_HISTORY_ACTION', request)
|
||||
|
@ -145,11 +150,15 @@ export default {
|
|||
'END_REQUEST' ({ commit }, { request, success, wait }) {
|
||||
let status = success ? 'success' : 'error'
|
||||
if (success && (request.warnings || request.errors)) {
|
||||
const messages = request.messages
|
||||
if (messages.length && messages[messages.length - 1].color === 'warning') {
|
||||
request.showWarningMessage = true
|
||||
}
|
||||
status = 'warning'
|
||||
}
|
||||
|
||||
commit('UPDATE_REQUEST', { request, key: 'status', value: status })
|
||||
if (wait) {
|
||||
if (wait && !request.showWarningMessage) {
|
||||
// Remove the overlay after a short delay to allow an error to display withtout flickering.
|
||||
setTimeout(() => {
|
||||
commit('SET_WAITING', false)
|
||||
|
@ -160,7 +169,7 @@ export default {
|
|||
'DISPATCH_MESSAGE' ({ commit }, { request, messages }) {
|
||||
for (const type in messages) {
|
||||
const message = {
|
||||
text: messages[type],
|
||||
text: messages[type].replace('\n', '<br>'),
|
||||
color: type === 'error' ? 'danger' : type
|
||||
}
|
||||
let progressBar = message.text.match(/^\[#*\+*\.*\] > /)
|
||||
|
@ -214,6 +223,11 @@ export default {
|
|||
}
|
||||
}
|
||||
commit('SET_ERROR', null)
|
||||
},
|
||||
|
||||
'DISMISS_WARNING' ({ commit, state }, request) {
|
||||
commit('SET_WAITING', false)
|
||||
delete request.showWarningMessage
|
||||
}
|
||||
},
|
||||
|
||||
|
|
|
@ -6,8 +6,8 @@
|
|||
:key="item.routeName"
|
||||
:to="{ name: item.routeName }"
|
||||
>
|
||||
<icon :iname="item.icon" class="lg" />
|
||||
<h2>{{ $t(item.translation) }}</h2>
|
||||
<icon :iname="item.icon" class="lg ml-1" />
|
||||
<h4>{{ $t(item.translation) }}</h4>
|
||||
<icon iname="chevron-right" class="lg fs-sm ml-auto" />
|
||||
</b-list-group-item>
|
||||
</b-list-group>
|
||||
|
|
|
@ -32,9 +32,13 @@
|
|||
export default {
|
||||
name: 'Login',
|
||||
|
||||
props: {
|
||||
skipInstallCheck: { type: Boolean, default: false }
|
||||
},
|
||||
|
||||
data () {
|
||||
return {
|
||||
disabled: true,
|
||||
disabled: !this.skipInstallCheck,
|
||||
password: '',
|
||||
isValid: null,
|
||||
apiError: undefined
|
||||
|
@ -51,6 +55,7 @@ export default {
|
|||
},
|
||||
|
||||
created () {
|
||||
if (this.skipInstallCheck) return
|
||||
this.$store.dispatch('CHECK_INSTALL').then(installed => {
|
||||
if (installed) {
|
||||
this.disabled = false
|
||||
|
|
|
@ -12,43 +12,63 @@
|
|||
<span v-html="$t('postinstall_intro_3')" />
|
||||
</p>
|
||||
|
||||
<b-button size="lg" variant="primary" @click="step = 'domain'">
|
||||
<b-button size="lg" variant="primary" @click="goToStep('domain')">
|
||||
{{ $t('begin') }}
|
||||
</b-button>
|
||||
</template>
|
||||
|
||||
<!-- DOMAIN SETUP STEP -->
|
||||
<template v-else-if="step === 'domain'">
|
||||
<domain-form @submit="setDomain" :title="$t('postinstall_set_domain')" :submit-text="$t('next')">
|
||||
<domain-form
|
||||
:title="$t('postinstall_set_domain')" :submit-text="$t('next')" :server-error="serverError"
|
||||
@submit="setDomain"
|
||||
>
|
||||
<template #disclaimer>
|
||||
<p class="alert alert-warning" v-t="'postinstall_domain'" />
|
||||
<p class="alert alert-info" v-t="'postinstall_domain'" />
|
||||
</template>
|
||||
</domain-form>
|
||||
|
||||
<b-button variant="primary" @click="step = 'start'" class="mt-3">
|
||||
<b-button variant="primary" @click="goToStep('start')" class="mt-3">
|
||||
<icon iname="chevron-left" /> {{ $t('previous') }}
|
||||
</b-button>
|
||||
</template>
|
||||
|
||||
<!-- PASSWORD SETUP STEP -->
|
||||
<template v-else-if="step === 'password'">
|
||||
<password-form :title="$t('postinstall_set_password')" :submit-text="$t('next')" @submit="setPassword">
|
||||
<password-form
|
||||
:title="$t('postinstall_set_password')" :submit-text="$t('next')" :server-error="serverError"
|
||||
@submit="setPassword"
|
||||
>
|
||||
<template #disclaimer>
|
||||
<p class="alert alert-warning" v-t="'postinstall_password'" />
|
||||
</template>
|
||||
</password-form>
|
||||
|
||||
<b-button variant="primary" @click="step = 'domain'" class="mt-3">
|
||||
<b-button variant="primary" @click="goToStep('domain')" class="mt-3">
|
||||
<icon iname="chevron-left" /> {{ $t('previous') }}
|
||||
</b-button>
|
||||
</template>
|
||||
|
||||
<template v-else-if="step === 'rootfsspace-error'">
|
||||
<card no-body header-class="d-none" footer-bg-variant="danger">
|
||||
<b-card-body class="alert alert-danger m-0">
|
||||
{{ serverError }}
|
||||
</b-card-body>
|
||||
|
||||
<template #buttons>
|
||||
<b-button variant="light" size="sm" @click="performPostInstall(true)">
|
||||
<icon iname="warning" /> {{ $t('postinstall.force') }}
|
||||
</b-button>
|
||||
</template>
|
||||
</card>
|
||||
</template>
|
||||
|
||||
<!-- POST-INSTALL SUCCESS STEP -->
|
||||
<template v-else-if="step === 'login'">
|
||||
<p class="alert alert-success">
|
||||
<icon iname="thumbs-up" /> {{ $t('installation_complete') }}
|
||||
</p>
|
||||
<login />
|
||||
<login skip-install-check />
|
||||
</template>
|
||||
</div>
|
||||
</template>
|
||||
|
@ -71,14 +91,20 @@ export default {
|
|||
return {
|
||||
step: 'start',
|
||||
domain: undefined,
|
||||
password: undefined
|
||||
password: undefined,
|
||||
serverError: ''
|
||||
}
|
||||
},
|
||||
|
||||
methods: {
|
||||
goToStep (step) {
|
||||
this.serverError = ''
|
||||
this.step = step
|
||||
},
|
||||
|
||||
setDomain ({ domain }) {
|
||||
this.domain = domain
|
||||
this.step = 'password'
|
||||
this.goToStep('password')
|
||||
},
|
||||
|
||||
async setPassword ({ password }) {
|
||||
|
@ -90,11 +116,27 @@ export default {
|
|||
this.performPostInstall()
|
||||
},
|
||||
|
||||
performPostInstall () {
|
||||
performPostInstall (force = false) {
|
||||
// FIXME does the api will throw an error for bad passwords ?
|
||||
api.post('postinstall', { domain: this.domain, password: this.password }).then(data => {
|
||||
api.post(
|
||||
'postinstall' + (force ? '?force_diskspace' : ''),
|
||||
{ domain: this.domain, password: this.password },
|
||||
{ key: 'postinstall' }
|
||||
).then(() => {
|
||||
// Display success message and allow the user to login
|
||||
this.step = 'login'
|
||||
this.goToStep('login')
|
||||
}).catch(err => {
|
||||
if (err.name !== 'APIBadRequestError') throw err
|
||||
if (err.key === 'postinstall_low_rootfsspace') {
|
||||
this.step = 'rootfsspace-error'
|
||||
} else if (err.key.includes('password')) {
|
||||
this.step = 'password'
|
||||
} else if (['domain', 'dyndns'].some(word => err.key.includes(word))) {
|
||||
this.step = 'domain'
|
||||
} else {
|
||||
throw err
|
||||
}
|
||||
this.serverError = err.message
|
||||
})
|
||||
}
|
||||
},
|
||||
|
|
|
@ -61,9 +61,7 @@ export default {
|
|||
props: {
|
||||
title: { type: String, required: true },
|
||||
submitText: { type: String, default: null },
|
||||
serverError: { type: String, default: '' },
|
||||
// Do not query the api (used by postinstall)
|
||||
noStore: { type: Boolean, default: false }
|
||||
serverError: { type: String, default: '' }
|
||||
},
|
||||
|
||||
data () {
|
||||
|
|
|
@ -20,7 +20,8 @@
|
|||
</p>
|
||||
|
||||
<p>
|
||||
<strong v-t="'api_error.error_message'" /> <span v-html="error.message" />
|
||||
<strong v-t="'api_error.error_message'" />
|
||||
<b-alert class="mt-2" variant="danger" v-html="error.message" />
|
||||
</p>
|
||||
|
||||
<template v-if="error.traceback">
|
||||
|
@ -42,7 +43,7 @@
|
|||
<!-- TODO add copy error ? -->
|
||||
<b-button
|
||||
variant="light" size="sm"
|
||||
v-t="'words.dismiss'" @click="dismiss"
|
||||
v-t="'ok'" @click="dismiss"
|
||||
/>
|
||||
</b-card-footer>
|
||||
</div>
|
||||
|
|
|
@ -10,9 +10,9 @@
|
|||
@mousedown.left.prevent="onHistoryBarClick"
|
||||
@keyup.space.enter.prevent="onHistoryBarKey"
|
||||
>
|
||||
<h6 class="m-0">
|
||||
<icon iname="history" /> <span class="d-none d-sm-inline">{{ $t('history.title') }}</span>
|
||||
</h6>
|
||||
<h5 class="m-0">
|
||||
<icon iname="history" /> <span class="d-none d-sm-inline font-weight-bold">{{ $t('history.title') }}</span>
|
||||
</h5>
|
||||
|
||||
<!-- CURRENT/LAST ACTION -->
|
||||
<b-button
|
||||
|
@ -33,6 +33,10 @@
|
|||
class="accordion" role="tablist"
|
||||
id="history" ref="history"
|
||||
>
|
||||
<p v-if="history.length === 0" class="alert m-0 px-2 py-1">
|
||||
{{ $t('history.is_empty') }}
|
||||
</p>
|
||||
|
||||
<!-- ACTION LIST -->
|
||||
<b-card
|
||||
v-for="(action, i) in history" :key="i"
|
||||
|
|
|
@ -12,8 +12,7 @@
|
|||
<query-header :request="error || currentRequest" status-size="lg" />
|
||||
</b-card-header>
|
||||
|
||||
<component v-if="error" :is="'ErrorDisplay'" :request="error" />
|
||||
<component v-else :is="'WaitingDisplay'" :request="currentRequest" />
|
||||
<component :is="component.name" :request="component.request" />
|
||||
</b-card>
|
||||
</template>
|
||||
</b-overlay>
|
||||
|
@ -21,7 +20,7 @@
|
|||
|
||||
<script>
|
||||
import { mapGetters } from 'vuex'
|
||||
import { ErrorDisplay, WaitingDisplay } from '@/views/_partials'
|
||||
import { ErrorDisplay, WarningDisplay, WaitingDisplay } from '@/views/_partials'
|
||||
import QueryHeader from '@/components/QueryHeader'
|
||||
|
||||
export default {
|
||||
|
@ -29,16 +28,30 @@ export default {
|
|||
|
||||
components: {
|
||||
ErrorDisplay,
|
||||
WarningDisplay,
|
||||
WaitingDisplay,
|
||||
QueryHeader
|
||||
},
|
||||
|
||||
computed: mapGetters(['waiting', 'error', 'currentRequest'])
|
||||
computed: {
|
||||
...mapGetters(['waiting', 'error', 'currentRequest']),
|
||||
|
||||
component () {
|
||||
const { error, currentRequest: request } = this
|
||||
if (error) {
|
||||
return { name: 'ErrorDisplay', request: error }
|
||||
} else if (request.showWarningMessage) {
|
||||
return { name: 'WarningDisplay', request }
|
||||
} else {
|
||||
return { name: 'WaitingDisplay', request }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
// Style for `ErrorDisplay` and `WaitingDisplay`'s cards
|
||||
// Style for `*Display`'s cards
|
||||
.card-overlay {
|
||||
position: sticky;
|
||||
top: 10vh;
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
|
||||
<!-- PROGRESS BAR -->
|
||||
<b-progress
|
||||
v-if="progress" class="mt-4"
|
||||
v-if="progress" class="my-4"
|
||||
:max="progress.max" height=".5rem"
|
||||
>
|
||||
<b-progress-bar variant="success" :value="progress.values[0]" />
|
||||
|
@ -59,7 +59,7 @@ export default {
|
|||
|
||||
<style lang="scss" scoped>
|
||||
.custom-spinner {
|
||||
animation: 4s linear infinite;
|
||||
animation: 8s linear infinite;
|
||||
background-repeat: no-repeat;
|
||||
|
||||
&.pacman {
|
||||
|
|
43
app/src/views/_partials/WarningDisplay.vue
Normal file
43
app/src/views/_partials/WarningDisplay.vue
Normal file
|
@ -0,0 +1,43 @@
|
|||
<template>
|
||||
<!-- This card receives style from `ViewLockOverlay` if used inside it -->
|
||||
<div>
|
||||
<b-card-body body-class="alert alert-warning" v-html="warning.text" />
|
||||
|
||||
<b-card-footer footer-bg-variant="warning">
|
||||
<b-button
|
||||
variant="light" size="sm"
|
||||
v-t="'ok'" @click="dismiss"
|
||||
/>
|
||||
</b-card-footer>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'WarningDisplay',
|
||||
|
||||
props: {
|
||||
request: { type: Object, required: true }
|
||||
},
|
||||
|
||||
computed: {
|
||||
warning () {
|
||||
const messages = this.request.messages
|
||||
return messages[messages.length - 1]
|
||||
}
|
||||
},
|
||||
|
||||
methods: {
|
||||
dismiss () {
|
||||
this.$store.dispatch('DISMISS_WARNING', this.request)
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.card-body {
|
||||
padding-bottom: 1.5rem !important;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
</style>
|
|
@ -1,4 +1,5 @@
|
|||
export { default as ErrorDisplay } from './ErrorDisplay'
|
||||
export { default as WarningDisplay } from './WarningDisplay'
|
||||
export { default as WaitingDisplay } from './WaitingDisplay'
|
||||
|
||||
export { default as HistoryConsole } from './HistoryConsole'
|
||||
|
|
|
@ -38,11 +38,10 @@
|
|||
</template>
|
||||
|
||||
<script>
|
||||
import api from '@/api'
|
||||
import api, { objectToParams } from '@/api'
|
||||
import { validationMixin } from 'vuelidate'
|
||||
|
||||
import { formatI18nField, formatYunoHostArguments, formatFormData } from '@/helpers/yunohostArguments'
|
||||
import { objectToParams } from '@/helpers/commons'
|
||||
|
||||
export default {
|
||||
name: 'AppActions',
|
||||
|
@ -100,7 +99,11 @@ export default {
|
|||
// FIXME api expects at least one argument ?! (fake one given with { dontmindthis } )
|
||||
const args = objectToParams(action.form ? formatFormData(action.form) : { dontmindthis: undefined })
|
||||
|
||||
api.put(`apps/${this.id}/actions/${action.id}`, { args }).then(response => {
|
||||
api.put(
|
||||
`apps/${this.id}/actions/${action.id}`,
|
||||
{ args },
|
||||
{ key: 'apps.perform_action', action: action.id, name: this.id }
|
||||
).then(() => {
|
||||
this.$refs.view.fetchQueries()
|
||||
}).catch(err => {
|
||||
if (err.name !== 'APIBadRequestError') throw err
|
||||
|
|
|
@ -66,15 +66,20 @@
|
|||
<b-card-group v-else deck>
|
||||
<b-card no-body v-for="app in filteredApps" :key="app.id">
|
||||
<b-card-body class="d-flex flex-column">
|
||||
<b-card-title class="d-flex">
|
||||
<b-card-title class="d-flex mb-2">
|
||||
{{ app.manifest.name }}
|
||||
<small v-if="app.state !== 'working'" class="ml-2">
|
||||
<small v-if="app.state !== 'working'" class="d-flex align-items-center ml-2">
|
||||
<b-badge
|
||||
v-if="app.state !== 'highquality'"
|
||||
:variant="(app.color === 'danger' && app.state === 'lowquality') ? 'warning' : app.color"
|
||||
v-b-popover.hover.bottom="$t(`app_state_${app.state}_explanation`)"
|
||||
>
|
||||
{{ $t('app_state_' + app.state) }}
|
||||
</b-badge>
|
||||
<icon
|
||||
v-else iname="star" class="star"
|
||||
v-b-popover.hover.bottom="$t(`app_state_${app.state}_explanation`)"
|
||||
/>
|
||||
</small>
|
||||
</b-card-title>
|
||||
|
||||
|
@ -159,7 +164,7 @@ export default {
|
|||
data () {
|
||||
return {
|
||||
queries: [
|
||||
['GET', 'appscatalog?full&with_categories']
|
||||
['GET', 'apps/catalog?full&with_categories']
|
||||
],
|
||||
|
||||
// Data
|
||||
|
@ -188,10 +193,9 @@ export default {
|
|||
customInstall: {
|
||||
field: {
|
||||
label: this.$i18n.t('url'),
|
||||
description: this.$i18n.t('custom_app_url_only_github'),
|
||||
props: {
|
||||
id: 'custom-install',
|
||||
placeholder: 'https://github.com/USER/REPOSITORY'
|
||||
placeholder: 'https://some.git.forge.tld/USER/REPOSITORY'
|
||||
}
|
||||
},
|
||||
url: ''
|
||||
|
@ -268,7 +272,7 @@ export default {
|
|||
} else {
|
||||
filters.isDecentQuality = true
|
||||
}
|
||||
if (app.high_quality && app.level > 7) {
|
||||
if (app.level >= 8) {
|
||||
filters.state = 'highquality'
|
||||
filters.isHighQuality = true
|
||||
}
|
||||
|
@ -276,8 +280,7 @@ export default {
|
|||
},
|
||||
|
||||
formatColor (app) {
|
||||
if (app.isHighQuality) return 'best'
|
||||
if (app.isDecentQuality) return 'success'
|
||||
if (app.isDecentQuality || app.isHighQuality) return 'success'
|
||||
if (app.isWorking) return 'warning'
|
||||
return 'danger'
|
||||
},
|
||||
|
@ -389,6 +392,10 @@ export default {
|
|||
.alert-warning {
|
||||
font-size: .75em;
|
||||
}
|
||||
|
||||
.star {
|
||||
color: goldenrod;
|
||||
}
|
||||
}
|
||||
|
||||
.category-card {
|
||||
|
|
|
@ -38,9 +38,8 @@
|
|||
import { validationMixin } from 'vuelidate'
|
||||
|
||||
// FIXME needs test and rework
|
||||
import api from '@/api'
|
||||
import api, { objectToParams } from '@/api'
|
||||
import { formatI18nField, formatYunoHostArguments, formatFormData } from '@/helpers/yunohostArguments'
|
||||
import { objectToParams } from '@/helpers/commons'
|
||||
|
||||
export default {
|
||||
name: 'AppConfigPanel',
|
||||
|
@ -103,7 +102,11 @@ export default {
|
|||
applyConfig (id_) {
|
||||
const args = objectToParams(formatFormData(this.forms[id_]))
|
||||
|
||||
api.post(`apps/${this.id}/config`, { args }).then(response => {
|
||||
api.put(
|
||||
`apps/${this.id}/config`, { args }, { key: 'apps.update_config', name: this.id }
|
||||
).then(response => {
|
||||
// FIXME what should be done ?
|
||||
/* eslint-disable-next-line */
|
||||
console.log('SUCCESS', response)
|
||||
}).catch(err => {
|
||||
if (err.name !== 'APIBadRequestError') throw err
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<template>
|
||||
<view-base :queries="queries" @queries-response="onQueriesResponse" ref="view">
|
||||
<!-- BASIC INFOS -->
|
||||
<card v-if="infos" :title="`${$t('infos')} — ${infos.label}`" icon="info-circle">
|
||||
<card v-if="infos" :title="infos.label" icon="cube">
|
||||
<b-row
|
||||
v-for="(value, prop) in infos" :key="prop"
|
||||
no-gutters class="row-line"
|
||||
|
@ -59,9 +59,9 @@
|
|||
</b-input-group>
|
||||
</template>
|
||||
|
||||
<template #description>
|
||||
<template v-if="perm.url" #description>
|
||||
{{ $t('permission_corresponding_url') }}:
|
||||
<b-link :href="'https:' + perm.url">
|
||||
<b-link :href="'https://' + perm.url">
|
||||
https://{{ perm.url }}
|
||||
</b-link>
|
||||
</template>
|
||||
|
@ -234,7 +234,7 @@ export default {
|
|||
multi_instance: this.$i18n.t(app.manifest.multi_instance ? 'yes' : 'no'),
|
||||
install_time: readableDate(app.settings.install_time, true, true)
|
||||
}
|
||||
if (app.settings.domain) {
|
||||
if (app.settings.domain && app.settings.path) {
|
||||
this.infos.url = 'https://' + app.settings.domain + app.settings.path
|
||||
form.url = {
|
||||
domain: app.settings.domain,
|
||||
|
@ -252,7 +252,11 @@ export default {
|
|||
|
||||
changeLabel (permName, data) {
|
||||
data.show_tile = data.show_tile ? 'True' : 'False'
|
||||
api.put('users/permissions/' + permName, data).then(this.$refs.view.fetchQueries)
|
||||
api.put(
|
||||
'users/permissions/' + permName,
|
||||
data,
|
||||
{ key: 'apps.change_label', prevName: this.infos.label, nextName: data.label }
|
||||
).then(this.$refs.view.fetchQueries)
|
||||
},
|
||||
|
||||
async changeUrl () {
|
||||
|
@ -262,7 +266,8 @@ export default {
|
|||
const { domain, path } = this.form.url
|
||||
api.put(
|
||||
`apps/${this.id}/changeurl`,
|
||||
{ domain, path: '/' + path }
|
||||
{ domain, path: '/' + path },
|
||||
{ key: 'apps.change_url', name: this.infos.label }
|
||||
).then(this.$refs.view.fetchQueries)
|
||||
},
|
||||
|
||||
|
@ -270,7 +275,11 @@ export default {
|
|||
const confirmed = await this.$askConfirmation(this.$i18n.t('confirm_app_default'))
|
||||
if (!confirmed) return
|
||||
|
||||
api.put(`apps/${this.id}/default`).then(this.$refs.view.fetchQueries)
|
||||
api.put(
|
||||
`apps/${this.id}/default`,
|
||||
{},
|
||||
{ key: 'apps.set_default', name: this.infos.label, domain: this.app.domain }
|
||||
).then(this.$refs.view.fetchQueries)
|
||||
},
|
||||
|
||||
async uninstall () {
|
||||
|
@ -279,7 +288,7 @@ export default {
|
|||
)
|
||||
if (!confirmed) return
|
||||
|
||||
api.delete('apps/' + this.id).then(() => {
|
||||
api.delete('apps/' + this.id, {}, { key: 'apps.uninstall', name: this.infos.label }).then(() => {
|
||||
this.$router.push({ name: 'app-list' })
|
||||
})
|
||||
}
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
<template>
|
||||
<view-base :loading="loading">
|
||||
<view-base :queries="queries" @queries-response="onQueriesResponse">
|
||||
<template v-if="infos">
|
||||
<!-- BASIC INFOS -->
|
||||
<card :title="`${$t('infos')} — ${name}`" icon="info-circle">
|
||||
<card :title="name" icon="download">
|
||||
<b-row
|
||||
v-for="(info, key) in infos" :key="key"
|
||||
no-gutters class="row-line"
|
||||
|
@ -19,7 +19,7 @@
|
|||
|
||||
<!-- INSTALL FORM -->
|
||||
<card-form
|
||||
:title="$t('operations')" icon="wrench" :submit-text="$t('install')"
|
||||
:title="$t('app_install_parameters')" icon="cog" :submit-text="$t('install')"
|
||||
:validation="$v" :server-error="serverError"
|
||||
@submit.prevent="performInstall"
|
||||
>
|
||||
|
@ -49,8 +49,7 @@
|
|||
<script>
|
||||
import { validationMixin } from 'vuelidate'
|
||||
|
||||
import api from '@/api'
|
||||
import { objectToParams } from '@/helpers/commons'
|
||||
import api, { objectToParams } from '@/api'
|
||||
import { formatYunoHostArguments, formatI18nField, formatFormData } from '@/helpers/yunohostArguments'
|
||||
|
||||
export default {
|
||||
|
@ -64,7 +63,12 @@ export default {
|
|||
|
||||
data () {
|
||||
return {
|
||||
loading: true,
|
||||
queries: [
|
||||
['GET', 'apps/manifest?app=' + this.id],
|
||||
['GET', { uri: 'domains' }],
|
||||
['GET', { uri: 'domains/main', storeKey: 'main_domain' }],
|
||||
['GET', { uri: 'users' }]
|
||||
],
|
||||
name: undefined,
|
||||
infos: undefined,
|
||||
formDisclaimer: null,
|
||||
|
@ -80,23 +84,7 @@ export default {
|
|||
},
|
||||
|
||||
methods: {
|
||||
getExternalManifest () {
|
||||
const url = this.id.replace('github.com', 'raw.githubusercontent.com') + 'master/manifest.json'
|
||||
return fetch(url).then(response => {
|
||||
if (response.ok) return response.json()
|
||||
else {
|
||||
throw Error('No manifest found at ' + url)
|
||||
}
|
||||
}).catch(() => {
|
||||
this.infos = null
|
||||
})
|
||||
},
|
||||
|
||||
getApiManifest () {
|
||||
return api.get('appscatalog?full').then(response => response.apps[this.id].manifest)
|
||||
},
|
||||
|
||||
formatManifestData (manifest) {
|
||||
onQueriesResponse (manifest) {
|
||||
this.name = manifest.name
|
||||
const infosKeys = ['id', 'description', 'license', 'version', 'multi_instance']
|
||||
if (manifest.license === undefined || manifest.license === 'free') {
|
||||
|
@ -115,7 +103,6 @@ export default {
|
|||
this.fields = fields
|
||||
this.form = form
|
||||
this.validations = { form: validations }
|
||||
this.loading = false
|
||||
},
|
||||
|
||||
async performInstall () {
|
||||
|
@ -127,27 +114,15 @@ export default {
|
|||
}
|
||||
|
||||
const { data: args, label } = formatFormData(this.form, { extract: ['label'] })
|
||||
const data = { app: this.id, label, args: objectToParams(args) }
|
||||
const data = { app: this.id, label, args: Object.entries(args).length ? objectToParams(args) : undefined }
|
||||
|
||||
api.post('apps', data).then(response => {
|
||||
api.post('apps', data, { key: 'apps.install', name: this.name }).then(() => {
|
||||
this.$router.push({ name: 'app-list' })
|
||||
}).catch(err => {
|
||||
if (err.name !== 'APIBadRequestError') throw err
|
||||
this.serverError = err.message
|
||||
})
|
||||
}
|
||||
},
|
||||
|
||||
created () {
|
||||
const isCustom = this.$route.name === 'app-install-custom'
|
||||
Promise.all([
|
||||
isCustom ? this.getExternalManifest() : this.getApiManifest(),
|
||||
api.fetchAll([
|
||||
['GET', { uri: 'domains' }],
|
||||
['GET', { uri: 'domains/main', storeKey: 'main_domain' }],
|
||||
['GET', { uri: 'users' }]
|
||||
])
|
||||
]).then((responses) => this.formatManifestData(responses[0]))
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
>
|
||||
<b-list-group flush>
|
||||
<!-- SYSTEM HEADER -->
|
||||
<b-list-group-item class="d-flex align-items-sm-center flex-column flex-sm-row" variant="light">
|
||||
<b-list-group-item class="d-flex align-items-sm-center flex-column flex-sm-row text-primary">
|
||||
<h4 class="m-0">
|
||||
<icon iname="cube" /> {{ $t('system') }}
|
||||
</h4>
|
||||
|
@ -35,7 +35,7 @@
|
|||
<h5 class="font-weight-bold">
|
||||
{{ item.name }}
|
||||
</h5>
|
||||
<p class="m-0">
|
||||
<p class="m-0 text-muted">
|
||||
{{ item.description }}
|
||||
</p>
|
||||
</div>
|
||||
|
@ -44,7 +44,7 @@
|
|||
</b-list-group-item>
|
||||
|
||||
<!-- APPS HEADER -->
|
||||
<b-list-group-item class="d-flex align-items-sm-center flex-column flex-sm-row" variant="light">
|
||||
<b-list-group-item class="d-flex align-items-sm-center flex-column flex-sm-row text-primary">
|
||||
<h4 class="m-0">
|
||||
<icon iname="cubes" /> {{ $t('applications') }}
|
||||
</h4>
|
||||
|
@ -164,7 +164,7 @@ export default {
|
|||
}
|
||||
}
|
||||
|
||||
api.post('backup', data).then(response => {
|
||||
api.post('backups', data, 'backups.create').then(() => {
|
||||
this.$router.push({ name: 'backup-list', params: { id: this.id } })
|
||||
})
|
||||
}
|
||||
|
|
|
@ -132,7 +132,7 @@ export default {
|
|||
data () {
|
||||
return {
|
||||
queries: [
|
||||
['GET', `backup/archives/${this.name}?with_details`]
|
||||
['GET', `backups/${this.name}?with_details`]
|
||||
],
|
||||
selected: [],
|
||||
error: '',
|
||||
|
@ -210,7 +210,9 @@ export default {
|
|||
}
|
||||
}
|
||||
|
||||
api.post('backup/restore/' + this.name, data).then(response => {
|
||||
api.put(
|
||||
`backups/${this.name}/restore`, data, { key: 'backups.restore', name: this.name }
|
||||
).then(() => {
|
||||
this.isValid = null
|
||||
}).catch(err => {
|
||||
if (err.name !== 'APIBadRequestError') throw err
|
||||
|
@ -223,14 +225,16 @@ export default {
|
|||
const confirmed = await this.$askConfirmation(this.$i18n.t('confirm_delete', { name: this.name }))
|
||||
if (!confirmed) return
|
||||
|
||||
api.delete('backup/archives/' + this.name).then(() => {
|
||||
api.delete(
|
||||
'backups/' + this.name, {}, { key: 'backups.delete', name: this.name }
|
||||
).then(() => {
|
||||
this.$router.push({ name: 'backup-list', params: { id: this.id } })
|
||||
})
|
||||
},
|
||||
|
||||
downloadBackup () {
|
||||
const host = this.$store.getters.host
|
||||
window.open(`https://${host}/yunohost/api/backup/download/${this.name}`, '_blank')
|
||||
window.open(`https://${host}/yunohost/api/backups/${this.name}/download`, '_blank')
|
||||
}
|
||||
},
|
||||
|
||||
|
|
|
@ -45,7 +45,7 @@ export default {
|
|||
data () {
|
||||
return {
|
||||
queries: [
|
||||
['GET', 'backup/archives?with_info']
|
||||
['GET', 'backups?with_info']
|
||||
],
|
||||
archives: undefined
|
||||
}
|
||||
|
|
|
@ -42,7 +42,7 @@
|
|||
</template>
|
||||
|
||||
<template #header-buttons>
|
||||
<b-button size="sm" :variant="report.items ? 'info' : 'success'" @click="runDiagnosis(report.id)">
|
||||
<b-button size="sm" :variant="report.items ? 'info' : 'success'" @click="runDiagnosis(report)">
|
||||
<icon iname="refresh" /> {{ $t('rerun_diagnosis') }}
|
||||
</b-button>
|
||||
</template>
|
||||
|
@ -64,13 +64,13 @@
|
|||
<div class="d-flex flex-column flex-lg-row ml-auto">
|
||||
<b-button
|
||||
v-if="item.ignored" size="sm"
|
||||
@click="toggleIgnoreIssue(false, report, item)"
|
||||
@click="toggleIgnoreIssue('unignore', report, item)"
|
||||
>
|
||||
<icon iname="bell" /> {{ $t('unignore') }}
|
||||
</b-button>
|
||||
<b-button
|
||||
v-else-if="item.issue" variant="warning" size="sm"
|
||||
@click="toggleIgnoreIssue(true, report, item)"
|
||||
@click="toggleIgnoreIssue('ignore', report, item)"
|
||||
>
|
||||
<icon iname="bell-slash" /> {{ $t('ignore') }}
|
||||
</b-button>
|
||||
|
@ -115,8 +115,8 @@ export default {
|
|||
data () {
|
||||
return {
|
||||
queries: [
|
||||
['POST', 'diagnosis/run?except_if_never_ran_yet'],
|
||||
['GET', 'diagnosis/show?full']
|
||||
['PUT', 'diagnosis/run?except_if_never_ran_yet', {}, 'diagnosis.run'],
|
||||
['GET', 'diagnosis?full']
|
||||
],
|
||||
reports: undefined
|
||||
}
|
||||
|
@ -171,22 +171,27 @@ export default {
|
|||
this.reports = reports
|
||||
},
|
||||
|
||||
runDiagnosis (id = null) {
|
||||
runDiagnosis ({ id = null, description } = {}) {
|
||||
const param = id !== null ? '?force' : ''
|
||||
const data = id !== null ? { categories: [id] } : {}
|
||||
api.post('diagnosis/run' + param, data).then(this.$refs.view.fetchQueries)
|
||||
|
||||
api.put(
|
||||
'diagnosis/run' + param,
|
||||
data,
|
||||
{ key: 'diagnosis.run' + (id !== null ? '_specific' : ''), description }
|
||||
).then(this.$refs.view.fetchQueries)
|
||||
},
|
||||
|
||||
toggleIgnoreIssue (ignore, report, item) {
|
||||
const key = (ignore ? 'add' : 'remove') + '_filter'
|
||||
const filterArgs = Object.entries(item.meta).reduce((filterArgs, entries) => {
|
||||
filterArgs.push(entries.join('='))
|
||||
return filterArgs
|
||||
}, [report.id])
|
||||
toggleIgnoreIssue (action, report, item) {
|
||||
const filterArgs = [report.id].concat(Object.entries(item.meta).map(entries => entries.join('=')))
|
||||
|
||||
api.post('diagnosis/ignore', { [key]: filterArgs }).then(() => {
|
||||
item.ignored = ignore
|
||||
if (ignore) {
|
||||
api.put(
|
||||
'diagnosis/' + action,
|
||||
{ filter: filterArgs },
|
||||
`diagnosis.${action}.${item.status.toLowerCase()}`
|
||||
).then(() => {
|
||||
item.ignored = action === 'ignore'
|
||||
if (item.ignored) {
|
||||
report[item.status.toLowerCase() + 's']--
|
||||
} else {
|
||||
report.ignoreds--
|
||||
|
|
|
@ -27,8 +27,7 @@ export default {
|
|||
onSubmit ({ domain, domainType }) {
|
||||
const uri = 'domains' + (domainType === 'dynDomain' ? '?dyndns' : '')
|
||||
api.post(
|
||||
{ uri, storeKey: 'domains' },
|
||||
{ domain }
|
||||
{ uri, storeKey: 'domains' }, { domain }, { key: 'domains.add', name: domain }
|
||||
).then(() => {
|
||||
this.$router.push({ name: 'domain-list' })
|
||||
}).catch(err => {
|
||||
|
|
|
@ -84,7 +84,7 @@ export default {
|
|||
data () {
|
||||
return {
|
||||
queries: [
|
||||
['GET', `domains/cert-status/${this.name}?full`]
|
||||
['GET', `domains/${this.name}/cert?full`]
|
||||
],
|
||||
cert: undefined,
|
||||
actionsEnabled: undefined
|
||||
|
@ -147,13 +147,13 @@ export default {
|
|||
const confirmed = await this.$askConfirmation(this.$i18n.t(`confirm_cert_${action}`))
|
||||
if (!confirmed) return
|
||||
|
||||
let uri = 'domains/cert-install/' + this.name
|
||||
let uri = `domains/${this.name}/cert`
|
||||
if (action === 'regen_selfsigned') uri += '?self_signed'
|
||||
else if (action === 'manual_renew_LE') uri += '?force'
|
||||
else if (action === 'revert_to_selfsigned') uri += '?self_signed&force'
|
||||
// FIXME trigger loading ? while posting ? while getting ?
|
||||
// this.$refs.view.fallback_loading = true
|
||||
api.post(uri).then(this.$refs.view.fetchQueries)
|
||||
api.put(
|
||||
uri, {}, { key: 'domains.' + action, name: this.name }
|
||||
).then(this.$refs.view.fetchQueries)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -20,14 +20,14 @@
|
|||
|
||||
<!-- DNS CONFIG -->
|
||||
<p>{{ $t('domain_dns_longdesc') }}</p>
|
||||
<b-button :to="{ name: 'domain-dns', param: { name } }">
|
||||
<b-button variant="outline-dark" :to="{ name: 'domain-dns', param: { name } }">
|
||||
<icon iname="globe" /> {{ $t('domain_dns_config') }}
|
||||
</b-button>
|
||||
<hr>
|
||||
|
||||
<!-- SSL CERTIFICATE -->
|
||||
<p>{{ $t('certificate_manage') }}</p>
|
||||
<b-button :to="{ name: 'domain-cert', param: { name } }">
|
||||
<b-button variant="outline-dark" :to="{ name: 'domain-cert', param: { name } }">
|
||||
<icon iname="lock" /> {{ $t('ssl_certificate') }}
|
||||
</b-button>
|
||||
<hr>
|
||||
|
@ -35,7 +35,7 @@
|
|||
<!-- DELETE -->
|
||||
<p>{{ $t('domain_delete_longdesc') }}</p>
|
||||
<p
|
||||
v-if="isMainDomain" class="alert alert-danger"
|
||||
v-if="isMainDomain" class="alert alert-info"
|
||||
v-html="$t('domain_delete_forbidden_desc', { domain: name })"
|
||||
/>
|
||||
<b-button v-else variant="danger" @click="deleteDomain">
|
||||
|
@ -83,7 +83,7 @@ export default {
|
|||
if (!confirmed) return
|
||||
|
||||
api.delete(
|
||||
{ uri: 'domains', param: this.name }
|
||||
{ uri: 'domains', param: this.name }, {}, { key: 'domains.delete', name: this.name }
|
||||
).then(() => {
|
||||
this.$router.push({ name: 'domain-list' })
|
||||
})
|
||||
|
@ -94,8 +94,9 @@ export default {
|
|||
if (!confirmed) return
|
||||
|
||||
api.put(
|
||||
{ uri: 'domains/main', storeKey: 'main_domain' },
|
||||
{ new_main_domain: this.name }
|
||||
{ uri: `domains/${this.name}/main`, storeKey: 'main_domain' },
|
||||
{},
|
||||
{ key: 'domains.set_default', name: this.name }
|
||||
).then(() => {
|
||||
// FIXME Have to commit by hand here since the response is empty (should return the given name)
|
||||
this.$store.commit('UPDATE_MAIN_DOMAIN', this.name)
|
||||
|
|
|
@ -45,7 +45,8 @@ export default {
|
|||
onSubmit () {
|
||||
api.post(
|
||||
{ uri: 'users/groups', storeKey: 'groups' },
|
||||
this.form
|
||||
this.form,
|
||||
{ key: 'groups.create', name: this.form.groupname }
|
||||
).then(() => {
|
||||
this.$router.push({ name: 'group-list' })
|
||||
}).catch(err => {
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
<view-search
|
||||
items-name="groups"
|
||||
:search.sync="search"
|
||||
:items="normalGroups"
|
||||
:items="primaryGroups"
|
||||
:filtered-items="filteredGroups"
|
||||
:queries="queries"
|
||||
@queries-response="onQueriesResponse"
|
||||
|
@ -16,13 +16,13 @@
|
|||
|
||||
<!-- PRIMARY GROUPS CARDS -->
|
||||
<card
|
||||
v-for="(group, name) in filteredGroups" :key="name" collapsable
|
||||
:title="group.isSpecial ? $t('group_' + name) : `${$t('group')} '${name}'`" icon="group"
|
||||
v-for="(group, groupName) in filteredGroups" :key="groupName" collapsable
|
||||
:title="group.isSpecial ? $t('group_' + groupName) : `${$t('group')} '${groupName}'`" icon="group"
|
||||
>
|
||||
<template #header-buttons>
|
||||
<!-- DELETE GROUP -->
|
||||
<b-button
|
||||
v-if="!group.isSpecial" @click="deleteGroup(name)"
|
||||
v-if="!group.isSpecial" @click="deleteGroup(groupName)"
|
||||
size="sm" variant="danger"
|
||||
>
|
||||
<icon iname="trash-o" /> {{ $t('delete') }}
|
||||
|
@ -36,17 +36,19 @@
|
|||
|
||||
<b-col>
|
||||
<template v-if="group.isSpecial">
|
||||
<p><icon iname="info-circle" /> {{ $t('group_explain_' + name) }}</p>
|
||||
<p v-if="name === 'visitors'">
|
||||
<p class="text-primary">
|
||||
<icon iname="info-circle" /> {{ $t('group_explain_' + groupName) }}
|
||||
</p>
|
||||
<p class="text-primary" v-if="groupName === 'visitors'">
|
||||
<em>{{ $t('group_explain_visitors_needed_for_external_client') }}</em>
|
||||
</p>
|
||||
</template>
|
||||
<template v-else>
|
||||
<zone-selectize
|
||||
:choices="group.availableMembers" :selected="group.members"
|
||||
item-icon="user"
|
||||
:label="$t('group_add_member')"
|
||||
@change="onUserChanged({ ...$event, name })"
|
||||
<tags-selectize
|
||||
v-model="group.members" :options="usersOptions"
|
||||
:id="groupName + '-users'" :label="$t('group_add_member')"
|
||||
tag-icon="user" items-name="users"
|
||||
@tag-update="onUserChanged({ ...$event, groupName })"
|
||||
/>
|
||||
</template>
|
||||
</b-col>
|
||||
|
@ -58,50 +60,45 @@
|
|||
<strong>{{ $t('permissions') }}</strong>
|
||||
</b-col>
|
||||
<b-col>
|
||||
<zone-selectize
|
||||
item-icon="key-modern" item-variant="dark"
|
||||
:choices="group.availablePermissions"
|
||||
:selected="group.permissions"
|
||||
:label="$t('group_add_permission')"
|
||||
:format="formatPermission"
|
||||
:removable="name === 'visitors' ? removable : null"
|
||||
@change="onPermissionChanged({ ...$event, name, groupType: 'normal' })"
|
||||
<tags-selectize
|
||||
v-model="group.permissions" :options="permissionsOptions"
|
||||
:id="groupName + '-perms'" :label="$t('group_add_permission')"
|
||||
tag-icon="key-modern" items-name="permissions"
|
||||
@tag-update="onPermissionChanged({ ...$event, groupName })"
|
||||
:disabled-items="group.disabledItems"
|
||||
/>
|
||||
</b-col>
|
||||
</b-row>
|
||||
</card>
|
||||
|
||||
<!-- GROUP SPECIFIC CARD -->
|
||||
<!-- USER GROUPS CARD -->
|
||||
<card
|
||||
v-if="userGroups" collapsable
|
||||
:title="$t('group_specific_permissions')" icon="group"
|
||||
>
|
||||
<template v-for="(name, index) in userGroupsNames">
|
||||
<b-row :key="name">
|
||||
<template v-for="(userName, index) in activeUserGroups">
|
||||
<b-row :key="userName">
|
||||
<b-col md="3" lg="2">
|
||||
<icon iname="user" /> <strong>{{ name }}</strong>
|
||||
<icon iname="user" /> <strong>{{ userName }}</strong>
|
||||
</b-col>
|
||||
|
||||
<b-col>
|
||||
<zone-selectize
|
||||
item-icon="key-modern" item-variant="dark"
|
||||
:choices="userGroups[name].availablePermissions"
|
||||
:selected="userGroups[name].permissions"
|
||||
:label="$t('group_add_permission')"
|
||||
:format="formatPermission"
|
||||
@change="onPermissionChanged({ ...$event, name, groupType: 'user' })"
|
||||
<tags-selectize
|
||||
v-model="userGroups[userName].permissions" :options="permissionsOptions"
|
||||
:id="userName + '-perms'" :label="$t('group_add_permission')"
|
||||
tag-icon="key-modern" items-name="permissions"
|
||||
@tag-update="onPermissionChanged({ ...$event, groupName: userName })"
|
||||
/>
|
||||
</b-col>
|
||||
</b-row>
|
||||
<hr :key="index">
|
||||
</template>
|
||||
|
||||
<base-selectize
|
||||
v-if="availableMembers.length"
|
||||
:label="$t('group_add_member')"
|
||||
:choices="availableMembers"
|
||||
:selected="userGroupsNames"
|
||||
@selected="onSpecificUserAdded"
|
||||
<tags-selectize
|
||||
v-model="activeUserGroups" :options="usersOptions"
|
||||
id="user-groups" :label="$t('group_add_member')"
|
||||
no-tags items-name="users"
|
||||
@tag-update="onSpecificUserAdded"
|
||||
/>
|
||||
</card>
|
||||
</view-search>
|
||||
|
@ -112,8 +109,7 @@ import Vue from 'vue'
|
|||
|
||||
import api from '@/api'
|
||||
import { isEmptyValue } from '@/helpers/commons'
|
||||
import ZoneSelectize from '@/components/ZoneSelectize'
|
||||
import BaseSelectize from '@/components/BaseSelectize'
|
||||
import TagsSelectize from '@/components/TagsSelectize'
|
||||
|
||||
// TODO add global search with type (search by: group, user, permission)
|
||||
// TODO add vuex store update on inputs ?
|
||||
|
@ -121,8 +117,7 @@ export default {
|
|||
name: 'GroupList',
|
||||
|
||||
components: {
|
||||
ZoneSelectize,
|
||||
BaseSelectize
|
||||
TagsSelectize
|
||||
},
|
||||
|
||||
data () {
|
||||
|
@ -134,128 +129,124 @@ export default {
|
|||
],
|
||||
search: '',
|
||||
permissions: undefined,
|
||||
normalGroups: undefined,
|
||||
userGroups: undefined
|
||||
permissionsOptions: undefined,
|
||||
primaryGroups: undefined,
|
||||
userGroups: undefined,
|
||||
usersOptions: undefined,
|
||||
activeUserGroups: undefined
|
||||
}
|
||||
},
|
||||
|
||||
computed: {
|
||||
filteredGroups () {
|
||||
const groups = this.normalGroups
|
||||
const groups = this.primaryGroups
|
||||
if (!groups) return
|
||||
const search = this.search.toLowerCase()
|
||||
const filtered = {}
|
||||
for (const name in groups) {
|
||||
if (name.toLowerCase().includes(search)) {
|
||||
filtered[name] = groups[name]
|
||||
for (const groupName in groups) {
|
||||
if (groupName.toLowerCase().includes(search)) {
|
||||
filtered[groupName] = groups[groupName]
|
||||
}
|
||||
}
|
||||
return isEmptyValue(filtered) ? null : filtered
|
||||
},
|
||||
|
||||
userGroupsNames () {
|
||||
const groups = this.userGroups
|
||||
if (!groups) return
|
||||
return Object.keys(groups).filter(name => {
|
||||
return groups[name].permissions !== null
|
||||
})
|
||||
},
|
||||
|
||||
availableMembers () {
|
||||
const groups = this.userGroups
|
||||
if (!groups) return
|
||||
return Object.keys(groups).filter(name => {
|
||||
return groups[name].permissions === null
|
||||
})
|
||||
}
|
||||
},
|
||||
|
||||
methods: {
|
||||
onQueriesResponse (users, allGroups, permissions) {
|
||||
onQueriesResponse (users, allGroups, permsDict) {
|
||||
// Do not use computed properties to get values from the store here to avoid auto
|
||||
// updates while modifying values.
|
||||
const normalGroups = {}
|
||||
const userGroups = {}
|
||||
const permissions = Object.entries(permsDict).map(([id, value]) => ({ id, ...value }))
|
||||
const userNames = users ? Object.keys(users) : []
|
||||
const primaryGroups = {}
|
||||
const userGroups = {}
|
||||
|
||||
for (const groupName in allGroups) {
|
||||
// copy the group to unlink it from the store
|
||||
const group = { ...allGroups[groupName] }
|
||||
group.availablePermissions = Object.keys(permissions).filter(perm => {
|
||||
// Remove 'email', 'xmpp' and protected permissions in visitors's permission choice list
|
||||
if (groupName === 'visitors' && (['mail.main', 'xmpp.main'].includes(perm) || permissions[perm].protected)) {
|
||||
return false
|
||||
}
|
||||
return !group.permissions.includes(perm)
|
||||
group.permissions = group.permissions.map((perm) => {
|
||||
return permsDict[perm].label
|
||||
})
|
||||
|
||||
if (userNames.includes(groupName)) {
|
||||
if (group.permissions.length === 0) {
|
||||
// This forbid the user to appear in the displayed user list
|
||||
group.permissions = null
|
||||
}
|
||||
userGroups[groupName] = group
|
||||
continue
|
||||
}
|
||||
|
||||
if (['visitors', 'all_users'].includes(groupName)) {
|
||||
group.isSpecial = true
|
||||
} else {
|
||||
group.availableMembers = userNames.filter(name => {
|
||||
return !group.members.includes(name)
|
||||
})
|
||||
group.isSpecial = ['visitors', 'all_users'].includes(groupName)
|
||||
|
||||
if (groupName === 'visitors') {
|
||||
// Forbid to add or remove a protected permission on group `visitors`
|
||||
group.disabledItems = permissions.filter(({ id }) => {
|
||||
return ['mail.main', 'xmpp.main'].includes(id) || permsDict[id].protected
|
||||
}).map(({ id }) => permsDict[id].label)
|
||||
}
|
||||
normalGroups[groupName] = group
|
||||
|
||||
if (groupName === 'all_users') {
|
||||
// Forbid to add ssh and sftp permission on group `all_users`
|
||||
group.disabledItems = permissions.filter(({ id }) => {
|
||||
return ['ssh.main', 'sftp.main'].includes(id)
|
||||
}).map(({ id }) => permsDict[id].label)
|
||||
}
|
||||
|
||||
primaryGroups[groupName] = group
|
||||
}
|
||||
|
||||
this.permissions = permissions
|
||||
this.normalGroups = normalGroups
|
||||
this.userGroups = isEmptyValue(userGroups) ? null : userGroups
|
||||
},
|
||||
const activeUserGroups = Object.entries(userGroups).filter(([_, group]) => {
|
||||
return group.permissions.length > 0
|
||||
}).map(([name]) => name)
|
||||
|
||||
onPermissionChanged ({ item, index, name, groupType, action }) {
|
||||
const uri = 'users/permissions/' + item
|
||||
const data = { [action]: name }
|
||||
const from = action === 'add' ? 'availablePermissions' : 'permissions'
|
||||
const to = action === 'add' ? 'permissions' : 'availablePermissions'
|
||||
api.put(uri, data).then(() => {
|
||||
this[groupType + 'Groups'][name][from].splice(index, 1)
|
||||
this[groupType + 'Groups'][name][to].push(item)
|
||||
Object.assign(this, {
|
||||
permissions,
|
||||
permissionsOptions: permissions.map(perm => perm.label),
|
||||
primaryGroups,
|
||||
userGroups: isEmptyValue(userGroups) ? null : userGroups,
|
||||
usersOptions: userNames,
|
||||
activeUserGroups
|
||||
})
|
||||
},
|
||||
|
||||
onUserChanged ({ item, index, name, action }) {
|
||||
const uri = 'users/groups/' + name
|
||||
const data = { [action]: item }
|
||||
const from = action === 'add' ? 'availableMembers' : 'members'
|
||||
const to = action === 'add' ? 'members' : 'availableMembers'
|
||||
api.put(uri, data).then(() => {
|
||||
this.normalGroups[name][from].splice(index, 1)
|
||||
this.normalGroups[name][to].push(item)
|
||||
})
|
||||
async onPermissionChanged ({ option, groupName, action, applyMethod }) {
|
||||
const permId = this.permissions.find(perm => perm.label === option).id
|
||||
if (action === 'add' && ['sftp.main', 'ssh.main'].includes(permId)) {
|
||||
const confirmed = await this.$askConfirmation(
|
||||
this.$i18n.t('confirm_group_add_access_permission', { name: groupName, perm: option })
|
||||
)
|
||||
if (!confirmed) return
|
||||
}
|
||||
api.put(
|
||||
// FIXME hacky way to update the store
|
||||
{ uri: `users/permissions/${permId}/${action}/${groupName}`, storeKey: 'permissions', groupName, action, permId },
|
||||
{},
|
||||
{ key: 'permissions.' + action, perm: option, name: groupName }
|
||||
).then(() => applyMethod(option))
|
||||
},
|
||||
|
||||
onSpecificUserAdded ({ item }) {
|
||||
this.userGroups[item].permissions = []
|
||||
onUserChanged ({ option, groupName, action, applyMethod }) {
|
||||
api.put(
|
||||
{ uri: `users/groups/${groupName}/${action}/${option}`, storeKey: 'groups', groupName },
|
||||
{},
|
||||
{ key: 'groups.' + action, user: option, name: groupName }
|
||||
).then(() => applyMethod(option))
|
||||
},
|
||||
|
||||
// FIXME Find a way to pass a filter to a component
|
||||
formatPermission (name) {
|
||||
return this.permissions[name].label
|
||||
onSpecificUserAdded ({ option: userName, action, applyMethod }) {
|
||||
if (action === 'add') {
|
||||
this.userGroups[userName].permissions = []
|
||||
applyMethod(userName)
|
||||
}
|
||||
},
|
||||
|
||||
removable (name) {
|
||||
return this.permissions[name].protected === false
|
||||
},
|
||||
|
||||
async deleteGroup (name) {
|
||||
const confirmed = await this.$askConfirmation(this.$i18n.t('confirm_delete', { name }))
|
||||
async deleteGroup (groupName) {
|
||||
const confirmed = await this.$askConfirmation(this.$i18n.t('confirm_delete', { name: groupName }))
|
||||
if (!confirmed) return
|
||||
|
||||
api.delete(
|
||||
{ uri: 'users/groups', param: name, storeKey: 'groups' }
|
||||
{ uri: 'users/groups', param: groupName, storeKey: 'groups' },
|
||||
{},
|
||||
{ key: 'groups.delete', name: groupName }
|
||||
).then(() => {
|
||||
Vue.delete(this.normalGroups, name)
|
||||
Vue.delete(this.primaryGroups, groupName)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
|
|
@ -120,13 +120,11 @@ export default {
|
|||
)
|
||||
if (!confirmed) return
|
||||
|
||||
if (!['start', 'restart', 'stop'].includes(action)) return
|
||||
const method = action === 'stop' ? 'delete' : 'put'
|
||||
const uri = action === 'restart'
|
||||
? `services/${this.name}/restart`
|
||||
: 'services/' + this.name
|
||||
|
||||
api[method](uri).then(this.$refs.view.fetchQueries)
|
||||
api.put(
|
||||
`services/${this.name}/${action}`,
|
||||
{},
|
||||
{ key: 'services.' + action, name: this.name }
|
||||
).then(this.$refs.view.fetchQueries)
|
||||
},
|
||||
|
||||
shareLogs () {
|
||||
|
@ -140,6 +138,7 @@ export default {
|
|||
}).then(response => {
|
||||
if (response.ok) return response.json()
|
||||
// FIXME flash error
|
||||
/* eslint-disable-next-line */
|
||||
else console.log('error', response)
|
||||
}).then(({ key }) => {
|
||||
window.open('https://paste.yunohost.org/' + key, '_blank')
|
||||
|
|
|
@ -44,8 +44,8 @@ export default {
|
|||
this.serverError = ''
|
||||
|
||||
api.fetchAll(
|
||||
[['POST', 'login', { password: currentPassword }, { websocket: false }],
|
||||
['PUT', 'admisnpw', { new_password: password }]],
|
||||
[['POST', 'login', { password: currentPassword }, null, { websocket: false }],
|
||||
['PUT', 'adminpw', { new_password: password }, 'adminpw']],
|
||||
{ wait: true }
|
||||
).then(() => {
|
||||
this.$store.dispatch('DISCONNECT')
|
||||
|
|
|
@ -115,8 +115,8 @@ export default {
|
|||
|
||||
// Ports form data
|
||||
actionChoices: [
|
||||
{ value: 'open', text: this.$i18n.t('open') },
|
||||
{ value: 'close', text: this.$i18n.t('close') }
|
||||
{ value: 'allow', text: this.$i18n.t('open') },
|
||||
{ value: 'disallow', text: this.$i18n.t('close') }
|
||||
],
|
||||
connectionChoices: [
|
||||
{ value: 'ipv4', text: this.$i18n.t('ipv4') },
|
||||
|
@ -128,7 +128,7 @@ export default {
|
|||
{ value: 'Both', text: this.$i18n.t('both') }
|
||||
],
|
||||
form: {
|
||||
action: 'open',
|
||||
action: 'allow',
|
||||
port: undefined,
|
||||
connection: 'ipv4',
|
||||
protocol: 'TCP'
|
||||
|
@ -176,27 +176,21 @@ export default {
|
|||
this.upnpEnabled = data.uPnP.enabled
|
||||
},
|
||||
|
||||
togglePort ({ action, port, protocol, connection }) {
|
||||
return new Promise((resolve, reject) => {
|
||||
this.$askConfirmation(
|
||||
this.$i18n.t('confirm_firewall_' + action, { port, protocol, connection })
|
||||
).then(confirmed => {
|
||||
if (confirmed) {
|
||||
const method = action === 'open' ? 'post' : 'delete'
|
||||
api[method](
|
||||
`/firewall/port?${connection}_only`,
|
||||
{ port, protocol },
|
||||
{ wait: false }
|
||||
).then(() => {
|
||||
resolve(confirmed)
|
||||
}).catch(error => {
|
||||
reject(error)
|
||||
})
|
||||
} else {
|
||||
resolve(confirmed)
|
||||
}
|
||||
})
|
||||
})
|
||||
async togglePort ({ action, port, protocol, connection }) {
|
||||
const confirmed = await this.$askConfirmation(
|
||||
this.$i18n.t('confirm_firewall_' + action, { port, protocol, connection })
|
||||
)
|
||||
if (!confirmed) {
|
||||
return Promise.resolve(confirmed)
|
||||
}
|
||||
|
||||
const actionTrad = this.$i18n.t({ allow: 'open', disallow: 'close' }[action])
|
||||
return api.put(
|
||||
`firewall/${protocol}/${action}/${port}?${connection}_only`,
|
||||
{},
|
||||
{ key: 'firewall.ports', protocol, action: actionTrad, port, connection },
|
||||
{ wait: false }
|
||||
).then(() => confirmed)
|
||||
},
|
||||
|
||||
async toggleUpnp (value) {
|
||||
|
@ -204,7 +198,11 @@ export default {
|
|||
const confirmed = await this.$askConfirmation(this.$i18n.t('confirm_upnp_' + action))
|
||||
if (!confirmed) return
|
||||
|
||||
api.get('firewall/upnp?action=' + action, null, { websocket: true, wait: true }).then(() => {
|
||||
api.put(
|
||||
'firewall/upnp/' + action,
|
||||
{},
|
||||
{ key: 'firewall.upnp', action: this.$i18n.t(action) }
|
||||
).then(() => {
|
||||
// FIXME Couldn't test when it works.
|
||||
this.$refs.view.fetchQueries()
|
||||
}).catch(err => {
|
||||
|
@ -215,7 +213,7 @@ export default {
|
|||
|
||||
onTablePortToggling (port, protocol, connection, index, value) {
|
||||
this.$set(this.protocols[protocol][index], connection, value)
|
||||
const action = value ? 'open' : 'close'
|
||||
const action = value ? 'allow' : 'disallow'
|
||||
this.togglePort({ action, port, protocol, connection }).then(toggled => {
|
||||
// Revert change on cancel
|
||||
if (!toggled) {
|
||||
|
|
|
@ -6,8 +6,8 @@
|
|||
:key="item.routeName"
|
||||
:to="{name: item.routeName}"
|
||||
>
|
||||
<icon :iname="item.icon" class="lg" />
|
||||
<h2>{{ $t(item.translation) }}</h2>
|
||||
<icon :iname="item.icon" class="lg ml-1" />
|
||||
<h4>{{ $t(item.translation) }}</h4>
|
||||
<icon iname="chevron-right" class="lg fs-sm ml-auto" />
|
||||
</b-list-group-item>
|
||||
</b-list-group>
|
||||
|
|
|
@ -18,7 +18,7 @@
|
|||
|
||||
<div v-else-if="prop === 'suboperations'">
|
||||
<div v-for="operation in value" :key="operation.name">
|
||||
<icon v-if="!operation.success" iname="times" class="text-danger" />
|
||||
<icon v-if="operation.success !== true" iname="times" class="text-danger" />
|
||||
<b-link :to="{ name: 'tool-log', params: { name: operation.name } }">
|
||||
{{ operation.description }}
|
||||
</b-link>
|
||||
|
@ -60,8 +60,8 @@
|
|||
</template>
|
||||
|
||||
<script>
|
||||
import api from '@/api'
|
||||
import { objectToParams, escapeHtml } from '@/helpers/commons'
|
||||
import api, { objectToParams } from '@/api'
|
||||
import { escapeHtml } from '@/helpers/commons'
|
||||
import { readableDate } from '@/helpers/filters/date'
|
||||
|
||||
export default {
|
||||
|
@ -121,11 +121,18 @@ export default {
|
|||
const info = { path: log.log_path, started_at, ended_at }
|
||||
if (!success) info.error = error
|
||||
if (suboperations && suboperations.length) info.suboperations = suboperations
|
||||
// eslint-disable-next-line
|
||||
if (!ended_at) delete info.ended_at
|
||||
this.info = info
|
||||
},
|
||||
|
||||
shareLogs () {
|
||||
api.get(`logs/${this.name}?share`, null, { websocket: true }).then(({ url }) => {
|
||||
api.get(
|
||||
`logs/${this.name}/share`,
|
||||
null,
|
||||
{ key: 'share_logs', name: this.name },
|
||||
{ websocket: true }
|
||||
).then(({ url }) => {
|
||||
window.open(url, '_blank')
|
||||
})
|
||||
}
|
||||
|
|
|
@ -121,7 +121,7 @@ export default {
|
|||
}
|
||||
// Check that every migration's disclaimer has been checked.
|
||||
if (Object.values(this.checked).every(value => value === true)) {
|
||||
api.post('migrations/run', { accept_disclaimer: true }).then(() => {
|
||||
api.put('migrations?accept_disclaimer', {}, 'migrations.run').then(() => {
|
||||
this.$refs.view.fetchQueries()
|
||||
})
|
||||
}
|
||||
|
@ -130,8 +130,7 @@ export default {
|
|||
async skipMigration (id) {
|
||||
const confirmed = await this.$askConfirmation(this.$i18n.t('confirm_migrations_skip'))
|
||||
if (!confirmed) return
|
||||
|
||||
api.post('/migrations/run', { skip: true, targets: id }).then(() => {
|
||||
api.put('/migrations/' + id, { skip: '', targets: id }, 'migration.skip').then(() => {
|
||||
this.$refs.view.fetchQueries()
|
||||
})
|
||||
}
|
||||
|
|
|
@ -66,7 +66,7 @@ export default {
|
|||
if (!confirmed) return
|
||||
|
||||
this.action = action
|
||||
api.put(action + '?force').then(() => {
|
||||
api.put(action + '?force', {}, action).then(() => {
|
||||
// Use 'RESET_CONNECTED' and not 'DISCONNECT' else user will be redirect to login
|
||||
this.$store.dispatch('RESET_CONNECTED')
|
||||
this.inProcess = true
|
||||
|
|
|
@ -74,7 +74,7 @@ export default {
|
|||
return {
|
||||
queries: [
|
||||
['GET', 'migrations?pending'],
|
||||
['PUT', 'update']
|
||||
['PUT', 'update/all', {}, 'update']
|
||||
],
|
||||
// API data
|
||||
migrationsNotDone: undefined,
|
||||
|
@ -95,12 +95,15 @@ export default {
|
|||
const confirmed = await this.$askConfirmation(confirmMsg)
|
||||
if (!confirmed) return
|
||||
|
||||
const uri = type === 'specific_app'
|
||||
? 'upgrade/apps?app=' + id
|
||||
: 'upgrade?' + type
|
||||
|
||||
api.put(uri).then(() => {
|
||||
this.$router.push({ name: 'tool-logs' })
|
||||
const uri = id !== null ? `apps/${id}/upgrade` : 'upgrade/' + type
|
||||
api.put(uri, {}, { key: 'upgrade.' + (id ? 'app' : type), app: id }).then(() => {
|
||||
if (id !== null) {
|
||||
this.apps = this.apps.filter(app => id !== app.id)
|
||||
} else if (type === 'apps') {
|
||||
this.apps = null
|
||||
} else {
|
||||
this.system = null
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
|
|
@ -175,7 +175,7 @@ export default {
|
|||
|
||||
onSubmit () {
|
||||
const data = formatFormData(this.form, { flatten: true })
|
||||
api.post({ uri: 'users' }, data).then(() => {
|
||||
api.post({ uri: 'users' }, data, { key: 'users.create', name: this.form.username }).then(() => {
|
||||
this.$router.push({ name: 'user-list' })
|
||||
}).catch(err => {
|
||||
if (err.name !== 'APIBadRequestError') throw err
|
||||
|
|
|
@ -99,7 +99,7 @@
|
|||
<hr>
|
||||
|
||||
<!-- USER PASSWORD -->
|
||||
<form-field v-bind="fields.password" v-model="form.password" :validation="$v.form.password" />
|
||||
<form-field v-bind="fields.change_password" v-model="form.change_password" :validation="$v.form.change_password" />
|
||||
|
||||
<!-- USER PASSWORD CONFIRMATION -->
|
||||
<form-field v-bind="fields.confirmation" v-model="form.confirmation" :validation="$v.form.confirmation" />
|
||||
|
@ -139,10 +139,10 @@ export default {
|
|||
form: {
|
||||
fullname: { firstname: '', lastname: '' },
|
||||
mail: { localPart: '', separator: '@', domain: '' },
|
||||
mailbox_quota: 0,
|
||||
mailbox_quota: '',
|
||||
mail_aliases: [],
|
||||
mail_forward: [],
|
||||
password: '',
|
||||
change_password: '',
|
||||
confirmation: ''
|
||||
},
|
||||
|
||||
|
@ -183,8 +183,7 @@ export default {
|
|||
example: this.$i18n.t('mailbox_quota_example'),
|
||||
props: {
|
||||
id: 'mailbox-quota',
|
||||
placeholder: this.$i18n.t('mailbox_quota_placeholder'),
|
||||
type: 'number'
|
||||
placeholder: this.$i18n.t('mailbox_quota_placeholder')
|
||||
}
|
||||
},
|
||||
|
||||
|
@ -202,11 +201,11 @@ export default {
|
|||
}
|
||||
},
|
||||
|
||||
password: {
|
||||
change_password: {
|
||||
label: this.$i18n.t('password'),
|
||||
description: this.$i18n.t('good_practices_about_user_password'),
|
||||
descriptionVariant: 'warning',
|
||||
props: { id: 'password', type: 'password', placeholder: '••••••••' }
|
||||
props: { id: 'change_password', type: 'password', placeholder: '••••••••' }
|
||||
},
|
||||
|
||||
confirmation: {
|
||||
|
@ -228,7 +227,7 @@ export default {
|
|||
mail: {
|
||||
localPart: { required, email: emailLocalPart }
|
||||
},
|
||||
mailbox_quota: { number: required, integer, minValue: minValue(0) },
|
||||
mailbox_quota: { integer, minValue: minValue(0) },
|
||||
mail_aliases: {
|
||||
$each: {
|
||||
localPart: { required, email: emailLocalPart }
|
||||
|
@ -237,8 +236,8 @@ export default {
|
|||
mail_forward: {
|
||||
$each: { required, emailForward }
|
||||
},
|
||||
password: { passwordLenght: minLength(8) },
|
||||
confirmation: { passwordMatch: sameAs('password') }
|
||||
change_password: { passwordLenght: minLength(8) },
|
||||
confirmation: { passwordMatch: sameAs('change_password') }
|
||||
}
|
||||
},
|
||||
|
||||
|
@ -259,8 +258,11 @@ export default {
|
|||
if (user['mail-forward']) {
|
||||
this.form.mail_forward = user['mail-forward'].slice() // Copy value
|
||||
}
|
||||
if (user['mailbox-quota'].limit !== 'No quota') {
|
||||
// mailbox-quota could be 'No quota' or 'Pas de quota'...
|
||||
if (parseInt(user['mailbox-quota'].limit) > 0) {
|
||||
this.form.mailbox_quota = sizeToM(user['mailbox-quota'].limit)
|
||||
} else {
|
||||
this.form.mailbox_quota = ''
|
||||
}
|
||||
},
|
||||
|
||||
|
@ -268,6 +270,9 @@ export default {
|
|||
const formData = formatFormData(this.form, { flatten: true })
|
||||
const user = this.user(this.name)
|
||||
const data = {}
|
||||
if (!Object.prototype.hasOwnProperty.call(formData, 'mailbox_quota')) {
|
||||
formData.mailbox_quota = ''
|
||||
}
|
||||
|
||||
for (const key of ['mail_aliases', 'mail_forward']) {
|
||||
const dashedKey = key.replace('_', '-')
|
||||
|
@ -280,9 +285,9 @@ export default {
|
|||
|
||||
for (const key in formData) {
|
||||
if (key === 'mailbox_quota') {
|
||||
const quota = parseInt(formData[key]) !== 0 ? formData[key] + 'M' : 'No quota'
|
||||
if (quota !== user['mailbox-quota'].limit) {
|
||||
data[key] = quota === 'No quota' ? 0 : quota
|
||||
const quota = parseInt(formData[key]) > 0 ? formData[key] + 'M' : 'No quota'
|
||||
if (parseInt(quota) !== parseInt(user['mailbox-quota'].limit)) {
|
||||
data[key] = quota === 'No quota' ? '0' : quota
|
||||
}
|
||||
} else if (!key.includes('mail_') && formData[key] !== user[key]) {
|
||||
data[key] = formData[key]
|
||||
|
@ -296,7 +301,8 @@ export default {
|
|||
|
||||
api.put(
|
||||
{ uri: 'users', param: this.name, storeKey: 'users_details' },
|
||||
data
|
||||
data,
|
||||
{ key: 'users.update', name: this.name }
|
||||
).then(() => {
|
||||
this.$router.push({ name: 'user-info', param: { name: this.name } })
|
||||
}).catch(err => {
|
||||
|
|
|
@ -108,7 +108,8 @@ export default {
|
|||
const data = this.purge ? { purge: '' } : {}
|
||||
api.delete(
|
||||
{ uri: 'users', param: this.name, storeKey: 'users_details' },
|
||||
data
|
||||
data,
|
||||
{ key: 'users.delete', name: this.name }
|
||||
).then(() => {
|
||||
this.$router.push({ name: 'user-list' })
|
||||
})
|
||||
|
@ -126,7 +127,7 @@ export default {
|
|||
|
||||
.row {
|
||||
+ .row {
|
||||
border-top: 1px solid #eee;
|
||||
border-top: $thin-border;
|
||||
}
|
||||
|
||||
padding: .5rem;
|
||||
|
|
|
@ -27,7 +27,7 @@
|
|||
<div>
|
||||
<h5 class="font-weight-bold">
|
||||
{{ user.username }}
|
||||
<small class="text-secondary">({{ user.fullname }})</small>
|
||||
<small class="text-secondary">{{ user.fullname }}</small>
|
||||
</h5>
|
||||
<p class="m-0">
|
||||
{{ user.mail }}
|
||||
|
|
|
@ -11,7 +11,10 @@ const dateFnsLocales = [
|
|||
'eo',
|
||||
'es',
|
||||
'eu',
|
||||
'fa',
|
||||
'fi',
|
||||
'fr', // for 'fr' & 'br'
|
||||
'gl',
|
||||
'hi',
|
||||
'hu',
|
||||
'it',
|
||||
|
@ -23,6 +26,7 @@ const dateFnsLocales = [
|
|||
'ru',
|
||||
'sv',
|
||||
'tr',
|
||||
'uk',
|
||||
'zh_CN' // for 'zh_Hans'
|
||||
]
|
||||
|
||||
|
@ -48,17 +52,17 @@ module.exports = {
|
|||
css: {
|
||||
loaderOptions: {
|
||||
sass: {
|
||||
prependData: '@import "@/scss/globals.scss";'
|
||||
prependData: '@import "@/scss/_variables.scss";'
|
||||
}
|
||||
}
|
||||
},
|
||||
publicPath: '/yunohost/admin',
|
||||
devServer: {
|
||||
https: true,
|
||||
https: false,
|
||||
disableHostCheck: true,
|
||||
proxy: {
|
||||
'^/yunohost': {
|
||||
target: `https://${process.env.VUE_APP_IP}`,
|
||||
target: `http://${process.env.VUE_APP_IP}`,
|
||||
ws: true,
|
||||
logLevel: 'debug'
|
||||
}
|
||||
|
|
121
debian/changelog
vendored
121
debian/changelog
vendored
|
@ -4,13 +4,126 @@ yunohost-admin (11.0.0~alpha) unstable; urgency=low
|
|||
|
||||
-- Kay0u <pierre@kayou.io> Mon, 08 Mar 2021 18:04:43 +0100
|
||||
|
||||
yunohost-admin (4.2.0) unstable; urgency=low
|
||||
yunohost-admin (4.2.5) stable; urgency=low
|
||||
|
||||
- Placeholder for 4.2 to satisfy debian build during dev
|
||||
- [fix] user password change not working properly (c26c4c9)
|
||||
- [fix] typos in english locale ([#385](https://github.com/YunoHost/yunohost-admin/pull/385))
|
||||
- [i18n] Translations updated for German, Italian, Polish
|
||||
|
||||
Thanks to all contributors <3 ! (Alexandre Aubin, axolotle, Axolotle)
|
||||
Thanks to all contributors <3 ! (Christian Wehrli, Flavio Cristoforetti, Krzysztof Nowakowski, Luca)
|
||||
|
||||
-- Kay0u <pierre@kayou.io> Thu, 21 Jan 2021 20:06:22 +0100
|
||||
-- Alexandre Aubin <alex.aubin@mailoo.org> Thu, 19 Aug 2021 19:23:00 +0200
|
||||
|
||||
yunohost-admin (4.2.4) stable; urgency=low
|
||||
|
||||
- [fix] Handle edge case where there's no arg in manifest during app install ([#377](https://github.com/YunoHost/yunohost-admin/pull/377))
|
||||
- [fix] Missing 'https://' in app view ([#376](https://github.com/YunoHost/yunohost-admin/pull/376))
|
||||
- [fix] Update a bunch of npm dependencies ([#374](https://github.com/YunoHost/yunohost-admin/pull/374))
|
||||
- [i18n] Typos in english strings ([#380](https://github.com/YunoHost/yunohost-admin/pull/380), [#381](https://github.com/YunoHost/yunohost-admin/pull/381))
|
||||
- [i18n] Translations updated for Esperanto, Finnish, French, German, Portuguese, Spanish
|
||||
|
||||
Thanks to all contributors <3 ! (amirale qt, Anthony //, Bram, Christian Wehrli, Jorge Guerra, Kay0u, Luca, Meta Meta, Mico Hauataluoma, mifegui, opi)
|
||||
|
||||
-- Alexandre Aubin <alex.aubin@mailoo.org> Sun, 08 Aug 2021 22:11:12 +0200
|
||||
|
||||
yunohost-admin (4.2.3.3) stable; urgency=low
|
||||
|
||||
- [fix] Migrations api path ([#372](https://github.com/YunoHost/yunohost-admin/pull/372))
|
||||
- [i18n] Translations updated for Czech, Spanish
|
||||
|
||||
Thanks to all contributors <3 ! (ljf, Matias Micheltorena, Radek S)
|
||||
|
||||
-- Alexandre Aubin <alex.aubin@mailoo.org> Fri, 11 Jun 2021 20:28:35 +0200
|
||||
|
||||
yunohost-admin (4.2.3.2) stable; urgency=low
|
||||
|
||||
- [fix] Re-fix multiple stuff about diagnosis, user edit view, migration view, backup (e58bfae, 955c774, 37e58f5)
|
||||
- [fix] Small issues during dev (522a8e6, 9e32ae4)
|
||||
|
||||
Thanks to all contributors <3 ! (ljf)
|
||||
|
||||
-- Alexandre Aubin <alex.aubin@mailoo.org> Thu, 03 Jun 2021 18:34:31 +0200
|
||||
|
||||
yunohost-admin (4.2.3.1) stable; urgency=low
|
||||
|
||||
- [fix] user: alias and password change not working ([#368](https://github.com/YunoHost/yunohost-admin/pull/368))
|
||||
- [fix] diagnsosis: Ignore button not working ([#367](https://github.com/YunoHost/yunohost-admin/pull/367))
|
||||
- [fix] Request with array args ([#369](https://github.com/YunoHost/yunohost-admin/pull/369))
|
||||
- [i18n] Translations updated for Chinese (Simplified), French, German, Italian, Portuguese
|
||||
|
||||
Thanks to all contributors <3 ! (Éric Gaspar, Flavio Cristoforetti, ljf, Meta Meta, mifegui, ppr, yahoo~~)
|
||||
|
||||
-- Alexandre Aubin <alex.aubin@mailoo.org> Thu, 03 Jun 2021 00:43:16 +0200
|
||||
|
||||
yunohost-admin (4.2.3) stable; urgency=low
|
||||
|
||||
- [fix] User edit view submit button blocked because of empty quota ([#362](https://github.com/YunoHost/yunohost-admin/pull/362))
|
||||
- [i18n] Translations updated for Chinese (Simplified), Czech, Finnish, French, Galician, Polish
|
||||
|
||||
Thanks to all contributors <3 ! (Éric Gaspar, José M, Krzysztof Nowakowski, ljf, Mico Hauataluoma, Radek S, yahoo~~)
|
||||
|
||||
-- Alexandre Aubin <alex.aubin@mailoo.org> Mon, 24 May 2021 17:36:03 +0200
|
||||
|
||||
yunohost-admin (4.2.2) stable; urgency=low
|
||||
|
||||
- [i18n] Translations updated for Italian, Occitan
|
||||
- Release as stable
|
||||
|
||||
Thanks to all contributors <3 ! (Flavio Cristoforetti, Quentí)
|
||||
|
||||
-- Alexandre Aubin <alex.aubin@mailoo.org> Sat, 08 May 2021 15:07:16 +0200
|
||||
|
||||
yunohost-admin (4.2.1.3) testing; urgency=low
|
||||
|
||||
- Misc fixes : human-readable route name for postinstall, upgrade UX, replace '\n' with <br> ([#355](https://github.com/YunoHost/yunohost-admin/pull/355))
|
||||
|
||||
Thanks to all contributors <3 ! (axolotle)
|
||||
|
||||
-- Alexandre Aubin <alex.aubin@mailoo.org> Sat, 01 May 2021 18:31:00 +0200
|
||||
|
||||
yunohost-admin (4.2.1.2) testing; urgency=low
|
||||
|
||||
- [i18n] Translations updated for French, German, Occitan, Spanish
|
||||
|
||||
Thanks to all contributors <3 ! (C. Wehrli, Deja la vida volar, É. Gaspar, Quentí)
|
||||
|
||||
-- Alexandre Aubin <alex.aubin@mailoo.org> Mon, 26 Apr 2021 16:36:53 +0200
|
||||
|
||||
yunohost-admin (4.2.1.1) testing; urgency=low
|
||||
|
||||
- fix forgotten debug code blocking actions like upgrade (4e8dad0)
|
||||
- fix bugs when no users exists yet (40ef5b4)
|
||||
|
||||
Thanks to all contributors <3 ! (axolotle)
|
||||
|
||||
-- Alexandre Aubin <alex.aubin@mailoo.org> Sat, 17 Apr 2021 19:44:29 +0200
|
||||
|
||||
yunohost-admin (4.2.1) testing; urgency=low
|
||||
|
||||
- ui/ux: Misc fixes/enh, code quality ([#344](https://github.com/YunoHost/yunohost-admin/pull/344))
|
||||
- ux: At the end of an operation, display a modal if last message is a warning ([#347](https://github.com/YunoHost/yunohost-admin/pull/347))
|
||||
- ui: Properly handle multiline messages ([#348](https://github.com/YunoHost/yunohost-admin/pull/348))
|
||||
- postinstall: Handle validation errors and force-diskspace option ([#349](https://github.com/YunoHost/yunohost-admin/pull/349))
|
||||
- refactoring: More uniform, consistent API ([#339](https://github.com/YunoHost/yunohost-admin/pull/339), [#350](https://github.com/YunoHost/yunohost-admin/pull/350))
|
||||
- ux: Human readable operation names ([#339](https://github.com/YunoHost/yunohost-admin/pull/339))
|
||||
- custom app install: Fix/improve the manifest fetching using new route in the core ([#351](https://github.com/YunoHost/yunohost-admin/pull/351))
|
||||
- permission: Rework selectize widget, add confirm modal for new SSH/SFTP permissions ([#352](https://github.com/YunoHost/yunohost-admin/pull/352), 3bc3c32)
|
||||
- i18n: Translations updated for French, German, Italian, Polish, Portuguese, Russian, Spanish
|
||||
|
||||
Thanks to all contributors <3 ! (axolotle, C. Wehrli, D. Vasilev, É. Gaspar, K. Nowakowski)
|
||||
|
||||
-- Alexandre Aubin <alex.aubin@mailoo.org> Sat, 17 Apr 2021 04:14:59 +0200
|
||||
|
||||
yunohost-admin (4.2.0) testing; urgency=low
|
||||
|
||||
- [enh] Rework the webadmin with Vue.js ([#316](https://github.com/YunoHost/yunohost-admin/pull/316), 62b3f27, [#336](https://github.com/YunoHost/yunohost-admin/pull/336))
|
||||
- [enh] Improve error handling ([#330](https://github.com/YunoHost/yunohost-admin/pull/330))
|
||||
- [fix] Update some links, followup of new documentation ([#334](https://github.com/YunoHost/yunohost-admin/pull/334), b76838f)
|
||||
- [i18n] Translations updated for Catalan, Chinese (Simplified), Czech, Dutch, French, German, Italian, Occitan, Polish, Russian
|
||||
|
||||
Thanks to all contributors <3 ! (Axolotle, C. Wehrli, C. Mercier, Daniel, Flavio C., Kay0u, Krzysztof N., ljf, Manu Bu, M. Massaviol, M. Kroulík, N. Van Zuijlen, panomaki, ppr, Quentí, Radek S, Tom_, T. Valiiev, xaloc33, Yasss Gurl, Y. Ding)
|
||||
|
||||
-- Alexandre Aubin <alex.aubin@mailoo.org> Thu, 25 Mar 2021 01:00:00 +0100
|
||||
|
||||
yunohost-admin (4.1.4) stable; urgency=low
|
||||
|
||||
|
|
7
debian/rules
vendored
7
debian/rules
vendored
|
@ -15,9 +15,10 @@ TMPDIR = $$(pwd)/debian/yunohost-admin
|
|||
dh $@
|
||||
|
||||
override_dh_auto_build:
|
||||
# Run npm install and build
|
||||
cd app ; npm --progress false --loglevel warn --color false install
|
||||
cd app ; npm run build
|
||||
# Run npm install(=ci) and build
|
||||
cd app ; PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin npm --progress false ci
|
||||
cd app ; PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin npm run build
|
||||
|
||||
|
||||
override_dh_clean:
|
||||
dh_clean
|
||||
|
|
Loading…
Add table
Reference in a new issue