Compare commits

..

No commits in common. "dev" and "debian/4.2.3.3" have entirely different histories.

185 changed files with 19450 additions and 23213 deletions

View file

@ -1,17 +0,0 @@
name: ESlint
on:
push:
branches:
- dev
pull_request:
jobs:
eslint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install yarn dependencies
run: cd app && yarn install --frozen-lockfile
- name: Run linter
run: cd app && yarn lint

9
.travis.yml Normal file
View file

@ -0,0 +1,9 @@
language: node_js
node_js:
- "10"
before_install:
- cd app
script:
- npm ci
- npm run lint
- npm run build

78
CONTRIBUTORS.md Normal file
View file

@ -0,0 +1,78 @@
YunoHost web administration contributors
========================================
YunoHost is built and maintained by the YunoHost project community.
Everyone is encouraged to submit issues and changes, and to contribute in other ways -- see https://yunohost.org/contribute to find out how.
--
Initial YunoHost web administration was built by Kload, for YunoHost v2.
Most of code was written by opi, with help of numerous contributors.
Translation is made by a bunch of lovely people over the world.
We would like to thank anyone who ever helped the YunoHost project, and especially the web administration project <3
YunoHost Administration Contributors
------------------------------------
- opi
- Kload
- Jérôme Lebleu
- Julien 'ju' Malik
- Hugo Roy
- Laurent 'Bram' Peuch
- Valentin 'zamentur' / 'ljf' Grimaud
- M5oul
- thardev
YunoHost Administration Translators
-----------------------------------
If you want to help translation, please visit https://translate.yunohost.org/projects/yunohost/yunohost-admin/
### Dutch
- DUBWiSE
- dosch
### English
- Bugsbane
### French
- Étienne Deparis
- Jean-Baptiste Holcroft
- Jérôme Lebleu
- ljf (zamentur)
- opi
### German
- david.bartke
- Felix Bartels
- Fabian Gruber (burst3r)
### Hindi
- Anmol
### Italian
- bricabrac
- danneso
- Thomas Bille
- Vincent
### Portuguese
- Deleted User
### Spanish
- Juanu
- rokaz

View file

@ -1,37 +1,26 @@
<h1 align="center">YunoHost Admin</h1> # YunoHost Admin
<div align="center"> [YunoHost](https://yunohost.org) administration web interface (JS client for the API).
![Version](https://img.shields.io/github/v/tag/yunohost/yunohost-admin?label=version&sort=semver)
[![Tests status](https://github.com/YunoHost/yunohost-admin/actions/workflows/eslint.yml/badge.svg)](https://github.com/YunoHost/yunohost-admin/actions/workflows/eslint.yml)
[![Project license](https://img.shields.io/gitlab/license/yunohost/yunohost)](https://github.com/YunoHost/yunohost/blob/dev/LICENSE)
[YunoHost logo](https://yunohost.org) administration web interface (VueJS client for the API). This client is a part of the YunoHost project, and can not be installed directly. Please visit the YunoHost website for [installation instructions](https://yunohost.org/install).
This client is a part of the YunoHost project, and can not be installed directly. ## Bug tracker
Please visit the YunoHost website for [installation instructions](https://yunohost.org/install).
![Web admin insterface screenshot](./doc/home.png) Please report issues on the [YunoHost bugtracker](https://github.com/YunoHost/issues).
</div>
## Issues ## Translate
- [Please report issues on YunoHost bugtracker](https://github.com/YunoHost/issues). [![Translation status](https://translate.yunohost.org/widgets/yunohost/-/287x66-white.png)](https://translate.yunohost.org/engage/yunohost/?utm_source=widget)
## Translation ## Contributing
You can help translate Yunohost-Admin on our [translation platform](https://translate.yunohost.org/engage/yunohost/?utm_source=widget) Feel free to improve the plugin and send a pull request.
<div align="center"><img alt="View of the translation rate for the different languages available in YunoHost" src="https://translate.yunohost.org/widgets/yunohost/-/admin/horizontal-auto.svg" alt="Translation status" /></div> In order to contribute you will need to setup a development environment using [ynh-dev](https://github.com/YunoHost/ynh-dev) (see the README).
## Developpers
Contributions are welcome!
In order to contribute you will need to setup a development environment using [ynh-dev](https://github.com/YunoHost/ynh-dev) (see the README).
Once you have a environment running and are attached to it (with `./ynh-dev start`) you will be able to run: Once you have a environment running and are attached to it (with `./ynh-dev start`) you will be able to run:
```bash ```
./ynh-dev use-git yunohost-admin $ ./ynh-dev use-git yunohost-admin
``` ```
This command will install all dependencies and start a dev server (based on [webpack-dev-server](https://github.com/webpack/webpack-dev-server)) with Hot-Module-Replacement (live updates on code modification without reloading the page nor rebuilding the whole code). After the build step, click on the "Network:" link and you are good to go. This command will install all dependencies and start a dev server (based on [webpack-dev-server](https://github.com/webpack/webpack-dev-server)) with Hot-Module-Replacement (live updates on code modification without reloading the page nor rebuilding the whole code). After the build step, click on the "Network:" link and you are good to go.
@ -39,3 +28,15 @@ This command will install all dependencies and start a dev server (based on [web
You can also install [Vue Devtools](https://addons.mozilla.org/fr/firefox/addon/vue-js-devtools/) (module for Firefox but also exists for Chromium/Chrome) if you want component trees, performance views and so on. You can also install [Vue Devtools](https://addons.mozilla.org/fr/firefox/addon/vue-js-devtools/) (module for Firefox but also exists for Chromium/Chrome) if you want component trees, performance views and so on.
On a YunoHost instance, the web admin files are located at `/usr/share/yunohost/admin`. On a YunoHost instance, the web admin files are located at `/usr/share/yunohost/admin`.
## Dependencies
* [Vue.js](https://vuejs.org/v2/guide/)
* [BootstrapVue](https://bootstrap-vue.org/docs)
* [Vue i18n](https://kazupon.github.io/vue-i18n/started.html)
* [Vue Router](https://router.vuejs.org/guide/)
* [Vuex](https://vuex.vuejs.org/)
* [Vuelidate](https://vuelidate.js.org/#getting-started)
* [date-fns](https://date-fns.org/v2.16.1/docs/Getting-Started)
* [Fork Awesome](https://forkaweso.me/Fork-Awesome/icons/) for icons
* [FiraGO](https://bboxtype.com/typefaces/FiraGO/#!layout=specimen) and [Fira Code](https://github.com/tonsky/FiraCode) for fonts

View file

@ -1,18 +0,0 @@
module.exports = {
root: true,
env: {
es2021: true,
node: true,
},
extends: [
'plugin:vue/strongly-recommended',
'eslint:recommended',
'plugin:prettier/recommended',
],
rules: {
'no-unused-vars': [
'warn',
{ varsIgnorePattern: '^_', destructuredArrayIgnorePattern: '^_' },
],
},
}

View file

@ -1 +0,0 @@
dist/

View file

@ -1,19 +0,0 @@
{
"semi": false,
"tabWidth": 2,
"singleQuote": true,
"overrides": [
{
"files": "**/*.json",
"options": {
"tabWidth": 4
}
},
{
"files": "./*.json",
"options": {
"tabWidth": 2
}
}
]
}

5
app/babel.config.js Normal file
View file

@ -0,0 +1,5 @@
module.exports = {
presets: [
'@vue/cli-plugin-babel/preset'
]
}

View file

@ -1,27 +0,0 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta
name="viewport"
content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=yes"
/>
<meta name="format-detection" content="telephone=no" />
<meta name="robots" content="noindex, nofollow" />
<meta name="referrer" content="no-referrer" />
<link rel="icon" href="/favicon.png" />
<title>YunoHost Admin</title>
</head>
<body>
<noscript>
<strong>
We're sorry but YunoHost Admin doesn't work properly without JavaScript
enabled. Please enable it to continue.
</strong>
</noscript>
<div id="app"></div>
<script type="module" src="/src/main.js"></script>
</body>
</html>

12867
app/package-lock.json generated Normal file

File diff suppressed because it is too large Load diff

View file

@ -5,39 +5,83 @@
"description": "YunoHost Admin web interface", "description": "YunoHost Admin web interface",
"author": "Yunohost", "author": "Yunohost",
"scripts": { "scripts": {
"dev": "vite", "serve": "./node_modules/@vue/cli-service/bin/vue-cli-service.js serve",
"build": "vite build", "build": "./node_modules/@vue/cli-service/bin/vue-cli-service.js build",
"lint:js": "eslint --ext \".ts,.vue,.cjs,.js\" --ignore-path ../.gitignore .", "lint": "./node_modules/@vue/cli-service/bin/vue-cli-service.js lint --no-fix",
"lint:prettier": "prettier --check .", "i18n": "./node_modules/@vue/cli-service/bin/vue-cli-service.js i18n:report --src './src/**/*.?(js|vue)' --locales './src/i18n/locales/*.json'",
"lint": "yarn lint:js && yarn lint:prettier", "i18n:en": "./node_modules/@vue/cli-service/bin/vue-cli-service.js i18n:report --src './src/**/*.?(js|vue)' --locales './src/i18n/locales/en.json'"
"lintfix": "prettier --write --list-different . && yarn lint:js --fix"
}, },
"dependencies": { "dependencies": {
"@fontsource/fira-code": "^4.5.13", "bootstrap-vue": "^2.21.2",
"@fontsource/firago": "^4.5.3", "core-js": "^3.9.1",
"bootstrap-vue": "^2.22.0", "date-fns": "^2.19.0",
"date-fns": "^2.29.3", "firacode": "^5.2.0",
"fork-awesome": "^1.2.0", "fontsource-firago": "^3.1.5",
"simple-evaluate": "^1.4.6", "fork-awesome": "^1.1.7",
"vue": "^2.7.14", "vue": "^2.6.12",
"vue-i18n": "^8.28.2", "vue-i18n": "^8.24.1",
"vue-router": "^3.6.5", "vue-router": "^3.5.1",
"vue-showdown": "^2.4.1", "vuelidate": "^0.7.6",
"vuelidate": "^0.7.7",
"vuex": "^3.6.2" "vuex": "^3.6.2"
}, },
"devDependencies": { "devDependencies": {
"@vitejs/plugin-vue2": "^2.2.0", "@vue/cli-plugin-babel": "~4.4.0",
"@vue/cli-plugin-eslint": "~4.4.0",
"@vue/cli-plugin-router": "^4.5.12",
"@vue/cli-plugin-vuex": "^4.5.12",
"@vue/cli-service": "~4.4.0",
"babel-eslint": "^10.1.0",
"bootstrap": "^4.6.0", "bootstrap": "^4.6.0",
"eslint": "^8.36.0", "eslint": "^6.7.2",
"eslint-config-prettier": "^9.1.0", "eslint-plugin-vue": "^6.2.2",
"eslint-plugin-prettier": "^5.1.3",
"eslint-plugin-vue": "^9.10.0",
"popper.js": "^1.16.0", "popper.js": "^1.16.0",
"portal-vue": "^2.1.7", "portal-vue": "^2.1.6",
"prettier": "^3.2.5", "sass": "^1.32.8",
"sass": "^1.60.0", "sass-loader": "^8.0.0",
"vite": "^4.5.3" "sass-resources-loader": "^2.1.1",
"standard": "^14.3.4",
"vue-cli-plugin-bootstrap-vue": "~0.6.0",
"vue-cli-plugin-i18n": "~1.0.1",
"vue-template-compiler": "^2.6.12"
},
"eslintConfig": {
"root": true,
"env": {
"node": true
},
"extends": [
"plugin:vue/strongly-recommended",
"eslint:recommended",
"standard"
],
"parserOptions": {
"parser": "babel-eslint"
},
"rules": {
"vue/max-attributes-per-line": [
"error",
{
"singleline": 3,
"multiline": {
"max": 3,
"allowFirstLine": true
}
}
],
"no-console": "warn",
"template-curly-spacing": "off",
"camelcase": "warn",
"indent": "off",
"no-irregular-whitespace": "off",
"no-unused-vars": "warn",
"quotes": "warn",
"no-multiple-empty-lines": [
"error",
{
"max": 2
}
]
}
}, },
"browserslist": [ "browserslist": [
"> 1%", "> 1%",

19
app/public/index.html Normal file
View file

@ -0,0 +1,19 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<meta name="format-detection" content="telephone=no" />
<meta name="robots" content="noindex, nofollow">
<link rel="icon" href="<%= BASE_URL %>favicon.png">
<title>YunoHost Admin</title>
</head>
<body>
<noscript>
<strong>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
</noscript>
<div id="app"></div>
<!-- built files will be auto injected -->
</body>
</html>

View file

@ -2,93 +2,72 @@
<div id="app" class="container"> <div id="app" class="container">
<!-- HEADER --> <!-- HEADER -->
<header> <header>
<BNavbar> <b-navbar>
<BNavbarBrand <b-navbar-brand
:to="{ name: 'home' }" :to="{ name: 'home' }" :disabled="waiting"
:disabled="waiting" exact exact-active-class="active"
exact
exact-active-class="active"
> >
<span v-if="theme"> <img alt="Yunohost logo" src="./assets/logo.png">
<img alt="YunoHost logo" src="./assets/logo_light.png" width="40" /> </b-navbar-brand>
</span>
<span v-else>
<img alt="YunoHost logo" src="./assets/logo_dark.png" width="40" />
</span>
</BNavbarBrand>
<BNavbarNav class="ml-auto"> <b-navbar-nav class="ml-auto">
<li class="nav-item"> <li class="nav-item">
<BButton :href="ssoLink" variant="primary" size="sm" block> <b-button
{{ $t('user_interface_link') }} <YIcon iname="user" /> href="/yunohost/sso"
</BButton> variant="primary" size="sm" block
>
{{ $t('user_interface_link') }} <icon iname="user" />
</b-button>
</li> </li>
<li class="nav-item" v-show="connected"> <li class="nav-item" v-show="connected">
<BButton <b-button
@click.prevent="logout" @click.prevent="logout"
variant="outline-dark" variant="outline-dark" block size="sm"
block
size="sm"
> >
{{ $t('logout') }} <YIcon iname="sign-out" /> {{ $t('logout') }} <icon iname="sign-out" />
</BButton> </b-button>
</li> </li>
</BNavbarNav> </b-navbar-nav>
</BNavbar> </b-navbar>
</header> </header>
<!-- MAIN --> <!-- MAIN -->
<ViewLockOverlay> <view-lock-overlay>
<YBreadcrumb /> <breadcrumb />
<main id="main"> <main id="main">
<!-- The `key` on RouterView make sure that if a link points to a page that <!-- The `key` on router-view make sure that if a link points to a page that
use the same component as the previous one, it will be refreshed --> use the same component as the previous one, it will be refreshed -->
<Transition v-if="transitions" :name="transitionName"> <transition v-if="transitions" :name="transitionName">
<RouterView class="animated" :key="routerKey" /> <router-view class="animated" :key="$route.fullPath" />
</Transition> </transition>
<RouterView v-else class="static" :key="routerKey" /> <router-view v-else class="static" :key="$route.fullPath" />
</main> </main>
</ViewLockOverlay> </view-lock-overlay>
<!-- HISTORY CONSOLE --> <!-- HISTORY CONSOLE -->
<HistoryConsole /> <history-console />
<!-- FOOTER --> <!-- FOOTER -->
<footer class="py-3 mt-auto"> <footer class="py-3 mt-auto">
<nav> <nav>
<BNav class="justify-content-center"> <b-nav class="justify-content-center">
<BNavItem <b-nav-item href="https://yunohost.org/docs" target="_blank" link-classes="text-secondary">
href="https://yunohost.org/docs" <icon iname="book" /> {{ $t('footer.documentation') }}
target="_blank" </b-nav-item>
link-classes="text-secondary" <b-nav-item href="https://yunohost.org/help" target="_blank" link-classes="text-secondary">
> <icon iname="life-ring" /> {{ $t('footer.help') }}
<YIcon iname="book" /> {{ $t('footer.documentation') }} </b-nav-item>
</BNavItem> <b-nav-item href="https://donate.yunohost.org/" target="_blank" link-classes="text-secondary">
<BNavItem <icon iname="heart" /> {{ $t('footer.donate') }}
href="https://yunohost.org/help" </b-nav-item>
target="_blank"
link-classes="text-secondary"
>
<YIcon iname="life-ring" /> {{ $t('footer.help') }}
</BNavItem>
<BNavItem
href="https://donate.yunohost.org/"
target="_blank"
link-classes="text-secondary"
>
<YIcon iname="heart" /> {{ $t('footer.donate') }}
</BNavItem>
<BNavText <b-nav-text
v-if="yunohost" v-if="yunohost" id="yunohost-version" class="ml-md-auto text-center"
id="yunohost-version" v-html="$t('footer_version', yunohost)"
class="ml-md-auto text-center" />
> </b-nav>
<span v-html="$t('footer_version', yunohost)" />
</BNavText>
</BNav>
</nav> </nav>
</footer> </footer>
</div> </div>
@ -104,72 +83,59 @@ export default {
components: { components: {
HistoryConsole, HistoryConsole,
ViewLockOverlay, ViewLockOverlay
},
data () {
return {
transitionName: null
}
}, },
computed: { computed: {
...mapGetters([ ...mapGetters(['connected', 'yunohost', 'transitions', 'waiting'])
'connected', },
'yunohost',
'routerKey', watch: {
'transitions', // Set the css class to animate the components transition
'transitionName', '$route' (to, from) {
'waiting', if (!this.transitions || from.name === null) return
'theme', // Use the breadcrumb array length as a direction indicator
'ssoLink', const toDepth = to.meta.breadcrumb.length
]), const fromDepth = from.meta.breadcrumb.length
this.transitionName = toDepth < fromDepth ? 'slide-right' : 'slide-left'
}
}, },
methods: { methods: {
async logout() { async logout () {
this.$store.dispatch('LOGOUT') this.$store.dispatch('LOGOUT')
}, }
}, },
// This hook is only triggered at page first load // This hook is only triggered at page first load
created() { created () {
this.$store.dispatch('ON_APP_CREATED') // From this hook the value of `connected` always come from the localStorage.
// This state may be `true` but session may have expired, by querying
// yunohost infos, api may respond with `Unauthorized` in which case the `connected`
// state will be automaticly reseted and user will be prompt with the login view.
if (this.connected) {
this.$store.dispatch('GET_YUNOHOST_INFOS')
}
}, },
mounted() { mounted () {
// Unlock copypasta on log view
const copypastaCode = ['ArrowDown', 'ArrowDown', 'ArrowUp', 'ArrowUp']
let copypastastep = 0
document.addEventListener('keydown', ({ key }) => {
if (key === copypastaCode[copypastastep++]) {
if (copypastastep === copypastaCode.length) {
document
.querySelectorAll('.unselectable')
.forEach((element) => element.classList.remove('unselectable'))
copypastastep = 0
}
} else {
copypastastep = 0
}
})
// Konamicode ;P // Konamicode ;P
const konamiCode = [ const konamiCode = ['ArrowUp', 'ArrowUp', 'ArrowDown', 'ArrowDown', 'ArrowLeft', 'ArrowRight', 'ArrowLeft', 'ArrowRight', 'b', 'a']
'ArrowUp', let step = 0
'ArrowUp',
'ArrowDown',
'ArrowDown',
'ArrowLeft',
'ArrowRight',
'ArrowLeft',
'ArrowRight',
'b',
'a',
]
let konamistep = 0
document.addEventListener('keydown', ({ key }) => { document.addEventListener('keydown', ({ key }) => {
if (key === konamiCode[konamistep++]) { if (key === konamiCode[step++]) {
if (konamistep === konamiCode.length) { if (step === konamiCode.length) {
this.$store.commit('SET_SPINNER', 'nyancat') this.$store.commit('SET_SPINNER', 'nyancat')
konamistep = 0 step = 0
} }
} else { } else {
konamistep = 0 step = 0
} }
}) })
@ -178,14 +144,7 @@ export default {
if (today.getDate() === 1 && today.getMonth() + 1 === 4) { if (today.getDate() === 1 && today.getMonth() + 1 === 4) {
this.$store.commit('SET_SPINNER', 'magikarp') this.$store.commit('SET_SPINNER', 'magikarp')
} }
}
// Halloween easter egg ;)
if (today.getDate() === 31 && today.getMonth() + 1 === 10) {
this.$store.commit('SET_SPINNER', 'spookycat')
}
document.documentElement.setAttribute('dark-theme', this.theme) // updates the data-theme attribute
},
} }
</script> </script>
@ -205,14 +164,14 @@ header {
padding: 1rem 0; padding: 1rem 0;
img { img {
width: 70px; width: 70px;
} }
.navbar-nav { .navbar-nav {
flex-direction: column; flex-direction: column;
li { li {
margin: 0.2rem 0; margin: .2rem 0;
} }
} }
} }
@ -223,23 +182,21 @@ main {
// Routes transition // Routes transition
.animated { .animated {
transition: all 0.15s ease-in-out; transition: all .15s ease-in-out;
} }
.slide-left-enter, .slide-left-enter, .slide-right-leave-active {
.slide-right-leave-active {
position: absolute; position: absolute;
width: 100%; width: 100%;
top: 0; top: 0;
transform: translate(100vw, 0); transform: translate(100vw, 0);
} }
.slide-left-leave-active, .slide-left-leave-active, .slide-right-enter {
.slide-right-enter {
position: absolute; position: absolute;
width: 100%; width: 100%;
top: 0; top: 0;
transform: translate(-100vw, 0); transform: translate(-100vw, 0);
} }
// hack to hide last transition provoqued by the <RouterView> element change // hack to hide last transition provoqued by the <router-view> element change
// while disabling the transitions in ToolWebAdmin // while disabling the transitions in ToolWebAdmin
.static ~ .animated { .static ~ .animated {
display: none; display: none;
@ -259,7 +216,7 @@ footer {
.nav-item { .nav-item {
& + .nav-item a::before { & + .nav-item a::before {
content: '•'; content: "•";
width: 1rem; width: 1rem;
display: inline-block; display: inline-block;
margin-left: -1.15rem; margin-left: -1.15rem;

View file

@ -6,6 +6,7 @@
import store from '@/store' import store from '@/store'
import { openWebSocket, getResponseData, handleError } from './handlers' import { openWebSocket, getResponseData, handleError } from './handlers'
/** /**
* Options available for an API call. * Options available for an API call.
* *
@ -16,6 +17,7 @@ import { openWebSocket, getResponseData, handleError } from './handlers'
* @property {Boolean} asFormData - if `true`, will send the data with a body encoded as `"multipart/form-data"` instead of `"x-www-form-urlencoded"`). * @property {Boolean} asFormData - if `true`, will send the data with a body encoded as `"multipart/form-data"` instead of `"x-www-form-urlencoded"`).
*/ */
/** /**
* Representation of an API call for `api.fetchAll` * Representation of an API call for `api.fetchAll`
* *
@ -24,7 +26,8 @@ import { openWebSocket, getResponseData, handleError } from './handlers'
* @property {String|Object} 1 - "uri", uri to call as string or as an object for cached uris. * @property {String|Object} 1 - "uri", uri to call as string or as an object for cached uris.
* @property {Object|null} 2 - "data" * @property {Object|null} 2 - "data"
* @property {Options} 3 - "options" * @property {Options} 3 - "options"
*/ */
/** /**
* Converts an object literal into an `URLSearchParams` that can be turned into a * Converts an object literal into an `URLSearchParams` that can be turned into a
@ -35,15 +38,11 @@ import { openWebSocket, getResponseData, handleError } from './handlers'
* @param {Boolean} [options.addLocale=false] - Option to append the locale to the query string. * @param {Boolean} [options.addLocale=false] - Option to append the locale to the query string.
* @return {URLSearchParams} * @return {URLSearchParams}
*/ */
export function objectToParams( export function objectToParams (obj, { addLocale = false } = {}) {
obj, const urlParams = new URLSearchParams()
{ addLocale = false } = {},
formData = false,
) {
const urlParams = formData ? new FormData() : new URLSearchParams()
for (const [key, value] of Object.entries(obj)) { for (const [key, value] of Object.entries(obj)) {
if (Array.isArray(value)) { if (Array.isArray(value)) {
value.forEach((v) => urlParams.append(key, v)) value.forEach(v => urlParams.append(key, v))
} else { } else {
urlParams.append(key, value) urlParams.append(key, value)
} }
@ -54,6 +53,7 @@ export function objectToParams(
return urlParams return urlParams
} }
export default { export default {
options: { options: {
credentials: 'include', credentials: 'include',
@ -64,10 +64,11 @@ export default {
// Auto header is : // Auto header is :
// "Accept": "*/*", // "Accept": "*/*",
'X-Requested-With': 'XMLHttpRequest', 'X-Requested-With': 'XMLHttpRequest'
}, }
}, },
/** /**
* Generic method to fetch the api without automatic response handling. * Generic method to fetch the api without automatic response handling.
* *
@ -77,22 +78,15 @@ export default {
* @param {Options} [options={ wait = true, websocket = true, initial = false, asFormData = false }] * @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. * @return {Promise<Object|Error>} Promise that resolve the api response data or an error.
*/ */
async fetch( async fetch (
method, method,
uri, uri,
data = {}, data = {},
humanKey = null, humanKey = null,
{ wait = true, websocket = true, initial = false, asFormData = false } = {}, { wait = true, websocket = true, initial = false, asFormData = false } = {}
) { ) {
// `await` because Vuex actions returns promises by default. // `await` because Vuex actions returns promises by default.
const request = await store.dispatch('INIT_REQUEST', { const request = await store.dispatch('INIT_REQUEST', { method, uri, humanKey, initial, wait, websocket })
method,
uri,
humanKey,
initial,
wait,
websocket,
})
if (websocket) { if (websocket) {
await openWebSocket(request) await openWebSocket(request)
@ -102,22 +96,17 @@ export default {
if (method === 'GET') { if (method === 'GET') {
uri += `${uri.includes('?') ? '&' : '?'}locale=${store.getters.locale}` uri += `${uri.includes('?') ? '&' : '?'}locale=${store.getters.locale}`
} else { } else {
options = { options = { ...options, method, body: objectToParams(data, { addLocale: true }) }
...options,
method,
body: objectToParams(data, { addLocale: true }, true),
}
} }
const response = await fetch('/yunohost/api/' + uri, options) const response = await fetch('/yunohost/api/' + uri, options)
const responseData = await getResponseData(response) const responseData = await getResponseData(response)
store.dispatch('END_REQUEST', { request, success: response.ok, wait }) store.dispatch('END_REQUEST', { request, success: response.ok, wait })
return response.ok return response.ok ? responseData : handleError(request, response, responseData)
? responseData
: handleError(request, response, responseData)
}, },
/** /**
* Api multiple queries helper. * Api multiple queries helper.
* Those calls will act as one (declare optional waiting for one but still create history entries for each) * Those calls will act as one (declare optional waiting for one but still create history entries for each)
@ -128,16 +117,14 @@ export default {
* @param {Boolean} * @param {Boolean}
* @return {Promise<Array|Error>} Promise that resolve the api responses data or an error. * @return {Promise<Array|Error>} Promise that resolve the api responses data or an error.
*/ */
async fetchAll(queries, { wait, initial } = {}) { async fetchAll (queries, { wait, initial } = {}) {
const results = [] const results = []
if (wait) store.commit('SET_WAITING', true) if (wait) store.commit('SET_WAITING', true)
try { try {
for (const [method, uri, data, humanKey, options = {}] of queries) { for (const [method, uri, data, humanKey, options = {}] of queries) {
if (wait) options.wait = false if (wait) options.wait = false
if (initial) options.initial = true if (initial) options.initial = true
results.push( results.push(await this[method.toLowerCase()](uri, data, humanKey, options))
await this[method.toLowerCase()](uri, data, humanKey, options),
)
} }
} finally { } finally {
// Stop waiting even if there is an error. // Stop waiting even if there is an error.
@ -147,6 +134,7 @@ export default {
return results return results
}, },
/** /**
* Api get helper function. * Api get helper function.
* *
@ -155,13 +143,13 @@ export default {
* @param {Options} [options={}] - options to apply to the call (default is `{ websocket: false, wait: false }`) * @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. * @return {Promise<Object|Error>} Promise that resolve the api response data or an error.
*/ */
get(uri, data = null, humanKey = null, options = {}) { get (uri, data = null, humanKey = null, options = {}) {
options = { websocket: false, wait: false, ...options } options = { websocket: false, wait: false, ...options }
if (typeof uri === 'string') if (typeof uri === 'string') return this.fetch('GET', uri, null, humanKey, options)
return this.fetch('GET', uri, null, humanKey, options)
return store.dispatch('GET', { ...uri, humanKey, options }) return store.dispatch('GET', { ...uri, humanKey, options })
}, },
/** /**
* Api post helper function. * Api post helper function.
* *
@ -170,12 +158,12 @@ export default {
* @param {Options} [options={}] - options to apply to the call * @param {Options} [options={}] - options to apply to the call
* @return {Promise<Object|Error>} Promise that resolve the api response data or an error. * @return {Promise<Object|Error>} Promise that resolve the api response data or an error.
*/ */
post(uri, data = {}, humanKey = null, options = {}) { post (uri, data = {}, humanKey = null, options = {}) {
if (typeof uri === 'string') if (typeof uri === 'string') return this.fetch('POST', uri, data, humanKey, options)
return this.fetch('POST', uri, data, humanKey, options)
return store.dispatch('POST', { ...uri, data, humanKey, options }) return store.dispatch('POST', { ...uri, data, humanKey, options })
}, },
/** /**
* Api put helper function. * Api put helper function.
* *
@ -184,12 +172,12 @@ export default {
* @param {Options} [options={}] - options to apply to the call * @param {Options} [options={}] - options to apply to the call
* @return {Promise<Object|Error>} Promise that resolve the api response data or an error. * @return {Promise<Object|Error>} Promise that resolve the api response data or an error.
*/ */
put(uri, data = {}, humanKey = null, options = {}) { put (uri, data = {}, humanKey = null, options = {}) {
if (typeof uri === 'string') if (typeof uri === 'string') return this.fetch('PUT', uri, data, humanKey, options)
return this.fetch('PUT', uri, data, humanKey, options)
return store.dispatch('PUT', { ...uri, data, humanKey, options }) return store.dispatch('PUT', { ...uri, data, humanKey, options })
}, },
/** /**
* Api delete helper function. * Api delete helper function.
* *
@ -198,41 +186,8 @@ export default {
* @param {Options} [options={}] - options to apply to the call (default is `{ websocket: false, wait: false }`) * @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. * @return {Promise<Object|Error>} Promise that resolve the api response data or an error.
*/ */
delete(uri, data = {}, humanKey = null, options = {}) { delete (uri, data = {}, humanKey = null, options = {}) {
if (typeof uri === 'string') if (typeof uri === 'string') return this.fetch('DELETE', uri, data, humanKey, options)
return this.fetch('DELETE', uri, data, humanKey, options)
return store.dispatch('DELETE', { ...uri, data, humanKey, options }) return store.dispatch('DELETE', { ...uri, data, humanKey, options })
}, }
/**
* Api reconnection helper. Resolve when server is reachable or fail after n attemps
*
* @param {Number} attemps - number of attemps before rejecting
* @param {Number} delay - delay between calls to the API in ms.
* @param {Number} initialDelay - delay before calling the API for the first time in ms.
* @return {Promise<undefined|Error>}
*/
tryToReconnect({ attemps = 5, delay = 2000, initialDelay = 0 } = {}) {
return new Promise((resolve, reject) => {
const api = this
function reconnect(n) {
api
.get('logout', {}, { key: 'reconnecting' })
.then(resolve)
.catch((err) => {
if (err.name === 'APIUnauthorizedError') {
resolve()
} else if (n < 1) {
reject(err)
} else {
setTimeout(() => reconnect(n - 1), delay)
}
})
}
if (initialDelay > 0) setTimeout(() => reconnect(attemps), initialDelay)
else reconnect(attemps)
})
},
} }

View file

@ -5,13 +5,10 @@
import i18n from '@/i18n' import i18n from '@/i18n'
class APIError extends Error { class APIError extends Error {
constructor(request, { url, status, statusText }, { error }) { constructor (request, { url, status, statusText }, { error }) {
super( super(error ? error.replace('\n', '<br>') : i18n.t('error_server_unexpected'))
error
? error.replaceAll('\n', '<br>')
: i18n.t('error_server_unexpected'),
)
const urlObj = new URL(url) const urlObj = new URL(url)
this.name = 'APIError' this.name = 'APIError'
this.code = status this.code = status
@ -21,7 +18,7 @@ class APIError extends Error {
this.path = urlObj.pathname + urlObj.search this.path = urlObj.pathname + urlObj.search
} }
log() { log () {
/* eslint-disable-next-line */ /* eslint-disable-next-line */
console.error(`${this.name} (${this.code}): ${this.uri}\n${this.message}`) console.error(`${this.name} (${this.code}): ${this.uri}\n${this.message}`)
} }
@ -29,65 +26,71 @@ class APIError extends Error {
// Log (Special error to trigger a redirect to a log page) // Log (Special error to trigger a redirect to a log page)
class APIErrorLog extends APIError { class APIErrorLog extends APIError {
constructor(method, response, errorData) { constructor (method, response, errorData) {
super(method, response, errorData) super(method, response, errorData)
this.logRef = errorData.log_ref this.logRef = errorData.log_ref
this.name = 'APIErrorLog' this.name = 'APIErrorLog'
} }
} }
// 0 — (means "the connexion has been closed" apparently) // 0 — (means "the connexion has been closed" apparently)
class APIConnexionError extends APIError { class APIConnexionError extends APIError {
constructor(method, response) { constructor (method, response) {
super(method, response, { error: i18n.t('error_connection_interrupted') }) super(method, response, { error: i18n.t('error_connection_interrupted') })
this.name = 'APIConnexionError' this.name = 'APIConnexionError'
} }
} }
// 400 — Bad Request // 400 — Bad Request
class APIBadRequestError extends APIError { class APIBadRequestError extends APIError {
constructor(method, response, errorData) { constructor (method, response, errorData) {
super(method, response, errorData) super(method, response, errorData)
this.name = 'APIBadRequestError' this.name = 'APIBadRequestError'
this.key = errorData.error_key this.key = errorData.error_key
this.data = errorData
} }
} }
// 401 — Unauthorized // 401 — Unauthorized
class APIUnauthorizedError extends APIError { class APIUnauthorizedError extends APIError {
constructor(method, response, errorData) { constructor (method, response, errorData) {
super(method, response, { error: i18n.t('unauthorized') }) super(method, response, { error: i18n.t('unauthorized') })
this.name = 'APIUnauthorizedError' this.name = 'APIUnauthorizedError'
} }
} }
// 404 — Not Found // 404 — Not Found
class APINotFoundError extends APIError { class APINotFoundError extends APIError {
constructor(method, response, errorData) { constructor (method, response, errorData) {
errorData.error = i18n.t('api_not_found') errorData.error = i18n.t('api_not_found')
super(method, response, errorData) super(method, response, errorData)
this.name = 'APINotFoundError' this.name = 'APINotFoundError'
} }
} }
// 500 — Server Internal Error // 500 — Server Internal Error
class APIInternalError extends APIError { class APIInternalError extends APIError {
constructor(method, response, errorData) { constructor (method, response, errorData) {
super(method, response, errorData) super(method, response, errorData)
this.traceback = errorData.traceback || null this.traceback = errorData.traceback || null
this.name = 'APIInternalError' this.name = 'APIInternalError'
} }
} }
// 502 — Bad gateway (means API is down) // 502 — Bad gateway (means API is down)
class APINotRespondingError extends APIError { class APINotRespondingError extends APIError {
constructor(method, response) { constructor (method, response) {
super(method, response, { error: i18n.t('api_not_responding') }) super(method, response, { error: i18n.t('api_not_responding') })
this.name = 'APINotRespondingError' this.name = 'APINotRespondingError'
} }
} }
// Temp factory // Temp factory
const errors = { const errors = {
[undefined]: APIError, [undefined]: APIError,
@ -97,9 +100,10 @@ const errors = {
401: APIUnauthorizedError, 401: APIUnauthorizedError,
404: APINotFoundError, 404: APINotFoundError,
500: APIInternalError, 500: APIInternalError,
502: APINotRespondingError, 502: APINotRespondingError
} }
export { export {
errors as default, errors as default,
APIError, APIError,
@ -109,5 +113,5 @@ export {
APIInternalError, APIInternalError,
APINotFoundError, APINotFoundError,
APINotRespondingError, APINotRespondingError,
APIUnauthorizedError, APIUnauthorizedError
} }

View file

@ -6,13 +6,14 @@
import store from '@/store' import store from '@/store'
import errors, { APIError } from './errors' import errors, { APIError } from './errors'
/** /**
* Try to get response content as json and if it's not as text. * Try to get response content as json and if it's not as text.
* *
* @param {Response} response - A fetch `Response` object. * @param {Response} response - A fetch `Response` object.
* @return {(Object|String)} Parsed response's json or response's text. * @return {(Object|String)} Parsed response's json or response's text.
*/ */
export async function getResponseData(response) { export async function getResponseData (response) {
// FIXME the api should always return json as response // FIXME the api should always return json as response
const responseText = await response.text() const responseText = await response.text()
try { try {
@ -22,6 +23,7 @@ export async function getResponseData(response) {
} }
} }
/** /**
* Opens a WebSocket connection to the server in case it sends messages. * Opens a WebSocket connection to the server in case it sends messages.
* Currently, the connection is closed by the server right after an API call so * Currently, the connection is closed by the server right after an API call so
@ -31,16 +33,11 @@ export async function getResponseData(response) {
* @param {Object} request - Request info data. * @param {Object} request - Request info data.
* @return {Promise<Event>} Promise that resolve on websocket 'open' or 'error' event. * @return {Promise<Event>} Promise that resolve on websocket 'open' or 'error' event.
*/ */
export function openWebSocket(request) { export function openWebSocket (request) {
return new Promise((resolve) => { return new Promise(resolve => {
const ws = new WebSocket( const ws = new WebSocket(`wss://${store.getters.host}/yunohost/api/messages`)
`wss://${store.getters.host}/yunohost/api/messages`,
)
ws.onmessage = ({ data }) => { ws.onmessage = ({ data }) => {
store.dispatch('DISPATCH_MESSAGE', { store.dispatch('DISPATCH_MESSAGE', { request, messages: JSON.parse(data) })
request,
messages: JSON.parse(data),
})
} }
// ws.onclose = (e) => {} // ws.onclose = (e) => {}
ws.onopen = resolve ws.onopen = resolve
@ -49,6 +46,7 @@ export function openWebSocket(request) {
}) })
} }
/** /**
* Handler for API errors. * Handler for API errors.
* *
@ -57,7 +55,7 @@ export function openWebSocket(request) {
* @param {Object|String} errorData - The response parsed json/text. * @param {Object|String} errorData - The response parsed json/text.
* @throws Will throw a `APIError` with request and response data. * @throws Will throw a `APIError` with request and response data.
*/ */
export async function handleError(request, response, errorData) { export async function handleError (request, response, errorData) {
let errorCode = response.status in errors ? response.status : undefined let errorCode = response.status in errors ? response.status : undefined
if (typeof errorData === 'string') { if (typeof errorData === 'string') {
// FIXME API: Patching errors that are plain text or html. // FIXME API: Patching errors that are plain text or html.
@ -72,24 +70,29 @@ export async function handleError(request, response, errorData) {
throw new errors[errorCode](request, response, errorData) throw new errors[errorCode](request, response, errorData)
} }
/** /**
* If an APIError is not catched by a view it will be dispatched to the store so the * If an APIError is not catched by a view it will be dispatched to the store so the
* error can be displayed in the error modal. * error can be displayed in the error modal.
* *
* @param {APIError} error * @param {APIError} error
*/ */
export function onUnhandledAPIError(error) { export function onUnhandledAPIError (error) {
error.log() // In 'development', Babel seems to also catch the error so there's no need to log it twice.
if (process.env.NODE_ENV !== 'development') {
error.log()
}
store.dispatch('HANDLE_ERROR', error) store.dispatch('HANDLE_ERROR', error)
} }
/** /**
* Global catching of unhandled promise's rejections. * Global catching of unhandled promise's rejections.
* Those errors (thrown or rejected from inside a promise) can't be catched by * Those errors (thrown or rejected from inside a promise) can't be catched by
* `window.onerror`. * `window.onerror`.
*/ */
export function registerGlobalErrorHandlers() { export function registerGlobalErrorHandlers () {
window.addEventListener('unhandledrejection', (e) => { window.addEventListener('unhandledrejection', e => {
const error = e.reason const error = e.reason
if (error instanceof APIError) { if (error instanceof APIError) {
onUnhandledAPIError(error) onUnhandledAPIError(error)

View file

Before

Width:  |  Height:  |  Size: 8.3 KiB

After

Width:  |  Height:  |  Size: 8.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

View file

Before

Width:  |  Height:  |  Size: 3.7 KiB

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.4 KiB

View file

@ -1,40 +1,27 @@
<template> <template>
<BInputGroup v-bind="$attrs"> <b-input-group v-bind="$attrs">
<InputItem <input-item
:id="id" :id="id" :placeholder="placeholder"
:value="value.localPart" :state="state" :aria-describedby="id + 'local-part-desc'"
:placeholder="placeholder" v-model="value.localPart"
:state="state" v-on="listeners"
:aria-describedby="id + 'local-part-desc'"
@input="onInput('localPart', $event)"
@blur="$parent.$emit('touch')"
/> />
<BInputGroupAppend> <b-input-group-append>
<BInputGroupText>{{ value.separator }}</BInputGroupText> <b-input-group-text>{{ value.separator }}</b-input-group-text>
</BInputGroupAppend> </b-input-group-append>
<BInputGroupAppend> <b-input-group-append>
<SelectItem <select-item
:value="value.domain" v-model="value.domain"
:choices="choices" :choices="choices"
:aria-describedby="id + 'domain-desc'" :aria-describedby="id + 'domain-desc'"
@input="onInput('domain', $event)"
@blur="$parent.$emit('touch')"
/> />
</BInputGroupAppend> </b-input-group-append>
<span <span class="sr-only" :id="id + 'local-part-desc'" v-t="'address.local_part_description.' + type" />
class="sr-only" <span class="sr-only" :id="id + 'domain-desc'" v-t="'address.domain_description.' + type" />
:id="id + 'local-part-desc'" </b-input-group>
v-t="'address.local_part_description.' + type"
/>
<span
class="sr-only"
:id="id + 'domain-desc'"
v-t="'address.domain_description.' + type"
/>
</BInputGroup>
</template> </template>
<script> <script>
@ -50,17 +37,29 @@ export default {
placeholder: { type: String, default: null }, placeholder: { type: String, default: null },
id: { type: String, default: null }, id: { type: String, default: null },
state: { type: null, default: null }, state: { type: null, default: null },
type: { type: String, default: 'email' }, type: { type: String, default: 'email' }
}, },
methods: { computed: {
onInput(key, value) { listeners: function () {
this.$emit('input', { return Object.assign({},
...this.value, // Forwards all parent events listeners
[key]: value, this.$listeners,
}) // Overwrite input behavior so this component can work with v-model
}, {
}, input: (event) => {
this.$parent.$emit('touch')
this.$emit('input', this.value)
},
blur: event => {
this.$parent.$emit('touch')
this.$emit('blur', this.value)
}
}
)
}
}
} }
</script> </script>

View file

@ -1,85 +0,0 @@
<template>
<BCard v-bind="$attrs" no-body :class="_class">
<template #header>
<slot name="header">
<h2>
<BButton
v-b-toggle="id"
:variant="variant"
class="card-collapse-button"
>
{{ title }}
<YIcon class="ml-auto" iname="chevron-right" />
</BButton>
</h2>
</slot>
</template>
<BCollapse :id="id" :visible="visible" role="region">
<slot name="default" />
</BCollapse>
</BCard>
</template>
<script>
export default {
name: 'CardCollapse',
props: {
id: { type: String, required: true },
title: { type: String, required: true },
variant: { type: String, default: 'white' },
visible: { type: Boolean, default: false },
flush: { type: Boolean, default: false },
},
computed: {
_class() {
const baseClass = 'card-collapse'
return [
baseClass,
{
[`${baseClass}-flush`]: this.flush,
[`${baseClass}-${this.variant}`]: this.variant,
},
]
},
},
}
</script>
<style lang="scss" scoped>
.card-collapse {
.card-header {
padding: 0;
}
&-button {
display: flex;
width: 100%;
text-align: left;
padding-top: $spacer * 0.5;
padding-bottom: $spacer * 0.5;
border-radius: 0;
font: inherit;
}
&-flush {
border-radius: 0;
border-left: 0;
border-right: 0;
}
& + & {
margin-top: 0;
border-top: 0;
}
@each $color, $value in $theme-colors {
&-#{$color} {
background-color: $value;
color: color-yiq($value);
}
}
}
</style>

View file

@ -1,86 +0,0 @@
<script>
// Implementation of the feed pattern
// https://www.w3.org/WAI/ARIA/apg/patterns/feed/
export default {
name: 'CardDeckFeed',
props: {
stacks: { type: Number, default: 21 },
},
data() {
return {
busy: false,
range: this.stacks,
childrenCount: this.$slots.default.length,
}
},
methods: {
getTopParent(prev) {
return prev.parentElement === this.$refs.feed
? prev
: this.getTopParent(prev.parentElement)
},
onScroll() {
const elem = this.$refs.feed
if (
window.innerHeight >
elem.clientHeight + elem.getBoundingClientRect().top - 200
) {
this.busy = true
this.range = Math.min(this.range + this.stacks, this.childrenCount)
this.$nextTick().then(() => {
this.busy = false
})
}
},
onKeydown(e) {
if (['PageUp', 'PageDown'].includes(e.code)) {
e.preventDefault()
const key = e.code === 'PageUp' ? 'previous' : 'next'
const sibling = this.getTopParent(e.target)[`${key}ElementSibling`]
if (sibling) {
sibling.focus()
sibling.scrollIntoView({ block: 'center' })
}
}
// FIXME Add `Home` and `End` shorcuts
},
},
mounted() {
window.addEventListener('scroll', this.onScroll)
this.$refs.feed.addEventListener('keydown', this.onKeydown)
this.onScroll()
},
beforeUpdate() {
const slots = this.$slots.default
if (this.childrenCount !== slots.length) {
this.range = this.stacks
this.childrenCount = slots.length
}
},
render(h) {
return h(
'BCardGroup',
{
attrs: { role: 'feed', 'aria-busy': this.busy.toString() },
props: { deck: true },
ref: 'feed',
},
this.$slots.default.slice(0, this.range),
)
},
beforeDestroy() {
window.removeEventListener('scroll', this.onScroll)
this.$refs.feed.removeEventListener('keydown', this.onKeydown)
},
}
</script>

View file

@ -1,111 +0,0 @@
<template>
<AbstractForm
v-if="panel"
v-bind="{
id: panel.id + '-form',
validation,
serverError: panel.serverError,
}"
@submit.prevent.stop="onApply"
:no-footer="!panel.hasApplyButton"
>
<slot name="tab-top" />
<template v-if="panel.help" #disclaimer>
<div class="alert alert-info" v-html="help" />
</template>
<slot name="tab-before" />
<template v-for="section in panel.sections">
<Component
v-if="section.visible"
:is="section.name ? 'section' : 'div'"
:key="section.id"
class="panel-section"
>
<BCardTitle v-if="section.name" title-tag="h3">
{{ section.name }}
<small v-if="section.help">{{ section.help }}</small>
</BCardTitle>
<template v-for="(field, fname) in section.fields">
<!-- FIXME rework the whole component chain to avoid direct mutation of the `forms` props -->
<!-- eslint-disable -->
<Component
v-if="field.visible"
:is="field.is"
v-bind="field.props"
v-model="forms[panel.id][fname]"
:validation="validation[fname]"
:key="fname"
@action.stop="onAction(section.id, fname, section.fields)"
/>
<!-- eslint-enable -->
</template>
</Component>
</template>
<slot name="tab-after" />
</AbstractForm>
</template>
<script>
import { filterObject } from '@/helpers/commons'
export default {
name: 'ConfigPanel',
props: {
tabId: { type: String, required: true },
panels: { type: Array, default: undefined },
forms: { type: Object, default: undefined },
v: { type: Object, default: undefined },
},
computed: {
panel() {
return this.panels.find((panel) => panel.id === this.tabId)
},
validation() {
return this.v.forms[this.panel.id]
},
},
methods: {
onApply() {
const panelId = this.panel.id
this.$emit('submit', {
id: panelId,
form: this.forms[panelId],
})
},
onAction(sectionId, actionId, actionFields) {
const panelId = this.panel.id
const actionFieldsKeys = Object.keys(actionFields)
this.$emit('submit', {
id: panelId,
form: filterObject(this.forms[panelId], ([key]) =>
actionFieldsKeys.includes(key),
),
action: [panelId, sectionId, actionId].join('.'),
name: actionId,
})
},
},
}
</script>
<style lang="scss" scoped>
.card-title {
margin-bottom: 1em;
border-bottom: solid $border-width $gray-500;
}
::v-deep .panel-section:not(:last-child) {
margin-bottom: 3rem;
}
</style>

View file

@ -1,72 +0,0 @@
<template>
<div class="config-panel">
<RoutableTabs
v-if="routes_.length > 1"
:routes="routes_"
v-bind="{ panels, forms, v: $v, ...$attrs }"
v-on="$listeners"
>
<template #tab-top>
<slot name="tab-top" />
</template>
<template #tab-before>
<slot name="tab-before" />
</template>
<template #tab-after>
<slot name="tab-after" />
</template>
</RoutableTabs>
<YCard v-else :title="routes_[0].text" :icon="routes_[0].icon">
<slot name="tab-top" />
<slot name="tab-before" />
<slot name="tab-after" />
</YCard>
</div>
</template>
<script>
import { validationMixin } from 'vuelidate'
export default {
name: 'ConfigPanels',
inheritAttrs: false,
components: {
RoutableTabs: () => import('@/components/RoutableTabs.vue'),
},
mixins: [validationMixin],
props: {
panels: { type: Array, default: undefined },
forms: { type: Object, default: undefined },
validations: { type: Object, default: undefined },
errors: { type: Object, default: undefined }, // never used
routes: { type: Array, default: null },
noRedirect: { type: Boolean, default: false },
},
computed: {
routes_() {
if (this.routes) return this.routes
return this.panels.map((panel) => ({
to: { params: { tabId: panel.id } },
text: panel.name,
icon: panel.icon || 'wrench',
}))
},
},
validations() {
return { forms: this.validations }
},
created() {
if (!this.noRedirect && !this.$route.params.tabId) {
this.$router.replace({ params: { tabId: this.panels[0].id } })
}
},
}
</script>

View file

@ -1,76 +0,0 @@
<template>
<div class="lazy-renderer" :style="`min-height: ${fixedMinHeight}px`">
<slot v-if="render" />
</div>
</template>
<script>
export default {
name: 'LazyRenderer',
props: {
unrender: { type: Boolean, default: true },
minHeight: { type: Number, default: 0 },
renderDelay: { type: Number, default: 100 },
unrenderDelay: { type: Number, default: 2000 },
rootMargin: { type: String, default: '300px' },
},
data() {
return {
observer: null,
render: false,
fixedMinHeight: this.minHeight,
}
},
mounted() {
let unrenderTimer
let renderTimer
this.observer = new IntersectionObserver(
(entries) => {
let intersecting = entries[0].isIntersecting
// Fix for weird bug when typing fast in app search or on slow client.
// Intersection is triggered but even if the element is indeed in the viewport,
// isIntersecting is `false`, so we have to manually check this
// FIXME Would be great to find out why this is happening
if (!intersecting && this.$el.offsetTop < window.innerHeight) {
intersecting = true
}
if (intersecting) {
clearTimeout(unrenderTimer)
// Show the component after a delay (to avoid rendering while scrolling fast)
renderTimer = setTimeout(
() => {
this.render = true
},
this.unrender ? this.renderDelay : 0,
)
if (!this.unrender) {
// Stop listening to intersections after first appearance if unrendering is not activated
this.observer.disconnect()
}
} else if (this.unrender) {
clearTimeout(renderTimer)
// Hide the component after a delay if it's no longer in the viewport
unrenderTimer = setTimeout(() => {
this.fixedMinHeight = this.$el.clientHeight
this.render = false
}, this.unrenderDelay)
}
},
{ rootMargin: this.rootMargin },
)
this.observer.observe(this.$el)
},
beforeDestroy() {
this.observer.disconnect()
},
}
</script>

View file

@ -1,25 +1,13 @@
<template> <template>
<BListGroup <b-list-group
v-bind="$attrs" v-bind="$attrs" ref="self"
flush flush :class="{ 'fixed-height': fixedHeight, 'bordered': bordered }"
:class="{ 'fixed-height': fixedHeight, bordered: bordered }"
@scroll="onScroll"
> >
<YListGroupItem <b-list-group-item v-for="({ color, text }, i) in messages" :key="i">
v-if="limit && messages.length > limit" <span class="status" :class="'bg-' + color" />
variant="info"
v-t="'api.partial_logs'"
/>
<YListGroupItem
v-for="({ color, text }, i) in reducedMessages"
:key="i"
:variant="color"
size="xs"
>
<span v-html="text" /> <span v-html="text" />
</YListGroupItem> </b-list-group-item>
</BListGroup> </b-list-group>
</template> </template>
<script> <script>
@ -30,44 +18,23 @@ export default {
messages: { type: Array, required: true }, messages: { type: Array, required: true },
fixedHeight: { type: Boolean, default: false }, fixedHeight: { type: Boolean, default: false },
bordered: { type: Boolean, default: false }, bordered: { type: Boolean, default: false },
autoScroll: { type: Boolean, default: false }, autoScroll: { type: Boolean, default: false }
limit: { type: Number, default: null },
},
data() {
return {
auto: true,
}
},
computed: {
reducedMessages() {
const len = this.messages.length
if (!this.limit || len <= this.limit) {
return this.messages
}
return this.messages.slice(len - this.limit)
},
}, },
methods: { methods: {
scrollToEnd() { scrollToEnd () {
if (!this.auto) return
this.$nextTick(() => { this.$nextTick(() => {
this.$el.scrollTo(0, this.$el.lastElementChild.offsetTop) const container = this.$refs.self
container.scrollTo(0, container.lastElementChild.offsetTop)
}) })
}, }
onScroll({ target }) {
this.auto = target.scrollHeight === target.scrollTop + target.clientHeight
},
}, },
created() { created () {
if (this.autoScroll) { if (this.autoScroll) {
this.$watch('messages', this.scrollToEnd) this.$watch('messages', this.scrollToEnd)
} }
}, }
} }
</script> </script>
@ -81,4 +48,18 @@ export default {
border: $card-border-width solid $card-border-color; border: $card-border-width solid $card-border-color;
@include border-radius($card-border-radius); @include border-radius($card-border-radius);
} }
.list-group-item {
font-size: $font-size-sm;
padding: $tooltip-padding-y $tooltip-padding-x;
padding-left: 1rem;
}
.status {
position: absolute;
width: .4rem;
height: 100%;
top: 0;
left: 0;
}
</style> </style>

View file

@ -1,11 +1,7 @@
<template> <template>
<div class="query-header w-100" v-on="$listeners" v-bind="$attrs"> <div class="query-header w-100" v-on="$listeners" v-bind="$attrs">
<!-- STATUS --> <!-- STATUS -->
<span <span class="status" :class="['bg-' + color, statusSize]" :aria-label="$t('api.query_status.' + request.status)" />
class="status"
:class="['bg-' + color, statusSize]"
:aria-label="$t('api.query_status.' + request.status)"
/>
<!-- REQUEST DESCRIPTION --> <!-- REQUEST DESCRIPTION -->
<strong class="request-desc"> <strong class="request-desc">
@ -15,34 +11,28 @@
<div v-if="request.errors || request.warnings"> <div v-if="request.errors || request.warnings">
<!-- WEBSOCKET ERRORS COUNT --> <!-- WEBSOCKET ERRORS COUNT -->
<span class="count" v-if="request.errors"> <span class="count" v-if="request.errors">
{{ request.errors }}<YIcon iname="bug" class="text-danger ml-1" /> {{ request.errors }}<icon iname="bug" class="text-danger ml-1" />
</span> </span>
<!-- WEBSOCKET WARNINGS COUNT --> <!-- WEBSOCKET WARNINGS COUNT -->
<span class="count" v-if="request.warnings"> <span class="count" v-if="request.warnings">
{{ request.warnings {{ request.warnings }}<icon iname="warning" class="text-warning ml-1" />
}}<YIcon iname="warning" class="text-warning ml-1" />
</span> </span>
</div> </div>
<!-- VIEW ERROR BUTTON --> <!-- VIEW ERROR BUTTON -->
<BButton <b-button
v-if="showError && request.error" v-if="showError && request.error"
size="sm" size="sm" pill
pill
class="error-btn ml-auto py-0" class="error-btn ml-auto py-0"
variant="danger" variant="danger"
@click="reviewError" @click="reviewError"
> >
<small v-t="'api_error.view_error'" /> <small v-t="'api_error.view_error'" />
</BButton> </b-button>
<!-- TIME DISPLAY --> <!-- TIME DISPLAY -->
<time <time v-if="showTime" :datetime="request.date | hour" :class="request.error ? 'ml-2' : 'ml-auto'">
v-if="showTime" {{ request.date | hour }}
:datetime="hour(request.date)"
:class="request.error ? 'ml-2' : 'ml-auto'"
>
{{ hour(request.date) }}
</time> </time>
</div> </div>
</template> </template>
@ -55,40 +45,44 @@ export default {
request: { type: Object, required: true }, request: { type: Object, required: true },
statusSize: { type: String, default: '' }, statusSize: { type: String, default: '' },
showTime: { type: Boolean, default: false }, showTime: { type: Boolean, default: false },
showError: { type: Boolean, default: false }, showError: { type: Boolean, default: false }
}, },
computed: { computed: {
color() { color () {
const statuses = { const statuses = {
pending: 'primary', pending: 'primary',
success: 'success', success: 'success',
warning: 'warning', warning: 'warning',
error: 'danger', error: 'danger'
} }
return statuses[this.request.status] return statuses[this.request.status]
}, },
errorsCount() { errorsCount () {
return this.request.messages.filter(({ type }) => type === 'danger') return this.request.messages.filter(({ type }) => type === 'danger').length
.length
}, },
warningsCount() { warningsCount () {
return this.request.messages.filter(({ type }) => type === 'warning') return this.request.messages.filter(({ type }) => type === 'warning').length
.length }
},
}, },
methods: { methods: {
reviewError() { reviewError () {
this.$store.dispatch('REVIEW_ERROR', this.request) this.$store.dispatch('REVIEW_ERROR', this.request)
}
},
filters: {
readableUri (uri) {
return uri.split('?')[0].split('/').join(' > ') // replace('/', ' > ')
}, },
hour(date) { hour (date) {
return new Date(date).toLocaleTimeString() return new Date(date).toLocaleTimeString()
}, }
}, }
} }
</script> </script>
@ -110,15 +104,15 @@ div {
.status { .status {
display: inline-block; display: inline-block;
border-radius: 50%; border-radius: 50%;
width: 0.75rem; width: .75rem;
min-width: 0.75rem; min-width: .75rem;
height: 0.75rem; height: .75rem;
margin-right: 0.25rem; margin-right: .25rem;
&.lg { &.lg {
width: 1rem; width: 1rem;
height: 1rem; height: 1rem;
margin-right: 0.5rem; margin-right: .5rem;
} }
} }
@ -130,7 +124,7 @@ time {
.count { .count {
display: flex; display: flex;
align-items: center; align-items: center;
margin-left: 0.5rem; margin-left: .5rem;
} }
@include media-breakpoint-down(xs) { @include media-breakpoint-down(xs) {
@ -138,4 +132,5 @@ time {
display: none; display: none;
} }
} }
</style> </style>

View file

@ -1,122 +0,0 @@
<template>
<BListGroup :flush="flush" :style="{ '--depth': tree.depth }">
<template v-for="(node, i) in tree.children">
<BListGroupItem
:key="node.id"
class="list-group-item-action"
:class="getClasses(node, i)"
@click="$router.push(node.data.to)"
>
<slot name="default" v-bind="node" />
<BButton
v-if="node.children"
size="xs"
variant="outline-secondary"
:aria-expanded="node.data.opened ? 'true' : 'false'"
:aria-controls="'collapse-' + node.id"
:class="node.data.opened ? 'not-collapsed' : 'collapsed'"
class="ml-2"
@click.stop="node.data.opened = !node.data.opened"
>
<span class="sr-only">{{ toggleText }}</span>
<YIcon iname="chevron-right" />
</BButton>
</BListGroupItem>
<BCollapse
v-if="node.children"
:key="'collapse-' + node.id"
v-model="node.data.opened"
:id="'collapse-' + node.id"
>
<RecursiveListGroup
:tree="node"
:last="last !== undefined ? last : i === tree.children.length - 1"
flush
>
<!-- PASS THE DEFAULT SLOT WITH SCOPE TO NEXT NESTED COMPONENT -->
<template slot="default" slot-scope="scope">
<slot name="default" v-bind="scope" />
</template>
</RecursiveListGroup>
</BCollapse>
</template>
</BListGroup>
</template>
<script>
export default {
name: 'RecursiveListGroup',
props: {
tree: { type: Object, required: true },
flush: { type: Boolean, default: false },
last: { type: Boolean, default: undefined },
toggleText: { type: String, default: null },
},
methods: {
getClasses(node, i) {
const children = node.height > 0
const opened = children && node.data.opened
const last =
this.last !== false &&
(!children || !opened) &&
i === this.tree.children.length - 1
return { collapsible: children, uncollapsible: !children, opened, last }
},
},
}
</script>
<style lang="scss" scoped>
.list-group {
.collapse {
&:not(.show) + .list-group-item {
border-end-start-radius: $border-radius;
}
&.show + .list-group-item {
border-start-start-radius: $border-radius;
}
+ .list-group-item {
border-block-start-width: 1px !important;
}
}
&-item {
&-action {
cursor: pointer;
display: flex;
justify-content: space-between;
align-items: center;
width: unset;
}
&.collapsible.opened {
border-end-start-radius: $border-radius;
}
&.collapsible:not(.opened, .last) {
border-block-end-width: 0;
}
&.last {
border-block-end-width: $list-group-border-width;
border-end-start-radius: $border-radius;
}
}
&-flush .list-group-item {
margin-inline-start: calc(1rem * var(--depth));
border-inline-end: $list-group-border-width solid $list-group-border-color;
border-inline-start: $list-group-border-width solid $list-group-border-color;
text-decoration: none;
background-color: $list-group-hover-bg;
@include hover-focus() {
background-color: darken($list-group-hover-bg, 3%);
}
}
}
</style>

View file

@ -1,45 +0,0 @@
<template>
<BCard no-body>
<BCardHeader header-tag="nav">
<BNav card-header fill pills>
<BNavItem
v-for="route in routes"
:key="route.text"
:to="route.to"
exact
exact-active-class="active"
>
<YIcon v-if="route.icon" :iname="route.icon" />
{{ route.text }}
</BNavItem>
</BNav>
</BCardHeader>
<!-- Bind extra props to the child view and forward child events to parent -->
<RouterView v-bind="$attrs" v-on="$listeners">
<template #tab-top>
<slot name="tab-top" />
</template>
<template #tab-before>
<slot name="tab-before" />
</template>
<template #tab-after>
<slot name="tab-after" />
</template>
</RouterView>
</BCard>
</template>
<script>
export default {
name: 'RoutableTabs',
// Thanks to `v-bind="$attrs"` and `inheritAttrs: false`, this component can forward
// arbitrary attributes (props) directly to its children.
inheritAttrs: false,
props: {
routes: { type: Array, required: true },
},
}
</script>

View 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>

View file

@ -1,79 +0,0 @@
<template>
<div>
<BCardBody>
<slot name="disclaimer" />
<BForm
:id="id"
:inline="inline"
:class="formClasses"
@submit.prevent="onSubmit"
novalidate
>
<slot name="default" />
<slot name="server-error" v-bind="{ errorFeedback }">
<BAlert v-if="errorFeedback" variant="danger" class="my-3" icon="ban">
<div v-html="errorFeedback" />
</BAlert>
</slot>
</BForm>
</BCardBody>
<BCardFooter v-if="!noFooter">
<slot name="footer">
<BButton type="submit" variant="success" :form="id">
{{ submitText || $t('save') }}
</BButton>
</slot>
</BCardFooter>
</div>
</template>
<script>
export default {
name: 'AbstractForm',
props: {
id: { type: String, default: 'ynh-form' },
submitText: { type: String, default: null },
validation: { type: Object, default: null },
serverError: { type: String, default: '' },
inline: { type: Boolean, default: false },
formClasses: { type: [Array, String, Object], default: null },
noFooter: { type: Boolean, default: false },
},
computed: {
errorFeedback() {
if (this.serverError) return this.serverError
else if (this.validation && this.validation.$anyError) {
return this.$i18n.t('form_errors.invalid_form')
} else return ''
},
},
methods: {
onSubmit(e) {
const v = this.validation
if (v) {
v.$touch()
if (v.$pending || v.$invalid) return
}
this.$emit('submit', e)
},
},
}
</script>
<style lang="scss" scoped>
.card-footer {
display: flex;
justify-content: flex-end;
align-items: center;
& > *:not(:first-child) {
margin-left: 0.5rem;
}
}
</style>

View file

@ -0,0 +1,62 @@
<template>
<b-breadcrumb v-if="routesList">
<b-breadcrumb-item to="/">
<span class="sr-only">{{ $t('home') }}</span>
<icon iname="home" />
</b-breadcrumb-item>
<b-breadcrumb-item
v-for="{ name, text } in breadcrumb" :key="name"
:to="{ name }" :active="name === $route.name"
>
{{ text }}
</b-breadcrumb-item>
</b-breadcrumb>
</template>
<script>
export default {
name: 'Breadcrumb',
computed: {
routesList () {
const routesList = this.$route.meta.breadcrumb
return routesList && routesList.length ? routesList : null
},
breadcrumb () {
if (!this.routesList) return
// Get current params to pass it to potential previous routes
const currentParams = this.$route.params
return this.routesList.map(name => {
const { trad, param } = this.getRouteArgs(name)
let text = ''
// if a traduction key string has been given and we also need to pass
// the route param as a variable.
if (trad && param) {
text = this.$i18n.t(trad, { [param]: currentParams[param] })
} else if (trad) {
text = this.$i18n.t(trad)
} else {
text = currentParams[param]
}
return { name, text }
})
}
},
methods: {
getRouteArgs (routeName) {
const route = this.$router.options.routes.find(route => route.name === routeName)
return route ? route.meta.args : {}
}
}
}
</script>
<style lang="scss" scoped>
.breadcrumb {
border: none;
background-color: transparent;
}
</style>

View file

@ -0,0 +1,95 @@
<template>
<b-card v-bind="$attrs" :no-body="collapsable ? true : $attrs['no-body']">
<template #header>
<div class="w-100 d-flex align-items-center flex-wrap custom-header">
<slot name="header">
<component :is="titleTag" class="custom-header-title">
<icon v-if="icon" :iname="icon" class="mr-2" />{{ title }}
</component>
</slot>
<div v-if="hasButtons" class="mt-2 w-100 custom-header-buttons" :class="{ [`ml-${buttonUnbreak}-auto mt-${buttonUnbreak}-0 w-${buttonUnbreak}-auto`]: buttonUnbreak }">
<slot name="header-buttons" />
</div>
</div>
<b-button
v-if="collapsable" @click="visible = !visible"
size="sm" variant="outline-secondary"
class="align-self-center ml-auto" :class="{ 'not-collapsed': visible, 'collapsed': !visible, [`ml-${buttonUnbreak}-2`]: buttonUnbreak }"
>
<icon iname="chevron-right" />
<span class="sr-only">{{ $t('words.collapse') }}</span>
</b-button>
</template>
<b-collapse v-if="collapsable" :visible="visible">
<slot v-if="('no-body' in $attrs)" name="default" />
<b-card-body v-else>
<slot name="default" />
</b-card-body>
</b-collapse>
<slot v-else name="default" slot="default" />
<slot name="footer" slot="footer">
<slot name="buttons" />
</slot>
</b-card>
</template>
<script>
export default {
name: 'Card',
props: {
id: { type: String, default: 'ynh-form' },
title: { type: String, default: null },
titleTag: { type: String, default: 'h2' },
icon: { type: String, default: null },
collapsable: { type: Boolean, default: false },
collapsed: { type: Boolean, default: false },
buttonUnbreak: { type: String, default: 'md' }
},
data () {
return {
visible: !this.collapsed
}
},
computed: {
hasButtons () {
return 'header-buttons' in this.$slots
}
}
}
</script>
<style lang="scss" scoped>
.card-header {
display: flex;
.custom-header {
& > :first-child {
margin-right: 1rem;
}
.btn + .btn {
margin-left: .5rem;
}
}
}
.card-footer {
display: flex;
justify-content: flex-end;
& > *:not(:first-child) {
margin-left: .5rem;
}
}
.collapse:not(.show) + .card-footer {
display: none;
}
</style>

View file

@ -1,41 +1,36 @@
<template> <template>
<YCard v-bind="$attrs" class="card-form"> <card v-bind="$attrs" class="card-form">
<template #default> <template #default>
<slot name="disclaimer" /> <slot name="disclaimer" />
<BForm <b-form
:id="id" :id="id" :inline="inline" :class="formClasses"
:inline="inline" @submit.prevent="onSubmit" novalidate
:class="formClasses"
@submit.prevent="onSubmit"
novalidate
> >
<slot name="default" /> <slot name="default" />
<slot name="server-error"> <slot name="server-error">
<BAlert <b-alert
variant="danger" variant="danger" class="my-3"
class="my-3" :show="serverError !== ''" v-html="serverError"
icon="ban" />
:show="errorFeedback !== ''"
>
<div v-html="errorFeedback" />
</BAlert>
</slot> </slot>
</BForm> </b-form>
</template> </template>
<template v-if="!noFooter" #buttons> <slot v-if="!noFooter" name="buttons" slot="buttons">
<slot name="buttons"> <b-button
<BButton type="submit" variant="success" :form="id"> type="submit" variant="success"
{{ submitText ? submitText : $t('save') }} :form="id" :disabled="disabled"
</BButton> >
</slot> {{ submitText ? submitText : $t('save') }}
</template> </b-button>
</YCard> </slot>
</card>
</template> </template>
<script> <script>
export default { export default {
name: 'CardForm', name: 'CardForm',
@ -46,29 +41,27 @@ export default {
serverError: { type: String, default: '' }, serverError: { type: String, default: '' },
inline: { type: Boolean, default: false }, inline: { type: Boolean, default: false },
formClasses: { type: [Array, String, Object], default: null }, formClasses: { type: [Array, String, Object], default: null },
noFooter: { type: Boolean, default: false }, noFooter: { type: Boolean, default: false }
}, },
computed: { computed: {
errorFeedback() { disabled () {
if (this.serverError) return this.serverError return this.validation ? this.validation.$invalid : false
else if (this.validation && this.validation.$anyError) { }
return this.$i18n.t('form_errors.invalid_form')
} else return ''
},
}, },
methods: { methods: {
onSubmit(e) { onSubmit (e) {
const v = this.validation const v = this.validation
if (v) { if (v) {
v.$touch() v.$touch()
if (v.$pending || v.$invalid) return if (v.$pending || v.$invalid) return
} }
this.$emit('submit', e) this.$emit('submit', e)
}, }
}, }
} }
</script> </script>
<style lang="scss"></style> <style lang="scss">
</style>

View file

@ -1,60 +0,0 @@
<template>
<BRow no-gutters class="description-row">
<BCol v-bind="cols_">
<slot name="term">
<strong>{{ term }}</strong>
</slot>
</BCol>
<BCol>
<slot name="default">
{{ details }}
</slot>
</BCol>
</BRow>
</template>
<script>
export default {
name: 'DescriptionRow',
props: {
term: { type: String, default: null },
details: { type: String, default: null },
cols: { type: Object, default: () => ({ md: 4, xl: 3 }) },
},
computed: {
cols_() {
return Object.assign({ md: 4, xl: 3 }, this.cols)
},
},
}
</script>
<style lang="scss" scoped>
.description-row {
@include media-breakpoint-up(md) {
margin: 0.25rem 0;
&:hover {
background-color: rgba($black, 0.05);
border-radius: 0.2rem;
}
}
@include media-breakpoint-down(sm) {
flex-direction: column;
&:not(:last-of-type) {
margin-bottom: 0.5rem;
padding-bottom: 0.5rem;
border-bottom: $border-width solid $card-border-color;
}
}
.col {
display: flex;
align-self: start;
}
}
</style>

View file

@ -1,65 +0,0 @@
<template>
<span class="explain-what">
<slot name="default" />
<span class="explain-what-popover-container">
<BButton :id="id" href="#" variant="light">
<YIcon iname="question" />
<span class="sr-only">
{{ $t('details_about', { subject: title }) }}
</span>
</BButton>
<BPopover
placement="auto"
:target="id"
triggers="focus"
custom-class="explain-what-popover"
:variant="variant"
:title="title"
>
<span v-html="content" />
</BPopover>
</span>
</span>
</template>
<script>
export default {
name: 'ExplainWhat',
props: {
id: { type: String, required: true },
title: { type: String, required: true },
content: { type: String, required: true },
variant: { type: String, default: 'info' },
},
computed: {
cols_() {
return Object.assign({ md: 4, xl: 3 }, this.cols)
},
},
}
</script>
<style lang="scss" scoped>
.explain-what {
line-height: 1.2;
.btn {
padding: 0;
margin-left: 0.1rem;
border-radius: 50rem;
line-height: inherit;
font-size: inherit;
}
&-popover {
background-color: $white;
border-width: 2px;
::v-deep .popover-body {
color: $dark;
}
}
}
</style>

View file

@ -1,6 +1,6 @@
<template> <template>
<!-- v-bind="$attrs" allow to pass default attrs not specified in this component slots --> <!-- v-bind="$attrs" allow to pass default attrs not specified in this component slots -->
<BFormGroup <b-form-group
v-bind="attrs" v-bind="attrs"
:id="_id" :id="_id"
:label-for="$attrs['label-for'] || props.id" :label-for="$attrs['label-for'] || props.id"
@ -10,7 +10,7 @@
<!-- Make field props and state available as scoped slot data --> <!-- Make field props and state available as scoped slot data -->
<slot v-bind="{ self: { ...props, state }, touch }"> <slot v-bind="{ self: { ...props, state }, touch }">
<!-- if no component was passed as slot, render a component from the props --> <!-- if no component was passed as slot, render a component from the props -->
<Component <component
:is="component" :is="component"
v-bind="props" v-bind="props"
v-on="$listeners" v-on="$listeners"
@ -26,26 +26,24 @@
<template #description> <template #description>
<!-- Render description --> <!-- Render description -->
<template v-if="description || link"> <template v-if="description || example || link">
<div class="d-flex"> <div class="d-flex">
<BLink v-if="link" :to="link" :href="link.href" class="ml-auto"> <span v-if="example">{{ $t('form_input_example', { example }) }}</span>
<b-link v-if="link" :to="link" class="ml-auto">
{{ link.text }} {{ link.text }}
</BLink> </b-link>
</div> </div>
<VueShowdown <div
v-if="description" v-if="description" v-html="description"
:markdown="description" :class="{ ['alert p-1 px-2 alert-' + descriptionVariant]: descriptionVariant }"
flavor="github"
:class="{
['alert p-1 px-2 alert-' + descriptionVariant]: descriptionVariant,
}"
/> />
</template> </template>
<!-- Slot available to overwrite the one above --> <!-- Slot available to overwrite the one above -->
<slot name="description" /> <slot name="description" />
</template> </template>
</BFormGroup> </b-form-group>
</template> </template>
<script> <script>
@ -59,28 +57,29 @@ export default {
id: { type: String, default: null }, id: { type: String, default: null },
description: { type: String, default: null }, description: { type: String, default: null },
descriptionVariant: { type: String, default: null }, descriptionVariant: { type: String, default: null },
example: { type: String, default: null },
link: { type: Object, default: null }, link: { type: Object, default: null },
// Rendered field component props // Rendered field component props
component: { type: String, default: 'InputItem' }, component: { type: String, default: 'InputItem' },
value: { type: null, default: null }, value: { type: null, default: null },
props: { type: Object, default: () => ({}) }, props: { type: Object, default: () => ({}) },
validation: { type: Object, default: null }, validation: { type: Object, default: null }
}, },
computed: { computed: {
_id() { _id () {
if (this.id) return this.id if (this.id) return this.id
const childId = this.props.id || this.$attrs['label-for'] const childId = this.props.id || this.$attrs['label-for']
return childId ? childId + '_group' : null return childId ? childId + '_group' : null
}, },
attrs() { attrs () {
const attrs = { ...this.$attrs } const attrs = { ...this.$attrs }
if ('label' in attrs) { if ('label' in attrs) {
const defaultAttrs = { const defaultAttrs = {
'label-cols-md': 4, 'label-cols-md': 4,
'label-cols-lg': 3, 'label-cols-lg': 2,
'label-class': ['font-weight-bold', 'py-0'], 'label-class': 'font-weight-bold'
} }
if (!('label-cols' in attrs)) { if (!('label-cols' in attrs)) {
for (const attr in defaultAttrs) { for (const attr in defaultAttrs) {
@ -93,7 +92,7 @@ export default {
return attrs return attrs
}, },
state() { state () {
// Need to set state as null if no error, else component turn green // Need to set state as null if no error, else component turn green
if (this.validation) { if (this.validation) {
return this.validation.$anyError === true ? false : null return this.validation.$anyError === true ? false : null
@ -101,18 +100,18 @@ export default {
return null return null
}, },
errorMessage() { errorMessage () {
const validation = this.validation const validation = this.validation
if (validation && validation.$anyError) { if (validation && validation.$anyError) {
const [type, errData] = this.findError(validation.$params, validation) const [type, errData] = this.findError(validation.$params, validation)
return this.$i18n.t('form_errors.' + type, errData) return this.$i18n.t('form_errors.' + type, errData)
} }
return '' return ''
}, }
}, },
methods: { methods: {
touch(name) { touch (name) {
if (this.validation) { if (this.validation) {
// For fields that have multiple elements // For fields that have multiple elements
if (name) { if (name) {
@ -123,7 +122,7 @@ export default {
} }
}, },
findError(params, obj, parent = obj) { findError (params, obj, parent = obj) {
for (const key in params) { for (const key in params) {
if (!obj[key]) { if (!obj[key]) {
return [key, obj.$params[key]] return [key, obj.$params[key]]
@ -132,8 +131,8 @@ export default {
return this.findError(obj[key].$params, obj[key], parent) return this.findError(obj[key].$params, obj[key], parent)
} }
} }
}, }
}, }
} }
</script> </script>

View file

@ -0,0 +1,30 @@
<template>
<span :class="'icon fa fa-' + iname" aria-hidden="true" />
</template>
<script>
export default {
name: 'Icon',
props: {
iname: { type: String, required: true }
}
}
</script>
<style lang="scss" scoped>
.icon {
font-size: inherit;
min-width: 1rem;
text-align: center;
&.lg {
width: 3rem;
font-size: 1.5rem;
min-width: 3rem;
}
&.fs-sm {
font-size: 1rem;
}
}
</style>

View file

@ -1,70 +0,0 @@
<template>
<BRow no-gutters class="description-row">
<BCol v-bind="cols_" class="font-weight-bold">
{{ label }}
</BCol>
<BCol>
<!-- FIXME not sure about rendering html -->
<div v-html="text" />
</BCol>
</BRow>
</template>
<script>
export default {
name: 'ReadOnlyField',
inheritAttrs: false,
props: {
label: { type: String, required: true },
component: { type: String, default: 'InputItem' },
value: { type: null, default: null },
cols: { type: Object, default: () => ({ md: 4, lg: 3 }) },
},
computed: {
cols_() {
return Object.assign({ md: 4, lg: 3 }, this.cols)
},
text() {
return this.parseValue(this.value)
},
},
methods: {
parseValue(value) {
const item = this.component
if (item === 'FileItem') value = value.file ? value.file.name : null
if (item === 'CheckboxItem') value = this.$i18n.t(value ? 'yes' : 'no')
if (item === 'TextAreaItem') value = value.replaceAll('\n', '<br>')
if (Array.isArray(value)) {
value = value.length
? value.join(this.$i18n.t('words.separator'))
: null
}
if ([null, undefined, ''].includes(this.value))
value = this.$i18n.t('words.none')
return value
},
},
}
</script>
<style lang="scss" scoped>
.description-row {
@include media-breakpoint-up(md) {
margin: 1rem 0;
}
@include media-breakpoint-down(sm) {
flex-direction: column;
&:not(:last-of-type) {
margin-bottom: 0.5rem;
padding-bottom: 0.5rem;
border-bottom: $border-width solid $card-border-color;
}
}
}
</style>

View file

@ -1,5 +1,5 @@
<template> <template>
<BButtonToolbar :aria-label="label" id="top-bar"> <b-button-toolbar :aria-label="label" id="top-bar">
<div id="top-bar-left" class="top-bar-group" v-if="hasLeftSlot"> <div id="top-bar-left" class="top-bar-group" v-if="hasLeftSlot">
<slot name="group-left" /> <slot name="group-left" />
</div> </div>
@ -7,11 +7,11 @@
<div id="top-bar-right" class="top-bar-group" v-if="hasRightSlot || button"> <div id="top-bar-right" class="top-bar-group" v-if="hasRightSlot || button">
<slot v-if="hasRightSlot" name="group-right" /> <slot v-if="hasRightSlot" name="group-right" />
<BButton v-else variant="success" :to="button.to"> <b-button v-else variant="success" :to="button.to">
<YIcon v-if="button.icon" :iname="button.icon" /> {{ button.text }} <icon v-if="button.icon" :iname="button.icon" /> {{ button.text }}
</BButton> </b-button>
</div> </div>
</BButtonToolbar> </b-button-toolbar>
</template> </template>
<script> <script>
@ -23,53 +23,52 @@ export default {
button: { button: {
type: Object, type: Object,
default: null, default: null,
validator(value) { validator (value) {
return ['text', 'to'].every((prop) => prop in value) return ['text', 'to'].every(prop => (prop in value))
}, }
},
},
data() {
return {
hasLeftSlot: null,
hasRightSlot: null,
} }
}, },
created() { data () {
return {
hasLeftSlot: null,
hasRightSlot: null
}
},
created () {
this.$nextTick(() => { this.$nextTick(() => {
this.hasLeftSlot = 'group-left' in this.$slots this.hasLeftSlot = 'group-left' in this.$slots
this.hasRightSlot = 'group-right' in this.$slots this.hasRightSlot = 'group-right' in this.$slots
}) })
}, }
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
#top-bar { #top-bar {
margin-bottom: 1rem; margin-bottom: 2rem;
flex-wrap: wrap-reverse; flex-wrap: wrap-reverse;
.top-bar-group { .top-bar-group {
display: flex; display: flex;
margin-bottom: 1rem;
} }
@include media-breakpoint-down(xs) { @include media-breakpoint-down(xs) {
.top-bar-group { .top-bar-group {
flex-direction: column-reverse; flex-direction: column-reverse;
} }
::v-deep .btn:not(:first-of-type) {
margin-bottom: .25rem;
}
} }
@include media-breakpoint-down(sm) { @include media-breakpoint-down(sm) {
flex-direction: column-reverse; flex-direction: column-reverse;
#top-bar-right { #top-bar-left ~ #top-bar-right {
margin-bottom: 0.75rem; margin-bottom: 1rem;
::v-deep > * {
margin-bottom: 0.25rem;
}
} }
.top-bar-group { .top-bar-group {
@ -89,10 +88,7 @@ export default {
} }
::v-deep .btn { ::v-deep .btn {
margin-left: 0.5rem; margin-left: .5rem;
&.dropdown-toggle-split {
margin-left: 0;
}
} }
} }
} }

View file

@ -1,21 +1,17 @@
<template> <template>
<div> <div>
<TopBar v-if="hasTopBar"> <top-bar v-if="hasTopBar">
<template #group-left> <slot name="top-bar-group-left" slot="group-left" />
<slot name="top-bar-group-left" /> <slot name="top-bar-group-right" slot="group-right" />
</template> </top-bar>
<template #group-right>
<slot name="top-bar-group-right" />
</template>
</TopBar>
<slot v-else name="top-bar" /> <slot v-else name="top-bar" />
<slot name="top" v-bind="{ loading: isLoading }" /> <slot name="top" v-bind="{ loading: isLoading }" />
<BSkeletonWrapper :loading="isLoading"> <b-skeleton-wrapper :loading="isLoading">
<template #loading> <template #loading>
<slot name="skeleton"> <slot name="skeleton">
<Component :is="skeleton" /> <component :is="skeleton" />
</slot> </slot>
</template> </template>
@ -23,7 +19,7 @@
<div> <div>
<slot name="default" v-bind="{ loading: isLoading }" /> <slot name="default" v-bind="{ loading: isLoading }" />
</div> </div>
</BSkeletonWrapper> </b-skeleton-wrapper>
<slot name="bot" v-bind="{ loading: isLoading }" /> <slot name="bot" v-bind="{ loading: isLoading }" />
</div> </div>
@ -40,46 +36,44 @@ export default {
queriesWait: { type: Boolean, default: false }, queriesWait: { type: Boolean, default: false },
skeleton: { type: [String, Array], default: null }, skeleton: { type: [String, Array], default: null },
// Optional prop to take control of the loading value // Optional prop to take control of the loading value
loading: { type: Boolean, default: null }, loading: { type: Boolean, default: null }
}, },
data() { data () {
return { return {
fallback_loading: fallback_loading: this.loading === null && this.fetch !== null ? true : null
this.loading === null && this.queries !== null ? true : null,
} }
}, },
computed: { computed: {
isLoading() { isLoading () {
if (this.loading !== null) return this.loading if (this.loading !== null) return this.loading
return this.fallback_loading return this.fallback_loading
}, },
hasTopBar() { hasTopBar () {
return ['top-bar-group-left', 'top-bar-group-right'].some( return ['top-bar-group-left', 'top-bar-group-right'].some(slotName => (slotName in this.$slots))
(slotName) => slotName in this.$slots, }
)
},
}, },
methods: { methods: {
fetchQueries({ triggerLoading = false } = {}) { fetchQueries (triggerLoading = false) {
if (triggerLoading) { if (triggerLoading) {
this.fallback_loading = true this.fallback_loading = true
} }
api api.fetchAll(
.fetchAll(this.queries, { wait: this.queriesWait, initial: true }) this.queries,
.then((responses) => { { wait: this.queriesWait, initial: true }
this.$emit('queries-response', ...responses) ).then(responses => {
this.fallback_loading = false this.$emit('queries-response', ...responses)
}) this.fallback_loading = false
}, })
}
}, },
created() { created () {
if (this.queries) this.fetchQueries() if (this.queries) this.fetchQueries()
}, }
} }
</script> </script>

View file

@ -1,58 +1,39 @@
<template> <template>
<ViewBase v-bind="$attrs" v-on="$listeners" :skeleton="skeleton"> <view-base v-bind="$attrs" v-on="$listeners" :skeleton="skeleton">
<template v-if="hasCustomTopBar" #top-bar> <slot v-if="hasCustomTopBar" name="top-bar" slot="top-bar" />
<slot name="top-bar" />
</template>
<template v-if="!hasCustomTopBar" #top-bar-group-left> <template v-if="!hasCustomTopBar" #top-bar-group-left>
<BInputGroup class="w-100"> <b-input-group class="w-100">
<BInputGroupPrepend is-text> <b-input-group-prepend is-text>
<YIcon iname="search" /> <icon iname="search" />
</BInputGroupPrepend> </b-input-group-prepend>
<BFormInput <b-form-input
id="top-bar-search" id="top-bar-search"
:value="search" :value="search" @input="$emit('update:search', $event)"
@input="$emit('update:search', $event)" :placeholder="$t('search.for', { items: $tc('items.' + itemsName, 2) })"
:placeholder="
$t('search.for', { items: $tc('items.' + itemsName, 2) })
"
:disabled="!items" :disabled="!items"
/> />
</BInputGroup> </b-input-group>
</template>
<template v-if="!hasCustomTopBar" #top-bar-group-right>
<slot name="top-bar-buttons" />
</template> </template>
<slot v-if="!hasCustomTopBar" name="top-bar-buttons" slot="top-bar-group-right" />
<template #top> <slot name="top" slot="top" />
<slot name="top" />
</template>
<template #default> <template #default>
<BAlert v-if="items === null || filteredItems === null" variant="warning"> <b-alert v-if="items === null || filteredItems === null" variant="warning">
<slot name="alert-message"> <slot name="alert-message">
<YIcon iname="exclamation-triangle" /> <icon iname="exclamation-triangle" />
{{ {{ $t(items === null ? 'items_verbose_count' : 'search.not_found', { items: $tc('items.' + itemsName, 0) }) }}
$tc(
items === null ? 'items_verbose_count' : 'search.not_found',
0,
{ items: $tc('items.' + itemsName, 0) },
)
}}
</slot> </slot>
</BAlert> </b-alert>
<slot v-else name="default" /> <slot v-else name="default" />
</template> </template>
<template #bot> <slot name="bot" slot="bot" />
<slot name="bot" />
</template>
<template #skeleton> <slot name="skeleton" slot="skeleton" />
<slot name="skeleton" /> </view-base>
</template>
</ViewBase>
</template> </template>
<script> <script>
@ -64,13 +45,13 @@ export default {
itemsName: { type: String, required: true }, itemsName: { type: String, required: true },
filteredItems: { type: null, required: true }, filteredItems: { type: null, required: true },
search: { type: String, default: null }, search: { type: String, default: null },
skeleton: { type: String, default: 'ListGroupSkeleton' }, skeleton: { type: String, default: 'list-group-skeleton' }
}, },
computed: { computed: {
hasCustomTopBar() { hasCustomTopBar () {
return 'top-bar' in this.$slots return 'top-bar' in this.$slots
}, }
}, }
} }
</script> </script>

View file

@ -1,36 +0,0 @@
<template>
<Component
v-bind="$attrs"
:is="alert ? 'BAlert' : 'div'"
:variant="alert ? variant : null"
:class="{ ['alert alert-' + variant]: !alert }"
class="yuno-alert d-flex flex-column flex-md-row align-items-center"
>
<YIcon :iname="_icon" class="mr-md-3 mb-md-0 mb-2 md" />
<div class="w-100">
<slot name="default" />
</div>
</Component>
</template>
<script>
import { DEFAULT_STATUS_ICON } from '@/helpers/yunohostArguments'
export default {
name: 'YAlert',
props: {
alert: { type: Boolean, default: false },
variant: { type: String, default: 'info' },
icon: { type: String, default: null },
},
computed: {
_icon() {
if (this.icon) return this.icon
return DEFAULT_STATUS_ICON[this.variant]
},
},
}
</script>

View file

@ -1,36 +0,0 @@
<template>
<BBreadcrumb v-if="breadcrumb.length">
<BBreadcrumbItem to="/">
<span class="sr-only">{{ $t('home') }}</span>
<YIcon iname="home" />
</BBreadcrumbItem>
<BBreadcrumbItem
v-for="({ name, text }, i) in breadcrumb"
:key="name"
:to="{ name }"
:active="i === breadcrumb.length - 1"
>
{{ text }}
</BBreadcrumbItem>
</BBreadcrumb>
</template>
<script>
import { mapGetters } from 'vuex'
export default {
name: 'YBreadcrumb',
computed: {
...mapGetters(['breadcrumb']),
},
}
</script>
<style lang="scss" scoped>
.breadcrumb {
border: none;
background-color: transparent;
}
</style>

View file

@ -1,112 +0,0 @@
<template>
<BCard v-bind="$attrs" :no-body="collapsable ? true : $attrs['no-body']">
<template #header>
<div class="w-100 d-flex align-items-center flex-wrap custom-header">
<slot name="header">
<Component :is="titleTag" class="custom-header-title">
<YIcon v-if="icon" :iname="icon" class="mr-2" />{{ title }}
</Component>
<slot name="header-next" />
</slot>
<div
v-if="hasButtons"
class="mt-2 w-100 custom-header-buttons"
:class="{
[`ml-${buttonUnbreak}-auto mt-${buttonUnbreak}-0 w-${buttonUnbreak}-auto`]:
buttonUnbreak,
}"
>
<slot name="header-buttons" />
</div>
</div>
<BButton
v-if="collapsable"
@click="visible = !visible"
size="sm"
variant="outline-secondary"
class="align-self-center ml-auto"
:class="{
'not-collapsed': visible,
collapsed: !visible,
[`ml-${buttonUnbreak}-2`]: buttonUnbreak,
}"
>
<YIcon iname="chevron-right" />
<span class="sr-only">{{ $t('words.collapse') }}</span>
</BButton>
</template>
<BCollapse v-if="collapsable" :visible="visible">
<slot v-if="'no-body' in $attrs" name="default" />
<BCardBody v-else>
<slot name="default" />
</BCardBody>
</BCollapse>
<template v-else>
<slot name="default" />
</template>
<template #footer v-if="'buttons' in $slots">
<slot name="buttons" />
</template>
</BCard>
</template>
<script>
export default {
name: 'YCard',
props: {
id: { type: String, default: 'ynh-form' },
title: { type: String, default: null },
titleTag: { type: String, default: 'h2' },
icon: { type: String, default: null },
collapsable: { type: Boolean, default: false },
collapsed: { type: Boolean, default: false },
buttonUnbreak: { type: String, default: 'md' },
},
data() {
return {
visible: !this.collapsed,
}
},
computed: {
hasButtons() {
return 'header-buttons' in this.$slots
},
},
}
</script>
<style lang="scss" scoped>
.card-header {
display: flex;
.custom-header {
& > :first-child {
margin-right: 1rem;
}
.btn + .btn {
margin-left: 0.5rem;
}
}
}
.card-footer {
display: flex;
justify-content: flex-end;
align-items: center;
& > *:not(:first-child) {
margin-left: 0.5rem;
}
}
.collapse:not(.show) + .card-footer {
display: none;
}
</style>

View file

@ -1,56 +0,0 @@
<template>
<span
:class="['icon fa fa-' + iname, variant ? 'variant ' + variant : '']"
aria-hidden="true"
/>
</template>
<script>
export default {
name: 'YIcon',
props: {
iname: { type: String, required: true },
variant: { type: String, default: null },
},
}
</script>
<style lang="scss" scoped>
.icon {
font-size: inherit;
min-width: 1rem;
text-align: center;
&.lg {
width: 3rem;
font-size: 1.5rem;
min-width: 3rem;
}
&.md {
width: 1.25rem;
font-size: 1.25rem;
min-width: 1.25rem;
}
&.fs-sm {
font-size: 1rem;
}
&.variant {
font-size: 0.8rem;
width: 1.35rem;
min-width: 1.35rem;
height: 1.35rem;
line-height: 165%;
border-radius: 50rem;
@each $color, $value in $theme-colors {
&.#{$color} {
background-color: $value;
color: color-yiq($value);
}
}
}
}
</style>

View file

@ -1,108 +0,0 @@
<template>
<BListGroupItem class="yuno-list-group-item" :class="_class" v-bind="$attrs">
<div v-if="!noStatus" class="yuno-list-group-item-status">
<YIcon v-if="_icon" :iname="_icon" :class="['icon-' + variant]" />
</div>
<div class="yuno-list-group-item-content">
<slot name="default" />
</div>
</BListGroupItem>
</template>
<script>
import { DEFAULT_STATUS_ICON } from '@/helpers/yunohostArguments'
export default {
name: 'YListGroupItem',
props: {
variant: { type: String, default: 'white' },
icon: { type: String, default: null },
noIcon: { type: Boolean, default: false },
noStatus: { type: Boolean, default: false },
size: { type: String, default: 'md' },
faded: { type: Boolean, default: false },
},
computed: {
_icon() {
return this.noIcon ? null : this.icon || DEFAULT_STATUS_ICON[this.variant]
},
_class() {
const baseClass = 'yuno-list-group-item-'
return [
baseClass + this.size,
baseClass + this.variant,
{ [baseClass + 'faded']: this.faded },
]
},
},
}
</script>
<style lang="scss" scoped>
.yuno-list-group-item {
display: flex;
padding: 0;
&-status {
width: 2rem;
display: flex;
align-items: center;
justify-content: center;
}
&-content {
width: 100%;
padding: $list-group-item-padding-y $list-group-item-padding-x;
}
@each $color, $value in $theme-colors {
&-#{$color} {
color: theme-color-level($color, 6);
[dark-theme='true'] & {
color: theme-color-level($color, -6);
}
.yuno-list-group-item-status {
background-color: $value;
color: color-yiq($value);
}
}
}
&-sm,
&-xs {
font-size: $font-size-sm;
.yuno-list-group-item-status {
width: 1.25rem;
}
.yuno-list-group-item-content {
padding: $tooltip-padding-y $tooltip-padding-x;
}
}
&-xs {
.yuno-list-group-item-status {
width: 0.4rem;
.icon {
display: none;
}
}
.yuno-list-group-item-content {
color: $black;
}
}
&-faded > * {
opacity: 0.5;
}
}
</style>

View file

@ -1,134 +0,0 @@
<template>
<div :class="['custom-spinner', spinner]" />
</template>
<script>
import { mapGetters } from 'vuex'
export default {
name: 'YSpinner',
computed: {
...mapGetters(['spinner']),
},
}
</script>
<style lang="scss" scoped>
.custom-spinner {
animation: 8s linear infinite;
background-repeat: no-repeat;
&.pacman {
height: 24px;
width: 24px;
background-image: url('../../assets/spinners/pacman_dark.gif');
animation-name: back-and-forth-pacman;
[dark-theme='true'] & {
background-image: url('../../assets/spinners/pacman_light.gif');
}
@keyframes back-and-forth-pacman {
0%,
100% {
transform: scale(1);
margin-left: 0;
}
49% {
transform: scale(1);
margin-left: calc(100% - 24px);
}
50% {
transform: scale(-1);
margin-left: calc(100% - 24px);
}
99% {
transform: scale(-1);
margin-left: 0;
}
}
}
&.magikarp {
height: 32px;
width: 32px;
background-image: url('../../assets/spinners/magikarp.gif');
animation-name: back-and-forth-magikarp;
@keyframes back-and-forth-magikarp {
0%,
100% {
transform: scale(1, 1);
margin-left: 0;
}
49% {
transform: scale(1, 1);
margin-left: calc(100% - 32px);
}
50% {
transform: scale(-1, 1);
margin-left: calc(100% - 32px);
}
99% {
transform: scale(-1, 1);
margin-left: 0;
}
}
}
&.nyancat {
height: 40px;
width: 100px;
background-image: url('../../assets/spinners/nyancat.gif');
animation-name: back-and-forth-nyancat;
@keyframes back-and-forth-nyancat {
0%,
100% {
transform: scale(1, 1);
margin-left: 0;
}
49% {
transform: scale(1, 1);
margin-left: calc(100% - 100px);
}
50% {
transform: scale(-1, 1);
margin-left: calc(100% - 100px);
}
99% {
transform: scale(-1, 1);
margin-left: 0;
}
}
}
&.spookycat {
height: 40px;
width: 65px;
background-image: url('../../assets/spinners/spookycat.gif');
animation-name: back-and-forth-spookycat;
@keyframes back-and-forth-spookycat {
0%,
100% {
transform: scale(1, 1);
margin-left: 0;
}
49% {
transform: scale(1, 1);
margin-left: calc(100% - 100px);
}
50% {
transform: scale(-1, 1);
margin-left: calc(100% - 100px);
}
99% {
transform: scale(-1, 1);
margin-left: 0;
}
}
}
}
</style>

View file

@ -1,39 +0,0 @@
<template>
<BButton
:id="id"
:variant="type"
@click="$emit('action', $event)"
:disabled="!enabled"
class="d-block mb-3"
>
<YIcon :iname="icon_" class="mr-2" />
<span v-html="label" />
</BButton>
</template>
<script>
export default {
name: 'ButtonItem',
props: {
label: { type: String, default: null },
id: { type: String, default: null },
type: { type: String, default: 'success' },
icon: { type: String, default: null },
enabled: { type: [Boolean, String], default: true },
},
computed: {
icon_() {
const icons = {
success: 'thumbs-up',
info: 'info',
warning: 'exclamation',
danger: 'times',
}
return this.icon || icons[this.type]
},
},
}
</script>

View file

@ -1,5 +1,5 @@
<template> <template>
<BFormCheckbox <b-checkbox
v-model="checked" v-model="checked"
v-on="$listeners" v-on="$listeners"
:id="id" :id="id"
@ -7,7 +7,7 @@
switch switch
> >
{{ label || $t(labels[checked]) }} {{ label || $t(labels[checked]) }}
</BFormCheckbox> </b-checkbox>
</template> </template>
<script> <script>
@ -18,13 +18,13 @@ export default {
value: { type: Boolean, required: true }, value: { type: Boolean, required: true },
id: { type: String, default: null }, id: { type: String, default: null },
label: { type: String, default: null }, label: { type: String, default: null },
labels: { type: Object, default: () => ({ true: 'yes', false: 'no' }) }, labels: { type: Object, default: () => ({ true: 'yes', false: 'no' }) }
}, },
data() { data () {
return { return {
checked: this.value, checked: this.value
} }
}, }
} }
</script> </script>

View file

@ -1,16 +0,0 @@
<template>
<div>
<p v-text="label" />
</div>
</template>
<script>
export default {
name: 'DisplayTextItem',
props: {
id: { type: String, default: null },
label: { type: String, default: null },
},
}
</script>

View file

@ -1,90 +0,0 @@
<template>
<BButtonGroup class="w-100">
<BButton
v-if="!this.required && this.value.file !== null"
@click="clearFiles"
variant="danger"
>
<span class="sr-only">{{ $t('delete') }}</span>
<YIcon iname="trash" />
</BButton>
<BFormFile
:value="value.file"
ref="input-file"
:id="id"
:required="required"
:placeholder="_placeholder"
:accept="accept"
:drop-placeholder="dropPlaceholder"
:state="state"
:browse-text="$t('words.browse')"
@input="onInput"
@blur="$parent.$emit('touch', name)"
@focusout.native="$parent.$emit('touch', name)"
/>
</BButtonGroup>
</template>
<script>
import { getFileContent } from '@/helpers/commons'
export default {
name: 'FileItem',
props: {
id: { type: String, default: null },
value: { type: Object, default: () => ({ file: null }) },
placeholder: { type: String, default: 'Choose a file or drop it here...' },
dropPlaceholder: { type: String, default: null },
accept: { type: String, default: null },
state: { type: Boolean, default: null },
required: { type: Boolean, default: false },
name: { type: String, default: null },
},
computed: {
_placeholder: function () {
return this.value.file === null ? this.placeholder : this.value.file.name
},
},
methods: {
onInput(file) {
const value = {
file,
content: '',
current: false,
removed: false,
}
// Update the value with the new File and an empty content for now
this.$emit('input', value)
// Asynchronously load the File content and update the value again
getFileContent(file).then((content) => {
this.$emit('input', { ...value, content })
})
},
clearFiles() {
this.$refs['input-file'].reset()
this.$emit('input', {
file: null,
content: '',
current: false,
removed: true,
})
},
},
}
</script>
<style lang="scss" scoped>
::v-deep .custom-file-label {
color: $input-placeholder-color;
.btn-danger + .b-form-file & {
color: $input-color;
}
}
</style>

View file

@ -1,17 +1,12 @@
<template> <template>
<BFormInput <b-input
:value="value" :value="value"
:id="id" :id="id"
v-on="$listeners"
:placeholder="placeholder" :placeholder="placeholder"
:type="type" :type="type"
:state="state" :state="state"
:required="required" :required="required"
:min="min"
:max="max"
:step="step"
:trim="trim"
:autocomplete="autocomplete_"
v-on="$listeners"
@blur="$parent.$emit('touch', name)" @blur="$parent.$emit('touch', name)"
/> />
</template> </template>
@ -27,23 +22,7 @@ export default {
type: { type: String, default: 'text' }, type: { type: String, default: 'text' },
required: { type: Boolean, default: false }, required: { type: Boolean, default: false },
state: { type: Boolean, default: null }, state: { type: Boolean, default: null },
min: { type: Number, default: null }, name: { type: String, default: null }
max: { type: Number, default: null }, }
step: { type: Number, default: null },
trim: { type: Boolean, default: true },
autocomplete: { type: String, default: null },
pattern: { type: Object, default: null },
name: { type: String, default: null },
},
data() {
return {
autocomplete_: this.autocomplete
? this.autocomplete
: this.type === 'password'
? 'new-password'
: null,
}
},
} }
</script> </script>

View file

@ -1,14 +0,0 @@
<template>
<VueShowdown :markdown="label" flavor="github" />
</template>
<script>
export default {
name: 'MarkdownItem',
props: {
id: { type: String, default: null },
label: { type: String, default: null },
},
}
</script>

View file

@ -1,41 +0,0 @@
<template>
<BAlert
class="d-flex flex-column flex-md-row align-items-center"
:variant="type"
show
>
<YIcon :iname="icon_" class="mr-md-3 mb-md-0 mb-2" :variant="type" />
<VueShowdown
:markdown="label"
flavor="github"
tag="span"
class="markdown"
/>
</BAlert>
</template>
<script>
export default {
name: 'ReadOnlyAlertItem',
props: {
id: { type: String, default: null },
label: { type: String, default: null },
type: { type: String, default: null },
icon: { type: String, default: null },
},
computed: {
icon_() {
const icons = {
success: 'thumbs-up',
info: 'info',
warning: 'exclamation',
danger: 'times',
}
return this.icon || icons[this.type]
},
},
}
</script>

View file

@ -1,5 +1,5 @@
<template> <template>
<BFormSelect <b-select
:value="value" :value="value"
:id="id" :id="id"
:options="choices" :options="choices"
@ -18,7 +18,7 @@ export default {
id: { type: String, default: null }, id: { type: String, default: null },
choices: { type: [Array, Object], required: true }, choices: { type: [Array, Object], required: true },
required: { type: Boolean, default: false }, required: { type: Boolean, default: false },
name: { type: String, default: null }, name: { type: String, default: null }
}, }
} }
</script> </script>

View file

@ -1,37 +0,0 @@
<template>
<BFormTags
v-model="tags"
:id="id"
:placeholder="placeholder"
:required="required"
separator=" ,;"
:limit="limit"
remove-on-delete
:state="state"
:options="options"
v-on="$listeners"
@blur="$parent.$emit('touch', name)"
/>
</template>
<script>
export default {
name: 'TagsItem',
data() {
return {
tags: this.value,
}
},
props: {
value: { type: Array, default: null },
id: { type: String, default: null },
placeholder: { type: String, default: null },
limit: { type: Number, default: null },
required: { type: Boolean, default: false },
state: { type: Boolean, default: null },
name: { type: String, default: null },
options: { type: Array, default: null },
},
}
</script>

View file

@ -1,191 +0,0 @@
<template>
<div class="tags-selectize">
<BFormTags
v-bind="$attrs"
v-on="$listeners"
:value="value"
:id="id"
size="lg"
class="p-0 border-0"
no-outer-focus
>
<template #default="{ 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"
>
<BFormTag
@remove="onRemoveTag({ option: tag, removeTag })"
:title="tag"
:disabled="disabled || disabledItems.includes(tag)"
class="border border-dark mb-2"
>
<YIcon v-if="tagIcon" :iname="tagIcon" /> {{ tag }}
</BFormTag>
</li>
</ul>
<BDropdown
ref="dropdown"
variant="outline-dark"
block
menu-class="w-100"
@keydown.native="onDropdownKeydown"
>
<template #button-content>
<YIcon iname="search-plus" /> {{ label }}
</template>
<BDropdownGroup class="search-group">
<BDropdownForm @submit.stop.prevent="() => {}">
<BFormGroup
:label="$t('search.for', { items: itemsName })"
label-cols-md="auto"
label-size="sm"
:label-for="id + '-search-input'"
:invalid-feedback="
$tc('search.not_found', 0, {
items: $tc('items.' + itemsName, 0),
})
"
:state="searchState"
:disabled="disabled"
class="mb-0"
>
<BFormInput
ref="search-input"
v-model="search"
:id="id + '-search-input'"
type="search"
size="sm"
autocomplete="off"
/>
</BFormGroup>
</BDropdownForm>
<BDropdownDivider />
</BDropdownGroup>
<BDropdownItemButton
v-for="option in availableOptions"
:key="option"
@click="onAddTag({ option, addTag })"
>
{{ option }}
</BDropdownItemButton>
<BDropdownText v-if="!criteria && availableOptions.length === 0">
<YIcon iname="exclamation-triangle" />
{{
$tc('items_verbose_items_left', 0, {
items: $tc('items.' + itemsName, 0),
})
}}
</BDropdownText>
</BDropdown>
</template>
</BFormTags>
</div>
</template>
<script>
export default {
name: 'TagsSelectizeItem',
inheritAttrs: false,
props: {
value: { type: Array, required: true },
options: { type: Array, required: true },
id: { type: String, required: true },
placeholder: { type: String, default: null },
limit: { type: Number, default: null },
name: { type: String, default: null },
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: 0.5rem;
position: sticky;
top: 0;
background-color: $white;
}
}
</style>

View file

@ -1,28 +0,0 @@
<template>
<BFormTextarea
:value="value"
:id="id"
:placeholder="placeholder"
:required="required"
:state="state"
rows="4"
v-on="$listeners"
@blur="$parent.$emit('touch', name)"
/>
</template>
<script>
export default {
name: 'TextAreaItem',
props: {
value: { type: String, default: null },
id: { type: String, default: null },
placeholder: { type: String, default: null },
type: { type: String, default: 'text' },
required: { type: Boolean, default: false },
state: { type: Boolean, default: null },
name: { type: String, default: null },
},
}
</script>

View file

@ -1,20 +1,20 @@
<template> <template>
<BCard> <b-card>
<template #header> <template #header>
<BSkeleton width="30%" height="36px" class="m-0" /> <b-skeleton width="30%" height="36px" class="m-0" />
</template> </template>
<div v-for="count in itemCount" :key="count"> <div v-for="count in itemCount" :key="count">
<template v-if="randint(0, 1)"> <template v-if="randint(0, 1)">
<BSkeleton width="100%" height="24px" /> <b-skeleton width="100%" height="24px" />
<BSkeleton :width="randint(15, 60) + '%'" height="24px" /> <b-skeleton :width="randint(15, 60) + '%'" height="24px" />
</template> </template>
<BSkeleton v-else :width="randint(45, 100) + '%'" height="24px" /> <b-skeleton v-else :width="randint(45, 100) + '%'" height="24px" />
<BSkeleton :width="randint(20, 30) + '%'" height="38px" class="mt-3" /> <b-skeleton :width="randint(20, 30) + '%'" height="38px" class="mt-3" />
<hr /> <hr>
</div> </div>
</BCard> </b-card>
</template> </template>
<script> <script>
@ -24,9 +24,9 @@ export default {
name: 'CardButtonsSkeleton', name: 'CardButtonsSkeleton',
props: { props: {
itemCount: { type: Number, default: 5 }, itemCount: { type: Number, default: 5 }
}, },
methods: { randint }, methods: { randint }
} }
</script> </script>

View file

@ -1,46 +1,39 @@
<template> <template>
<BCard> <b-card>
<template #header> <template #header>
<BSkeleton width="30%" height="36px" class="m-0" /> <b-skeleton width="30%" height="36px" class="m-0" />
</template> </template>
<template v-for="count in itemCount"> <template v-for="count in itemCount">
<BRow :key="count" :class="{ 'd-block': cols === null }"> <b-row :key="count" :class="{ 'd-block': cols === null }">
<BCol v-bind="cols"> <b-col v-bind="cols">
<div style="height: 38px" class="d-flex align-items-center"> <div style="height: 38px" class="d-flex align-items-center">
<BSkeleton <b-skeleton class="m-0" :width="randint(45, 100) + '%'" height="24px" />
class="m-0"
:width="randint(45, 100) + '%'"
height="24px"
/>
</div> </div>
</BCol> </b-col>
<BCol> <b-col>
<div <div class="w100 d-flex justify-content-between" v-if="count % 2 === 0">
class="w100 d-flex justify-content-between" <b-skeleton width="100%" height="38px" />
v-if="count % 2 === 0"
>
<BSkeleton width="100%" height="38px" />
<BSkeleton width="38px" height="38px" class="ml-2" /> <b-skeleton width="38px" height="38px" class="ml-2" />
</div> </div>
<BSkeleton v-else width="100%" height="38px" /> <b-skeleton v-else width="100%" height="38px" />
<BSkeleton :width="randint(15, 35) + '%'" height="19px" /> <b-skeleton :width="randint(15, 35) + '%'" height="19px" />
</BCol> </b-col>
</BRow> </b-row>
<hr :key="count + '-hr'" /> <hr :key="count + '-hr'">
</template> </template>
<template #footer> <template #footer>
<div class="d-flex justify-content-end w-100"> <div class="d-flex justify-content-end w-100">
<BSkeleton width="100px" height="38px" /> <b-skeleton width="100px" height="38px" />
</div> </div>
</template> </template>
</BCard> </b-card>
</template> </template>
<script> <script>
@ -51,14 +44,9 @@ export default {
props: { props: {
itemCount: { type: Number, default: 5 }, itemCount: { type: Number, default: 5 },
cols: { cols: { type: [Object, null], default () { return { md: 4, lg: 2 } } }
type: [Object, null],
default() {
return { md: 4, lg: 2 }
},
},
}, },
methods: { randint }, methods: { randint }
} }
</script> </script>

View file

@ -1,18 +1,18 @@
<template> <template>
<BCard> <b-card>
<template #header> <template #header>
<BSkeleton width="30%" height="36px" class="m-0" /> <b-skeleton width="30%" height="36px" class="m-0" />
</template> </template>
<BRow v-for="i in itemCount" :key="i" no-gutters> <b-row v-for="i in itemCount" :key="i" no-gutters>
<BCol cols="5" md="3" xl="3"> <b-col cols="5" md="3" xl="3">
<BSkeleton :width="randint(45, 95) + '%'" height="19px" /> <b-skeleton :width="randint(45, 95) + '%'" height="19px" />
</BCol> </b-col>
<BCol> <b-col>
<BSkeleton :width="randint(10, 60) + '%'" height="19px" /> <b-skeleton :width="randint(10, 60) + '%'" height="19px" />
</BCol> </b-col>
</BRow> </b-row>
</BCard> </b-card>
</template> </template>
<script> <script>
@ -22,9 +22,9 @@ export default {
name: 'CardInfoSkeleton', name: 'CardInfoSkeleton',
props: { props: {
itemCount: { type: Number, default: 5 }, itemCount: { type: Number, default: 5 }
}, },
methods: { randint }, methods: { randint }
} }
</script> </script>

View file

@ -1,22 +1,18 @@
<template> <template>
<BCard no-body> <b-card no-body>
<template #header> <template #header>
<BSkeleton width="30%" height="36px" class="m-0" /> <b-skeleton width="30%" height="36px" class="m-0" />
</template> </template>
<BListGroup flush> <b-list-group flush>
<BListGroupItem v-for="count in itemCount" :key="count" class="d-flex"> <b-list-group-item v-for="count in itemCount" :key="count" class="d-flex">
<div style="width: 20%"> <div style="width: 20%;">
<BSkeleton <b-skeleton :width="randint(50, 100) + '%'" height="24px" class="mr-3" />
:width="randint(50, 100) + '%'"
height="24px"
class="mr-3"
/>
</div> </div>
<BSkeleton :width="randint(30, 80) + '%'" height="24px" class="m-0" /> <b-skeleton :width="randint(30, 80) + '%'" height="24px" class="m-0" />
</BListGroupItem> </b-list-group-item>
</BListGroup> </b-list-group>
</BCard> </b-card>
</template> </template>
<script> <script>
@ -26,9 +22,9 @@ export default {
name: 'CardListSkeleton', name: 'CardListSkeleton',
props: { props: {
itemCount: { type: Number, default: 5 }, itemCount: { type: Number, default: 5 }
}, },
methods: { randint }, methods: { randint }
} }
</script> </script>

View file

@ -1,10 +1,10 @@
<template> <template>
<BListGroup> <b-list-group>
<BListGroupItem v-for="count in itemCount" :key="count"> <b-list-group-item v-for="count in itemCount" :key="count">
<BSkeleton :width="randint(15, 25) + '%'" height="24px" class="mb-2" /> <b-skeleton :width="randint(15, 25) + '%'" height="24px" class="mb-2" />
<BSkeleton :width="randint(25, 50) + '%'" height="24px" class="m-0" /> <b-skeleton :width="randint(25, 50) + '%'" height="24px" class="m-0" />
</BListGroupItem> </b-list-group-item>
</BListGroup> </b-list-group>
</template> </template>
<script> <script>
@ -14,9 +14,9 @@ export default {
name: 'ListGroupSkeleton', name: 'ListGroupSkeleton',
props: { props: {
itemCount: { type: Number, default: 5 }, itemCount: { type: Number, default: 5 }
}, },
methods: { randint }, methods: { randint }
} }
</script> </script>

View file

@ -7,7 +7,7 @@
* @param {Number} delay - delay after which the promise is rejected * @param {Number} delay - delay after which the promise is rejected
* @return {Promise} * @return {Promise}
*/ */
export function timeout(promise, delay) { export function timeout (promise, delay) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
// FIXME reject(new Error('api_not_responding')) for post-install // FIXME reject(new Error('api_not_responding')) for post-install
setTimeout(() => reject, delay) setTimeout(() => reject, delay)
@ -15,20 +15,18 @@ export function timeout(promise, delay) {
}) })
} }
/** /**
* Check if passed value is an object literal. * Check if passed value is an object literal.
* *
* @param {*} value - Anything. * @param {*} value - Anything.
* @return {Boolean} * @return {Boolean}
*/ */
export function isObjectLiteral(value) { export function isObjectLiteral (value) {
return ( return value !== null && value !== undefined && Object.is(value.constructor, Object)
value !== null &&
value !== undefined &&
Object.is(value.constructor, Object)
)
} }
/** /**
* Check if value is "empty" (`null`, `undefined`, `''`, `[]`, '{}'). * Check if value is "empty" (`null`, `undefined`, `''`, `[]`, '{}').
* Note: `0` is not considered "empty" in that helper. * Note: `0` is not considered "empty" in that helper.
@ -36,11 +34,12 @@ export function isObjectLiteral(value) {
* @param {*} value - Anything. * @param {*} value - Anything.
* @return {Boolean} * @return {Boolean}
*/ */
export function isEmptyValue(value) { export function isEmptyValue (value) {
if (typeof value === 'number') return false if (typeof value === 'number') return false
return !value || value.length === 0 || Object.keys(value).length === 0 return !value || value.length === 0 || Object.keys(value).length === 0
} }
/** /**
* Returns an flattened object literal, with all keys at first level and removing nested ones. * Returns an flattened object literal, with all keys at first level and removing nested ones.
* *
@ -48,8 +47,8 @@ export function isEmptyValue(value) {
* @param {Object} [flattened={}] - An object literal to add passed obj keys/values. * @param {Object} [flattened={}] - An object literal to add passed obj keys/values.
* @return {Object} * @return {Object}
*/ */
export function flattenObjectLiteral(obj, flattened = {}) { export function flattenObjectLiteral (obj, flattened = {}) {
function flatten(objLit) { function flatten (objLit) {
for (const key in objLit) { for (const key in objLit) {
const value = objLit[key] const value = objLit[key]
if (isObjectLiteral(value)) { if (isObjectLiteral(value)) {
@ -63,19 +62,6 @@ export function flattenObjectLiteral(obj, flattened = {}) {
return flattened return flattened
} }
/**
* Returns an new Object filtered with passed filter function.
* Each entry `[key, value]` will be forwarded to the `filter` function.
*
* @param {Object} obj - object to filter.
* @param {Function} filter - the filter function to call for each entry.
* @return {Object}
*/
export function filterObject(obj, filter) {
return Object.fromEntries(
Object.entries(obj).filter((...args) => filter(...args)),
)
}
/** /**
* Returns an new array containing items that are in first array but not in the other. * Returns an new array containing items that are in first array but not in the other.
@ -84,17 +70,18 @@ export function filterObject(obj, filter) {
* @param {Array} [arr2=[]] * @param {Array} [arr2=[]]
* @return {Array} * @return {Array}
*/ */
export function arrayDiff(arr1 = [], arr2 = []) { export function arrayDiff (arr1 = [], arr2 = []) {
return arr1.filter((item) => !arr2.includes(item)) return arr1.filter(item => !arr2.includes(item))
} }
/** /**
* Returns a new string with escaped HTML (`&<>"'` replaced by entities). * Returns a new string with escaped HTML (`&<>"'` replaced by entities).
* *
* @param {String} unsafe * @param {String} unsafe
* @return {String} * @return {String}
*/ */
export function escapeHtml(unsafe) { export function escapeHtml (unsafe) {
return unsafe return unsafe
.replace(/&/g, '&amp;') .replace(/&/g, '&amp;')
.replace(/</g, '&lt;') .replace(/</g, '&lt;')
@ -110,28 +97,6 @@ export function escapeHtml(unsafe) {
* @param {Number} max * @param {Number} max
* @return {Number} * @return {Number}
*/ */
export function randint(min, max) { export function randint (min, max) {
return Math.floor(Math.random() * (max - min + 1)) + min return Math.floor(Math.random() * (max - min + 1)) + min
} }
/**
* Returns a File content.
*
* @param {File} file
* @param {Object} [extraParams] - Optionnal params
* @param {Boolean} [extraParams.base64] - returns a base64 representation of the file.
* @return {Promise<String>}
*/
export function getFileContent(file, { base64 = false } = {}) {
return new Promise((resolve, reject) => {
const reader = new FileReader()
reader.onerror = reject
reader.onload = () => resolve(reader.result)
if (base64) {
reader.readAsDataURL(file)
} else {
reader.readAsText(file)
}
})
}

View file

@ -1,209 +0,0 @@
/**
* A Node that can have a parent and children.
*/
export class Node {
constructor(data) {
this.data = data
this.depth = 0
this.height = 0
this.parent = null
// this.id = null
// this.children = null
}
/**
* Invokes the specified `callback` for this node and each descendant in pre-order
* traversal, such that a given node is only visited after all of its ancestors
* have already been visited.
* The specified function is passed the current descendant, the zero-based traversal
* index, and this node.
* Code taken and adapted from d3.js https://github.com/d3/d3-hierarchy/blob/main/src/hierarchy/eachBefore.js.
*
* @param {function} callback
* @return {Object}
*/
eachBefore(callback) {
const nodes = []
let index = -1
let node = this
while (node) {
callback(node, ++index, this)
if (node.children) {
nodes.push(...node.children)
}
node = nodes.pop()
}
return this
}
/**
* Invokes the specified `callback` for this node and each descendant in post-order
* traversal, such that a given node s only visited after all of its descendants
* have already been visited
* The specified function is passed the current descendant, the zero-based traversal
* index, and this node.
* Code taken and adapted from d3.js https://github.com/d3/d3-hierarchy/blob/main/src/hierarchy/eachAfter.js.
*
* @param {function} callback
* @return {Object}
*/
eachAfter(callback) {
const nodes = []
const next = []
let node = this
while (node) {
next.push(node)
if (node.children) {
nodes.push(...node.children)
}
node = nodes.pop()
}
let index = 0
for (let i = next.length - 1; i >= 0; i--) {
callback(next[i], index++, this)
}
return this
}
/**
* Returns a deep copied and filtered tree of itself.
* Specified filter function is passed each nodes in post-order traversal and must
* return `true` or `false` like a regular filter function.
*
* @param {Function} callback - filter callback function to invoke on each nodes
* @param {Object} args
* @param {String} [args.idKey='name'] - the key name where we can find the node identity.
* @param {String} [args.parentIdKey='name'] - the key name where we can find the parent identity.
* @return {Node}
*/
filter(callback) {
// Duplicates this tree and iter on nodes from leaves to root (post-order traversal)
return hierarchy(this).eachAfter((node, i) => {
// Since we create a new hierarchy from another, nodes's `data` contains the
// whole dupplicated node. Overwrite node's `data` by node's original `data`.
node.data = node.data.data
if (node.children) {
// Removed flagged children
node.children = node.children.filter((child) => !child.remove)
if (!node.children.length) delete node.children
}
// Perform filter callback on non-root nodes
const match = node.data ? callback(node, i, this) : true
// Flag node if there's no match in node nor in its children
if (!match && !node.children) {
node.remove = true
}
})
}
}
/**
* Generates a new hierarchy from the specified tabular `dataset`.
* The specified `dataset` must be an array of objects that contains at least a
* `name` property and an optional `parent` property referencing its parent `name`.
* Code taken and adapted from d3.js https://github.com/d3/d3-hierarchy/blob/main/src/stratify.js#L16.
*
* @param {Array} dataset
* @param {Object} args
* @param {String} [args.idKey='name'] - the key name where we can find the node identity.
* @param {String} [args.parentIdKey='name'] - the key name where we can find the parent identity.
* @return {Node}
*/
export function stratify(
dataset,
{ idKey = 'name', parentIdKey = 'parent' } = {},
) {
const root = new Node(null, true)
root.children = []
const nodesMap = new Map()
// Creates all nodes that will be arranged in a hierarchy
const nodes = dataset.map((d) => {
const node = new Node(d)
node.id = d[idKey]
nodesMap.set(node.id, node)
if (d[parentIdKey]) {
node.parent = d[parentIdKey]
}
return node
})
// Build a hierarchy from nodes
nodes.forEach((node, i) => {
const parentId = node.parent
if (parentId) {
const parent = nodesMap.get(parentId)
if (!parent) throw new Error('Missing parent node: ' + parentId)
if (parent.children) parent.children.push(node)
else parent.children = [node]
node.parent = parent
} else {
node.parent = root
root.children.push(node)
}
})
root.eachBefore((node) => {
// Compute node depth
if (node.parent) {
node.depth = node.parent.depth + 1
// Remove parent key if parent is root (node with no data)
if (!node.parent.data) delete node.parent
}
computeNodeHeight(node)
})
return root
}
/**
* Constructs a root node from the specified hierarchical `data`.
* The specified `data` must be an object representing the root node and its children.
* If given a `Node` object this will return a deep copy of it.
* Code taken and adapted from d3.js https://github.com/d3/d3-hierarchy/blob/main/src/hierarchy/index.js#L15.
*
* @param {Node|Object} data - object representing a root node (a simple { id, children } object or a `Node`)
* @return {Node}
*/
export function hierarchy(data) {
const root = new Node(data)
const nodes = []
let node = root
while (node) {
if (node.data.children) {
node.children = node.data.children.map((child_) => {
const child = new Node(child_)
child.id = child_.id
child.parent = node === root ? null : node
child.depth = node.depth + 1
nodes.push(child)
return child
})
}
node = nodes.pop()
}
root.eachBefore(computeNodeHeight)
return root
}
/**
* Compute the node height by iterating on parents
* Code taken from d3.js https://github.com/d3/d3-hierarchy/blob/main/src/hierarchy/index.js#L62.
*
* @param {Node} node
*/
function computeNodeHeight(node) {
let height = 0
do {
node.height = height
node = node.parent
} while (node && node.height < ++height)
}

View file

@ -3,13 +3,17 @@ import format from 'date-fns/format'
import { dateFnsLocale as locale } from '@/i18n/helpers' import { dateFnsLocale as locale } from '@/i18n/helpers'
export function distanceToNow(date, addSuffix = true, isTimestamp = false) { export function distanceToNow (date, addSuffix = true, isTimestamp = false) {
return formatDistanceToNow(new Date(isTimestamp ? date * 1000 : date), { return formatDistanceToNow(
addSuffix, new Date(isTimestamp ? date * 1000 : date),
locale, { addSuffix, locale }
}) )
} }
export function readableDate(date, isTimestamp = false) { export function readableDate (date, isTimestamp = false) {
return format(new Date(isTimestamp ? date * 1000 : date), 'PPPpp', { locale }) return format(
new Date(isTimestamp ? date * 1000 : date),
'PPPpp',
{ locale }
)
} }

View file

@ -1,15 +1,13 @@
export function humanSize(bytes) { export function humanSize (bytes) {
const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB'] const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB']
if (bytes === 0) return 'n/a' if (bytes === 0) return 'n/a'
const i = parseInt(Math.floor(Math.log(bytes) / Math.log(1024))) const i = parseInt(Math.floor(Math.log(bytes) / Math.log(1024)))
return Math.round(bytes / Math.pow(1024, i), 2) + ' ' + sizes[i] return Math.round(bytes / Math.pow(1024, i), 2) + ' ' + sizes[i]
} }
export function humanPermissionName(text) {
return text export function humanPermissionName (text) {
.split('.')[1] return text.split('.')[1].replace('_', ' ').replace(/\w\S*/g, part => {
.replace('_', ' ') return part.charAt(0).toUpperCase() + part.substr(1).toLowerCase()
.replace(/\w\S*/g, (part) => { })
return part.charAt(0).toUpperCase() + part.substr(1).toLowerCase()
})
} }

View file

@ -1,81 +1,64 @@
import { helpers } from 'vuelidate/lib/validators' import { helpers } from 'vuelidate/lib/validators'
// Unicode ranges are taken from https://stackoverflow.com/a/37668315 // Unicode ranges are taken from https://stackoverflow.com/a/37668315
const nonAsciiWordCharacters = const nonAsciiWordCharacters = '\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0-\u08B4\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16F1-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AD\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC'
'\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0-\u08B4\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16F1-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AD\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC'
const alphalownumdot_ = helpers.regex('alphalownumdot_', /^[a-z0-9_.]+$/)
const domain = helpers.regex( const alphalownum_ = helpers.regex('alphalownum_', /^[a-z0-9_]+$/)
'domain',
new RegExp(
`^(?:[\\da-z${nonAsciiWordCharacters}]+(?:-*[\\da-z${nonAsciiWordCharacters}]+)*\\.)+(?:(?:xn--)?[\\da-z${nonAsciiWordCharacters}]{2,})$`,
),
)
const dynDomain = helpers.regex( const domain = helpers.regex('domain', new RegExp(`^(?:[\\da-z${nonAsciiWordCharacters}]+(?:-*[\\da-z${nonAsciiWordCharacters}]+)*\\.)+(?:(?:xn--)?[\\da-z${nonAsciiWordCharacters}]{2,})$`))
'dynDomain',
new RegExp(`^(?:xn--)?[\\da-z-${nonAsciiWordCharacters}]+$`),
)
const emailLocalPart = helpers.regex('emailLocalPart', /^[\w+.-]+$/) const dynDomain = helpers.regex('dynDomain', new RegExp(`^(?:xn--)?[\\da-z-${nonAsciiWordCharacters}]+$`))
const emailForwardLocalPart = helpers.regex( const emailLocalPart = helpers.regex('emailLocalPart', /^[\w.-]+$/)
'emailForwardLocalPart',
/^[\w+.-]+$/,
)
const email = (value) => const emailForwardLocalPart = helpers.regex('emailForwardLocalPart', /^[\w+.-]+$/)
helpers.withParams({ type: 'email', value }, (value) => {
const email = value => helpers.withParams(
{ type: 'email', value },
value => {
const [localPart, domainPart] = value.split('@') const [localPart, domainPart] = value.split('@')
if (!domainPart) return !helpers.req(value) || false if (!domainPart) return !helpers.req(value) || false
return ( return !helpers.req(value) || (emailLocalPart(localPart) && domain(domainPart))
!helpers.req(value) || (emailLocalPart(localPart) && domain(domainPart)) }
) )(value)
})(value)
// Same as email but with `+` allowed. // Same as email but with `+` allowed.
const emailForward = (value) => const emailForward = value => helpers.withParams(
helpers.withParams({ type: 'emailForward', value }, (value) => { { type: 'emailForward', value },
value => {
const [localPart, domainPart] = value.split('@') const [localPart, domainPart] = value.split('@')
if (!domainPart) return !helpers.req(value) || false if (!domainPart) return !helpers.req(value) || false
return ( return !helpers.req(value) || (emailForwardLocalPart(localPart) && domain(domainPart))
!helpers.req(value) || }
(emailForwardLocalPart(localPart) && domain(domainPart)) )(value)
)
})(value)
const appRepoUrl = helpers.regex( const githubLink = helpers.regex('githubLink', /^https:\/\/github.com\/[a-zA-Z0-9-_.]+\/[a-zA-Z0-9-_.]+[/]?$/)
'appRepoUrl',
/^https:\/\/[a-zA-Z0-9-_.]+\/[a-zA-Z0-9-_./~]+\/[a-zA-Z0-9-_.]+_ynh(\/?(-\/)?tree\/[a-zA-Z0-9-_.]+)?(\.git)?\/?$/,
)
const includes = (items) => (item) => const includes = items => item => helpers.withParams(
helpers.withParams( { type: 'includes', value: item },
{ type: 'includes', value: item }, item => !helpers.req(item) || (items ? items.includes(item) : false)
(item) => !helpers.req(item) || (items ? items.includes(item) : false), )(item)
)(item)
const name = helpers.regex( const name = helpers.regex('name', new RegExp(`^(?:[A-Za-z${nonAsciiWordCharacters}]{1,30}[ ,.'-]{0,3})+$`))
'name',
new RegExp(`^(?:[A-Za-z${nonAsciiWordCharacters}]{1,30}[ ,.'-]{0,3})+$`), const unique = items => item => helpers.withParams(
) { type: 'unique', arg: items, value: item },
item => items ? !helpers.req(item) || !items.includes(item) : true
)(item)
const unique = (items) => (item) =>
helpers.withParams({ type: 'unique', arg: items, value: item }, (item) =>
items ? !helpers.req(item) || !items.includes(item) : true,
)(item)
export { export {
alphalownumdot_, alphalownum_,
domain, domain,
dynDomain, dynDomain,
email, email,
emailForward, emailForward,
emailForwardLocalPart, emailForwardLocalPart,
emailLocalPart, emailLocalPart,
appRepoUrl, githubLink,
includes, includes,
name, name,
unique, unique
} }

View file

@ -1,12 +1,3 @@
// helper module to expose custom and vuelidate validators. // helper module to expose custom and vuelidate validators.
export * from './customValidators' export * from './customValidators'
export { export * from 'vuelidate/lib/validators'
between,
helpers,
integer,
maxValue,
minLength,
minValue,
required,
sameAs,
} from 'vuelidate/lib/validators'

View file

@ -1,51 +1,30 @@
import i18n from '@/i18n' import i18n from '@/i18n'
import store from '@/store' import store from '@/store'
import evaluate from 'simple-evaluate'
import * as validators from '@/helpers/validators' import * as validators from '@/helpers/validators'
import { import { isObjectLiteral, isEmptyValue, flattenObjectLiteral } from '@/helpers/commons'
isObjectLiteral,
isEmptyValue,
flattenObjectLiteral,
getFileContent,
} from '@/helpers/commons'
const NO_VALUE_FIELDS = [
'ReadOnlyField',
'ReadOnlyAlertItem',
'MarkdownItem',
'DisplayTextItem',
'ButtonItem',
]
export const DEFAULT_STATUS_ICON = {
[null]: null,
danger: 'times',
error: 'times',
info: 'info',
success: 'check',
warning: 'warning',
}
/** /**
* Tries to find a translation corresponding to the user's locale/fallback locale in a * Tries to find a translation corresponding to the user's locale/fallback locale in a
* Yunohost argument or simply return the string if it's not an object literal. * Yunohost argument or simply return the string if it's not an object literal.
* *
* @param {(Object|String|undefined)} field - A field value containing a translation object or string * @param {(Object|String)} field - A field value containing a translation object or string
* @return {String} * @return {String}
*/ */
export function formatI18nField(field) { export function formatI18nField (field) {
if (typeof field === 'string') return field if (typeof field === 'string') return field
const { locale, fallbackLocale } = store.state const { locale, fallbackLocale } = store.state
return field ? field[locale] || field[fallbackLocale] || field.en : '' return field[locale] || field[fallbackLocale] || field.en
} }
/** /**
* Returns a string size declaration to a M value. * Returns a string size declaration to a M value.
* *
* @param {String} sizeStr - A size declared like '500M' or '56k' * @param {String} sizeStr - A size declared like '500M' or '56k'
* @return {Number} * @return {Number}
*/ */
export function sizeToM(sizeStr) { export function sizeToM (sizeStr) {
const unit = sizeStr.slice(-1) const unit = sizeStr.slice(-1)
const value = sizeStr.slice(0, -1) const value = sizeStr.slice(0, -1)
if (unit === 'M') return parseInt(value) if (unit === 'M') return parseInt(value)
@ -55,62 +34,19 @@ export function sizeToM(sizeStr) {
if (unit === 'T') return Math.ceil(value * 1024 * 1024) if (unit === 'T') return Math.ceil(value * 1024 * 1024)
} }
/** /**
* Returns a formatted address element to be used by AdressInputSelect component. * Returns a formatted address element to be used by AdressInputSelect component.
* *
* @param {String} address - A string representing an adress (subdomain or email) * @param {String} address - A string representing an adress (subdomain or email)
* @return {Object} - `{ localPart, separator, domain }`. * @return {Object} - `{ localPart, separator, domain }`.
*/ */
export function adressToFormValue(address) { export function adressToFormValue (address) {
const separator = address.includes('@') ? '@' : '.' const separator = address.includes('@') ? '@' : '.'
const [localPart, domain] = address.split(separator) const [localPart, domain] = address.split(separator)
return { localPart, separator, domain } return { localPart, separator, domain }
} }
/**
* Evaluate config panel string expression that can contain regular expressions.
* Expression are evaluated with the config panel form as context.
*
* @param {String} expression - A String to evaluate.
* @param {Object} forms - A nested form used in config panels.
* @return {Boolean} - expression evaluation result.
*/
export function evaluateExpression(expression, form, nested = true) {
if (!expression) return true
if (expression === '"false"') return false
const context = nested
? Object.values(form).reduce((merged, next) => ({ ...merged, ...next }))
: form
for (const key in context) {
if (isObjectLiteral(context[key]) && 'file' in context[key]) {
context[key] = context[key].content
}
}
// Allow to use match(var,regexp) function
const matchRe = /match(\s*(\w+)\s*,\s*"([^"]+)"\s*)/g
for (const matched of expression.matchAll(matchRe)) {
const [fullMatch, varMatch, regExpMatch] = matched
const varName = varMatch + '__re' + matched.index
context[varName] = new RegExp(regExpMatch, 'm').test(context[varMatch])
expression = expression.replace(fullMatch, varName)
}
try {
return !!evaluate(context, expression)
} catch {
return false
}
}
// Adds a property to an Object that will dynamically returns a expression evaluation result.
function addEvaluationGetter(prop, obj, expr, ctx, nested) {
Object.defineProperty(obj, prop, {
get: () => evaluateExpression(expr, ctx, nested),
})
}
/** /**
* Format app install, actions and config panel argument into a data structure that * Format app install, actions and config panel argument into a data structure that
@ -119,414 +55,144 @@ function addEvaluationGetter(prop, obj, expr, ctx, nested) {
* @param {Object} arg - a yunohost arg options written by a packager. * @param {Object} arg - a yunohost arg options written by a packager.
* @return {Object} an formated argument containing formItem props, validation and base value. * @return {Object} an formated argument containing formItem props, validation and base value.
*/ */
export function formatYunoHostArgument(arg) { export function formatYunoHostArgument (arg) {
let value = let value = null
arg.value !== undefined
? arg.value
: arg.current_value !== undefined
? arg.current_value
: null
const validation = {} const validation = {}
const error = { message: null }
arg.ask = formatI18nField(arg.ask)
const field = { const field = {
is: arg.readonly ? 'ReadOnlyField' : 'FormField', component: undefined,
visible: [undefined, true, '"true"'].includes(arg.visible), label: formatI18nField(arg.ask),
props: { props: {}
label: arg.ask,
component: undefined,
props: {},
},
} }
const defaultProps = ['id', 'placeholder:example'] if (arg.type === 'boolean') {
const components = [ field.id = arg.name
{ } else {
types: ['string', 'path'], field.props.id = arg.name
name: 'InputItem', }
props: defaultProps.concat(['autocomplete', 'trim', 'choices']),
}, // Some apps has an argument type `string` as type but expect a select since it has `choices`
{ if (arg.choices !== undefined) {
types: ['email', 'url', 'date', 'time', 'color'], field.component = 'SelectItem'
name: 'InputItem', field.props.choices = arg.choices
props: defaultProps.concat(['type', 'trim']), // Input
}, } else if ([undefined, 'string', 'number', 'password', 'email'].includes(arg.type)) {
{ field.component = 'InputItem'
types: ['password'], if (![undefined, 'string'].includes(arg.type)) {
name: 'InputItem', field.props.type = arg.type
props: defaultProps.concat(['type', 'autocomplete', 'trim']), if (arg.type === 'password') {
callback: function () { field.description = i18n.t('good_practices_about_admin_password')
if (!arg.help) { field.placeholder = '••••••••'
arg.help = i18n.t('good_practices_about_admin_password')
}
arg.example = '••••••••••••'
validation.passwordLenght = validators.minLength(8) validation.passwordLenght = validators.minLength(8)
}, }
},
{
types: ['number', 'range'],
name: 'InputItem',
props: defaultProps.concat(['type', 'min', 'max', 'step']),
callback: function () {
if (!isNaN(parseInt(arg.min))) {
validation.minValue = validators.minValue(parseInt(arg.min))
}
if (!isNaN(parseInt(arg.max))) {
validation.maxValue = validators.maxValue(parseInt(arg.max))
}
validation.numValue = validators.integer
},
},
{
types: ['select', 'user', 'domain', 'app', 'group'],
name: 'SelectItem',
props: ['id', 'choices'],
callback: function () {
if (arg.type !== 'select') {
field.props.link = {
name: arg.type + '-list',
text: i18n.t(`manage_${arg.type}s`),
}
}
},
},
{
types: ['file'],
name: 'FileItem',
props: defaultProps.concat(['accept']),
callback: function () {
value = {
// in case of already defined file, we receive only the file path (not the actual file)
file: value ? new File([''], value) : null,
content: '',
current: !!value,
removed: false,
}
},
},
{
types: ['text'],
name: 'TextAreaItem',
props: defaultProps,
},
{
types: ['tags'],
name: 'TagsItem',
props: defaultProps.concat([
'limit',
'placeholder',
'options:choices',
'tagIcon:icon',
]),
callback: function () {
if (arg.choices && arg.choices.length) {
this.name = 'TagsSelectizeItem'
Object.assign(field.props.props, {
auto: true,
itemsName: '',
label: arg.placeholder,
})
}
if (typeof value === 'string') {
value = value.split(',')
} else if (!value) {
value = []
}
},
},
{
types: ['boolean'],
name: 'CheckboxItem',
props: ['id', 'choices'],
callback: function () {
if (value !== null && value !== undefined) {
value = ['1', 'yes', 'y', 'true'].includes(
String(value).toLowerCase(),
)
} else if (arg.default !== null && arg.default !== undefined) {
value = ['1', 'yes', 'y', 'true'].includes(
String(arg.default).toLowerCase(),
)
}
},
},
{
types: ['alert'],
name: 'ReadOnlyAlertItem',
props: ['type:style', 'label:ask', 'icon'],
renderSelf: true,
},
{
types: ['markdown'],
name: 'MarkdownItem',
props: ['label:ask'],
renderSelf: true,
},
{
types: ['display_text'],
name: 'DisplayTextItem',
props: ['label:ask'],
renderSelf: true,
},
{
types: ['button'],
name: 'ButtonItem',
props: ['type:style', 'label:ask', 'icon', 'enabled'],
renderSelf: true,
},
]
// Default type management if no one is filled
if (arg.type !== 'tags' && arg.choices && arg.choices.length) {
arg.type = 'select'
}
if (arg.type === undefined) {
arg.type = 'string'
}
// Search the component bind to the type
const component = components.find((element) =>
element.types.includes(arg.type),
)
if (component === undefined) throw new TypeError('Unknown type: ' + arg.type)
// Callback use for specific behaviour
if (component.callback) component.callback()
field.props.component = component.name
// Affect properties to the field Item
for (let prop of component.props) {
prop = prop.split(':')
const propName = prop[0]
const argName = prop.slice(-1)[0]
if (argName in arg) {
field.props.props[propName] = arg[argName]
} }
// Checkbox
} else if (arg.type === 'boolean') {
field.component = 'CheckboxItem'
if (typeof arg.default === 'number') {
value = arg.default === 1
} else {
value = arg.default || false
}
// Special (store related)
} else if (['user', 'domain'].includes(arg.type)) {
field.component = 'SelectItem'
field.link = { name: arg.type + '-list', text: i18n.t(`manage_${arg.type}s`) }
field.props.choices = store.getters[arg.type + 'sAsChoices']
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 ?
} else {
field.component = 'InputItem'
} }
// Required (no need for checkbox its value can't be null) // Required (no need for checkbox its value can't be null)
if ( if (field.component !== 'CheckboxItem' && arg.optional !== true) {
!component.renderSelf &&
arg.type !== 'boolean' &&
arg.optional !== true
) {
validation.required = validators.required validation.required = validators.required
} }
if (arg.pattern && arg.type !== 'tags') {
validation.pattern = validators.helpers.regex(
formatI18nField(arg.pattern.error),
new RegExp(arg.pattern.regexp),
)
}
if (!component.renderSelf && !arg.readonly) {
// Bind a validation with what the server may respond
validation.remote = validators.helpers.withParams(error, (v) => {
const result = !error.message
error.message = null
return result
})
}
// Default value if still `null` // Default value if still `null`
if (value === null && arg.current_value) {
value = arg.current_value
}
if (value === null && arg.default) { if (value === null && arg.default) {
value = arg.default value = arg.default
} }
// Help message // Help message
if (arg.help) { if (arg.help) {
field.props.description = formatI18nField(arg.help) field.description = formatI18nField(arg.help)
} }
// Example
// Help message if (arg.example) {
if (arg.helpLink) { field.example = arg.example
field.props.link = { if (field.component === 'InputItem') {
href: arg.helpLink.href, field.props.placeholder = field.example
text: i18n.t(arg.helpLink.text),
} }
} }
if (component.renderSelf) {
field.is = field.props.component
field.props = field.props.props
}
return { return {
value, value,
field, field,
// Return null instead of empty object if there's no validation // Return null instead of empty object if there's no validation
validation: Object.keys(validation).length === 0 ? null : validation, validation: Object.keys(validation).length === 0 ? null : validation
error,
} }
} }
/** /**
* Format app install, actions and config panel manifest args into a form that can be used * Format app install, actions and config panel manifest args into a form that can be used
* as v-model values, fields that can be passed to a FormField component and validations. * as v-model values, fields that can be passed to a FormField component and validations.
* *
* @param {Array} args - a yunohost arg array written by a packager. * @param {Array} args - a yunohost arg array written by a packager.
* @param {Object|null} forms - nested form used as the expression evualuations context. * @param {String} name - (temp) an app name to build a label field in case of manifest install args
* @return {Object} an object containing all parsed values to be used in vue views. * @return {Object} an object containing all parsed values to be used in vue views.
*/ */
export function formatYunoHostArguments(args, forms) { export function formatYunoHostArguments (args, name = null) {
let disclaimer = null
const form = {} const form = {}
const fields = {} const fields = {}
const validations = {} const validations = {}
const errors = {}
// FIXME yunohost should add the label field by default
if (name) {
args.unshift({
ask: i18n.t('label_for_manifestname', { name }),
default: name,
name: 'label'
})
}
for (const arg of args) { for (const arg of args) {
const { value, field, validation, error } = formatYunoHostArgument(arg) if (arg.type === 'display_text') {
fields[arg.id] = field disclaimer = formatI18nField(arg.ask)
form[arg.id] = value } else {
if (validation) validations[arg.id] = validation const { value, field, validation } = formatYunoHostArgument(arg)
errors[arg.id] = error fields[arg.name] = field
form[arg.name] = value
if ('visible' in arg && typeof arg.visible === 'string') { if (validation) validations[arg.name] = validation
addEvaluationGetter(
'visible',
field,
arg.visible,
forms || form,
forms !== undefined,
)
}
if ('enabled' in arg && typeof arg.enabled === 'string') {
addEvaluationGetter(
'enabled',
field.props,
arg.enabled,
forms || form,
forms !== undefined,
)
} }
} }
return { form, fields, validations, errors } return { form, fields, validations, disclaimer }
} }
export function formatYunoHostConfigPanels(data) {
const result = {
panels: [],
forms: {},
validations: {},
errors: {},
}
for (const { id: panelId, name, help, sections } of data.panels) {
const panel = {
id: panelId,
sections: [],
serverError: '',
hasApplyButton: false,
}
result.forms[panelId] = {}
result.validations[panelId] = {}
result.errors[panelId] = {}
if (name) panel.name = formatI18nField(name)
if (help) panel.help = formatI18nField(help)
for (const _section of sections) {
const section = {
id: _section.id,
isActionSection: _section.is_action_section,
visible: [undefined, true, '"true"'].includes(_section.visible),
}
if (_section.help) section.help = formatI18nField(_section.help)
if (_section.name) section.name = formatI18nField(_section.name)
if (_section.visible && ![false, '"false"'].includes(_section.visible)) {
addEvaluationGetter('visible', section, _section.visible, result.forms)
}
const { form, fields, validations, errors } = formatYunoHostArguments(
_section.options,
result.forms,
)
// Merge all sections forms to the panel to get a unique form
Object.assign(result.forms[panelId], form)
Object.assign(result.validations[panelId], validations)
Object.assign(result.errors[panelId], errors)
section.fields = fields
panel.sections.push(section)
if (
!section.isActionSection &&
Object.values(fields).some(
(field) => !NO_VALUE_FIELDS.includes(field.is),
)
) {
panel.hasApplyButton = true
}
}
result.panels.push(panel)
}
return result
}
/** /**
* Parse a front-end value to its API equivalent. This function returns a Promise or an * Format helper for a form value.
* Object `{ key: Promise }` if `key` is supplied. When parsing a form, all those * Convert Boolean to (1|0) and concatenate adresses.
* objects must be merged to define the final sent form.
*
* Convert Boolean to '1' (true) or '0' (false),
* Concatenate two parts adresses (subdomain or email for example) into a single string,
* Convert File to its Base64 representation or set its value to '' to ask for a removal.
* *
* @param {*} value * @param {*} value
* @return {*} * @return {*}
*/ */
export function formatFormDataValue(value, key = null) { export function formatFormDataValue (value) {
if (Array.isArray(value)) { if (typeof value === 'boolean') {
return Promise.all(value.map((value_) => formatFormDataValue(value_))).then( return value ? 1 : 0
(resolvedValues) => ({ [key]: resolvedValues }),
)
}
let result = value
if (typeof value === 'boolean') result = value ? 1 : 0
if (isObjectLiteral(value) && 'file' in value) {
// File has to be deleted
if (value.removed) result = ''
// File has not changed (will not be sent)
else if (value.current || value.file === null) result = null
else {
return getFileContent(value.file, { base64: true }).then((content) => {
return {
[key]: content.replace(/data:[^;]*;base64,/, ''),
[key + '[name]']: value.file.name,
}
})
}
} else if (isObjectLiteral(value) && 'separator' in value) { } else if (isObjectLiteral(value) && 'separator' in value) {
result = Object.values(value).join('') return Object.values(value).join('')
} }
return value
// Returns a resolved Promise for non async values
return Promise.resolve(key ? { [key]: result } : result)
} }
/**
* Convinient helper to properly parse a front-end form to its API equivalent.
* This parse each values asynchronously, allow to inject keys into the final form and
* make sure every async values resolves before resolving itself.
*
* @param {Object} formData
* @return {Object}
*/
function formatFormDataValues(formData) {
const promisedValues = Object.entries(formData).map(([key, value]) => {
return formatFormDataValue(value, key)
})
return Promise.all(promisedValues).then((resolvedValues) => {
return resolvedValues.reduce((form, obj) => ({ ...form, ...obj }), {})
})
}
/** /**
* Format a form produced by a vue view to be sent to the server. * Format a form produced by a vue view to be sent to the server.
@ -538,35 +204,28 @@ function formatFormDataValues(formData) {
* @param {Boolean} [extraParams.removeEmpty=true] - Removes "empty" values from the object. * @param {Boolean} [extraParams.removeEmpty=true] - Removes "empty" values from the object.
* @return {Object} the parsed data to be sent to the server, with extracted values if specified. * @return {Object} the parsed data to be sent to the server, with extracted values if specified.
*/ */
export async function formatFormData( export function formatFormData (
formData, formData,
{ { extract = null, flatten = false, removeEmpty = true } = {}
extract = null,
flatten = false,
removeEmpty = true,
removeNull = false,
} = {},
) { ) {
const output = { const output = {
data: {}, data: {},
extracted: {}, extracted: {}
} }
for (const key in formData) {
const values = await formatFormDataValues(formData)
for (const key in values) {
const type = extract && extract.includes(key) ? 'extracted' : 'data' const type = extract && extract.includes(key) ? 'extracted' : 'data'
const value = values[key] const value = Array.isArray(formData[key])
? formData[key].map(item => formatFormDataValue(item))
: formatFormDataValue(formData[key])
if (removeEmpty && isEmptyValue(value)) { if (removeEmpty && isEmptyValue(value)) {
continue continue
} else if (removeNull && [null, undefined].includes(value)) {
continue
} else if (flatten && isObjectLiteral(value)) { } else if (flatten && isObjectLiteral(value)) {
flattenObjectLiteral(value, output[type]) flattenObjectLiteral(value, output[type])
} else { } else {
output[type][key] = value output[type][key] = value
} }
} }
const { data, extracted } = output const { data, extracted } = output
return extract ? { data, ...extracted } : data return extract ? { data, ...extracted } : data
} }

View file

@ -1,5 +1,5 @@
import store from '@/store'
import i18n from '@/i18n' import i18n from '@/i18n'
import store from '@/store'
import supportedLocales from './supportedLocales' import supportedLocales from './supportedLocales'
let dateFnsLocale let dateFnsLocale
@ -11,7 +11,7 @@ const loadedLanguages = []
* *
* @return {string[]} * @return {string[]}
*/ */
function getDefaultLocales() { function getDefaultLocales () {
const locale = store.getters.locale const locale = store.getters.locale
const fallbackLocale = store.getters.fallbackLocale const fallbackLocale = store.getters.fallbackLocale
if (locale && fallbackLocale) return [locale, fallbackLocale] if (locale && fallbackLocale) return [locale, fallbackLocale]
@ -34,7 +34,7 @@ function getDefaultLocales() {
return defaultLocales return defaultLocales
} }
function updateDocumentLocale(locale) { function updateDocumentLocale (locale) {
document.documentElement.lang = locale document.documentElement.lang = locale
// FIXME can't currently change document direction easily since bootstrap still doesn't handle rtl. // FIXME can't currently change document direction easily since bootstrap still doesn't handle rtl.
// document.dir = locale === 'ar' ? 'rtl' : 'ltr' // document.dir = locale === 'ar' ? 'rtl' : 'ltr'
@ -45,11 +45,13 @@ function updateDocumentLocale(locale) {
* *
* @return {Promise<string>} Promise that resolve the given locale string * @return {Promise<string>} Promise that resolve the given locale string
*/ */
function loadLocaleMessages(locale) { function loadLocaleMessages (locale) {
if (loadedLanguages.includes(locale)) { if (loadedLanguages.includes(locale)) {
return Promise.resolve(locale) return Promise.resolve(locale)
} }
return import(`@/i18n/locales/${locale}.json`).then((messages) => { return import(
/* webpackChunkName: "lc/lang-[request]" */ `@/i18n/locales/${locale}`
).then(messages => {
i18n.setLocaleMessage(locale, messages.default) i18n.setLocaleMessage(locale, messages.default)
loadedLanguages.push(locale) loadedLanguages.push(locale)
return locale return locale
@ -59,25 +61,26 @@ function loadLocaleMessages(locale) {
/** /**
* Loads a date-fns locale object * Loads a date-fns locale object
*/ */
async function loadDateFnsLocale(locale) { async function loadDateFnsLocale (locale) {
const dateFnsLocaleName = supportedLocales[locale].dateFnsLocale || locale const dateFnsLocaleName = supportedLocales[locale].dateFnsLocale || locale
dateFnsLocale = ( return import(
await import( /* webpackChunkName: "lc/datefns-[request]" */
`../../node_modules/date-fns/esm/locale/${dateFnsLocaleName}/index.js` `date-fns/locale/${dateFnsLocaleName}/index.js`
) ).then(locale => {
).default dateFnsLocale = locale.default
})
} }
/** /**
* Initialize all locales * Initialize all locales
*/ */
function initDefaultLocales() { function initDefaultLocales () {
// Get defined locales from `localStorage` or `navigator` // Get defined locales from `localStorage` or `navigator`
const [locale, fallbackLocale] = getDefaultLocales() const [locale, fallbackLocale] = getDefaultLocales()
store.dispatch('UPDATE_LOCALE', locale) store.dispatch('UPDATE_LOCALE', locale)
store.dispatch('UPDATE_FALLBACKLOCALE', fallbackLocale || 'en') store.dispatch('UPDATE_FALLBACKLOCALE', fallbackLocale || 'en')
return loadLocaleMessages('en') loadLocaleMessages('en')
} }
export { export {
@ -85,5 +88,5 @@ export {
updateDocumentLocale, updateDocumentLocale,
loadLocaleMessages, loadLocaleMessages,
loadDateFnsLocale, loadDateFnsLocale,
dateFnsLocale, dateFnsLocale
} }

View file

@ -5,8 +5,12 @@
import Vue from 'vue' import Vue from 'vue'
import VueI18n from 'vue-i18n' import VueI18n from 'vue-i18n'
import { initDefaultLocales } from './helpers'
// Plugin Initialization // Plugin Initialization
Vue.use(VueI18n) Vue.use(VueI18n)
export default new VueI18n({}) export default new VueI18n({})
// Load default locales translations files and setup store data
initDefaultLocales()

View file

@ -11,6 +11,8 @@
"app_install_custom_no_manifest": "No manifest.json file", "app_install_custom_no_manifest": "No manifest.json file",
"app_make_default": "تعيينه كافتراضي", "app_make_default": "تعيينه كافتراضي",
"app_state_inprogress": "لا يعمل بعد", "app_state_inprogress": "لا يعمل بعد",
"app_state_notworking": "لا يعمل بعدُ",
"app_state_working": "يشتغل",
"applications": "التطبيقات", "applications": "التطبيقات",
"archive_empty": "النسخة الإحتياطية فارغة", "archive_empty": "النسخة الإحتياطية فارغة",
"backup": "النسخ الإحتياطي", "backup": "النسخ الإحتياطي",
@ -29,7 +31,7 @@
"confirm_firewall_allow": "متأكد مِن أنك تود فتح منفذ {port} ؟ (بروتوكول : {protocol}، إتصال : {connection})", "confirm_firewall_allow": "متأكد مِن أنك تود فتح منفذ {port} ؟ (بروتوكول : {protocol}، إتصال : {connection})",
"confirm_firewall_disallow": "متأكد مِن أنك تود إغلاق منفذ {port} ؟ (بروتوكول : {protocol}، إتصال : {connection})", "confirm_firewall_disallow": "متأكد مِن أنك تود إغلاق منفذ {port} ؟ (بروتوكول : {protocol}، إتصال : {connection})",
"confirm_install_custom_app": "إنّ خيار تنصيب تطبيقات خارجية قد يؤثر على أمان نظامكم. ربما وجب عليكم ألا تقوموا بالتنصيب إلا إن كنتم حقا مدركون بما أنتم فاعلين. هل أنتم مستعدون للمخاطرة؟", "confirm_install_custom_app": "إنّ خيار تنصيب تطبيقات خارجية قد يؤثر على أمان نظامكم. ربما وجب عليكم ألا تقوموا بالتنصيب إلا إن كنتم حقا مدركون بما أنتم فاعلين. هل أنتم مستعدون للمخاطرة؟",
"confirm_install_domain_root": "هل أنت متأكد أنك تريد تثبيت هذا التطبيق على \"/\"؟ لن يكون بامكانك تثبيت أي تطبيق آخر على {domain}", "confirm_install_domain_root": "لن يكون بإمكانك تنصيب أي برنامج آخر على {domain}. هل تريد المواصلة ؟",
"confirm_postinstall": "إنك بصدد إطلاق خطوة ما بعد التنصيب على النطاق {domain}. سوف تستغرق العملية بضع دقائق، لذلك *يُرجى عدم إيقاف العملية*.", "confirm_postinstall": "إنك بصدد إطلاق خطوة ما بعد التنصيب على النطاق {domain}. سوف تستغرق العملية بضع دقائق، لذلك *يُرجى عدم إيقاف العملية*.",
"confirm_restore": "متأكد مِن أنك تريد استعادة {name} ؟", "confirm_restore": "متأكد مِن أنك تريد استعادة {name} ؟",
"confirm_service_start": "متأكد مِن أنك تريد تشغيل {name} ؟", "confirm_service_start": "متأكد مِن أنك تريد تشغيل {name} ؟",
@ -44,19 +46,26 @@
"connection": "الدخول", "connection": "الدخول",
"created_at": "تم إنشاؤه على", "created_at": "تم إنشاؤه على",
"custom_app_install": "تنصيب برنامج خاص", "custom_app_install": "تنصيب برنامج خاص",
"custom_app_url_only_github": "حاليا فقط مِن جيت هب",
"delete": "حذف", "delete": "حذف",
"description": "الوصف", "description": "الوصف",
"domain_dns_conf_is_just_a_recommendation": "يُظهر هذا القِسم الإعدادات *المستحسَنة*. فهي *لا* تقوم بتهيئة نظام أسماء النطاقات مكانكم. فالمسؤولية هي على عاتقكم لتهيئة منطقة نظام أسماء النطاقات عند المصدر أي عند مكتب التسجيل الخاص بكم وفقا لهذه التوصية.", "domain_dns_conf_is_just_a_recommendation": "تُظهر هذه الصفحة الإعدادات *المستحسَنة*. فهي *لا* تقوم بتهيئة نظام أسماء النطاقات مكانكم. فالمسؤولية هي على عاتقكم لتهيئة منطقة نظام أسماء النطاقات عند المصدر أي عند مزودكم وذلك باتباع الخطوات التي ينصحكم بها.",
"diagnosis": "التشخيص", "diagnosis": "التشخيص",
"disable": "تعطيل", "disable": "تعطيل",
"dns": "خدمة أسماء النطاقات", "dns": "خدمة أسماء النطاقات",
"domain_add": "إضافة نطاق", "domain_add": "إضافة نطاق",
"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": "لا أمتلك إسم نطاق …",
"domain_default_desc": "إسم النطاق الإفتراضي هو النطاق الذي مِن خلاله يقوم المستخدِمون بتسجيل دخولهم.", "domain_default_desc": "إسم النطاق الإفتراضي هو النطاق الذي مِن خلاله يقوم المستخدِمون بتسجيل دخولهم.",
"domain_default_longdesc": "هذا هو إسم نطاقك الإفتراضي.", "domain_default_longdesc": "هذا هو إسم نطاقك الإفتراضي.",
"domain_delete_longdesc": "حذف هذا النطاق", "domain_delete_longdesc": "حذف هذا النطاق",
"domain_dns_config": "إعدادات خدمة أسماء النطاقات", "domain_dns_config": "إعدادات خدمة أسماء النطاقات",
"domain_dns_longdesc": "الإطلاع على إعدادات خدمة أسماء النطاقات", "domain_dns_longdesc": "الإطلاع على إعدادات خدمة أسماء النطاقات",
"domain_name": "إسم النطاق", "domain_name": "إسم النطاق",
"domain_visit": "زيارته",
"domain_visit_url": "زيارة {url}",
"domains": "أسماء النطاقات", "domains": "أسماء النطاقات",
"download": "التنزيل", "download": "التنزيل",
"enable": "تشغيل", "enable": "تشغيل",
@ -67,8 +76,15 @@
"form_input_example": "مثال : {example}", "form_input_example": "مثال : {example}",
"home": "الرئيسية", "home": "الرئيسية",
"hook_adminjs_group_configuration": "إعدادات النظام", "hook_adminjs_group_configuration": "إعدادات النظام",
"hook_conf_ldap": "قاعدة بيانات المستخدمين", "hook_conf_cron": "المهام التلقائية",
"hook_conf_ldap": "قاعدة بيانات LDAP",
"hook_conf_nginx": "Nginx",
"hook_conf_ssh": "SSH",
"hook_conf_ssowat": "SSOwat",
"hook_conf_xmpp": "XMPP",
"hook_conf_ynh_certs": "شهادات الأمان SSL", "hook_conf_ynh_certs": "شهادات الأمان SSL",
"hook_conf_ynh_firewall": "الجدار الناري",
"hook_conf_ynh_mysql": "كلمة سر MySQL",
"hook_data_home": "بيانات المستخدم", "hook_data_home": "بيانات المستخدم",
"hook_data_home_desc": "بيانات المستخدم في /home/USER", "hook_data_home_desc": "بيانات المستخدم في /home/USER",
"hook_data_mail": "البريد", "hook_data_mail": "البريد",
@ -92,7 +108,8 @@
"manage_apps": "إدارة التطبيقات", "manage_apps": "إدارة التطبيقات",
"manage_domains": "إدراة أسماء النطاقات", "manage_domains": "إدراة أسماء النطاقات",
"manage_users": "إدارة المستخدمين", "manage_users": "إدارة المستخدمين",
"multi_instance": "يمكن تنصيبه عدة مرات", "multi_instance": "متعدد مثيلات الخوادم",
"myserver": "خادمي",
"next": "التالي", "next": "التالي",
"no": "لا", "no": "لا",
"ok": "موافق", "ok": "موافق",
@ -106,12 +123,13 @@
"postinstall_domain": "سوف يصبح هذا إسم النطاق الرئيسي المرتبط بخادوم واي يونوهوست YunoHost و الذي مِن خلاله يُمكن للمستخدمين النفاذ إلى بوابة المصادقة قصد تسجيل دخولهم. إسم النطاق هذا سيكون ظاهرا لكافة المستخدمين، لذا يتوجّب اختياره بعناية.", "postinstall_domain": "سوف يصبح هذا إسم النطاق الرئيسي المرتبط بخادوم واي يونوهوست YunoHost و الذي مِن خلاله يُمكن للمستخدمين النفاذ إلى بوابة المصادقة قصد تسجيل دخولهم. إسم النطاق هذا سيكون ظاهرا لكافة المستخدمين، لذا يتوجّب اختياره بعناية.",
"postinstall_intro_1": "هنيئًا ! تمت عملية تنصيب YunoHost بنجاح.", "postinstall_intro_1": "هنيئًا ! تمت عملية تنصيب YunoHost بنجاح.",
"postinstall_intro_2": "لم يتبقى إلّا إكمال خطوتين لازمتين لتفعيل خدمات السيرفر.", "postinstall_intro_2": "لم يتبقى إلّا إكمال خطوتين لازمتين لتفعيل خدمات السيرفر.",
"postinstall_intro_3": "يمكنكم الحصول على مزيد مِن التفاصيل بزيارة <a href='//yunohost.org/en/install/hardware:vps_debian#fa-cog-proceed-with-the-initial-configuration' target='_blank'>صفحة التعليمات المخصصة لذلك</a>", "postinstall_intro_3": "يمكنكم الحصول على مزيد مِن التفاصيل بزيارة <a href='//yunohost.org/postinstall' target='_blank'>صفحة التعليمات المخصصة لذلك</a>",
"postinstall_password": "سوف يتم استخدام كلمة السر هذه في إدارة كافة خدمات السيرفر. يُرجى التأني و الحِكمة عند اختيارها.",
"previous": "السابق", "previous": "السابق",
"protocol": "Protocol", "protocol": "Protocol",
"restore": "إستعادة", "restore": "إستعادة",
"running": "يشتغل", "running": "يشتغل",
"save": "حفظك", "save": "حفظ",
"service_start_on_boot": "تُطلَق عند بداية التشغيل", "service_start_on_boot": "تُطلَق عند بداية التشغيل",
"services": "الخدمات", "services": "الخدمات",
"set_default": "تعيينه كافتراضي", "set_default": "تعيينه كافتراضي",
@ -128,10 +146,17 @@
"system_upgrade_all_packages_btn": "تحديث كافة الحُزم", "system_upgrade_all_packages_btn": "تحديث كافة الحُزم",
"tcp": "TCP", "tcp": "TCP",
"tools": "الأدوات", "tools": "الأدوات",
"tools_adminpw": "تعديل كلمة السر الإدارية",
"tools_adminpw_current": "كلمة السر الحالية",
"tools_adminpw_current_placeholder": "قم بإدخال كلمتك السرية الحالية",
"tools_reboot": "إعادة تشغيل الخادم", "tools_reboot": "إعادة تشغيل الخادم",
"tools_reboot_btn": "إعادة التشغيل", "tools_reboot_btn": "إعادة التشغيل",
"tools_reboot_done": "إعادة التشغيل جارية …",
"tools_rebooting": "عملية إعادة تشغيل خادومك جارية. الرجاء الإنتظار بعضا مِن الوقت ريثما يجهز ثم يمكنك العودة إلى الواجهة الإدارية. يُمكنك الضغط على زر (F5) لتحديث صفحة متصفحك.",
"tools_shutdown": "إيقاف تشغيل خادمك", "tools_shutdown": "إيقاف تشغيل خادمك",
"tools_shutdown_btn": "إطفاء", "tools_shutdown_btn": "إطفاء",
"tools_shutdown_done": "عملية إيقاف التشغيل جارية ...",
"tools_shuttingdown": "إنّ خادومك متوقف و طالما هو على هذا الحال فلن تتمكن مِن استعمال الواجهة الإدارية.",
"tools_shutdown_reboot": "إيقاف التشغيل/إعادة التشغيل", "tools_shutdown_reboot": "إيقاف التشغيل/إعادة التشغيل",
"udp": "UDP", "udp": "UDP",
"unauthorized": "غير مسموح", "unauthorized": "غير مسموح",
@ -153,9 +178,34 @@
"users": "المستخدمون", "users": "المستخدمون",
"users_new": "مستخدم جديد", "users_new": "مستخدم جديد",
"users_no": "لا يوجد أي مستخدم.", "users_no": "لا يوجد أي مستخدم.",
"wrong_password": "كلمة السر خاطئة",
"yes": "نعم", "yes": "نعم",
"certificate_alert_not_valid": "حرِج : إنّ شهادة الأمان الحالية لم تعُد صالحة! لن يُصبح بالإمكان النفاذ عبر بروتوكول الـ HTTPS !",
"certificate_alert_selfsigned": "تحذير : إنّ شهادة الأمان الحالية مُوقّعة ذاتيًا. سوف تُظهِر متصفحات الويب رسالة تحذير قد تثير هلع الزوار الجُدد!",
"certificate_alert_letsencrypt_about_to_expire": "إن مدة صلاحية الشهادة سوف تنتهي قريبًا. سوف يتم تجديدها بصورة تلقائية.",
"certificate_alert_about_to_expire": "تحذير : إنّ مدة صلاحية الشهادة سوف تنتهي قريبًا ! و لن يتم تجديدها تلقائيًا !",
"certificate_alert_good": "حسنًا، يبدو أنّ شهادتك الحالية جيدة !",
"certificate_alert_great": "رائع ! إنك تستخدم شهادة صالحة لـ Let's Encrypt !",
"certificate_alert_unknown": "حالة الشهادة غير معروفة",
"certificate_manage": "إدارة شهادات أمان SSL", "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 الخاصة باسم النطاق هذا يدويًا ؟",
"confirm_cert_revert_to_selfsigned": "هل أنت متأكد مِن أنك تريد إعادة تشغيل النطاق بواسطة شهادة موقعة شخصيًا؟",
"certificate": "الشهادة", "certificate": "الشهادة",
"certificate_status": "حالة الشهادة",
"certificate_authority": "هيئة الشهادات",
"validity": "مدة الصلاحية",
"domain_is_eligible_for_ACME": "يبدو أنَّ النطاق مهيأ بصورة صحيحة قصد تنصيب شهادة Let's Encrypt!",
"domain_not_eligible_for_ACME": "إنّ اسم النطاق هذا لم يُجهّز بعد لاستضافة شهادة أمان Let's Encrypt. يُرجى التحقق مِن إعدادات نظام أسماء النطاقات DNS و مِن أنّه يُمكن الاتصال بخادوم الويب عبر الـ HTTP.",
"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": "العودة إلى الشهادة الموقعة ذاتيًا",
"migrations": "الارتحال", "migrations": "الارتحال",
"migrations_pending": "الترحيلات المعلقة", "migrations_pending": "الترحيلات المعلقة",
"migrations_done": "الترحيلات السابقة", "migrations_done": "الترحيلات السابقة",
@ -179,17 +229,21 @@
"logs_more": "اظهر المزيد مِن الأسطر", "logs_more": "اظهر المزيد مِن الأسطر",
"select_all": "تحديد الكل", "select_all": "تحديد الكل",
"version": "الإصدار", "version": "الإصدار",
"app_no_actions": "لا يحتوي هذا التطبيق على أية إجراءات",
"logs_operation": "الإجراءات التي طرأت على النظام عبر YunoHost", "logs_operation": "الإجراءات التي طرأت على النظام عبر YunoHost",
"logs_no_logs_registered": "لم يُسجَّل هناك أي حدث في سِجِل هذه الفئة", "logs_no_logs_registered": "لم يُسجَّل هناك أي حدث في سِجِل هذه الفئة",
"unmaintained": "غير مُصان",
"app_state_highquality": "جودة عالية",
"license": "الرخصة", "license": "الرخصة",
"orphaned": "غير مصان", "orphaned": "غير مصان",
"from_to": "مِن {0} إلى {1}", "from_to": "مِن {0} إلى {1}",
"only_highquality_apps": "إلا التطبيقات ذات الجودة العالية", "only_highquality_apps": "إلا التطبيقات ذات الجودة العالية",
"only_decent_quality_apps": "إلا التطبيقات ذات الجودة الحسنة", "only_decent_quality_apps": "إلا التطبيقات ذات الجودة الحسنة",
"confirm_update_system": "أمتأكد مِن أنك تريد تحديث كافة حزم النظام؟", "confirm_update_system": "أمتأكد مِن أنك تريد تحديث كافة حزم النظام؟",
"experimental_warning": "تحذير: هذه الميزة تجريبية ولا يجب اعتبارها مستقرة ، يجب ألا تستخدمها إلا إذا كنت تعرف ما تفعله.", "experimental_warning": "تحذير: هذه الميزة تجريبية ولا تعتبر مستقرة ، يجب ألا تستخدمها إلا إذا كنت تعرف ما تفعله.",
"hook_conf_ynh_currenthost": "النطاق الرئيسي الحالي",
"logs_package": "سِجلّ إدارة حزم ديبيان", "logs_package": "سِجلّ إدارة حزم ديبيان",
"error_connection_interrupted": "أغلَق الخادم الاتصال بدلاً من الاستجابة. هل تم إعادة تشغيل NGINX أو تم إيقاف تشغيل واجهة برمجة تطبيقات yunohost-api لسبب ما؟", "error_connection_interrupted": "أغلق الخادم الاتصال بدلاً من الاستجابة. هل تم إعادة تشغيل Nginx أو تم إيقاف تشغيل واجهة برمجة تطبيقات YunoHost؟ (رمز/رسالة الخطأ: )",
"warnings": "{count} تحذيرات", "warnings": "{count} تحذيرات",
"unignore": "إلغاء التجاهل", "unignore": "إلغاء التجاهل",
"since": "منذ", "since": "منذ",
@ -220,407 +274,5 @@
"app_state_lowquality": "جودة ضعيفة", "app_state_lowquality": "جودة ضعيفة",
"all": "كلها", "all": "كلها",
"group_explain_visitors": "هذا فريق خاص بالزوار المجهولين", "group_explain_visitors": "هذا فريق خاص بالزوار المجهولين",
"group_visitors": "الزوار", "group_visitors": "الزوار"
"postinstall": {
"force": "فرض ما بعد التنصيب",
"title": "ما بعد التنصيب",
"user": {
"title": "إنشاء أول مستخدم (مدير)"
}
},
"postinstall_set_domain": "اختيار اسم النطاق الرئيسي",
"words": {
"browse": "استكشف",
"default": "افتراضي",
"link": "الرابط",
"none": "لا شيء",
"separator": "، ",
"collapse": "طيّ",
"valid": "صالح"
},
"app_install_parameters": "إعدادات التنصيب",
"code": "الشفرة المصدرية",
"common": {
"firstname": "الاسم",
"lastname": "اللقب"
},
"domain": {
"config": {
"edit": "تعديل اعدادات اسم النطاق",
"title": "ضبط اسم النطاق"
},
"dns": {
"auto_config": "ضبط تلقائي لتسجيلات خدمة أسماء النطاقات",
"push": "إرسال التسجيلات إلى سِجِلّ أسماء النطاقات",
"auto_config_ok": "يبدو أن الضبط التلقائي على ما يرام!",
"edit": "تعديل إعدادات نظام أسماء النطاقات",
"auto_config_zone": "منطقة DNS الحالية",
"methods": {
"auto": "تلقائي",
"handled_in_parent": "يُدار في اسم النطاق الرئيسي",
"manual": "يدوي",
"none": "لا شيء",
"semi_auto": "نصف آلي"
},
"manual_config": "تسجيلات نظام أسماء النطاقات المقترَحة للإعداد اليدوي",
"push_force": "الكتابة فوق السجلات الموجودة"
},
"info": {
"apps_on_domain": "التطبيقات المُنصّبة على اسم النطاق",
"certificate_authority": "الهيئة الموثِّقة لشهادة SSL",
"registrar": "مكتب التسجيل"
},
"toggle_subdomains": "عرض أسماء النطاقات الفرعية",
"types": {
"main_domain": "اسم النطاق الرئيسي"
},
"cert": {
"valid_for": "صالحة لمدة {days}",
"types": {
"letsencrypt": "Let's Encrypt",
"other": "آخر/مجهول",
"selfsigned": "موقّعة ذاتيا"
}
},
"see_parent_domain": "إطّلع على اسم النطاق الرئيسي"
},
"placeholder": {
"domain": "my-domain.com",
"groupname": "اسم فريقي",
"firstname": "فلان",
"lastname": "الفلاني",
"username": "foulanealallani",
"fullname": "فلان علان",
"file": "استعراض ملف أو سحبه وإفلاته"
},
"human_routes": {
"domains": {
"add": "إضافة اسم النطاق '{name}'",
"delete": "حذف اسم النطاق '{name}'",
"set_default": "تعيين '{name}' كاسم نطاق افتراضي",
"update_config": "تحديث لوح '{id}' لضبط اسم النطاق '{name}'",
"cert_install": "تنصيب شهادة لـ '{name}'",
"cert_renew": "تجديد شهادة '{name}'",
"push_dns_changes": "دفع سجلات DNS إلى مكتب التسجيل لـ '{name}'"
},
"services": {
"start": "تشغيل خدمة '{name}'",
"stop": "إيقاف خدمة '{name}'",
"restart": "إعادة تشغيل الخدمة '{name}'"
},
"groups": {
"create": "انشاء فريق '{name}'",
"delete": "حذف الفريق '{name}'",
"remove": "حذف '{user}' مِن الفريق '{name}'",
"add": "إضافة '{user}' إلى الفريق '{name}'"
},
"update": "البحث عن تحديثات",
"apps": {
"install": "تنصيب التطبيق '{name}'",
"uninstall": "إلغاء تنصيب التطبيق '{name}'",
"change_url": "تعديل الرابط الشبكي للوصول إلى '{name}'",
"set_default": "تحويل جذر النطاق '{domain}' إلى '{name}'",
"dismiss_notification": "تجاهل إشعارات '{name}'"
},
"backups": {
"create": "إنشاء نسخة احتياطية",
"delete": "حذف النسخة الإحتياطية '{name}'",
"restore": "استعادة النسخة الإحتياطية '{name}'"
},
"diagnosis": {
"ignore": {
"error": "تجاهل خطأ",
"warning": "تجاهل تحذير"
},
"run": "تنفيذ الفحص",
"run_specific": "إطلاق الفحص '{description}'",
"unignore": {
"warning": "إلغاء تجاهل التحذير",
"error": "إلغاء تجاهل خطأ"
}
},
"postinstall": "تنفيذ ما بعد التنصيب",
"upgrade": {
"apps": "تحديث كافة التطبيقات",
"app": "تحديث التطبيق '{app}'",
"system": "تحديث النظام"
},
"users": {
"delete": "حذف المستخدم '{name}'",
"update": "تحديث المستخدم '{name}'",
"create": "إنشاء المستخدم '{name}'"
},
"reboot": "إعادة تشغيل الخادم",
"shutdown": "إطفاء الخادم",
"reconnecting": "محاولة إعادة الإتصال",
"firewall": {
"upnp": "{action} UPnP",
"ports": "{action} منفذ {port} ({protocol}, {connection})"
},
"permissions": {
"add": "السماح لـ '{name}' بالنفاذ إلى '{perm}'"
},
"migrations": {
"skip": "تجاهل التهجيرات",
"run": "إطلاق الهجرات"
},
"settings": {
"update": "تحديث الإعدادات العامة لـ '{panel}'"
},
"share_logs": "توليد رابط لسِجِل '{name}'"
},
"confirm_app_install": "متأكد من أنك تريد تنصيب هذا التطبيق؟",
"footer": {
"help": "بحاجة إلى مساعدة؟",
"donate": "تبرّع",
"documentation": "المستندات"
},
"tools_webadmin": {
"experimental": "الوضع التجريبي",
"fallback_language": "اللغة المرجعية",
"language": "اللغة",
"fallback_language_description": "اللغة التي سيتم استخدامها إن كانت الترجمة غير متوفرة في اللغة الرئيسية.",
"theme": "الإنتقال إلى الوضع المظلم",
"transitions": "تمكين الحركة عند الإنتقال بين الصفحات",
"cache": "التخزين المؤقت",
"cache_description": "تذكّرْ تعطيل ذاكرة التخزين المؤقت إن كنت تُخطّطُ للعَمَل مَع واجهةِ سطر الأوامر بينما تُبحِر على واجهة الويب الإدارية هذه (Web-admin)."
},
"api_error": {
"view_error": "أظهر الخطأ",
"error_message": "رسالة الخطأ:",
"sorry": "نعتذر عن ذلك.",
"server_said": "أثناء تنفيذ الإجراء، أجاب الخادم كالتالي:",
"info": "المعلومات التالية قد تكون مفيدة للشخص الذي يساعدك:"
},
"app_show_categories": "اظهر كافة الفئات",
"cancel": "إلغاء",
"perform": "تنفيذ",
"readme": "اقرأني",
"tools_webadmin_settings": "إعدادات واجهة الويب الإدارية",
"search": {
"for": "البحث عن {items}…"
},
"users_import": "استيراد مستخدمين",
"users_export": "تصدير المستخدمين",
"users_import_csv_file": "ملف CSV",
"users_import_update": "تحديث المستخدمين الموجودين",
"yunohost_admin": "مدير YunoHost",
"api": {
"processing": "يقوم الخادم بتنفيذ الإجراء…",
"query_status": {
"error": "فشل",
"pending": "جارٍ",
"success": "انتهى بنجاح",
"warning": "اكتمل بنجاح مع وجود أخطاء أو تنبيهات"
},
"reconnecting": {
"title": "محاولة الإتصال بالخادم…",
"reason": {
"unknown": "تم اغلاق الاتصال بالخادم لأسباب مجهولة.",
"reboot": "يُعاد تشغيل خادمك ولن يُمكن النفاذ إليه لفترة من الوقت. سيتاح الولوج إليه عند تتمة إعادة تشغيله.",
"upgrade_system": "تم إغلاق الاتصال بالخادم بسبب ترقية يونوهوست.في انتظار إمكانية الوصول للخادم مرة أخرى…",
"shutdown": "تم إيقاف تشغيل خادمك ولم يعد قابلا للوصول إليه.قم بتشغيله مرة أخرى وسيتاح لك تسجيل الدخول بمجرد إمكانية الوصول إليه."
},
"failed": "يبدو أن الخادم لا يستجيب. يمكنك محاولة إعادة الاتصال مرة أخرى أو محاولة تشغيل`systemctl restart yunohost-api` من خلال ssh.",
"success": "يمكن الآن الوصول إلى الخادم! يمكنك محاولة تسجيل الدخول"
},
"partial_logs": "[…] (تحقق من السجل للحصول على السجلات الكاملة)"
},
"dead": "غير نشط",
"unknown": "مجهول",
"address": {
"domain_description": {
"domain": "اختر اسم نطاق.",
"email": "اختر اسم نطاق لبريدك الإلكتروني."
},
"local_part_description": {
"domain": "اختر اسم نطاق فرعي.",
"email": "اختر جزءًا محليًا لبريدك الإلكتروني."
}
},
"enabled": "مفعّل",
"error": "خطأ",
"experimental": "تجريبي",
"api_errors_titles": {
"APINotRespondingError": "إنّ واجهة برمجة التطبيقات لـ YunoHost لا تجيب",
"APIError": "صادف YunoHost خطأ غير متوقع",
"APIBadRequestError": "واجه YunoHost خطأ",
"APIInternalError": "صادف YunoHost خطأ محليا",
"APIConnexionError": "صادف YunoHost خطأ في الإتصال",
"APINotFoundError": "تعذر على YunoHost API العثور على مسار"
},
"api_waiting": "في انتظار ردّ الخادم…",
"app_choose_category": "اختر فئة",
"retry": "حاول مجددا",
"permission_main": "التسمية الرئيسية",
"user_emailforward_add": "إضافة عنوان بريد إلكتروني للتحويل",
"select_none": "الغاء اختيار الكل",
"go_back": "العودة",
"form_errors": {
"pattern": "{type}",
"remote": "{message}",
"invalid_form": "تحتوي الإستمارة على بعض الأخطاء.",
"passwordMatch": "كلمات السر لا تتطابق.",
"required": "هذا الحقل مطلوب.",
"appRepoUrl": "يُتوقع أن تبدو الروابط الشبكية لمستودعات تطبيقات YuNoHost على الشكل التالي: https://domain.tld/path/to/repo_ynh",
"alpha": "يجب أن تحتوي السلسلة على حروف فقط.",
"notInUsers": "المستخدم '{value}' موجود مِن قَبل.",
"number": "يجب أن تكون القيمة رقمًا.",
"passwordLenght": "يجب أن تتكوّن الكلمة السرية على الأقل من 8 حروف.",
"between": "يتوجّب أن تكون القيمة ما بين {min} و {max}.",
"maxValue": "يجب أن تكون القيمة عددًا أصغر مِن أو يساوي {max}.",
"name": "لا ينبغي أن تحتوي الأسماء على حروف خاصة باستثناء <code> ,.'-</code>",
"minValue": "يجب أن تكون القيمة عددًا أكبر مِن أو يساوي {min}.",
"dynDomain": "اسم نطاق غير صالح: يجب أن يتكون من أحرف أبجدية رقمية صغيرة وأحرف شرطة فقط",
"domain": "اسم نطاق غير صالح: يجب أن يتكون من أحرف أبجدية رقمية صغيرة وأحرف نقطية وشرطة فقط"
},
"history": {
"methods": {
"POST": "تشغيل/إنشاء",
"PUT": "تعديل",
"GET": "قراءة",
"DELETE": "حذف"
},
"title": "التاريخ",
"last_action": "آخر إجراء:",
"is_empty": "لا شيء في التاريخ في الوقت الحالي."
},
"users_import_delete": "حذف المستخدمين غير المُدرَجين",
"group_admins": "المُدراء",
"users_import_delete_others": "حذف المستخدمين غير المُدرَجين",
"hook_data_xmpp": "بيانات XMPP",
"app": {
"integration": {
"title": "إدماج YunoHost",
"multi_instance": {
"false": "لا يمكن تنصيبه إلا مرة واحدة",
"true": "يمكن تنصيبه عدة مرات"
},
"sso": {
"false": "نظام إثبات الهوية SSO غير متوفر",
"true": "نظام إثبات الهوية SSO متوفر",
"?": "لا توجد معلومات حول تكامل تسجيل الدخول الأحادي"
},
"archs": "البِنَى المدعومة:",
"ldap": {
"false": "لا يستخدم حسابات يونو هوست لتسجيل الدخول (LDAP)",
"true": "استخدم حسابات YunoHost لتسجيل الدخول (LDAP)"
},
"resources": "الاستخدام النموذجي للموارد: {ram} RAM ، قرص {disk}"
},
"links": {
"admindoc": "الدليل الرسمي للمدير",
"code": "المستودع الرسمي الشفرة المصدرية",
"forum": "المواضيع المتعلقة بهذا التطبيق على منتدى YunoHost",
"package": "مستودع حزمة YunoHost",
"title": "الروابط",
"userdoc": "الدليل الرسمي للمستخدم",
"website": "الموقع الرسمي",
"license": "الرخصة"
},
"potential_alternative_to": "بديل محتمل لـ:",
"upgrade": {
"confirm": {
"apps": "التطبيقات التي سيتم تحديثها",
"title": "تأكيد تحديث التطبيقات"
},
"continue": "الاستمرار إلى التطبيق التالي",
"notifs": {
"pre": {
"title": "كن حذرا!",
"alert": "يجب عليك التحقق من هذه الإشعارات قبل الترقية، فقد تكون هناك أشياء مهمة يجب معرفتها."
},
"post": {
"alert": "يبدو أن التحديث سار على ما يرام!\nإليك بعض المعلومات التي يعتقد مشرف الحُزْمَة أنه من المهم معرفتها حول هذه الترقية.\nيمكنك العثور عليها في صفحة المعلومات الخاصة بالتطبيق.",
"title": "إشعارات ما بعد الترقية لـ '{name}'"
}
},
"stop": "إلغاء تحديث التطبيقات التالية"
},
"installed_version": "النسخة المُنصَّبة:",
"open_this_app": "إفتح هذا التطبيق",
"doc": {
"about": {
"title": "عن",
"description": "الوصف"
},
"admin": {
"title": "دليل المدير"
},
"notifications": {
"title": "الإشعارات",
"post_upgrade": "ملاحظات ما بعد التحديث",
"post_install": "ملاحظات ما بعد التنصيب",
"understood": "فهمت"
}
},
"info": {
"forum": "ابحث أو إطرح سؤالك في المنتدى!",
"problem": "مشكلة مع هذا التطبيق؟",
"config_panel_error_please_report": "الرجاء إبلاغ فريق YunoHost عن هذا الخطأ قصد تصحيحه!",
"config_panel_error": "خطأ ما يمنع لوح الضبط من الظهور:"
},
"install": {
"license": "الرخصة: {license}",
"notifs": {
"pre": {
"warning": "ما عليك معرفته قبل التنصيب",
"critical": "لا يمكن تنصيب التطبيق",
"danger": "مِن المحتمَل أن ينجرّ عن تنصيب التطبيق مشاكل"
},
"post": {
"title": "إشعارات ما بعد التثبيت لـ '{name}'",
"alert": "يبدو أن عملية التثبيت تمت بنجاح!\n إليك بعض الإشعارات التي يعتبرها مسؤول الحُزْمَة مهمة للتعرف عليها.\nيمكنك قراءتها ثانية في صفحة معلومات التطبيق."
}
},
"version": "الإصدار الحالي: {version}",
"problems": {
"ignore": "أفهم تمامًا أنّ هذا التنصيب قد يُكسّر نظام التشغيل ولكنني أريد التجريب.",
"install": "هذا التطبيق مُنصّب مِن قبل ولا يمكن تنصيبه إلّا مرة واحدة."
},
"try_demo": "تجريب العرض التوضيحي"
},
"antifeatures": "لدى هذا التطبيق ميزات قد لا تُعجبك:"
},
"hook_conf_manually_modified_files": "ملفات ضبط تم تعديلها يدويا",
"hook_conf_ynh_settings": "إعدادات YunoHost",
"logs_suboperations": "الإجراءات الفرعية",
"permission_show_tile_enabled": "مرئي كلوحة على بوابة المستخدم",
"tools_yunohost_settings": "إعدادات YuNoHost",
"permission_corresponding_url": "العنوان التشعبي URL المقابل",
"manage_groups": "إدارة الفِرَق",
"user_emailaliases_add": "إضافة عنوان بريد إلكتروني مستعار",
"wrong_password_or_username": "اسم المستخدم أو كلمة المرور خاطئة",
"app_manage_label_and_tiles": "إدارة الملصقات واللوحات",
"items": {
"installed_apps": "لا توجد تطبيقات مثبّة | تطبيق مُنصّب | {c} تطبيقات مُنصّبة",
"apps": "لا تطبيق | تطبيق | {c} تطبيقات",
"users": "بدون مستخدم | مستخدم | {c} مستخدمين"
},
"domain_dns_push_managed_in_parent_domain": "تتم إدارة ميزة سجلات DNS التلقائية في النطاق الرئيسي <a href='#/domains/{parent_domain}/dns'> {parent_domain} </a>.",
"tip_about_user_email": "يتم إنشاء المستخدمين باستخدام عنوان بريد إلكتروني مرتبط (وحساب XMPP) بالشكل التالي username@domain.tld. يمكن لاحقا للمدير أو المستخدم إضافة أسماء مستعارة إضافية للبريد الإلكتروني وإعادة توجيهات للبريد الإلكتروني.",
"app_state_broken": "مُكسَّر",
"diagnosis_explanation": "ستحاول ميزة التشخيص تحديد المشكلات الشائعة في الجوانب المختلفة لخادمك للتأكد من أن كل شيء يعمل بسلاسة. يتم تشغيل التشخيص تلقائيًا مرتين يوميًا ويتم إرسال بريد إلكتروني إلى المدير في حالة العثور على مشكلات. لاحظ أن بعض الفحوصات قد لا تكون ذات صلة إذا كنت لا ترغب في استخدام بعض الميزات المحددة (على سبيل المثال XMPP) أو قد تفشل إذا كان لديك إعداد معقد. في مثل هذه الحالات ، وإن كنت تعرف ما تفعله ، فلا بأس في تجاهل المشكلات أو التحذيرات المرتبطة.",
"diagnosis_first_run": "ستحاول ميزة التشخيص تحديد المشكلات الشائعة في الجوانب المختلفة لخادمك للتأكد من أن كل شيء يعمل بسلاسة. فضلًا لا داعي للذعر إن رأيت مجموعة من الأخطاء مباشرة بعد إعداد خادمك: يُفترض للميزة مساعدتك في تحديد المشكلات وإرشادك لإصلاحها. سيتم أيضًا تشغيل التشخيص تلقائيًا مرتين يوميًا ويتم إرسال بريد إلكتروني إلى المدير إن تم العثور على مشكلات.",
"app_state_broken_explanation": "إنّ هذا التطبيق مكسَّر حاليا ولا يمكن تنصيبه حسب الفحوصات الآلية لـ YunoHost",
"details_about": "إظهار المزيد من التفاصيل حول {subject}",
"disabled": "مُعطَّل",
"migrations_disclaimer_check_message": "قرأتُ وفهمتُ وثيقة إخلاء المسؤولية",
"day_validity": " انتهت مدة صلاحيتها | يوم واحد | {count} أيام",
"label_for_manifestname_help": "هذا هو الاسم المعروض في بوابة المستخدمين. ويمكن تغيير ذلك فيما بعد.",
"good_practices_about_user_password": "إنّك مُقبِل على تعيين كلمة مرور جديدة للمستخدم. يجب أن تتكون كلمة المرور من 8 أحرف على الأقل ، أخذا بعين الاعتبار أنه يوصى باستخدام كلمة مرور أطول (مثل عبارة مرور) و / أو مجموعة من الأحرف (الأحرف الكبيرة والصغيرة والأرقام والأحرف الخاصة).",
"group_explain_all_users": "هذا فريق خاص يتضمّن كافة حسابات المستخدِمين على الخادم",
"group_specific_permissions": "تصريحات للمستخدمين الفرديين",
"hook_data_xmpp_desc": "إعدادات غرف الدردشة والمستخدمين والملفات المحملة",
"mailbox_quota_example": "700M قرص مضغوط و 4700M قرص DVD",
"pending_migrations": "هناك عمليات ترحيل في انتظار أن تكتمل. يرجى الانتقال إلى <a href='#/tools/migrations'>Tools > Migrations لتشغيلها</a>.",
"group_format_name_help": "يمكنك استخدام الأحرف الأبجدية الرقمية والشرطة السفلية",
"users_import_confirm_destructive": "هل أنت متحقِّق أنك تريد حذف المستخدمين الذين ليسوا موجودين في هذا المِلَفّ؟",
"users_import_update_desc": "إذا تم اختياره، سيجري تحديث جميع المستخدمين الموجودين في مِلَفّ CSV بالقيمة الجديدة",
"purge_user_data_warning": "تطهير بيانات المستخدم لا رجعة فيه. تيقن من أنك تعرف ما تفعله!",
"app_state_highquality_explanation": "تم دمج هذا التطبيق بشكل جيد مع YunoHost لمدة عام على الأقل.",
"migrations_disclaimer_not_checked": "يتطلب هذا الترحيل مراجعة إخلاء المسؤولية الخاص به قبل تنفيذه.",
"traceback": "التتبع",
"api_not_found": "يبدو أن واجهة الويب الإدارية قد حاولت الاستعلام عن شيء غير موجود.",
"users_import_delete_desc": "إذا تم تحديده، سيتم حذف (وإزالة) جميع المستخدمين الحاليين غير الموجودين في مِلَفّ CSV."
} }

View file

@ -3,7 +3,7 @@
"add": "যুক্ত করুন", "add": "যুক্ত করুন",
"administration_password": "পরিচালনাকারীর পাসওয়ার্ড", "administration_password": "পরিচালনাকারীর পাসওয়ার্ড",
"all_apps": "সকল অ্যাপ্লিকেশান", "all_apps": "সকল অ্যাপ্লিকেশান",
"api_not_responding": "এপিআই সাড়া দিচ্ছে না?", "api_not_responding": "এপিআই সাড়া দিচ্ছে না",
"password": "পাসওয়ার্ড", "password": "পাসওয়ার্ড",
"ok": "ঠিক আছে" "ok": "ঠিক আছে"
} }

View file

@ -11,6 +11,8 @@
"app_install_custom_no_manifest": "No s'ha trobat el fitxer manifest.json", "app_install_custom_no_manifest": "No s'ha trobat el fitxer manifest.json",
"app_make_default": "Establir com a predeterminat", "app_make_default": "Establir com a predeterminat",
"app_state_inprogress": "encara no funciona", "app_state_inprogress": "encara no funciona",
"app_state_notworking": "no funciona",
"app_state_working": "funcionant",
"applications": "Aplicacions", "applications": "Aplicacions",
"archive_empty": "Arxiu buit", "archive_empty": "Arxiu buit",
"backup": "Còpia de seguretat", "backup": "Còpia de seguretat",
@ -29,7 +31,7 @@
"confirm_firewall_allow": "Està segur de voler obrir 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_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_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": "Segur voleu instal·lar aquesta aplicació a «/»? No podreu instal·lar cap altra aplicació a {domain}", "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?", "confirm_migrations_skip": "Saltar-se les migracions no està recomanat. Està segur de voler continuar?",
"confirm_postinstall": "Està a punt de començar el procés de post-instal·lació en el domini {domain}. Pot tardar uns minuts, *no interrompi la operació*.", "confirm_postinstall": "Està a punt de començar el procés de post-instal·lació en el domini {domain}. Pot tardar uns minuts, *no interrompi la operació*.",
"confirm_restore": "Està segur de voler restaurar {name}?", "confirm_restore": "Està segur de voler restaurar {name}?",
@ -45,19 +47,26 @@
"connection": "Connexió", "connection": "Connexió",
"created_at": "Creat a", "created_at": "Creat a",
"custom_app_install": "Instal·lar una aplicació personalitzada", "custom_app_install": "Instal·lar una aplicació personalitzada",
"custom_app_url_only_github": "Únicament des de GitHub",
"delete": "Suprimir", "delete": "Suprimir",
"description": "Descripció", "description": "Descripció",
"domain_dns_conf_is_just_a_recommendation": "Aquesta secció mostra la configuració *recomanada*. Aquesta pàgina *no* configura el DNS. És la vostra responsabilitat configurar la zona DNS al vostre registrador DNS en acord amb aquesta recomanació.", "domain_dns_conf_is_just_a_recommendation": "Aquesta pàgina mostra la configuració *recomanada*. Aquesta pàgina *no* configura el DNS. És la seva responsabilitat configurar la zona DNS al seu registrar DNS en acord amb aquesta recomanació.",
"diagnosis": "Diagnòstic", "diagnosis": "Diagnòstic",
"disable": "Desactivar", "disable": "Desactivar",
"dns": "DNS", "dns": "DNS",
"domain_add": "Afegir domini", "domain_add": "Afegir domini",
"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…",
"domain_default_desc": "Els usuaris iniciaran sessió al domini predeterminat.", "domain_default_desc": "Els usuaris iniciaran sessió al domini predeterminat.",
"domain_default_longdesc": "Aquest és el seu domini predeterminat.", "domain_default_longdesc": "Aquest és el seu domini predeterminat.",
"domain_delete_longdesc": "Eliminar aquest domini", "domain_delete_longdesc": "Eliminar aquest domini",
"domain_dns_config": "Configuració de DNS", "domain_dns_config": "Configuració de DNS",
"domain_dns_longdesc": "Veure la configuració DNS", "domain_dns_longdesc": "Veure la configuració DNS",
"domain_name": "Nom del domini", "domain_name": "Nom del domini",
"domain_visit": "Visitar",
"domain_visit_url": "Visitar {url}",
"domains": "Dominis", "domains": "Dominis",
"download": "Descarregar", "download": "Descarregar",
"enable": "Activar", "enable": "Activar",
@ -68,8 +77,15 @@
"form_input_example": "Exemple: {example}", "form_input_example": "Exemple: {example}",
"home": "Inici", "home": "Inici",
"hook_adminjs_group_configuration": "Configuració del sistema", "hook_adminjs_group_configuration": "Configuració del sistema",
"hook_conf_ldap": "Base de dades dusuaris", "hook_conf_cron": "Tasques automàtiques",
"hook_conf_ldap": "Base de dades LDAP",
"hook_conf_nginx": "NGINX",
"hook_conf_ssh": "SSH",
"hook_conf_ssowat": "SSOwat",
"hook_conf_xmpp": "XMPP",
"hook_conf_ynh_certs": "Certificats SSL", "hook_conf_ynh_certs": "Certificats SSL",
"hook_conf_ynh_firewall": "Tallafoc",
"hook_conf_ynh_mysql": "Contrasenya de MySQL",
"hook_data_home": "Dades d'usuari", "hook_data_home": "Dades d'usuari",
"hook_data_home_desc": "Les dades d'usuari són a /home/USUARI", "hook_data_home_desc": "Les dades d'usuari són a /home/USUARI",
"hook_data_mail": "Correu", "hook_data_mail": "Correu",
@ -98,7 +114,8 @@
"migrations_done": "Migracions anteriors", "migrations_done": "Migracions anteriors",
"migrations_no_pending": "No hi ha migracions en espera", "migrations_no_pending": "No hi ha migracions en espera",
"migrations_no_done": "No hi ha migracions anteriors", "migrations_no_done": "No hi ha migracions anteriors",
"multi_instance": "Es pot instal·lar diverses vegades", "multi_instance": "Instàncies múltiples",
"myserver": "elmeuservidor",
"next": "Següent", "next": "Següent",
"no": "No", "no": "No",
"ok": "OK", "ok": "OK",
@ -112,12 +129,13 @@
"postinstall_domain": "Aquest és el primer nom de domini vinculat al vostre servidor YunoHost, però també el que utilitzaran els usuaris del servidor per accedir al portal d'autenticació. Així doncs serà visible per tothom, escolliu-lo amb cura.", "postinstall_domain": "Aquest és el primer nom de domini vinculat al vostre servidor YunoHost, però també el que utilitzaran els usuaris del servidor per accedir al portal d'autenticació. Així doncs serà visible per tothom, escolliu-lo amb cura.",
"postinstall_intro_1": "Felicitats! YunoHost s'ha instal·lat correctament.", "postinstall_intro_1": "Felicitats! YunoHost s'ha instal·lat correctament.",
"postinstall_intro_2": "Falten dos passos més per activar els serveis del seu servidor.", "postinstall_intro_2": "Falten dos passos més per activar els serveis del seu servidor.",
"postinstall_intro_3": "Pot obtenir més informació visitant <a href='//yunohost.org/en/install/hardware:vps_debian#fa-cog-proceed-with-the-initial-configuration' target='_blank'>la pàgina de documentació</a>", "postinstall_intro_3": "Pot obtenir més informació visitant <a href='//yunohost.org/postinstall' target='_blank'>la pàgina de documentació</a>",
"postinstall_password": "Aquesta contrasenya serà utilitzada per administrar tot en el servidor. Prengui el temps d'escollir una bona contrasenya.",
"previous": "Precedent", "previous": "Precedent",
"protocol": "Protocol", "protocol": "Protocol",
"restore": "Restaurar", "restore": "Restaurar",
"running": "En execució", "running": "En execució",
"save": "Desar", "save": "Guardar",
"service_start_on_boot": "Iniciar a l'engegada", "service_start_on_boot": "Iniciar a l'engegada",
"services": "Serveis", "services": "Serveis",
"set_default": "Establir com a predeterminat", "set_default": "Establir com a predeterminat",
@ -135,10 +153,17 @@
"system_upgrade_all_packages_btn": "Actualitza tots els paquets", "system_upgrade_all_packages_btn": "Actualitza tots els paquets",
"tcp": "TCP", "tcp": "TCP",
"tools": "Eines", "tools": "Eines",
"tools_adminpw": "Canviar la contrasenya d'administració",
"tools_adminpw_current": "Contrasenya actual",
"tools_adminpw_current_placeholder": "Introdueixi la contrasenya actual",
"tools_reboot": "Reiniciar el servidor", "tools_reboot": "Reiniciar el servidor",
"tools_reboot_btn": "Reiniciar", "tools_reboot_btn": "Reiniciar",
"tools_reboot_done": "Reiniciant....",
"tools_rebooting": "El seu servidor s'està reiniciant. Per tornar a l'interfície web d'administració heu d'esperar que el servidor es troni a engegar. Podeu verificar-ho refrescant la pàgina (F5).",
"tools_shutdown": "Apagar el servidor", "tools_shutdown": "Apagar el servidor",
"tools_shutdown_btn": "Apagar", "tools_shutdown_btn": "Apagar",
"tools_shutdown_done": "S'està apagant...",
"tools_shuttingdown": "El servidor s'està apagant. Mentre estigui apagat no podrà utilitzar la web d'administració.",
"tools_shutdown_reboot": "Apagar/Reiniciar", "tools_shutdown_reboot": "Apagar/Reiniciar",
"udp": "UDP", "udp": "UDP",
"unauthorized": "No autoritzat", "unauthorized": "No autoritzat",
@ -158,13 +183,39 @@
"users": "Usuaris", "users": "Usuaris",
"users_new": "Nou usuari", "users_new": "Nou usuari",
"users_no": "No hi ha usuaris.", "users_no": "No hi ha usuaris.",
"wrong_password": "Contrasenya incorrecta",
"yes": "Sí", "yes": "Sí",
"certificate_alert_not_valid": "CRÍTIC: El certificat actual no és vàlid! HTTPS no funcionarà!",
"certificate_alert_selfsigned": "Atenció: Està utilitzant un certificat auto-signat. Els navegadors mostraran una advertència als nous visitant!",
"certificate_alert_letsencrypt_about_to_expire": "El certificat actual està a punt de caducar. Aviat s'hauria de renovar automàticament.",
"certificate_alert_about_to_expire": "Atenció: El certificat actual s'està a punt de caducar! NO és renovarà automàticament!",
"certificate_alert_good": "Bé, el certificat actual sembla correcte!",
"certificate_alert_great": "Perfecte! Esteu utilitzant un certificat Let's Encrypt vàlid!",
"certificate_alert_unknown": "Estat desconegut",
"certificate_manage": "Administrar el certificat SSL", "certificate_manage": "Administrar el certificat SSL",
"ssl_certificate": "Certificat SSL",
"confirm_cert_install_LE": "Està segur de voler instal·lar un certificat Let's Encrypt per aquest domini?",
"confirm_cert_regen_selfsigned": "Esteu segur que voleu regenerar un certificat auto-signat per aquest domini?",
"confirm_cert_manual_renew_LE": "Esteu segur de voler renovar manualment el certificat Let's Encrypt per aquest domini ara?",
"confirm_cert_revert_to_selfsigned": "Esteu segur de voler revertir aquest domini a un certificat auto-signat?",
"certificate": "Certificat", "certificate": "Certificat",
"certificate_status": "Estat del certificat",
"certificate_authority": "Autoritat de certificació",
"validity": "Validesa",
"domain_is_eligible_for_ACME": "Aquest domini sembla estar configurat correctament per instal·lar el certificat Let's Encrypt!",
"run": "Executar", "run": "Executar",
"domain_not_eligible_for_ACME": "Aquest domini sembla que no està configurat per a un certificat Let's Encrypt. Comprova la configuració DNS i la accessibilitat del servidor HTTP. Les seccions «registres DNS» i «Web» de <a href='#/diagnosis'>la pàgina de diagnòstic</a> pot ajudar-vos a entendre el que està mal configurat.",
"install_letsencrypt_cert": "Instal·la un certificat Let's Encrypt",
"manually_renew_letsencrypt_message": "El certificat es renovarà automàticament durant els últims 15 dies de validesa. El podeu renovar manualment si ho desitgeu. (No recomanat).",
"manually_renew_letsencrypt": "Renovar manualment ara",
"regenerate_selfsigned_cert_message": "Si voleu, podeu regenerar el certificat auto-signat.",
"regenerate_selfsigned_cert": "Regenerar el certificat auto-signat",
"revert_to_selfsigned_cert_message": "Si realment ho desitja, pot tornar a instal·lar el certificat auto-signat. (No recomanat)",
"revert_to_selfsigned_cert": "Tornar a un certificat auto-signat",
"user_emailforward": "Reenviament de E-mail", "user_emailforward": "Reenviament de E-mail",
"user_new_forward": "noureenviar@dominiextern.org", "user_new_forward": "noureenviar@dominiextern.org",
"all_apps": "Totes les aplicacions", "all_apps": "Totes les aplicacions",
"app_no_actions": "Aquesta aplicació no té cap acció",
"confirm_install_app_lowquality": "Atenció: aquesta aplicació funciona però encara no està ben integrada a YunoHost. Algunes característiques com la identificació única i la còpia de seguretat i restauració de l'aplicació poden no estar presents.", "confirm_install_app_lowquality": "Atenció: aquesta aplicació funciona però encara no està ben integrada a YunoHost. Algunes característiques com la identificació única i la còpia de seguretat i restauració de l'aplicació poden no estar presents.",
"confirm_install_app_inprogress": "ATENCIÓ! Aquesta aplicació encara és experimental (si no és que no funciona directament) i és probable que trenqui el sistema! No hauríeu d'instal·lar-la a no ser que sapigueu el que feu. Esteu segurs de voler córrer aquest risc?", "confirm_install_app_inprogress": "ATENCIÓ! Aquesta aplicació encara és experimental (si no és que no funciona directament) i és probable que trenqui el sistema! No hauríeu d'instal·lar-la a no ser que sapigueu el que feu. Esteu segurs de voler córrer aquest risc?",
"error_connection_interrupted": "El servidor a tancat la connexió en lloc de respondre. S'han reiniciat o aturat nginx o yunohost-api per alguna raó?", "error_connection_interrupted": "El servidor a tancat la connexió en lloc de respondre. S'han reiniciat o aturat nginx o yunohost-api per alguna raó?",
@ -190,12 +241,17 @@
"logs_more": "Mostra més línies", "logs_more": "Mostra més línies",
"select_all": "Selecciona-ho tot", "select_all": "Selecciona-ho tot",
"select_none": "No en seleccionis cap", "select_none": "No en seleccionis cap",
"unmaintained": "No mantingut",
"purge_user_data_checkbox": "Purga les dades de {name}? (Això suprimirà el contingut de la carpeta home i mail.)", "purge_user_data_checkbox": "Purga les dades de {name}? (Això suprimirà el contingut de la carpeta home i mail.)",
"purge_user_data_warning": "Purgar les dades de l'usuari no és reversible. Assegureu-vos de saber el que esteu fent!", "purge_user_data_warning": "Purgar les dades de l'usuari no és reversible. Assegureu-vos de saber el que esteu fent!",
"version": "Versió", "version": "Versió",
"confirm_update_system": "Esteu segurs de voler actualitzar tots els paquets del sistema?", "confirm_update_system": "Esteu segurs de voler actualitzar tots els paquets del sistema?",
"hook_conf_ynh_currenthost": "Domini principal actual",
"app_state_inprogress_explanation": "El desenvolupador d'aquesta aplicació ha dit que encara no està preparada per fer-ne un ús en producció. SIGUEU PRUDENTS!", "app_state_inprogress_explanation": "El desenvolupador d'aquesta aplicació ha dit que encara no està preparada per fer-ne un ús en producció. SIGUEU PRUDENTS!",
"app_state_highquality_explanation": "Aquesta aplicació està ben integrada amb YunoHost des de fa almenys un any.", "app_state_notworking_explanation": "El desenvolupador d'aquesta aplicació l'ha marcat com que «no funciona». TRENCARÀ EL SISTEMA!",
"app_state_highquality": "alta qualitat",
"app_state_highquality_explanation": "Aquesta aplicació està ben integrada amb YunoHost. Ha estat (i és!) revisada per l'equip d'aplicacions de YunoHost. És segura i serà mantinguda a llarg termini.",
"app_state_working_explanation": "El desenvolupador d'aquesta aplicació l'ha marcat com «funcionant». Això vol dir que hauria de ser funcional (c.f. nivells d'aplicació) però no té perquè haver estat comprovada, pot encara tenir problemes o no estar completament integrada amb YunoHost.",
"license": "Llicència", "license": "Llicència",
"only_highquality_apps": "Només aplicacions d'alta qualitat", "only_highquality_apps": "Només aplicacions d'alta qualitat",
"only_decent_quality_apps": "Només aplicacións de qualitat decent", "only_decent_quality_apps": "Només aplicacións de qualitat decent",
@ -212,26 +268,21 @@
"group_add_permission": "Afegir permís", "group_add_permission": "Afegir permís",
"group_new": "Nou grup", "group_new": "Nou grup",
"group_explain_visitors": "Aquest és un grup especial que representa els visitants anònims", "group_explain_visitors": "Aquest és un grup especial que representa els visitants anònims",
"group_specific_permissions": "Permisos d'usuari individual", "group_specific_permissions": "Permisos específics de l'usuari",
"groups_and_permissions": "Grups i permisos", "groups_and_permissions": "Grups i permisos",
"groups_and_permissions_manage": "Gestionar grups i usuaris", "groups_and_permissions_manage": "Gestionar grups i usuaris",
"permissions": "Permisos", "permissions": "Permisos",
"nobody": "Ningú", "nobody": "Ningú",
"rerun_diagnosis": "Tornar a fer el diagnòstic", "rerun_diagnosis": "Tornar a fer el diagnòstic",
"details": "Detalls", "details": "Detalls",
"diagnosis_experimental_disclaimer": "Tingueu en compte que l'opció de diagnòstic encara és experimental i s'està millorant, i pot no ser del tot fiable.",
"everything_good": "Tot està bé!", "everything_good": "Tot està bé!",
"ignore": "Ignorar", "ignore": "Ignorar",
"ignored": "{count} ignorat", "ignored": "{count} ignorat",
"last_ran": "Executat per última vegada:", "last_ran": "Executat per última vegada:",
"warnings": "{count} avisos", "warnings": "{count} avisos",
"words": { "words": {
"default": "Predeterminat", "default": "Predeterminat"
"link": "Vincle",
"collapse": "Col·lapsar",
"separator": ", ",
"valid": "Vàlid",
"none": "Cap",
"browse": "Explora"
}, },
"unignore": "No ignorar", "unignore": "No ignorar",
"configuration": "Configuració", "configuration": "Configuració",
@ -246,37 +297,29 @@
"confirm_service_restart": "Esteu segur de voler reiniciar {name}?", "confirm_service_restart": "Esteu segur de voler reiniciar {name}?",
"group_explain_visitors_needed_for_external_client": "Vigileu ja que s'ha de permetre els visitants en algunes aplicacions si voleu utilitzar-les amb clients externs. És el cas, per exemple, de Nextcloud si voleu utilitzar el client de sincronització en el telèfon mòbil o en l'ordinador.", "group_explain_visitors_needed_for_external_client": "Vigileu ja que s'ha de permetre els visitants en algunes aplicacions si voleu utilitzar-les amb clients externs. És el cas, per exemple, de Nextcloud si voleu utilitzar el client de sincronització en el telèfon mòbil o en l'ordinador.",
"restart": "Reiniciar", "restart": "Reiniciar",
"unmaintained_details": "Fa temps que no es manté aquesta aplicació i la persona que la mantenia ja no ho fa o no té temps per fer-ho. Us convidem a mirar el repositori de l'aplicació per oferir la vostra ajuda",
"issues": "{count} problemes", "issues": "{count} problemes",
"operation_failed_explanation": "Aquesta operació ha fallat! Ens sap molt greu :( Podeu intentar <a href='https://yunohost.org/help'>demanar ajuda</a>. Si us plau doneu *el registre complet* de l'operació a la gent que intenta ajudar-vos. Podeu fer-ho fent clic al botó verd \"Compartir amb Yunopaste\". Quan compartiu els registres, YunoHost intentarà anonimitzar automàticament dades privades com els noms de domini i les IPs.", "operation_failed_explanation": "Aquesta operació ha fallat! Ens sap molt greu :( Podeu intentar <a href='https://yunohost.org/help'>demanar ajuda</a>. Si us plau doneu *el registre complet* de l'operació a la gent que intenta ajudar-vos. Podeu fer-ho fent clic al botó verd \"Compartir amb Yunopaste\". Quan compartiu els registres, YunoHost intentarà anonimitzar automàticament dades privades com els noms de domini i les IPs.",
"diagnosis_explanation": "La funció de diagnòstic intentarà identificar els errors més comuns en diferents aspectes del servidor per verificar que tot funciona correctament. El diagnòstic s'executa automàticament dues vegades al dia i s'envia un correu electrònic a l'administrador si es troben errors. Tingueu en compte que no tots els tests seran rellevants si no s'utilitzen algunes funcions específiques (com per exemple XMPP) o pot ser que falli si teniu un sistema amb una configuració complexa. En aquests casos, i si sabeu el que feu, podeu ignorar els problemes o avisos corresponents.", "diagnosis_explanation": "La funció de diagnòstic intentarà identificar els errors més comuns en diferents aspectes del servidor per verificar que tot funciona correctament. El diagnòstic s'executa automàticament dues vegades al dia i s'envia un correu electrònic a l'administrador si es troben errors. Tingueu en compte que no tots els tests seran rellevants si no s'utilitzen algunes funcions específiques (com per exemple XMPP) o pot ser que falli si teniu un sistema amb una configuració complexa. En aquests casos, i si sabeu el que feu, podeu ignorar els problemes o avisos corresponents.",
"pending_migrations": "Hi ha algunes migracions pendents esperant per ser executades. Aneu a <a href='#/tools/migrations'>Eines > Migracions</a> per fer-les.", "pending_migrations": "Hi ha algunes migracions pendents esperant per ser executades. Aneu a <a href='#/tools/migrations'>Eines > Migracions</a> per fer-les.",
"logs_suboperations": "Sub-operacions", "logs_suboperations": "Sub-operacions",
"tip_about_user_email": "Els usuaris es creen amb una adreça de correu electrònic associada (i compte de XMPP) amb el format usari@domini.tld. L'administrador i l'usuari poden afegir a posteriori adreces de correu addicionals i reenviament de correus.", "tip_about_user_email": "Els usuaris es creen amb una adreça de correu electrònic associada (i compte de XMPP) amb el format usari@domini.tld. L'administrador i l'usuari poden afegir a posteriori adreces de correu addicionals i reenviament de correus.",
"permission_show_tile_enabled": "Mostrar la «tile» en el portal de l'usuari", "permission_show_tile_enabled": "Mostrar la «tile» en el portal de l'usuari",
"permission_main": "Etiqueta principal", "permission_main": "Permís principal",
"permission_corresponding_url": "URL corresponent", "permission_corresponding_url": "URL corresponent",
"app_manage_label_and_tiles": "Gestionar etiquetes i «tiles»", "app_manage_label_and_tiles": "Gestionar etiquetes i «tiles»",
"items": { "items": {
"backups": "cap còpia de seguretat | còpia de seguretat | {c} còpies de seguretat", "backups": "cap còpia de seguretat | còpia de seguretat | {c} còpies de seguretat",
"apps": "cap aplicació | app | {c} aplicacions", "apps": "cap aplicació | app | {c} aplicacions"
"installed_apps": "cap aplicació instal·lada | aplicació instal·lada | {c} aplicacions instal·lades",
"services": "cap servei | servei | {c} serveis",
"logs": "cap registre | registre | {c} registres",
"groups": "cap grup | grup | {c} grups",
"domains": "cap domini | domini | {c} dominis",
"users": "cap usuari | usuari | {c} usuaris",
"permissions": "cap permís | permís | {c} permisos"
}, },
"history": { "history": {
"methods": { "methods": {
"DELETE": "eliminar", "DELETE": "eliminar",
"PUT": "modificar", "PUT": "modificar",
"POST": "crear/executar", "POST": "crear/executar"
"GET": "llegir"
}, },
"last_action": "Última acció:", "last_action": "Última acció:",
"title": "Historial", "title": "Historial"
"is_empty": "De moment res a l'historial."
}, },
"form_errors": { "form_errors": {
"required": "Aquest camp és obligatori.", "required": "Aquest camp és obligatori.",
@ -286,18 +329,13 @@
"notInUsers": "L'usuari «{value}» ja existeix.", "notInUsers": "L'usuari «{value}» ja existeix.",
"minValue": "El valor ha de ser un nombre superior o igual a {min}.", "minValue": "El valor ha de ser un nombre superior o igual a {min}.",
"name": "Els noms no poden incloure caràcters especials ha excepció de <code>,.'-</code>", "name": "Els noms no poden incloure caràcters especials ha excepció de <code>,.'-</code>",
"githubLink": "L'URL ha de ser un enllaç vàlid a un repositori Github",
"email": "Correu electrònic no vàlid: ha de ser caràcters alfanumèrics i <code>_.</code> exclusivament (per exemple someone@example.com, s0me-1@example.com)", "email": "Correu electrònic no vàlid: ha de ser caràcters alfanumèrics i <code>_.</code> exclusivament (per exemple someone@example.com, s0me-1@example.com)",
"dynDomain": "Nom de domini no vàlid: Ha de contenir caràcters alfanumèrics en minúscules i guionets exclusivament", "dynDomain": "Nom de domini no vàlid: Ha de contenir caràcters alfanumèrics en minúscules i guionets exclusivament",
"domain": "Nom de domini no vàlid: Ha de contenir caràcters alfanumèrics en minúscules, punts i guionets exclusivament", "domain": "Nom de domini no vàlid: Ha de contenir caràcters alfanumèrics en minúscules, punts i guionets exclusivament",
"between": "El valor ha d'estar entre {min} i {max}.", "between": "El valor ha d'estar entre {min} i {max}.",
"alphalownumdot_": "Només pot contenir caràcters alfanumèrics en minúscules i la barra baixa.", "alphalownum_": "Només pot contenir caràcters alfanumèrics en minúscules i la barra baixa.",
"alpha": "Només pot contenir caràcters alfanumèrics.", "alpha": "Només pot contenir caràcters alfanumèrics."
"remote": "{message}",
"pattern": "{type}",
"invalid_form": "El formulari conté alguns errors.",
"emailForward": "Reenviament de correu electrònic no vàlid: només ha de ser caràcters alfanumèrics i <code>_.-+</code> (p. ex., nom+etiqueta@example.com, _n.0-m+etiqueta@example.com)",
"appRepoUrl": "S'espera que els URL del dipòsit d'aplicacions de YunoHost siguin com https://domini.tld/cami/al/diposit_ynh",
"maxValue": "El valor ha de ser un nombre igual o inferior a {max}."
}, },
"footer": { "footer": {
"donate": "Fer una donació", "donate": "Fer una donació",
@ -308,7 +346,7 @@
"error": "Error", "error": "Error",
"enabled": "Activat", "enabled": "Activat",
"domain_delete_forbidden_desc": "No podeu eliminar «{domain}» ja que és el domini principal, heu d'escollir un altre domini (o <a href='#/domains/add'>afegir-ne un de nou</a>) i fer-lo el domini principal per a poder eliminar aquest.", "domain_delete_forbidden_desc": "No podeu eliminar «{domain}» ja que és el domini principal, heu d'escollir un altre domini (o <a href='#/domains/add'>afegir-ne un de nou</a>) i fer-lo el domini principal per a poder eliminar aquest.",
"domain_add_dyndns_forbidden": "Ja us heu registrat o subscrit a un domini DynDNS del projecte YunoHost. Per disseny, aquesta funció està limitada a un d'aquests dominis per servidor. Si voleu afegir un subdomini del vostre domini ja subscrit, utilitzeu l'opció «Afegir un domini que tinc o un subdomini» anterior. Si voleu utilitzar un domini completament diferent, primer heu d'eliminar el vostre domini DynDNS existent. Els dominis DynDNS són bons quan comenceu amb l'allotjament automàtic, però a mitjà/llarg termini, us recomanem comprar el vostre propi nom de domini a algun registrador per tenir la propietat total del vostre domini.", "domain_add_dyndns_forbidden": "Ja us heu subscrit a un domini DynDNS, podeu demanar que eliminin el domini DynDNS actual al fòrum <a href='//forum.yunohost.org/t/nohost-domain-recovery-suppression-de-domaine-en-nohost-me-noho-st-et-ynh-fr/442'>en el fil dedicat</a>.",
"disabled": "Desactivat", "disabled": "Desactivat",
"dead": "Inactiu", "dead": "Inactiu",
"day_validity": " Expirat | 1 dia | {count} dies", "day_validity": " Expirat | 1 dia | {count} dies",
@ -320,23 +358,24 @@
"code": "Codi", "code": "Codi",
"cancel": "Cancel·lar", "cancel": "Cancel·lar",
"app_show_categories": "Mostrar les categories", "app_show_categories": "Mostrar les categories",
"app_config_panel_no_panel": "Aquesta aplicació no té cap configuració diponible",
"app_config_panel_label": "Configurar aquesta aplicació",
"app_config_panel": "Panell de configuració",
"app_choose_category": "Escolliu una categoria", "app_choose_category": "Escolliu una categoria",
"app_actions_label": "Executar les accions",
"app_actions": "Accions",
"api_waiting": "Esperant la resposta del servidor…", "api_waiting": "Esperant la resposta del servidor…",
"api_errors_titles": { "api_errors_titles": {
"APIConnexionError": "YunoHost ha tingut un error de connexió", "APIConnexionError": "YunoHost ha tingut un error de connexió",
"APINotRespondingError": "L'API de YunoHost no respon", "APINotRespondingError": "L'API de YunoHost no respon",
"APIInternalError": "YunoHost ha trobat un error intern", "APIInternalError": "YunoHost ha trobat un error intern",
"APIBadRequestError": "YunoHost ha trobat un error", "APIBadRequestError": "YunoHost ha trobat un error",
"APIError": "YunoHost ha trobat un error inesperat", "APIError": "YunoHost ha trobat un error inesperat"
"APINotFoundError": "L'API de YunoHost no ha pogut trobar una ruta"
}, },
"api_error": { "api_error": {
"sorry": "Ens sap molt greu això.", "sorry": "Ens sap molt greu això.",
"info": "La informació següent pot ser útil per a la persona que us ajudi:", "info": "La informació següent pot ser útil per a la persona que us ajudi:",
"help": "Podeu buscar ajuda <a href=\"https://forum.yunohost.org/\">al fòrum</a> o <a href=\"https://chat.yunohost.org/\">al chat</a> per arreglar la situació, o reportar l'error <a href=\"https://github.com/YunoHost/issues\">al bugtracker</a>.", "help": "Podeu buscar ajuda <a href=\"https://forum.yunohost.org/\">al fòrum</a> o <a href=\"https://chat.yunohost.org/\">al chat</a> per arreglar la situació, o reportar l'error <a href=\"https://github.com/YunoHost/issues\">al bugtracker</a>."
"error_message": "Missatge d'error:",
"server_said": "Mentre processava l'acció, el servidor ha dit:",
"view_error": "Mostra l'error"
}, },
"address": { "address": {
"local_part_description": { "local_part_description": {
@ -347,349 +386,5 @@
"email": "Escolliu un domini per al correu electrònic.", "email": "Escolliu un domini per al correu electrònic.",
"domain": "Escolliu un domini." "domain": "Escolliu un domini."
} }
}, }
"api": {
"processing": "El servidor està processant l'acció…",
"partial_logs": "[…] (consulteu l'historial per obtenir els registres complets)",
"query_status": {
"error": "Sense èxit",
"pending": "En progrés",
"success": "Completat correctament",
"warning": "Completat correctament amb errors o alertes"
},
"reconnecting": {
"reason": {
"reboot": "El vostre servidor s'està reiniciant i no s'hi podrà accedir durant algun temps. Tan bon punt se n'hi pugui apareixerà un missatge d'inici de sessió.",
"shutdown": "El vostre servidor s'està tancant i ja no és accessible. Torneu-lo a activar i tan bon punt s'hi pugui accedir apareixerà un missatge d'inici de sessió.",
"unknown": "La connexió amb el servidor s'ha tancat per motius desconeguts.",
"upgrade_system": "La connexió amb el servidor s'ha tancat a causa de l'actualització de YunoHost. S'està esperant que el servidor torni a ser accessible…"
},
"title": "S'està intentant comunicar amb el servidor…",
"failed": "Sembla que el servidor no respon. Podeu provar de tornar a connectar-vos o provar d'executar `systemctl restart yunohost-api` mitjançant ssh.",
"success": "Ja es pot accedir al servidor! Podeu provar d'iniciar sessió"
}
},
"app_install_parameters": "Paràmetres de la instal·lació",
"app_state_broken": "trencada",
"app": {
"installed_version": "Versió instal·lada:",
"open_this_app": "Obre aquesta aplicació",
"antifeatures": "Aquesta aplicació té funcions que potser no us agraden:",
"doc": {
"about": {
"title": "Sobre",
"description": "Descripció"
},
"admin": {
"title": "Document d'administració"
},
"notifications": {
"title": "Notificacions",
"post_upgrade": "Notes post-actualització",
"post_install": "Notes post-instal·lació",
"understood": "Entés"
}
},
"info": {
"forum": "Busca o pregunta al fòrum!",
"problem": "Hi ha algun problema amb aquesta aplicació?",
"config_panel_error": "Un error impedeix que es mostri el panell de configuració:",
"config_panel_error_please_report": "Informeu d'aquest error a l'equip de YunoHost per solucionar-lo!"
},
"install": {
"license": "Llicència: {license}",
"notifs": {
"post": {
"title": "Notificacions post-instal·lació per a '{name}'",
"alert": "Sembla que la instal·lació ha anat bé!\n Aquí hi ha algunes notificacions que l'empaquetador considera important conèixer.\n Podeu tornar a llegir-lo a la pàgina d'informació de l'aplicació."
},
"pre": {
"warning": "Coses a saber abans de la instal·lació",
"danger": "La instal·lació de l'aplicació probablement comportarà problemes",
"critical": "L'aplicació no es pot instal·lar"
}
},
"problems": {
"arch": "Aquesta aplicació només es pot instal·lar en arquitectures específiques ({required}), però l'arquitectura del vostre servidor és {current}.",
"broken": "Aquesta aplicació està trencada segons les proves automàtiques de YunoHost i és probable que trenqui el sistema! Probablement NO hauries d'instal·lar-la tret que sàpigues què estàs fent.",
"ignore": "Entenc que aquesta instal·lació pot trencar el meu sistema però vull provar.",
"inprogress": "Aquesta aplicació encara és experimental (o explícitament no funcional) i és probable que trenqui el vostre sistema! Probablement NO hauries d'instal·lar-la tret que sàpigues què estàs fent.",
"install": "Ja està instal·lada i no es pot instal·lar més d'una vegada.",
"lowquality": "Aquesta aplicació pot funcionar, però no està ben integrada a YunoHost. És possible que algunes funcions, com ara l'inici de sessió únic i la còpia de seguretat/restauració, no estiguin disponibles o no respectin les bones pràctiques.",
"version": "Aquesta aplicació requereix YunoHost >= {required} però la vostra versió instal·lada actual és {current}, considereu primer actualitzar YunoHost.",
"ram": "Aquesta aplicació requereix {required} de RAM per instal·lar/actualitzar, però només hi ha {current} disponibles ara mateix. Fins i tot si aquesta aplicació es pot executar, el seu procés d'instal·lació requereix una gran quantitat de memòria RAM, de manera que el servidor es pot congelar i fallar miserablement.",
"thirdparty": "Aquesta aplicació no forma part del catàleg oficial de YunoHost, la instal·lació d'aplicacions de tercers pot comprometre la integritat i la seguretat del vostre sistema. Probablement NO hauries d'instal·lar-la tret que sàpigues què estàs fent."
},
"try_demo": "Prova la demostració",
"version": "Versió actual: {version}"
},
"integration": {
"archs": "Arquitectures suportades:",
"ldap": {
"false": "No utilitza comptes de YunoHost per iniciar sessió (LDAP)",
"true": "Utilitza comptes de YunoHost per iniciar sessió (LDAP)",
"?": "No hi ha informació sobre la integració LDAP"
},
"resources": "Ús de recursos típic: {ram} RAM, {disk} disc",
"sso": {
"false": "L'inici de sessió únic (SSO) no està disponible",
"true": "L'inici de sessió únic (SSO) està disponible",
"?": "No hi ha informació sobre la integració SSO"
},
"title": "Integració YunoHost",
"multi_instance": {
"false": "Només es pot instal·lar una vegada",
"true": "Es pot instal·lar diverses vegades"
}
},
"links": {
"admindoc": "Documentació oficial d'administració",
"code": "Repositori oficial de codi",
"forum": "Temes sobre aquesta aplicació al fòrum de YunoHost",
"package": "Repositori de paquets YunoHost",
"title": "Vincles",
"userdoc": "Documentació oficial d'usuari",
"website": "Pàgina web oficial",
"license": "Llicència de l'aplicació",
"package_license": "Llicència del paquet de YunoHost"
},
"potential_alternative_to": "Alternativa potencial a:",
"upgrade": {
"confirm": {
"apps": "Aplicacions que s'actualitzaran",
"title": "Confirmeu les actualitzacions d'aplicacions"
},
"notifs": {
"pre": {
"alert": "Hauríeu de comprovar aquestes notificacions abans d'actualitzar, és possible que hi hagi coses importants a saber.",
"title": "Estàs avisat/da!"
},
"post": {
"alert": "Sembla que l'actualització ha anat bé!\n Aquí hi ha algunes notificacions que l'empaquetador considera important conèixer sobre aquesta actualització.\n Podeu tornar a llegir-ho a la pàgina d'informació de l'aplicació.",
"title": "Notificacions post-actualització per a \"{name}\""
}
},
"continue": "Continueu amb l'aplicació següent",
"stop": "Cancel·la les properes actualitzacions de l'aplicació"
},
"uninstall": {
"purge_desc": "Elimina el directori de dades associat a l'aplicació (normalment són dades que heu penjat amb l'aplicació)."
}
},
"api_not_found": "Sembla que l'administrador web ha intentat consultar alguna cosa que no existeix.",
"details_about": "Mostra més detalls sobre {subject}",
"app_state_broken_explanation": "Aquesta aplicació actualment està trencada i no es pot instal·lar segons les proves automàtiques de YunoHost",
"confirm_group_add_access_permission": "Esteu segur que voleu concedir accés a {perm} a {name}? Aquest accés augmenta significativament la superfície d'atac si {name} és una persona malintencionada. Només ho hauríeu de fer si CONFIEU en aquesta persona/grup.",
"confirm_install_app_broken": "ADVERTIMENT! Aquesta aplicació està trencada segons les proves automàtiques de YunoHost i és probable que trenqui el vostre sistema! Probablement NO hauries d'instal·lar-la tret que sàpigues què estàs fent. Estàs disposat/da a córrer aquest risc?",
"domain": {
"add": {
"dyn_dns_password_desc": "Aquesta contrasenya us permetrà recuperar més tard el control del domini si torneu a instal·lar el vostre sistema. Si ja heu registrat aquest domini anteriorment, feu servir la vostra contrasenya de recuperació aquí per recuperar-lo.",
"dyn_dns_password": "Contrasenya de recuperació del domini",
"from_registrar": "Vull afegir un domini que tinc o un subdomini",
"from_yunohost": "No tinc cap domini, vull registrar/utilitzar un domini DynDNS gratuït proporcionat pel projecte YunoHost",
"from_local": "Vull un domini per a ús local / només de prova",
"from_local_desc": "Si no voleu un nom de domini públic \"real\", podeu utilitzar qualsevol cosa que acabi en <code>.local</code> o <code>.test</code>. Els noms de domini que acaben en <code>.local</code> són especials en el sentit que es poden resoldre automàticament a la xarxa local, suposant que els clients admeten el protocol Bonjour. Alternativament, és possible que hàgiu de modificar el fitxer <code>/etc/hosts</code> (o l'equivalent a Windows) a cada client des del qual vulgueu utilitzar aquest domini, o bé configurar les entrades de DNS locals al vostre encaminador d'Internet.",
"from_registrar_desc": "Haureu de configurar manualment els registres DNS al vostre registrador per finalitzar la configuració d'aquest domini. El diagnòstic de YunoHost us guiarà sobre quins registres DNS heu de configurar exactament.",
"from_yunohost_desc": "El projecte YunoHost manté un servei gratuït 'DynDNS'. Està limitat a un d'aquests dominis per servidor (tot i que també podeu afegir subdominis més tard utilitzant l'altra opció \"Afegeix un domini que tinc o un subdomini\" anterior). La configuració de DNS serà gestionada automàticament per YunoHost. Això és ideal quan comenceu amb l'allotjament automàtic en general i encara no voleu invertir en un nom de domini. Tanmateix, a mitjà/llarg termini, us recomanem que compreu el vostre propi nom de domini a algun registrador per tenir la propietat total del vostre domini."
},
"cert": {
"types": {
"other": "Altre/Desconegut",
"letsencrypt": "Let's Encrypt",
"selfsigned": "Autosignat"
},
"valid_for": "vàlid durant {days}"
},
"info": {
"registrar": "Registrador",
"certificate_authority": "Autoritat de certificació SSL",
"apps_on_domain": "Aplicacions instal·lades al domini",
"dyn_dns_remove_and_unsubscribe": "També cancel·leu el registre del domini del servei dyndns de YunoHost"
},
"config": {
"edit": "Edita la configuració del domini",
"title": "Configuració del domini"
},
"dns": {
"auto_config": "Configuració automàtica d'entrades DNS",
"push_force_warning": "Sembla que algunes entrades DNS que YunoHost hauria establert ja es troben a la configuració del registrador. Podeu utilitzar l'opció de sobreescriure si sabeu el que esteu fent.",
"auto_config_ignored": "ignorat, no serà modificat per YunoHost tret que marqueu l'opció de sobreescriure",
"auto_config_zone": "Zona DNS actual",
"methods": {
"handled_in_parent": "Gestionat al domini principal",
"manual": "Manual",
"none": "Cap",
"auto": "Automàtic",
"semi_auto": "Semiautomàtic"
},
"push_force_confirm": "Esteu segur que voleu forçar l'impuls de totes les entrades DNS suggerides? Tingueu en compte que pot sobreescriure entrades predeterminades importants o establertes manualment per vosaltres o el vostre registrador.",
"push_force": "Sobreescriu les entrades existents",
"manual_config": "Entrades DNS suggerides per a la configuració manual",
"auto_config_ok": "La configuració automàtica sembla estar bé!",
"edit": "Editeu la configuració del DNS",
"info": "La configuració automàtica d'entrades DNS és una característica experimental. <br>Penseu en desar la vostra zona DNS actual des de la interfície del vostre registrador de DNS abans d'enviar les entrades des d'aquí.",
"push": "Envieu les entrades DNS al registrador"
},
"explain": {
"main_domain": "El domini principal és el domini des del qual els usuaris es poden connectar al portal (mitjançant \"{domain}/yunohost/sso\").<br>Per tant, no és possible suprimir-lo.<br>Si voleu suprimir \"{domain}\", primer hauràs de triar o afegir un altre domini i configurar-lo com a domini principal."
},
"see_parent_domain": "Vegeu el domini principal",
"toggle_subdomains": "Commuta els subdominis",
"types": {
"main_domain": "Domini principal"
}
},
"hook_conf_ynh_settings": "Configuracions de YunoHost",
"group_admins": "Administradors",
"human_routes": {
"apps": {
"action_config": "Executeu l'acció \"{action}\" de la configuració de l'aplicació \"{name}\"",
"install": "Instal·la l'aplicació \"{name}\"",
"change_url": "Canvia l'URL d'accés de \"{name}\"",
"dismiss_notification": "Ignora la notificació per a \"{name}\"",
"update_config": "Actualitza el tauler \"{id}\" de la configuració de l'aplicació \"{name}\"",
"change_label": "Canvia l'etiqueta de \"{prevName}\" per a \"{nextName}\"",
"set_default": "Redirigeix l'arrel del domini \"{domain}\" a \"{name}\"",
"uninstall": "Desinstal·la l'aplicació \"{name}\""
},
"domains": {
"push_dns_changes": "Envieu les entrades DNS al registrador de \"{name}\"",
"update_config": "Actualitza el tauler \"{id}\" de la configuració del domini \"{name}\"",
"add": "Afegeix el domini \"{name}\"",
"delete": "Suprimeix el domini \"{name}\"",
"cert_install": "Instal·leu el certificat per a \"{name}\"",
"cert_renew": "Renova el certificat per a \"{name}\"",
"set_default": "Estableix \"{name}\" com a domini predeterminat"
},
"permissions": {
"add": "Permet que \"{name}\" accedeixi a \"{perm}\"",
"remove": "Suprimeix l'accés \"{name}\" a \"{perm}\""
},
"migrations": {
"skip": "Omet les migracions",
"run": "Executar migracions"
},
"groups": {
"remove": "Elimina \"{user}\" del grup \"{name}\"",
"add": "Afegeix \"{user}\" al grup \"{name}\"",
"create": "Crea el grup \"{name}\"",
"delete": "Suprimeix el grup \"{name}\""
},
"firewall": {
"upnp": "{action} UPnP",
"ports": "{action} port {port} ({protocol}, {connection})"
},
"diagnosis": {
"run_specific": "Executeu el diagnòstic \"{description}\"",
"ignore": {
"error": "Ignora un error",
"warning": "Ignora un avís"
},
"unignore": {
"error": "Deixeu d'ignorar un error",
"warning": "Deixeu d'ignorar un avís"
},
"run": "Executeu el diagnòstic"
},
"postinstall": "Executa la postinstal·lació",
"reboot": "Reinicia el servidor",
"backups": {
"create": "Creeu una còpia de seguretat",
"delete": "Suprimeix la còpia de seguretat \"{name}\"",
"restore": "Restaura la còpia de seguretat \"{name}\""
},
"upgrade": {
"system": "Actualitzar el sistema",
"app": "Actualitzar l'aplicació«\"{app}»",
"apps": "Actualitzar totes les aplicacions"
},
"settings": {
"update": "Actualitzar la configuració global de «{panel}»"
},
"users": {
"delete": "Eliminar usuari «{name}»",
"create": "Crear usuari «{name}»",
"update": "Actualitzar usuari «{name}»"
},
"services": {
"restart": "Reiniciar el servei «{name}»",
"start": "Iniciar el servei «{name}»",
"stop": "Aturar el servei «{name}»"
},
"update": "Buscar actualitzacions",
"reconnecting": "Tornant a connectar",
"share_logs": "Generar un enllaç per al registre «{name}»",
"shutdown": "Apagar el servidor"
},
"go_back": "Torna",
"domain_dns_push_failed_to_authenticate": "No s'ha pogut autenticar a l'API del registrador. El més probable és que les <a href='#/domains/{domain}/config'>credencials</a> siguin incorrectes. (Error: {error})",
"hook_data_xmpp_desc": "Configuracions d'habitacions i d'usuaris, càrregues de fitxers",
"hook_conf_manually_modified_files": "Configuracions modificades manualment",
"domain_dns_push_managed_in_parent_domain": "La funció d'entrades DNS automàtiques es gestiona al domini principal <a href='#/domains/{parent_domain}/dns'>{parent_domain}</a>.",
"domain_dns_push_not_applicable": "La funció d'entrades DNS automàtiques no és aplicable al domini {domain}.<br> Hauríeu de configurar manualment les vostres entrades DNS seguint la <a href='https://yunohost.org/dns'>documentació</a> i la configuració suggerida a continuació.",
"hook_data_xmpp": "Dades de XMPP",
"group_explain_admins": "Aquest és un grup especial corresponent als usuaris administradors. Els usuaris d'aquest grup poden accedir al webadmin de YunoHost, connectar-se al servidor amb SSH i utilitzar l'ordre `sudo`. També rebran correus electrònics enviats a root@, admin@ i admins@, com ara les notificacions de diagnòstic. Només heu d'afegir a aquest grup persones en qui confieu absolutament!",
"items_verbose_items_left": "Queden {items}. | Queda 1 {items}. | Queden {items}.",
"postinstall": {
"user": {
"title": "Crea el primer usuari administrador",
"first_user_help": "Aquest usuari tindrà privilegis d'administrador i se li permetrà connectar-se a aquesta interfície d'administració i directament al servidor mitjançant SSH.\nCom que és un usuari normal, també us podreu connectar al portal d'usuaris (SSO) amb les seves credencials.\nUn cop finalitzada la postinstal·lació, podreu crear altres usuaris administradors afegint-los al grup «admins»."
},
"force": "Força la post-instal·lació",
"title": "Post-instal·lació"
},
"placeholder": {
"lastname": "Petit",
"groupname": "Nom del meu grup",
"username": "joanpetit",
"domain": "el-meu-domini.cat",
"fullname": "Joan Petit",
"file": "Exploreu un fitxer o arrossegueu-lo i deixeu-lo anar",
"firstname": "Joan"
},
"tools_webadmin": {
"language": "Idioma",
"experimental": "Modalitat experimental",
"fallback_language": "Idioma alternatiu",
"fallback_language_description": "Idioma que s'utilitzarà en cas que la traducció no estigui disponible a l'idioma principal.",
"cache": "Memòria cau",
"cache_description": "Penseu en desactivar la memòria cau si teniu previst treballar amb la CLI mentre navegueu per aquest Webadmin.",
"theme": "Canvia al mode fosc",
"transitions": "Animacions de transició de pàgina",
"experimental_description": "Et dóna accés a funcions experimentals. Es consideren inestables i poden trencar el vostre sistema.<br> Activeu-ho només si sabeu el que esteu fent."
},
"migrations_disclaimer_not_checked": "Aquesta migració requereix que accepteu la seva exempció de responsabilitat abans d'executar-la.",
"retry": "Torna-ho a provar",
"search": {
"not_found": "Hi ha {items} que coincideixen amb els vostres criteris. | Hi ha 1 {items} que coincideix amb els vostres criteris. | Hi ha {items} que coincideixen amb els vostres criteris.",
"for": "Cerca {items}…"
},
"tools_webadmin_settings": "Configuració de Webadmin",
"user_emailaliases_add": "Afegiu un àlies de correu",
"users_export": "Exportar usuaris",
"users_import": "Importar usuaris",
"users_import_csv_file_desc": "El fitxer CSV ha d'estar en UTF-8 i amb columnes nom d'usuari, contrasenya, grups, correu electrònic i quota. Per a un exemple d'importació d'un fitxer CSV, podeu <a href='/yunohost/api/users/export' target='_BLANK'>exportar els vostres usuaris al fitxer CSV</a> i canviar el fitxer.",
"users_import_confirm_destructive": "Esteu segur que voleu suprimir els usuaris que no estan presents en aquest fitxer?",
"important_yunohost_upgrade": "Hi ha disponible una actualització important de YunoHost. És molt recomanable llegir atentament les notes de la versió al fòrum abans d'actualitzar: <a href='https://forum.yunohost.org/tag/ynh_release'>Exploreu les notes de la versió al fòrum</a>",
"items_verbose_count": "Hi ha {items}. | Hi ha 1 {items}. | Hi ha {items}.",
"label_for_manifestname_help": "Aquest és el nom que es mostra al portal de l'usuari. Això es pot canviar més tard.",
"manage_groups": "Gestionar grups",
"users_import_delete_others": "Suprimir els usuaris no llistats",
"readme": "Llegiu-me",
"users_import_delete": "Suprimir els usuaris que no figuren a la llista",
"mailbox_quota_example": "700M és un CD, 4700M és un DVD",
"migrations_disclaimer_check_message": "He llegit i he entès aquesta exempció de responsabilitat",
"perform": "Realitzar",
"postinstall_set_domain": "Estableix el domini principal",
"text_selection_is_disabled": "La selecció de text està desactivada. Si voleu compartir aquest registre, compartiu el registre *complet* amb el botó «Comparteix amb Yunopaste».<br/><small>O si realment voleu seleccionar text, premeu aquestes tecles: ↓↓↑↑.</small>",
"tools_yunohost_settings": "Configuració de YunoHost",
"traceback": "Rastrejar",
"unknown": "Desconegut",
"user_emailforward_add": "Afegeix un reenviament de correu",
"users_import_csv_file": "Fitxer CSV",
"users_import_delete_desc": "Si està marcat, tots els usuaris existents que no es trobin al fitxer CSV se suprimiran (i es purgaran).",
"users_import_update": "Actualitzar els usuaris existents",
"users_import_update_desc": "Si està marcat, tots els usuaris existents continguts al fitxer CSV s'actualitzaran amb el nou valor",
"wrong_password_or_username": "Contrasenya o nom d'usuari incorrecte",
"yunohost_admin": "Administrador de Yunohost"
} }

View file

@ -1,10 +0,0 @@
{
"address": {
"domain_description": {
"email": "دامینی بو لاپه ره الکترونیکی خوت هه لبژیرکه.",
"domain": "هه لبژاردنی دامین."
}
},
"add": "زیاکردن",
"action": "چالاکی"
}

View file

@ -1,17 +1,23 @@
{ {
"password": "Heslo", "password": "Heslo",
"app_info_access_desc": "Skupiny a uživatelé kterým je povolen přístup aplikace:", "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' aktuálně neběží 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_apps": "Všechny aplikace",
"all": "Všechno", "all": "Všechno",
"administration_password": "Heslo správce", "administration_password": "Heslo správce",
"add": "Přidat", "add": "Přidat",
"active": "Aktivní",
"action": "Akce", "action": "Akce",
"cancel": "Storno", "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>", "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_choose_category": "Vybrat kategorii",
"api_waiting": "Čekáme na odpověď serveru…", "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_not_found": "Zdá se, že web-admin zkusil dotazovat něco, co neexistuje.",
"api_errors_titles": { "api_errors_titles": {
"APIConnexionError": "YunoHost zaznamenal chybu spojení", "APIConnexionError": "YunoHost zaznamenal chybu spojení",
@ -36,19 +42,7 @@
"pending": "Ve zpracování", "pending": "Ve zpracování",
"error": "Neúspěšné" "error": "Neúspěšné"
}, },
"processing": "Server zpracovává akci…", "processing": "Server zpracovává akci..."
"partial_logs": "[…] (zkontrolujte historii v logách)",
"reconnecting": {
"reason": {
"upgrade_system": "Spojení se serverem bylo ukončeno kvůli povýšení YunoHostu na novou verzi. Čekám, až bude opět dostupný…",
"unknown": "Spojení se serverem bylo z neznámých důvodů přerušeno.",
"reboot": "Váš server se restartuje a po nějakou dobu nebude dostupný. Jakmile se spojení naváže, zobrazí se přihlašovací okno.",
"shutdown": "Váš server se ukončuje a nebude dostupný. Když ho znovu zapnete, jakmile bude zase dosažitelný, zobrazí se přihlašovací okno."
},
"title": "Snažím se navázat spojení se serverem…",
"success": "Server už odpovídá! Nyní se můžete přihlásit",
"failed": "Zdá se, že server neodpovídá. Zkuste se znovu připojit nebo na něm pustit `systemctl restart yunohost-api`přes ssh."
}
}, },
"app_install_custom_no_manifest": "Soubor manifest.json nenalezen", "app_install_custom_no_manifest": "Soubor manifest.json nenalezen",
"app_info_uninstall_desc": "Odstranit tuto aplikaci.", "app_info_uninstall_desc": "Odstranit tuto aplikaci.",
@ -65,8 +59,16 @@
"domain": "Vyberte doménu." "domain": "Vyberte doménu."
} }
}, },
"hook_conf_ynh_mysql": "MySQL heslo",
"hook_conf_ynh_firewall": "Firewall",
"hook_conf_ynh_certs": "SSL certifikáty", "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_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", "hook_adminjs_group_configuration": "Systémové konfigurace",
"home": "Domů", "home": "Domů",
"history": { "history": {
@ -107,15 +109,14 @@
"notInUsers": "Uživatel '{value}' již existuje.", "notInUsers": "Uživatel '{value}' již existuje.",
"minValue": "Hodnota musí být číslo rovno nebo vyšší než {min}.", "minValue": "Hodnota musí být číslo rovno nebo vyšší než {min}.",
"name": "Jména nemohou obsahovat speciální znaky mimo <code> ,.'-</code>", "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)", "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)", "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", "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", "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}.", "between": "Hodnota musí být mezi {min} a {max}.",
"alphalownumdot_": "Hodnota musí obsahovat pouze alfanumerické znaky a podtržítko.", "alphalownum_": "Hodnota musí obsahovat pouze alfanumerické znaky a podtržítko.",
"alpha": "Hodnota musí obsahovat pouze čísla.", "alpha": "Hodnota musí obsahovat pouze čísla."
"remote": "{message}",
"pattern": "{type}"
}, },
"footer": { "footer": {
"donate": "Darovat", "donate": "Darovat",
@ -135,6 +136,8 @@
"enable": "Povolit", "enable": "Povolit",
"download": "Stáhnout", "download": "Stáhnout",
"domains": "Domény", "domains": "Domény",
"domain_visit_url": "Otevřít {url}",
"domain_visit": "Otevřít",
"domain_name": "Doménové jméno", "domain_name": "Doménové jméno",
"domain_dns_longdesc": "Zobrazit DNS nastavení", "domain_dns_longdesc": "Zobrazit DNS nastavení",
"domain_dns_config": "DNS nastavení", "domain_dns_config": "DNS nastavení",
@ -142,7 +145,11 @@
"domain_delete_longdesc": "Smazat tuto doménu", "domain_delete_longdesc": "Smazat tuto doménu",
"domain_default_longdesc": "Toto je výchozí doména.", "domain_default_longdesc": "Toto je výchozí doména.",
"domain_default_desc": "Uživatelé se přihlašují na výchozí doméně.", "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_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", "domain_add": "Přidat doménu",
"dns": "DNS", "dns": "DNS",
"disabled": "Zakázáno", "disabled": "Zakázáno",
@ -178,15 +185,25 @@
"backup": "Záloha", "backup": "Záloha",
"archive_empty": "Prázdný archiv", "archive_empty": "Prázdný archiv",
"applications": "Aplikace", "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_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_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_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_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_state_inprogress": "zatím nefunkční",
"app_show_categories": "Zobrazit kategorie", "app_show_categories": "Zobrazit kategorie",
"app_no_actions": "Tato aplikace nemá žádné akce",
"app_make_default": "Nastavit výchozí", "app_make_default": "Nastavit výchozí",
"app_manage_label_and_tiles": "Správa štítků a dlaždic", "app_manage_label_and_tiles": "Správa štítků a dlaždic",
"app_install_parameters": "Nastavení instalace", "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é", "unknown": "Neznámé",
"uninstall": "Odinstalovat", "uninstall": "Odinstalovat",
"unignore": "Smazat ignoraci", "unignore": "Smazat ignoraci",
@ -205,10 +222,18 @@
"language": "Jazyk" "language": "Jazyk"
}, },
"tools_shutdown_reboot": "Vypnutí/Restart", "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_btn": "Vypnout",
"tools_shutdown": "Vypnout váš server", "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_btn": "Restartovat",
"tools_reboot": "Restartovat váš server", "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", "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.", "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", "tcp": "TCP",
@ -231,8 +256,8 @@
"select_none": "Nevybrat nic", "select_none": "Nevybrat nic",
"select_all": "Vybrat vše", "select_all": "Vybrat vše",
"search": { "search": {
"not_found": "Nalezeny {items} odpovídající vašemu zadání. | Nalezena 1 {items} odpovídající vašemu zadání. | Nalezeny {items} odpovídající vašemu zadání.", "not_found": "Nalezeny {items} odpovídající vašemu zadání.",
"for": "Hledat {items}" "for": "Hledat {items}..."
}, },
"save": "Uložit", "save": "Uložit",
"running": "Provádí se", "running": "Provádí se",
@ -277,6 +302,10 @@
}, },
"domains": { "domains": {
"set_default": "Nastavit '{name}' jako výchozí doménu", "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}'", "delete": "Smazat doménu '{name}'",
"add": "Přidat doménu '{name}'" "add": "Přidat doménu '{name}'"
}, },
@ -300,11 +329,13 @@
"apps": { "apps": {
"update_config": "Upravit konfiguraci aplikace '{name}'", "update_config": "Upravit konfiguraci aplikace '{name}'",
"uninstall": "Odinstalovat aplikaci '{name}'", "uninstall": "Odinstalovat aplikaci '{name}'",
"perform_action": "Vykonat akci '{action}' aplikace '{name}'",
"set_default": "Přesměrovat '{domain}' doménový kořen na '{name}'", "set_default": "Přesměrovat '{domain}' doménový kořen na '{name}'",
"install": "Instalovat aplikaci '{name}'", "install": "Instalovat aplikaci '{name}'",
"change_url": "Změnit přístupové URL '{name}'", "change_url": "Změnit přístupové url '{name}'",
"change_label": "Změnit popis z '{prevName}' na '{nextName}'" "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_no_logs_registered": "V této kategorii není žádný záznam",
"logs_app": "Aplikační záznamy", "logs_app": "Aplikační záznamy",
@ -338,8 +369,9 @@
"nobody": "Nikomu", "nobody": "Nikomu",
"no": "Ne", "no": "Ne",
"next": "Další", "next": "Další",
"myserver": "můj server",
"multi_instance": "Může být instalováno ve více instancích", "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 souhlas s prohlášením.", "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_disclaimer_check_message": "Přečetl/a jsem si a rozumím tomuto prohlášení",
"migrations_no_done": "Žádné předchozí migrace", "migrations_no_done": "Žádné předchozí migrace",
"migrations_no_pending": "Žádné čekající migrace", "migrations_no_pending": "Žádné čekající migrace",
@ -355,7 +387,7 @@
"local_archives": "Lokální zálohy", "local_archives": "Lokální zálohy",
"license": "Licence", "license": "Licence",
"last_ran": "Čas posledního spuštění:", "last_ran": "Čas posledního spuštění:",
"label_for_manifestname": "Název pro {name} (zobrazuje se v uživatelském portále)", "label_for_manifestname": "Název pro {name}",
"label": "Název", "label": "Název",
"items_verbose_items_left": "Zbývá {items} položek.", "items_verbose_items_left": "Zbývá {items} položek.",
"items_verbose_count": "Počet položek {items}.", "items_verbose_count": "Počet položek {items}.",
@ -375,7 +407,7 @@
"ipv4": "IPv4", "ipv4": "IPv4",
"installed": "Instalováno", "installed": "Instalováno",
"installation_complete": "Instalace dokončena", "installation_complete": "Instalace dokončena",
"install_time": "Čas instalace", "install_time": "Délka instalace",
"install_name": "Instalovat {id}", "install_name": "Instalovat {id}",
"install": "Instalovat", "install": "Instalovat",
"infos": "Informace", "infos": "Informace",
@ -392,6 +424,7 @@
"hook_conf_ynh_settings": "YunoHost 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_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_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", "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í.", "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", "details": "Detaily",
@ -423,7 +456,9 @@
"readme": "Přečti si", "readme": "Přečti si",
"protocol": "Protokol", "protocol": "Protokol",
"previous": "Předchozí", "previous": "Předchozí",
"postinstall_set_password": "Nastavit administrační heslo",
"postinstall_set_domain": "Nastavit hlavní doménu", "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_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_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_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.",
@ -460,45 +495,5 @@
"url": "URL", "url": "URL",
"upnp_enabled": "UPnP je povoleno.", "upnp_enabled": "UPnP je povoleno.",
"upnp_disabled": "UPnP je zákázáno.", "upnp_disabled": "UPnP je zákázáno.",
"upnp": "UPnP", "upnp": "UPnP"
"domain": {
"config": {
"edit": "Upravte konfiguraci domény",
"title": "Nastavení domény"
},
"dns": {
"auto_config": "Automatické nastavení DNS záznamů",
"auto_config_ignored": "ignorováno, nebude upraveno dokud nevyberete položku přepsat"
}
},
"users": "Uživatelé",
"users_new": "Nový uživatel",
"users_no": "Žádní uživatelé.",
"app": {
"open_this_app": "Otevřít tuto aplikaci",
"info": {
"forum": "Hledejte nebo se ptejte na fóru!",
"problem": "Máte s aplikací problém?",
"config_panel_error_please_report": "Nahlaste prosím tuto chybu týmu YunoHost, aby ji mohl opravit!",
"config_panel_error": "Zobrazení konfiguračního panelu brání chyba:"
},
"install": {
"license": "Licence: {license}",
"notifs": {
"post": {
"title": "Poinstalační upozornení pro '{name}'"
},
"pre": {
"warning": "O čem byste měli před instalací vědět",
"danger": "Instalace aplikace pravděpodobně způsobí problémy",
"critical": "Aplikaci nelze nainstalovat"
}
},
"problems": {
"arch": "Tato aplikace může být nainstalována jen na konkrétních architekturách ({required}), avšak vaše architektura je {current}."
}
},
"antifeatures": "Tato aplikace má funkce, které by se vám nemusely líbit:",
"installed_version": "Nainstalovaná verze:"
}
} }

View file

@ -1,122 +0,0 @@
{
"add": "Tilføj",
"address": {
"domain_description": {
"domain": "Vælg et domæne.",
"email": "Vælg et domæne til din e-mail."
},
"local_part_description": {
"domain": "Vælg et sub-domæne.",
"email": "Vælg en lokal del til dit domæne."
}
},
"administration_password": "Administratorkodeord",
"all": "Alle",
"action": "Handling",
"api": {
"query_status": {
"success": "Fuldført",
"error": "Usuccesfuld",
"pending": "I gang",
"warning": "Fuldført med fejlmeldinger eller advarsler"
},
"processing": "Serveren er i færd med at behandle anmodningen…",
"reconnecting": {
"failed": "Det ser ud som om serveren ikke svarer. Du kan prøve at forbinde igen eller prøve at køre `systemctl restart yunohost-api` over ssh.",
"reason": {
"reboot": "Din server genstarter og vil ikke være kontaktbar i et stykke tid. En loginprompt vil blive synlig så snart serveren igen er kontaktbar.",
"unknown": "Forbindelsen til serveren er blevet lukket af ukendte årsager.",
"shutdown": "Din server lukker ned og er ikke længere kontaktbar. Tænd for den igen og en loginprompt vil blive synlig så snart den atter er kontaktbar.",
"upgrade_system": "Forbindelsen til serveren er blevet lukket på grund af YunoHost opdatering. Venter på at kunne kontakte serveren igen…"
},
"success": "Serveren er nu kontaktbar! Du kan prøve at logge ind",
"title": "Forsøger at kommunikere med serveren…"
},
"partial_logs": "[...] (se i historik for at finde hele loggen)"
},
"api_error": {
"error_message": "Fejlmelding:",
"info": "Følgende informationer kan være brugbare for den person der hjælper dig:",
"server_said": "Under behandlingen af anmodningen sagde serveren:",
"sorry": "Beklager meget.",
"view_error": "Se fejl",
"help": "Du bør søge hjælp på <a href=\"https://forum.yunohost.org/\">vores forum</a> eller <a href=\"https://chat.yunohost.org/\">chatten</a> til at ordne problemet eller rapportere fejlen i <a href=\"https://github.com/YunoHost/issues\">bugtrackeren</a>."
},
"all_apps": "Alle applikationer",
"api_errors_titles": {
"APIBadRequestError": "YunoHost stødte på en fejl",
"APIConnexionError": "YunoHost stødte på en forbindelsesfejl",
"APIError": "YunoHost stødte på en uventet fejl",
"APINotFoundError": "YunoHost API'en kunne ikke finde en rute",
"APINotRespondingError": "YunoHost API svarer ikke",
"APIInternalError": "YunoHost stødte på en intern fejl"
},
"api_not_found": "Det ser ud til at webadministratoren forespurgte efter noget der ikke findes.",
"api_not_responding": "YunoHost API'en svarer ikke. Måske er 'yunohost-api' nede eller blevet genstartet?",
"app": {
"doc": {
"about": {
"description": "Beskrivelse",
"title": "Om"
},
"admin": {
"title": "Admin doc"
},
"notifications": {
"understood": "Forstået",
"post_upgrade": "Post-opdatering noter",
"title": "Notifikationer",
"post_install": "Post-installation noter"
}
},
"info": {
"forum": "Søg eller spørg i forummet!",
"problem": "Et problem med denne app?",
"config_panel_error": "En fejl forhindrer konfigurationspanelet i at blive vist:",
"config_panel_error_please_report": "Vær venlig at rapportere denne fejl til YunoHost teamet, så den kan blive fikset!"
},
"install": {
"license": "Licens:{license}",
"notifs": {
"post": {
"title": "Post-installations-notifikationer for '{name}'",
"alert": "Det ser ud til at installationen gik godt!\nHer er nogle beskeder som udviklerne af pakken synes det er vigtigt, at du får.\nDu kan læse dem igen på app infosiden."
},
"pre": {
"warning": "Ting at være opmærksom på før installationen",
"critical": "Applikationen kan ikke installeres",
"danger": "Installation af applikationen vil sandsynligvis medføre problemer"
}
},
"problems": {
"ignore": "Jeg forstår at denne installation kan ødelægge mit system, men jeg vil stadig gerne prøve.",
"ram": "Denne applikation kræver {required} RAM for at kunne installere/opgradere, men der er kun {current} tilgængelige lige nu. Selv hvis denne app kunne køre, ville installationsprocessen kræve en stor mængde RAM, så din server risikerer at fryse og fejle horribelt.",
"arch": "Denne app kan kun installeres på specifikke arkitekturer ({required}) men din serverarkitektur er {current}.",
"broken": "YunoHosts automatiske tests har markeret denne applikation som \"VIRKER IKKE\", og den vil sandsynligvis ødelægge dit system! Du bør IKKE installere den medmindre du ved hvad du foretager dig.",
"inprogress": "Denne applikation er stadig i prøvefasen (eller den virker måske slet ikke) og den vil sandsynligvis ødelægge dit system! Du bør IKKE installere den medmindre du ved hvad du laver.",
"install": "Den er allerede installeret og kan ikke installeres flere gange.",
"lowquality": "Denne applikation virker måske, men er ikke velintegreret i YunoHost. Visse funktioner, såsom single sign-on og backup/restore er muligvis ikke tilgængelige, eller de respekterer ikke god praksis.",
"thirdparty": "Applikationen er ikke en del af det officielle YunoHost-katalog. Ved at installere tredjeparts-applikationer risikerer du at kompromittere integriteten og sikkerheden for dit system. Du bør undlade at installere, hvis du ikke er helt sikker på, hvad du gør.",
"version": "Applikationen kræver YunoHost >= {required}, men den nuværende version er {current}. Opgrader YunoHost først."
},
"try_demo": "Prøv demoen",
"version": "Nuværende version: {version}"
},
"antifeatures": "Denne app har komponenter du måske ikke vil bryde dig om:",
"integration": {
"ldap": {
"true": "Brug YunoHost-konti til at logge ind (LDAP)",
"?": "Ingen information om LDAP-integration",
"false": "Bruger ikke YunoHost-konti til at logge ind (LDAP)"
},
"archs": "Understøttede arkitekturer:",
"multi_instance": {
"true": "Kan installeres flere gange",
"false": "Kan kun installeres en gang"
},
"resources": "Typisk ressourceforbrug: {ram} RAM, {disk} disk"
},
"installed_version": "Installerede version:"
},
"api_waiting": "Venter på svar fra serveren…"
}

View file

@ -1,11 +1,11 @@
{ {
"action": "Aktion", "action": "Aktion",
"add": "Hinzufügen", "add": "Hinzufügen",
"administration_password": "Administratorenpasswort", "administration_password": "Verwaltungspasswort",
"api_not_responding": "Die YunoHost-API antwortet nicht. Vielleicht ist 'yunohost-api' ausgefallen oder wurde neu gestartet?", "api_not_responding": "Die YunoHost-API antwortet nicht. Vielleicht ist 'yunohost-api' ausgefallen oder wurde neu gestartet?",
"app_info_access_desc": "Gruppen / Konten, die auf diese Applikation zugreifen dürfen:", "app_info_access_desc": "Gruppen / Benutzer:innen, die auf diese App zugreifen dürfen:",
"app_info_default_desc": "Hauptdomäne auf diese Applikation ({domain}) weiterleiten.", "app_info_default_desc": "Hauptdomain auf diese App ({domain}) weiterleiten.",
"app_info_uninstall_desc": "Diese Applikation löschen.", "app_info_uninstall_desc": "Diese App löschen.",
"app_install_custom_no_manifest": "Keine manifest.json Datei", "app_install_custom_no_manifest": "Keine manifest.json Datei",
"app_make_default": "Als Standard setzen", "app_make_default": "Als Standard setzen",
"applications": "Applikationen", "applications": "Applikationen",
@ -19,34 +19,46 @@
"both": "Beide", "both": "Beide",
"check": "Prüfen", "check": "Prüfen",
"close": "Schließen", "close": "Schließen",
"confirm_app_default": "Möchten Sie diese Applikation als Standard setzen?", "confirm_app_default": "Möchtest du diese App als Standard einstellen?",
"confirm_change_maindomain": "Möchten Sie wirklich die Hauptdomäne ändern?", "confirm_change_maindomain": "Möchtest du wirklich die Hauptdomain ändern?",
"confirm_delete": "Möchten Sie {name} wirklich löschen?", "confirm_delete": "Möchtest du wirklich {name} löschen?",
"confirm_install_custom_app": "WARNUNG! Die Installation von Drittanbieter-Applikationen könnte die Sicherheit und Integrität Ihres Systems gefährden. Sie sollten sie nicht installieren, außer Sie wissen, was Sie tun. Wollen Sie dieses Risiko eingehen?", "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": "Sind Sie sicher, dass Sie diese Applikation auf '/'? installieren wollen? Sie können keine andere Applikation auf der Domäne {domain} installieren", "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": "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_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öchten Sie {name} wirklich wiederherstellen?", "confirm_restore": "Möchtest du wirklich {name} wiederherstellen?",
"confirm_uninstall": "Möchten Sie {name} wirklich deinstallieren?", "confirm_uninstall": "Möchtest du wirklich {name} deinstallieren?",
"connection": "Verbindung", "connection": "Verbindung",
"created_at": "Erstellt am", "created_at": "Erstellt am",
"custom_app_install": "Benutzerdefinierte Applikation installieren", "custom_app_install": "Benutzerdefinierte App installieren",
"custom_app_url_only_github": "Derzeit nur von GitHub aus möglich",
"delete": "Löschen", "delete": "Löschen",
"description": "Beschreibung", "description": "Beschreibung",
"disable": "Deaktivieren", "disable": "Deaktivieren",
"domain_add": "Domain hinzufügen", "domain_add": "Domain hinzufügen",
"domain_default_desc": "Die Standarddomäne ist die Domäne, an der sich die Kontoinhaber anmelden.", "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*innen anmelden.",
"domain_name": "Domainname", "domain_name": "Domainname",
"domains": "Domänen", "domains": "Domänen",
"download": "Herunterladen", "download": "Herunterladen",
"enable": "Aktivieren", "enable": "Aktivieren",
"error_modify_something": "Du solltest etwas verändern", "error_modify_something": "Du solltest etwas verändern",
"firewall": "Firewall", "firewall": "Firewall",
"home": "Startseite", "home": "Home",
"hook_adminjs_group_configuration": "Systemkonfigurationen", "hook_adminjs_group_configuration": "Systemkonfigurationen",
"hook_conf_ldap": "Kontendatenbank", "hook_conf_cron": "Automatisierte Aufgaben",
"hook_conf_ldap": "Benutzerdatenbank",
"hook_conf_nginx": "Nginx",
"hook_conf_ssh": "SSH",
"hook_conf_ssowat": "SSOwat",
"hook_conf_xmpp": "XMPP",
"hook_conf_ynh_certs": "SSL-Zertifikate", "hook_conf_ynh_certs": "SSL-Zertifikate",
"hook_data_home": "Kontodaten", "hook_conf_ynh_firewall": "Firewall",
"hook_data_home_desc": "Die Daten des Kontos werden gespeichert unter /home/Konto", "hook_conf_ynh_mysql": "MySQL Passwort",
"hook_data_home": "Benutzerdaten",
"hook_data_home_desc": "Die Daten des Benutzers werden gespeichert unter /home/USER",
"hook_data_mail": "E-Mail", "hook_data_mail": "E-Mail",
"hook_data_mail_desc": "Rohdaten-E-Mails auf dem Server gespeichert", "hook_data_mail_desc": "Rohdaten-E-Mails auf dem Server gespeichert",
"id": "ID", "id": "ID",
@ -54,7 +66,7 @@
"install": "Installieren", "install": "Installieren",
"install_name": "{id} installieren", "install_name": "{id} installieren",
"install_time": "Installiert am", "install_time": "Installiert am",
"installation_complete": "Installation abgeschlossen", "installation_complete": "Installation vollständig",
"installed": "Installiert", "installed": "Installiert",
"ipv4": "IPv4", "ipv4": "IPv4",
"ipv6": "IPv6", "ipv6": "IPv6",
@ -63,11 +75,12 @@
"local_archives": "Lokale Archive", "local_archives": "Lokale Archive",
"login": "Anmelden", "login": "Anmelden",
"logout": "Abmelden", "logout": "Abmelden",
"mailbox_quota_description": "Legen Sie eine Speichergrößenbegrenzung für E-Mail-Inhalte fest.<br>Setzen Sie den Wert auf 0, um ihn zu deaktivieren.", "mailbox_quota_description": "Zum Beispiel, eine CD verfügt über 700M, eine über 4700M.",
"manage_apps": "Apps verwalten", "manage_apps": "Apps verwalten",
"manage_domains": "Domänen verwalten", "manage_domains": "Domains verwalten",
"manage_users": "Konten verwalten", "manage_users": "Benutzer*innen verwalten",
"multi_instance": "Kann mehrere Male installiert werden", "multi_instance": "Kann mehrere Male installiert werden",
"myserver": "meinserver",
"next": "Weiter", "next": "Weiter",
"no": "Nein", "no": "Nein",
"open": "Öffnen", "open": "Öffnen",
@ -77,15 +90,16 @@
"path": "Pfad", "path": "Pfad",
"port": "Port", "port": "Port",
"ports": "Ports", "ports": "Ports",
"postinstall_domain": "Dies ist die primäre Domäne für Ihren YunoHost Server und auch die Domäne, an der sich jeder anmelden wird. Sie wird für alle Konten sichtbar sein, daher wählen Sie die primäre Domäne 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": "Gratulation! YunoHost wurde erfolgreich installiert.", "postinstall_intro_1": "Gratuliere! YunoHost wurde erfolgreich installiert.",
"postinstall_intro_2": "Es sind noch zwei weitere Einstellungen notwendig, um die Dienste auf Ihrem Server zu aktivieren.", "postinstall_intro_2": "Zwei weitere Einstellungen sind notwendig, um den Dienst auf deinem Server zu aktivieren.",
"postinstall_intro_3": "Sie können mehr Informationen erhalten, wenn Sie auf der <a href='//yunohost.org/postinstall' target='_blank'>entsprechenden Dokumentationsseite</a> nachlesen", "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", "previous": "Zurück",
"protocol": "Protokoll", "protocol": "Protokoll",
"restore": "Wiederherstellen", "restore": "Wiederherstellen",
"running": "In Betrieb", "running": "Im Betrieb",
"save": "Sichern", "save": "Speichern",
"service_start_on_boot": "Beim Hochfahren starten", "service_start_on_boot": "Beim Hochfahren starten",
"services": "Dienste", "services": "Dienste",
"set_default": "Als Standard festlegen", "set_default": "Als Standard festlegen",
@ -100,6 +114,9 @@
"system_upgrade_btn": "Aktualisieren", "system_upgrade_btn": "Aktualisieren",
"tcp": "TCP", "tcp": "TCP",
"tools": "Werkzeuge", "tools": "Werkzeuge",
"tools_adminpw": "Administratorenpasswort ändern",
"tools_adminpw_current": "Derzeitiges Passwort",
"tools_adminpw_current_placeholder": "Derzeitiges Passwort eingeben",
"udp": "UDP", "udp": "UDP",
"unauthorized": "Unauthorisiert", "unauthorized": "Unauthorisiert",
"uninstall": "Deinstallieren", "uninstall": "Deinstallieren",
@ -114,60 +131,98 @@
"user_interface_link": "Benutzeroberfläche", "user_interface_link": "Benutzeroberfläche",
"user_mailbox_quota": "Mailbox Kontingent", "user_mailbox_quota": "Mailbox Kontingent",
"user_new_forward": "weiterleitung@externedomain.org", "user_new_forward": "weiterleitung@externedomain.org",
"user_username": "Anmeldename", "user_username": "Benutzer:inname",
"user_username_edit": "Account von {name} bearbeiten", "user_username_edit": "Account von {name} bearbeiten",
"users": "Konten", "users": "Benutzer:innen",
"users_new": "Neues Konto", "users_new": "Neue:r Benutzer:in",
"users_no": "Keine Konten.", "users_no": "Keine Benutzer:in.",
"wrong_password": "Falsches Passwort",
"yes": "Ja", "yes": "Ja",
"app_state_inprogress": "funktioniert noch nicht", "app_state_inprogress": "funktioniert noch nicht",
"app_state_notworking": "nicht funktionierend",
"app_state_working": "funktioniert",
"diagnosis": "Diagnose", "diagnosis": "Diagnose",
"dns": "DNS", "dns": "DNS",
"domain_default_longdesc": "Dies ist Ihre Standard-Domäne.", "domain_default_longdesc": "Das ist Ihre Standard-Domain.",
"domain_delete_longdesc": "Domäne löschen", "domain_delete_longdesc": "Domain löschen",
"domain_dns_config": "DNS-Konfiguration", "domain_dns_config": "DNS Konfiguration",
"domain_dns_longdesc": "DNS-Konfiguration anzeigen", "domain_dns_longdesc": "DNS Konfiguration anzeigen",
"domain_visit": "Besuchen",
"domain_visit_url": "Besuche {url}",
"error_server_unexpected": "Unerwarteter Serverfehler", "error_server_unexpected": "Unerwarteter Serverfehler",
"footer_version": "Angetrieben von <a href='https://yunohost.org'>YunoHost</a> {version} ({repo}).", "footer_version": "Angetrieben von <a href='https://yunohost.org'>YunoHost</a> {version} ({repo}).",
"form_input_example": "Beispiel: {example}", "form_input_example": "Beispiel: {example}",
"mailbox_quota_placeholder": "Leer lassen oder 0 zum Deaktivieren eintragen.", "mailbox_quota_placeholder": "Leer lassen oder 0 zum Deaktivieren eintragen.",
"user_mailbox_use": "von der Mailbox verwendeter Speicherplatz", "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_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 !",
"certificate_alert_great": "Großartig ! Du verwendest ein gültiges Let's Encrypt Zertifikat !",
"certificate_alert_unknown": "Status unbekannt",
"certificate_manage": "SSL-Zertifikat verwalten", "certificate_manage": "SSL-Zertifikat verwalten",
"ssl_certificate": "SSL-Zertifikat",
"confirm_cert_install_LE": "Willst du das Let's Encrypt Zertifikat für diese Domain installieren ?",
"confirm_cert_regen_selfsigned": "Bist du sicher, dass du das selbstsignierte Zertifikat für diese Domain erneuern willst ?",
"confirm_cert_manual_renew_LE": "Bist du sicher, dass du das Let's Encrypt Zertifikat für diese Domain manuell erneuern willst ?",
"certificate": "Zertifikat", "certificate": "Zertifikat",
"confirm_service_start": "Möchten Sie {name} wirklich starten?", "certificate_status": "Zertifikatstatus",
"confirm_service_stop": "Möchten Sie {name} wirklich anhalten?", "certificate_authority": "Zertifizierungsstelle",
"confirm_update_apps": "Möchten Sie wirklich alle Applikationen aktualisieren?", "validity": "Gültigkeit",
"confirm_upnp_enable": "Möchten Sie UPnP wirklich aktivieren?", "domain_is_eligible_for_ACME": "Die Domain scheint korrekt konfiguriert zu sein, um ein Let's Encrypt Zertifikat installieren zu können !",
"confirm_upnp_disable": "Möchten Sie UPnP wirklich deaktivieren?", "domain_not_eligible_for_ACME": "Die Domain scheint nicht korrekt konfiguriert zu sein, um ein Let's Encrypt Zertifikat installieren zu können! Bitte überprüfen Sie Ihre DNS-Konfiguration und die Erreichbarkeit Ihres HTTP-Servers. Der 'DNS records' und 'Web' Bereich in <a href='#/diagnosis'>der Diagnose Seite</a> kann Ihnen helfen zu verstehen, was falsch konfiguriert ist.",
"confirm_firewall_allow": "Sind Sie sicher, dass Sie den Port {port}? (protocol: {protocol}, Verbindung: {connection}) öffnen wollen", "install_letsencrypt_cert": "Let's Encrypt Zertifikat installieren",
"confirm_firewall_disallow": "Sind Sie sicher, dass Sie den Port {port}? (protocol: {protocol}, Verbindung {connection}) schliessen wollen", "manually_renew_letsencrypt_message": "Das Zertifikat wird, innerhalb der letzten 15 Tage bevor es ungültig wird, automatisch erneuert. Du kannst es aber auch manuell erneuern. (Nicht empfohlen).",
"confirm_update_specific_app": "Möchten Sie {app} wirklich aktualisieren?", "manually_renew_letsencrypt": "Jetzt manuell erneuern",
"confirm_reboot_action_reboot": "Möchten Sie den Server wirklich neustarten?", "regenerate_selfsigned_cert_message": "Wenn du willst, kannst du das selbstsigniertes Zertifikat erneuern.",
"confirm_reboot_action_shutdown": "Möchten Sie den Server wirklich herunterfahren?", "regenerate_selfsigned_cert": "Selbstsigniertes Zertifikat erneuern",
"domain_dns_conf_is_just_a_recommendation": "Dieser Abschnitt zeigt Ihnen die *empfohlene* Konfiguration. Sie konfiguriert *nicht* das DNS für Sie. Es liegt in Ihrer Verantwortung, die DNS-Zone bei Ihrem DNS-Registrar nach dieser Empfehlung zu konfigurieren.", "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_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 wirklich {app} aktualisieren?",
"confirm_reboot_action_reboot": "Möchten Sie wirklich den Server neustarten?",
"confirm_reboot_action_shutdown": "Möchten Sie 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.",
"ok": "OK", "ok": "OK",
"system_upgrade_all_applications_btn": "Aktualisiere alle Applikationen", "system_upgrade_all_applications_btn": "Aktualisiere alle Applikationen",
"system_upgrade_all_packages_btn": "Aktualisiere alle Pakete", "system_upgrade_all_packages_btn": "Aktualisiere alle Pakete",
"tools_reboot": "Starten Sie Ihre Server neu", "tools_reboot": "Starte deine Server neu",
"tools_reboot_btn": "Neustart", "tools_reboot_btn": "Neustart",
"tools_shutdown": "Fahren Sie Ihren Server herunter", "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_shutdown_btn": "Herunterfahren", "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_shutdown_reboot": "Herunterfahren/Neustarten", "tools_shutdown_reboot": "Herunterfahren/Neustarten",
"app_state_inprogress_explanation": "Der Entwickler dieser Applikation hat angegeben, dass sie nicht bereit für den produktiven Einsatz bereit ist. BITTE SEIEN SIE VORSICHTIG!", "app_state_working_explanation": "Der/die Entwickler:in dieser App deklariert sie als 'funktionierend'. Das heißt, sie sollte funktionieren (vgl. App Level). Sie ist jedoch nicht zwangsläufig überprüft, weshalb sie Probleme enthalten kann oder nicht vollständig in YunoHost integriert ist.",
"all_apps": "Alle Applikationen", "app_state_highquality": "hohe Qualität",
"app_info_changeurl_desc": "Ändern Sie die Zugriffs-URL dieser Anwendung (Domäne und/oder Pfad).", "app_state_notworking_explanation": "Der/die Entwickler:in dieser App deklariert sie als 'nicht funktionierend'. SIE WIRD IHR SYSTEM ZERSTÖREN!",
"app_state_highquality_explanation": "Diese Applikation ist seit mindestens einem Jahr gut in YunoHost integriert.", "app_state_inprogress_explanation": "Der/die Entwickler:in dieser App deklariert sie als nicht bereit für den produktiven Einsatz. SEIEN SIE VORSICHTIG!",
"app_info_change_url_disabled_tooltip": "Dieses Feature wurde in dieser Applikation noch nicht implementiert", "app_no_actions": "Diese Anwendung hat keine Aktionen",
"confirm_app_change_url": "Sind Sie sicher, dass Sie die Applikations-Zugangs-URL ändern möchten?", "all_apps": "Alle Apps",
"confirm_update_system": "Sind Sie sicher, dass Sie alle Systempakete aktualisieren wollen?", "app_info_changeurl_desc": "Ändern Sie die Zugriffs URL dieser Anwendung (Domain und/oder Pfad).",
"confirm_migrations_skip": "Migrationen zu überspringen wird nicht empfohlen. Sind Sie sicher, dass Sie das tun wollen?", "app_state_highquality_explanation": "Diese Anwendung ist seit mindestens einem Jahrgut gut in YunoHost integriert.",
"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?", "app_info_change_url_disabled_tooltip": "Dieses Feature wurde noch nicht in der App implementiert",
"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.", "confirm_app_change_url": "Sind Sie sicher, dass sie die App-Zugangs-URL ändern möchten?",
"good_practices_about_admin_password": "Sie sind gerade dabei, ein neues Administratorenpasswort zu setzen. 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.", "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.",
"from_to": "von {0} nach {1}", "from_to": "von {0} nach {1}",
"experimental_warning": "Achtung: Diese Funktion ist experimentell und gilt nicht als stabil, Sie sollten sie nicht verwenden, außer Sie wissen, was Sie tun.", "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.",
"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?", "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?",
"good_practices_about_user_password": "Sie werden nun ein neues Konto- bzw. Benutzerpasswort festlegen. Das Passwort sollte mindestens 8 Zeichen lang sein. Es ist jedoch empfehlenswert, ein längeres Passwort (d.h. eine Passphrase) und/oder verschiedene Arten von Zeichen (Groß- und Kleinschreibung, Ziffern und Sonderzeichen) zu verwenden.", "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.",
"license": "Lizenz", "license": "Lizenz",
"only_highquality_apps": "Nur hochqualitative Apps", "only_highquality_apps": "Nur hochqualitative Apps",
"only_decent_quality_apps": "Nur qualitativ hochwertige Apps", "only_decent_quality_apps": "Nur qualitativ hochwertige Apps",
@ -180,13 +235,14 @@
"migrations_pending": "Ausstehende Migrationen", "migrations_pending": "Ausstehende Migrationen",
"logs_operation": "Operationen, die auf dem System mit YunoHost durchgeführt wurden", "logs_operation": "Operationen, die auf dem System mit YunoHost durchgeführt wurden",
"logs_history": "Historie der Befehlsausführung auf dem System", "logs_history": "Historie der Befehlsausführung auf dem System",
"purge_user_data_warning": "Die Löschung der Daten von Konten ist unumkehrbar. 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_error": "Fehler",
"logs_package": "Historie des Debian-Paket-Managements", "logs_package": "Historie des Debian-Paket-Managements",
"logs_started_at": "Beginn", "logs_started_at": "Beginn",
"only_working_apps": "Nur funktionierende Apps", "only_working_apps": "Nur funktionierende Apps",
"logs_no_logs_registered": "Kein Log registriert für diese Kategorie", "logs_no_logs_registered": "Kein Log registriert für diese Kategorie",
"purge_user_data_checkbox": "Die Daten von {name} löschen? (Dadurch wird der Inhalt des Nutzer- und des E-Mail-Verzeichnisses gelöscht.)", "purge_user_data_checkbox": "Die Daten von {name} löschen? (Dadurch wird der Inhalt des Nutzer- und des E-Mail-Verzeichnisses gelöscht.)",
"unmaintained": "Unbetreut",
"logs_path": "Pfad", "logs_path": "Pfad",
"logs_service": "Service-Logs", "logs_service": "Service-Logs",
"migrations_no_done": "Keine vorherigen Migrationen", "migrations_no_done": "Keine vorherigen Migrationen",
@ -208,61 +264,59 @@
"words": { "words": {
"default": "Vorgabe", "default": "Vorgabe",
"collapse": "Zusammenbruch", "collapse": "Zusammenbruch",
"browse": "Durchsuchen", "dismiss": "Zurückweisen"
"link": "Link",
"none": "Keine",
"separator": ", ",
"valid": "Gültig"
}, },
"group": "Gruppe", "group": "Gruppe",
"details": "Details", "details": "Details",
"everything_good": "Alles O.K.!", "everything_good": "Alles gut!",
"ignore": "Ignorieren", "ignore": "Ignorieren",
"configuration": "Konfiguration", "configuration": "Konfiguration",
"group_explain_all_users": "Dies ist eine spezielle Gruppe, die alle Konten auf diesem 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", "ignored": "{count} wird ignoriert",
"last_ran": "Zuletzt ausgeführt:", "last_ran": "Zuletzt ausgeführt:",
"group_name": "Gruppenname", "group_name": "Gruppenname",
"group_all_users": "Alle Konten", "group_all_users": "Alle Benutzer:innen",
"group_visitors": "Gäste", "group_visitors": "Besucher:innen",
"group_add_member": "Ein Konto hinzufügen", "group_add_member": "Eine:n Benutzer:in hinzufügen",
"group_add_permission": "Hinzufügen einer Berechtigung", "group_add_permission": "Hinzufügen einer Berechtigung",
"group_specific_permissions": "Individuelle Berechtigungen pro Benutzer", "group_specific_permissions": "Benutzerspezifische Berechtigungen",
"groups_and_permissions": "Gruppen und Berechtigungen", "groups_and_permissions": "Gruppen und Berechtigungen",
"since": "seit", "since": "seit",
"permissions": "Berechtigungen", "permissions": "Berechtigungen",
"nobody": "Niemand", "nobody": "Niemand",
"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_format_name_help": "Sie können alphanumerische Zeichen und Leerzeichen verwenden",
"group_new": "Neue Gruppe", "group_new": "Neue Gruppe",
"group_explain_visitors": "Dies ist eine spezielle Gruppe, die Gäste repräsentiert", "group_explain_visitors": "Dies ist eine spezielle Gruppe, die anonyme Besucher:innen repräsentiert",
"rerun_diagnosis": "Diagnose wiederholen", "rerun_diagnosis": "Diagnose wiederholen",
"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.", "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.",
"others": "Anderes", "others": "Anderes",
"catalog": "Katalog", "catalog": "Katalog",
"app_state_lowquality": "geringe Qualität", "app_state_lowquality": "geringe Qualität",
"all": "Alle", "all": "Alle",
"confirm_service_restart": "Sind Sie sicher, dass Sie {name} neustarten möchten?", "confirm_service_restart": "Bist du sicher, dass du {name} neustarten möchtest?",
"run_first_diagnosis": "Initiale Diagnose starten", "run_first_diagnosis": "Initiale Diagnose läuft",
"diagnosis_first_run": "Die Diagnosefunktion wird versuchen, gängige Probleme in verschiedenen Teilen Ihres Servers zu finden, damit alles reibungslos läuft. Haben Sie keine Angst, wenn Sie ein paar Fehlermeldungen sehen, nachdem Sie ihren Server aufgesetzt haben: Es soll versuchen Ihnen 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 eine E-Mail.", "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.",
"group_explain_visitors_needed_for_external_client": "Sei vorsichtig und beachte, dass du manche Anwendungen für Gäste 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 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.",
"issues": "{count} Probleme", "issues": "{count} Probleme",
"restart": "Neustart", "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.", "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 Diagnosefunktion wird versuchen, gängige Probleme in verschiedenen Teilen Ihres Servers zu finden, damit alles reibungslos läuft. Die Diagnose wird auch automatisch zweimal täglich ausgeführt und falls Fehler gefunden werden, bekommt der Administrator eine E-Mail. Beachten Sie, dass einige Tests nicht relevant sind, wenn Sie einzelne Features (zum Beispiel XMPP) nicht benutzten oder Sie ein komplexes Setup haben. In diesem Fall und wenn Sie wissen was Sie tun ist es in Ordnung die dazugehörigen Warnungen und Hinweise zu ignorieren.", "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.", "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": "Konten 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 Administratoren und Benutzer hinzugefügt werden.", "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.",
"logs_suboperations": "Unter-Operationen", "logs_suboperations": "Unter-Operationen",
"api_errors_titles": { "api_errors_titles": {
"APIBadRequestError": "Es ist ein Fehler in Yunohost aufgetreten", "APIBadRequestError": "Ein unerwarteter Fehler ist in Yunohost aufgetreten",
"APIError": "Es ist ein unerwarteter Fehler in Yunohost aufgetreten", "APIError": "Ein unerwarteter Fehler ist in Yunohost aufgetreten",
"APIConnexionError": "YunoHost hat einen Verbindungsfehler festgestellt", "APIConnexionError": "YunoHost hat einen Verbindungsfehler festgestellt",
"APINotRespondingError": "Die YunoHost API antwortet nicht", "APINotRespondingError": "Die YunoHost API antwortet nicht",
"APIInternalError": "Es ist ein interner Fehler in Yunohost aufgetreten", "APIInternalError": "Ein interner Fehler ist in Yunohost aufgetreten",
"APINotFoundError": "YunoHost API konnte keine Route finden" "APINotFoundError": "YunoHost API konnte keine Route finden"
}, },
"api_error": { "api_error": {
"sorry": "Tut uns wirklich leid.", "sorry": "Tut uns wirklich leid.",
"info": "Die folgenden Informationen könnten für die Person, die Ihnen hilft, nützlich sein:", "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>.", "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", "view_error": "Fehler ansehen",
"server_said": "Während der Verarbeitung der Aktion hat der Server gemeldet:", "server_said": "Während der Verarbeitung der Aktion hat der Server gemeldet:",
@ -278,14 +332,18 @@
"domain": "Wählen Sie eine Domäne." "domain": "Wählen Sie eine Domäne."
} }
}, },
"permission_show_tile_enabled": "Sichtbar als Kachel im Kontenportal", "permission_show_tile_enabled": "Sichtbar als Kachel im Benutzerportal",
"permission_main": "Haupt-Label", "permission_main": "Haupt-Label",
"permission_corresponding_url": "Entsprechender URL", "permission_corresponding_url": "Entsprechender URL",
"cancel": "Abbrechen", "cancel": "Abbrechen",
"app_show_categories": "Kategorien anzeigen", "app_show_categories": "Kategorien anzeigen",
"app_manage_label_and_tiles": "Etiketten und Kacheln verwalten", "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_label": "Konfigurieren dieser App",
"app_config_panel": "Konfigurationsfenster",
"app_choose_category": "Kategorie auswählen", "app_choose_category": "Kategorie auswählen",
"api_waiting": "Warten auf Antwort des Servers…", "app_actions_label": "Aktionen ausführen",
"api_waiting": "Warten auf Server Antwort...",
"user_emailforward_add": "Fügen Sie eine Mail-Weiterleitung hinzu", "user_emailforward_add": "Fügen Sie eine Mail-Weiterleitung hinzu",
"user_emailaliases_add": "Fügen Sie einen Mail-Alias hinzu", "user_emailaliases_add": "Fügen Sie einen Mail-Alias hinzu",
"unknown": "Unbekannt", "unknown": "Unbekannt",
@ -293,43 +351,42 @@
"tools_webadmin_settings": "Webadministratoreinstellungen", "tools_webadmin_settings": "Webadministratoreinstellungen",
"tools_webadmin": { "tools_webadmin": {
"transitions": "Seitenübergangsanimationen", "transitions": "Seitenübergangsanimationen",
"experimental_description": "Ermöglicht den Zugriff auf experimentelle Funktionen. Diese gelten als instabil und können Ihr System beschädigen.<br>Bitte nur aktivieren, wenn Sie wissen, was Sie tun.", "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", "experimental": "Experimenteller Modus",
"cache_description": "Deaktivieren Sie den Cache, wenn Sie mit der CLI arbeiten möchten, während Sie gleichzeitig in diesem Web-Portal navigieren.", "cache_description": "Deaktivieren Sie den Cache, wenn Sie mit der CLI arbeiten möchten, während Sie gleichzeitig in diesem Webadministrator navigieren.",
"cache": "Cache", "cache": "Zwischenspeicher",
"fallback_language_description": "Sprache, die verwendet wird, falls die Übersetzung nicht in der Hauptsprache verfügbar ist.", "fallback_language_description": "Sprache, die verwendet wird, falls die Übersetzung nicht in der Hauptsprache verfügbar ist.",
"language": "Sprache", "language": "Sprache",
"fallback_language": "Fallback-Sprache", "fallback_language": "Sprache auf die Nofalls zurückgegriffen wird"
"theme": "Umschalten zu Dunkel-Modus"
}, },
"tools_power_up": "Ihr Server scheint zugänglich zu sein. Sie können jetzt versuchen, sich anzumelden.",
"search": { "search": {
"not_found": "Es gibt {items}, die Ihren Auswahlkriterien entsprechen. | Es gibt 1 {items}, das Ihrem Auswahlkriterium entspricht. | Es gibt {items}, die Ihren Auswahlkriterien entsprechen.", "not_found": "Es gibt {items}, die den von Ihnen gewählten Kriterien entsprechen.",
"for": "Suche nach {items}" "for": "Suche nach {items} ..."
}, },
"readme": "Lies mich", "readme": "Readme",
"postinstall_set_password": "Legen Sie das Administrationskennwort fest",
"postinstall_set_domain": "Hauptdomäne festlegen", "postinstall_set_domain": "Hauptdomäne festlegen",
"placeholder": { "placeholder": {
"domain": "my-domain.de", "domain": "my-domain.de",
"groupname": "Mein Gruppenname", "groupname": "Mein Gruppenname",
"lastname": "Muster", "lastname": "Mustermann",
"firstname": "Hans", "firstname": "Max",
"username": "hansmuster", "username": "maxmustermann"
"file": "Wählen Sie eine Datei aus oder fügen Sie sie per Drag and Drop ein",
"fullname": "Hans Muster"
}, },
"perform": "Ausführen", "perform": "Ausführen",
"migrations_disclaimer_not_checked": "Für diese Migration müssen Sie den Haftungsausschluss bestätigen, bevor Sie sie ausführen.", "migrations_disclaimer_not_checked": "Für diese Migration müssen Sie den Haftungsausschluss bestätigen, bevor Sie sie ausführen.",
"migrations_disclaimer_check_message": "Ich habe diesen Haftungsausschluss gelesen und verstanden", "migrations_disclaimer_check_message": "Ich habe diesen Haftungsausschluss gelesen und verstanden",
"mailbox_quota_example": "700M ist eine CD, 4700M ist eine DVD", "mailbox_quota_example": "700M ist eine CD, 4700M ist eine DVD",
"items_verbose_count": "Es gibt {items}. | Es gibt 1 {items}. | Es gibt {items}.", "items_verbose_count": "Es gibt {items}.",
"items": { "items": {
"users": "keine Konten | Konto | {c} Konten", "users": "keine Benutzer*innen | Benutzer*in | {c} Benutzer*innen",
"services": "keine Dienste | Dienst | {c} Dienste", "services": "keine Dienste | Dienst | {c} Dienste",
"logs": "keine Protokolle | Protokoll | {c} Protokolle", "logs": "keine Protokolle | Protokoll | {c} Protokolle",
"installed_apps": "keine installierten Apps | installierte App | {c} installierte Apps", "installed_apps": "keine installierten Apps | installierte App | {c} installierte Apps",
"groups": "keine Gruppen | Gruppe | {c} Gruppen", "groups": "keine Gruppen | Gruppe | {c} Gruppen",
"domains": "keine Domänen | Domäne | {c} Domänen", "domains": "keine Domains | Domain | {c} Domains",
"backups": "keine Sicherungen | Sicherung| {c} Sicherungen", "backups": "keine Backups | Backup | {c} Backups",
"apps": "keine Apps | App | {c} Apps", "apps": "keine Apps | App | {c} Apps",
"permissions": "keine Berechtigungen | Berechtigung | {c} Berechtigungen" "permissions": "keine Berechtigungen | Berechtigung | {c} Berechtigungen"
}, },
@ -341,29 +398,25 @@
"GET": "lesen" "GET": "lesen"
}, },
"last_action": "Letzte Aktion:", "last_action": "Letzte Aktion:",
"title": "Verlauf", "title": "Historie",
"is_empty": "Der Verlauf ist leer." "is_empty": "Momentan nichts in der History."
}, },
"form_errors": { "form_errors": {
"required": "Feld ist erforderlich.", "required": "Feld ist erforderlich.",
"passwordMatch": "Passwörter stimmen nicht überein.", "passwordMatch": "Passwörter stimmen nicht überein.",
"passwordLenght": "Das Passwort muss mindestens 8 Zeichen lang sein.", "passwordLenght": "Das Passwort muss mindestens 8 Zeichen lang sein.",
"number": "Wert muss eine Zahl sein.", "number": "Wert muss eine Zahl sein.",
"notInUsers": "Das Konto '{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.", "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", "name": "Namen dürfen keine Sonderzeichen außer <code>, .'- </code> enthalten",
"githubLink": "Die URL muss ein gültiger Github-Link zu einem Repository sein",
"emailForward": "Ungültige E-Mail-Weiterleitung: Sie darf nur aus alphanumerischen Zeichen und <code> _.-+</code> bestehen (z. B. jemand+tag@example.com, s0me-1+tag@example.com)", "emailForward": "Ungültige E-Mail-Weiterleitung: Sie darf nur aus alphanumerischen Zeichen und <code> _.-+</code> bestehen (z. B. jemand+tag@example.com, s0me-1+tag@example.com)",
"email": "Ungültige E-Mail: Sie darf nur aus alphanumerischen Zeichen und <code> _.-</code> bestehen (z. B. jemand@example.com, s0me-1@example.com)", "email": "Ungültige E-Mail: Sie darf nur aus alphanumerischen Zeichen und <code> _.-</code> bestehen (z. B. jemand@example.com, s0me-1@example.com)",
"dynDomain": "Ungültiger Domainname: Er darf nur aus alphanumerischen Kleinbuchstaben und Bindestrichen bestehen", "dynDomain": "Ungültiger Domainname: Er darf nur aus alphanumerischen Kleinbuchstaben und Bindestrichen bestehen",
"domain": "Ungültiger Domainname: Er darf nur aus alphanumerischen Kleinbuchstaben, Punkt- und Strichzeichen bestehen", "domain": "Ungültiger Domainname: Er darf nur aus alphanumerischen Kleinbuchstaben, Punkt- und Strichzeichen bestehen",
"between": "Der Wert muss zwischen {min} und {max} liegen.", "between": "Der Wert muss zwischen {min} und {max} liegen.",
"alphalownumdot_": "Der Wert darf nur aus alphanumerischen Kleinbuchstaben und Unterstrichen bestehen.", "alphalownum_": "Der Wert darf nur aus alphanumerischen Kleinbuchstaben und Unterstrichen bestehen.",
"alpha": "Der Wert darf nur aus alphabetischen Zeichen bestehen.", "alpha": "Der Wert darf nur aus alphabetischen Zeichen bestehen."
"remote": "{message}",
"pattern": "{type}",
"invalid_form": "Das Formular enthält Fehler.",
"maxValue": "Der Wert muss eine Zahl sein, die gleich oder kleiner als {max} ist.",
"appRepoUrl": "Die YunoHost-App-Repository-URLs müssen wie folgt geformt sein https://domain.tld/path/to/repo_ynh"
}, },
"footer": { "footer": {
"donate": "Spenden", "donate": "Spenden",
@ -374,41 +427,30 @@
"error": "Fehler", "error": "Fehler",
"enabled": "Aktiviert", "enabled": "Aktiviert",
"domain_delete_forbidden_desc": "Sie können '{domain}' nicht entfernen, da es sich um die Standarddomäne handelt. Sie müssen eine andere Domäne auswählen (oder <a href='#/domains/add'> eine neue hinzufügen </a>) und diese als Standarddomäne festlegen um die aktuelle entfernen zu können.", "domain_delete_forbidden_desc": "Sie können '{domain}' nicht entfernen, da es sich um die Standarddomäne handelt. Sie müssen eine andere Domäne auswählen (oder <a href='#/domains/add'> eine neue hinzufügen </a>) und diese als Standarddomäne festlegen um die aktuelle entfernen zu können.",
"domain_add_dyndns_forbidden": "Sie haben bereits eine DynDNS-Domain vom YunoHost-Projekt registriert/abonniert. Es ist beabsichtigt, dass diese Funktion auf eine Domain dieses Typs pro Server limitiert ist. Falls Sie eine Subdomain Ihrer bereits registrierten Domain hinzufügen möchten, benützen Sie bitte die obige Option 'Ich will eine Domain, die in meinem Besitz ist, hinzufügen, oder eine Subdomain'. Falls Sie eine komplett andere Domain verwenden möchten, sollten Sie vorher Ihre bereits existierende DynDNS-Domain entfernen. DynDNS-Domains sind gut, wenn Sie mit Self-Hosting gerade erst beginnen, aber mittel/-langfristig empfehlen wir, dass Sie ihre ganz eigene Domain bei einem Registrar erwerben, um vollständiges Eigentum über Ihre Domain zu erlangen.", "domain_add_dyndns_forbidden": "Sie haben bereits eine DynDNS-Domain abonniert. Sie können Ihre aktuelle DynDNS-Domain im Forum <a href = '// forum.yunohost.org/t/nohost-domain-recovery-suppression-de-domaine-en- entfernen nohost-me-noho-st-et-ynh-fr / 442 '> im dedizierten Thread </a>.",
"disabled": "Deaktiviert", "disabled": "Deaktiviert",
"dead": "Inaktiv", "dead": "Inaktiv",
"day_validity": " Abgelaufen seit | einem Tag | {count} Tage", "day_validity": " Abgelaufen seit | einem Tag | {count} Tage",
"confirm_app_install": "Möchten Sie diese Applikation wirklich installieren?", "confirm_app_install": "Möchtest du diese Anwendung wirklich installieren?",
"common": { "common": {
"lastname": "Nachname", "lastname": "Nachname",
"firstname": "Vorname" "firstname": "Vorname"
}, },
"code": "Code", "code": "Code",
"app_actions": "Aktionen",
"go_back": "Gehe zurück", "go_back": "Gehe zurück",
"api_not_found": "Es scheint, als ob der Web-Administrator versucht hat etwas aufzulösen das nicht existiert.", "api_not_found": "Es scheint als ob das Web-Admin versucht hat etwas aufzulösen das nicht existiert.",
"api": { "api": {
"query_status": { "query_status": {
"warning": "Erfolgreich durchgeführt mit Fehlern oder Warnungen", "warning": "Erfolgreich durchführt mit Fehlern oder Warnungen",
"success": "Vollständig durchgeführt", "success": "Vollständig durchgeführt",
"pending": "In Bearbeitung", "pending": "In Bearbeitung",
"error": "Nicht erfolgreich" "error": "Nicht erfolgreich"
}, },
"processing": "Der Server verarbeitet die Aktion…", "processing": "Der Server verarbeitet gerade diese Aktion..."
"partial_logs": "[…] (in der Historie nach Logs suchen)",
"reconnecting": {
"title": "Versuche mit dem Server zu kommunizieren…",
"failed": "Der Server scheint nicht zu antworten. Sie können versuchen, sich neu zu verbinden oder probieren `systemctl restart yunohost-api` über ssh auszuführen.",
"reason": {
"unknown": "Die Verbindung mit dem Server wurde aus unbekannten Gründen beendet.",
"reboot": "Ihr Server startet neu und wird für einige Zeit nicht erreichbar sein. Eine Login-Aufforderung wird erscheinen, sobald der Server wieder erreichbar ist.",
"shutdown": "Ihr Server wird heruntergefahren und ist nicht mehr erreichbar. Schalten Sie ihn wieder ein und eine Anmeldeaufforderung wird angezeigt, sobald der Server erreichbar ist.",
"upgrade_system": "Die Verbindung mit dem Server wurde aufgrund einer YunoHost-Aktualisierung beendet. Warten Sie bis der Server wieder erreichbar ist…"
},
"success": "Der Server ist jetzt erreichbar! Sie können versuchen, sich anzumelden"
}
}, },
"hook_data_xmpp": "XMPP-Daten", "hook_data_xmpp": "XMPP-Daten",
"hook_conf_manually_modified_files": "Manuell geänderte Konfigurationen", "hook_conf_manually_modified_files": "Manuell geänderte Konfigurationsdateien",
"hook_conf_ynh_settings": "YunoHost-Konfigurationen", "hook_conf_ynh_settings": "YunoHost-Konfigurationen",
"human_routes": { "human_routes": {
"backups": { "backups": {
@ -417,23 +459,23 @@
"restore": "Das Backup '{name}' wiederherstellen" "restore": "Das Backup '{name}' wiederherstellen"
}, },
"apps": { "apps": {
"update_config": "Das Panel '{id}' der Applikation '{name}' aktualisieren", "update_config": "Die Konfiguration der Applikation '{name}' aktualisieren",
"uninstall": "Die Applikation '{name}' deinstallieren", "uninstall": "Die Applikation '{name}' deinstallieren",
"perform_action": "Die Aktion '{action}' durchführen für die Applikation '{name}'",
"install": "Die Applikation '{name}' installieren", "install": "Die Applikation '{name}' installieren",
"change_url": "Die Zugriffs-URL für '{name}' ändern", "change_url": "Die Zugriffs-URL für '{name}' ändern",
"change_label": "Das Label von '{prevName}' nach '{nextName}' ändern", "change_label": "Das Label von '{prevName}' nach '{nextName}' ändern",
"set_default": "Weiterleitung des Domänen-Rootverzeichnisses von '{domain}' zu '{name}'", "set_default": "Weiterleitung des Domänen-Rootverzeichnisses von '{domain}' zu '{name}'"
"action_config": "Führe Aktion '{action}' der Konfiguration der Applikation '{name}' durch",
"dismiss_notification": "Ablehnungs-Benachrichtigung für '{name}'"
}, },
"adminpw": "Administratorpasswort ändern",
"domains": { "domains": {
"add": "Die Domäne '{name}' hinzufügen", "add": "Die Domäne '{name}' hinzufügen",
"set_default": "Definiere '{name}' als Standarddomäne", "set_default": "Definiere '{name}' als Standarddomäne",
"delete": "Lösche die Domäne '{name}'", "revert_to_selfsigned": "Rückkehr zu selbstsigniertem Zertifikat für '{name}'",
"update_config": "Das Panel '{id}' für die Konfiguration der Domäne '{name}' aktualisieren", "regen_selfsigned": "Erneuere das selbstsignierte Zertifikat für '{name}'",
"push_dns_changes": "Propagiere die DNS-Einträge zu Registrar für '{name}'", "manual_renew_LE": "Erneuere das Zertifikat für '{name}'",
"cert_install": "Zertifikat für '{name}' installieren", "install_LE": "Installiere das Zertifikat für '{name}'",
"cert_renew": "Zertifikat erneuern für '{name}'" "delete": "Lösche die Domäne '{name}'"
}, },
"diagnosis": { "diagnosis": {
"unignore": { "unignore": {
@ -465,7 +507,7 @@
"reboot": "Den Server neustarten", "reboot": "Den Server neustarten",
"postinstall": "Post-Installation ausführen", "postinstall": "Post-Installation ausführen",
"permissions": { "permissions": {
"remove": "'{name}' Autorisierung entziehen für Zugriff auf '{perm}'", "remove": "'{name}' Autosierierung entziehen für Zugriff auf '{perm}'",
"add": "'{name}' autorisieren für Zugriff auf '{perm}'" "add": "'{name}' autorisieren für Zugriff auf '{perm}'"
}, },
"migrations": { "migrations": {
@ -473,223 +515,24 @@
"run": "Migrationen durchführen" "run": "Migrationen durchführen"
}, },
"users": { "users": {
"update": "Konto '{name}' aktualisieren", "update": "Den Benutzer '{name}' aktualisieren",
"delete": "Konto '{name}' löschen", "delete": "Den Benutzer '{name}' löschen",
"create": "Konto '{name}' erstellen" "create": "Den Benutzer '{name}' erstellen"
}, },
"upgrade": { "upgrade": {
"app": "Die Applikation '{app}' aktualisieren", "app": "Die Anwendung '{app}' aktualisieren",
"apps": "Alle Anwendungen aktualisieren", "apps": "Alle Anwendungen aktualisieren",
"system": "Das System aktualisieren" "system": "Das System aktualisieren"
}, },
"update": "Nach Updates suchen", "update": "Nach Updates suchen",
"shutdown": "Den Server herunterfahren", "shutdown": "Den Server herunterfahren",
"share_logs": "Einen Link für den Log '{name}' erstellten", "share_logs": "Einen Link für den Log '{name}' erstellten"
"reconnecting": "Wiederverbinden",
"settings": {
"update": "Aktualisieren der globalen Einstellungen für '{panel}'"
}
}, },
"postinstall": { "postinstall": {
"force": "Forciere den Post-Install", "force": "Forciere den Post-Install"
"title": "Post-Installation",
"user": {
"title": "Erstes Administratorkonto erstellen",
"first_user_help": "Diesem Benutzer werden Adminstratoren-Privilegien erteilt und es wird ihm erlaubt sein, sich mit dem Admin-Portal zu verbinden und auch sich direkt mit dem Server über SSH zu verbinden.\nWeil es ein regulärer Benutzer ist, werden Sie sich auch mit dem Benutzer-Portal (SSO) mit seinen Zugangsdaten verbinden können. \nSobald die post-installation vollständig ist, werden Sie in der Lage sein, weitere Admin-Benutzer zu erstellen, indem Sie diese der 'admins'-Gruppe hinzufügen."
}
}, },
"hook_data_xmpp_desc": "Konfiguration für Räume und Konten, hochgeladene Dateien", "hook_data_xmpp_desc": "Konfiguration für Räume und Benutzer, hochgeladene Dateien",
"items_verbose_items_left": "Es bleiben {items} übrig. | Es bleibt 1 {items} übrig. | Es bleiben {items} übrig.", "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.", "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", "app_install_parameters": "Installationsparameter"
"domain": {
"config": {
"title": "Domänen-Konfiguration",
"edit": "Domänen-Konfiguration bearbeiten"
},
"dns": {
"manual_config": "Empfohlene DNS-Einträge für die manuelle Konfiguration",
"push": "Die DNS-Einträge zum Registrar propagieren",
"push_force": "Bestehende Einträge überschreiben",
"auto_config": "Automatische DNS-Einträge-Konfiguration",
"push_force_warning": "Es scheint, als ob einige der von YunoHost vorgeschlagenen DNS-Einträge in der Konfiguration ihres Registrars bereits existieren würden. Sie können die Option zum Überschreiben wählen, wenn Sie wissen, was Sie tun.",
"auto_config_ignored": "ignoriert, wird von YunoHost nicht geändert, ausser wenn Sie die Option zum Überschreiben anwählen",
"auto_config_ok": "Automatische Konfiguration scheint OK zu sein!",
"auto_config_zone": "Aktuelle DNS-Zone",
"edit": "DNS-Konfiguration bearbeiten",
"info": "Die automatische DNS-Einträge-Konfiguration ist ein experimentelles Feature. <br> Erwägen Sie es, Ihre aktuelle DNS-Konfiguration im Webinterface bei ihrem DNS-Registrar zu sichern, bevor Sie die Einträge von hier aus propagieren.",
"push_force_confirm": "Sind Sie sicher, dass Sie die Propagierung aller vorgeschlagenen DNS-Einträge forcieren möchten? Seien Sie sich bewusst, dass dies dazu führen kann, dass es manuelle oder wichtige Default-Einträge, die ihr Registrar definiert hat, überschreiben könnte.",
"methods": {
"auto": "Automatisch",
"manual": "Manuell",
"none": "Keine",
"semi_auto": "Halbautomatisch",
"handled_in_parent": "In der übergeordneten Domäne verwaltet"
}
},
"cert": {
"types": {
"letsencrypt": "Let's Encrypt",
"selfsigned": "Selbstsigniert",
"other": "Andere/Unbekannt"
},
"valid_for": "gültig für {days}"
},
"info": {
"apps_on_domain": "Auf der Domäne installierte Applikationen",
"certificate_authority": "SSL-Zeritifizierungsstelle",
"registrar": "Registrar",
"dyn_dns_remove_and_unsubscribe": "sie müssen auch die Domain beim Yunohost DynDNS Service abmelden"
},
"see_parent_domain": "Schauen Sie bitte bei der Hauptdomäne nach",
"types": {
"main_domain": "Hauptdomäne"
},
"toggle_subdomains": "Subdomänen wechseln",
"explain": {
"main_domain": "Die Hauptdomäne ist die Domäne, von welcher aus die Benutzer sich mit dem Portal verbinden können (via \"{domain}/yunohost/sso\"). <br>Darum ist es leider nicht möglich, sie zu entfernen.<br>Falls Sie \"{domain}\" entfernen möchten, werden sie vorher eine andere Domäne auswählen und als Hauptdomäne festlegen müssen."
},
"add": {
"dyn_dns_password_desc": "Dieses Passwort erlaubt Ihnen zu einem späteren Zeitpunkt die Widerherstellung der Domäne wenn Sie Ihr System neu installieren. Wenn Sie diese Domäne vorher schon registriert haben, verwenden Sie hier dieses Wiederherstellungspasswort für die Wiederherstellung der Domäne.",
"from_local_desc": "Wenn Sie keinen \"echten\" öffentlichen Domänennamen wünschen, können Sie hier alles verwenden, was in <code>.local</code> oder <code>.test</code> endet. Domänennamen welche in <code>.local</code> enden, sind in dem Sinne speziell, als dass sie in Ihrem lokalen Netzwerk automatisch aufgelöst werden können, angenommen Ihre Clients unterstützen das Bonjour-Protokoll. Als Alternative dazu können Sie Ihre <code>/etc/hosts</code> -Datei ( oder äquivalent für Windows ) auf jedem Ihrer Clients so einstellen, von welchen aus Sie diese Domäne benützen wollen, oder indem Sie die lokalen DNS-Einträge in Ihrem Internet-Router entsprechend konfigurieren.",
"dyn_dns_password": "Domainwiederherstellungspasswort",
"from_local": "Ich will eine Domain ausschließlich für die lokale / testweise Verwendung",
"from_registrar": "Ich möchte eine eigene Domain oder eine Subdomain hinzufügen",
"from_registrar_desc": "Sie müssen gegebenenfalls die DNS-Konfiguration bei ihrem Registrar vervollständigen. Die Diagnose von Yunohost zeigt Ihnen an, welche Records Sie noch konfigurieren müssen.",
"from_yunohost": "Ich besitze keine Domain, Ich möchte eine kostenlose DynDNS-Domain des Yunohost Projektes nutzen",
"from_yunohost_desc": "Das YunoHost-Projekt unterhält einen kostenlosen 'DynDNS'-Service. Dieser ist limitiert auf eine einzige solche Domäne pro Server (Sie können trotzdem später eine Subdomain mit der obigen Option 'Ich will eine Domäne, die in meinem Besitz ist, hinzufügen, oder eine Subdomain' hinzufügen). Die DNS-Konfiguration wird automatisch von YunoHost gehandhabt. Dies ist ideal, wenn Sie mit Self-Hosting überhaupt erst beginnen und Sie noch nicht in einen Domainname investieren möchten. Wie auch immer, mittel/-langfristig empfehlen wir der Kauf eines eigenen Domainnames bei einem Registrar, um das vollständige Eigentum über Ihre Domäne zu erlangen."
}
},
"domain_dns_push_failed_to_authenticate": "Die Authentifizierung an der API des Registrars war nicht erfolgreich. Höchstwahrscheinlich sind die <a href='#/domains/{domain}/config'>Zugangsdaten</a> falsch? (Fehler: {error})",
"domain_dns_push_managed_in_parent_domain": "Die automatische DNS-Konfiguration wird von der übergeordneten Domäne <a href='#/domains/{parent_domain}/dns'>{parent_domain}</a> verwaltet.",
"domain_dns_push_not_applicable": "Die automatische DNS-Konfiguration ist nicht auf die Domäne {domain} anwendbar. <br>Konfiguriere die DNS-Einträge, wie in der <a href='https://yunohost.org/dns'>Dokumentation<a href='https://yunohost.org/dns'> beschrieben, mit Hilfe der folgenden vorgeschlagenen Konfiguration manuell.",
"users_import_delete_desc": "Wenn angewählt, werden alle Konten, die nicht in der CSV-Datei enthalten sind, gelöscht (und bereinigt).",
"users_import_csv_file_desc": "Die CSV-Datei muss im Format UTF-8 sein und die Spalten Benutzername, Passwort, Gruppen, E-Mail und Quota beinhalten. Für eine Beispiel-CSV-Datei können Sie <a href='/yunohost/api/users/export' target='_BLANK'>Benutzer als CSV-Datei exportieren</a> und die Datei ändern.",
"users_import": "Konten importieren",
"users_export": "Konten exportieren",
"users_import_csv_file": "CSV-Datei",
"users_import_delete": "Nicht gelistete Konten löschen",
"users_import_update_desc": "Wenn angewählt, werden alle Konten, die in der CSV-Datei enthalten sind, mit neuen den Werten aktualisiert",
"users_import_delete_others": "Alle nicht gelisteten Konten löschen",
"yunohost_admin": "YunoHost-Admin",
"text_selection_is_disabled": "Textauswahl ist deaktiviert. Wenn Sie diesen Log teilen möchten, teilen Sie bitte den *kompletten* Log, indem Sie den Button 'Logs teilen mit YunoPaste' anklicken. <br/><small>Oder falls Sie wirklich wirklich einen Text auswählen möchten, klicken Sie auf die Tasten:↓↓↑↑.</small>",
"users_import_update": "Vorhandene Konten aktualisieren",
"users_import_confirm_destructive": "Sind Sie sicher, dass Sie die Konten, die nicht in diesen Datei enthalten sind, löschen wollen?",
"retry": "Wiederhole",
"app_state_broken": "beschädigt",
"app_state_broken_explanation": "Diese Applikation ist zur Zeit fehlerhaft und kann gemäss automatisierter Tests durch YunoHost nicht installiert werden",
"details_about": "Mehr Details über {subject} anzeigen",
"confirm_install_app_broken": "VORSICHT! Diese Applikation ist gemäss YunoHost's automatischen Test beschädigt und wird vermutlich ihr System beschädigen! Sie sollten sie vermutlich NICHT installieren, es sei denn, Sie wissen was Sie tun. Wollen Sie dieses Risiko wirklich eingehen?",
"group_admins": "Administratoren",
"group_explain_admins": "Dies ist eine spezielle Gruppe, welche zu den Administratoren-Benutzern gehört. Benutzer in dieser Gruppe besitzen, einfach ausgedrückt, alle Berechtigungen auf dem Server (verändern, erstellen, hinzufügen und zurückhalten). Sie können folglich auf die Admin-Oberfläche von YunoHost zugreifen, sich via SSH mit dem Server verbinden und ausserdem das Kommando `sudo` verwenden. Zusätzlich erhalten sie alle E-Mails, welche an root@, admin@, admins@, wie z.B. die Diagnose-Benachrichtigungen, gesendet wurden. Sie sollten wirklich nur Personen zu dieser Gruppe hinzufügen, denen Sie absolut vertrauen!",
"important_yunohost_upgrade": "Eine grössere YunoHost-Aktualisierung ist erhältlich. Es ist sehr empfehlenswert, die Release-Note(s) im Forum sorgfältig durchzulesen, bevor Sie aktualisieren : <a href='https://forum.yunohost.org/tag/ynh_release'>Die Release-Notes im Forum aufrufen.</a>",
"label_for_manifestname_help": "Dies ist der Name, welcher im Benutzer-Portal angezeigt wird. Dies kann später nochmal geändert werden.",
"manage_groups": "Gruppenmanagement",
"tools_yunohost_settings": "YunoHost-Einstellungen",
"wrong_password_or_username": "Falsches Passwort für Benutzername",
"app": {
"install": {
"problems": {
"broken": "Diese Anwendung ist laut automatischer Tests von YunoHost beschädigt und wird wahrscheinlich Ihr System ruinieren! Sie sollten sie NICHT installieren, wenn Sie nicht wissen, was Sie tun.",
"arch": "Diese App kann nur auf spezifischen Architekturen ({required}) installiert werden, aber die Architektur Ihres Servers ist {current}.",
"ram": "Diese App benötigt {required} RAM für Installation/Upgrade aber es sind aktuell nur {current} verfügbar. Auch wenn diese App funktioniern würde, würde der Installationsprozess viel RAM benötigen. Es würde die Gefahr bestehen, dass Ihr Server einfrieren (freezen) und völlig abschmieren würde.",
"thirdparty": "Diese App ist nicht Bestandteil des offiziellen YunoHost-Katalogs. Die Installation von Drittanbieter-Apps kann die Integrität und Sicherheit Ihres Systems kompromittieren. Sie sollten sie wahrscheinlich NICHT installieren, wenn Sie nicht genau wissen, was Sie tun.",
"ignore": "Ich habe verstanden, dass diese Installation mein System ruinieren könnte, aber ich möchte es trotzdem versuchen.",
"inprogress": "Diese App ist noch experimentell (beziehungsweise noch nicht gut in YunoHost integriert oder ausdrücklich nicht funktionsfähig). Folglich neigt sie dazu, Ihr System zu ruinieren! Sie sollten sie wahrscheinlich NICHT installieren, wenn Sie nicht genau wissen, was Sie tun.",
"install": "Diese App ist bereits installiert und kann nicht noch einmal installiert werden.",
"lowquality": "Diese App funktioniert wahrscheinlich, ist aber noch nicht gut in YunoHost integriert. Einige Funktionen wie zum Beispiel Single-Sign-On und Sicherung/Wiederherstellen könnten nicht verfügbar sein oder die Best-Practices nicht berücksichtigen.",
"version": "Diese App benötigt YunoHost >={required} aber Ihre aktuell installierte Version ist {current}. Sie sollten vorher YunoHost aktualisieren."
},
"license": "Lizenz: {license}",
"notifs": {
"post": {
"title": "Post-Installations-Benachrichtigungen für „{name}“",
"alert": "Die Aktualisierung scheint gut gelaufen zu sein!\nHier sind ein einige Informationen, die der Paketierer als wichtig zu wissen erachtet hat. \nSie können sie auch auf der Informationsseite dieser App noch einmal nachlesen."
},
"pre": {
"warning": "Wichtige Informationen vor der Installation",
"danger": "Die Installation der Anwendung wird höchstwahrscheinlich zu Problemen führen",
"critical": "Die Anwendung kann nicht installiert werden"
}
},
"try_demo": "Probieren Sie die Demo aus",
"version": "Aktuelle Version: {version}"
},
"installed_version": "Installierte Version:",
"open_this_app": "Diese App öffnen",
"antifeatures": "Diese App hat Funktionen, die Sie womöglich nicht mögen:",
"doc": {
"about": {
"title": "Über",
"description": "Beschreibung"
},
"notifications": {
"title": "Benachrichtigungen",
"post_upgrade": "Post-Aktualisierungs-Anmerkungen",
"post_install": "Post-Installations-Anmerkungen",
"understood": "Verstanden"
},
"admin": {
"title": "Dokumentation für Administratoren"
}
},
"info": {
"forum": "Suchen oder fragen Sie im Forum!",
"problem": "Ein Problem mit dieser App?",
"config_panel_error": "Ein Fehler verhindert die Anzeige des Konfigurationsfensters:",
"config_panel_error_please_report": "Bitte leiten Sie diesen Fehler an das YunoHost-Team zu dessen Behebung weiter!"
},
"integration": {
"archs": "Unterstützte Architekturen:",
"ldap": {
"false": "Keine Unterstützung des Einloggens mittels YunoHost-Konten (LDAP)",
"true": "Unterstützt das Einloggen mittels YunoHost-Konten (LDAP)",
"?": "Keine Informationen betreffend LDAP-Integration"
},
"multi_instance": {
"false": "Kann nur einmal installiert werden",
"true": "Kann mehrfach installiert werden"
},
"resources": "Typischer Ressourcen-Bedarf: {ram} RAM, {disk} Disk",
"sso": {
"false": "Single-Sign-On ist nicht verfügbar (SSO)",
"true": "Single-Sign-On ist verfügbar (SSO)",
"?": "Keine Informationen betreffend SSO-Integration"
},
"title": "Integration mit YunoHost"
},
"links": {
"admindoc": "Offizielle Dokumentation für Administratoren",
"code": "Offizielles Code-Repository",
"forum": "Themen zu dieser App im YunoHost-Forum",
"package": "YunoHost Pakete-Repository",
"title": "Links",
"userdoc": "Offizielle Dokumentation für Benutzer",
"website": "Offizielle Website",
"license": "App-Lizenz",
"package_license": "YunoHost Paket Lizenz"
},
"potential_alternative_to": "Potenzielle Alternative für:",
"upgrade": {
"confirm": {
"apps": "Apps, welche aktualisiert werden",
"title": "Bestätigen Sie die Aktualisierungen"
},
"continue": "Fortfahren zur nächsten App",
"notifs": {
"pre": {
"alert": "Sie sollten sich die Benachrichtigungen genau anschauen, befor sie mit der Aktualisierung fortfahren. Sie könnten wichtige Informationen enthalten, die Sie kennen sollten.",
"title": "Seien Sie vorgewarnt!"
},
"post": {
"alert": "Die Aktualisierung scheint gut gelaufen zu sein!\nHier ein paar Informationen, die der/die Paketierer betreffend dieser Aktualisierung als wichtig erachtet hat. \nSie können sie auch auf der Informationsseite dieser App nochmal nachlesen.",
"title": "Benachrichtigungen zum Post-Aktualisierungs-Prozess für '{name}'"
}
},
"stop": "Die nächsten Aktualisierungen stornieren"
},
"uninstall": {
"purge_desc": "Entferne das Datenverzeichnis, das mit dieser Applikation assoziiert ist (hier handelt es sich üblicherweise um Daten, die Sie bei der Benutzung der Applikation selbst hochgeladen haben)."
}
}
} }

View file

@ -16,6 +16,7 @@
"ipv6": "IPv6", "ipv6": "IPv6",
"login": "Σύνδεση", "login": "Σύνδεση",
"logout": "Αποσύνδεση", "logout": "Αποσύνδεση",
"myserver": "myserver",
"operations": "Δραστηριότητες", "operations": "Δραστηριότητες",
"password": "Κωδικός πρόσβασης", "password": "Κωδικός πρόσβασης",
"password_confirmation": "Επιβεβαίωση κωδικού πρόσβασης", "password_confirmation": "Επιβεβαίωση κωδικού πρόσβασης",
@ -32,53 +33,6 @@
"words": { "words": {
"default": "Προεπιλογή" "default": "Προεπιλογή"
}, },
"ok": "Εντάξει", "wrong_password": "Λανθασμένος κωδικός πρόσβασης",
"action": "Ενέργεια", "ok": "Εντάξει"
"all_apps": "Όλες οι εφαρμογές",
"address": {
"domain_description": {
"domain": "Επιλέξτε domain.",
"email": "Επιλέξτε ένα domain για το email σας."
},
"local_part_description": {
"domain": "Επιλέξτε ένα subdomain.",
"email": "Επιλέξτε ένα τοπικό τμήμα για το email σας."
}
},
"api_error": {
"info": "Η ακόλουθη πληροφορία μπορεί να είναι χρήσιμη για το άτομο που σας βοηθάει:",
"sorry": "Πραγματικά λυπούμαστε για αυτό.",
"server_said": "Κατά τη διάρκεια επεξεργασίας της ενέργειας ο διακομιστής είπε:",
"view_error": "Προβολή σφάλματος",
"error_message": "Μήνυμα σφάλματος:"
},
"api_errors_titles": {
"APIBadRequestError": "Το YunoHost αντιμετώπισε ένα σφάλμα",
"APIError": "Το YunoHost αντιμετώπισε ένα μη αναμενόμενο σφάλμα",
"APIInternalError": "Το YunoHost αντιμετώπισε ένα εσωτερικό σφάλμα",
"APINotFoundError": "Το YunoHost API δεν μπόρεσε να βρεί δρομολόγηση",
"APINotRespondingError": "Το YunoHost API δεν ανταποκρίνεται",
"APIConnexionError": "Το YunoHost αντιμετώπισε ένα σφάλμα σύνδεσης"
},
"api": {
"reconnecting": {
"failed": "Φαίνεται πως ο διακομιστής δεν ανταποκρίνεται. Μπορείτε να προσπαθήσετε να ξανασυνδεθείτε ή να προσπαθήσετε να εκτελέσετε `systemctl restart yunohost-api` μέσω ssh.",
"reason": {
"unknown": "Η σύνδεση με το διακομιστή έχει τερματιστεί για άγνωστους λόγους.",
"upgrade_system": "Η σύνδεση με τον διακομιστή έχει τερματιστεί εξ'αιτίας αναβάθμισης του YunoHost. Αναμονή για τον διακομιστή μέχρι να είναι ξανά προσβάσιμος…",
"reboot": "Ο διακομιστής επανεκκινείται και δε θα είναι προσβάσιμος για κάποιο χρονικό διάστημα. Μία εντολή εισόδου θα είναι διαθέσιμη όταν ο διακομιστής θα είναι και πάλι προσβάσιμος.",
"shutdown": "Ο διακομιστής σας τερματίζεται και δεν είναι πια προσβάσιμος. Ενεργοποιήστε τον ξανά και μία εντολή εισόδου θα είναι διαθέσιμη με το που ο διακομιστής είναι ξανά προσβάσιμος."
},
"success": "Ο διακομιστής τώρα είναι προσβάσιμος! Μπορείτε να προσπαθήσετε να κάνετε είσοδο",
"title": "Προσπάθεια για επικοινωνία με το διακομιστή…"
},
"processing": "Ο διακομιστής επεξεργάζεται την ενέργεια…",
"query_status": {
"error": "Ανεπιτυχής",
"success": "Ολοκληρώθηκε επιτυχώς",
"warning": "Ολοκληρώθηκε επιτυχώς με σφάλματα ή προειδοποιήσεις",
"pending": "Υπό διεργασία"
}
},
"all": "Όλα"
} }

View file

@ -13,26 +13,13 @@
}, },
"administration_password": "Administration password", "administration_password": "Administration password",
"all": "All", "all": "All",
"all_apps": "All apps",
"api": { "api": {
"partial_logs": "[…] (check in history for full logs)", "processing": "The server is processing the action...",
"processing": "The server is processing the action…",
"query_status": { "query_status": {
"error": "Unsuccessful", "error": "Unsuccessful",
"pending": "In progress", "pending": "In progress",
"success": "Successfully completed", "success": "Successfully completed",
"warning": "Successfully completed with errors or alerts" "warning": "Successfully completed with errors or alerts"
},
"reconnecting": {
"failed": "Looks like the server is not responding. You can try to reconnect again or try to run `systemctl restart yunohost-api` thru ssh.",
"reason": {
"reboot": "Your server is rebooting and will not be reachable for some time. A login prompt will be available as soon as the server is reachable.",
"shutdown": "Your server is shutting down and is no longer reachable. Turn it back on and a login prompt will be available as soon as the server is reachable.",
"unknown": "Connection with the server has been closed for unknown reasons.",
"upgrade_system": "Connection with the server has been closed due to YunoHost upgrade. Waiting for the server to be reachable again…"
},
"success": "The server is now reachable! You can try to login",
"title": "Trying to communicate with the server…"
} }
}, },
"api_error": { "api_error": {
@ -44,139 +31,44 @@
"view_error": "View error" "view_error": "View error"
}, },
"api_errors_titles": { "api_errors_titles": {
"APIBadRequestError": "YunoHost encountered an error",
"APIConnexionError": "YunoHost encountered a connection error",
"APIError": "YunoHost encountered an unexpected error", "APIError": "YunoHost encountered an unexpected error",
"APIBadRequestError": "YunoHost encountered an error",
"APIInternalError": "YunoHost encountered an internal error", "APIInternalError": "YunoHost encountered an internal error",
"APINotFoundError": "YunoHost API could not find a route", "APINotFoundError": "YunoHost API could not find a route",
"APINotRespondingError": "YunoHost API is not responding" "APINotRespondingError": "YunoHost API is not responding",
"APIConnexionError": "YunoHost encountered a connexion error"
}, },
"api_not_found": "Seems like the web-admin tried to query something that doesn't exist.", "all_apps": "All apps",
"api_not_found": "Seems like the web-admin tryed 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_not_responding": "The YunoHost API is not responding. Maybe 'yunohost-api' is down or got restarted?",
"api_waiting": "Waiting for the server's response…", "api_waiting": "Waiting for the server's response...",
"app": { "app_actions": "Actions",
"antifeatures": "This app has features you may not like:", "app_actions_label": "Perform actions",
"doc": {
"about": {
"description": "Description",
"title": "About"
},
"admin": {
"title": "Admin doc"
},
"notifications": {
"post_install": "Post-install notes",
"post_upgrade": "Post-upgrade notes",
"title": "Notifications",
"understood": "Understood"
}
},
"info": {
"config_panel_error": "An error prevents the configuration panel from being displayed:",
"config_panel_error_please_report": "Please report this error to the YunoHost team to get it fixed!",
"forum": "Search or ask the forum!",
"problem": "A problem with this app?"
},
"install": {
"license": "License: {license}",
"notifs": {
"post": {
"alert": "It seems that the installation went well!\nHere are some notifications that the packager considers important to know.\nYou can read it again in the app info page.",
"title": "Post-install notifications for '{name}'"
},
"pre": {
"critical": "The application cannot be installed",
"danger": "The installation of the application will most likely lead to issues",
"warning": "Things to know before installation"
}
},
"problems": {
"arch": "This app can only be installed on specific architectures ({required}) but your server architecture is {current}.",
"broken": "This application is broken according to YunoHost's automatic tests and it is likely to break your system! You should probably NOT install it unless you know what you are doing.",
"ignore": "I understand that this installation may break my system but i still want to try.",
"inprogress": "This application is still experimental (if not explicitly not working) and it is likely to break your system! You should probably NOT install it unless you know what you are doing.",
"install": "It is already installed and can't be installed more than once.",
"lowquality": "This application may work but is not well-integrated in YunoHost. Some features such as single sign-on and backup/restore might not be available, or it does not respect the good practices.",
"ram": "This application requires {required} of RAM to install/upgrade but only {current} is available right now. Even if this app could run, its installation process requires a large amount of RAM so your server may freeze and fail miserably.",
"thirdparty": "This application is not part of the official YunoHost catalog, 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.",
"version": "This application requires YunoHost >= {required} but your current installed version is {current}, consider first upgrading YunoHost."
},
"try_demo": "Try the demo",
"version": "Current version: {version}"
},
"installed_version": "Installed version:",
"integration": {
"archs": "Supported architectures:",
"ldap": {
"?": "No information about LDAP integration",
"false": "Does not use YunoHost accounts to login (LDAP)",
"true": "Use YunoHost accounts to login (LDAP)"
},
"multi_instance": {
"false": "Can be installed only once",
"true": "Can be installed several times"
},
"resources": "Typical resource usage: {ram} RAM, {disk} disk",
"sso": {
"?": "No information about SSO integration",
"false": "Single sign-on is not available (SSO)",
"true": "Single sign-on is available (SSO)"
},
"title": "YunoHost integration"
},
"links": {
"admindoc": "Official Admin documentation",
"code": "Official code repository",
"forum": "Topics about this app on YunoHost's forum",
"license": "App license",
"package": "YunoHost package repository",
"package_license": "YunoHost package license",
"title": "Links",
"userdoc": "Official User documentation",
"website": "Official Website"
},
"open_this_app": "Open this app",
"potential_alternative_to": "Potential alternative to:",
"uninstall": {
"purge_desc": "Remove the data directory associated with the app (this is usually data you uploaded yourself using the app)."
},
"upgrade": {
"confirm": {
"apps": "Apps that will be upgraded",
"title": "Confirm app upgrades"
},
"continue": "Continue to next app",
"notifs": {
"post": {
"alert": "It seems that the upgrade went well!\n Here is some notifications that the packager considers important to know about this upgrade.\nYou can read it again in the app info page.",
"title": "Post-upgrade notifications for '{name}'"
},
"pre": {
"alert": "You should check those notifications before upgrading, there might be important stuff to know.",
"title": "Be warned!"
}
},
"stop": "Cancel next app upgrades"
}
},
"app_choose_category": "Choose a category", "app_choose_category": "Choose a category",
"app_config_panel": "Config panel",
"app_config_panel_label": "Configure this app",
"app_config_panel_no_panel": "This application doesn't have any configuration available",
"app_info_access_desc": "Groups / users currently allowed to access this app:", "app_info_access_desc": "Groups / users currently allowed to access this app:",
"app_info_change_url_disabled_tooltip": "This feature hasn't been implemented in this app yet",
"app_info_changeurl_desc": "Change the access URL of this application (domain and/or path).",
"app_info_default_desc": "Redirect domain root to this application ({domain}).", "app_info_default_desc": "Redirect domain root to this application ({domain}).",
"app_info_changeurl_desc": "Change the access URL of this application (domain and/or path).",
"app_info_change_url_disabled_tooltip": "This feature hasn't been implemented in this app yet",
"app_info_uninstall_desc": "Remove this application.", "app_info_uninstall_desc": "Remove this application.",
"app_install_custom_no_manifest": "No manifest.json file", "app_install_custom_no_manifest": "No manifest.json file",
"app_install_parameters": "Install settings", "app_install_parameters": "Install settings",
"app_make_default": "Make default",
"app_manage_label_and_tiles": "Manage label and tiles", "app_manage_label_and_tiles": "Manage label and tiles",
"app_make_default": "Make default",
"app_no_actions": "This application doesn't have any actions",
"app_show_categories": "Show categories", "app_show_categories": "Show categories",
"app_state_broken": "broken",
"app_state_broken_explanation": "This application is currently broken and not installable according to YunoHost's automatic tests",
"app_state_highquality_explanation": "This app is well-integrated with YunoHost since at least a year.",
"app_state_inprogress": "not yet working", "app_state_inprogress": "not yet working",
"app_state_inprogress_explanation": "This maintainer of this app declared that this application is not ready yet for production use. BE CAREFUL!", "app_state_inprogress_explanation": "This maintainer of this app declared that this application is not ready yet for production use. BE CAREFUL!",
"app_state_notworking": "not working",
"app_state_notworking_explanation": "This maintainer of this app declared it as 'not working'. IT WILL BREAK YOUR SYSTEM!",
"app_state_lowquality": "low quality", "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_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 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", "applications": "Applications",
"archive_empty": "Empty archive", "archive_empty": "Empty archive",
"backup": "Backup", "backup": "Backup",
@ -188,8 +80,6 @@
"both": "Both", "both": "Both",
"cancel": "Cancel", "cancel": "Cancel",
"catalog": "Catalog", "catalog": "Catalog",
"certificate": "Certificate",
"certificate_manage": "Manage SSL certificate",
"check": "Check", "check": "Check",
"close": "Close", "close": "Close",
"code": "Code", "code": "Code",
@ -200,31 +90,30 @@
"configuration": "Configuration", "configuration": "Configuration",
"confirm_app_change_url": "Are you sure you want to change the app access URL?", "confirm_app_change_url": "Are you sure you want to change the app access URL?",
"confirm_app_default": "Are you sure you want to make this app default?", "confirm_app_default": "Are you sure you want to make this app default?",
"confirm_app_install": "Are you sure you want to install this application?",
"confirm_change_maindomain": "Are you sure you want to change the main domain?", "confirm_change_maindomain": "Are you sure you want to change the main domain?",
"confirm_delete": "Are you sure you want to delete {name}?", "confirm_delete": "Are you sure you want to delete {name}?",
"confirm_firewall_allow": "Are you sure you want to open 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_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_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_app_broken": "WARNING! This application is broken according to YunoHost's automatic tests and it is likely to break your system! You should probably NOT install it unless you know what you are doing. Are you willing to take that risk?",
"confirm_install_app_inprogress": "WARNING! This application is still experimental (if not explicitly not working) and it is likely to break your system! You should probably NOT install it unless you know what you are doing. Are you willing to take that risk?",
"confirm_install_app_lowquality": "Warning: this application may work but is not well-integrated in YunoHost. Some features such as single sign-on and backup/restore might not be available.",
"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_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_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?",
"confirm_install_app_lowquality": "Warning: this application may work but is not well-integrated in YunoHost. Some features such as single sign-on and backup/restore might not be available.",
"confirm_install_app_inprogress": "WARNING! This application is still experimental (if not explicitly not working) and it is likely to break your system! You should probably NOT install it unless you know what you are doing. Are you willing to take that risk?",
"confirm_migrations_skip": "Skipping migrations is not recommended. Are you sure you want to do that?", "confirm_migrations_skip": "Skipping migrations is not recommended. Are you sure you want to do that?",
"confirm_postinstall": "You are about to launch the post-installation process on the domain {domain}. It may take a few minutes, *do not interrupt the operation*.", "confirm_postinstall": "You are about to launch the post-installation process on the domain {domain}. It may take a few minutes, *do not interrupt the operation*.",
"confirm_reboot_action_reboot": "Are you sure you want to reboot your server?",
"confirm_reboot_action_shutdown": "Are you sure you want to shutdown your server?",
"confirm_restore": "Are you sure you want to restore {name}?", "confirm_restore": "Are you sure you want to restore {name}?",
"confirm_service_restart": "Are you sure you want to restart {name}?", "confirm_service_restart": "Are you sure you want to restart {name}?",
"confirm_service_start": "Are you sure you want to start {name}?", "confirm_service_start": "Are you sure you want to start {name}?",
"confirm_service_stop": "Are you sure you want to stop {name}?", "confirm_service_stop": "Are you sure you want to stop {name}?",
"confirm_uninstall": "Are you sure you want to uninstall {name}?", "confirm_uninstall": "Are you sure you want to uninstall {name}?",
"confirm_update_apps": "Are you sure you want to update all applications?", "confirm_update_apps": "Are you sure you want to update all applications?",
"confirm_update_specific_app": "Are you sure you want to update {app}?",
"confirm_update_system": "Are you sure you want to update all system packages?", "confirm_update_system": "Are you sure you want to update all system packages?",
"confirm_upnp_disable": "Are you sure you want to disable UPnP?", "confirm_update_specific_app": "Are you sure you want to update {app}?",
"confirm_upnp_enable": "Are you sure you want to enable UPnP?", "confirm_upnp_enable": "Are you sure you want to enable UPnP?",
"confirm_upnp_disable": "Are you sure you want to disable UPnP?",
"confirm_reboot_action_reboot": "Are you sure you want to reboot your server?",
"confirm_reboot_action_shutdown": "Are you sure you want to shutdown your server?",
"connection": "Connection", "connection": "Connection",
"created_at": "Created at", "created_at": "Created at",
"custom_app_install": "Install custom app", "custom_app_install": "Install custom app",
@ -233,121 +122,63 @@
"delete": "Delete", "delete": "Delete",
"description": "Description", "description": "Description",
"details": "Details", "details": "Details",
"details_about": "Show more details about {subject}", "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.",
"diagnosis": "Diagnosis", "diagnosis": "Diagnosis",
"diagnosis_explanation": "The diagnosis feature will attempt to identify common issues on the different aspects of your server to make sure everything runs smoothly. The diagnosis runs automatically twice a day and an email is sent to the administrator if issues are found. Note that some tests may not be relevant if you do not want to use some specific features (for example XMPP) or may fail if you have a complex setup. In such cases, and if you know what you are doing, it is alright to ignore the corresponding issues or warnings.", "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.", "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.",
"diagnosis_explanation": "The diagnosis feature will attempt to identify common issues on the different aspects of your server to make sure everything runs smoothly. The diagnosis runs automatically twice a day and an email is sent to the administrator if issues are found. Note that some tests may not be relevant if you do not want to use some specific features (for example XMPP) or may fail if you have a complex setup. In such cases, and if you know what you are doing, it is alright to ignore the corresponding issues or warnings.",
"run_first_diagnosis": "Run initial diagnosis",
"disable": "Disable", "disable": "Disable",
"disabled": "Disabled", "disabled": "Disabled",
"dns": "DNS", "dns": "DNS",
"domain": {
"add": {
"dyn_dns_password": "Domain recovery password",
"dyn_dns_password_desc": "This password will allow you to later recover control of the domain if you reinstall your system. If you already registered this domain previously, use your recovery password here to reclaim it.",
"from_local": "I want a domain for local usage / test only",
"from_local_desc": "If you don't want an \"actual\" public domain name, you can use anything ending in <code>.local</code> or <code>.test</code>. Domain names ending in <code>.local</code> are special in the sense that they may automatically be resolved on the local network, assuming the clients support the Bonjour protocol. Alternatively, you may need to tweak the <code>/etc/hosts</code> file (or equivalent on Windows) on every client that you want to use this domain from, or to configure local DNS entries on your internet router.",
"from_registrar": "I want to add a domain I own, or a subdomain",
"from_registrar_desc": "You will need to manually configure DNS records on your registrar to finalize this domain's configuration. YunoHost's diagnosis will guide you about what DNS records to configure exactly.",
"from_yunohost": "I don't own a domain, I want to register/use a free DynDNS domain provided by the YunoHost project",
"from_yunohost_desc": "The YunoHost project maintains a free 'DynDNS' service. It is limited to one such domain per server (though you can also add sub-domains later using the other 'Add a domain I own, or a subdomain' option above). The DNS configuration will be automatically handled by YunoHost. This is ideal when starting up with self-hosting in general and you don't want to invest in a domain name yet. However, on the medium/long-term, we recommend buying your very own domain name to some registrar to have full ownership of your domain."
},
"cert": {
"types": {
"letsencrypt": "Let's Encrypt",
"other": "Other/Unknown",
"selfsigned": "Self-signed"
},
"valid_for": "valid for {days}"
},
"config": {
"edit": "Edit domain configuration",
"title": "Domain configuration"
},
"dns": {
"auto_config": "Automatic DNS records configuration",
"auto_config_ignored": "ignored, won't be changed by YunoHost unless you check the overwrite option",
"auto_config_ok": "Automatic configuration seems to be OK!",
"auto_config_zone": "Current DNS zone",
"edit": "Edit DNS configuration",
"info": "The automatic DNS records configuration is an experimental feature. <br>Consider saving your current DNS zone from your DNS registrar's interface before pushing records from here.",
"manual_config": "Suggested DNS records for manual configuration",
"methods": {
"auto": "Automatic",
"handled_in_parent": "Handled in parent domain",
"manual": "Manual",
"none": "None",
"semi_auto": "Semi-automatic"
},
"push": "Push DNS records to registrar",
"push_force": "Overwrite existing records",
"push_force_confirm": "Are you sure you want to force push all suggested dns records? Be aware that it may overwrite manual configuration or important default records set by you or your registrar.",
"push_force_warning": "It looks like some DNS records that YunoHost would have set are already in the registrar configuration. You can use the overwrite option if you know what you are doing."
},
"explain": {
"main_domain": "The main domain is the domain from which users can connect to the portal (via \"{domain}/yunohost/sso\").<br>Therefore, it is not possible to delete it.<br>If you want to delete \"{domain}\", you will first have to choose or add another domain and set it as the main domain."
},
"info": {
"apps_on_domain": "Apps installed on domain",
"certificate_authority": "SSL Certification authority",
"dyn_dns_remove_and_unsubscribe": "Also unregister the domain from YunoHost's DynDNS service",
"registrar": "Registrar"
},
"see_parent_domain": "See parent domain",
"toggle_subdomains": "Toggle subdomains",
"types": {
"main_domain": "Main domain"
}
},
"domain_add": "Add domain", "domain_add": "Add domain",
"domain_add_dyndns_forbidden": "You have already registered/subscribed to a DynDNS domain from the YunoHost project. By design, this feature is limited to one such domain per server. If you want to add a subdomain of your already subscribed domain, please use the 'Add a domain I own, or a subdomain' option above. If you want to use a completely different domain, you should first remove your existing DynDNS domain. DynDNS domains are good when starting with self-hosting, but on the medium/long term, we recommend buying your very own domain name to some registrar to have full ownership of your domain.", "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…",
"domain_add_panel_without_domain": "I don't have a domain name…",
"domain_default_desc": "The default domain is the connection domain where users log in.", "domain_default_desc": "The default domain is the connection domain where users log in.",
"domain_default_longdesc": "This is your default domain.", "domain_default_longdesc": "This is your default domain.",
"domain_delete_forbidden_desc": "You cannot remove '{domain}' since it's the default domain, you need to choose another domain (or <a href='#/domains/add'>add a new one</a>) and set it as the default domain to be able to remove this one.",
"domain_delete_longdesc": "Delete this domain", "domain_delete_longdesc": "Delete this domain",
"domain_dns_conf_is_just_a_recommendation": "This section 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.", "domain_delete_forbidden_desc": "You cannot remove '{domain}' since it's the default domain, you need to choose another domain (or <a href='#/domains/add'>add a new one</a>) and set it as the default domain to be able to remove this one.",
"domain_dns_config": "DNS configuration", "domain_dns_config": "DNS configuration",
"domain_dns_longdesc": "View DNS configuration", "domain_dns_longdesc": "View DNS configuration",
"domain_dns_push_failed_to_authenticate": "Failed to authenticate on registrar's API. Most probably the <a href='#/domains/{domain}/config'>credentials</a> are incorrect? (Error: {error})",
"domain_dns_push_managed_in_parent_domain": "The automatic DNS records feature is managed in the parent domain <a href='#/domains/{parent_domain}/dns'>{parent_domain}</a>.",
"domain_dns_push_not_applicable": "The automatic DNS records feature is not applicable to domain {domain},<br> You should manually configure your DNS records following the <a href='https://yunohost.org/dns'>documentation</a> and the suggested configuration below.",
"domain_name": "Domain name", "domain_name": "Domain name",
"domain_visit": "Visit",
"domain_visit_url": "Visit {url}",
"domains": "Domains", "domains": "Domains",
"download": "Download", "download": "Download",
"enable": "Enable", "enable": "Enable",
"enabled": "Enabled", "enabled": "Enabled",
"error": "Error", "error": "Error",
"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?",
"error_modify_something": "You should modify something", "error_modify_something": "You should modify something",
"error_server_unexpected": "Unexpected server error", "error_server_unexpected": "Unexpected server error",
"everything_good": "Everything okay!", "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": "Experimental",
"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.", "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.",
"firewall": "Firewall", "firewall": "Firewall",
"footer_version": "Powered by <a href='https://yunohost.org'>YunoHost</a> {version} ({repo}).",
"footer": { "footer": {
"documentation": "Documentation", "documentation": "Documentation",
"donate": "Donate", "help": "Need help?",
"help": "Need help?" "donate": "Donate"
}, },
"footer_version": "Powered by <a href='https://yunohost.org'>YunoHost</a> {version} ({repo}).",
"form_errors": { "form_errors": {
"alpha": "Value must be alphabetical characters only.", "alpha": "Value must be alphabetical characters only.",
"alphalownumdot_": "Value must be lower-case alphanumeric, dots and underscore characters only.", "alphalownum_": "Value must be lower-case alphanumeric and underscore characters only.",
"appRepoUrl": "YunoHost app repository URLs are expected to look like https://domain.tld/path/to/repo_ynh",
"between": "Value must be between {min} and {max}.", "between": "Value must be between {min} and {max}.",
"domain": "Invalid domain name: Must be lower-case alphanumeric, dot and dash characters only", "domain": "Invalid domain name: Must be lower-case alphanumeric, dot and dash characters only",
"dynDomain": "Invalid domain name: Must be lower-case alphanumeric and dash characters only", "dynDomain": "Invalid domain name: Must be lower-case alphanumeric and dash characters only",
"email": "Invalid email: must be alphanumeric and <code>_.-</code> characters only (e.g. someone@example.com, s0me-1@example.com)", "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)", "emailForward": "Invalid email forward: must be alphanumeric and <code>_.-+</code> characters only (e.g. someone+tag@example.com, s0me-1+tag@example.com)",
"invalid_form": "The form contains some errors.", "githubLink": "Url must be a valid Github link to a repository",
"maxValue": "Value must be a number equal or lesser than {max}.",
"minValue": "Value must be a number equal or greater than {min}.",
"name": "Names may not includes special characters except <code> ,.'-</code>", "name": "Names may not includes special characters except <code> ,.'-</code>",
"minValue": "Value must be a number equal or greater than {min}.",
"notInUsers": "The user '{value}' already exists.", "notInUsers": "The user '{value}' already exists.",
"number": "Value must be a number.", "number": "Value must be a number.",
"passwordLenght": "Password must be at least 8 characters long.", "passwordLenght": "Password must be at least 8 characters long.",
"passwordMatch": "Passwords don't match.", "passwordMatch": "Passwords don't match.",
"pattern": "{type}",
"remote": "{message}",
"required": "Field is required." "required": "Field is required."
}, },
"form_input_example": "Example: {example}", "form_input_example": "Example: {example}",
@ -356,128 +187,46 @@
"good_practices_about_admin_password": "You are now about to define a new admin password. The password should be at least 8 characters - though it is good practice to use longer password (i.e. a passphrase) and/or to use various kind of characters (uppercase, lowercase, digits and special characters).", "good_practices_about_admin_password": "You are now about to define a new admin password. The password should be at least 8 characters - though it is good practice to use longer password (i.e. a passphrase) and/or to use various kind of characters (uppercase, lowercase, digits and special characters).",
"good_practices_about_user_password": "You are now about to define a new user password. The password should be at least 8 characters - though it is good practice to use longer password (i.e. a passphrase) and/or to use various kind of characters (uppercase, lowercase, digits and special characters).", "good_practices_about_user_password": "You are now about to define a new user password. The password should be at least 8 characters - though it is good practice to use longer password (i.e. a passphrase) and/or to use various kind of characters (uppercase, lowercase, digits and special characters).",
"group": "Group", "group": "Group",
"group_name": "Group name",
"group_all_users": "All users",
"group_visitors": "Visitors",
"group_format_name_help": "You can use alpha-numeric chars and underscore",
"group_add_member": "Add a user", "group_add_member": "Add a user",
"group_add_permission": "Add a permission", "group_add_permission": "Add a permission",
"group_admins": "Admins", "group_new": "New group",
"group_all_users": "All users",
"group_explain_admins": "This is a special group corresponding to admin users. Users in this group can access YunoHost's webadmin, connect to the server with SSH and use the `sudo` command. They will also receive emails sent to root@, admin@ and admins@, such as the diagnosis notifications. You should only add people you absolutely trust in this group!",
"group_explain_all_users": "This is a special group containing all users accounts on the server", "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": "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 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 want intend to use a synchronization client on your smartphone or desktop computer.",
"group_format_name_help": "You can use alpha-numeric chars and underscore", "group_specific_permissions": "User specific permissions",
"group_name": "Group name",
"group_new": "New group",
"group_specific_permissions": "Individual user permissions",
"group_visitors": "Visitors",
"groups_and_permissions": "Groups and permissions", "groups_and_permissions": "Groups and permissions",
"groups_and_permissions_manage": "Manage groups and permissions", "groups_and_permissions_manage": "Manage groups and permissions",
"permissions": "Permissions",
"history": { "history": {
"is_empty": "Nothing in history for now.", "is_empty": "Nothing in history for now.",
"title": "History",
"last_action": "Last action:", "last_action": "Last action:",
"methods": { "methods": {
"DELETE": "delete", "DELETE": "delete",
"GET": "read", "GET": "read",
"POST": "create/execute", "POST": "create/execute",
"PUT": "modify" "PUT": "modify"
}, }
"title": "History"
}, },
"home": "Home", "home": "Home",
"hook_adminjs_group_configuration": "System configurations", "hook_adminjs_group_configuration": "System configurations",
"hook_conf_ldap": "User database", "hook_conf_ldap": "User database",
"hook_conf_manually_modified_files": "Manually modified configurations",
"hook_conf_ynh_certs": "SSL certificates", "hook_conf_ynh_certs": "SSL certificates",
"hook_conf_ynh_settings": "YunoHost configurations", "hook_conf_ynh_settings": "YunoHost configurations",
"hook_conf_manually_modified_files": "Manually modified configurations",
"hook_data_home": "User data", "hook_data_home": "User data",
"hook_data_home_desc": "User data located in /home/USER", "hook_data_home_desc": "User data located in /home/USER",
"hook_data_mail": "Mail", "hook_data_mail": "Mail",
"hook_data_mail_desc": "Raw emails stored on the server", "hook_data_mail_desc": "Raw emails stored on the server",
"hook_data_xmpp": "XMPP data", "hook_data_xmpp": "XMPP data",
"hook_data_xmpp_desc": "Room and user configurations, file uploads", "hook_data_xmpp_desc": "Room and user configurations, file uploads",
"human_routes": {
"apps": {
"action_config": "Run action '{action}' of app '{name}' configuration",
"change_label": "Change label of '{prevName}' for '{nextName}'",
"change_url": "Change access URL of '{name}'",
"dismiss_notification": "Dismiss notification for '{name}'",
"install": "Install app '{name}'",
"set_default": "Redirect '{domain}' domain root to '{name}'",
"uninstall": "Uninstall app '{name}'",
"update_config": "Update panel '{id}' of 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}'",
"cert_install": "Install certificate for '{name}'",
"cert_renew": "Renew certificate for '{name}'",
"delete": "Delete domain '{name}'",
"push_dns_changes": "Push DNS records to registrar for '{name}'",
"set_default": "Set '{name}' as default domain",
"update_config": "Update panel '{id}' of domain '{name}' configuration"
},
"firewall": {
"ports": "{action} port {port} ({protocol}, {connection})",
"upnp": "{action} UPnP"
},
"groups": {
"add": "Add '{user}' to group '{name}'",
"create": "Create group '{name}'",
"delete": "Delete 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",
"reconnecting": "Reconnecting",
"services": {
"restart": "Restart the service '{name}'",
"start": "Start the service '{name}'",
"stop": "Stop the service '{name}'"
},
"settings": {
"update": "Update '{panel}' global settings"
},
"share_logs": "Generate link for log '{name}'",
"shutdown": "Shutdown the server",
"update": "Check for updates",
"upgrade": {
"app": "Upgrade '{app}' app",
"apps": "Upgrade all apps",
"system": "Upgrade the system"
},
"users": {
"create": "Create user '{name}'",
"delete": "Delete user '{name}'",
"update": "Update user '{name}'"
}
},
"id": "ID", "id": "ID",
"ignore": "Ignore", "ignore": "Ignore",
"ignored": "{count} ignored", "ignored": "{count} ignored",
"important_yunohost_upgrade": "A major YunoHost upgrade is available. It is heavily recommended to carefully read the release note(s) on the forum before upgrading : <a href='https://forum.yunohost.org/tag/ynh_release'>Browse the release notes on the forum</a>",
"infos": "Info", "infos": "Info",
"install": "Install", "install": "Install",
"install_name": "Install {id}", "install_name": "Install {id}",
@ -498,118 +247,183 @@
"services": "no services | service | {c} services", "services": "no services | service | {c} services",
"users": "no users | user | {c} users" "users": "no users | user | {c} users"
}, },
"items_verbose_count": "There are {items}. | There is 1 {items}. | There are {items}.", "items_verbose_count": "There are {items}.",
"items_verbose_items_left": "There are {items} left. | There is 1 {items} left. | There are {items} left.", "items_verbose_items_left": "There are {items} left.",
"label": "Label", "label": "Label",
"label_for_manifestname": "Label for {name}", "label_for_manifestname": "Label for {name}",
"label_for_manifestname_help": "This is the name displayed in the user portal. This can be changed later.",
"last_ran": "Last time ran:", "last_ran": "Last time ran:",
"license": "License", "license": "License",
"local_archives": "Local archives", "local_archives": "Local archives",
"login": "Login", "login": "Login",
"logout": "Logout", "logout": "Logout",
"logs": "Logs",
"logs_access": "List of access and bans",
"logs_app": "Apps logs",
"logs_context": "Context",
"logs_ended_at": "End",
"logs_error": "Error",
"logs_history": "History of command run on system",
"logs_more": "Display more lines",
"logs_no_logs_registered": "No log registered for this category",
"logs_operation": "Operations made on system with YunoHost",
"logs_package": "Debian packages management history",
"logs_path": "Path",
"logs_service": "Services logs",
"logs_share_with_yunopaste": "Share logs with YunoPaste",
"logs_started_at": "Start",
"logs_suboperations": "Sub-operations",
"logs_system": "Kernel logs and others low level events",
"mailbox_quota_description": "Set a storage size limit for email content.<br>Set to 0 to disable.", "mailbox_quota_description": "Set a storage size limit for email content.<br>Set to 0 to disable.",
"mailbox_quota_example": "700M is a CD, 4700M is a DVD", "mailbox_quota_example": "700M is a CD, 4700M is a DVD",
"mailbox_quota_placeholder": "Set to 0 to disable.", "mailbox_quota_placeholder": "Set to 0 to disable.",
"manage_apps": "Manage apps", "manage_apps": "Manage apps",
"manage_domains": "Manage domains", "manage_domains": "Manage domains",
"manage_groups": "Manage groups",
"manage_users": "Manage users", "manage_users": "Manage users",
"migrations": "Migrations", "migrations": "Migrations",
"migrations_disclaimer_check_message": "I read and understood this disclaimer",
"migrations_disclaimer_not_checked": "This migration requires you to acknowledge its disclaimer before running it.",
"migrations_done": "Previous migrations",
"migrations_no_done": "No previous migrations",
"migrations_no_pending": "No pending migrations",
"migrations_pending": "Pending migrations", "migrations_pending": "Pending migrations",
"migrations_done": "Previous migrations",
"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": "Can be installed several times", "multi_instance": "Can be installed several times",
"myserver": "myserver",
"next": "Next", "next": "Next",
"no": "No", "no": "No",
"nobody": "Nobody", "nobody": "Nobody",
"ok": "OK", "ok": "OK",
"only_decent_quality_apps": "Only decent quality apps",
"only_highquality_apps": "Only high-quality apps", "only_highquality_apps": "Only high-quality apps",
"only_working_apps": "Only working apps", "only_working_apps": "Only working apps",
"only_decent_quality_apps": "Only decent quality apps",
"open": "Open", "open": "Open",
"operation_failed_explanation": "This operation failed! Really sorry about that :( You can try to <a href='https://yunohost.org/help'>ask for help</a>. Please provide *the full log* of the operation to the people helping you. You can do so by clicking on the 'Share with Yunopaste' green button. When sharing the logs, YunoHost will automatically attempt to anonymize private data like domain names and IPs.",
"operations": "Operations", "operations": "Operations",
"orphaned": "Not maintained", "orphaned": "Not maintained",
"orphaned_details": "This app has not been maintained for quite some time. It may still be working, but won't receive any upgrade until somebody volunteers to take care of it. Feel free to contribute to revive it!", "orphaned_details": "This app has not been maintained for quite some time. It may still be working, but won't receive any upgrade until somebody volunteers to take care of it. Feel free to contribute to revive it!",
"others": "Others", "others": "Others",
"operation_failed_explanation": "This operation failed! Really sorry about that :( You can try to <a href='https://yunohost.org/help'>ask for help</a>. Please provide *the full log* of the operation to the people helping you. You can do so by clicking on the 'Share with Yunopaste' green button. When sharing the logs, YunoHost will automatically attempt to anonymize private data like domain names and IPs.",
"password": "Password", "password": "Password",
"password_confirmation": "Password confirmation", "password_confirmation": "Password confirmation",
"path": "Path", "path": "Path",
"pending_migrations": "There are some pending migrations waiting to be run. Please go to <a href='#/tools/migrations'>Tools > Migrations</a> to run them.",
"perform": "Perform", "perform": "Perform",
"placeholder": {
"username": "johndoe",
"firstname": "John",
"lastname": "Doe",
"groupname": "My group name",
"domain": "my-domain.com"
},
"logs": "Logs",
"logs_suboperations": "Sub-operations",
"logs_operation": "Operations made on system with YunoHost",
"logs_history": "History of command run on system",
"logs_package": "Debian packages management history",
"logs_system": "Kernel logs and others low level events",
"logs_access": "List of access and bans",
"logs_service": "Services logs",
"logs_app": "Apps logs",
"logs_no_logs_registered": "No log registered for this category",
"logs_error": "Error",
"logs_ended_at": "End",
"logs_started_at": "Start",
"logs_path": "Path",
"logs_context": "Context",
"logs_share_with_yunopaste": "Share logs with YunoPaste",
"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_corresponding_url": "Corresponding URL",
"permission_main": "Main label", "permission_main": "Main label",
"permission_show_tile_enabled": "Visible as tile in user portal", "permission_show_tile_enabled": "Visible as tile in user portal",
"permissions": "Permissions",
"placeholder": {
"domain": "my-domain.com",
"file": "Browse a file or drag and drop it",
"firstname": "Sam",
"fullname": "Sam Smith",
"groupname": "My group name",
"lastname": "Smith",
"username": "samsmith"
},
"port": "Port", "port": "Port",
"ports": "Ports", "ports": "Ports",
"postinstall": { "postinstall": {
"force": "Force the post-install", "force": "Force the post-install"
"title": "Postinstall",
"user": {
"first_user_help": "This user will be granted admin privileges and will be allowed to connect to this administration interface as well as directly to the server via SSH.\nAs it is a regular user, you will also be able to connect to the user portal (SSO) with its credentials.\nOnce the post-installation is complete, you will be able to create other admin users by adding them into the 'admins' group.",
"title": "Create first admin user"
}
}, },
"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_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_1": "Congratulations! YunoHost has been successfully installed.",
"postinstall_intro_2": "Two more configuration steps are required to activate you server's services.", "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/en/install/hardware:vps_debian#fa-cog-proceed-with-the-initial-configuration' 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_domain": "Set main domain",
"postinstall_set_password": "Set administration password",
"previous": "Previous", "previous": "Previous",
"protocol": "Protocol", "protocol": "Protocol",
"purge_user_data_checkbox": "Purge {name}'s data? (This will remove the content of its home and mail directories.)",
"purge_user_data_warning": "Purging user's data is not reversible. Be sure you know what you're doing!",
"readme": "Readme", "readme": "Readme",
"rerun_diagnosis": "Rerun diagnosis", "rerun_diagnosis": "Rerun diagnosis",
"restart": "Restart",
"restore": "Restore", "restore": "Restore",
"retry": "Retry", "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", "run": "Run",
"run_first_diagnosis": "Run initial diagnosis",
"running": "Running", "running": "Running",
"save": "Save", "save": "Save",
"search": { "search": {
"for": "Search for {items}…", "for": "Search for {items}...",
"not_found": "There are {items} matching your criteria. | There is 1 {items} matching your criteria. | There are {items} matching your criteria." "not_found": "There are {items} matching your criteria."
}, },
"select_all": "Select all", "select_all": "Select all",
"select_none": "Select none", "select_none": "Select none",
"service_start_on_boot": "Start on boot", "service_start_on_boot": "Start on boot",
"services": "Services", "services": "Services",
"set_default": "Set default", "set_default": "Set default",
"since": "since",
"size": "Size", "size": "Size",
"since": "since",
"skip": "Skip", "skip": "Skip",
"start": "Start", "start": "Start",
"status": "Status", "status": "Status",
@ -618,37 +432,44 @@
"system_apps_nothing": "All apps are up to date!", "system_apps_nothing": "All apps are up to date!",
"system_packages_nothing": "All system packages are up to date!", "system_packages_nothing": "All system packages are up to date!",
"system_update": "System update", "system_update": "System update",
"system_upgrade_btn": "Upgrade",
"system_upgrade_all_applications_btn": "Upgrade all applications", "system_upgrade_all_applications_btn": "Upgrade all applications",
"system_upgrade_all_packages_btn": "Upgrade all packages", "system_upgrade_all_packages_btn": "Upgrade all packages",
"system_upgrade_btn": "Upgrade",
"tcp": "TCP", "tcp": "TCP",
"text_selection_is_disabled": "Text selection is disabled. If you want to share this log, please share the *full* log with the 'Share with Yunopaste' button.<br/><small>Or if you really really want to select text, press these keys: ↓↓↑↑.</small>",
"tip_about_user_email": "Users are created with an associated email address (and XMPP account) with the format username@domain.tld. Additional email aliases and email forwards can later be added by the admin and the user.", "tip_about_user_email": "Users are created with an associated email address (and XMPP account) with the format username@domain.tld. Additional email aliases and email forwards can later be added by the admin and the user.",
"tools": "Tools", "tools": "Tools",
"tools_adminpw": "Change administration password",
"tools_adminpw_current": "Current password",
"tools_adminpw_current_placeholder": "Enter your current password",
"tools_power_up": "Your server seems to be accessible, you can now try to login.",
"tools_reboot": "Reboot your server", "tools_reboot": "Reboot your server",
"tools_reboot_btn": "Reboot", "tools_reboot_btn": "Reboot",
"tools_reboot_done": "Rebooting...",
"tools_rebooting": "Your server is rebooting. To return to the web administration interface you need to wait for your server to be up. You can wait for the login form to show up or check by refreshing this page (F5).",
"tools_shutdown": "Shutdown your server", "tools_shutdown": "Shutdown your server",
"tools_shutdown_btn": "Shutdown", "tools_shutdown_btn": "Shutdown",
"tools_shutdown_done": "Shutting down...",
"tools_shuttingdown": "Your server is powering off. As long as your server is off, you won't be able to use the web administration.",
"tools_shutdown_reboot": "Shutdown/Reboot", "tools_shutdown_reboot": "Shutdown/Reboot",
"tools_webadmin": { "tools_webadmin": {
"language": "Language",
"fallback_language": "Fallback language",
"fallback_language_description": "Language that will be used in case the translation is not available in the main language.",
"cache": "Cache", "cache": "Cache",
"cache_description": "Consider disabling the cache if you plan on working with the CLI while also navigating in this web-admin.", "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": "Experimental mode",
"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.", "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.",
"fallback_language": "Fallback language",
"fallback_language_description": "Language that will be used in case the translation is not available in the main language.",
"language": "Language",
"theme": "Toggle dark mode",
"transitions": "Page transition animations" "transitions": "Page transition animations"
}, },
"tools_webadmin_settings": "Web-admin settings", "tools_webadmin_settings": "Web-admin settings",
"tools_yunohost_settings": "YunoHost settings",
"traceback": "Traceback", "traceback": "Traceback",
"udp": "UDP", "udp": "UDP",
"unauthorized": "Unauthorized", "unauthorized": "Unauthorized",
"unignore": "Unignore", "unignore": "Unignore",
"uninstall": "Uninstall", "uninstall": "Uninstall",
"unknown": "Unknown", "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",
"upnp": "UPnP", "upnp": "UPnP",
"upnp_disabled": "UPnP is disabled.", "upnp_disabled": "UPnP is disabled.",
"upnp_enabled": "UPnP is enabled.", "upnp_enabled": "UPnP is enabled.",
@ -666,30 +487,42 @@
"user_username": "Username", "user_username": "Username",
"user_username_edit": "Edit {name}s account", "user_username_edit": "Edit {name}s account",
"users": "Users", "users": "Users",
"users_export": "Export users",
"users_import": "Import users",
"users_import_confirm_destructive": "Are you sure you want to delete users that are not present in this file?",
"users_import_csv_file": "CSV File",
"users_import_csv_file_desc": "The CSV file should be in UTF-8 and with columns username, password, groups, email and quota. For an example import CSV file, you can <a href='/yunohost/api/users/export' target='_BLANK'>export your users in CSV file</a> and change the file.",
"users_import_delete": "Delete non listed users",
"users_import_delete_desc": "If checked, all existing users that are not in the CSV file will be deleted (and purged).",
"users_import_delete_others": "Delete unlisted users",
"users_import_update": "Update existing users",
"users_import_update_desc": "If checked, all existing users contained in the CSV file will be updated with the new value",
"users_new": "New user", "users_new": "New user",
"users_no": "No users.", "users_no": "No users.",
"version": "Version", "version": "Version",
"warnings": "{count} warnings", "warnings": "{count} warnings",
"words": { "words": {
"browse": "Browse",
"collapse": "Collapse", "collapse": "Collapse",
"default": "Default", "default": "Default"
"link": "Link",
"none": "None",
"separator": ", ",
"valid": "Valid"
}, },
"wrong_password_or_username": "Wrong password or username", "wrong_password": "Wrong password",
"yes": "Yes", "yes": "Yes",
"yunohost_admin": "YunoHost Admin" "certificate_alert_not_valid": "CRITICAL: Current certificate is not valid! HTTPS won't work at all!",
"certificate_alert_selfsigned": "WARNING: Current certificate is self-signed. Browsers will display a spooky warning to new visitors!",
"certificate_alert_letsencrypt_about_to_expire": "Current certificate is about to expire. It should soon be renewed automatically.",
"certificate_alert_about_to_expire": "WARNING: Current certificate is about to expire! It will NOT be renewed automatically!",
"certificate_alert_good": "Okay, current certificate looks good!",
"certificate_alert_great": "Great! You're using a valid Let's Encrypt certificate!",
"certificate_alert_unknown": "Unknown status",
"certificate_manage": "Manage SSL certificate",
"ssl_certificate": "SSL certificate",
"confirm_cert_install_LE": "Are you sure you want to install a Let's Encrypt certificate for this domain?",
"confirm_cert_regen_selfsigned": "Are you sure you want to regenerate a self-signed certificate for this domain?",
"confirm_cert_manual_renew_LE": "Are you sure you want to manually renew the Let's Encrypt certificate for this domain now?",
"confirm_cert_revert_to_selfsigned": "Are you sure you want to revert this domain to a self-signed certificate?",
"certificate": "Certificate",
"certificate_status": "Certificate status",
"certificate_authority": "Certification authority",
"validity": "Validity",
"domain_is_eligible_for_ACME": "This domain seems correctly configured to install a Let's Encrypt certificate!",
"domain_not_eligible_for_ACME": "This domain doesn't seem ready for a Let's Encrypt certificate. Please check your DNS configuration and HTTP server reachability. The 'DNS records' and 'Web' section in <a href='#/diagnosis'>the diagnosis page</a> can help you understand what is misconfigured.",
"install_letsencrypt_cert": "Install a Let's Encrypt certificate",
"manually_renew_letsencrypt_message": "Certificate will be automatically renewed during the last 15 days of validity. You can manually renew it if you want to. (Not recommended).",
"manually_renew_letsencrypt": "Manually renew now",
"regenerate_selfsigned_cert_message": "If you want, you can regenerate the self-signed certificate.",
"regenerate_selfsigned_cert": "Regenerate self-signed certificate",
"revert_to_selfsigned_cert_message": "If you really want to, you can reinstall a self-signed certificate. (Not recommended)",
"revert_to_selfsigned_cert": "Revert to a self-signed certificate",
"purge_user_data_checkbox": "Purge {name}'s data? (This will remove the content of its home and mail directories.)",
"purge_user_data_warning": "Purging user's data is not reversible. Be sure you know what you're doing!"
} }

View file

@ -5,7 +5,10 @@
"error_connection_interrupted": "La servilo fermis la konekton anstataŭ respondi al ĝi. Ĉu nginx aŭ la yunohost-api estis restartigitaj aŭ haltigitaj pro iu kialo?", "error_connection_interrupted": "La servilo fermis la konekton anstataŭ respondi al ĝi. Ĉu nginx aŭ la yunohost-api estis restartigitaj aŭ haltigitaj pro iu kialo?",
"license": "Permesilo", "license": "Permesilo",
"app_state_inprogress_explanation": "Ĉi tiu subtenanto de ĉi tiu app deklaris, ke ĉi tiu aplikaĵo ankoraŭ ne estas preta por produktado. ESPERANTU!", "app_state_inprogress_explanation": "Ĉi tiu subtenanto de ĉi tiu app deklaris, ke ĉi tiu aplikaĵo ankoraŭ ne estas preta por produktado. ESPERANTU!",
"app_state_highquality_explanation": "Ĉi tiu programo estas bone integrita kun YunoHost ekde almenaŭ unu jaro.", "app_state_notworking_explanation": "Ĉi tiu prizorganto de ĉi tiu app deklaris ĝin \"ne funkcianta\". Ĝi BRAKOS vian sistemon!",
"app_state_highquality": "alta kvalito",
"app_state_highquality_explanation": "Ĉi tiu app estas bone integrita kun YunoHost. Ĝi estis (kaj estas!) Reviziita de la teamo de YunoHost. Ĝi povas atendi esti sekura kaj konservi longtempe.",
"app_state_working_explanation": "La prizorganto de ĉi tiu app deklaris ĝin \"laboranta\". Ĝi signifas, ke ĝi devas esti funkcia (c.f. aplika nivelo) sed ne nepre estas reviziita de pereloj, tamen ĝi eble enhavas problemojn aŭ ne plene integriĝas kun YunoHost.",
"good_practices_about_user_password": "Vi nun estas por difini novan uzantan pasvorton. La pasvorto devas esti almenaŭ 8 signoj - kvankam estas bone praktiki uzi pli longan pasvorton (t.e. pasfrazon) kaj / aŭ uzi diversajn specojn de signoj (majuskloj, minuskloj, ciferoj kaj specialaj signoj).", "good_practices_about_user_password": "Vi nun estas por difini novan uzantan pasvorton. La pasvorto devas esti almenaŭ 8 signoj - kvankam estas bone praktiki uzi pli longan pasvorton (t.e. pasfrazon) kaj / aŭ uzi diversajn specojn de signoj (majuskloj, minuskloj, ciferoj kaj specialaj signoj).",
"from_to": "de {0} al {1}", "from_to": "de {0} al {1}",
"hook_data_home": "Uzantaj datumoj", "hook_data_home": "Uzantaj datumoj",
@ -14,42 +17,54 @@
"connection": "Ligo", "connection": "Ligo",
"confirm_install_app_lowquality": "Averto: ĉi tiu aplikaĵo povas funkcii, sed ne bone integras en YunoHost. Iuj funkcioj kiel ekzemple aliĝilo kaj sekurkopio/restarigo eble ne haveblos.", "confirm_install_app_lowquality": "Averto: ĉi tiu aplikaĵo povas funkcii, sed ne bone integras en YunoHost. Iuj funkcioj kiel ekzemple aliĝilo kaj sekurkopio/restarigo eble ne haveblos.",
"all_apps": "Ĉiuj programoj", "all_apps": "Ĉiuj programoj",
"app_no_actions": "Ĉi tiu apliko ne havas agojn",
"delete": "Forigi", "delete": "Forigi",
"download": "Elŝuti", "download": "Elŝuti",
"confirm_restore": "Ĉu vi certas, ke vi volas restarigi {name} ?", "confirm_restore": "Ĉu vi certas, ke vi volas restarigi {name} ?",
"custom_app_url_only_github": "Nuntempe nur de GitHub",
"backup_new": "Nova sekurkopio", "backup_new": "Nova sekurkopio",
"confirm_migrations_skip": "Forlasi migradojn ne rekomendas. Ĉu vi certas, ke vi volas fari tion ?", "confirm_migrations_skip": "Forlasi migradojn ne rekomendas. Ĉu vi certas, ke vi volas fari tion ?",
"custom_app_install": "Instalu kutimon", "custom_app_install": "Instalu kutimon",
"firewall": "Fajroŝirmilo", "firewall": "Fajroŝirmilo",
"home": "Hejmo", "home": "Hejmo",
"hook_conf_ynh_firewall": "Fajroŝirmilo",
"confirm_reboot_action_shutdown": "Ĉu vi certas, ke vi volas fermi vian servilon ?", "confirm_reboot_action_shutdown": "Ĉu vi certas, ke vi volas fermi vian servilon ?",
"hook_conf_ssh": "SSH",
"confirm_update_system": "Ĉu vi certas, ke vi volas ĝisdatigi ĉiujn sistemajn pakaĵojn ?", "confirm_update_system": "Ĉu vi certas, ke vi volas ĝisdatigi ĉiujn sistemajn pakaĵojn ?",
"installation_complete": "Kompleta instalado", "installation_complete": "Kompleta instalado",
"confirm_firewall_allow": "Ĉ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*.", "confirm_postinstall": "Vi tuj lanĉos la postinstalaran procezon sur la domajno {domain}. Eble daŭras kelkajn minutojn, *ne interrompu la operacion*.",
"description": "priskribo", "description": "priskribo",
"hook_conf_ynh_mysql": "MySQL pasvorto",
"label_for_manifestname": "Etikedo por {name}", "label_for_manifestname": "Etikedo por {name}",
"diagnosis": "Diagnozo", "diagnosis": "Diagnozo",
"confirm_install_app_inprogress": "AVERTO! Ĉi tiu aplikaĵo estas ankoraŭ eksperimenta (se ne eksplicite ne funkcias) kaj verŝajne rompos vian sistemon! Vi probable ne devas instali ĝin krom se vi scias kion vi faras. Ĉu vi pretas riski tion ?", "confirm_install_app_inprogress": "AVERTO! Ĉi tiu aplikaĵo estas ankoraŭ eksperimenta (se ne eksplicite ne funkcias) kaj verŝajne rompos vian sistemon! Vi probable ne devas instali ĝin krom se vi scias kion vi faras. Ĉu vi pretas riski tion ?",
"install_time": "Dato de instalado", "install_time": "Dato de instalado",
"confirm_upnp_disable": "Ĉu vi certas, ke vi volas malebligi UPnP ?", "confirm_upnp_disable": "Ĉu vi certas, ke vi volas malebligi UPnP ?",
"domain_visit_url": "Vizitu {url}",
"confirm_change_maindomain": "Ĉu vi certas, ke vi volas ŝanĝi la ĉefan domajnon ?", "confirm_change_maindomain": "Ĉu vi certas, ke vi volas ŝanĝi la ĉefan domajnon ?",
"app_install_custom_no_manifest": "Neniu manifest.json dosiero", "app_install_custom_no_manifest": "Neniu manifest.json dosiero",
"hook_conf_ynh_certs": "SSL-atestiloj", "hook_conf_ynh_certs": "SSL-atestiloj",
"hook_conf_nginx": "Nginx",
"label": "vortiga", "label": "vortiga",
"confirm_reboot_action_reboot": "Ĉu vi certas, ke vi volas reagordi vian servilon ?", "confirm_reboot_action_reboot": "Ĉu vi certas, ke vi volas reagordi vian servilon ?",
"confirm_upnp_enable": "Ĉu vi certas, ke vi volas ebligi UPnP ?", "confirm_upnp_enable": "Ĉu vi certas, ke vi volas ebligi UPnP ?",
"api_not_responding": "La API YunoHost ne respondas. Eble 'yunohost-api' estas malaperigita aŭ rekomencita?", "api_not_responding": "La API YunoHost ne respondas. Eble 'yunohost-api' estas malaperigita aŭ rekomencita?",
"domain_add_dyndns_doc": "... kaj mi volas dinamikan DNS-servon.",
"hook_conf_ynh_currenthost": "Nuna ĉefa domajno",
"footer_version": "Funkciigita de <a href='https://yunohost.org'> YunoHost </a> {version} ({repo}).", "footer_version": "Funkciigita de <a href='https://yunohost.org'> YunoHost </a> {version} ({repo}).",
"close": "Proksimaj", "close": "Proksimaj",
"app_info_change_url_disabled_tooltip": "Ĉi tiu funkcio ankoraŭ ne estis efektivigita en ĉi tiu app", "app_info_change_url_disabled_tooltip": "Ĉi tiu funkcio ankoraŭ ne estis efektivigita en ĉi tiu app",
"hook_conf_ssowat": "SSOwat",
"confirm_delete": "Ĉu vi certas, ke vi volas forigi {name} ?", "confirm_delete": "Ĉu vi certas, ke vi volas forigi {name} ?",
"domain_dns_conf_is_just_a_recommendation": "Ĉi tiu paĝo montras al vi la *rekomenditan* agordon. Ĝi *ne* agordas la DNS por vi. Estas via respondeco agordi vian DNS-zonon en via DNS-registristo laŭ ĉi tiu rekomendo.", "domain_dns_conf_is_just_a_recommendation": "Ĉi tiu paĝo montras al vi la *rekomenditan* agordon. Ĝi *ne* agordas la DNS por vi. Estas via respondeco agordi vian DNS-zonon en via DNS-registristo laŭ ĉi tiu rekomendo.",
"domain_add_panel_with_domain": "Mi jam havas domajnan nomon…",
"hook_data_home_desc": "Datumoj pri uzanto lokitaj en /home/USER", "hook_data_home_desc": "Datumoj pri uzanto lokitaj en /home/USER",
"confirm_service_stop": "Ĉu vi certas, ke vi volas ĉesi {name} ?", "confirm_service_stop": "Ĉu vi certas, ke vi volas ĉesi {name} ?",
"mailbox_quota_placeholder": "Lasu malplenan aŭ agordi al 0 por malaktivigi.", "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_default_desc": "La defaŭlta domajno estas la konekta domajno, kie uzantoj ensalutas.",
"domain_dns_longdesc": "Vidu DNS-agordon", "domain_dns_longdesc": "Vidu DNS-agordon",
"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_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?", "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", "add": "Aldoni",
@ -69,7 +84,7 @@
"hook_data_mail": "Poŝto", "hook_data_mail": "Poŝto",
"backup_create": "Krei sekurkopion", "backup_create": "Krei sekurkopion",
"confirm_uninstall": "Ĉu vi certas, ke vi volas malinstali {name} ?", "confirm_uninstall": "Ĉu vi certas, ke vi volas malinstali {name} ?",
"confirm_firewall_disallow": "Ĉ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", "created_at": "Kreita ĉe",
"confirm_app_change_url": "Ĉu vi certas, ke vi volas ŝanĝi la URL-aliron de la aplikaĵo?", "confirm_app_change_url": "Ĉu vi certas, ke vi volas ŝanĝi la URL-aliron de la aplikaĵo?",
"ipv6": "IPv6", "ipv6": "IPv6",
@ -79,10 +94,13 @@
"hook_data_mail_desc": "Krudaj retpoŝtoj konservitaj en la servilo", "hook_data_mail_desc": "Krudaj retpoŝtoj konservitaj en la servilo",
"action": "Agado", "action": "Agado",
"good_practices_about_admin_password": "Vi nun estas difinonta novan administran pasvorton. La pasvorto devas esti almenaŭ 8 signoj - kvankam estas bone praktiki uzi pli longan pasvorton (t.e. pasfrazon) kaj / aŭ uzi diversajn specojn de signoj (majuskloj, minuskloj, ciferoj kaj specialaj signoj).", "good_practices_about_admin_password": "Vi nun estas difinonta novan administran pasvorton. La pasvorto devas esti almenaŭ 8 signoj - kvankam estas bone praktiki uzi pli longan pasvorton (t.e. pasfrazon) kaj / aŭ uzi diversajn specojn de signoj (majuskloj, minuskloj, ciferoj kaj specialaj signoj).",
"app_state_working": "laborante",
"installed": "Instalita", "installed": "Instalita",
"ok": "bone", "ok": "bone",
"experimental_warning": "Averto: ĉi tiu funkcio estas eksperimenta kaj ne konsideras stabila, vi ne devas uzi ĝin krom se vi scias kion vi faras.", "experimental_warning": "Averto: ĉi tiu funkcio estas eksperimenta kaj ne konsideras stabila, vi ne devas uzi ĝin krom se vi scias kion vi faras.",
"hook_conf_ldap": "Uzanta datumbazo", "hook_conf_cron": "Aŭtomataj taskoj",
"domain_visit": "Vizitu",
"hook_conf_ldap": "Datumbazo LDAP",
"install": "Instalu", "install": "Instalu",
"confirm_install_domain_root": "Vi ne povos instali iun alian app en {domain}. Daŭrigi ?", "confirm_install_domain_root": "Vi ne povos instali iun alian app en {domain}. Daŭrigi ?",
"confirm_app_default": "Ĉu vi certas, ke vi volas igi ĉi tiun programon defaŭlta?", "confirm_app_default": "Ĉu vi certas, ke vi volas igi ĉi tiun programon defaŭlta?",
@ -93,7 +111,9 @@
"domain_name": "Domajna nomo", "domain_name": "Domajna nomo",
"backup_action": "Rezerva", "backup_action": "Rezerva",
"mailbox_quota_description": "Ekzemple, 700M estas KD, 4700M estas DVD.", "mailbox_quota_description": "Ekzemple, 700M estas KD, 4700M estas DVD.",
"app_state_notworking": "ne funkcianta",
"enable": "Ebligi", "enable": "Ebligi",
"domain_add_panel_without_domain": "Mi ne havas domajnan nomon…",
"backup_content": "Rezerva enhavo", "backup_content": "Rezerva enhavo",
"backup": "Rezerva", "backup": "Rezerva",
"domains": "Domajnoj", "domains": "Domajnoj",
@ -103,6 +123,7 @@
"archive_empty": "Malplena arkivo", "archive_empty": "Malplena arkivo",
"check": "Kontrolu", "check": "Kontrolu",
"infos": "Informoj", "infos": "Informoj",
"hook_conf_xmpp": "XMPP",
"id": "ID", "id": "ID",
"logs_access": "Listo de aliroj kaj malpermesoj", "logs_access": "Listo de aliroj kaj malpermesoj",
"only_highquality_apps": "Nur altkvalitaj programoj", "only_highquality_apps": "Nur altkvalitaj programoj",
@ -117,36 +138,52 @@
"users_new": "Nova uzanto", "users_new": "Nova uzanto",
"users": "Uzantoj", "users": "Uzantoj",
"system_apps_nothing": "Ĉiuj aplikoj estas ĝisdatigitaj!", "system_apps_nothing": "Ĉiuj aplikoj estas ĝisdatigitaj!",
"certificate_alert_letsencrypt_about_to_expire": "Nuna atestilo estas preskaŭ eksvalidiĝi. Ĝi baldaŭ renoviĝu aŭtomate.",
"version": "versio", "version": "versio",
"yes": "Jes", "yes": "Jes",
"skip": "Salti", "skip": "Salti",
"upnp_disabled": "UPnP estas malebligita.", "upnp_disabled": "UPnP estas malebligita.",
"logs_no_logs_registered": "Neniu registro registrita por ĉi tiu kategorio", "logs_no_logs_registered": "Neniu registro registrita por ĉi tiu kategorio",
"certificate_alert_good": "Bone, nuna atestilo aspektas bone!",
"purge_user_data_warning": "Purgaj datumoj de uzanto ne estas reverteblaj. Nepre vi scias, kion vi faras!", "purge_user_data_warning": "Purgaj datumoj de uzanto ne estas reverteblaj. Nepre vi scias, kion vi faras!",
"domain_not_eligible_for_ACME": "Ĉi tiu domajno ne ŝajnas preta por Letero-Ĉifrado. Bonvolu kontroli vian atingon de DNS-agordo kaj HTTP-servilo.",
"select_all": "Elekti ĉiujn", "select_all": "Elekti ĉiujn",
"tcp": "TCP", "tcp": "TCP",
"domain_is_eligible_for_ACME": "Ĉi tiu domajno ŝajnas ĝuste agordita por instali atestilon Lasu Ĉifri!",
"system_upgrade_btn": "Altgradigon", "system_upgrade_btn": "Altgradigon",
"ssl_certificate": "SSL-atestilo",
"certificate_manage": "Administri SSL-atestilon", "certificate_manage": "Administri SSL-atestilon",
"confirm_cert_install_LE": "Ĉu vi certas, ke vi volas instali atestilon Lasu Ĉifri por ĉi tiu domajno?",
"logs_operation": "Operacioj faritaj sur sistemo kun YunoHost", "logs_operation": "Operacioj faritaj sur sistemo kun YunoHost",
"install_letsencrypt_cert": "Instalu atestilon Lasu-Ĉifri",
"system_packages_nothing": "Ĉiuj sistemaj pakoj estas ĝisdatigitaj !", "system_packages_nothing": "Ĉiuj sistemaj pakoj estas ĝisdatigitaj !",
"system_upgrade_all_applications_btn": "Ĝisdatigu ĉiujn aplikojn", "system_upgrade_all_applications_btn": "Ĝisdatigu ĉiujn aplikojn",
"revert_to_selfsigned_cert": "Reiru al mem-subskribita atestilo",
"system_update": "Sistema ĝisdatigo", "system_update": "Sistema ĝisdatigo",
"unauthorized": "Ne rajtigita", "unauthorized": "Ne rajtigita",
"wrong_password": "Erara pasvorto",
"certificate_alert_unknown": "Nekonata stato",
"tools_shutdown_reboot": "Ŝalti/Rekomenci", "tools_shutdown_reboot": "Ŝalti/Rekomenci",
"logs_started_at": "Komencu", "logs_started_at": "Komencu",
"confirm_cert_revert_to_selfsigned": "Ĉu vi certas, ke vi volas reverti ĉi tiun domajnon al mem-subskribita atestilo?",
"postinstall_domain": "Ĉi tiu estas la unua domajna nomo ligita al via servilo YunoHost, sed ankaŭ la uzata de la uzantoj de via servilo por aliri la aŭtentikan portalon. Laŭe ĝi estos videbla de ĉiuj, do elektu ĝin zorgeme.", "postinstall_domain": "Ĉi tiu estas la unua domajna nomo ligita al via servilo YunoHost, sed ankaŭ la uzata de la uzantoj de via servilo por aliri la aŭtentikan portalon. Laŭe ĝi estos videbla de ĉiuj, do elektu ĝin zorgeme.",
"users_no": "Neniuj uzantoj.", "users_no": "Neniuj uzantoj.",
"tools_shutdown": "Enŝaltu vian servilon", "tools_shutdown": "Enŝaltu vian servilon",
"validity": "Valideco",
"upnp_enabled": "UPnP estas ebligita.", "upnp_enabled": "UPnP estas ebligita.",
"tools_reboot": "Reklamu vian servilon", "tools_reboot": "Reklamu vian servilon",
"manage_domains": "Administri domajnojn", "manage_domains": "Administri domajnojn",
"user_username_edit": "Redakti {name} konton", "user_username_edit": "Redakti {name} konton",
"logs_package": "Historio pri administrado de pakoj Debian", "logs_package": "Historio pri administrado de pakoj Debian",
"user_new_forward": "novjora@myforeigndomain.org", "user_new_forward": "novjora@myforeigndomain.org",
"manually_renew_letsencrypt_message": "Atestilo estos aŭtomate renovigita dum la lastaj 15 tagoj de valideco. Vi povas permane renovigi ĝin se vi volas. (Ne rekomendita).",
"logs_share_with_yunopaste": "Kunhavigu kun YunoPaste", "logs_share_with_yunopaste": "Kunhavigu kun YunoPaste",
"certificate": "Atestilo", "certificate": "Atestilo",
"logs_system": "Kernel ŝtipoj kaj aliaj malaltnivelaj eventoj", "logs_system": "Kernel ŝtipoj kaj aliaj malaltnivelaj eventoj",
"user_emailaliases": "Poŝti alias", "user_emailaliases": "Poŝti alias",
"certificate_authority": "Atestado-aŭtoritato",
"unmaintained": "Malkomprenita",
"regenerate_selfsigned_cert": "Regeneri mem-subskribitan atestilon",
"ports": "havenoj", "ports": "havenoj",
"system": "Sistemo", "system": "Sistemo",
"tools_reboot_btn": "Rekomencu", "tools_reboot_btn": "Rekomencu",
@ -154,14 +191,22 @@
"previous": "Antaŭa", "previous": "Antaŭa",
"manage_users": "Administri uzantojn", "manage_users": "Administri uzantojn",
"logs_service": "Servoj ŝtipoj", "logs_service": "Servoj ŝtipoj",
"multi_instance": "Povas esti instalita plurajn fojojn", "tools_rebooting": "Via servilo rekomencas. Por reveni al la retadministra interfaco, vi devas atendi, ke via servilo funkcios. Vi povas kontroli tion per refreŝigado de ĉi tiu paĝo (F5).",
"tools_adminpw": "Ŝanĝu administran pasvorton",
"multi_instance": "Multaj ekzemploj",
"revert_to_selfsigned_cert_message": "Se vi vere volas, vi povas reinstali mem-subskribitan atestilon. (Ne rekomendita)",
"tools_adminpw_current_placeholder": "Enigu vian nunan pasvorton",
"user_mailbox_quota": "Poŝta kesto", "user_mailbox_quota": "Poŝta kesto",
"operations": "Operacioj", "operations": "Operacioj",
"migrations_done": "Antaŭaj migradoj", "migrations_done": "Antaŭaj migradoj",
"manually_renew_letsencrypt": "Mane renovigu nun",
"tools_adminpw_current": "Aktuala Pasvorto",
"service_start_on_boot": "Komencu je ekkuro", "service_start_on_boot": "Komencu je ekkuro",
"regenerate_selfsigned_cert_message": "Se vi volas, vi povas regeneri la mem-subskribitan atestilon.",
"migrations_no_pending": "Neniuj pritraktataj migradoj", "migrations_no_pending": "Neniuj pritraktataj migradoj",
"logs_more": "Vidigu pliajn liniojn", "logs_more": "Vidigu pliajn liniojn",
"logs_error": "Eraro", "logs_error": "Eraro",
"certificate_status": "Atestita statuso",
"no": "Ne", "no": "Ne",
"tools_shutdown_btn": "Fermito", "tools_shutdown_btn": "Fermito",
"purge_user_data_checkbox": "Purigi datumojn de {name}? (Ĉi tio forigos la enhavon de ĝiaj hejmaj kaj poŝtaj adresaroj.)", "purge_user_data_checkbox": "Purigi datumojn de {name}? (Ĉi tio forigos la enhavon de ĝiaj hejmaj kaj poŝtaj adresaroj.)",
@ -170,20 +215,30 @@
"restore": "Restaŭri", "restore": "Restaŭri",
"user_mailbox_use": "Poŝtejo uzis spacon", "user_mailbox_use": "Poŝtejo uzis spacon",
"only_working_apps": "Nur funkciantaj programoj", "only_working_apps": "Nur funkciantaj programoj",
"postinstall_password": "Ĉi tiu pasvorto estos uzata por administri ĉion en via servilo. Prenu la tempon por elekti ĝin prudente.",
"start": "Komencu", "start": "Komencu",
"certificate_alert_great": "Bonega! Vi uzas validan atestilon Lasu Ĉifri!",
"confirm_cert_regen_selfsigned": "Ĉu vi certas, ke vi volas regeneri mem-subskribitan atestilon por ĉi tiu domajno?",
"myserver": "mia servisto",
"user_emailforward": "Poŝti antaŭen", "user_emailforward": "Poŝti antaŭen",
"certificate_alert_about_to_expire": "AVERTO: Nuna atestilo finos! Ĝi ne renoviĝos aŭtomate!",
"system_upgrade_all_packages_btn": "Ĝisdatigu ĉiujn pakaĵojn", "system_upgrade_all_packages_btn": "Ĝisdatigu ĉiujn pakaĵojn",
"migrations_no_done": "Neniuj antaŭaj migradoj", "migrations_no_done": "Neniuj antaŭaj migradoj",
"url": "URL", "url": "URL",
"select_none": "Elektu neniun", "select_none": "Elektu neniun",
"size": "Grandeco", "size": "Grandeco",
"confirm_cert_manual_renew_LE": "Ĉu vi certas, ke vi volas permane renovigi la atestilon Lasu Ĉifri por ĉi tiu regado nun?",
"logs": "Registroj", "logs": "Registroj",
"postinstall_intro_3": "Vi povas akiri pliajn informojn vizitante la <a href='//yunohost.org/en/install/hardware:vps_debian#fa-cog-proceed-with-the-initial-configuration' target='_blank'>taŭgan dokumentan paĝon</a>", "postinstall_intro_3": "Vi povas akiri pliajn informojn vizitante la <a href='//yunohost.org/postinstall' target='_blank'> taŭgan dokumentan paĝon </a>",
"tools_shuttingdown": "Via servilo elŝaltas. Tiel longe kiel via servilo malŝaltas, vi ne povos uzi la retan administradon.",
"logs_app": "Aplikoj ŝtipoj", "logs_app": "Aplikoj ŝtipoj",
"running": "Kurado", "running": "Kurado",
"tools_shutdown_done": "Fermi ...",
"certificate_alert_not_valid": "KRITIKO: Nuna atestilo ne validas! HTTPS tute ne funkcios!",
"status": "Statuso", "status": "Statuso",
"set_default": "Fiksita defaŭlte", "set_default": "Fiksita defaŭlte",
"upnp": "UPnP", "upnp": "UPnP",
"certificate_alert_selfsigned": "AVERTO: Nuna atestilo estas mem-subskribita. Foliumiloj aperigos timigan averton al novaj vizitantoj!",
"protocol": "Protokolo", "protocol": "Protokolo",
"tools": "iloj", "tools": "iloj",
"port": "haveno", "port": "haveno",
@ -202,6 +257,7 @@
"path": "Pado", "path": "Pado",
"password_confirmation": "Pasvorta konfirmo", "password_confirmation": "Pasvorta konfirmo",
"open": "Malfermu", "open": "Malfermu",
"tools_reboot_done": "Rekomencanta ...",
"postinstall_intro_2": "Du pliaj agordaj paŝoj necesas por aktivigi la servojn de via servilo.", "postinstall_intro_2": "Du pliaj agordaj paŝoj necesas por aktivigi la servojn de via servilo.",
"udp": "UDP", "udp": "UDP",
"user_interface_link": "Uzantinterfaco", "user_interface_link": "Uzantinterfaco",
@ -222,6 +278,7 @@
"nobody": "Neniu", "nobody": "Neniu",
"rerun_diagnosis": "Rerun diagnozo", "rerun_diagnosis": "Rerun diagnozo",
"details": "Detaloj", "details": "Detaloj",
"diagnosis_experimental_disclaimer": "Atentu, ke la diagnoza funkcio estas ankoraŭ eksperimenta kaj polurita, kaj ĝi eble ne estas plene fidinda.",
"everything_good": "Ĉio bona!", "everything_good": "Ĉio bona!",
"ignore": "Ignori", "ignore": "Ignori",
"ignored": "{count} ignoris", "ignored": "{count} ignoris",
@ -239,29 +296,7 @@
"diagnosis_first_run": "La diagnoza funkcio provos identigi oftajn problemojn pri la diversaj aspektoj de via servilo por certigi, ke ĉio funkcias glate. Bonvolu ne panikiĝi, se vi vidas amason da eraroj tuj post agordo de via servilo: ĝi ĝuste celas helpi vin identigi problemojn kaj gvidi vin ripari ilin. La diagnozo ankaŭ funkcios aŭtomate dufoje ĉiutage kaj retpoŝtu al la administranto se iuj problemoj ekestos.", "diagnosis_first_run": "La diagnoza funkcio provos identigi oftajn problemojn pri la diversaj aspektoj de via servilo por certigi, ke ĉio funkcias glate. Bonvolu ne panikiĝi, se vi vidas amason da eraroj tuj post agordo de via servilo: ĝi ĝuste celas helpi vin identigi problemojn kaj gvidi vin ripari ilin. La diagnozo ankaŭ funkcios aŭtomate dufoje ĉiutage kaj retpoŝtu al la administranto se iuj problemoj ekestos.",
"group_explain_visitors_needed_for_external_client": "Atentu, ke vi bezonas konservi iujn aplikaĵojn permesitajn al vizitantoj se vi intencas uzi ilin kun eksteraj klientoj. Ekzemple, ĉi tiu estas la kazo de Nextcloud se vi volas intenci uzi sinkronigan klienton en via inteligenta telefono aŭ labortabla komputilo.", "group_explain_visitors_needed_for_external_client": "Atentu, ke vi bezonas konservi iujn aplikaĵojn permesitajn al vizitantoj se vi intencas uzi ilin kun eksteraj klientoj. Ekzemple, ĉi tiu estas la kazo de Nextcloud se vi volas intenci uzi sinkronigan klienton en via inteligenta telefono aŭ labortabla komputilo.",
"restart": "Rekomenci", "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", "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"
} }

View file

@ -9,6 +9,8 @@
"app_install_custom_no_manifest": "Archivo manifest.json no encontrado", "app_install_custom_no_manifest": "Archivo manifest.json no encontrado",
"app_make_default": "Establecer como predeterminado", "app_make_default": "Establecer como predeterminado",
"app_state_inprogress": "Todavía no trabajando", "app_state_inprogress": "Todavía no trabajando",
"app_state_notworking": "No está funcionado",
"app_state_working": "Funcionando",
"applications": "Aplicaciones", "applications": "Aplicaciones",
"archive_empty": "Archivo vacío", "archive_empty": "Archivo vacío",
"backup": "Sistema de copia de seguridad", "backup": "Sistema de copia de seguridad",
@ -24,25 +26,32 @@
"confirm_change_maindomain": "¿Está seguro de que desea cambiar el dominio principal?", "confirm_change_maindomain": "¿Está seguro de que desea cambiar el dominio principal?",
"confirm_delete": "¿Está seguro que desea eliminar {name}?", "confirm_delete": "¿Está seguro que desea eliminar {name}?",
"confirm_install_custom_app": "¡AVISO! La instalación de aplicaciones de terceros puede comprometer la seguridad e integridad de su sistema. Probablemente debería NO instalarla salvo que sepa lo que está haciendo. ¿Está dispuesto a correr el riesgo?", "confirm_install_custom_app": "¡AVISO! La instalación de aplicaciones de terceros puede comprometer la seguridad e integridad de su sistema. Probablemente debería NO instalarla salvo que sepa lo que está haciendo. ¿Está dispuesto a correr el riesgo?",
"confirm_install_domain_root": "¿Seguro que quieres instalar esta aplicación en '/'? No podrás instalar otra aplicación en {domain}", "confirm_install_domain_root": "No podrá instalar otra aplicación en {domain}. ¿Desea continuar?",
"confirm_postinstall": "Está a punto de lanzar el proceso de post-instalación para el dominio {domain}. Puede tardar unos pocos minutos, *no interrumpa la operación*.", "confirm_postinstall": "Está a punto de lanzar el proceso de post-instalación para el dominio {domain}. Puede tardar unos pocos minutos, *no interrumpa la operación*.",
"confirm_restore": "¿Está seguro que desea restaurar {name}?", "confirm_restore": "¿Está seguro que desea restaurar {name}?",
"confirm_uninstall": "¿Está seguro que desea desinstalar {name}?", "confirm_uninstall": "¿Está seguro que desea desinstalar {name}?",
"connection": "Conexión", "connection": "Conexión",
"created_at": "Creado en", "created_at": "Creado en",
"custom_app_install": "Instalar aplicación personalizada", "custom_app_install": "Instalar aplicación personalizada",
"delete": "Eliminar", "custom_app_url_only_github": "Por ahora solo desde GitHub",
"delete": "Suprimir",
"description": "Descripción", "description": "Descripción",
"diagnosis": "Diagnóstico", "diagnosis": "Diagnóstico",
"disable": "Inhabilitar", "disable": "Inhabilitar",
"dns": "DNS", "dns": "DNS",
"domain_add": "Añadir dominio", "domain_add": "Añadir dominio",
"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…",
"domain_default_desc": "El dominio predeterminado es el dominio donde los usuarios inician sesión.", "domain_default_desc": "El dominio predeterminado es el dominio donde los usuarios inician sesión.",
"domain_default_longdesc": "Este es su dominio predeterminado.", "domain_default_longdesc": "Este es su dominio predeterminado.",
"domain_delete_longdesc": "Eliminar este dominio", "domain_delete_longdesc": "Eliminar este dominio",
"domain_dns_config": "Configuración DNS", "domain_dns_config": "Configuración DNS",
"domain_dns_longdesc": "Ver configuración DNS", "domain_dns_longdesc": "Ver configuración DNS",
"domain_name": "Nombre de dominio", "domain_name": "Nombre de dominio",
"domain_visit": "Visitar",
"domain_visit_url": "Visita {url}",
"domains": "Nombres de dominio", "domains": "Nombres de dominio",
"download": "Bajar", "download": "Bajar",
"enable": "Habilitar", "enable": "Habilitar",
@ -51,8 +60,15 @@
"firewall": "Cortafuegos", "firewall": "Cortafuegos",
"home": "Inicio", "home": "Inicio",
"hook_adminjs_group_configuration": "ajustes del sistema", "hook_adminjs_group_configuration": "ajustes del sistema",
"hook_conf_cron": "Tareas automáticas",
"hook_conf_ldap": "Base de datos de usuario", "hook_conf_ldap": "Base de datos de usuario",
"hook_conf_nginx": "Nginx",
"hook_conf_ssh": "SSH",
"hook_conf_ssowat": "SSOwat",
"hook_conf_xmpp": "XMPP",
"hook_conf_ynh_certs": "Certificados SSL", "hook_conf_ynh_certs": "Certificados SSL",
"hook_conf_ynh_firewall": "Cortafuegos",
"hook_conf_ynh_mysql": "Contraseña de MySQL",
"hook_data_home": "Datos de usuario", "hook_data_home": "Datos de usuario",
"hook_data_home_desc": "Datos de usuario en /home/USUARIO", "hook_data_home_desc": "Datos de usuario en /home/USUARIO",
"hook_data_mail": "Correo", "hook_data_mail": "Correo",
@ -76,7 +92,8 @@
"manage_apps": "Gestión aplicaciones", "manage_apps": "Gestión aplicaciones",
"manage_domains": "Gestión de dominios", "manage_domains": "Gestión de dominios",
"manage_users": "Gestión de usuarios", "manage_users": "Gestión de usuarios",
"multi_instance": "Puede instalarse varias veces", "multi_instance": "Instancias múltiples",
"myserver": "miservidor",
"next": "Próximo", "next": "Próximo",
"no": "No", "no": "No",
"open": "Abierto", "open": "Abierto",
@ -89,7 +106,8 @@
"postinstall_domain": "Este es el primer nombre de dominio vinculado a su servidor YunoHost, pero también el que será utilizado por los usuarios para acceder al portal de identificación. Será visible por todos, elegir con cuidado.", "postinstall_domain": "Este es el primer nombre de dominio vinculado a su servidor YunoHost, pero también el que será utilizado por los usuarios para acceder al portal de identificación. Será visible por todos, elegir con cuidado.",
"postinstall_intro_1": "¡Felicitaciones! YunoHost se ha instalado correctamente.", "postinstall_intro_1": "¡Felicitaciones! YunoHost se ha instalado correctamente.",
"postinstall_intro_2": "Todavía faltan dos pasos más para activar los servicios de su servidor.", "postinstall_intro_2": "Todavía faltan dos pasos más para activar los servicios de su servidor.",
"postinstall_intro_3": "Más información disponible en <a href='//yunohost.org/en/install/hardware:vps_debian#fa-cog-proceed-with-the-initial-configuration' target='_blank'>página de documentación apropiada</a>", "postinstall_intro_3": "Más información disponible en <a href='//yunohost.org/postinstall' target='_blank'></a>",
"postinstall_password": "Esta contraseña se utiliza para gestionar todo su servidor. Tómese su tiempo para elegirla sabiamente.",
"previous": "Anterior", "previous": "Anterior",
"protocol": "Protocolo", "protocol": "Protocolo",
"restore": "Restaurar", "restore": "Restaurar",
@ -109,6 +127,9 @@
"system_upgrade_btn": "Actualización", "system_upgrade_btn": "Actualización",
"tcp": "TCP", "tcp": "TCP",
"tools": "Herramientas", "tools": "Herramientas",
"tools_adminpw": "Cambiar contraseña del administrador",
"tools_adminpw_current": "Contraseña actual",
"tools_adminpw_current_placeholder": "Introduzca su contraseña actual",
"udp": "UDP", "udp": "UDP",
"unauthorized": "No autorizado", "unauthorized": "No autorizado",
"uninstall": "Desinstalar", "uninstall": "Desinstalar",
@ -128,11 +149,36 @@
"users": "Usuarios", "users": "Usuarios",
"users_new": "Nuevo usuario", "users_new": "Nuevo usuario",
"users_no": "No hay usuarios.", "users_no": "No hay usuarios.",
"wrong_password": "Contraseña incorrecta",
"yes": "Sí", "yes": "Sí",
"footer_version": "Con tecnología <a href='https://yunohost.org'> YunoHost </a> {version} ({repo}).", "footer_version": "Con tecnología <a href='https://yunohost.org'> YunoHost </a> {version} ({repo}).",
"form_input_example": "Por ejemplo: {example}", "form_input_example": "Por ejemplo: {example}",
"certificate_alert_not_valid": "CRÍTICO: ¡El certificado actual no es válido! ¡HTTPS no funcionará!",
"certificate_alert_selfsigned": "ADVERTENCIA: Está usando un certificado autofirmado. ¡Los navegadores mostrarán una advertencia a los nuevos visitantes!",
"certificate_alert_letsencrypt_about_to_expire": "El certificado actual está a punto de expirar. Pronto debería renovarse automáticamente.",
"certificate_alert_about_to_expire": "ADVERTENCIA: ¡El certificado actual está a punto de expirar! ¡NO se renovará automáticamente!",
"certificate_alert_good": "¡Ok, el certificado actual parece correcto!",
"certificate_alert_great": "¡Excelente! ¡Está usando un certificado \"Let's Encrypt\" válido!",
"certificate_alert_unknown": "Estado desconocido",
"certificate_manage": "Administrar certificado SSL", "certificate_manage": "Administrar certificado SSL",
"ssl_certificate": "Certificado SSL",
"confirm_cert_install_LE": "¿Está seguro de que desea instalar un certificado Let's Encrypt para este dominio?",
"confirm_cert_regen_selfsigned": "¿Está seguro de que desea regenerar un certificado autofirmado para este dominio?",
"confirm_cert_manual_renew_LE": "¿Está seguro de que desea renovar manualmente el certificado Let's Encrypt para este dominio?",
"confirm_cert_revert_to_selfsigned": "¿Está seguro de que desea revertir este dominio a un certificado autofirmado?",
"certificate": "Certificado", "certificate": "Certificado",
"certificate_status": "Estado del certificado",
"certificate_authority": "Autoridad de certificación",
"validity": "Validez",
"domain_is_eligible_for_ACME": "¡Este dominio parece configurado correctamente para instalar un certificado Let's Encrypt!",
"domain_not_eligible_for_ACME": "Este dominio no parece configurado para un certificado Let's Encrypt. Compruebe la configuración del DNS y la accesibilidad al servidor HTTP. La sección 'Registros DNS' y 'Web' en la <a href='#/diagnosis'>página de diagnósticos</a> puede ayudarle a comprender qué está configurado erróneamente.",
"install_letsencrypt_cert": "Instalar un certificado Let's Encrypt",
"manually_renew_letsencrypt_message": "El certificado se renovará automáticamente durante los últimos 15 días de su validez. Puede renovarlo manualmente si lo desea. (No recomendado).",
"manually_renew_letsencrypt": "Renovar manualmente ahora",
"regenerate_selfsigned_cert_message": "Si lo desea, puede regenerar el certificado autofirmado.",
"regenerate_selfsigned_cert": "Regenerar certificado autofirmado",
"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", "user_mailbox_use": "Espacio utilizado",
"confirm_firewall_allow": "¿Está seguro de que desea abrir 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_firewall_disallow": "¿Está seguro de que desea cerrar el puerto {port}? (protocolo: {protocol}, conexión: {connection})",
@ -144,12 +190,13 @@
"ok": "OK", "ok": "OK",
"app_info_changeurl_desc": "Cambiar la URL de acceso de esta aplicación (dominio y/o ruta).", "app_info_changeurl_desc": "Cambiar la URL de acceso de esta aplicación (dominio y/o ruta).",
"app_info_change_url_disabled_tooltip": "Esta función no ha sido implementada en esta aplicación todavía", "app_info_change_url_disabled_tooltip": "Esta función no ha sido implementada en esta aplicación todavía",
"app_no_actions": "Esta aplicación no tiene ninguna acción",
"confirm_app_change_url": "¿Está seguro de que desea cambiar la URL de acceso a la aplicación?", "confirm_app_change_url": "¿Está seguro de que desea cambiar la URL de acceso a la aplicación?",
"confirm_migrations_skip": "No se recomienda saltarse las migraciones. ¿Está seguro de que desea hacer eso?", "confirm_migrations_skip": "No se recomienda saltarse las migraciones. ¿Está seguro de que desea hacer eso?",
"confirm_update_specific_app": "¿Está seguro de que desea actualizar {app} ?", "confirm_update_specific_app": "¿Está seguro de que desea actualizar {app} ?",
"confirm_reboot_action_reboot": "¿Está seguro de que desea reiniciar su servidor?", "confirm_reboot_action_reboot": "¿Está seguro de que desea reiniciar su servidor?",
"confirm_reboot_action_shutdown": "¿Está seguro de que desea apagar su servidor?", "confirm_reboot_action_shutdown": "¿Está seguro de que desea apagar su servidor?",
"domain_dns_conf_is_just_a_recommendation": "Esta sección muestra la configuración *recomendada*. *No* configura el DNS para usted. Es su responsabilidad configurar su zona DNS en su registrador DNS de acuerdo con esta recomendación.", "domain_dns_conf_is_just_a_recommendation": "Esta página muestra la configuración *recomendada*. *No* configura el DNS para usted. Es su responsabilidad configurar su zona DNS en su registrador DNS de acuerdo con esta recomendación.",
"migrations": "Migraciones", "migrations": "Migraciones",
"migrations_pending": "Migraciones pendientes", "migrations_pending": "Migraciones pendientes",
"migrations_done": "Migraciones anteriores", "migrations_done": "Migraciones anteriores",
@ -158,9 +205,11 @@
"confirm_install_app_lowquality": "Aviso: esta aplicación puede funcionar pero no está bien integrada en YunoHost. Algunas características como inicio de sesión único y copia de seguridad/restauración podría no estar disponible.", "confirm_install_app_lowquality": "Aviso: esta aplicación puede funcionar pero no está bien integrada en YunoHost. Algunas características como inicio de sesión único y copia de seguridad/restauración podría no estar disponible.",
"confirm_install_app_inprogress": "¡AVISO! ¡Esta aplicación es aún experimental (puede que ni funcione) y es probable que rompa su sistema! Seguramente debería NO instalarla salvo que sepa lo que está haciendo. ¿Está dispuesto a correr ese riesgo?", "confirm_install_app_inprogress": "¡AVISO! ¡Esta aplicación es aún experimental (puede que ni funcione) y es probable que rompa su sistema! Seguramente debería NO instalarla salvo que sepa lo que está haciendo. ¿Está dispuesto a correr ese riesgo?",
"error_connection_interrupted": "El servidor cerró la conexión en vez de responder. ¿Ha sido reiniciado o parado nginx o yunohost-api por cualquier motivo?", "error_connection_interrupted": "El servidor cerró la conexión en vez de responder. ¿Ha sido reiniciado o parado nginx o yunohost-api por cualquier motivo?",
"experimental_warning": "Aviso: esta característica es experimental y no se considera estable, no deberías usarla salvo que sepas lo que estás haciendo.", "experimental_warning": "Aviso: esta característica es experimental y no se considera estable, no debería usarla salvo que sepa lo que está haciendo.",
"good_practices_about_admin_password": "Ahora está a punto de definir una nueva contraseña de usuario. La contraseña debe tener al menos 8 caracteres, aunque es una buena práctica usar una contraseña más larga (es decir, una frase como contraseña) y/o una variación de caracteres (mayúsculas, minúsculas, dígitos y caracteres especiales).", "good_practices_about_admin_password": "Está a punto de establecer una nueva contraseña de administrador. La contraseña debería de ser de al menos 8 caracteres, aunque es una buena práctica usar una contraseña más larga (es decir, una frase de paso) y/o usar varias clases de caracteres (mayúsculas, minúsculas, dígitos y caracteres especiales).",
"good_practices_about_user_password": "Está a punto de establecer una nueva contraseña de usuario. La contraseña debería de ser de al menos 8 caracteres, aunque es una buena práctica usar una contraseña más larga (es decir, una frase de paso) y/o usar varias clases de caracteres (mayúsculas, minúsculas, dígitos y caracteres especiales).", "good_practices_about_user_password": "Está a punto de establecer una nueva contraseña de usuario. La contraseña debería de ser de al menos 8 caracteres, aunque es una buena práctica usar una contraseña más larga (es decir, una frase de paso) y/o usar varias clases de caracteres (mayúsculas, minúsculas, dígitos y caracteres especiales).",
"app_state_notworking_explanation": "El mantenedor de esta aplicación declaró que «no funciona». ¡ROMPERÁ SU SISTEMA!",
"app_state_highquality": "Alta calidad",
"license": "Licencia", "license": "Licencia",
"confirm_update_system": "¿Seguro que quiere actualizar todos los paquetes del sistema?", "confirm_update_system": "¿Seguro que quiere actualizar todos los paquetes del sistema?",
"from_to": "desde {0} a {1}", "from_to": "desde {0} a {1}",
@ -169,12 +218,16 @@
"orphaned": "No mantenido", "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_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 desde al menos un año.", "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!", "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).",
"tools_shutdown_btn": "Apagar", "tools_shutdown_btn": "Apagar",
"logs": "Registros", "logs": "Registros",
"logs_app": "Registros de aplicaciones", "logs_app": "Registros de aplicaciones",
"logs_ended_at": "Fin", "logs_ended_at": "Fin",
"unmaintained": "Sin mantenimiento",
"logs_no_logs_registered": "Ningún registro para esta categoría", "logs_no_logs_registered": "Ningún registro para esta categoría",
"hook_conf_ynh_currenthost": "dominio principal actual",
"purge_user_data_warning": "Los datos de usuario eliminados no se pueden recuperar. ¡Asegúrese de saber lo que está haciendo!", "purge_user_data_warning": "Los datos de usuario eliminados no se pueden recuperar. ¡Asegúrese de saber lo que está haciendo!",
"logs_context": "Contexto", "logs_context": "Contexto",
"only_working_apps": "Solo aplicaciones que funcionan", "only_working_apps": "Solo aplicaciones que funcionan",
@ -190,10 +243,13 @@
"purge_user_data_checkbox": "¿Eliminar los datos de {name}? (Esto eliminará el contenido de sus directorios «home» y «mail».)", "purge_user_data_checkbox": "¿Eliminar los datos de {name}? (Esto eliminará el contenido de sus directorios «home» y «mail».)",
"migrations_no_done": "Ninguna migración anterior", "migrations_no_done": "Ninguna migración anterior",
"logs_access": "Lista de accesos y prohibiciones", "logs_access": "Lista de accesos y prohibiciones",
"tools_reboot_done": "Reiniciando...",
"tools_shutdown": "Apagar su servidor", "tools_shutdown": "Apagar su servidor",
"tools_reboot_btn": "Reiniciar", "tools_reboot_btn": "Reiniciar",
"version": "Versión", "version": "Versión",
"tools_shutdown_done": "Apagando...",
"tools_reboot": "Reiniciar su servidor", "tools_reboot": "Reiniciar su servidor",
"tools_shuttingdown": "Su servidor se está apagando. Mientras que el servidor esté apagado no podrá usar la administración web.",
"logs_started_at": "Inicio", "logs_started_at": "Inicio",
"logs_service": "Registros de servicios", "logs_service": "Registros de servicios",
"run": "Ejecutar", "run": "Ejecutar",
@ -212,27 +268,22 @@
"group_add_permission": "Añadir permiso", "group_add_permission": "Añadir permiso",
"group_new": "Nuevo grupo", "group_new": "Nuevo grupo",
"group_explain_visitors": "Este es un grupo especial que representa a los visitantes anónimos", "group_explain_visitors": "Este es un grupo especial que representa a los visitantes anónimos",
"group_specific_permissions": "Permisos individuales de usuario", "group_specific_permissions": "Permisos específicos de usuario",
"groups_and_permissions": "Grupos y permisos", "groups_and_permissions": "Grupos y permisos",
"groups_and_permissions_manage": "Gestionar grupos y permisos", "groups_and_permissions_manage": "Gestionar grupos y permisos",
"permissions": "Permisos", "permissions": "Permisos",
"nobody": "Nadie", "nobody": "Nadie",
"rerun_diagnosis": "Repetir diagnóstico", "rerun_diagnosis": "Repetir diagnóstico",
"details": "Detalles", "details": "Detalles",
"everything_good": "¡Todo está bien!", "diagnosis_experimental_disclaimer": "Tenga en cuenta que la característica de diagnóstico es aún experimental y está siendo mejorada y puede no ser totalmente fiable.",
"everything_good": "¡Todo bien!",
"ignore": "Ignorar", "ignore": "Ignorar",
"ignored": "{count} ignorado", "ignored": "{count} ignorado",
"last_ran": "Ejecutado por última vez:", "last_ran": "Ejecutado por última vez:",
"unignore": "Dejar de ignorar", "unignore": "Dejar de ignorar",
"warnings": "{count} avisos", "warnings": "{count} avisos",
"words": { "words": {
"default": "Predeterminado", "default": "Predeterminado"
"collapse": "Colapsar",
"browse": "Navegar",
"link": "Enlace",
"none": "Ninguno",
"separator": ", ",
"valid": "Válido"
}, },
"all": "Todo", "all": "Todo",
"diagnosis_first_run": "El diagnóstico intentará identificar los errores comunes en diferentes aspectos del servidor para asegurar que todo funcione de la mejor manera. No se asuste si observa algunos errores justo después de la configuracion del servidor: estos le ayudarán a identificar los incidentes y le guiarán para corregirlos. El diagnostico correrá 2 veces al día y enviará un correo electrónico al administrador si encuentra incidentes.", "diagnosis_first_run": "El diagnóstico intentará identificar los errores comunes en diferentes aspectos del servidor para asegurar que todo funcione de la mejor manera. No se asuste si observa algunos errores justo después de la configuracion del servidor: estos le ayudarán a identificar los incidentes y le guiarán para corregirlos. El diagnostico correrá 2 veces al día y enviará un correo electrónico al administrador si encuentra incidentes.",
@ -246,24 +297,25 @@
"confirm_service_restart": "¿Estás seguro de que quieres reiniciar {name} ?", "confirm_service_restart": "¿Estás seguro de que quieres reiniciar {name} ?",
"group_explain_visitors_needed_for_external_client": "Tenga cuidado de que necesita mantener algunas aplicaciones permitidas a los visitantes si tiene la intención de usarlas con clientes externos. Por ejemplo, este es el caso de Nextcloud si desea utilizar un cliente de sincronización en su teléfono inteligente o computadora de escritorio.", "group_explain_visitors_needed_for_external_client": "Tenga cuidado de que necesita mantener algunas aplicaciones permitidas a los visitantes si tiene la intención de usarlas con clientes externos. Por ejemplo, este es el caso de Nextcloud si desea utilizar un cliente de sincronización en su teléfono inteligente o computadora de escritorio.",
"issues": "{count} problemas", "issues": "{count} problemas",
"unmaintained_details": "Esta aplicación no se ha actualizado durante bastante tiempo y el responsable anterior se ha ido o no tiene tiempo para mantenerla. No dude en consultar el repositorio de aplicaciones para brindar su ayuda",
"restart": "Reiniciar", "restart": "Reiniciar",
"diagnosis_explanation": "La funcionalidad de diagnóstico intentará identificar problemas comunes en varios aspectos del servidor para asegurarse de que todo vaya bien. El diagnóstico se ejecuta automáticamente dos veces al día y un correo electrónico se envía al administrador si se encuentra algún problema. Note que algunas pruebas pueden ser irrelevantes si no desea utilizar ciertas funcionalidades (por ejemplo XMPP) o podrían fallar si tiene una configuración compleja. En esos casos, si sabe lo que está haciendo, no hay problema con ignorar los errores o alertas correspondientes.", "diagnosis_explanation": "La funcionalidad de diagnóstico intentará identificar problemas comunes en varios aspectos del servidor para asegurarse de que todo vaya bien. El diagnóstico se ejecuta automáticamente dos veces al día y un correo electrónico se envía al administrador si se encuentra algún problema. Note que algunas pruebas pueden ser irrelevantes si no desea utilizar ciertas funcionalidades (por ejemplo XMPP) o podrían fallar si tiene una configuración compleja. En esos casos, si sabe lo que está haciendo, no hay problema con ignorar los errores o alertas correspondientes.",
"tip_about_user_email": "Los usuarios son creados con una dirección de correo electrónico (y cuenta XMPP) con el formato username@domain.ltd. Aliases de correo y reenvíos de correo pueden ser agregados luego por el administrador o el usuario.", "tip_about_user_email": "Los usuarios son creados con una dirección de correo electrónico (y cuenta XMPP) con el formato username@domain.ltd. Aliases de correo y reenvíos de correo pueden ser agregados luego por el administrador o el usuario.",
"permission_show_tile_enabled": "Mostrar el tile en el portal de usuario", "permission_show_tile_enabled": "Mostrar el tile en el portal de usuario",
"permission_main": "Etiqueta principal", "permission_main": "Permiso principal",
"permission_corresponding_url": "URL Correspondiente", "permission_corresponding_url": "URL Correspondiente",
"pending_migrations": "Hay algunas migraciones esperando a ser ejecutadas. Por favor vaya a <a href='#/tools/migrations'>Herramientas > Migraciones</a> para ejecutarlas.", "pending_migrations": "Hay algunas migraciones esperando ejecutar. Por favor vaya a <a href='#/tools/migrations'>Herramientas > Migraciones</a> para verlas.",
"logs_suboperations": "Sub-operaciones", "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.", "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", "cancel": "Cancelar",
"api_errors_titles": { "api_errors_titles": {
"APIConnexionError": "YunoHost ha encontrado un error de conexión", "APIConnexionError": "YunoHost ha encontrado un error de conexión",
"APINotRespondingError": "La API de YunoHost no responde", "APINotRespondingError": "La API de YunoHost no está respondiendo",
"APINotFoundError": "La API de YunoHost no pudo encontrar una ruta", "APINotFoundError": "La API de YunoHost no pudo encontrar una ruta",
"APIInternalError": "YunoHost ha encontrado un error interno", "APIInternalError": "YunoHost ha encontrado un error interno",
"APIBadRequestError": "Yunohost ha econtrado un error", "APIBadRequestError": "Yunohost ha econtrado un error",
"APIError": "YunoHost a encontrado un error inesperado" "APIError": "YunoHost encontró un error inesperado"
}, },
"api_error": { "api_error": {
"view_error": "Ver error", "view_error": "Ver error",
@ -280,24 +332,11 @@
"pending": "En progreso", "pending": "En progreso",
"error": "No se ha podido realizar" "error": "No se ha podido realizar"
}, },
"processing": "El servidor está procesando la acción…", "processing": "El servidor está procesando la acción..."
"partial_logs": "[…] (comprueba el histórico para unos logs completos)",
"reconnecting": {
"title": "Intentado comunicarse con el servidor…",
"failed": "Al parecer el servidor no responde. Puedes intentarlo nuevamente o utilizar el comando `systemctl restart yunohost-api` a través de SSH.",
"reason": {
"unknown": "La conexión con el servidor ha sido cancelada por razones desconocidas.",
"reboot": "Tu servidor se está reiniciando y no será accesible por un tiempo. Una solicitud de inicio de sesión estará disponible cuando el servidor se encuentre listo.",
"shutdown": "Su servidor se está apagando y ya no es accesible. Vuelva a encenderlo y aparecerá un aviso de inicio de sesión tan pronto como se pueda acceder al servidor.",
"upgrade_system": "La conexión con el servidor se ha cerrado debido a la actualización de YunoHost. Esperando a que el servidor sea accesible de nuevo…"
},
"success": "¡El servidor ya está disponible! Puedes intentar iniciar sesión"
}
}, },
"address": { "address": {
"local_part_description": { "local_part_description": {
"domain": "Elige un subdominio.", "domain": "Elige un subdominio."
"email": "Elija una parte local para su correo electrónico."
}, },
"domain_description": { "domain_description": {
"email": "Elige un dominio para tu email.", "email": "Elige un dominio para tu email.",
@ -307,23 +346,8 @@
"form_errors": { "form_errors": {
"domain": "Nombre de dominio inválido: debe ser alfanumérico en minúsculas, solo caracteres de puntos y guiones", "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}.", "between": "El valor debe estar entre {min} y {max}.",
"alphalownumdot_": "El valor debe ser alfanumérico en minúsculas y solo caracteres subrayados.", "alphalownum_": "El valor debe ser alfanumérico en minúsculas y solo caracteres subrayados.",
"alpha": "El valor debe ser solo caracteres alfabéticos.", "alpha": "El valor debe ser solo caracteres alfabéticos."
"remote": "{message}",
"pattern": "{type}",
"maxValue": "El valor debe ser numérico e igual o menor que {max}.",
"invalid_form": "El formulario contiene errores.",
"name": "Los nombres no deben incluir ningún carácter especial salvo <code> ,.'-</code>",
"minValue": "El valor debe ser numérico e igual o mayor que {min}.",
"notInUsers": "El usuario '{value}' ya existe.",
"number": "El valor debe ser numérico.",
"passwordLenght": "La contraseña debe ser al menos de 8 caracteres de longitud.",
"passwordMatch": "Las contraseñas no coinciden.",
"required": "El campo es obligatorio.",
"dynDomain": "Nombre de dominio incorrecto. Solo debe contener caracteres alfanuméricos en minúsculas y guiones",
"appRepoUrl": "Las URL de repositorios de aplicaciones YunoHost deberían parecerse a https://domain.tld/path/to/repo_ynh",
"email": "Correo incorrecto: debe contener solo caracteres alfanuméricos y <code>_.-</code> (ej. alguien@ejemplo.com, 4l-guien@ejemplo.com)",
"emailForward": "Redirección de correo incorrecto: debe contener solo caracteres alfanuméricos y <code>_.-</code> (ej. alguien@ejemplo.com, 4l-guien@ejemplo.com)"
}, },
"footer": { "footer": {
"donate": "Donar", "donate": "Donar",
@ -332,364 +356,23 @@
}, },
"experimental": "Experimental", "experimental": "Experimental",
"error": "Error", "error": "Error",
"enabled": "Activado", "enabled": "Habilitado",
"disabled": "Desactivado", "disabled": "Deshabilitado",
"dead": "Inactivo", "dead": "Inactivo",
"day_validity": " Expirado hace | 1 día | {count} días", "day_validity": " Expirado hace | 1 día | {count} días",
"confirm_app_install": "¿Estás seguro de que deseas instalar esta aplicación?", "confirm_app_install": "¿Estás seguro de que deseas instalar esta aplicación?",
"common": { "common": {
"lastname": "Apellidos", "lastname": "Apellido",
"firstname": "Nombre" "firstname": "Nombre"
}, },
"code": "Código", "code": "Código",
"app_show_categories": "Mostrar categorías", "app_show_categories": "Mostrar categorías",
"app_install_parameters": "Instalar la configuración", "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_choose_category": "Elige una categoría",
"api_waiting": "Esperando a la respuesta del servidor…", "app_actions_label": "Realizar acciones",
"api_not_found": "Parece que la administración web ha intentado buscar algo que no existe.", "app_actions": "Acciones",
"hook_conf_manually_modified_files": "Configuraciones modificadas manualmente", "api_waiting": "Esperando la respuesta del servidor..."
"hook_data_xmpp": "Datos XMPP",
"items_verbose_count": "Hay {items}. | Hay 1 {items}. | Hay {items}.",
"placeholder": {
"lastname": "Sánchez",
"username": "samuelsanchez",
"firstname": "Samuel",
"domain": "mi-dominio.es",
"groupname": "Nombre de mi grupo",
"file": "Selecciona un fichero o arrástralo y suéltalo",
"fullname": "Samuel Sánchez"
},
"hook_conf_ynh_settings": "Configuraciones de YunoHost",
"confirm_group_add_access_permission": "¿Seguro que quieres conceder acceso {perm} a {name}? Este acceso incrementa significantemente la exposición a ataques al sistema si {name} resulta tener malas intenciones. Sólo deberías aprobarlo si CONFÍAS en esa persona/grupo.",
"items": {
"services": "sin servicios | servicio | {c} servicios",
"users": "sin cuentas | cuenta | {c} cuentas",
"domains": "sin dominios | dominio | {c} dominios",
"installed_apps": "sin aplicaciones instaladas | aplicación instalada | {c} aplicaciones instaladas",
"apps": "sin aplicaciones | aplicación | {c} aplicaciones",
"permissions": "sin permisos | permiso | {c} permisos",
"groups": "sin grupos | grupo | {c} grupos",
"backups": "sin copias de seguridad | copia de seguridad | {c} copias de seguridad",
"logs": "sin registros | registro | {c} registros"
},
"migrations_disclaimer_check_message": "He leído y comprendido esta limitación de responsabilidad",
"postinstall": {
"force": "Forzar la post-instalación",
"title": "Post-instalción",
"user": {
"first_user_help": "Estx usuarix tendrá privilegios de administración del sistema y podrá contectarse a esta interfaz de administración así como directamente al servidor vía SSH.\nComo es un usuario normal, también podrá conectarse al portal de usuarix (SSO) con sus credenciales.\nUna vez que la post-instalación está completada, podrás crear más usuarixs administradorxs añadiéndolxs al grupo 'admins'.",
"title": "Crear primera usuaria administradora"
}
},
"human_routes": {
"apps": {
"uninstall": "Desinstalar la aplicación '{name}'",
"update_config": "Actualizar la configuración de la aplicación '{name}' del panel '{id}'",
"change_label": "Cambiar la etiqueta '{prevName}' por '{nextName}'",
"change_url": "Cambiar la URL de acceso a '{name}'",
"install": "Instalar la aplicación '{name}'",
"set_default": "Redirecciona la raíz del dominio '{domain}' a '{name}'",
"action_config": "Ejecutar acción '{action}' de la configuración de la app '{name}'",
"dismiss_notification": "Descartar notificación para '{name}'"
},
"backups": {
"create": "Crear copia de seguridad",
"delete": "Elimina la copia de seguridad '{name}'",
"restore": "Restaurar la copia de seguridad '{name}'"
},
"groups": {
"remove": "Elimina a '{user}' del grupo '{name}'",
"delete": "Elimina el grupo '{name}'",
"create": "Crea el grupo '{name}'",
"add": "Añade a '{user}' al grupo '{name}'"
},
"users": {
"update": "Actualiza la cuenta '{name}'",
"create": "Crea la cuenta '{name}'",
"delete": "Elimina la cuenta '{name}'"
},
"share_logs": "Genera un enlace para el registro '{name}'",
"domains": {
"push_dns_changes": "Publica los registros DNS de '{name}' al registrador",
"update_config": "Actualiza el panel '{id}' de la configuración del dominio '{name}'",
"add": "Añade el dominio '{name}'",
"delete": "Elimina el domino '{name}'",
"set_default": "Configura '{name}' como dominio por defecto",
"cert_install": "Instalar certificado para '{name}'",
"cert_renew": "Renovar certificado de '{name}'"
},
"diagnosis": {
"ignore": {
"error": "Ignorar un error",
"warning": "Ignorar una advertencia"
},
"unignore": {
"warning": "No ignorar una advertencia",
"error": "No ignorar un error"
},
"run": "Ejecuta el diagnóstico",
"run_specific": "Ejecuta el diagnóstico '{description}'"
},
"migrations": {
"skip": "Omite las migraciones",
"run": "Ejecuta las migraciones"
},
"permissions": {
"add": "Permite a '{name}' acceder a '{perm}'",
"remove": "Deniega a '{name}' acceder a '{perm}'"
},
"postinstall": "Ejecuta la post-instalación",
"reboot": "Reinicia el servidor",
"shutdown": "Apaga el servidor",
"update": "Comprueba actualizaciones",
"upgrade": {
"system": "Actualiza el sistema",
"apps": "Actualiza todas las aplicaciones",
"app": "Actualiza la aplicación '{app}'"
},
"firewall": {
"ports": "{action} puerto {port} ({protocol}, {connection})",
"upnp": "{action} UPnP"
},
"services": {
"restart": "Reinicia el servicio '{name}'",
"start": "Inicia el servicio '{name}'",
"stop": "Para el servicio '{name}'"
},
"reconnecting": "Reconectando",
"settings": {
"update": "Actualizar la configuración global de '{panel}'"
}
},
"tools_webadmin": {
"fallback_language_description": "Idioma que será usado en caso de que la traducción al idioma primario no se encuentre disponible.",
"cache_description": "Puedes desactivar el caché si prevés trabajar con la línea de comandos (CLI) mientras navegas por la administración web.",
"transitions": "Animaciones de transición entre páginas",
"language": "Idioma",
"experimental": "Modo experimental",
"fallback_language": "Idioma alternativo",
"cache": "Caché",
"experimental_description": "Te da acceso a las características experimentales. Están consideradas como inestables y pueden estropear tu sistema.<br> Actívalas solo si sabes lo que estás haciendo.",
"theme": "Cambiar a modo oscuro"
},
"go_back": "Retroceder",
"users_import_update_desc": "Selecciona para actualizar todas las cuentas del fichero CSV con los nuevos valores",
"perform": "Ejecutar",
"postinstall_set_domain": "Configura el dominio principal",
"tools_webadmin_settings": "Parámetros de la administración web",
"traceback": "Rastrear",
"domain": {
"config": {
"edit": "Edita la configuración de dominio",
"title": "Configuración del dominio"
},
"dns": {
"auto_config": "Configuración automática de las entradas DNS",
"auto_config_ignored": "ignorado, no será modificado por YunoHost a menos que especifiques la opción sobrescribir",
"auto_config_ok": "¡La configuración automática parece correcta!",
"auto_config_zone": "Zona DNS actual",
"edit": "Editar configuración DNS",
"manual_config": "Registros DNS recomendados para la configuración manual",
"push": "Publicar registros DNS al registrador",
"push_force": "Sobrescribir registros actuales",
"push_force_confirm": "¿Seguro que quieres forzar la publicación de los registros DNS recomendados? Ten en cuenta que puede sobrescribir registros por defecto o importantes configurados por tu registrador.",
"push_force_warning": "Parece que algunos registros DNS de YunoHost ya se encuentran en la configuración del registrador. Puedes usar la opción sobrescribir si sabes lo que haces.",
"info": "La configuración automática DNS es una función experimental.<br> Plantéate guardar tu zona DNS actual desde la interfaz DNS de tu registrador antes de publicar cambios desde aquí.",
"methods": {
"auto": "Automático",
"handled_in_parent": "Gestionado en el dominio padre",
"manual": "Manual",
"none": "Ninguno",
"semi_auto": "Semi-automático"
}
},
"cert": {
"types": {
"letsencrypt": "Let's Encrypt",
"other": "Otros/Desconocido",
"selfsigned": "autofirmado"
},
"valid_for": "válido durante {days}"
},
"explain": {
"main_domain": "El dominio principal es el dominio desde el cual lxs usuarixs pueden conectarse al portal (via \"{domain}/yunohost/sso\"). <br> Por tanto, no es posible borrarlo. <br> Si quieres borrar \"{domain}\", primero tienes que elegir o añadir otro dominio y configurarlo como dominio principal."
},
"info": {
"apps_on_domain": "Aplicaciones instaladas en el dominio",
"certificate_authority": "Autoridad certificadora SSL",
"registrar": "Registrador",
"dyn_dns_remove_and_unsubscribe": "También eliminar el dominio del servicio DynDNS de YunoHost"
},
"see_parent_domain": "Ver dominio padre",
"types": {
"main_domain": "Dominio principal"
},
"toggle_subdomains": "Colapsar subdominios",
"add": {
"from_local_desc": "Si no quieres un nombre de dominio público \"real\", puedes usar cualquiera que termine en <code>.local</code> o <code>.test</code>. Los nombres de dominio que terminan en <code>.local</code> son especiales, en el sentido que podrían ser resueltos automáticamente en una red local, si los clientes soportan del protocolo Bonjour. Otro método es modificar el fichero <code>/etc/hosts</code> (o el equivalente de Windows) en cada cliente desde el que desees acceder a este dominio, o también puedes configurar las entradas DNS locales en tu router de internet.",
"from_yunohost_desc": "El proyecto YunoHost mantiene un servicio 'DynDNS'. Está limitado a un dominio de este tipo por servidor (aunque puedes añadir subdominios más adelante mediante la opción mostrada más arriba 'Añadir un dominio que ya poseo, o un subdominio'). La configuración de DNS será gestionada de manera automática por YunoHost. Esta opción es ideal cuando te estés inciando en \"auto alojar\" un servidor y no quieras invertir en un nombre de dominio por el momento. Sinembargo, a medio/largo plazo, recomendamos que compres tu propio dominio en algún registrador para que tengas un control completo de tu dominio.",
"dyn_dns_password": "Password de recuperación del dominio",
"dyn_dns_password_desc": "Esta password te permitirá más adelante recuperar el control del dominio si reinstalas el sistema. Si ya registraste este dominio anteriormente, utiliza la password de recuperación de dominio para reclamarlo.",
"from_local": "Quiero un dominio para uso local / únicamente de prueba",
"from_registrar": "Quiero añadir un dominio que ya poseo, o un subdominio",
"from_registrar_desc": "Tendrás que configurar manualmente los registros DNS en tu registrador para finalizar la configuración de este dominio. Los diagnósticos de YunoHost te guiarán de manera exácta para configurar los registros DNS.",
"from_yunohost": "No dispongo de un dominio, quiero registrar/usar un dominio gratuito de DynDNS ofrecido por el proyecto YunoHost"
}
},
"domain_dns_push_failed_to_authenticate": "No se pudo autenticar en la API del registrador. ¿Es probable que las <a href='#/domains/{domain}/config'>credenciales</a> sean incorrectas? (Error: {error})",
"history": {
"methods": {
"DELETE": "eliminar",
"GET": "leer",
"POST": "crear/ejecutar",
"PUT": "modificar"
},
"is_empty": "El histórico se encuentra vacío.",
"title": "Histórico",
"last_action": "Última acción:"
},
"users_export": "Exportar cuentas",
"users_import_csv_file": "Fichero CSV",
"users_import_update": "Actualizar cuentas existentes",
"yunohost_admin": "Administración YunoHost",
"domain_add_dyndns_forbidden": "Ya has registrado/suscrito un dominio DynDNS desde el proyecto YunoHost. Por diseño, esta característica se limita a solamente un dominio por servidor. Si desea un subdominio de su dominio ya suscrito, por favor use la opción 'Quiero añadir un dominio que ya poseo, o un subdominio' de arriba. Si desea usar un dominio totalmente distinto, primero debe de remover su dominio DynDNS existente. Los dominios DynDNS son útiles para empezar a autohospedarse, pero al mediano y largo plazo, recomendamos comprar su propio nombre de dominio en un registro para tener plena posesión de su dominio.",
"hook_data_xmpp_desc": "Configuración de salas y cuentas, archivos subidos",
"items_verbose_items_left": "Quedan {items}. | Queda 1 {items}. | Quedan {items}.",
"mailbox_quota_example": "700M es un CD, 4700M es un DVD",
"users_import_delete_desc": "Selecciona para eliminar (y purgar) todas las cuentas que no se encuentren en el fichero CSV.",
"users_import_confirm_destructive": "¿Seguro que quieres eliminar las cuentas que no se encuentran en este archivo?",
"readme": "Léeme",
"search": {
"for": "Busca {items}…",
"not_found": "Hay {items} coincidencias con tus criterios. | Hay 1 {items} coincidencia con tus criterios. | Hay {items} coincidencias con tus criterios."
},
"unknown": "Desconocido",
"users_import_delete": "Elimina los usuarios no listados",
"users_import_delete_others": "Eliminar cuentas no listadas",
"migrations_disclaimer_not_checked": "Esta migración requiere que reconozcas la limitación de responsabilidad antes de ejecutarla.",
"user_emailaliases_add": "Añade un alias de correo",
"users_import": "Importa cuentas",
"user_emailforward_add": "Añade una redirección de correo",
"domain_delete_forbidden_desc": "No puedes eliminar '{domain}' ya que es tu dominio por defecto. Necesitas elegir otro dominio(o <a href='#/domains/add'>añadir uno nuevo</a>) y configurarlo como dominio por defecto antes de poder eliminar este.",
"domain_dns_push_managed_in_parent_domain": "La configuración automática de los registros DNS es administrada desde el dominio superior <a href='#/domains/{parent_domain}/dns'>{parent_domain}</a>.",
"domain_dns_push_not_applicable": "La configuración automática de los registros DNS no puede realizarse en el dominio {domain},<br> Debes configurar manualmente los registros DNS siguiendo la <a href='https://yunohost.org/dns'>documentación</a> y la configuración recomendada aquí debajo.",
"users_import_csv_file_desc": "El fichero CSV debe estar en formato UTF-8, con las columnas cuenta, contraseña, grupos, correo y cuota. Para un ejemplo de importación de fichero CSV, puedes <a href='/yunohost/api/users/export' target='_BLANK'>exportar las cuentas en un fichero CSV</a> y modificar el fichero.",
"text_selection_is_disabled": "La selección de texto esta desactivada. Si quieres compartir este registro, por favor comparte el registro completo mediante el botón 'Compartir con Yunopaste'.<br/><small>O si realmente quieres seleccionar el texto, presiona las teclas: ↓↓↑↑.</small>",
"retry": "Reintentar",
"details_about": "Mostrar más detalles sobre {subject}",
"app_state_broken": "roto",
"app_state_broken_explanation": "Esta aplicación está actualmente rota y no se puede instalar según las pruebas automáticas de YunoHost",
"confirm_install_app_broken": "¡ADVERTENCIA! ¡Esta aplicación está rota según las pruebas automáticas de YunoHost y es probable que rompa su sistema! Probablemente NO debería instalarla a menos que sepa lo que está haciendo. ¿Está dispuesto a correr ese riesgo?",
"group_admins": "Administradores",
"label_for_manifestname_help": "Este es el nombre que se mostrará en el portal de usuarix. Puedes cambiarlo más tarde.",
"manage_groups": "Gestionar grupos",
"tools_yunohost_settings": "Ajustes YunoHost",
"group_explain_admins": "Este es un grupo asociado a los usuarixs administradorxs. Lxs usuarixs de este grupo tienen acceso al panel de control web de YunoHost, conexión al servidor por SSH y pueden utilizar el comando `sudo`. También reciben correos enviados a root@, admin@ y admins@, como las notificaciones de diagnóstico. ¡Añade únicamente a gente del grupo en la que confíes plenamente!",
"wrong_password_or_username": "Contraseña o usuario incorrecto",
"important_yunohost_upgrade": "Una actualización de categoría 'major' está disponible. Se recomienda leer detenidamente las notas de lanzamiento en el foro antes de actualizar: <a href='https://forum.yunohost.org/tag/ynh_release'>Busca las notas de lanzamiento en el foro</a>",
"app": {
"installed_version": "Versión instalada:",
"open_this_app": "Abrir esta aplicación",
"antifeatures": "Esta aplicación tiene características que pueden no gustarte:",
"doc": {
"about": {
"title": "Acerca de",
"description": "Descripción"
},
"notifications": {
"title": "Notificaciones",
"post_upgrade": "Notas tras la actualización",
"post_install": "Notas post-instalación",
"understood": "Entendido"
},
"admin": {
"title": "Documentación de administración"
}
},
"info": {
"forum": "¡Busca o pregunta en el foro!",
"problem": "¿Algún problema con esta aplicación?",
"config_panel_error": "Un error impide mostrar el panel de configuración:",
"config_panel_error_please_report": "Por favor, ¡informa al equipo de YunoHost de este error para que ellos puedan arreglarlo!"
},
"install": {
"license": "Licencia: {license}",
"notifs": {
"post": {
"title": "Notificaciones posteriores a la instalación de '{name}'",
"alert": "Parece que la instalación ha ido bien.\nAquí tienes algunas notificaciones que el empaquetador considera importante conocer.\nPuedes volver a leerlas en la página de información de la aplicación."
},
"pre": {
"warning": "Lo que hay que saber antes de la instalación",
"danger": "Lo más probable es que la instalación de la aplicación genere problemas",
"critical": "No se puede instalar la aplicación"
}
},
"problems": {
"ram": "Esta aplicación requiere {required} de RAM para instalarse/actualizarse pero sólo {current} está disponible en este momento. Incluso si esta aplicación pudiera ejecutarse, su proceso de instalación requiere una gran cantidad de RAM, por lo que su servidor podría congelarse y fallar miserablemente.",
"arch": "Esta aplicación sólo puede instalarse en arquitecturas específicas ({required}), pero la arquitectura de su servidor es {current}.",
"broken": "¡Esta aplicación está rota según las pruebas automáticas de YunoHost y es probable que rompa su sistema! Probablemente NO deberías instalarla a menos que sepas lo que estás haciendo.",
"thirdparty": "Esta aplicación no forma parte del catálogo oficial de YunoHost, la instalación de aplicaciones de terceros puede comprometer la integridad y seguridad de su sistema. Probablemente NO deberías instalarla a menos que sepas lo que estás haciendo.",
"ignore": "Entiendo que esta instalación puede romper mi sistema, pero todavía quiero probar.",
"inprogress": "¡Esta aplicación es todavía experimental (si no es que explícitamente no funciona) y es probable que rompa su sistema! Probablemente NO deberías instalarla a menos que sepas lo que estás haciendo.",
"install": "Ya está instalado y no se puede instalar más de una vez.",
"lowquality": "Esta aplicación puede funcionar pero no está bien integrada en YunoHost. Algunas funciones como el inicio de sesión único y la copia de seguridad/restauración podrían no estar disponibles, o no respetan las buenas prácticas.",
"version": "Esta aplicación requiere YunoHost >= {required} pero su versión actual instalada es {current}, considere primero actualizar YunoHost."
},
"try_demo": "Pruebe la demo",
"version": "Versión actual: {version}"
},
"integration": {
"archs": "Arquitecturas compatibles:",
"ldap": {
"false": "No utiliza cuentas de YunoHost para conectarse (LDAP)",
"true": "Utilizar cuentas de YunoHost para conectarse (LDAP)",
"?": "No hay información sobre la integración LDAP"
},
"multi_instance": {
"false": "Sólo se puede instalar una vez",
"true": "Puede instalarse varias veces"
},
"resources": "Uso típico de recursos: {ram} RAM, {disk} disco",
"sso": {
"false": "El inicio de sesión único no está disponible (SSO)",
"true": "Inicio de sesión único disponible (SSO)",
"?": "No hay información sobre la integración SSO"
},
"title": "Integración con YunoHost"
},
"links": {
"admindoc": "Documentación oficial de administración",
"code": "Repositorio oficial de código",
"forum": "Temas sobre esta aplicación en el foro de YunoHost",
"package": "Repositorio de paquetes YunoHost",
"title": "Enlaces",
"userdoc": "Documentación oficial del usuario",
"website": "Página web oficial",
"license": "Licencia de la aplicación",
"package_license": "Licencia de paquete YunoHost"
},
"potential_alternative_to": "Alternativa potencial a:",
"upgrade": {
"confirm": {
"apps": "Aplicaciones que se actualizarán",
"title": "Confirmar actualizaciones de la aplicación"
},
"continue": "Continuar con la siguiente aplicación",
"notifs": {
"pre": {
"alert": "Debería comprobar esas notificaciones antes de actualizar, podría haber cosas importantes que saber.",
"title": "¡Atención!"
},
"post": {
"alert": "Parece que la actualización ha ido bien.\n Aquí hay algunas notificaciones que el empaquetador considera importante saber sobre esta actualización.\nPuede volver a leerlas en la página de información de la aplicación.",
"title": "Notificaciones posteriores a la actualización de \"{name}\""
}
},
"stop": "Cancelar las próximas actualizaciones de la aplicación"
},
"uninstall": {
"purge_desc": "Borrar el directorio de información asociada con la app (normalmente se trata de la información subida al utilizar la app)."
}
}
} }

View file

@ -1,695 +1,4 @@
{ {
"password": "Pasahitza", "password": "Pasahitza",
"ok": "Ados", "ok": "Ados"
"add": "Gehitu",
"administration_password": "Administrazio-pasahitza",
"action": "Eragiketa",
"address": {
"domain_description": {
"domain": "Aukeratu domeinua.",
"email": "Aukeratu posta elektronikorako domeinua."
},
"local_part_description": {
"domain": "Aukeratu azpidomeinua.",
"email": "Aukeratu helbide elektronikorako domeinua."
}
},
"all_apps": "Aplikazio guztiak",
"api": {
"query_status": {
"error": "Ezinezkoa izan da",
"pending": "Martxan",
"warning": "Arrakastaz amaitu da, errore edo jakinarazpenekin",
"success": "Arrakastaz amaitu da"
},
"processing": "Zerbitzaria eragiketa exekutatzen ari da…",
"partial_logs": "[…] (ikuskatu historia erregistro osoetarako)",
"reconnecting": {
"title": "Zerbitzariarekin komunikatzeko ahaleginetan…",
"failed": "Badirudi zerbitzaria ez dela erantzuten ari. SSH bidez berriro konektatzen saia zaitezke `systemctl restart yunohost-api` exekutatuz.",
"reason": {
"unknown": "Itxi da komunikazioa zerbitzariarekin, ez da zergatia ezagutzen.",
"reboot": "Zerbitzaria berrabiarazten ari da eta ez da erabilgarri egongo tarte batez. Saioa hasteko galdegingo zaizu zerbitzaria berriro ere erabilgarri dagoenean.",
"shutdown": "Zerbitzari itzaltzen ari da eta aurrerantzean ez da erabilgarri egongo. Piztu ezazu berriro eta saioa hasteko galdegingo zaizu zerbitzaria berriro erabilgarri dagoenean.",
"upgrade_system": "Zerbitzariarekin konexioa eten da YunoHost eguneratzen ari delako. Zerbitzaria berriro erabilgarri noiz egongo zain…"
},
"success": "Zerbitzaria erabilgarri dago! Saioa hasten saia zaitezke"
}
},
"api_error": {
"view_error": "Ikusi errorea",
"error_message": "Errore-mezua:",
"server_said": "Eragiketa exekutatzean zera adierazi du zerbitzariak:",
"help": "Laguntza eskatu beharko zenuke <a href=\"https://forum.yunohost.org/\">foroan</a> edo <a href=\"https://chat.yunohost.org/\">txat gelan</a> egoera hau konpontzeko, edo errore honen berri eman <a href=\"https://github.com/YunoHost/issues\">bugtracker</a> plataforman.",
"info": "Ondorengo informazioa baliagarria izan dakioke laguntza ematen ari zaionari:",
"sorry": "Barkatu."
},
"api_waiting": "Zerbitzariaren erantzunaren zain…",
"all": "Guztia",
"api_not_found": "Badirudi administrazio-gunea existitzen ez den zerbait bilatzen saiatu dela.",
"api_not_responding": "YunoHosten APIa ez da erantzuten ari. Agian 'yunohost-api' ez dago martxan edo berrabiarazi da.",
"app_choose_category": "Aukeratu kategoria",
"api_errors_titles": {
"APINotFoundError": "YunoHosten APIak ezin izan du bidea aurkitu",
"APINotRespondingError": "YunoHosten APIa ez da erantzuten ari",
"APIConnexionError": "YunoHostek konexio-errore batekin egin du topo",
"APIError": "YunoHostek ustekabeko errore batekin egin du topo",
"APIBadRequestError": "YunoHostek errore batekin egin du topo",
"APIInternalError": "YunoHostek barne-errore batekin egin du topo"
},
"app_info_access_desc": "Une honetan aplikazio hau erabil dezaketen taldeak / erabiltzaileak:",
"app_info_default_desc": "Birbideratu domeinu nagusia ({domain}) aplikazio honetara.",
"app_info_changeurl_desc": "Aldatu aplikazio honen URLa (domeinua edota bidea).",
"app_info_change_url_disabled_tooltip": "Aukera hau oraindik ez dago erabilgarri aplikazio honetan",
"dns": "DNS",
"domain_add": "Gehitu domeinua",
"error_modify_something": "Zer edo zer aldatu beharko zenuke",
"install_name": "Instalatu {id}",
"label": "Etiketa",
"details": "Xehetasunak",
"form_errors": {
"remote": "{message}",
"pattern": "{type}",
"invalid_form": "Errore batzuk daude.",
"passwordMatch": "Pasahitzak ez datoz bat.",
"required": "Ezinbestekoa da.",
"domain": "Arazoa domeinu izenarekin: zenbakiak, hizki txikiak, puntuak eta gidoiak bakarrik erabili daitezke",
"dynDomain": "Arazoa domeinu izenarekin: zenbakiak, hizki txikiak eta gidoiak bakarrik erabil daitezke",
"emailForward": "Arazoa posta elektronikoaren birbidalketarekin: zenbakiak, hizkiak eta <code>_.-+</code> bakarrik erabil daitezke (esaterako izena+etiketa@adibidea.eus, iz3na-1+etiketa@adibidea.eus)",
"maxValue": "Zenbakia {max} edo txikiagoa izan behar da.",
"passwordLenght": "Pasahitzak 8 karaktere izan behar ditu gutxienez.",
"between": "{min} eta {max} artean egon behar da.",
"email": "Arazoa posta elektronikoarekin: zenbakiak, hizkiak eta <code>_.-</code> bakarrik erabili daitezke (esaterako izena@adibidea.eus, iz3na-1@adibidea.eus)",
"minValue": "Zenbakia {min} edo handiagoa izan behar da.",
"notInUsers": "Badago '{value}' izena duen erabiltzailea dagoeneko.",
"number": "Balioa zenbaki bat izan behar da.",
"alpha": "Hizkiak bakarrik izan daitezke.",
"alphalownumdot_": "Zenbakiak, hizki txikiak eta azpiko marra bakarrik erabili daitezke.",
"name": "Izenek ezin dituzte <code> ,.'-</code> ez diren karaktere bereziak eduki",
"appRepoUrl": "YunoHosten aplikazio-gordailuko URLek honako itxura daukate: https://domain.tld/path/to/repo_ynh"
},
"items": {
"backups": "babeskopia bat ere ez | babeskopia | {c} babeskopia",
"domains": "domeinu bat ere ez | domeinua | {c} domeinua",
"apps": "aplikazio bat ere ez | aplikazioa | {c} aplikazioa",
"groups": "talderik ez | taldea | {c} talde",
"installed_apps": "ez dago aplikaziorik instalatuta | instalatutako aplikazioa | {c} aplikazio instalatuta",
"services": "zerbitzu bat ere ez | zerbitzua | {c} zerbitzua",
"users": "erabiltzaile bat ere ez | erabiltzailea | {c} erabiltzailea",
"logs": "erregistro bat ere ez | erregistroa | {c} erregistroa",
"permissions": "baimenik gabe | baimena | {c} baimen"
},
"history": {
"title": "Historia",
"last_action": "Azken eragiketa:",
"methods": {
"DELETE": "ezabatu",
"GET": "irakurri",
"POST": "sortu/exekutatu",
"PUT": "moldatu"
},
"is_empty": "Historiarik ez oraingoz."
},
"common": {
"lastname": "Abizena",
"firstname": "Izena"
},
"confirm_upnp_enable": "Ziur UPnP gaitu nahi duzula?",
"group": "Taldea",
"group_name": "Taldearen izena",
"group_all_users": "Erabiltzaile guztiak",
"group_visitors": "Bisitariak",
"group_format_name_help": "Zenbakiak, hizkiak eta azpiko marra erabil ditzakezu",
"groups_and_permissions": "Taldeak eta baimenak",
"permissions": "Baimenak",
"everything_good": "Dena zuzen dago!",
"ignore": "Ez hartu kontuan",
"ignored": "Kontuan hartu ez direnak: {count}",
"configuration": "Ezarpenak",
"catalog": "Katalogoa",
"run_first_diagnosis": "Abiarazi hasierako diagnostikoa",
"hook_data_home": "Erabiltzaile-datuak",
"infos": "Informazioa",
"archive_empty": "Artxiboa hutsik dago",
"backup": "Babeskopiak",
"confirm_upnp_disable": "Ziur UPnP desgaitu nahi duzula?",
"delete": "Ezabatu",
"domains": "Domeinuak",
"hook_data_mail": "Posta",
"app_show_categories": "Erakutsi kategoriak",
"app_state_lowquality": "erdipurdiko kalitatea",
"code": "Kodea",
"applications": "Aplikazioak",
"backup_action": "Egin babeskopia",
"hook_conf_ynh_settings": "YunoHosten ezarpenak",
"hook_conf_manually_modified_files": "Eskuz moldatutako ezarpenak",
"hook_data_xmpp": "XMPP datuak",
"domain": {
"config": {
"edit": "Aldatu domeinuaren konfigurazioa",
"title": "Domeinuaren ezarpenak"
},
"dns": {
"auto_config_zone": "Oraingo DNS gunea",
"edit": "Aldatu DNS konfigurazioa",
"info": "DNS erregistroen konfigurazio automatikoa funtzio esperimentala da. <br>Une honetan ageri diren DNS guneko xehetasunak gordetzea ondo legoke konfigurazio berria ezarri baino lehen.",
"manual_config": "Eskuz konfiguratzeko proposatutako DNS erregistroak",
"push": "Bidali DNS ezarpenak erregistro-enpresara",
"push_force": "Ordezkatu erregistroak",
"push_force_warning": "Badirudi YunoHost ezartzera zihoan DNS balio batzuk dagoeneko konfiguratuta daudela erregistro-enpresaren ezarpenetan. Ordezkatzeko aukera erabili dezakezu zertan ari zaren baldin badakizu.",
"auto_config": "DNS erregistroen konfigurazio automatikoa",
"auto_config_ok": "Konfigurazio automatikoa zuzena dela dirudi!",
"push_force_confirm": "Ziur proposatutako DNS balioak bidali nahi dituzula? Kontuan izan honek erregistro-enpresak ezarritako balioak edota bestelako balioak ordezkatu ditzakeela.",
"auto_config_ignored": "Ez da kontuan hartu, YunoHostek ez du aldatuko gainean idazteko aukera sakatzen ez baduzu",
"methods": {
"auto": "Automatikoa",
"handled_in_parent": "Domeinu nagusiak kudeatzen du",
"manual": "Eskuzkoa",
"none": "Bat ere ez",
"semi_auto": "Erdiautomatikoa"
}
},
"cert": {
"types": {
"selfsigned": "Norberak sinatutakoa",
"letsencrypt": "Let's Encrypt",
"other": "Beste / Ezezaguna"
},
"valid_for": "{days} baliogarria"
},
"explain": {
"main_domain": "Domeinu nagusia erabiltzaileek atarira sartzeko erabiltzen dutena da (\"{domain}/yunohost/sso\" bidez). <br> Hori dela-eta, ezin da ezabatu. <br>\"{domain}\" ezabatu nahi baduzu, ezarri beste bat domeinu nagusi bezala."
},
"info": {
"apps_on_domain": "Domeinuan instalatutako aplikazioak",
"certificate_authority": "SSL ziurtagiri jaulkitzailea",
"registrar": "Erregistro-enpresa",
"dyn_dns_remove_and_unsubscribe": "Eta utzi YunoHosten DynDNS zerbitzuan domeinua erregistratzeari"
},
"see_parent_domain": "Ikus domeinu nagusia",
"types": {
"main_domain": "Domeinu nagusia"
},
"toggle_subdomains": "Ikusi / Ezkutatu azpi-domeinuak",
"add": {
"from_local_desc": "Ez baduzu \"benetako\" domeinu publiko bat nahi, <code>.local</code> edo <code>.test</code> amaiera duen edozein domeinu erabil dezakezu. <code>.local</code> amaiera duten domeinuak bereziak dira: sare lokalak kudeatzen ditu (gailuek Bonjour protokoloa badarabilte). Beste aukera bat gailu bakoitzeko <code>/etc/hosts</code> fitxategia (edo Windows-en baliokide dena) moldatzea da, edo routerrean DNS sarrerak konfiguratzea.",
"from_yunohost_desc": "YunoHost proiektuak doako 'DynDNS' zerbitzu bat eskaintzen du. Zerbitzari bakoitzak mota honetako domeinu bakarra izan dezake (geroago azpidomeinu gehiago gehitu ditzakezu, 'Lehendik dudan domeinu edo azpidomeinu bat gehitu nahi dut' aukera erabiliz). DNS ezarpenak automatikoki kudeatuko ditu YunoHostek. Ideala da, orokorrean, norbera ostatatzen hasten denean eta oraindik domeinu bat erosteko prest ez dagoenarentzat. Hala ere, epe-ertain/luzean, domeinu propioa erostea gomendatzen dizugu, domeinuaren jabetza osoa izan dezazun.",
"dyn_dns_password": "Domeinuaren berreskuratze-pasahitza",
"dyn_dns_password_desc": "Pasahitz honek domeinuaren kontrola berreskuratzea ahalbidetuko dizu sistema berriz instalatzen baduzu. Domeinu hau aurretik ere erregistratu bazenuen, erabili berreskuratze-pasahitza hemen.",
"from_local": "Lokalean erabiltzeko / probak egiteko domeinu bat nahi dut",
"from_registrar": "Lehendik dudan domeinu edo azpidomeinu bat gehitu nahi dut",
"from_registrar_desc": "Domeinuaren erregistro enpresan DNS balioak eskuz ezarri beharko dituzu konfigurazioa amaitzeko. YunoHosten diagnostikoak zein balio ezarri behar dituzun zehaztuko dizkizu.",
"from_yunohost": "Ez daukat domeinurik, YunoHost proiektuak doan eskainitako DynDNS domeinu bat erregistratu/erabili nahi dut"
}
},
"domain_add_dyndns_forbidden": "YunoHost proiektuaren DynDNS domeinu bat erregistratu duzu lehendik ere. Mota honetako domeinu bakarrera mugatuta dago zerbitzari bakoitza. Lehendik duzun domeinuaren azpidomeinu bat gehitu nahi baduzu, erabili 'Lehendik dudan domeinu edo azpidomeinu bat gehitu nahi dut' aukera. Beste domeinu bat erabili nahi izanez gero, unean darabilzun DynDNS domeinua kendu beharko duzu. DynDNS domeinuak idealak dira norbera ostatatzen hasten denean, baina epe-ertain/luzean domeinu propioa erostea gomendatzen dizugu, domeinuaren jabetza osoa izan dezazun.",
"download": "Deskargatu",
"ipv6": "IPv6",
"app_install_parameters": "Instalazio-ezarpenak",
"confirm_service_stop": "Ziur {name} geldiarazi nahi duzula?",
"app_state_lowquality_explanation": "Litekeena da aplikazio hau erabili ahal izatea baina erroreak izan ditzake, edo ez dago erabat YunoHostera egina, edo ez ditu jardunbideak errespetatzen.",
"app_state_highquality_explanation": "Aplikazio hau YunoHostera egoki egina dago gutxienez duela urtebetetik.",
"backup_new": "Babeskopia berria",
"confirm_delete": "Ziur {name} ezabatu nahi duzula?",
"confirm_firewall_allow": "Ziur {port} ataka ireki nahi duzula? (protokoloa: {protocol}, konexioa: {connection})",
"description": "Azalpena",
"group_new": "Talde berria",
"confirm_firewall_disallow": "Ziur {port} ataka itxi nahi duzula? (protokoloa: {protocol}, konexioa: {connection})",
"diagnosis": "Diagnostikoak",
"confirm_service_restart": "Ziur {name} berrabiarazi nahi duzula?",
"confirm_reboot_action_shutdown": "Ziur zerbitzaria itzali nahi duzula?",
"connection": "Konexioa",
"diagnosis_first_run": "Diagnostikoa ohiko arazoak identifikatzen saiatuko da zerbitzaria ahalik eta hoberen ibili dadin. Ez larritu erroreak ikusten badituzu zerbitzaria konfiguratu eta berehala: horretarako dago pentsatuta zehazki, arazoak identifikatu eta konpontzen laguntzeko. Zerbitzariak egunean birritan egingo du diagnostikoa automatikoki eta administratzaileak posta elektroniko bat jasoko du aurkitutako arazoekin.",
"domain_dns_config": "DNS ezarpenak",
"diagnosis_explanation": "Diagnostikoa ohiko arazoak identifikatzen saiatuko da zerbitzaria ahalik eta hoberen ibili dadin. Egunean birritan egingo du zerbitzariak eginkizun hau eta posta elektronikoa bidaliko dio administratzaileari arazoren bat ikusiz gero. Litekeena da emaitza batzuek garrantzirik ez izatea ezaugarri batzuk erabili nahi ez badira (XMPP adibidez) edo kale egin dezake zerbitzariaren konfigurazioa konplexua bada. Horrelako kasuetan, eta zertan ari zaren baldin badakizu, ez dago arazorik abisu edo jakinarazpenei muzin egiteko.",
"domain_default_desc": "Erabiltzaileek lehenetsitako domeinua erabiliko dute saioa hasteko.",
"domain_delete_forbidden_desc": "Ezinezkoa da '{domain}' ezabatzea lehenetsitako domeinua delako. Aukeratu beste domeinu bat (edo <a href='#/domains/add'>gehitu berri bat</a>) eta lehenetsi oraingo domeinua kendu ahal izateko.",
"domain_dns_push_managed_in_parent_domain": "DNS ezarpen automatikoen funtzioa <a href='#/domains/{parent_domain}/dns'>{parent_domain}</a> domeinu nagusiak kudeatzen du.",
"footer": {
"documentation": "Dokumentazioa",
"help": "Laguntza behar al duzu?",
"donate": "Egin dohaintza"
},
"hook_data_home_desc": "Erabiltzaile-datuak /home/ERABILTZAILEA katalogoan daude",
"installed": "Instalatuta",
"from_to": "{0}(e)tik {1}(e)ra",
"good_practices_about_admin_password": "Administrazio-pasahitz berri bat ezartzear zaude. Pasahitzak 8 karaktere izan beharko lituzke gutxienez, baina ondo legoke pasahitz luzeagoa erabiltzea (esaldi bat, esaterako) edota karaktere desberdinak gehitzea (hizki larriak, txikiak, zenbakiak eta karaktere bereziak).",
"good_practices_about_user_password": "Erabiltzaile-pasahitz berri bat ezartzear zaude. Pasahitzak 8 karaktere izan beharko lituzke gutxienez, baina ondo legoke pasahitz luzeagoa erabiltzea (esaldi bat, esaterako) edota karaktere desberdinak gehitzea (hizki larriak, txikiak, zenbakiak eta karaktere bereziak).",
"hook_adminjs_group_configuration": "Sistemaren ezarpenak",
"hook_conf_ynh_certs": "SSL ziurtagiriak",
"close": "Itxi",
"issues": "Arazoak: {count}",
"begin": "Hasi",
"disabled": "Desgaituta",
"both": "Biak",
"confirm_update_system": "Ziur sistemaren pakete guztiak eguneratu nahi dituzula?",
"app_state_inprogress_explanation": "Aplikazio honen arduradunak adierazi du aplikazioa ez dagoela oraindik ekoizpenerako prest. KONTUZ!",
"confirm_app_change_url": "Ziur aplikazioaren URLa aldatu nahi duzula?",
"domain_dns_push_failed_to_authenticate": "Ezinezkoa izan da erregistro-enpresaren APIa erabiliz saioa hastea. Ziurrenik <a href='#/domains/{domain}/config'>datuak</a> ez dira zuzenak. (Errorea: {error})",
"domain_dns_push_not_applicable": "DNS ezarpenen funtzio automatikoa ezin da {domain} domeinuarekin erabili.<br>Eskuz konfiguratu beharko dituzu DNS ezarpenak <a href='https://yunohost.org/dns'>dokumentazioa</a>ri jarraituz eta ondoren proposatutako balioei erreparatuz.",
"enable": "Gaitu",
"enabled": "Gaituta",
"error": "Errorea",
"group_specific_permissions": "Erabiltzaile bakoitzaren baimenak",
"group_add_member": "Gehitu erabiltzailea",
"group_explain_all_users": "Zerbitzari honetan dauden erabiltzaile guztiak barne dituen talde berezia da",
"app_manage_label_and_tiles": "Kudeatu etiketak eta lauzak",
"group_add_permission": "Gehitu baimena",
"group_explain_visitors": "Saiorik hasi ez duten bisitariak barne hartzen dituen talde berezia da",
"groups_and_permissions_manage": "Kudeatu talde eta baimenak",
"group_explain_visitors_needed_for_external_client": "Kontuan izan aplikazio batzuek bisitariak onartu behar dituztela ordenagailu edota telefonoan erabili nahi badituzu. Adibidez, Nextcloud.",
"app_info_uninstall_desc": "Desinstalatu aplikazioa.",
"app_make_default": "Lehenetsi",
"app_install_custom_no_manifest": "Ez dago manifest.json fitxategirik",
"app_state_inprogress": "oraindik ez dabil",
"backup_content": "Babeskopiaren edukia",
"backup_create": "Egin babeskopia",
"cancel": "Utzi",
"check": "Egiaztatu",
"confirm_app_default": "Ziur aplikazio hau lehenetsi nahi duzula?",
"confirm_change_maindomain": "Ziur domeinu nagusia aldatu nahi duzula?",
"confirm_install_custom_app": "KONTUZ! Kanpoko aplikazioak instalatzeak sistemaren integritate eta segurtasun arriskuak ekar ditzake. Ez badakizu zertan ari zaren, EZ instalatu. Ziur zerbitzaria arriskuan jarri nahi duzula?",
"confirm_install_domain_root": "Ziur aplikazioa '/'-n instalatu nahi duzula? Ezingo duzu bestelako aplikaziorik instalatu {domain} domeinuan",
"confirm_migrations_skip": "Ez da gomendatzen migrazioak saihestea. Ziur saihestu nahi dituzula?",
"confirm_postinstall": "{domain} domeinurako instalazio-prozedura hastear zaude. Litekeena da minutu batzuk irautea, *ez geldiarazi prozesua*.",
"confirm_restore": "Ziur {name} lehengoratu nahi duzula?",
"confirm_service_start": "Ziur {name} abiarazi nahi duzula?",
"confirm_uninstall": "Ziur {name} desinstalatu nahi duzula?",
"confirm_update_apps": "Ziur aplikazio guztiak eguneratu nahi dituzula?",
"confirm_update_specific_app": "Ziur {app} eguneratu nahi duzula?",
"confirm_reboot_action_reboot": "Ziur zerbitzaria berrabiarazi nahi duzula?",
"created_at": "Sortze-data",
"custom_app_install": "Instalatu norberaren aplikazioa",
"domain_dns_conf_is_just_a_recommendation": "Atal honetan *iradokitutako* ezarpenak agertzen dira. *Ez* du DNSa zure ordez konfiguratuko. Zure ardura da DNS guneak zure DNS erregistro-enpresaren gomendioen arabera ezartzea.",
"disable": "Desgaitu",
"domain_default_longdesc": "Hau da lehenetsitako domeinua.",
"domain_delete_longdesc": "Ezabatu domeinua",
"domain_dns_longdesc": "Aztertu DNS ezarpenak",
"domain_name": "Domeinu izena",
"error_server_unexpected": "Ustekabeko errorea zerbitzarian",
"firewall": "Suebakia",
"error_connection_interrupted": "Zerbitzari honek erantzunik eman ez eta konexioa bertan behera utzi du. Berrabiarazi edo gelditu al da nginx edo yunohost-api arrazoiren bategatik?",
"experimental_warning": "Adi: funtzio hau esperimentala da eta ezin da esan egonkorra denik; ez zenuke erabili beharko ez badakizu zertan ari zaren.",
"footer_version": "<a href='https://yunohost.org'>YunoHost</a> {version} ({repo}).",
"form_input_example": "Adibidea: {example}",
"hook_conf_ldap": "Erabiltzaile-datubasea",
"hook_data_mail_desc": "Zerbitzarian gordetako posta elektronikoa",
"id": "IDa",
"install_time": "Instalazio unea",
"installation_complete": "Amaitu da instalazioa",
"home": "Hasiera",
"hook_data_xmpp_desc": "Gela- eta erabiltzaile-ezarpenak, fitxategien igoera",
"install": "Instalatu",
"ipv4": "IPv4",
"items_verbose_items_left": "{items} falta dira. | {items} bat falta da. | {items} falta dira.",
"confirm_group_add_access_permission": "Ziur {name}(r)i {perm} baimena eman nahi diozula? Erasoak biderkatu litezke baimen horri esker {name} pertsona maltzurra baldin bada. Soilik baimena eman pertsona edo talde honetaz fio bazara.",
"confirm_app_install": "Ziur aplikazio hau instalatu nahi duzula?",
"confirm_install_app_lowquality": "Adi: litekeena da aplikazio honek funtzionatzea baina ez dago YunoHostera ondo egina. Aukera batzuk, SSO kasu edota babeskopia egin eta lehengoratzea, agian ez daude erabilgarri.",
"confirm_install_app_inprogress": "KONTUZ! Aplikazio hau saiakera bat da (edo ez dabil) eta litekeena da sistema kaltetzea! Ez badakizu zertan zabiltzan ez zenuke instalatu beharko. Ziur zerbitzaria arriskuan jarri nahi duzula?",
"day_validity": " Iraungita | egun 1 | {count} egun",
"dead": "Ez dago aktibo",
"experimental": "Esperimentala",
"go_back": "Joan atzera",
"items_verbose_count": "{items} dago | {items} bat dago | {items} daude.",
"local_archives": "Artxibo lokalak",
"logs": "Erregistroak",
"logs_started_at": "Hasiera",
"logs_context": "Testuingurua",
"port": "Ataka",
"restore": "Lehengoratu",
"migrations": "Migrazioak",
"migrations_no_done": "Ez dago lehenagoko migraziorik",
"human_routes": {
"diagnosis": {
"ignore": {
"error": "Ezkutatu errorea",
"warning": "Ezkutatu jakinarazpena"
},
"unignore": {
"error": "Erakutsi errorea",
"warning": "Erakutsi jakinarazpena"
},
"run": "Abiarazi diagnostikoa",
"run_specific": "Exekutatu '{description}'(r)en diagnostikoa"
},
"backups": {
"create": "Sortu babeskopia",
"delete": "Ezabatu '{name}' babeskopia",
"restore": "Lehengoratu '{name}' babeskopia"
},
"apps": {
"install": "Instalatu '{name}' aplikazioa",
"set_default": "'{domain} domeinuaren root-a '{name}'ra birbideratu",
"uninstall": "Desinstalatu '{name}' aplikazioa",
"update_config": "Eguneratu '{name}' aplikazioaren '{id}' konfigurazio-arbela",
"change_url": "Aldatu '{name}'(r)en URLa",
"change_label": "'{prevName}' '{nextName}'(r)ekin aldatu",
"action_config": "Exekutatu '{name}' aplikazioaren '{action}' ekintza ezarpenetan",
"dismiss_notification": "Baztertu '{name}' aplikazioaren jakinarazpena"
},
"domains": {
"add": "Gehitu '{name}' domeinua",
"delete": "Ezabatu '{name}' domeinua",
"push_dns_changes": "Bidali '{name}' DNS ezarpenak erregistro-enpresara",
"update_config": "Eguneratu '{name}' domeinuaren '{id}' konfigurazio-arbela",
"set_default": "Ezarri '{name}' domeinu nagusi bezala",
"cert_install": "Instalatu ziurtagiria '{name}'(e)rako",
"cert_renew": "Berritu ziurtagiria '{name}'(e)rako"
},
"migrations": {
"skip": "Saihestu migrazioak",
"run": "Exekutatu migrazioak"
},
"update": "Bilatu eguneraketak",
"firewall": {
"ports": "{action} {port} ataka ({protocol}, {connection})",
"upnp": "UPnP {action}"
},
"groups": {
"create": "Sortu '{name}' taldea",
"add": "Gehitu '{user}' '{name}' taldera",
"remove": "Kendu '{user}' '{name}' taldetik",
"delete": "Ezabatu '{name}' taldea"
},
"permissions": {
"add": "Baimena eman '{name}'(r)i '{perm}'ra sartzeko",
"remove": "Kendu '{name}'(r)i '{perm}'ra sartzeko baimena"
},
"services": {
"restart": "Berrabiarazi '{name}' zerbitzua",
"start": "Abiarazi {name}' zerbitzua",
"stop": "Geldiarazi '{name}' zerbitzua"
},
"upgrade": {
"system": "Eguneratu sistema",
"apps": "Eguneratu aplikazio guztiak",
"app": "Eguneratu '{app}' aplikazioa"
},
"users": {
"create": "Sortu '{name}' erabiltzailea",
"delete": "Ezabatu '{name}' erabiltzailea",
"update": "Aldatu '{name}' erabiltzailea"
},
"postinstall": "Abiarazi instalazio ondorengo prozesua",
"share_logs": "Sortu '{name}' erregistroaren esteka",
"shutdown": "Itzali zerbitzaria",
"reboot": "Berrabiarazi zerbitzaria",
"reconnecting": "Berkonektatzen",
"settings": {
"update": "Eguneratu '{panel}' ezarpen orokorrak"
}
},
"only_highquality_apps": "Kalitate handiko aplikazioak soilik",
"only_decent_quality_apps": "Kalitate onargarria duten aplikazioak soilik",
"orphaned": "Arduradunik gabe",
"nobody": "Inor ez",
"others": "Besteak",
"placeholder": {
"domain": "nire-domeinua.eus",
"file": "Arakatu edo ekarri fitxategia leihora",
"username": "ziripot",
"firstname": "Lur",
"lastname": "Axpe",
"groupname": "Nire taldearen izena",
"fullname": "Lur Axpe"
},
"logs_suboperations": "Azpi-eragiketak",
"logs_access": "Baimendutakoen eta debekatutakoen zerrenda",
"logs_path": "Bidea",
"logs_share_with_yunopaste": "Partekatu YunoPastekin",
"label_for_manifestname": "{name}(r)entzat etiketa",
"last_ran": "Une honetan exekutatu zen azkenekoz:",
"migrations_no_pending": "Ez dago egiteko migraziorik",
"password_confirmation": "Berridatzi pasahitza",
"logs_history": "Sisteman exekutatutako komandoen historia",
"permission_show_tile_enabled": "Erabiltzaileen atarian lauza moduan ikusgai",
"ports": "Atakak",
"postinstall": {
"force": "Abiarazi instalazio ondorengo prozesua",
"title": "Instalazio ondorengo prozesua",
"user": {
"title": "Sortu lehenengo administratzaile erabiltzailea",
"first_user_help": "Erabiltzaile honi administrazio-ahalmenak esleituko zaizkio eta administrazio-gunea eta SSH konexioa erabiltzeko aukera izango du.\nErabiltzaile arrunta denez, erabiltzaileen ataria (SSO) erabiltzeko aukera ere izango du.\nInstalazio ondorengo prozesuek amaitzen dutenean, administratzaile gehiago sor ditzakezu 'admins' taldera gehituz."
}
},
"postinstall_set_domain": "Aukeratu domeinu nagusia",
"previous": "Aurrekoa",
"protocol": "Protokoloa",
"rerun_diagnosis": "Berrabiarazi diagnostikoa",
"license": "Lizentzia",
"restart": "Berrabiarazi",
"operation_failed_explanation": "Kale egin du! Sentitzen dugu :( <a href='https://yunohost.org/help'>Laguntza eskatzen saia zaitezke</a>. Jarri laguntzaileen esku eragiketaren erregistroa *bere osotasunean*. 'Partekatu Yunopastekin' botoi berdea sakatu dezakezu horretarako. YunoHost automatikoki saiatuko da domeinuak edo IP helbideak bezalako datu pribatuak anonimo egiten erregistroak partekatzean.",
"pending_migrations": "Migrazio batzuk exekutatzeke daude. Joan <a href='#/tools/migrations'>Tresnak > Migrazioak</a>-era abiarazteko.",
"permission_corresponding_url": "Dagokion URLa",
"orphaned_details": "Aplikazio honek ez du arduradunik izan denbora luzez. Litekeena da oraindik martxan jarri ahal izatea, baina ez du eguneraketarik jasoko bolondresen batek ardura hartu arte. Parte hartu eta biziberritu!",
"permission_main": "Etiketa nagusia",
"login": "Hasi saioa",
"logout": "Amaitu saioa",
"mailbox_quota_description": "Ezarri tamaina-muga bat posta elektronikorako.<br>Mugarik nahi ez baduzu, erabili 0.",
"manage_apps": "Kudeatu aplikazioak",
"manage_users": "Kudeatu erabiltzaileak",
"migrations_pending": "Migratzeke",
"migrations_done": "Lehenagoko migrazioak",
"multi_instance": "Behin baino gehiagotan instala daiteke",
"next": "Hurrengoa",
"only_working_apps": "Erdipurdi dabiltzan aplikazioak soilik",
"open": "Ireki",
"operations": "Eragiketak",
"path": "Bidea",
"logs_package": "Debian paketeen kudeaketaren historia",
"logs_system": "Kernel erregistroak eta maila baxuko bestelako gertakariak",
"logs_service": "Zerbitzuen erregistroak",
"logs_app": "Aplikazioen erregistroak",
"logs_no_logs_registered": "Ez dago erregistrorik kategoria honetarako",
"logs_error": "Errorea",
"logs_ended_at": "Amaiera",
"logs_more": "Erakutsi lerro gehiago",
"postinstall_intro_1": "Bejon deizula! YunoHost arazorik gabe instalatu da.",
"postinstall_intro_3": "Argibide gehiago lor ditzakezu <a href='//yunohost.org/en/install/hardware:vps_debian#fa-cog-proceed-with-the-initial-configuration' target='_blank'>dokumentazio gunea</a> bisitatuz",
"postinstall_intro_2": "Bi urrats gehiago behar dira zerbitzariko zerbitzuak gaitzeko.",
"mailbox_quota_example": "CD bat 700M dira, DVD bat 4700M",
"mailbox_quota_placeholder": "0 ezarriz gero ez da mugarik egongo.",
"manage_domains": "Kudeatu domeinuak",
"migrations_disclaimer_check_message": "Baldintzak ulertu eta onartzen ditut",
"migrations_disclaimer_not_checked": "Baldintzak eta ardurak onartu behar dituzu migrazioarekin hasi baino lehen.",
"no": "Ez",
"perform": "Exekutatu",
"logs_operation": "YunoHostekin burututako eragiketak",
"readme": "Irakur nazazu",
"postinstall_domain": "Domeinu hau YunoHost zerbitzarira lotuko den lehena izango da baina horrez gain, zerbitzariko erabiltzaileek saioa hasteko gunekoa ere izango da. Beraz, edonorentzat ikusgai egongo denez, aukeratu arretaz.",
"tools_shutdown_reboot": "Itzali/Berrabiarazi",
"user_mailbox_quota": "Posta elektronikoaren kupoa",
"services": "Zerbitzuak",
"set_default": "Lehenetsi",
"size": "Tamaina",
"start": "Abiarazi",
"run": "Exekutatu",
"tools_webadmin": {
"language": "Hizkuntza",
"fallback_language": "Bigarren hizkuntza",
"fallback_language_description": "Hizkuntza lehenetsian mezuren bat itzulita ez badago, bigarren hizkuntzan erakutsiko da.",
"cache": "Katxea",
"cache_description": "Agian katxea desgaitu beharko zenuke administrazio-gunea erabiltzeaz gain terminalarekin jardungo baduzu.",
"experimental": "Modu esperimentala",
"experimental_description": "Funtzio esperimentalei atea irekitzen die. Ezegonkorrak dira eta sistema kaltetu dezake.<br>Zertan ari zaren badakizu soilik gaitu aukera hau.",
"transitions": "Orrialdeen transtsizioetarako animazioak",
"theme": "Piztu / Itzali itxura iluna"
},
"users_import_delete_desc": "Aukeratuz gero, CSV fitxategian ageri ez diren erabiltzaile guztiak ezabatuko dira (baita sistematik ere).",
"version": "Bertsioa",
"since": " ",
"system_upgrade_btn": "Eguneratu",
"system_upgrade_all_packages_btn": "Eguneratu pakete guztiak",
"unignore": "Erakutsi",
"user_emailaliases_add": "Gehitu e-mail ezizen bat",
"system_apps_nothing": "Aplikazio guztiak egunean daude!",
"system_packages_nothing": "Sistemaren pakete guztiak egunean daude!",
"tools_reboot_btn": "Berrabiarazi",
"select_all": "Hautatu guztia",
"select_none": "Ez hautatu bat ere ez",
"service_start_on_boot": "Abiarazi zerbitzariarekin batera",
"status": "Egoera",
"system": "Sistema",
"tools": "Tresnak",
"uninstall": "Desinstalatu",
"url": "URLa",
"users_no": "Ez dago erabiltzailerik.",
"words": {
"default": "Lehenetsia",
"browse": "Arakatu",
"collapse": "Ezkutatu",
"link": "Esteka",
"none": "Bat ere ez",
"separator": ", ",
"valid": "Baliozkoa"
},
"users_import_delete": "Ezabatu zerrendan ageri ez diren erabiltzaileak",
"system_update": "Sistemaren eguneraketak",
"system_upgrade_all_applications_btn": "Eguneratu aplikazio guztiak",
"tcp": "TCP",
"tools_reboot": "Berrabiarazi zerbitzaria",
"unauthorized": "Ez duzu baimenik",
"save": "Gorde",
"tools_shutdown": "Itzali zerbitzaria",
"tools_shutdown_btn": "Itzali",
"udp": "UDP",
"upnp": "UPnP",
"upnp_disabled": "UPnP ez dago gaituta.",
"upnp_enabled": "UPnP gaituta dago.",
"user_email": "Posta elektronikoa",
"user_emailaliases": "e-mail ezizenak",
"user_emailforward": "Posta elektronikoaren birbidalketa",
"user_fullname": "Izen osoa",
"user_new_forward": "birbidalketaberria@kanpoko-domeinua.eus",
"user_username": "Erabiltzaile-izena",
"users": "Erabiltzaileak",
"yes": "Bai",
"running": "Exekutatzen",
"search": {
"for": "Bilatu {items}…",
"not_found": "Zuk zehaztutako baldintzak betetzen dituzten {items} aurkitu dira. | Zuk zehaztutako baldintzak betetzen dituen {items} bat aurkitu da. | Zuk zehaztutako baldintzak betetzen dituzten {items} aurkitu dira."
},
"traceback": "Atzera egin (traceback)",
"unknown": "Ezezaguna",
"user_emailforward_add": "Gehitu posta elektronikorako birbidalketa",
"users_import": "Inportatu erabiltzaileak",
"users_export": "Esportatu erabiltzaileak",
"users_import_csv_file": "CSV fitxategia",
"users_import_update": "Eguneratu existitzen diren erabiltzaileak",
"tip_about_user_email": "Erabiltzaileak sortzerakoan ePosta helbide bat (eta XMPP kontu bat) esleitzen zaie erabiltzailea@domeinua.eus itxurarekin. Administratzaile eta erabiltzaileek helbide elektroniko gehiago eta birbidalketarako helbideak gehitu ditzakete geroago.",
"tools_webadmin_settings": "Administrazio-gunearen ezarpenak",
"user_mailbox_use": "Posta elektronikorako erabilitako espazioa",
"users_new": "Erabiltzaile berria",
"users_import_csv_file_desc": "CSV fitxategia UTF-8 izan beharko litzateke eta zutabe hauek izan: erabiltzaile izena, pasahitza, taldeak, posta elektronikoa eta espazio kuota. Adibidez <a href='/yunohost/api/users/export' target='_BLANK'>erabiltzaileen CSV fitxategia</a> esporta dezakezu eta fitxategia moldatu.",
"users_import_update_desc": "Aukeratuz gero, CSV fitxategian dauden erabiltzaile guztiak eguneratuko dira ezarpen berriarekin",
"users_import_confirm_destructive": "Ziur fitxategi honetan ez dauden erabiltzaileak ezabatu nahi dituzula?",
"users_import_delete_others": "Ezabatu zerrendan ageri ez diren erabiltzaileak",
"warnings": "{count} jakinarazpen",
"yunohost_admin": "YunoHosten administratzailea",
"skip": "Gerorako utzi",
"stop": "Geldiarazi",
"user_interface_link": "Erabiltzaileen ataria",
"user_username_edit": "Aldatu {name}(r)en kontua",
"text_selection_is_disabled": "Ezinezkoa da testua hautatzea. Erregistroa partekatu nahi baduzu, erregistro *osoa* partekatu 'Partekatu Yunopastekin' botoiaren bidez.<br/><small>Edo testua hautatu nahi baduzu, sakatu tekla hauek: ↓↓↑↑. </small>",
"certificate_manage": "Kudeatu SSL ziurtagiria",
"certificate": "Ziurtagiria",
"purge_user_data_warning": "Erabiltzailearen datuak purgatzea ezin da desegin. Ziurtatu hori den egin nahi duzuna!",
"purge_user_data_checkbox": "{name}(r)en datuak purgatu? (Honek bere direktorioko eduki guztiak ezabatuko ditu, baita posta elektronikoa ere.)",
"retry": "Saiatu berriro",
"app_state_broken": "hondatuta",
"app_state_broken_explanation": "Aplikazio hau hondatuta dago une honetan eta ezin da instalatu YunoHost-en azterketa automatikoen arabera",
"confirm_install_app_broken": "ADI! Aplikazio hau hondatuta dago YunoHost-en azterketa automatikoen arabera eta litekeena da sistema hondatzea! EZ instalatu ez badakizu zertan ari zaren. Arriskatu nahi al duzu?",
"details_about": "Erakutsi xehetasun gehiago {subject}(r)i buruz",
"group_admins": "Administratzaileak",
"group_explain_admins": "Administratzeko ahalmena duten erabiltzaileen talde berezia da hau. Talde honetan dauden erabiltzaileek YunoHosten web-administrazioa, SSH konexioa eta 'sudo' komandoa erabil dezakete. root@, admin@ eta admins@ kontuei bidalitako mezu elektronikoak ere jasoko dituzte, diagnostikoen jakinarazpenez gain. Erabat fio zaren erabiltzaileak baino ez zenituzke gehitu beharko talde honetara!",
"label_for_manifestname_help": "Erabiltzaileen atarian ageri den izena da hau. Aldatzea dago.",
"manage_groups": "Kudeatu taldeak",
"tools_yunohost_settings": "YunoHosten ezarpenak",
"wrong_password_or_username": "Pasahitz edo erabiltzaile-izen okerra",
"important_yunohost_upgrade": "YunoHosten bertsio nagusi bat dago eskuragai. Zinez gomendagarria da eguneraketaren oharrak arretaz irakurtzea foroan bertsio-berritu baino lehen: <a href='https://forum.yunohost.org/tag/ynh_release'>Irakurri oharrak foroan</a>",
"app": {
"installed_version": "Instalatutako bertsioa:",
"open_this_app": "Ireki aplikazioa",
"antifeatures": "Aplikazio honek gogoko izan ez ditzakezun ezaugarriak ditu:",
"doc": {
"about": {
"title": "Honi buruz",
"description": "Deskribapena"
},
"admin": {
"title": "Administratzaile dokumentazioa"
},
"notifications": {
"title": "Jakinarazpenak",
"post_upgrade": "Berritu ondorengo oharrak",
"post_install": "Instalatu ondorengo oharrak",
"understood": "Ulertuta"
}
},
"info": {
"forum": "Bilatu edo galdetu foroan!",
"problem": "Arazoren bat aplikazio honekin?",
"config_panel_error": "Errore batek ezarpen arbela erakustea galarazten du:",
"config_panel_error_please_report": "Eman errore honen berri YunoHost taldeari zuzen dezaten!"
},
"install": {
"license": "Lizentzia: {license}",
"notifs": {
"post": {
"title": "'{name}' instalatu ondorengo jakinarazpenak",
"alert": "Badirudi instalazioa behar bezala gauzatu dela!\nPaketearen arduradunak ondorengo jakinarazpenak garrantzitsuak direla deritzo.\nAplikazioaren informazio-orrialdean irakur dezakezu berriro."
},
"pre": {
"warning": "Instalatu baino lehen jakin beharrekoak",
"danger": "Aplikazioa instalatzeak arazoak sortuko ditu ziurrenik",
"critical": "Ezin da aplikazioa instalatu"
}
},
"problems": {
"arch": "Aplikazio hau ({required}) arkitekturatan bakarrik instalatu daiteke, baina zure zerbitzariaren arkitektura {current} da.",
"broken": "Aplikazio hau hondatuta dago YunoHosten azterketa automatikoen arabera eta zure sistema apur lezake! Ez zenuke instalatu beharko zertan ari zaren ez badakizu.",
"thirdparty": "Aplikazio hau ez da YunoHosten liburutegikoa; hirugarrenen aplikazioak instalatzeak sistemaren integritatea ezbaian jar dezake. EZ zenuke instalatu beharko zertan ari zaren ez badakizu.",
"ignore": "Ulertzen dut aplikazio honek nire sistema apur lezakeela baina hala ere probatu nahi dut.",
"inprogress": "Aplikazio hau esperimentala da oraindik (edo ez dabil) eta litekeena da zure sistema apurtzea! EZ zenuke instalatu beharko zertan ari zaren ez badakizu.",
"install": "Badago lehendik ere instalatuta eta ezin da behin baino gehiagotan instalatu.",
"lowquality": "Litekeena da aplikazioa erabili ahal izatea baina ez dago YunoHosten ondo integratuta. Baliteke Saio Bakarra (SSO) edota babeskopia / lehengoratzea bezalako ezaugarri batzuk erabilgarri ez egotea, edo gidalerroak ez errespetatzea.",
"version": "Aplikazio honek YunoHost {required} edo bertsio berriagoa behar du, baina unean instalatuta daukazuna {current} da; aztertu YunoHost eguneratzea.",
"ram": "Aplikazio honek {required} RAM behar ditu instalatu edo bertsio-berritzeko baina unean soilik {current} daude erabilgarri. Aplikazioa ibiliko balitz ere, instalazio prozesuak RAM kopuru handia behar du eta zure zerbitzariak erantzuteari utzi eta huts egin lezake."
},
"try_demo": "Probatu demo hau",
"version": "Uneko bertsioa: {version}"
},
"integration": {
"archs": "Arkitektura bateragarriak:",
"ldap": {
"false": "Ezin da YunoHosten kontua erabili saioa hasteko (LDAP); kontu bat sortu beharko da aplikazioan bertan",
"true": "YunoHosten kontuarekin hasi daiteke saioa (LDAP)",
"?": "Ez dago LDAP integrazioari buruzko informaziorik"
},
"multi_instance": {
"false": "Behin bakarrik instala daiteke",
"true": "Behin baino gehiagotan instala daiteke"
},
"resources": "Baliabideen ohiko erabilera: {ram} RAM, {disk} memoria diskoan",
"sso": {
"true": "Saio Bateratua (SSO) erabilgarri dago",
"?": "Ez dago Saio Bateratuari (SSO) buruzko informaziorik",
"false": "Saio Bateratua (SSO) ez dago erabilgarri"
},
"title": "YunoHosten integrazioa"
},
"links": {
"admindoc": "Administrazioaren dokumentazio ofiziala",
"code": "Kode-gordailu ofiziala",
"package": "YunoHosten pakete-gordailua",
"title": "Estekak",
"userdoc": "Erabiltzaileen dokumentazio ofiziala",
"website": "Webgune ofiziala",
"license": "Aplikazioaren lizentzia",
"forum": "Aplikazio honi buruzko eztabaidak YunoHosten foroan",
"package_license": "YunoHost paketearen lizentzia"
},
"potential_alternative_to": "Honen baliokide izan daiteke:",
"upgrade": {
"confirm": {
"title": "Baieztatu aplikazioen bertsio-berritzeak",
"apps": "Bertsio-berrituko diren aplikazioak"
},
"continue": "Jarraitu hurrengo aplikaziora",
"notifs": {
"pre": {
"title": "Kontuz!",
"alert": "Ondorengo oharrak aztertu beharko zenituzke bertsio-berritu baino lehen, litekeena da jakin beharreko zerbait azaltzea."
},
"post": {
"alert": "Badirudi bertsio-berritzea behar bezala joan dela! \n Paketearen arduradunak bertsio-berritze honi buruzko ondorengo jakinarazpenak garrantzitsuak direla deritzo. \nAplikazioaren informazio-orrialdean irakur dezakezu berriro.",
"title": "'{name}' bertsio-berritu ondorengo jakinarazpenak"
}
},
"stop": "Utzi hurrengo aplikazioaren bertsio-berritzea"
},
"uninstall": {
"purge_desc": "Kendu aplikazio honekin lotutako datuen direktorioa (aplikazioa erabiliz igo dituzun datuak izan ohi dira)."
}
}
} }

View file

@ -1,465 +0,0 @@
{
"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": "سیستم YunoHost با خطای اتصال مواجه شده",
"APINotRespondingError": "رابط کاربری سیستم YunoHost پاسخ نمی دهد",
"APINotFoundError": "رابط کاربری سیستم YunoHost نتوانست مسیری را پیدا کند",
"APIInternalError": "سیستم YunoHost با خطای داخلی مواجه شده",
"APIBadRequestError": "سیستم YunoHost با خطا مواجه شده",
"APIError": "سیستم YunoHost با خطای غیر منتظره ای روبرو شده"
},
"form_errors": {
"name": "اسامی نبایدشامل کاراکتر های خاص باشند! بغیر از:<code> ,.'-</code>",
"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} باشد.",
"alphalownumdot_": "مقدار باید فقط حروف کوچک و خط زیرین باشد.",
"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_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_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": "افزودن دامنه",
"dns": "DNS",
"disabled": "غیرفعال شد",
"disable": "غیرفعال",
"run_first_diagnosis": "اجرای عیب یابی اولیه",
"diagnosis_explanation": "ویژگی عیب یابی و تشخیص سعی می کند مسائل رایج در جنبه های مختلف سرور شما را شناسایی کند تا مطمئن شوید همه چیز بدون مشکل اجرا می شود. عیب یابی به طور خودکار دو بار در روز انجام می شود و در صورت وجود مشکل به مدیر سیستم ایمیل ارسال می شود. توجه داشته باشید که اگر نمی خواهید از برخی ویژگی های خاص (به عنوان مثال XMPP) استفاده کنید ، ممکن است برخی از تست ها مرتبط نباشند یا اگر تنظیمات پیچیده ای داشته باشید ممکن است با شکست مواجه شوند. در چنین مواردی ، و اگر می دانید چه می کنید ، اشکالی ندارد که مسائل یا هشدارهای مربوطه را نادیده بگیرید.",
"diagnosis_first_run": "ویژگی عیب یابی سعی می کند مسائل رایج در جنبه های مختلف سرور شما را شناسایی کند تا مطمئن شوید همه چیز بدون مشکل اجرا می شود. لطفاً اگر بلافاصله پس از راه اندازی سرور خطاهای زیادی را مشاهده کردید نگران نشوید : این دقیقاً به منظور کمک به شناسایی و تشخیص مشکلات و راهنمایی شما برای رفع آنها است. همچنین عیب یابی سیستم ، دو بار در روز بطور خودکار انجام می شود و در صورت وجود هرگونه مشکلی، ایمیل و ابلاغ به مدیر سیستم ارسال می شود.",
"diagnosis": "عیب یابی",
"domain_dns_conf_is_just_a_recommendation": "این صفحه پیکربندی * توصیه شده * را به شما نشان می دهد. برای شما سرور نام دامنه را پیکربندی *نمی کند*. این بعهده شماست که مطابق این پیکره بندی توصیه شده ، منطقه سرور نام دامنه خود را در ثبت کننده نام دامنه خود پیکربندی کنید.",
"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_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_choose_category": "یک دسته را انتخاب کنید",
"api_waiting": "در انتظار پاسخ سِرورها…",
"api_not_responding": "رابط کاربری سیستم YunoHost پاسخ نمی دهد، شاید 'yunohost-api' خاموش و یا راه اندازی مجدد شده؟",
"purge_user_data_warning": "پاکسازی داده های کاربر برگشت پذیر نیست. مطمئن باشید که می دانید چه می کنید!",
"purge_user_data_checkbox": "داده های {name} پاک شود؟ (با این کار محتوای فهرست های خانه و ایمیل آن حذف می شود.)",
"certificate": "گواهی نامه",
"certificate_manage": "مدیریت گواهی SSL",
"yes": "بله",
"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",
"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_shutdown_btn": "خاموش شدن",
"tools_shutdown": "سرور خود را خاموش کنید",
"tools_reboot_btn": "راه اندازی مجدد",
"tools_reboot": "راه اندازی مجدد سرور شما",
"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": "{items} با معیارهای شما مطابقت دارد.",
"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}' را به عنوان دامنه پیش فرض تنظیم کنید",
"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}'",
"set_default": "تغییر مسیر ریشه دامنه '{domain}' به '{name}'",
"install": "نصب برنامه '{name}'",
"change_url": "تغییر آدرس دسترسی از '{name}'",
"change_label": "تغییر برچسب از '{prevName}' به '{nextName}'"
}
},
"restart": "راه اندازی مجدد",
"restore": "بازگرداندن",
"rerun_diagnosis": "عیب یابی مجدد",
"readme": "مرا بخوان",
"protocol": "پروتکل",
"previous": "قبلی",
"postinstall_set_domain": "تنظیم دامنه اصلی",
"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": "بعدی",
"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_highquality_explanation": "این برنامه حداقل از یک سال پیش به خوبی با سیستم YunoHost ادغام ویکپارچه شده است.",
"app_state_lowquality_explanation": "این برنامه ممکن است کاربردی باشد ، اما ممکن است همچنان دارای مشکلاتی باشد یا به طور کامل با سیستم YunoHost یکپارچه نشده باشد و یا به شیوه های خوب احترام نمی گذارد.",
"app_state_lowquality": "کیفیّت پایین"
}

View file

@ -1,6 +1,7 @@
{ {
"app_state_inprogress": "ei vielä toimi", "app_state_inprogress": "ei vielä toimi",
"app_show_categories": "Näytä kategoriat", "app_show_categories": "Näytä kategoriat",
"app_no_actions": "Tällä sovelluksella ei ole mitään toimintoja",
"app_make_default": "Laita oletusarvoksi", "app_make_default": "Laita oletusarvoksi",
"app_manage_label_and_tiles": "Hallitse lappuja ja ruutuja", "app_manage_label_and_tiles": "Hallitse lappuja ja ruutuja",
"app_install_parameters": "Asenna asetukset", "app_install_parameters": "Asenna asetukset",
@ -10,8 +11,13 @@
"app_info_changeurl_desc": "Muuta tämän sovelluksen käyttö-URL-osoitetta (verkkotunnus ja/tai polku).", "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_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_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_choose_category": "Valitse kategoria",
"api_waiting": "Odotetaan palvelimen vastausta…", "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_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.", "api_not_found": "Näyttää siltä, että web-järjestelmänvalvoja yritti kysyä jotain, jota ei ole olemassa.",
"all_apps": "Kaikki sovellukset", "all_apps": "Kaikki sovellukset",
@ -38,19 +44,7 @@
"pending": "Käynnissä", "pending": "Käynnissä",
"error": "Epäonnistui" "error": "Epäonnistui"
}, },
"processing": "Palvelin käsittelee toimintoa…", "processing": "Palvelin käsittelee toimintoa."
"partial_logs": "[…](Katso historiasta täydet logit)",
"reconnecting": {
"title": "Yritetään kommunikoida palvelimen kanssa…",
"failed": "Näyttää siltä, että palvelin ei vastaa. Voit yrittää muodostaa yhteyden uudelleen tai yrittää suorittaa `systemctl restart yunohost-api` ssh:n kautta.",
"reason": {
"unknown": "Yhteys palvelimeen on suljettu tuntemattomasta syystä.",
"reboot": "Palvelimesi käynnistyy uudelleen, eikä se ole tavoitettavissa vähään aikaan. Sisäänkirjautumiskehote tulee näkyviin heti, kun palvelin on tavoitettavissa.",
"shutdown": "Palvelimesi on sammumassa eikä ole enää tavoitettavissa. Kytke se takaisin päälle, ja kirjautumiskehote tulee näkyviin heti, kun palvelin on tavoitettavissa.",
"upgrade_system": "Yhteys palvelimeen on suljettu YunoHostin päivityksen vuoksi. Odotamme, että palvelin on jälleen tavoitettavissa…"
},
"success": "Palvelin on nyt tavoitettavissa! Voit yrittää kirjautua sisään"
}
}, },
"all": "Kaikki", "all": "Kaikki",
"administration_password": "Järjestelmänvalvojan salasana", "administration_password": "Järjestelmänvalvojan salasana",
@ -65,459 +59,5 @@
} }
}, },
"add": "Lisää", "add": "Lisää",
"action": "Toiminta", "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": "Aloita varmuuskopio",
"backup": "Varmuuskopio",
"archive_empty": "Tyhjä arkisto",
"applications": "Sovellukset",
"app_state_highquality_explanation": "Tämä sovellus on hyvin integroitu YunoHostin kanssa vähintään vuoden.",
"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_inprogress_explanation": "Sovelluksen ylläpitäjä on sanonut että tämä sovellus ei ole valmis tuotantokäytöön. OLE VAROVAINEN!",
"confirm_group_add_access_permission": "Oletko varma että haluat antaa oikeuden {perm} käyttäjälle {name}? Tällainen pääsy lisää merkittävästi hyökkäysriskiä jos käyttäjä {name} on pahaa tekevä ihminen. Tee tämä vain, jos luotat kyseiseen henkilöön/ryhmään.",
"confirm_install_custom_app": "VAROITUS! Asentamalla kolmannen osapuolen sovelluksia saattaa haitata järjestelmän eheyttä ja turvallisuutta. Sinun EI varmaan kannata asentaa tätä, ellet tiedä mitä teet. Haluatko varmasti ottaa tämän riskin?",
"confirm_install_domain_root": "Oletko varma että haluat asentää tämän sovelluksen osoitteeseen '/'? Sinä et voi asentaa muita sovelluksia domainiin {domain}",
"confirm_app_install": "Oletko varma että haluat asentaa tämän sovelluksen?",
"confirm_install_app_lowquality": "Varoitus: tämä sovellus saattaa toimia mutta se ei ole hyvin integroitu YunoHostin kanssa. Jotkut ominaisuudet kuten kertakirjautuminen ja varmuuskopio/palautus ei ole ehkä saatavilla.",
"confirm_install_app_inprogress": "VAROITUS! Tämä sovellus on vielä kokeellisessa vaiheessa (tai ei vain toimi ollenkaan) ja todennäköisesti rikkoo järjestelmäsi! Sinun EI varmaan kannata asentaa tätä, ellet tiedä mitä teet. Haluatko varmasti ottaa tämän riskin?",
"confirm_migrations_skip": "Siirtojen ohittaminen ei ole suositeltavaa. Oletko varma, että haluat tehdä niin?",
"confirm_postinstall": "Olet aloittamassa asennuksen jälkeistä prosessia domainissa {domain}. Siinä saattaa mennä muutama minuutti, *älä keskeytä toimintaa*.",
"confirm_restore": "Haluatko varmasti palauttaa {name}?",
"confirm_service_restart": "Haluatko varmasti käynnistää uudelleen {name}?",
"confirm_service_start": "Haluatko varmasti käynnistää {name}?",
"confirm_service_stop": "Haluatko varmasti sammuttaa {name}?",
"confirm_uninstall": "Haluatko varmasti poistaa {name}?",
"confirm_update_apps": "Haluatko varmasti päivittää kaikki sovellukset?",
"confirm_update_system": "Haluatko varmasti päivittää kaikki järjestelmäpaketit?",
"confirm_update_specific_app": "Haluatko varmasti päivittää sovelluksen {app}?",
"confirm_upnp_enable": "Haluatko varmasti laittaa UPnP:n päälle?",
"confirm_upnp_disable": "Haluatko varmasti ottaa UPnP:n pois käytöstä?",
"confirm_reboot_action_reboot": "Haluatko varmasti käynnistää palvelimesi uudelleen?",
"confirm_reboot_action_shutdown": "Haluatko varmasti sammuttaa palvelimesi?",
"connection": "Yhteys",
"created_at": "Luotu",
"custom_app_install": "Asenna mukautettu sovellus",
"day_validity": " Vanhentunut | 1 päivä | {count} päivää",
"dead": "Inaktiivinen",
"delete": "Poista",
"description": "Kuvaus",
"details": "Yksityiskohdat",
"domain_dns_conf_is_just_a_recommendation": "Tämä sivu näyttää sinulle *suositellun* kokoonpanon. Se *ei* configuroi DNS:ää sinun puolesta. Se on sinun vastuu configuroida DNS-alue sinun DNS-palvelussa suositellun kokoonpanon mukaisesti.",
"diagnosis": "Diagnoosi",
"form_errors": {
"remote": "{message}",
"alphalownumdot_": "Arvo saa olla vain pieniä aakkosnumeerisia ja alleviivattuja merkkejä.",
"between": "Arvon on oltava {min} ja {max} välillä.",
"domain": "Virheellinen domain nimi: Ainoastaan pienaakkoset aakkosnumeeriset merkit sekä piste- ja viivamerkit",
"notInUsers": "Käyttäjä '{value}' on jo olemassa.",
"number": "Arvon täytyy olla numero.",
"passwordLenght": "Salasana pitää olla ainakin 8 merkkiä pitkä.",
"passwordMatch": "Salasanat eivät täsmää.",
"required": "Kenttä on pakollinen.",
"alpha": "Arvo saa olla vain aakkosellisia merkkejä.",
"emailForward": "Virheellinen sähköpostin välitys-osoite: on oltava aakkosnumeerisia ja ainoastaan <code>_.-</code>-merkkejä (esim. joku+tagi@esimerkki.fi, j0ku-1+tagi@esimerkki.fi)",
"minValue": "Arvon on oltava luku, joka on yhtä suuri tai suurempi kuin {min}.",
"dynDomain": "Virheellinen domain nimi: Ainoastaan pienaakkoset aakkosnumeeriset merkit sekä viivamerkit",
"email": "Virheellinen sähköpostiosoite: on oltava aakkosnumeerisia ja ainoastaan <code>_.-</code>-merkkejä (esim. joku@esimerkki.fi, j0ku-1@esimerkki.fi)",
"name": "Nimet eivät saa sisältää erikoismerkkejä paitsi <code> ,.'-</code>",
"maxValue": "Arvon on oltava luku, joka on yhtä suuri tai pienempi kuin {max}.",
"pattern": "{type}",
"invalid_form": "Lomakkeessa on joitakin virheitä.",
"appRepoUrl": "YunoHost-sovellus repojen URL-osoitteiden odotetaan näyttävän seuraavalta: https://domain.tld/path/to/repo_ynh"
},
"users_import_update_desc": "Jos valitaan, kaikki CSV-tiedoston nykyiset käyttäjät päivitetään uudella arvolla",
"run_first_diagnosis": "Suorita alustava diagnoosi",
"disable": "Poista käytöstä",
"disabled": "Pois käytöstä",
"domain_add": "Lisää domain",
"domain_add_dyndns_forbidden": "Olet jo tilannut DynDNS-verkkotunnuksen, voit pyytää nykyisen DynDNS-verkkotunnuksesi poistamista foorumilla <a href='//forum.yunohost.org/t/nohost-domain-recovery-suppression-de-domaine-en-nohost-me-noho-st-et-ynh-fr/442'>tässä langassa</a>.",
"domain_default_desc": "Oletus domain on se domain johon käyttäjät kirjautuvat.",
"domain_dns_longdesc": "Näytä DNS-konfiguraatio",
"domain_name": "Domain-nimi",
"download": "Lataa",
"enable": "Ota käyttöön",
"enabled": "Käytössä",
"error_modify_something": "Sinun pitäisi muuttaa jotain",
"error_server_unexpected": "Odottamaton palvelimen virhe",
"experimental_warning": "Varoitus: tämä ominaisuus on kokeellinen eikä se ole vakaa, sinun ei kannata käyttää sitä, ellet tiedä mitä teet.",
"firewall": "Palomuuri",
"footer_version": "Powered by - voimanlähteenä <a href='https://yunohost.org'>YunoHost</a> versio {version} ({repo}).",
"footer": {
"documentation": "Dokumentaatio",
"help": "Tarvitsetko apua?",
"donate": "Lahjoita"
},
"next": "Seuraava",
"form_input_example": "Esimerkiksi: {example}",
"from_to": "{0}:stä {1}:een",
"go_back": "Takaisin",
"good_practices_about_user_password": "Olet nyt määrittelemässä uutta käyttäjän salasanaa. Salasanan tulisi olla vähintään 8 merkkiä - on kuitenkin hyvä käytäntö käyttää pidempää salasanaa (tai salalausetta) ja/tai käyttää erilaisia merkkejä (isoja ja pieniä kirjaimia, numeroita ja erikoismerkkejä).",
"group_name": "Ryhmän nimi",
"group_add_permission": "Lisää oikeus",
"group_specific_permissions": "Käyttäjäkohtaiset oikeudet",
"groups_and_permissions": "Ryhmät ja oikeudet",
"groups_and_permissions_manage": "Hallitse ryhmiä ja oikeuksia",
"history": {
"is_empty": "Historiassa ei ole vielä mitään.",
"title": "Historia",
"last_action": "Viimeisin toimenpide:",
"methods": {
"DELETE": "poista",
"GET": "lue",
"POST": "luo/suorita",
"PUT": "muokkaa"
}
},
"home": "Koti",
"hook_adminjs_group_configuration": "Järjestelmäkokoonpanot",
"hook_data_home_desc": "Käyttäjätiedot jotka ovat kansiossa /home/KÄYTTÄJÄ",
"hook_data_mail": "Sähköpostit",
"ignore": "Ignore",
"infos": "Info",
"install": "Asenna",
"install_name": "Asenna {id}",
"installation_complete": "Asennus valmis",
"installed": "Asennettu",
"issues": "{count} ongelmaa",
"items": {
"permissions": "ei oikeuksia | oikeus | {c} oikeutta",
"services": "ei palveluita | palvelu | {c} palvelua",
"apps": "ei sovelluksia | sovellus | {c} apps",
"backups": "ei varmuuskopioita | varmuuskopio | {c} varmuuskopiota",
"domains": "ei domaineja | domain | {c} domainia",
"groups": "ei ryhmiä | ryhmä | {c} ryhmiä",
"installed_apps": "ei asenettuja sovelluksia | asennettu sovellus | {c} asennettua sovellusta",
"logs": "ei logeja | logi | {c} logeja",
"users": "ei käyttäjiä | käyttäjä | {c} käyttäjää"
},
"items_verbose_count": "On olemassa {items}. | On 1 {items}. | On {items}.",
"items_verbose_items_left": "Jäljellä on {items}. | 1 {items} jäljellä. | {items} on jäljellä.",
"label": "Label",
"last_ran": "Viimeksi suoritettu:",
"license": "Lisenssi",
"local_archives": "Paikalliset arkistot",
"mailbox_quota_example": "700M on CD-levyn kokoinen, 4700M on DVD:n",
"mailbox_quota_placeholder": "Aseta arvoksi 0 poistaaksesi käytöstä.",
"manage_apps": "Hallitse sovelluksia",
"manage_domains": "Hallitse domaineja",
"migrations_done": "Edelliset migraatiot",
"migrations_no_pending": "Ei virellä olevia migraatioita",
"migrations_no_done": "Ei edellisiä migraatioita",
"migrations_disclaimer_check_message": "Olen lukenut ja ymmärrän tämän vastuuvapauslausekkeen",
"ok": "OK",
"only_highquality_apps": "Vain laadukkaita sovelluksia",
"only_working_apps": "Vain toimivat sovellukset",
"open": "Avaa",
"operations": "Operaatiot",
"orphaned": "Ei ylläpidetä",
"orphaned_details": "Tätä sovellusta ei ole ylläpidetty pitkään aikaan. Se saattaa vielä toimia, mutta sitä ei päivitetä, ennen kuin joku vapaaehtoinen hoitaa sen. Voit vapaasti osallistua sen elvyttämiseen!",
"others": "Muut",
"password": "Salasana",
"placeholder": {
"username": "mikkomallikas",
"firstname": "Mikko",
"lastname": "Mallikas",
"groupname": "Minun ryhmän nimi",
"file": "Selaa tiedostoja tai raahaa ja pudota se",
"domain": "minun-domain.fi"
},
"logs_suboperations": "Osatoiminnot",
"logs_operation": "YunoHostilla tehdyt operaatiot",
"logs_history": "Järjestelmässä suoritettujen komentojen historia",
"logs_package": "Debian-pakettien hallinnan historia",
"logs_system": "Kernel lokit ja muut matalan tason tapahtumat",
"logs_access": "Luettelo pääsystä ja kielloista",
"logs_service": "Palvelujen lokit",
"logs_app": "Sovelluksien lokit",
"logs_no_logs_registered": "Tähän luokkaan ei ole rekisteröity lokia",
"logs_path": "Polku",
"logs_context": "Konteksti",
"logs_more": "Näytä lisää rivejä",
"permission_show_tile_enabled": "Näkyy laattana käyttäjäportaalissa",
"port": "Portti",
"ports": "Portit",
"postinstall": {
"force": "Pakota post-asennus",
"title": "Post-asennus"
},
"postinstall_domain": "Tämä on ensimmäinen YunoHost-palvelimeesi yhdistetty domain, mutta myös se, jota palvelimesi käyttäjät käyttävät päästäkseen käyttäjäportaaliin. Näin ollen kaikki näkevät sen, joten valitse se huolellisesti.",
"postinstall_intro_1": "Onnitellut! YunoHost on asenettu onnistuneesti.",
"postinstall_intro_2": "Palvelimen palveluiden aktivoiminen edellyttää vielä kahta määritysvaihetta.",
"previous": "Edellinen",
"protocol": "Protokolli",
"readme": "Lue minut",
"human_routes": {
"apps": {
"change_label": "Vaihda label '{prevName}' labeliksi '{nextName}'",
"change_url": "Vaihda '{name}' URL-osoite",
"uninstall": "Poista sovellus '{name}'",
"update_config": "Päivitä sovelluksen '{name}' konfiguraatio",
"install": "Asenna sovellus '{name}'",
"set_default": "Uudelleenohjaa domainin '{domain}' juuri '{name}'"
},
"backups": {
"create": "Luo varmuuskopio",
"delete": "Poista varmuuskopio '{name}'",
"restore": "Palauta varmuuskopio '{name}'"
},
"diagnosis": {
"ignore": {
"error": "Ignooraa virhe",
"warning": "Ignooraa varoitus"
},
"run": "Suorita diagnoosi",
"run_specific": "Suorita '{description}' diagnoosi",
"unignore": {
"error": "Unignooraa virhe",
"warning": "Unignoraa varoitus"
}
},
"domains": {
"push_dns_changes": "Työnnä DNS-tietueet domainille '{name}' rekisterinpitäjälle",
"update_config": "Päivitä '{name}' konfiguraatio",
"add": "Lisää domain '{name}'",
"delete": "Poista domain '{name}'",
"set_default": "Aseta '{name}' oletus domainiksi"
},
"groups": {
"delete": "Poista ryhmä nimeltä '{name}'",
"add": "Lisää käyttäjä '{user}' ryhmään '{name}'",
"create": "Luo ryhmä nimeltä '{name}'",
"remove": "Poista käyttäjä '{user}' ryhmästä '{name}'"
},
"migrations": {
"skip": "Ohita migraatiot",
"run": "Suorita migraatiot"
},
"permissions": {
"add": "Anna käyttäjälle '{name}' oikeus '{perm}'",
"remove": "Poista käyttäjältä '{name}' oikeus '{perm}'"
},
"services": {
"start": "Käynnistä palvelu '{name}'",
"stop": "Pysäytä palvelu '{name}'",
"restart": "Käynnistä palvelu '{name}' uudelleen"
},
"share_logs": "Luo linkki lokille '{name}'",
"shutdown": "Sammuta palvelin",
"update": "Tarkista päivitykset",
"upgrade": {
"system": "Päivitä järjestelmä",
"apps": "Päivitä kaikki sovellukset",
"app": "Päivitä sovellus '{app}'"
},
"users": {
"update": "Päivitä käyttäjä '{name}'",
"create": "Luo käyttäjä '{name}'",
"delete": "Poista käyttäjä '{name}'"
},
"postinstall": "Suorita post-asennus",
"reboot": "Käynnistä palvelin uudelleen",
"firewall": {
"ports": "{action} portti {port} ({protocol}, {connection})",
"upnp": "{action} UPnP"
},
"reconnecting": "Yhdistetään uudelleen"
},
"run": "Suorita",
"running": "Käynnissä",
"select_all": "Valitse kaikki",
"select_none": "Älä valitse mitään",
"service_start_on_boot": "Käynnistä käynnistyksen yhteydessä",
"services": "Palvelut",
"set_default": "Aseta oletukseksi",
"size": "Koko",
"since": "alkaen",
"system_apps_nothing": "Kaikki sovellukset ovat ajan tasalla!",
"system_packages_nothing": "Kaikki järjestelmäpaketit ovat ajan tasalla!",
"system_update": "Järjestelmäpäivitys",
"system_upgrade_btn": "Päivitä",
"system_upgrade_all_applications_btn": "Päivitä kaikki sovellukset",
"system_upgrade_all_packages_btn": "Päivitä kaikki paketit",
"tcp": "TCP",
"tools": "Työkalut",
"tools_shutdown": "Sammuta palvelimesi",
"tools_shutdown_btn": "Sammuta",
"tools_webadmin": {
"language": "Kieli",
"fallback_language": "Varakieli",
"fallback_language_description": "Kieli, jota käytetään, jos käännöstä ei ole saatavilla pääkielellä.",
"experimental": "Kokeellinen tila",
"transitions": "Sivun siirtymisanimaatiot",
"experimental_description": "Antaa sinulle oikeudet kokeellisiin ominaisuuksiin. Näitä pidetään epävakaina ja ne voivat rikkoa järjestelmäsi. <br> Ota tämä käyttöön vain, jos tiedät, mitä olet tekemässä.",
"cache_description": "Harkitse välimuistin poistamista käytöstä, jos aiot työskennellä CLI:llä samalla kun navigoit tässä ylläpidossa.",
"cache": "Välimuisti"
},
"tools_webadmin_settings": "Web-ylläpito asetukset",
"traceback": "Jäljitys",
"udp": "UDP",
"unauthorized": "Luvaton",
"unignore": "Unignooraa",
"uninstall": "Poista asennus",
"unknown": "Tuntematon",
"upnp": "UPnP",
"upnp_enabled": "UPnP on käytössä.",
"url": "URL-osoite",
"user_email": "Sähköposti",
"user_emailaliases": "Sähköposti-aliakset",
"user_emailaliases_add": "Lisää sähköposti-alias",
"user_emailforward": "Postin edelleenlähetys",
"user_emailforward_add": "Lisää postin edelleenlähetys-osoite",
"user_fullname": "Koko nimi",
"user_interface_link": "Käyttöliittymä",
"user_mailbox_quota": "Postilaatikonkiintiö",
"user_mailbox_use": "Postilaatikon käytetty tila",
"user_new_forward": "uusi-eteenpäinosoite@ulkopuolinen-domain.fi",
"user_username": "Käyttäjänimi",
"user_username_edit": "Muokkaa käyttäjän {name} nimeä",
"users": "Käyttäjät",
"users_new": "Uusi käyttäjä",
"warnings": "{count} varoitus(ta)",
"words": {
"collapse": "Lyyhistä",
"default": "Oletus",
"browse": "Selaa"
},
"certificate_manage": "Hallitse SSL-sertifikaattia",
"certificate": "Sertifikaatti",
"purge_user_data_checkbox": "Puhdista käyttäjän {name} tiedot? (Tämä poistaa hänen tiedostot koti ja sähköposti kansioistaan.)",
"purge_user_data_warning": "Käyttäjän datan puhdistamista ei voi perus. Varmista, että tiedät mitä teet!",
"domain": {
"config": {
"edit": "Muokkaa domainin kokoonpanoa",
"title": "Domainin kokoonpano"
},
"dns": {
"auto_config": "Automaattinen DNS-tietueiden määritys",
"auto_config_ignored": "jätetään huomiotta, YunoHost ei muuta niitä, ellet tarkista ylikirjoitusvaihtoehtoa",
"auto_config_ok": "Automaattinen konfigurointi näyttää olevan OK!",
"manual_config": "Ehdotetut DNS-tietueet manuaalista konfigurointia varten",
"push": "Työnnä DNS-tietueet rekisterinpitäjälle",
"push_force": "Ylikirjoita olemassaolevat tietueet",
"push_force_warning": "Näyttää siltä, että jotkut DNS-tietueet, jotka YunoHost olisi asettanut, ovat jo rekisterinpitäjän asetuksissa. Voit käyttää ylikirjoitusvaihtoehtoa, jos tiedät, mitä olet tekemässä.",
"auto_config_zone": "Nykyinen DNS-vyöhyke",
"edit": "Muokkaa DNS-kokoonpanoa",
"info": "Automaattinen DNS-tietueiden määritys on kokeellinen ominaisuus. <br>Harkitse nykyisen DNS-vyöhykkeen tallentamista DNS-rekisteröijän käyttöliittymästä ennen kuin työnnät tietueita täältä.",
"push_force_confirm": "Haluatko varmasti pakottaa kaikki ehdotetut dns-tietueet? Huomaa, että se saattaa korvata manuaalisesti tai tärkeät oletustietueet, jotka sinä tai rekisterinpitäjäsi olet asettanut."
}
},
"domain_delete_forbidden_desc": "Sinä et voi poistaa domainia '{domain}' sillä se on sinun oletus domain, sinun pitää valita toinen domain (tai <a href='#/domains/add'>lisätä uusi</a>) ja asettää tämä oletus domainiksi että voit poistaa tämän.",
"domain_dns_push_managed_in_parent_domain": "Automaattiset DNS-tietueet -ominaisuutta hallitaan ylätason domainissa.<a href='#/domains/{parent_domain}/dns'>{parent_domain}</a>.",
"domains": "Domainit",
"error_connection_interrupted": "Palvelin sulki yhteyden eikä vastannut siihen. Onko nginx tai yunohost-api käynnistetty uudelleen tai sammunut jostain syystä?",
"everything_good": "Kaikki hyvin!",
"experimental": "Kokeellinen",
"group": "Ryhmä",
"group_all_users": "Kaikki käyttäjät",
"group_add_member": "Lisää käyttäjä",
"group_new": "Uusi ryhmä",
"group_explain_all_users": "Tämä on erillinen ryhmä, joka sisältää kaikki palvelimen käyttäjät",
"group_explain_visitors": "Tämä on erillinen ryhmä, joka edustaa anonyymejä vieraita",
"permissions": "Oikeudet",
"hook_data_home": "Käyttäjätiedot",
"hook_data_mail_desc": "Palvelimelle tallennetut raa'at sähköpostit",
"id": "ID",
"ipv6": "IPv6",
"label_for_manifestname": "Label käyttäjälle {name} (nimi näytetään käyttäjäportaalissa)",
"login": "Kirjaudu sisään",
"logout": "Kirjaudu ulos",
"logs": "Lokit",
"logs_error": "Virhe",
"logs_ended_at": "Loppu",
"logs_started_at": "Aloita",
"logs_share_with_yunopaste": "Jaa lokit Yunopastella",
"permission_corresponding_url": "Vastaava URL-osoite",
"rerun_diagnosis": "Suorita diagnoosi uudelleen",
"restore": "Palauta",
"restart": "Käynnistä uudelleen",
"search": {
"not_found": "Kriteerejäsi vastaavia {items} löytyy. | On 1 {items}, joka vastaa kriteerejäsi. | On {items}, jotka vastaavat kriteerejäsi.",
"for": "Etsi {items}…"
},
"skip": "Ohita",
"users_export": "Vie käyttäjiä",
"users_import_csv_file": "CSV-tiedosto",
"yes": "Kyllä",
"group_explain_visitors_needed_for_external_client": "Varo, että sinun on pidettävä jotkin sovellukset sallittuina vierailijoille, jos aiot käyttää niitä ulkoisten sovellusten kanssa. Tämä koskee esimerkiksi Nextcloudia, jos aiot käyttää synkronointisovellusta puhelimessa tai tietokoneessa.",
"migrations_disclaimer_not_checked": "Tämä migraatio vaatii sinua kuittaamaan vastuuvapauslausekkeen ennen sen aloittamista.",
"dns": "DNS",
"domain_default_longdesc": "Tämä on sinun oletus domain.",
"domain_delete_longdesc": "Poista tämä domain",
"domain_dns_config": "DNS-konfiguraatio",
"error": "Virhe",
"good_practices_about_admin_password": "Olet nyt määrittelemässä uutta järjestelmänvalvojan salasanaa. Salasanan tulisi olla vähintään 8 merkkiä - on kuitenkin hyvä käytäntö käyttää pidempää salasanaa (tai salalausetta) ja/tai käyttää erilaisia merkkejä (isoja ja pieniä kirjaimia, numeroita ja erikoismerkkejä).",
"group_visitors": "Vieraat",
"group_format_name_help": "Voit käyttää aakkosnumeerisia merkkejä ja alleviivausmerkkejä",
"hook_data_xmpp": "XMPP-data",
"hook_data_xmpp_desc": "Huone- ja käyttäjäkonfiguraatiot, ladatut tiedostot",
"ignored": "{count} ignoorattu",
"install_time": "Asennusaika",
"ipv4": "IPv4",
"users_no": "Ei käyttäjiä.",
"users_import_update": "Päivitä olemassaolevat käyttäjät",
"users_import_delete": "Posta luetteloon kuulumattomat käyttäjät",
"users_import_delete_desc": "Jos valittuna, kaikki olemassa olevat käyttäjät, joita ei ole CSV-tiedostossa, poistetaan (ja puhdistetaan).",
"users_import_confirm_destructive": "Oletko varma että haluat poistaa käyttäjiä jotka eivät ole tässä tiedostossa?",
"users_import_delete_others": "Poisti luetteloon kuulumattomat käyttäjät",
"version": "Versio",
"yunohost_admin": "YunoHostin ylläpitö",
"hook_conf_ldap": "Käyttäjätietokanta",
"hook_conf_ynh_certs": "SSL-sertifikaatit",
"hook_conf_ynh_settings": "YunoHost konfiguraatiot",
"hook_conf_manually_modified_files": "Manuaalisesti muokatut konfiguraatiot",
"mailbox_quota_description": "Aseta sähköpostin sisällön tallennuskokorajoitus.<br>Poista käytöstä asettamalla arvoksi 0.",
"manage_users": "Hallitse käyttäjiä",
"migrations": "Migraatiot",
"migrations_pending": "Virellä olevat migraatiot",
"multi_instance": "Voidaan asentaa monta kertaa",
"no": "Ei",
"nobody": "Ei kukaan",
"only_decent_quality_apps": "Vain kohtuullisen laadukkaat sovellukset",
"password_confirmation": "Salasanan vahvistus",
"path": "Polku",
"perform": "Suorita",
"pending_migrations": "Joitakin migraatioita on vireillä ja ne odottavat suorittamista. Siirry <a href='#/tools/migrations'>Tools > Migraatiot</a> -näkymään suorittaaksesi ne.",
"permission_main": "Päälabel",
"postinstall_set_domain": "Aseta pää-domain",
"save": "Tallenna",
"start": "Aloita",
"status": "Tila",
"stop": "Lopeta",
"system": "Järjestelmä",
"tip_about_user_email": "Käyttäjille luodaan sähköpostiosoite (ja XMPP-tili) muodossa käyttäjänimi@domain.tld. Ylläpitäjä ja käyttäjä voivat myöhemmin lisätä lisää sähköpostialiaksia ja sähköpostin edelleenlähetyksiä.",
"tools_reboot": "Käynnistä palvelimesi uudelleen",
"tools_shutdown_reboot": "Sammuta/Käynnistä uudelleen",
"upnp_disabled": "UPnP on pois käytöstä.",
"text_selection_is_disabled": "Tekstin valinta on pois käytöstä. Jos haluat jakaa tämän loki, Jaa *koko* loki painamalla 'Jaa loki Yunopastella'.<br/><small>Tai jos todella haluat valita tekstiä, paina näitä näppäimiä ↓↓↑↑.</small>",
"tools_reboot_btn": "Käynnistä uudelleen",
"users_import": "Tuo käyttäjiä",
"diagnosis_first_run": "Diagnoositoiminto pyrkii tunnistamaan palvelimesi eri osa-alueiden yleiset ongelmat ja varmistamaan, että kaikki toimii moitteettomasti. Älä hätäänny, jos näet paljon virheitä heti palvelimesi perustamisen jälkeen: sen tarkoituksena on nimenomaan auttaa sinua tunnistamaan ongelmat ja opastaa sinua niiden korjaamisessa. Diagnoosi suoritetaan myös automaattisesti kahdesti päivässä, ja ylläpitäjälle lähetetään sähköpostia, jos ongelmia löytyy.",
"diagnosis_explanation": "Diagnoositoiminto pyrkii tunnistamaan palvelimesi eri osa-alueiden yleiset ongelmat ja varmistamaan, että kaikki toimii moitteettomasti. Diagnoosi suoritetaan automaattisesti kahdesti päivässä, ja ylläpitäjälle lähetetään sähköpostiviesti, jos ongelmia havaitaan. Huomaa, että jotkin testit eivät ehkä ole relevantteja, jos et halua käyttää tiettyjä ominaisuuksia (esimerkiksi XMPP), tai ne voivat epäonnistua, jos palvelimesi on monimutkainen. Tällaisissa tapauksissa ja jos tiedät, mitä olet tekemässä, voit jättää vastaavat ongelmat tai varoitukset huomioimatta.",
"domain_dns_push_failed_to_authenticate": "Rekisterinpitäjän API:n todennus epäonnistui. Todennäköisesti <a href='#/domains/{domain}/config'>tunnukset</a> ovat väärin? (Virhe:{error})",
"domain_dns_push_not_applicable": "Automaattiset DNS-tietueet -ominaisuus ei koske domainia {domain}, <br>Sinun kannattaa manuaalisesti konfiguroida DNS-tietueet seuraamalla <a href='https://yunohost.org/dns'>dokumentaatiota</a> ja alla olevaa ehdotettua kokoonpanoa.",
"operation_failed_explanation": "Tämä operaatio epäonnistui! Olen todella pahoillani tästä :( Voit yrittää <a href='https://yunohost.org/help'>pyytää apua</a>. Toimita *täydellinen loki* operaatiosta sinua auttaville henkilöille. Voit tehdä sen klikkaamalla vihreää painiketta 'Jaa lokit Yunopastella'. Kun jaat lokit, YunoHost yrittää automaattisesti anonymisoida yksityiset tiedot, kuten domainit ja IP-osoitteet.",
"postinstall_intro_3": "Saat lisätietoja vierailemalla <a href='//yunohost.org/en/install/hardware:vps_debian#fa-cog-proceed-with-the-initial-configuration' target='_blank'>asianmukaisella dokumentointisivulla</a>",
"users_import_csv_file_desc": "CSV-tiedoston on oltava UTF-8-muodossa, ja siinä on oltava sarakkeet käyttäjätunnukselle, salasanalle, ryhmille, sähköpostille ja kiintiölle. Esimerkki CSV-tuontitiedostosta löydät <a href='/yunohost/api/users/export' target='_BLANK'>täältä</a> ja voit muuttaa esimerkki-tiedostoon omat tiedot.",
"retry": "Yritä uudelleen"
} }

View file

@ -2,48 +2,57 @@
"action": "Action", "action": "Action",
"add": "Ajouter", "add": "Ajouter",
"administration_password": "Mot de passe d'administration", "administration_password": "Mot de passe d'administration",
"api_not_responding": "L'API YunoHost ne répond pas. Peut-être que 'yunohost-api' est en panne ou a été redémarré?", "api_not_responding": "L'API YunoHost ne répond pas. Peut-être que 'yunohost-api' est en panne ou a été redémarré ?",
"app_info_access_desc": "Groupes / comptes actuellement autorisés à accéder à cette application:", "app_info_access_desc": "Groupes / utilisateurs actuellement autorisés à accéder à cette application :",
"app_info_default_desc": "Redirige la racine du domaine vers cette application ({domain}).", "app_info_default_desc": "Redirige la racine du domaine vers cette application ({domain}).",
"app_info_uninstall_desc": "Supprimer cette application.", "app_info_uninstall_desc": "Supprimer cette application.",
"app_install_custom_no_manifest": "Aucun fichier manifest.json", "app_install_custom_no_manifest": "Aucun fichier manifest.json",
"app_install_parameters": "Paramètres d'installation", "app_install_parameters": "Paramètres d'installation",
"app_make_default": "Définir par défaut", "app_make_default": "Définir par défaut",
"app_state_inprogress": "ne fonctionne pas encore", "app_state_inprogress": "ne fonctionne pas encore",
"app_state_notworking": "Non fonctionnelle",
"app_state_working": "fonctionnelle",
"applications": "Applications", "applications": "Applications",
"archive_empty": "Larchive est vide", "archive_empty": "Larchive est vide",
"backup": "Sauvegardes", "backup": "Sauvegarde",
"backup_action": "Sauvegarder", "backup_action": "Sauvegarder",
"backup_content": "Contenu de la sauvegarde", "backup_content": "Contenu de la sauvegarde",
"backup_create": "Créer une sauvegarde", "backup_create": "Créer une sauvegarde",
"backup_new": "Nouvelle sauvegarde", "backup_new": "Nouvelle sauvegarde",
"begin": "C'est parti!", "begin": "C'est parti !",
"both": "Les deux", "both": "Les deux",
"check": "Vérification", "check": "Vérification",
"close": "Fermer", "close": "Fermer",
"confirm_app_default": "Voulez-vous vraiment définir cette application par défaut?", "confirm_app_default": "Voulez-vous vraiment définir cette application par défaut ?",
"confirm_change_maindomain": "Voulez-vous vraiment changer le domaine principal?", "confirm_change_maindomain": "Voulez-vous vraiment changer le domaine principal ?",
"confirm_delete": "Voulez-vous vraiment supprimer {name}?", "confirm_delete": "Voulez-vous vraiment supprimer {name} ?",
"confirm_install_custom_app": "AVERTISSEMENT! L'installation d'applications tierces peut compromettre l'intégrité et la sécurité de 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?", "confirm_install_custom_app": "ATTENTION ! Linstallation dapplications tierces peut compromettre lintégrité et la sécurité de votre système. Vous ne devriez probablement PAS linstaller si vous ne savez pas ce que vous faites. Prenez-vous ce risque ?",
"confirm_install_domain_root": "Voulez-vous vraiment installer cette application sur '/'? Vous ne pourrez installer aucune autre application sur {domain}", "confirm_install_domain_root": "Êtes-vous sûr de vouloir installer cette application sur '/'? Vous ne pourrez installer aucune autre application sur {domain}",
"confirm_postinstall": "Vous êtes sur le point de lancer le processus de post-installation sur le domaine {domain}. Cela peut prendre du temps, *n'interrompez pas l'opération avant la fin*.", "confirm_postinstall": "Vous êtes sur le point de lancer le processus de post-installation sur le domaine {domain}. Cela peut prendre du temps, *n'interrompez pas l'opération avant la fin*.",
"confirm_restore": "Voulez-vous vraiment restaurer {name}?", "confirm_restore": "Voulez-vous vraiment restaurer {name} ?",
"confirm_uninstall": "Voulez-vous vraiment désinstaller {name}?", "confirm_uninstall": "Voulez-vous vraiment désinstaller {name} ?",
"connection": "Connexion", "connection": "Connexion",
"created_at": "Crée le", "created_at": "Crée le",
"custom_app_install": "Installer une application personnalisée", "custom_app_install": "Installer une application personnalisée",
"custom_app_url_only_github": "Uniquement depuis GitHub pour linstant",
"delete": "Supprimer", "delete": "Supprimer",
"description": "Description", "description": "Description",
"diagnosis": "Diagnostic", "diagnosis": "Diagnostic",
"disable": "Désactiver", "disable": "Désactiver",
"dns": "DNS", "dns": "DNS",
"domain_add": "Ajouter un domaine", "domain_add": "Ajouter un domaine",
"domain_default_desc": "Le domaine par défaut est le domaine à partir duquel les personnes doivent se connecter.", "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_default_desc": "Les utilisateurs se connecteront au domaine par défaut.",
"domain_default_longdesc": "Ceci est votre domaine par défaut.", "domain_default_longdesc": "Ceci est votre domaine par défaut.",
"domain_delete_longdesc": "Supprimer ce domaine", "domain_delete_longdesc": "Supprimer ce domaine",
"domain_dns_config": "Configuration DNS", "domain_dns_config": "Configuration DNS",
"domain_dns_longdesc": "Voir la configuration DNS", "domain_dns_longdesc": "Voir la configuration DNS",
"domain_name": "Nom de domaine", "domain_name": "Nom de domaine",
"domain_visit": "Visiter",
"domain_visit_url": "Visiter {url}",
"domains": "Domaines", "domains": "Domaines",
"download": "Télécharger", "download": "Télécharger",
"enable": "Activer", "enable": "Activer",
@ -52,16 +61,16 @@
"firewall": "Pare-feu", "firewall": "Pare-feu",
"home": "Accueil", "home": "Accueil",
"hook_adminjs_group_configuration": "Configurations système", "hook_adminjs_group_configuration": "Configurations système",
"hook_conf_ldap": "Annuaire des comptes", "hook_conf_ldap": "Annuaire des utilisateurs",
"hook_conf_ynh_certs": "Certificats SSL", "hook_conf_ynh_certs": "Certificats SSL",
"hook_conf_ynh_settings": "Configurations de YunoHost", "hook_conf_ynh_settings": "Configurations de YunoHost",
"hook_conf_manually_modified_files": "Fichiers de configuration modifiés manuellement", "hook_conf_manually_modified_files": "Fichiers de configuration modifiés manuellement",
"hook_data_home": "Données des comptes", "hook_data_home": "Données des utilisateurs",
"hook_data_home_desc": "Données comptes situées dans /home/USER", "hook_data_home_desc": "Données utilisateurs situées dans /home/USER",
"hook_data_mail": "Courriels", "hook_data_mail": "Courriels",
"hook_data_mail_desc": "Courriels (au format brut) stockés sur le serveur", "hook_data_mail_desc": "Courriels (au format brut) stockés sur le serveur",
"hook_data_xmpp": "Données XMPP", "hook_data_xmpp": "Données XMPP",
"hook_data_xmpp_desc": "Configurations des salons et des comptes, fichiers téléversés", "hook_data_xmpp_desc": "Configurations des salons et des utilisateurs, fichiers téléversés",
"id": "ID", "id": "ID",
"infos": "Info", "infos": "Info",
"install": "Installer", "install": "Installer",
@ -80,8 +89,9 @@
"mailbox_quota_placeholder": "Laissez vide ou à zéro pour désactiver.", "mailbox_quota_placeholder": "Laissez vide ou à zéro pour désactiver.",
"manage_apps": "Gérer les applications", "manage_apps": "Gérer les applications",
"manage_domains": "Gérer les domaines", "manage_domains": "Gérer les domaines",
"manage_users": "Gérer les comptes", "manage_users": "Gérer les utilisateurs",
"multi_instance": "Peut être installée plusieurs fois", "multi_instance": "Peut être installée plusieurs fois",
"myserver": "monserveur",
"next": "Suivant", "next": "Suivant",
"no": "Non", "no": "Non",
"open": "Ouvrir", "open": "Ouvrir",
@ -91,10 +101,11 @@
"path": "Chemin", "path": "Chemin",
"port": "Port", "port": "Port",
"ports": "Ports", "ports": "Ports",
"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 tout le monde, 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_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_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' target='_blank'>la page de documentation appropriée</a>", "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", "previous": "Précédent",
"protocol": "Protocole", "protocol": "Protocole",
"restore": "Restaurer", "restore": "Restaurer",
@ -102,7 +113,7 @@
"save": "Sauvegarder", "save": "Sauvegarder",
"select_all": "Tout sélectionner", "select_all": "Tout sélectionner",
"select_none": "Tout désélectionner", "select_none": "Tout désélectionner",
"service_start_on_boot": "Lancement au démarrage", "service_start_on_boot": "Lancement au démarrage :",
"services": "Services", "services": "Services",
"set_default": "Définir par défaut", "set_default": "Définir par défaut",
"size": "Taille", "size": "Taille",
@ -110,12 +121,15 @@
"status": "Statut", "status": "Statut",
"stop": "Arrêter", "stop": "Arrêter",
"system": "Système", "system": "Système",
"system_apps_nothing": "Toutes les applications sont à jour!", "system_apps_nothing": "Toutes les applications sont à jour !",
"system_packages_nothing": "Tous les packages système sont à jour!", "system_packages_nothing": "Tous les packages système sont à jour !",
"system_update": "Mise à jour du système", "system_update": "Mettre à jour le système",
"system_upgrade_btn": "Mettre à jour", "system_upgrade_btn": "Mettre à jour",
"tcp": "TCP", "tcp": "TCP",
"tools": "Outils", "tools": "Outils",
"tools_adminpw": "Changer le mot de passe d'administration",
"tools_adminpw_current": "Mot de passe actuel",
"tools_adminpw_current_placeholder": "Entrez le mot de passe actuel",
"udp": "UDP", "udp": "UDP",
"unauthorized": "Non autorisé", "unauthorized": "Non autorisé",
"uninstall": "Désinstaller", "uninstall": "Désinstaller",
@ -127,43 +141,72 @@
"user_emailaliases": "Alias de courriel", "user_emailaliases": "Alias de courriel",
"user_emailforward": "Adresses de transfert", "user_emailforward": "Adresses de transfert",
"user_fullname": "Nom complet", "user_fullname": "Nom complet",
"user_interface_link": "Portail", "user_interface_link": "Interface utilisateur",
"user_mailbox_quota": "Quota de la boite aux lettres", "user_mailbox_quota": "Quota de la boite aux lettres",
"user_new_forward": "nouveau_transfert@domainedistant.org", "user_new_forward": "nouveau_transfert@domainedistant.org",
"user_username": "Nom de compte", "user_username": "Nom d'utilisateur",
"user_username_edit": "Éditer le compte de {name}", "user_username_edit": "Éditer le compte de {name}",
"users": "Comptes", "users": "Utilisateurs",
"users_new": "Nouveau compte", "users_new": "Nouvel utilisateur",
"users_no": "Aucun compte.", "users_no": "Aucun utilisateur.",
"wrong_password": "Mot de passe incorrect",
"yes": "Oui", "yes": "Oui",
"form_input_example": "Exemple: {example}", "form_input_example": "Exemple : {example}",
"footer_version": "Propulsé par <a href='https://yunohost.org'>YunoHost</a> {version} ({repo}).", "footer_version": "Propulsé par <a href='https://yunohost.org'>YunoHost</a> {version} ({repo}).",
"certificate_alert_not_valid": "CRITIQUE : Le certificat actuel est invalide ! HTTPS ne fonctionnera pas du tout !",
"certificate_alert_selfsigned": "AVERTISSEMENT : Le certificat actuel est auto-signé. Les navigateurs afficheront un avertissement effrayant pour les nouveaux visiteurs !",
"certificate_alert_letsencrypt_about_to_expire": "Le certificat actuel est sur le point dexpirer. Il devrait bientôt être renouvelé automatiquement.",
"certificate_alert_about_to_expire": "AVERTISSEMENT : le certificat actuel est sur le point dexpirer ! Il ne sera PAS renouvelé automatiquement !",
"certificate_alert_good": "Bien, le certificat actuel a lair correct !",
"certificate_alert_great": "Parfait ! Vous utilisez un certificat Lets Encrypt valide !",
"certificate_alert_unknown": "Statut inconnu",
"certificate_manage": "Gérer les certificats SSL", "certificate_manage": "Gérer les certificats SSL",
"ssl_certificate": "Certificat SSL",
"confirm_cert_install_LE": "Voulez-vous vraiment installer un certificat Lets Encrypt pour ce domaine ?",
"confirm_cert_regen_selfsigned": "Voulez-vous vraiment régénérer un certificat auto-signé pour ce domaine ?",
"confirm_cert_manual_renew_LE": "Voulez-vous vraiment renouveler manuellement le certificat Lets Encrypt pour ce domaine maintenant ?",
"confirm_cert_revert_to_selfsigned": "Voulez-vous vraiment revenir à un certificat auto-signé pour ce domaine ?",
"certificate": "Certificat", "certificate": "Certificat",
"certificate_status": "Statut du certificat",
"certificate_authority": "Autorité de certification",
"validity": "Validité",
"domain_is_eligible_for_ACME": "Ce domaine semble correctement configuré pour installer un certificat Lets Encrypt !",
"domain_not_eligible_for_ACME": "Ce domaine ne semble pas prêt pour installer un certificat Lets Encrypt. Veuillez vérifier votre configuration DNS et laccessibilité HTTP de votre serveur. Les sections 'enregistrement DNS' et 'Web' dans <a href='#/diagnosis'>la page de diagnostic</a> peuvent vous aider à comprendre ce qui est mal configuré.",
"install_letsencrypt_cert": "Installer un certificat Lets Encrypt",
"manually_renew_letsencrypt_message": "Le certificat sera renouvelé automatiquement durant les 15 derniers jours de sa validité. Vous pouvez le renouveler manuellement si vous le souhaitez (non recommandé).",
"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": "Retourner à un certificat auto-signé",
"user_mailbox_use": "Espace utilisé de la boite aux lettres", "user_mailbox_use": "Espace utilisé de la boite aux lettres",
"confirm_firewall_allow": "Voulez-vous vraiment ouvrir 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": "Voulez-vous vraiment fermer 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_start": "Voulez-vous vraiment démarrer {name} ?",
"confirm_service_stop": "Voulez-vous vraiment arrêter {name}?", "confirm_service_stop": "Voulez-vous vraiment arrêter {name} ?",
"confirm_update_apps": "Voulez-vous vraiment mettre à jour toutes les applications?", "confirm_update_apps": "Voulez-vous vraiment mettre à jour toutes les applications ?",
"confirm_upnp_enable": "Voulez-vous vraiment activer l'UPnP?", "confirm_upnp_enable": "Voulez-vous vraiment activer l'UPnP ?",
"confirm_upnp_disable": "Voulez-vous vraiment désactiver l'UPnP?", "confirm_upnp_disable": "Voulez-vous vraiment désactiver l'UPnP ?",
"domain_dns_conf_is_just_a_recommendation": "Cette section montre la configuration *recommandée*. Elle ne configure *pas* le DNS pour vous. Il est de votre responsabilité de configurer votre zone DNS, généralement depuis l'interface web de votre fournisseur de nom de domaine (registrar) en fonction de cette configurer recommandée.", "domain_dns_conf_is_just_a_recommendation": "Cette page montre la configuration *recommandée*. Elle ne configure *pas* le DNS pour vous. Il est de votre responsabilité de configurer votre zone DNS chez votre bureau denregistrement DNS (registrar) en fonction de cette recommandation.",
"confirm_reboot_action_reboot": "Voulez-vous vraiment redémarrer votre serveur?", "confirm_reboot_action_reboot": "Êtes vous sûr de vouloir redémarrer votre serveur ?",
"confirm_reboot_action_shutdown": "Voulez-vous vraiment éteindre votre serveur?", "confirm_reboot_action_shutdown": "Êtes vous sûr de vouloir éteindre votre serveur ?",
"confirm_update_specific_app": "Voulez-vous vraiment mettre à jour {app}?", "confirm_update_specific_app": "Êtes vous sûr de vouloir mettre à jour {app} ?",
"ok": "OK", "ok": "OK",
"system_upgrade_all_applications_btn": "Mettre à jour toutes les applications", "system_upgrade_all_applications_btn": "Mettre à jour toutes les applications",
"system_upgrade_all_packages_btn": "Mettre à jour tous les paquets", "system_upgrade_all_packages_btn": "Mettre à jour tous les paquets",
"tools_reboot": "Redémarrer votre serveur", "tools_reboot": "Redémarrer votre serveur",
"tools_reboot_btn": "Redémarrer", "tools_reboot_btn": "Redémarrer",
"tools_reboot_done": "Redémarrage…",
"tools_rebooting": "Votre serveur redémarre. Pour retourner sur linterface d'administration vous devez attendre que votre serveur soit démarré. Vous pouvez attendre que le formulaire de connexion apparaisse ou vous pouvez actualiser cette page (F5).",
"tools_shutdown": "Éteindre votre serveur", "tools_shutdown": "Éteindre votre serveur",
"tools_shutdown_btn": "Éteindre", "tools_shutdown_btn": "Éteindre",
"tools_shutdown_done": "Extinction…",
"tools_shuttingdown": "Votre serveur est en train de sarrêter. Tant quil restera éteint vous ne pourrez plus utiliser linterface d'administration.",
"tools_shutdown_reboot": "Arrêter/Redémarrer", "tools_shutdown_reboot": "Arrêter/Redémarrer",
"app_info_changeurl_desc": "Modifier lURL daccès de cette application (domaine et/ou chemin).", "app_info_changeurl_desc": "Modifier lURL daccès de cette application (domaine et/ou chemin).",
"app_info_change_url_disabled_tooltip": "Cette fonctionnalité na pas encore été implémentée pour cette application", "app_info_change_url_disabled_tooltip": "Cette fonctionnalité na pas encore été implémentée pour cette application",
"confirm_app_change_url": "Voulez-vous vraiment modifier lURL daccès de cette application?", "confirm_app_change_url": "Voulez-vous vraiment modifier lURL daccès de cette application ?",
"confirm_migrations_skip": "Ne pas appliquer les migrations nest pas recommandé. Voulez-vous vraiment le faire?", "confirm_migrations_skip": "Ne pas appliquer les migrations nest pas recommandé. Voulez-vous vraiment le faire ?",
"migrations": "Migrations", "migrations": "Migrations",
"migrations_pending": "Migrations en attente", "migrations_pending": "Migrations en attente",
"migrations_done": "Migrations précédentes", "migrations_done": "Migrations précédentes",
@ -172,12 +215,13 @@
"run": "Exécuter", "run": "Exécuter",
"skip": "Passer", "skip": "Passer",
"all_apps": "Toutes les applications", "all_apps": "Toutes les applications",
"confirm_install_app_lowquality": "Avertissement: cette application peut fonctionner mais nest pas bien intégrée dans YunoHost. Certaines fonctionnalités telles que lauthentification unique et la sauvegarde/restauration pourraient ne pas être disponibles.", "app_no_actions": "Cette application ne possède aucune action",
"confirm_install_app_inprogress": "AVERTISSEMENT! Cette application est encore expérimentale et risque de casser votre système! Vous ne devriez probablement PAS linstaller si vous ne savez pas ce que vous faites. Voulez-vous vraiment prendre ce risque?", "confirm_install_app_lowquality": "Avertissement : cette application peut fonctionner mais nest pas bien intégrée dans YunoHost. Certaines fonctionnalités telles que lauthentification unique et la sauvegarde/restauration pourraient ne pas être disponibles.",
"error_connection_interrupted": "Le serveur a fermé la connexion au lieu dy répondre. Est-ce que NGINX ou yunohost-api ont été redémarrés ou arrêtés pour une raison quelconque?", "confirm_install_app_inprogress": "AVERTISSEMENT ! Cette application est encore expérimentale et risque de casser votre système ! Vous ne devriez probablement PAS linstaller si vous ne savez pas ce que vous faites. Voulez-vous vraiment prendre ce risque ?",
"experimental_warning": "Attention: cette fonctionnalité est expérimentale et ne doit pas être considérée comme stable, vous ne devriez pas lutiliser à moins que vous ne sachiez ce que vous faites.", "error_connection_interrupted": "Le serveur a fermé la connexion au lieu dy répondre. Est-ce que NGINX ou yunohost-api ont été redémarrés ou arrêtés pour une raison quelconque ?",
"good_practices_about_admin_password": "Vous êtes sur le point de définir un nouveau mot de passe de compte d'administration. 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 une combinaison de caractères (majuscules, minuscules, chiffres et caractères spéciaux).", "experimental_warning": "Attention : cette fonctionnalité est expérimentale et ne doit pas être considérée comme stable, vous ne devriez pas lutiliser à moins que vous ne sachiez ce que vous faites...",
"good_practices_about_user_password": "Vous êtes sur le point de définir un nouveau mot de passe. 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 une combinaison de caractères (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 quil soit recommandé dutiliser un mot de passe plus long (cest-à-dire une phrase secrète) et/ou dutiliser différents types de caractères tels que : majuscules, minuscules, chiffres et caractères spéciaux.",
"only_working_apps": "Applications fonctionnelles uniquement", "only_working_apps": "Applications fonctionnelles uniquement",
"logs": "Journaux", "logs": "Journaux",
"logs_operation": "Opérations effectuées sur le système avec YunoHost", "logs_operation": "Opérations effectuées sur le système avec YunoHost",
@ -195,49 +239,50 @@
"logs_context": "Contexte", "logs_context": "Contexte",
"logs_share_with_yunopaste": "Partager les logs avec YunoPaste", "logs_share_with_yunopaste": "Partager les logs avec YunoPaste",
"logs_more": "Afficher plus de lignes", "logs_more": "Afficher plus de lignes",
"purge_user_data_checkbox": "Purger les données du compte {name}? (Cela supprimera ses e-mails et le contenu de son dossier personnel)", "unmaintained": "Non maintenue",
"purge_user_data_warning": "La purge des données de compte est irréversible. Assurez-vous de savoir ce que vous faites!", "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 lutilisateur nest pas réversible. Assurez-vous de savoir ce que vous faites !",
"version": "Version", "version": "Version",
"confirm_update_system": "Voulez-vous vraiment mettre à jour tous les paquets système?", "confirm_update_system": "Voulez-vous vraiment mettre à jour tous les paquets système ?",
"app_state_inprogress_explanation": "Le mainteneur de cette application a déclaré que celle-ci n'est pas prête pour un environnement de production. FAITES PREUVE DE PRUDENCE!", "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_highquality": "bonne qualité",
"app_state_highquality_explanation": "Cette application est bien intégrée à YunoHost depuis au moins un an.", "app_state_highquality_explanation": "Cette application est bien intégrée à YunoHost depuis au moins un an.",
"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.",
"hook_conf_ynh_currenthost": "Domaine principal actuellement utilisé",
"license": "Licence", "license": "Licence",
"only_highquality_apps": "Seulement les applications de bonne qualité", "only_highquality_apps": "Seulement les applications de bonne qualité",
"only_decent_quality_apps": "Seulement les applications d'une qualité satisfaisante", "only_decent_quality_apps": "Seulement les applications d'une qualité satisfaisante",
"orphaned": "Non maintenue", "orphaned": "Non maintenue",
"orphaned_details": "Cette application n'a pas été maintenue depuis un certain temps. Elle peut encore fonctionner, mais ne recevra aucune mise à niveau jusqu'à ce que quelqu'un se porte volontaire pour s'en occuper. N'hésitez pas à contribuer à la faire revivre!", "orphaned_details": "Cette application n'a pas été maintenue depuis un certain temps. Il peut encore fonctionner, mais ne recevra aucune mise à niveau jusqu'à ce que quelqu'un se porte volontaire pour s'en occuper. N'hésitez pas à contribuer à la faire revivre !",
"from_to": "de {0} à {1}", "from_to": "de {0} à {1}",
"group_name": "Nom du groupe", "group_name": "Nom du groupe",
"nobody": "Personne", "nobody": "Personne",
"group": "Groupe", "group": "Groupe",
"group_all_users": "Tous les comptes", "group_all_users": "Tous les utilisateurs",
"group_visitors": "Visiteurs", "group_visitors": "Visiteurs",
"group_format_name_help": "Vous pouvez utiliser des caractères alphanumériques et des tirets bas", "group_format_name_help": "Vous pouvez utiliser des caractères alphanumériques et des tirets bas",
"group_add_member": "Ajouter un compte", "group_add_member": "Ajouter un utilisateur",
"group_add_permission": "Ajouter une permission", "group_add_permission": "Ajouter une permission",
"group_new": "Nouveau groupe", "group_new": "Nouveau groupe",
"group_explain_all_users": "Ceci est un groupe spécial contenant tous les comptes des personnes inscrites sur le serveur", "group_explain_all_users": "Ceci est un groupe spécial contenant tous les comptes d'utilisateurs sur le serveur",
"group_explain_visitors": "Ceci est un groupe spécial représentant les visiteurs anonymes", "group_explain_visitors": "Ceci est un groupe spécial représentant les visiteurs anonymes",
"group_specific_permissions": "Autorisations pour des comptes individuels", "group_specific_permissions": "Autorisations spécifiques à l'utilisateur",
"groups_and_permissions": "Groupes et autorisations", "groups_and_permissions": "Groupes et autorisations",
"groups_and_permissions_manage": "Gérer les groupes et les autorisations", "groups_and_permissions_manage": "Gérer les groupes et les autorisations",
"permissions": "Permissions", "permissions": "Permissions",
"rerun_diagnosis": "Relancer le diagnostic", "rerun_diagnosis": "Relancer le diagnostic",
"details": "Détails", "details": "Détails",
"everything_good": "Tout est OK!", "diagnosis_experimental_disclaimer": "Sachez que la fonction de diagnostic est encore expérimentale et en cours de perfectionnement et quelle nest peut-être pas totalement fiable.",
"everything_good": "Tout va bien !",
"ignore": "Ignore", "ignore": "Ignore",
"ignored": "{count} ignoré", "ignored": "{count} ignoré",
"last_ran": "Dernière exécution:", "last_ran": "Dernière exécution :",
"unignore": "Cesser d'ignorer", "unignore": "Cesser d'ignorer",
"warnings": "{count} avertissements", "warnings": "{count} avertissements",
"words": { "words": {
"default": "Défaut", "default": "Défaut",
"collapse": "Replier", "collapse": "Replier"
"browse": "Parcourir",
"link": "Lien",
"none": "Aucun",
"separator": ", ",
"valid": "Valide"
}, },
"configuration": "Configuration", "configuration": "Configuration",
"since": "depuis", "since": "depuis",
@ -246,18 +291,19 @@
"app_state_lowquality_explanation": "Cette application peut être fonctionnelle, mais peut toujours contenir des problèmes, ou n'est pas entièrement intégrée à YunoHost, ou elle ne respecte pas les bonnes pratiques.", "app_state_lowquality_explanation": "Cette application peut être fonctionnelle, mais peut toujours contenir des problèmes, ou n'est pas entièrement intégrée à YunoHost, ou elle ne respecte pas les bonnes pratiques.",
"catalog": "Catalogue", "catalog": "Catalogue",
"others": "Autres", "others": "Autres",
"diagnosis_first_run": "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. Merci de ne pas paniquer si vous voyez une multitude d'erreurs après avoir configuré votre serveur: la fonctionnalité est précisément prévue pour les identifier et vous aider à les résoudre. Le diagnostic sera également effectué deux fois par jour et enverra un courriel au compte administrateur si des erreurs sont détectées.", "diagnosis_first_run": "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. Merci de ne pas paniquer si vous voyez une multitude d'erreurs après avoir configuré votre serveur : la fonctionnalité est précisément prévue pour les identifier et vous aider à les résoudre. Le diagnostic sera également effectué deux fois par jour et enverra un courriel à l'administrateur si des erreurs sont détectées.",
"run_first_diagnosis": "Démarrer le diagnostic initial", "run_first_diagnosis": "Démarrer le diagnostic initial",
"confirm_service_restart": "Voulez-vous vraiment redémarrer {name}?", "confirm_service_restart": "Êtes-vous certain de vouloir redémarrer {name} ?",
"restart": "Redémarrer", "restart": "Redémarrer",
"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.", "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.",
"issues": "{count} problèmes", "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.", "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 au compte 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.", "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 attente d'exécution. Veuillez aller dans <a href='#/tools/migrations'>Outils > Migrations</a> pour les exécuter.", "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 comptes 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 les personnes administrant le serveur ainsi celles ayant accès au compte lui même.", "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", "logs_suboperations": "Sous-opérations",
"permission_show_tile_enabled": "Visible en tuile dans le portail YunoHost", "permission_show_tile_enabled": "Visible en tuile dans le portail utilisateur",
"permission_main": "Label principal", "permission_main": "Label principal",
"permission_corresponding_url": "URL correspondante", "permission_corresponding_url": "URL correspondante",
"app_manage_label_and_tiles": "Gérer les étiquettes et les tuiles", "app_manage_label_and_tiles": "Gérer les étiquettes et les tuiles",
@ -274,31 +320,30 @@
"cache": "Cache", "cache": "Cache",
"fallback_language_description": "Langue qui sera utilisée au cas où la traduction ne serait pas disponible dans la langue principale.", "fallback_language_description": "Langue qui sera utilisée au cas où la traduction ne serait pas disponible dans la langue principale.",
"fallback_language": "Langue de secours", "fallback_language": "Langue de secours",
"language": "Langue", "language": "Langue"
"theme": "Basculer en mode sombre"
}, },
"tools_power_up": "Votre serveur semble être accessible, vous pouvez maintenant essayer de vous connecter.",
"search": { "search": {
"not_found": "Il y a des {items} qui correspondent à vos critères. | Il y a un {items} qui correspond à vos critères. | Il y a des {items} qui correspondent à vos critères.", "not_found": "Il y a des {items} qui correspondent à vos critères.",
"for": "Rechercher {items}" "for": "Rechercher {items}..."
}, },
"readme": "Lisez-moi", "readme": "Lisez-moi",
"postinstall_set_password": "Définir le mot de passe d'administration",
"postinstall_set_domain": "Définir le domaine principal", "postinstall_set_domain": "Définir le domaine principal",
"placeholder": { "placeholder": {
"domain": "mon-domaine.fr", "domain": "mon-domaine.fr",
"groupname": "Le nom de mon groupe", "groupname": "Le nom de mon groupe",
"lastname": "Dupont", "lastname": "Dupont",
"firstname": "Camille", "firstname": "Jean",
"fullname": "Camille Dupont", "username": "jeandupont"
"username": "camilledupont",
"file": "Parcourir un fichier ou le faire glisser et déposer"
}, },
"perform": "Exécuter", "perform": "Exécuter",
"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_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é", "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", "mailbox_quota_example": "700 M correspond à un CD, 4 700 M correspond à un DVD",
"items_verbose_count": "Il n'y a {items}. | Il y a un {items}. | Il y a des {items}.", "items_verbose_count": "Il y a des {items}.",
"items": { "items": {
"users": "aucun compte | compte | {c} comptes", "users": "aucun utilisateur | utilisateur | {c} utilisateurs",
"services": "aucun service | service | {c} services", "services": "aucun service | service | {c} services",
"logs": "aucun historique/log | log | {c} logs", "logs": "aucun historique/log | log | {c} logs",
"installed_apps": "aucune application installée | application installée | {c} applications installées", "installed_apps": "aucune application installée | application installée | {c} applications installées",
@ -315,7 +360,7 @@
"POST": "créer/exécuter", "POST": "créer/exécuter",
"GET": "lire" "GET": "lire"
}, },
"last_action": "Dernière action:", "last_action": "Dernière action :",
"title": "Historique", "title": "Historique",
"is_empty": "Rien dans l'historique pour le moment." "is_empty": "Rien dans l'historique pour le moment."
}, },
@ -324,36 +369,32 @@
"passwordMatch": "Les mots de passe ne correspondent pas.", "passwordMatch": "Les mots de passe ne correspondent pas.",
"passwordLenght": "Le mot de passe doit comporter au moins 8 caractères.", "passwordLenght": "Le mot de passe doit comporter au moins 8 caractères.",
"number": "La valeur doit être un nombre.", "number": "La valeur doit être un nombre.",
"notInUsers": "Le compte '{value}' existe déjà.", "notInUsers": "L'utilisateur '{value}' existe déjà.",
"minValue": "La valeur doit être un nombre égal ou supérieur à {min}.", "minValue": "La valeur doit être un nombre égal ou supérieur à {min}.",
"name": "Les noms ne peuvent pas comporter de caractères spéciaux, sauf <code> ,.'-</code>", "name": "Les noms ne peuvent pas comporter de caractères spéciaux, sauf <code> ,.'-</code>",
"appRepoUrl": "Les URLs de dêpôt d'app YunoHost doivent ressembler à https://domain.tld/path/to/repo_ynh", "githubLink": "L'URL doit être un lien Github valide vers un dépôt",
"emailForward": "Adresse de transfert de courrier électronique invalide: elle doit être composée de caractères alphanumérique et de <code>_.-+</code> seulement (par exemple, someone+tag@example.com, s0me-1+tag@example.com)", "emailForward": "Adresse de transfert de courrier électronique invalide : elle doit être composée de caractères alphanumérique et de <code>_.-+</code> seulement (par exemple, someone+tag@example.com, s0me-1+tag@example.com)",
"email": "Adresse de courriel invalide: elle doit être composée de caractères alphanumérique et des caractères <code>_.-</code> seulement (par exemple someone@example.com, s0me-1@example.com)", "email": "Adresse de courriel invalide : elle doit être composée de caractères alphanumérique et des caractères <code>_.-</code> seulement (par exemple someone@example.com, s0me-1@example.com)",
"dynDomain": "Nom de domaine invalide: Il doit être composé de minuscules alphanumériques et de tirets uniquement", "dynDomain": "Nom de domaine invalide : Il doit être composé de minuscules alphanumériques et de tirets uniquement",
"domain": "Nom de domaine invalide: Il doit être composé de minuscules alphanumériques, de points et de tirets uniquement", "domain": "Nom de domaine invalide : Il doit être composé de minuscules alphanumériques, de points et de tirets uniquement",
"between": "La valeur doit être comprise entre {min} et {max}.", "between": "La valeur doit être comprise entre {min} et {max}.",
"alpha": "La chaîne de caractères ne doit contenir que des lettres.", "alpha": "La chaîne de caractères ne doit contenir que des lettres.",
"alphalownumdot_": "La chaîne de caractères doit être composé uniquement de caractères alphanumériques minuscules, de points et de tirets bas (aussi appelé tiret du 8 ou underscore).", "alphalownum_": "La chaîne de caractères doit être composé uniquement de caractères alphanumériques minuscules et de tirets bas (aussi appelé tiret du 8 ou underscore)."
"maxValue": "La valeur doit être un nombre égal ou inférieur à {max}.",
"remote": "{message}",
"pattern": "{type}",
"invalid_form": "Le formulaire contient des erreurs."
}, },
"footer": { "footer": {
"donate": "Faire un don", "donate": "Faire un don",
"help": "Besoin d'aide?", "help": "Besoin d'aide ?",
"documentation": "Documentation" "documentation": "Documentation"
}, },
"experimental": "Expérimental", "experimental": "Expérimental",
"error": "Erreur", "error": "Erreur",
"enabled": "Activé", "enabled": "Activé",
"domain_delete_forbidden_desc": "Vous ne pouvez pas supprimer '{domain}' car c'est le domaine par défaut, vous devez choisir un autre domaine (ou <a href='#/domains/add'> ajoutez en un nouveau</a>) et le définir comme le domaine par défaut pour pouvoir supprimer celui-ci.", "domain_delete_forbidden_desc": "Vous ne pouvez pas supprimer '{domain}' car c'est le domaine par défaut, vous devez choisir un autre domaine (ou <a href='#/domains/add'> ajoutez en un nouveau</a>) et le définir comme le domaine par défaut pour pouvoir supprimer celui-ci.",
"domain_add_dyndns_forbidden": "Vous avez déjà enregistré/souscrit à un domaine DynDNS du projet YunoHost. Par conception, cette fonctionnalité est limitée à un seul domaine de ce type par serveur. Si vous souhaitez utiliser un sous-domaine de votre domaine déjà souscrit, veuillez utiliser l'option 'Ajouter un domaine que je possède, ou un sous-domaine' ci-dessus. Si vous souhaitez utiliser un domaine complètement différent, vous devez d'abord supprimer votre domaine DynDNS existant. Les domaines DynDNS sont utiles pour débuter avec l'auto-hébergement, mais à moyen/long terme, nous recommandons d'acheter votre propre nom de domaine auprès d'un registrar/prestataire afin d'avoir la pleine propriété de votre domaine.", "domain_add_dyndns_forbidden": "Vous avez déjà souscrit à un domaine DynDNS, vous pouvez demander la suppression de votre domaine DynDNS actuel sur le forum <a href='//forum.yunohost.org/t/nohost-domain-recovery-suppression-de-domaine-en-nohost-me-noho-st-et-ynh-fr/442'> dans le fil de discussion dédié</a>.",
"disabled": "Désactivé", "disabled": "Désactivé",
"dead": "Inactif", "dead": "Inactif",
"day_validity": " Expiré | 1 jour | {count} jours", "day_validity": " Expiré | 1 jour | {count} jours",
"confirm_app_install": "Voulez-vous vraiment installer cette application?", "confirm_app_install": "Êtes-vous sûr de vouloir installer cette application ?",
"common": { "common": {
"lastname": "Nom de famille", "lastname": "Nom de famille",
"firstname": "Prénom" "firstname": "Prénom"
@ -361,8 +402,13 @@
"code": "Code", "code": "Code",
"cancel": "Annuler", "cancel": "Annuler",
"app_show_categories": "Afficher les catégories", "app_show_categories": "Afficher les catégories",
"app_config_panel_no_panel": "Cette application n'a aucune configuration disponible",
"app_config_panel_label": "Configurez cette application",
"app_config_panel": "Panneau de configuration",
"app_choose_category": "Choisissez une catégorie", "app_choose_category": "Choisissez une catégorie",
"api_waiting": "Attente de la réponse du serveur…", "app_actions_label": "Exécuter les actions",
"app_actions": "Actions",
"api_waiting": "Attente de la réponse du serveur...",
"api_errors_titles": { "api_errors_titles": {
"APIConnexionError": "YunoHost a rencontré une erreur de connexion", "APIConnexionError": "YunoHost a rencontré une erreur de connexion",
"APINotRespondingError": "L'API YunoHost ne répond pas", "APINotRespondingError": "L'API YunoHost ne répond pas",
@ -373,11 +419,11 @@
}, },
"api_error": { "api_error": {
"sorry": "Vraiment désolé de cela.", "sorry": "Vraiment désolé de cela.",
"info": "Les informations suivantes peuvent être utiles à la personne qui vous aide:", "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:", "error_message": "Message d'erreur :",
"view_error": "Afficher l'erreur", "view_error": "Afficher l'erreur",
"server_said": "Pendant le traitement de l'action, le serveur a dit:" "server_said": "Pendant le traitement de l'action, le serveur a dit :"
}, },
"address": { "address": {
"local_part_description": { "local_part_description": {
@ -389,7 +435,7 @@
"domain": "Choisissez un domaine." "domain": "Choisissez un domaine."
} }
}, },
"api_not_found": "Il semblerait que l'interface d'administration web ait essayé d'accéder à quelque chose qui n'existe pas.", "api_not_found": "L'administrateur a essayé d'accéder à quelque chose qui n'existe pas.",
"api": { "api": {
"query_status": { "query_status": {
"error": "Échec", "error": "Échec",
@ -397,34 +443,17 @@
"warning": "Terminé avec succès avec des erreurs ou des alertes", "warning": "Terminé avec succès avec des erreurs ou des alertes",
"pending": "En cours" "pending": "En cours"
}, },
"processing": "Le serveur traite l'action…", "processing": "Le serveur traite l'action..."
"partial_logs": "[…] (voir l'historique pour consulter les logs complets)",
"reconnecting": {
"title": "Tentative de communication avec le serveur…",
"failed": "Le serveur ne répond pas. Vous pouvez essayer de vous reconnecter ou essayer d'exécuter `systemctl restart yunohost-api` via SSH.",
"reason": {
"unknown": "La connexion avec le serveur a été fermée pour des raisons inconnues.",
"reboot": "Votre serveur redémarre et ne sera pas joignable pendant un certain temps. Une invite de connexion sera disponible dès que le serveur sera accessible.",
"shutdown": "Votre serveur est en cours d'extinction et n'est plus joignable. Redémarrez-le et une invitation de connexion sera disponible dès que le serveur sera joignable.",
"upgrade_system": "La connexion avec le serveur a été fermée en raison de la mise à jour de YunoHost. Il vous faut patienter jusqu'à ce que le serveur soit à nouveau joignable…"
},
"success": "Le serveur est maintenant joignable! Vous pouvez essayer de vous connecter"
}
}, },
"go_back": "Revenir", "go_back": "Revenir",
"postinstall": { "postinstall": {
"force": "Forcer la post-installation", "force": "Forcer la post-installation"
"title": "Post-installation",
"user": {
"title": "Création du premier compte d'administration",
"first_user_help": "Ce compte se verra accorder des privilèges d'administration et sera autorisé à se connecter à cette interface d'administration ainsi que directement au serveur via SSH.\nComme il s'agit d'un compte normal, il pourra également se connecter au portail YunoHost (SSO) avec ses informations d'identification.\nUne fois la post-installation terminée, vous pourrez créer d'autres comptes d'administration en les ajoutant au groupe 'admins'."
}
}, },
"human_routes": { "human_routes": {
"users": { "users": {
"update": "Mettre à jour le compte '{name}'", "update": "Mettre à jour l'utilisateur '{name}'",
"delete": "Supprimer le compte '{name}'", "delete": "Supprimer l'utilisateur '{name}'",
"create": "Créer le compte '{name}'" "create": "Créer l'utilisateur '{name}'"
}, },
"upgrade": { "upgrade": {
"app": "Mettre à jour l'application '{app}'", "app": "Mettre à jour l'application '{app}'",
@ -461,12 +490,12 @@
}, },
"domains": { "domains": {
"set_default": "Définir '{name}' comme domaine par défaut", "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}'", "delete": "Supprimer le domaine '{name}'",
"add": "Ajouter le domaine '{name}'", "add": "Ajouter le domaine '{name}'"
"update_config": "Mise à jour du panneau '{id}' de configuration du domaine '{name}'",
"push_dns_changes": "Envoyer les enregistrements DNS au registraire pour '{name}'",
"cert_install": "Installation d'un certificat pour '{name}'",
"cert_renew": "Renouvellement du certificat pour '{name}'"
}, },
"diagnosis": { "diagnosis": {
"unignore": { "unignore": {
@ -486,210 +515,16 @@
"create": "Créer une sauvegarde" "create": "Créer une sauvegarde"
}, },
"apps": { "apps": {
"update_config": "Mise à jour du panneau '{id}' de configuration de l'application '{name}'", "update_config": "Mise à jour de la configuration de l'application '{name}'",
"uninstall": "Désinstaller 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}'", "set_default": "Rediriger la racine du domaine '{domain}' vers '{name}'",
"install": "Installer l'application '{name}'", "install": "Installer l'application '{name}'",
"change_url": "Modifier l'URL d'accès de '{name}'", "change_url": "Modifier l'URL d'accès de '{name}'",
"change_label": "Changer le libellé de '{prevName}' par '{nextName}'", "change_label": "Changer le libellé de '{prevName}' par '{nextName}'"
"action_config": "Exécuter l'action '{action}' de configuration de l'application '{name}'",
"dismiss_notification": "Congédier la notification pour '{name}'"
}, },
"reconnecting": "Reconnexion", "adminpw": "Changer le mot de passe administrateur"
"settings": {
"update": "Mise à jour des paramètres globaux de '{panel}'"
}
}, },
"items_verbose_items_left": "Il reste des {items}. | Il reste un {items}. | Il reste des {items}.", "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.", "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."
"users_import": "Importer des comptes",
"users_export": "Exporter les comptes",
"users_import_csv_file": "Fichier CSV",
"users_import_update": "Mettre à jour les comptes existants",
"users_import_delete": "Supprimer les comptes non répertoriés",
"users_import_update_desc": "Si coché, tous les comptes existants contenus dans le fichier CSV seront mis à jour avec les nouvelles valeurs",
"users_import_delete_desc": "Si coché, tous les comptes existants qui ne sont pas dans le fichier CSV seront supprimés (et purgés).",
"users_import_confirm_destructive": "Voulez-vous vraiment supprimer les comptes qui ne sont pas présents dans ce fichier?",
"users_import_delete_others": "Supprimer les comptes non répertoriés",
"users_import_csv_file_desc": "Le fichier CSV doit être au format UTF-8 et avec les colonnes nom de compte, mot de passe, groupes, email et quota. Pour un exemple d'importation de fichier CSV, vous pouvez <a href='/yunohost/api/users/export' target='_BLANK'>exporter vos comptes dans un fichier CSV</a> et modifier le fichier.",
"yunohost_admin": "YunoHost Admin",
"domain": {
"config": {
"edit": "Modifier la configuration du domaine",
"title": "Configuration du domaine"
},
"dns": {
"auto_config": "Configuration automatique des enregistrements DNS",
"auto_config_ok": "La configuration automatique semble être OK!",
"auto_config_zone": "Zone DNS actuelle",
"edit": "Modifier la configuration DNS",
"info": "La configuration automatique des enregistrements DNS est une fonctionnalité expérimentale. <br>Envisagez de sauvegarder votre zone DNS actuelle à partir de l'interface de votre registraire DNS avant de transférer les enregistrements à partir d'ici.",
"manual_config": "Enregistrements DNS suggérés pour la configuration manuelle",
"push_force": "Écraser les enregistrements existants",
"push_force_warning": "Il semble que certains enregistrements DNS que YunoHost aurait définis soient déjà dans la configuration du registrar. Vous pouvez utiliser l'option d'écrasement si vous savez ce que vous faites.",
"push_force_confirm": "Voulez-vous vraiment forcer tous les enregistrements DNS suggérés? Sachez que cela peut écraser une configuration manuelle ou des enregistrements par défaut importants définis par vous ou votre registrar.",
"auto_config_ignored": "ignoré, ne sera pas modifié par YunoHost sauf si vous cochez l'option d'écrasement",
"push": "Envoyer les enregistrements DNS vers le registrar",
"methods": {
"auto": "Automatique",
"handled_in_parent": "Géré dans le domaine parent",
"manual": "Manuelle",
"none": "Aucune",
"semi_auto": "Semi-automatique"
}
},
"cert": {
"types": {
"selfsigned": "Auto-signé",
"letsencrypt": "Let's Encrypt",
"other": "Autre/Inconnu"
},
"valid_for": "valable pendant {days}"
},
"explain": {
"main_domain": "Le domaine principal est le domaine à partir duquel les personnes peuvent se connecter au portail (via \"{domain}/yunohost/sso\").<br>Il n'est donc pas possible de le supprimer.<br>Si vous voulez supprimer \"{domain}\", vous devrez d'abord choisir ou ajouter un autre domaine et le définir comme domaine principal."
},
"info": {
"apps_on_domain": "Applications installées sur le domaine",
"certificate_authority": "Autorité de certification SSL",
"registrar": "Registraire de nom de domaine",
"dyn_dns_remove_and_unsubscribe": "Annuler également l'enregistrement du domaine du service DynDNS de YunoHost"
},
"see_parent_domain": "Voir le domaine parent",
"types": {
"main_domain": "Domaine principal"
},
"toggle_subdomains": "Afficher les sous-domaines",
"add": {
"from_registrar_desc": "Vous devrez configurer manuellement les enregistrements DNS chez votre registrar auprès duquel vous avez acheté votre nom de domaine pour finaliser la configuration de ce domaine. Le diagnostic de YunoHost vous guidera sur les enregistrements DNS à configurer de façon adéquate.",
"from_yunohost_desc": "Le projet YunoHost propose un service 'DynDNS' gratuit. Il est limité à un seul domaine par serveur (bien que vous puissiez également ajouter des sous-domaines plus tard en utilisant l'autre option 'Ajouter un domaine que je possède, ou un sous-domaine' ci-dessus). La configuration DNS sera automatiquement prise en charge par YunoHost. C'est l'idéal lorsque vous démarrez avec l'auto-hébergement en général et que vous ne souhaitez pas encore investir dans un nom de domaine. Cependant, à moyen/long terme, nous vous recommandons d'acheter votre propre nom de domaine auprès d'un registrar (fournisseur de nom de domaine) afin d'avoir la pleine propriété de votre domaine.",
"dyn_dns_password": "Mot de passe de récupération du domaine",
"dyn_dns_password_desc": "Ce mot de passe vous permettra de récupérer ultérieurement le contrôle du domaine si vous réinstallez votre système. Si vous avez déjà enregistré ce domaine auparavant, utilisez votre mot de passe de récupération ici pour le récupérer.",
"from_local": "Je veux un domaine pour un usage local / test uniquement",
"from_local_desc": "Si vous ne souhaitez pas un nom de domaine public \"réel\", vous pouvez utiliser n'importe quel nom se terminant par <code>.local</code> or <code>.test</code>. Les noms de domaine se terminant par <code>.local</code> sont particuliers en ce sens qu'ils peuvent être automatiquement résolus sur le réseau local, en supposant que les clients prennent en charge le protocole Bonjour. Il est également possible que vous deviez modifier le paramètre du fichier <code>/etc/hosts</code> (ou équivalent sous Windows) sur chaque client à partir duquel vous souhaitez utiliser ce domaine, ou de configurer des entrées DNS locales sur votre routeur internet.",
"from_registrar": "Je veux ajouter un domaine que je possède, ou un sous-domaine",
"from_yunohost": "Je ne possède pas de domaine, je veux enregistrer/utiliser un domaine DynDNS gratuit fourni par le projet YunoHost"
}
},
"domain_dns_push_failed_to_authenticate": "Échec de l'authentification sur l'API du registrar. Les <a href='#/domains/{domain}/config'>informations d'identification</a> sont elles justes? (Erreur: {error})",
"domain_dns_push_managed_in_parent_domain": "La fonctionnalité d'enregistrement DNS automatique est gérée dans le domaine parent <a href='#/domains/{parent_domain}/dns'>{parent_domain}</a>.",
"domain_dns_push_not_applicable": "La fonctionnalité d'enregistrements DNS automatiques n'est pas applicable au domaine {domain},<br> Vous devez configurer manuellement vos enregistrements DNS en suivant la <a href='https://yunohost.org/dns'>documentation</a> et les suggestions configuration ci-dessous.",
"text_selection_is_disabled": "La sélection du texte est désactivée. Si vous voulez partager ce log *complet*, vous pouvez le faire en cliquant sur le bouton 'Partager avec Yunopaste'.<br/><small>Ou, si vous voulez vraiment vraiment sélectionner du texte, appuyez sur ces touches: ↓↓↑↑.</small>",
"retry": "Retenter",
"important_yunohost_upgrade": "Une mise à jour majeure de YunoHost est disponible. Il est fortement recommandé de lire attentivement les notes de mise à jour sur le forum avant de procéder à celle-ci: <a href='https://forum.yunohost.org/tag/ynh_release'>Consultez les notes de mise à jour sur le forum.</a>",
"app_state_broken": "Cassée",
"app_state_broken_explanation": "Cette application est actuellement cassée et ne peut être installée selon les contrôles automatiques de YunoHost",
"details_about": "Afficher plus de détails sur {subject}",
"group_admins": "Comptes administrateurs",
"group_explain_admins": "Il s'agit d'un groupe spécial correspondant aux comptes dits administrateurs. Les comptes affectés à ce groupe ont, pour faire simple, tous les droits sur le serveur (modification, création, ajout et suppression). Ils peuvent donc accéder à l'administration en ligne de YunoHost (panel web), se connecter au serveur avec SSH et utiliser la commande `sudo`. Ils recevront également les courriels envoyés à root@, admin@, admins@, tels que les notifications de diagnostic. Vous ne devriez ajouter dans ce groupe que des comptes de personnes en qui vous avez absolument confiance!",
"label_for_manifestname_help": "Il s'agit du nom affiché dans le portail d'utilisation de YunoHost. Il peut être modifié ultérieurement.",
"manage_groups": "Gestion des groupes",
"tools_yunohost_settings": "Paramètres de YunoHost",
"wrong_password_or_username": "Mot de passe ou nom de compte erroné",
"confirm_install_app_broken": "AVERTISSEMENT! Cette application est cassée selon les contrôles automatiques de YunoHost et elle est susceptible de casser votre système! Vous ne devriez probablement PAS l'installer à moins de savoir ce que vous faites. Voulez-vous vraiment prendre ce risque?",
"app": {
"links": {
"code": "Dépôt officiel de code",
"admindoc": "Documentation officielle d'administration",
"forum": "Sujets concernant cette application sur le forum de YunoHost",
"package": "Dépôt du paquet YunoHost",
"package_license": "Licence du paquet YunoHost",
"title": "Liens",
"userdoc": "Documentation officielle d'utilisation",
"website": "Site officiel",
"license": "Licence de l'app"
},
"potential_alternative_to": "Alternative potentielle à :",
"upgrade": {
"notifs": {
"pre": {
"alert": "Vous devriez vérifier ces notifications avant de procéder à la mise à niveau, il pourrait y avoir des éléments d'information importants à connaître.",
"title": "Avertissement!"
},
"post": {
"alert": "Il semble que la mise à jour se soit bien passée!\nVoici quelques informations que le responsable du paquet juge important de connaître à propos de cette mise à niveau.\nVous pouvez les retrouver dans la page d'information de l'application.",
"title": "Notifications post-mise à niveau pour '{name}'"
}
},
"confirm": {
"apps": "Applications qui seront mises à niveau",
"title": "Confirmez les mises à niveau des applications"
},
"continue": "Passer à l'application suivante",
"stop": "Annuler les prochaines mises à niveau d'applications"
},
"installed_version": "Version installée:",
"open_this_app": "Ouvrez l'application",
"antifeatures": "Cette application a des fonctionnalités que vous n'aimerez peut-être pas:",
"doc": {
"about": {
"title": "À propos",
"description": "Description"
},
"admin": {
"title": "Documentation d'administration"
},
"notifications": {
"understood": "Compris",
"title": "Notifications",
"post_upgrade": "Remarques suite à la mise à niveau",
"post_install": "Remarques suite à l'installation"
}
},
"info": {
"forum": "Cherchez ou demandez sur le forum!",
"problem": "Un problème avec cette application?",
"config_panel_error": "Une erreur empêche l'affichage du panneau de configuration:",
"config_panel_error_please_report": "Merci de signaler cette erreur à l'équipe de YunoHost pour qu'elle soit corrigée!"
},
"install": {
"license": "Licence: {license}",
"notifs": {
"post": {
"title": "Notifications de post-installation pour '{name}'",
"alert": "Il semble que l'installation se soit bien passée!\nVoici quelques notifications que le responsable du paquet considère comme importantes à connaître.\nVous pouvez les retrouver dans la page d'information de l'application."
},
"pre": {
"warning": "Ce qu'il faut savoir avant l'installation",
"danger": "L'installation de l'application entraînera très probablement des problèmes",
"critical": "L'application ne peut pas être installée"
}
},
"problems": {
"arch": "Cette application ne peut être installée que sur des architectures spécifiques ({required}). L'architecture de votre serveur est {current}.",
"broken": "Cette application est cassée selon les tests automatiques de YunoHost et elle est susceptible de casser votre système! Vous ne devriez probablement PAS l'installer sauf si vous savez ce que vous faites.",
"thirdparty": "Cette application ne fait pas partie du catalogue officiel de YunoHost, l'installation d'applications tierces peut compromettre l'intégrité et la sécurité de votre système. Vous ne devriez probablement PAS l'installer à moins de savoir ce que vous faites.",
"ignore": "Je comprends que cette installation peut casser mon système mais je veux quand même essayer.",
"inprogress": "Cette application est encore expérimentale (pour être plus clair elle ne fonctionne pas super bien et n'est pas encore bien intégrée dans YunoHost). En conséquence, elle est susceptible de casser votre système! Vous ne devriez probablement PAS l'installer si vous ne savez pas ce que vous faites.",
"install": "Cette application est déjà installée et ne peut être installée plus d'une fois.",
"lowquality": "Cette application peut fonctionner mais n'est pas bien intégrée dans YunoHost. Certaines fonctionnalités telles que l'authentification unique (sso) et la sauvegarde/restauration peuvent ne pas être disponibles, ou ne pas respecter les bonnes pratiques.",
"ram": "Cette application nécessite {required} de RAM pour être installée/mise à niveau mais seul {current} est disponible actuellement. Même si cette application pouvait fonctionner, son processus d'installation nécessite une grande quantité de RAM. Votre serveur risque donc de geler (freezer) et de planter lamentablement.",
"version": "Cette application nécessite une version de YunoHost >= {required} et votre version installée est {current}, vous devriez envisager en premier lieu de mettre à niveau YunoHost."
},
"try_demo": "Essayer la démonstration",
"version": "Version actuelle: {version}"
},
"integration": {
"archs": "Architectures prises en charge:",
"ldap": {
"false": "Ne permet pas d'utiliser les comptes YunoHost pour se connecter (LDAP)",
"true": "Utilise les comptes YunoHost pour se connecter (LDAP)",
"?": "Aucune information sur l'intégration LDAP"
},
"multi_instance": {
"false": "Ne peut être installé qu'une seule fois",
"true": "Peut être installée plusieurs fois"
},
"resources": "Utilisation classique des ressources: {ram} RAM, {disk} disque",
"sso": {
"false": "Le système d'identification unique n'est pas disponible (SSO)",
"true": "Le système d'identification unique est disponible (SSO)",
"?": "Aucune information sur l'intégration du SSO"
},
"title": "Intégration avec YunoHost"
},
"uninstall": {
"purge_desc": "Supprimez le répertoire de données associé à l'application (il s'agit généralement de données que vous avez téléchargées vous-même à l'aide de l'application)."
}
}
} }

View file

@ -15,7 +15,7 @@
"sorry": "Sentimos gran pesar por isto.", "sorry": "Sentimos gran pesar por isto.",
"server_said": "Ao procesar a acción o servidor respondeu:", "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:", "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 na <a href=\"https://chat.yunohost.org/\">conversa</a> para arranxar a situación, ou informar do fallo no <a href=\"https://github.com/YunoHost/issues\">seguimento de fallos</a>.", "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:" "error_message": "Mensaxe do erro:"
}, },
"api": { "api": {
@ -25,19 +25,7 @@
"pending": "En progreso", "pending": "En progreso",
"error": "Sen éxito" "error": "Sen éxito"
}, },
"processing": "O servidor está procesando a acción…", "processing": "O servidor está procesando a acción..."
"partial_logs": "[…] (mira o historial para ver o rexistro completo)",
"reconnecting": {
"title": "Intentando comunicarse co servidor…",
"failed": "Semella que o servidor non responde. Podes intentar volver conectar ou intenta executar `systemctl restart yunohost-api`por ssh.",
"reason": {
"unknown": "Pechouse a conexión co servidor por razóns descoñecidas.",
"reboot": "O servidor está reiniciando e non estará dispoñible por uns minutos. O formulario de conexión estará dispoñible tan pronto o servidor sexa accesible.",
"shutdown": "O servidor estase apagando e non está dispoñible. Acéndeo e o formulario de conexión estará dispoñible tan pronto o servidor sexa accesible.",
"upgrade_system": "Pechouse a conexión ao servidor debido á actualización de YunoHost. Agardando a que o servidor sexa accesible…"
},
"success": "O servidor está accesible! Podes intentar acceder"
}
}, },
"all": "Todo", "all": "Todo",
"administration_password": "Contrasinal de administración", "administration_password": "Contrasinal de administración",
@ -53,8 +41,8 @@
}, },
"add": "Engadir", "add": "Engadir",
"action": "Acción", "action": "Acción",
"confirm_firewall_disallow": "Tes a certeza de querer pechar o porto {port}? (protocolo: {protocol}, conexión: {connection})", "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_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_delete": "Tes a certeza de querer eliminar {name}?",
"confirm_change_maindomain": "Tes a certeza de querer cambiar o dominio principal?", "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_default": "Tes a certeza de querer establecer esta como a app por defecto?",
@ -77,11 +65,17 @@
"backup": "Copia de apoio", "backup": "Copia de apoio",
"archive_empty": "Arquivo baleiro", "archive_empty": "Arquivo baleiro",
"applications": "Aplicacións", "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_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_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_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_state_inprogress": "aínda non funciona",
"app_show_categories": "Mostrar categorías", "app_show_categories": "Mostrar categorías",
"app_no_actions": "Esta aplicación non ten ningunha acción",
"app_make_default": "Establecer por defecto", "app_make_default": "Establecer por defecto",
"app_install_parameters": "Axustes da instalación", "app_install_parameters": "Axustes da instalación",
"app_install_custom_no_manifest": "Non hai ficheiro manifest.json", "app_install_custom_no_manifest": "Non hai ficheiro manifest.json",
@ -90,24 +84,34 @@
"app_info_changeurl_desc": "Cambiar o URL de acceso a esta aplicación (domino e/ou ruta).", "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_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_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_choose_category": "Elixe unha categoría",
"api_waiting": "Agardando pola resposta do servidor…", "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_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.", "api_not_found": "Semella que o web-admin intentou solicitar algún recurso que non existe.",
"all_apps": "Tódalas apps", "all_apps": "Tódalas apps",
"domain_delete_longdesc": "Eliminar este domino", "domain_delete_longdesc": "Eliminar este domino",
"domain_default_longdesc": "Este é o teu dominio por defecto.", "domain_default_longdesc": "Este é o teu dominio por defecto.",
"domain_default_desc": "O dominio por defecto é o dominio de conexión onde accederán as usuarias.", "domain_default_desc": "O dominio por defecto é o dominio de conexión onde se conectarán as usuarias.",
"domain_add_dyndns_forbidden": "Xa tes unha subscrición/rexistro dun dominio DynDNS do proxecto YunoHost. Por decisión propia, esta característica está limitada a un dominio por servidor. Se queres engadir un subdominio pertencente ao dominio que xa tes utiliza a opción superior 'Engadir un dominio, ou subdominio, que xa posúo'. Se queres usar un dominio totalmente diferente, primeiro tes que eliminar o dominio DynDNS existente. Os dominios DynDNS son moi axeitados para aprender ao comezo dun proxecto de autohospedaxe, pero a medio/longo prazo recomendámosche mercar o teu propio nome de dominio nalgunha empresa rexistradora para ter a propiedade completa sobre o teu dominio.", "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", "domain_add": "Engadir dominio",
"dns": "DNS", "dns": "DNS",
"disabled": "Desactivado", "disabled": "Desactivado",
"disable": "Desactivar", "disable": "Desactivar",
"run_first_diagnosis": "Executar diagnóstico inicial", "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_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 realízase automáticamente un par de veces ao día e envíase un email á usuaria administradora se atopa 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", "diagnosis": "Diagnóstico",
"domain_dns_conf_is_just_a_recommendation": "Esta sección 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.", "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", "details": "Detalles",
"description": "Descrición", "description": "Descrición",
"delete": "Eliminar", "delete": "Eliminar",
@ -130,11 +134,11 @@
"confirm_restore": "Tes a certeza de querer restaurar {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_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_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 pode que estrague o teu sistema! Probablemente NON DEBERÍAS instalala a menos que saibas o que fas. Estás preparada para asumir este risco?", "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_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_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_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 saibas o que fas. Estás preparada para asumir ese risco?", "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.", "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!", "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", "permission_show_tile_enabled": "Visible como tesela no portal da usuaria",
@ -144,25 +148,21 @@
"from_to": "de {0} a {1}", "from_to": "de {0} a {1}",
"form_input_example": "Exemplo: {example}", "form_input_example": "Exemplo: {example}",
"form_errors": { "form_errors": {
"required": "Completa este campo.", "required": "O campo é requerido.",
"passwordMatch": "Os contrasinais non concordan.", "passwordMatch": "Os contrasinais non concordan.",
"passwordLenght": "O contrasinal debe ter polo menos 8 caracteres.", "passwordLenght": "O contrasinal debe ter polo menos 8 caracteres.",
"number": "Ten que ser un número.", "number": "Ten que ser un número.",
"notInUsers": "A usuaria '{value}' xa existe.", "notInUsers": "A usuaria '{value}' xa existe.",
"minValue": "O valor debe ser un número igual ou superior a {min}.", "minValue": "O valor debe ser un número igual ou superior a {min}.",
"name": "Os nomes non inclúen caracteres especiais excepto <code> ,.'-</code>", "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)", "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)", "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", "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", "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}.", "between": "O valor ten que estar entre {min} e {max}.",
"alphalownumdot_": "O valor só pode ter caracteres alfanuméricos en minúscula e trazos baixos.", "alphalownum_": "O valor só pode ter caracteres alfanuméricos en minúscula e trazos baixos.",
"alpha": "O valor só pode ter caracteres alfanuméricos.", "alpha": "O valor só pode ter caracteres alfanuméricos."
"remote": "{message}",
"pattern": "{type}",
"maxValue": "O valor ten que ser un número igual ou menor que {max}.",
"invalid_form": "O formulario contén erros.",
"appRepoUrl": "É de esperar que os URL dos repositorios YunoHost teñan este formato https://domain.tld/path/to/repo_ynh"
}, },
"footer": { "footer": {
"donate": "Doa", "donate": "Doa",
@ -182,27 +182,29 @@
"enable": "Activar", "enable": "Activar",
"download": "Descargar", "download": "Descargar",
"domains": "Dominios", "domains": "Dominios",
"domain_visit_url": "Vai a {url}",
"domain_visit": "Visitar",
"domain_name": "Nome de dominio", "domain_name": "Nome de dominio",
"domain_dns_longdesc": "Ver configuración DNS", "domain_dns_longdesc": "Ver configuración DNS",
"domain_dns_config": "Configuración DNS", "domain_dns_config": "Configuración DNS",
"domain_delete_forbidden_desc": "Non podes eliminar '{domain}' porque é o dominio por defecto, tes que elixir outro dominio (ou <a href='#/domains/add'>engadir un novo</a>) e configuralo como dominio por defecto antes de poder eliminar este.", "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": { "items": {
"groups": "sen grupos | grupo | {c} grupos", "groups": "sen grupos | grupo | {c} grupos",
"domains": "sen dominios | dominio | {c} dominios", "domains": "sen dominios | dominio | {c} dominios",
"backups": "0 copias | copia de apoio | {c} copias de apoio", "backups": "sen copia | copia | {c} copias de apoio",
"apps": "sen apps | app | {c} apps", "apps": "sen apps | app | {c} apps",
"users": "sen usuarias | usuaria | {c} usuarias", "users": "sen usuarias | usuaria | {c} usuarias",
"services": "sen servizos | servizo | {c} servizos", "services": "sen servizos | servizo | {c} servizos",
"permissions": "sen permisos | permiso | {c} permisos", "permissions": "sen permisos | permiso | {c} permisos",
"logs": "sen rexistros | rexistro | {c} rexistros", "logs": "sen rexistros | rexistro | {c} rexistros",
"installed_apps": "cero apps instaladas | app instalada | {c} apps instaladas" "installed_apps": "sen apps instaladas | app instalada | {c} apps instaladas"
}, },
"issues": "{count} asuntos", "issues": "{count} asuntos",
"ipv6": "IPv6", "ipv6": "IPv6",
"ipv4": "IPv4", "ipv4": "IPv4",
"installed": "Instalada", "installed": "Instalada",
"installation_complete": "Instalación completa", "installation_complete": "Instalación completa",
"install_time": "Data de instalación", "install_time": "Tempo de instalación",
"install_name": "Instalar {id}", "install_name": "Instalar {id}",
"install": "Instalar", "install": "Instalar",
"infos": "Info", "infos": "Info",
@ -235,8 +237,8 @@
"permissions": "Permisos", "permissions": "Permisos",
"groups_and_permissions_manage": "Xestionar grupos e permisos", "groups_and_permissions_manage": "Xestionar grupos e permisos",
"groups_and_permissions": "Grupos e permisos", "groups_and_permissions": "Grupos e permisos",
"group_specific_permissions": "Permisos individuais da usuaria", "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_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 queres 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_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_explain_all_users": "Este é un grupo especial que contén tódalas contas de usuaria do servidor",
"group_new": "Novo grupo", "group_new": "Novo grupo",
@ -257,6 +259,7 @@
"nobody": "Ninguén", "nobody": "Ninguén",
"no": "Non", "no": "Non",
"next": "Seguinte", "next": "Seguinte",
"myserver": "omeuservidor",
"multi_instance": "Pode ser instalada varias veces", "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_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_disclaimer_check_message": "Lin e entendín o descargo de responsabilidade",
@ -272,14 +275,14 @@
"mailbox_quota_example": "700M é un CD, 4700M é un DVD", "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.", "mailbox_quota_description": "Establece o tamaño máximo para almacenaxe de email. <br>0 para desactivar.",
"logout": "Pechar sesión", "logout": "Pechar sesión",
"login": "Acceder", "login": "Conectar",
"local_archives": "Arquivos locais", "local_archives": "Arquivos locais",
"license": "Licenza", "license": "Licenza",
"last_ran": "Última execución:", "last_ran": "Última execución:",
"label_for_manifestname": "Etiqueta para {name}", "label_for_manifestname": "Etiqueta para {name}",
"label": "Etiqueta", "label": "Etiqueta",
"items_verbose_items_left": "Faltan {items}. | Falta 1 {items}. | Faltan {items}.", "items_verbose_items_left": "Restan {items}.",
"items_verbose_count": "Hai {items}. | Hai 1 {items}. | Hai {items}.", "items_verbose_count": "Hai {items}.",
"logs_share_with_yunopaste": "Compartir rexistros con YunoPaste", "logs_share_with_yunopaste": "Compartir rexistros con YunoPaste",
"logs_context": "Contexto", "logs_context": "Contexto",
"logs_path": "Ruta", "logs_path": "Ruta",
@ -299,11 +302,9 @@
"placeholder": { "placeholder": {
"domain": "o-meu-dominio.com", "domain": "o-meu-dominio.com",
"groupname": "Nome do grupo", "groupname": "Nome do grupo",
"lastname": "Louro", "lastname": "Pérez",
"firstname": "Pepa", "firstname": "Josefa",
"username": "pepalouro", "username": "pepitaperez"
"file": "Navega ata o ficheiro ou arrastra e sóltao",
"fullname": "Pepa Louro"
}, },
"perform": "Realizar", "perform": "Realizar",
"path": "Ruta", "path": "Ruta",
@ -323,11 +324,11 @@
"set_default": "Establecer por defecto", "set_default": "Establecer por defecto",
"services": "Servizos", "services": "Servizos",
"service_start_on_boot": "Executar no inicio", "service_start_on_boot": "Executar no inicio",
"select_none": "Seleccionar ningún", "select_none": "Elexir ningún",
"select_all": "Seleccionar todo", "select_all": "Elexir todo",
"search": { "search": {
"not_found": "Hai {items} que cumpren o criterio. | Hai 1 {items} que cumpre o teu criterio. | Hai {items} que cumpren o teu criterio.", "not_found": "Hai {items} que cumpren o teu criterio.",
"for": "Buscar {items}" "for": "Buscar {items}..."
}, },
"save": "Gardar", "save": "Gardar",
"running": "Executando", "running": "Executando",
@ -335,8 +336,8 @@
"human_routes": { "human_routes": {
"users": { "users": {
"update": "Actualizar usuaria '{name}'", "update": "Actualizar usuaria '{name}'",
"delete": "Eliminar usuaria '{name}'", "delete": "Eliminar usuaria '{user}'",
"create": "Crear usuaria '{name}'" "create": "Crear usuaria '{user}'"
}, },
"upgrade": { "upgrade": {
"app": "Actualizar a app '{app}'", "app": "Actualizar a app '{app}'",
@ -362,7 +363,7 @@
"run": "Realizar migracións" "run": "Realizar migracións"
}, },
"groups": { "groups": {
"remove": "Retirar a '{user}' do grupo '{name}'", "remove": "Eliminar a '{user]' do grupo '{name}'",
"add": "Engadir '{user}' ao grupo '{name}'", "add": "Engadir '{user}' ao grupo '{name}'",
"delete": "Eliminar grupo '{name}'", "delete": "Eliminar grupo '{name}'",
"create": "Crear grupo '{name}'" "create": "Crear grupo '{name}'"
@ -373,12 +374,12 @@
}, },
"domains": { "domains": {
"set_default": "Establecer '{name}' como dominio por defecto", "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}'", "delete": "Eliminar dominio '{name}'",
"add": "Engadir dominio '{name}'", "add": "Engadir dominio '{name}'"
"push_dns_changes": "Subir rexistros DNS á rexistradora para '{name}'",
"update_config": "Actualizar panel '{id}' da configuración de '{name}'",
"cert_install": "Instalar certificado para '{name}'",
"cert_renew": "Anovar certificado para '{name}'"
}, },
"diagnosis": { "diagnosis": {
"unignore": { "unignore": {
@ -398,19 +399,15 @@
"create": "Crear copia de apoio" "create": "Crear copia de apoio"
}, },
"apps": { "apps": {
"update_config": "Actualizar panel '{id}' da configuración da app '{name}'", "update_config": "Actualizar configuración da app '{name}'",
"uninstall": "Desinstalar app '{name}'", "uninstall": "Desinstalar app '{name}'",
"perform_action": "Realizar acción '{action}' da app '{name}'",
"set_default": "Redirixir raiz do dominio '{domain}' a '{name}'", "set_default": "Redirixir raiz do dominio '{domain}' a '{name}'",
"install": "Intalar app '{name}'", "install": "Intalar app '{name}'",
"change_url": "Cambiar URL de acceso a '{name}'", "change_url": "Cambiar url de acceso a '{name}'",
"change_label": "Cambiar etiqueta de '{prevName}' a '{nextName}'", "change_label": "Cambiar etiqueta de '{prevName}' a '{nextName}'"
"action_config": "Executar a acción '{action}' da configuración da app '{name}'",
"dismiss_notification": "Desbotar a notificación de '{name}'"
}, },
"reconnecting": "Reconectando", "adminpw": "Cambiar contrasinal admin"
"settings": {
"update": "Actualizar axustes xerais '{panel}'"
}
}, },
"restart": "Reiniciar", "restart": "Reiniciar",
"restore": "Restaurar", "restore": "Restaurar",
@ -418,24 +415,21 @@
"readme": "Información", "readme": "Información",
"protocol": "Protocolo", "protocol": "Protocolo",
"previous": "Anterior", "previous": "Anterior",
"postinstall_set_password": "Establecer contrasinal de administración",
"postinstall_set_domain": "Establecer nome de dominio principal", "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_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_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_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_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": { "postinstall": {
"force": "Forzar a post-instalación", "force": "Forzar a post-instalación"
"title": "Postinstall",
"user": {
"title": "Crea a primeira usuaria administradora",
"first_user_help": "Esta usuaria vai ter privilexios de administración e poderá conectarse á interface de administración así como ter acceso directo ao servidor a través de SSH. \nComo é unha usuaria normal, poderá tamén acceder a través do portal de usuaria (SSO) coas súas credenciais. \nUnha vez a instalación esté completada, poderás crear outras usuarias administradoras engadíndoas ao grupo 'admins'."
}
}, },
"ports": "Portos", "ports": "Portos",
"port": "Porto", "port": "Porto",
"permission_main": "Etiqueta principal", "permission_main": "Etiqueta principal",
"permission_corresponding_url": "URL correspondente", "permission_corresponding_url": "URL correspondente",
"pending_migrations": "Hai algunha migración pendente agardando executarse. Vai a <a href='#/tools/migrations'>Ferramentas > Migracións</a> para realizalas.", "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", "logs_more": "Mostrar máis liñas",
"user_fullname": "Nome completo", "user_fullname": "Nome completo",
"user_emailforward_add": "Engadir un reenvío de correo", "user_emailforward_add": "Engadir un reenvío de correo",
@ -447,6 +441,8 @@
"upnp_enabled": "UPnP activado.", "upnp_enabled": "UPnP activado.",
"upnp_disabled": "UPnP desactivado.", "upnp_disabled": "UPnP desactivado.",
"upnp": "UPnP", "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", "unknown": "Descoñecido",
"uninstall": "Desinstalar", "uninstall": "Desinstalar",
"unignore": "Non ignorar", "unignore": "Non ignorar",
@ -462,14 +458,21 @@
"cache": "Caché", "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_description": "Idioma que se utilizará en caso de que a tradución non esté dispoñible no idioma principal.",
"fallback_language": "Idioma de apoio", "fallback_language": "Idioma de apoio",
"language": "Idioma", "language": "Idioma"
"theme": "Activar modo escuro"
}, },
"tools_shutdown_reboot": "Apagar/Reiniciar", "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_btn": "Apagar",
"tools_shutdown": "Apagando o servidor", "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_btn": "Reiniciar",
"tools_reboot": "Reinicia o servidor", "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", "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.", "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", "tcp": "TCP",
@ -479,17 +482,37 @@
"system_update": "Actualización do sistema", "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_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.)", "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", "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_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", "yes": "Si",
"wrong_password": "Contrasinal incorrecto",
"words": { "words": {
"default": "Por defecto", "default": "Por defecto",
"collapse": "Pechar", "collapse": "Pechar"
"browse": "Navegar",
"link": "Ligazón",
"none": "Ningún",
"separator": ", ",
"valid": "Válido"
}, },
"warnings": "{count} avisos", "warnings": "{count} avisos",
"version": "Versión", "version": "Versión",
@ -497,199 +520,9 @@
"users_new": "Nova usuaria", "users_new": "Nova usuaria",
"users": "Usuarias", "users": "Usuarias",
"user_username_edit": "Editar a conta de {name}", "user_username_edit": "Editar a conta de {name}",
"user_username": "Identificador", "user_username": "Nome de usuaria",
"user_new_forward": "novoreenvio@omeudominoexterno.org", "user_new_forward": "novoreenvio@omeudominoexterno.org",
"user_mailbox_use": "Espazo de correo utilizado", "user_mailbox_use": "Espazo de correo utilizado",
"user_mailbox_quota": "Cota de correo", "user_mailbox_quota": "Cota de correo",
"user_interface_link": "Interface de usuaria", "user_interface_link": "Interface de usuaria"
"users_import": "Importar usuarias",
"users_export": "Exportar usuarias",
"users_import_csv_file": "Ficheiro CSV",
"users_import_update": "Actualizar usuarias existentes",
"users_import_delete": "Eliminar usuarias fóra da lista",
"users_import_csv_file_desc": "O ficheiro CSV ten que usar UTF-8 coas columnas nome de usuaria, contrasinal, grupos, email e cota. A xeito de exemplo de importación CSV, podes <a href='/yunohost/api/users/export' target='_BLANK'>exportar as túas usuarias a un ficheiro CSV</a> e edita o ficheiro.",
"users_import_update_desc": "Se está marcado, tódalas usuarias existentes contidas no ficheiro CSV vanse actualizar co novo valor",
"users_import_delete_desc": "Se está marcado, tódalas usuarias existentes que non están no ficheiro CSV van ser borradas (e eliminadas).",
"users_import_confirm_destructive": "Tes a certeza de querer eliminar as usuarias que non están presentes neste ficheiro?",
"users_import_delete_others": "Eliminar usuarias de fóra da lista",
"yunohost_admin": "Admin YunoHost",
"domain": {
"config": {
"edit": "Editar configuración do dominio",
"title": "Configuración do dominio"
},
"dns": {
"auto_config": "Configuración automática dos rexistros DNS",
"auto_config_ignored": "ignorado, YunoHost non o cambiará a menos que marques a opción de sobrescritura",
"auto_config_ok": "A configuración automática semella correcta!",
"auto_config_zone": "Zona DNS actual",
"edit": "Editar configuración DNS",
"info": "A configuración automática dos rexistros DNS é unha ferramenta experimental. <br>Considera gardar a configuración actual na interface da empresa rexistradora antes de realizar cambios desde aquí.",
"manual_config": "Rexistros DNS suxeridos para configuración manual",
"push": "Enviar rexistros DNS á rexistradora",
"push_force": "Sobrescribir rexistros existentes",
"push_force_warning": "Semella que algúns rexistros DNS que YunoHost querería configurar xa están establecidos na configuración. Podes usar a sobrescritura se sabes o que estás a facer.",
"push_force_confirm": "Tes a certeza de querer forzar a sobrescritura dos rexistros suxeridos? Ten en conta que poderías sobrescribir rexistros por defecto ou manuais establecidos na rexistradora.",
"methods": {
"auto": "Automático",
"handled_in_parent": "Xestionado polo dominio nai",
"manual": "Manual",
"none": "Ningún",
"semi_auto": "Semi-automático"
}
},
"cert": {
"types": {
"selfsigned": "Auto-asinado",
"letsencrypt": "Let's Encrypt",
"other": "Outro/Descoñecido"
},
"valid_for": "válido por {days}"
},
"info": {
"apps_on_domain": "Apps instaladas no dominio",
"certificate_authority": "Autoridade certificadora SSL",
"registrar": "Rexistradora",
"dyn_dns_remove_and_unsubscribe": "Tamén cancelar o rexistro do dominio no servizo DynDNS de YunoHost"
},
"see_parent_domain": "Ver dominio nai",
"types": {
"main_domain": "Dominio principal"
},
"toggle_subdomains": "Activar subdominios",
"explain": {
"main_domain": "O dominio principal é o dominio onde está o portal de acceso para as usuarias (vía \"{domain}/yunohost/sso\"). <br>Por tanto, non é posible eliminalo.<br>Se queres eliminar \"{domain}\", primeiro tes que escoller ou engadir outro dominio e establecelo como dominio principal."
},
"add": {
"from_registrar_desc": "Deberás configurar manualmente os rexistros DNS na empresa rexistradora para finalizar a configuración do dominio. O sistema de diagnóstico de YNH dirache exactamente os rexistros DNS que debes configurar.",
"from_yunohost_desc": "O proxecto YunoHost mantén un servizo gratuíto 'DynDNS'. Está limitado a un dominio por servidor (mais podes engadir subdominios usando a opción 'Engadir un dominio que posúo, ou un subdominio'). A configuración DNS vai ser xestionada automáticamente por YunoHost. Normalmente isto é o ideal para comezar a usar a auto-hospedaxe se aínda non queres mercar un dominio propio. Porén, a medio/longo prazo, recomendámosche usar o teu propio dominio para ter completo control sobre o dominio utilizado.",
"dyn_dns_password": "Contrasinal de recuperación do dominio",
"dyn_dns_password_desc": "Este contrasinal permitirache recuperar o control sobre o dominio se reinstalas o sistema. Se xa rexistraches con anterioridade o dominio, usa aquí o contrasinal de recuperación para reclamalo.",
"from_local": "Quero un dominio só para uso local ou probas",
"from_local_desc": "Se non precisas un nome de dominio público \"real\", podes usar calquera dominio que remate en <code>.local</code> ou <code>.test</code>. Os nomes de dominio <code>.local</code> son especiais no senso de que se resolven de xeito automático na rede local, se asumimos que os clientes teñen soporte para o protocolo Bonjour. Alternativamente, poderías precisar editar o ficheiro <code>/etc/hosts</code> (ou o equivalente en windows) en cada cliente que queira conectarse ao dominio, ou configurar as entradas do DNS local no teu rúter de internet.",
"from_registrar": "Quero engadir un dominio, ou subdominio, que xa posúo",
"from_yunohost": "Non teño un dominio, quero rexistrar/usar un dominio DynDNS de balde proporcionado por YunoHost"
}
},
"domain_dns_push_managed_in_parent_domain": "A ferramenta para os rexistros DNS automáticos están xestionados polo dominio nai <a href='#/domains/{parent_domain}/dns'>{parent_domain}</a>.",
"domain_dns_push_failed_to_authenticate": "Fallou a autenticación na API da empresa rexistradora. Serán incorrectas as <a href='#/domains/{domain}/config'>credenciais</a>? (Erro: {error})",
"domain_dns_push_not_applicable": "A ferramenta para rexistro automático DNS non é de aplicación ao dominio {domain}, <br> Deberías configurar manualmente os teus rexistros DNS seguindo a <a href='https://yunohost.org/dns'>documentación</a> e a configuración inferior suxerida.",
"text_selection_is_disabled": "A selección de texto está desactivada. Se queres compartir este rexistro, comparte o rexistro *completo* co botón 'Compartir con YunoHost'. <br/><small>Ou se realmente queres seleccionar un texto, preme estas teclas: ↓↓↑↑.</small>",
"retry": "Reintentar",
"app_state_broken": "estragado",
"app_state_broken_explanation": "Actualmente esta aplicación está estragada e non é instalable según o test automático que fai YunoHost",
"details_about": "Mostrar máis detalles sobre {subject}",
"group_admins": "Admins",
"group_explain_admins": "Este é un grupo especial para as usuarias administradoras. As usuarias deste grupo poden acceder á web de administración de YunoHost, conectarse ao servidor por SSH e usar o comando `sudo`. Tamén recibirán os emails enviados a root@, admin@ e admins@, por exemplo as notificacións do diagnóstico. Só deberías engadir a persoas nas que confías totalmente!",
"label_for_manifestname_help": "Este é o nome mostrado no portal da usuaria. Pódese cambiar despois.",
"manage_groups": "Xestionar grupos",
"tools_yunohost_settings": "Axustes YunoHost",
"wrong_password_or_username": "Credenciais incorrectas",
"confirm_install_app_broken": "AVISO! Esta aplicación está estragada se atendemos ao test automático que fai YunoHost e pode estragar o teu sistema! Probablemente NON debas instalala a menos que saibas o que estás a facer. Queres asumir o risco?",
"important_yunohost_upgrade": "Está dispoñible unha actualización principal de YunoHost. É totalmente recomendable ler con atención no foro as notas de publicación antes de actualizar: <a href='https://forum.yunohost.org/tag/ynh_release'>Le as notas de publicación no foro</a>",
"app": {
"installed_version": "Versión instalada:",
"open_this_app": "Abrir esta app",
"antifeatures": "Esta app ten características que poderían non gustarche:",
"doc": {
"about": {
"title": "Acerca de",
"description": "Descrición"
},
"admin": {
"title": "Doc Admin"
},
"notifications": {
"title": "Notificacións",
"post_upgrade": "Notas post actualización",
"post_install": "Notas post instalación",
"understood": "Entendo"
}
},
"info": {
"forum": "Busca ou pregunta no foro!",
"problem": "Tes un problema con esta app?",
"config_panel_error_please_report": "Por favor informa a YunoHost acerca deste erro para poder solucionalo!",
"config_panel_error": "Un erro fai que non se poida mostrar o panel de configuración:"
},
"install": {
"license": "Licenza: {license}",
"notifs": {
"post": {
"title": "Notificacións post instalación para '{name}'",
"alert": "Semella que a instalación foi correcta!\n Aquí tes información que as desenvolvedoras consideran debes coñecer.\nPodes lela cando queiras na páxina de info da app."
},
"pre": {
"warning": "Debes saber antes de instalar",
"danger": "A instalación da aplicación probablemente produza problemas",
"critical": "A aplicación non pode ser instalada"
}
},
"problems": {
"arch": "Esta app só se pode instalar en determinadas architecturas ({required}) pero a do teu servidor é {current}.",
"broken": "Esta aplicación está estragada segundo os test automáticos de YunoHost e probablemente estrague o teu sistema! Probablemente NON deberías instalala a menos saibas o que estás a facer.",
"thirdparty": "Esta aplicación non forma parte do catálogo oficial de YunoHost, ao instalar aplicacións de terceiras partes poderías estar comprometendo a integridade e seguridade do teu sistema. Non deberías facelo a menos que saibas o que estás facendo.",
"ignore": "Entendo que esta instalación podería estragar o meu sistema, pero quero facela igualmente.",
"inprogress": "Esta aplicación é aínda experimental (e pode que nin funcione) e é probable que estrague o teu sistema! Probablemente NON deberías instalala a menos que saibas o que estás a facer.",
"install": "Xa está instalada e non pode instalarse máis dunha vez.",
"lowquality": "Esta aplicación podería funcionar pero non ten integración completa en YunoHost. Algunhas características como o acceso unificado e copias de apoio poderían non estar dispoñibles, ou pode que non respecte as boas prácticas de empaquetamento.",
"ram": "Esta aplicación precisa {required} de RAM para instalar/actualizar pero só hai dispoñibles {current}. Incluso se a app funcionase, o proceso de instalación require moita RAM e o servidor podería fallar.",
"version": "Esta aplicación require YunoHost >= {required} pero a versión actual instalada é {current}, considera actualizar primeiro YunoHost."
},
"try_demo": "Proba a demo",
"version": "Versión actual: {version}"
},
"integration": {
"archs": "Arquitecturas soportadas:",
"ldap": {
"false": "Non usa as contas de YunoHost para o acceso (LDAP)",
"true": "Usa as contas de YunoHost para o acceso (LDAP)",
"?": "Non hai información sobre a integración LDAP"
},
"multi_instance": {
"false": "Só permite unha única instalación",
"true": "Permite varias instalacións"
},
"resources": "Uso de recursos habitual: {ram} RAM, {disk} disco",
"sso": {
"false": "Non dispoñible o acceso unificado (SSO)",
"true": "Dispoñible o acceso unificado (SSO)",
"?": "Non hai información sobre a integración SSO"
},
"title": "Integración con YunoHost"
},
"links": {
"admindoc": "Documentación oficial de Admin",
"code": "Repositorio oficial do código",
"forum": "Temas acerca desta app no foro YunoHost",
"package": "Repositorio do paquete YunoHost",
"title": "Ligazóns",
"userdoc": "Documentación oficial para usuarias",
"website": "Sitio Web Oficial",
"license": "Licenza da app",
"package_license": "Licenza do paquete YunoHost"
},
"potential_alternative_to": "Alternativa potencial para:",
"upgrade": {
"confirm": {
"apps": "Apps que van ser actualizadas",
"title": "Confirmar actualización das apps"
},
"continue": "Continuar coa seguinte app",
"notifs": {
"pre": {
"alert": "Deberías ler as notificacións antes de actualizar, podería haber información que debas coñecer.",
"title": "Ten coidado!"
},
"post": {
"alert": "Semella que todo foi ben!\n Esta é unha información acerca da actualización que as desenvolvedoras cren que debes coñecer.\nPodes lela cando queiras na páxina de información da app.",
"title": "Notificacións post-actualización para '{name}'"
}
},
"stop": "Cancelar as actualizacións da app seguinte"
},
"uninstall": {
"purge_desc": "Eliminar o directorio de datos asociados a esta app (normalmente son datos que ti subiches ao usar a app)."
}
}
} }

View file

@ -1,3 +0,0 @@
{
"action": "פעולה"
}

View file

@ -3,14 +3,5 @@
"action": "कार्रवाई", "action": "कार्रवाई",
"add": "जोड़े।", "add": "जोड़े।",
"administration_password": "एडमिनिस्ट्रेटर का पासवर्ड।", "administration_password": "एडमिनिस्ट्रेटर का पासवर्ड।",
"ok": "ठीक है", "ok": "ठीक है"
"address": {
"local_part_description": {
"domain": "एक उपडोमेन चुनें"
},
"domain_description": {
"email": "अपने ईमेल के लिए एक डोमेन चुनें।",
"domain": "एक डोमेन चुनें"
}
}
} }

View file

@ -1,695 +0,0 @@
{
"add": "Tambah",
"address": {
"domain_description": {
"email": "Pilih domain untuk surel Anda.",
"domain": "Pilih domain."
},
"local_part_description": {
"domain": "Pilih subdomain.",
"email": "Pilih bagian lokal untuk surel Anda."
}
},
"administration_password": "Kata sandi administrasi",
"all": "Semua",
"api": {
"processing": "Server sedang memproses tindakan…",
"query_status": {
"error": "Gagal",
"pending": "Sedang berjalan",
"success": "Berhasil diselesaikan",
"warning": "Berhasil diselesaikan disertai dengan galat atau peringatan"
},
"reconnecting": {
"reason": {
"reboot": "Server Anda sedang dimulai ulang dan tidak akan bisa dicapai selama beberapa saat. Layar masuk akan tersedia setelah server Anda bisa dicapai.",
"shutdown": "Server Anda telah dimatikan dan tidak lagi dapat dicapai. Nyalakan kembali dan layar masuk akan tersedia setelah server Anda bisa dicapai.",
"upgrade_system": "Koneksi dengan server telah ditutup untuk pemutakhiran YunoHost. Menunggu server sampai bisa dipergunakan lagi…",
"unknown": "Koneksi dengan server telah ditutup dengan alasan yang tidak diketahui."
},
"title": "Mencoba menghubungi server…",
"failed": "Sepertinya peladen tidak merespons. Anda bisa coba memuat ulang atau coba jalankan `systemctl restart yunohost-api` via SSH.",
"success": "Sekarang server bisa dipergunakan! Anda bisa mencoba untuk masuk"
},
"partial_logs": "[…] (periksa semua log di dalam riwayat)"
},
"api_error": {
"server_said": "Ketika memproses tindakan tersebut server mengatakan:",
"sorry": "Mohon maaf mengenai hal tersebut.",
"info": "Informasi berikut mungkin bisa berguna untuk orang yang akan membantu Anda:",
"error_message": "Pesan galat:",
"help": "Anda bisa mencari bantuan di <a href=\"https://forum.yunohost.org/\">forum</a> atau <a href=\"https://chat.yunohost.org/\">obrolan</a> agar bisa memperbaiki keadaan, atau laporkan bug di <a href=\"https://github.com/YunoHost/issues\">bugtracker</a>.",
"view_error": "Lihat galat"
},
"api_errors_titles": {
"APINotRespondingError": "API YunoHost tidak merespons",
"APIError": "YunoHost mengalami galat tak terduga",
"APIBadRequestError": "YunoHost mengalami sebuah galat",
"APIInternalError": "YunoHost mengalami sebuah galat internal",
"APIConnexionError": "YunoHost mengalami galat pada koneksi",
"APINotFoundError": "API YunoHost tidak dapat menemukan rutenya"
},
"all_apps": "Semua aplikasi",
"api_waiting": "Menunggu respons peladen…",
"app_choose_category": "Pilih sebuah kategori",
"app_info_access_desc": "Kelompok/pengguna yang diizinkan mengakses aplikasi ini:",
"app_info_change_url_disabled_tooltip": "Fitur ini belum diimplementasikan pada aplikasi ini",
"app_info_uninstall_desc": "Hapus aplikasi ini.",
"app_install_custom_no_manifest": "Tidak ada berkas manifest.json",
"app_install_parameters": "Pengaturan pemasangan",
"app_show_categories": "Tampilkan kategori",
"app_state_lowquality": "kualitas rendah",
"app_state_highquality_explanation": "Aplikasi ini terintegrasi dengan YunoHost dengan baik selama sekurang-kurangnya satu tahun.",
"applications": "Aplikasi",
"backup": "Pencadangan",
"backup_action": "Cadangkan",
"backup_new": "Cadangan baru",
"begin": "Mulai",
"both": "Keduanya",
"cancel": "Batal",
"catalog": "Katalog",
"close": "Tutup",
"code": "Kode",
"common": {
"firstname": "Nama depan",
"lastname": "Nama belakang"
},
"configuration": "Konfigurasi",
"confirm_change_maindomain": "Apakah Anda yakin ingin mengubah domain utama?",
"confirm_delete": "Apakah Anda yakin ingin menghapus {name}?",
"confirm_install_custom_app": "PERINGATAN! Memasang aplikasi pihak ketiga dapat membahayakan integritas serta keamanan sistem Anda. Anda sebaiknya TIDAK memasangnya kecuali Anda yakin dengan apa yang Anda lakukan. Apakah Anda ingin menerima risiko tersebut?",
"confirm_app_install": "Apakah Anda yakin ingin memasang aplikasi ini?",
"confirm_service_restart": "Apakah Anda yakin ingin memulai-ulang {name}?",
"confirm_service_start": "Apakah Anda yakin ingin memulai {name}?",
"confirm_service_stop": "Apakah Anda yakin ingin menghentikan {name}?",
"confirm_update_apps": "Apakah Anda yakin ingin memperbarui semua aplikasi?",
"confirm_update_specific_app": "Apakah Anda yakin ingin memperbarui {app}?",
"confirm_upnp_enable": "Apakah Anda yakin ingin mengaktifkan UPnP?",
"confirm_upnp_disable": "Apakah Anda yakin ingin menonaktifkan UPnP?",
"confirm_reboot_action_reboot": "Apakah Anda yakin ingin memulai ulang peladen Anda?",
"confirm_reboot_action_shutdown": "Apakah Anda yakin ingin mematikan peladen Anda?",
"created_at": "Dibuat pada",
"day_validity": " Kedaluwarsa | 1 hari | {count} hari",
"dead": "Nonaktif",
"delete": "Hapus",
"description": "Deskripsi",
"details": "Keterangan",
"diagnosis": "Diagnosis",
"disable": "Nonaktifkan",
"disabled": "Dinonaktifkan",
"dns": "DNS",
"domain_add": "Tambahkan domain",
"domain_delete_longdesc": "Hapus domain ini",
"download": "Unduh",
"enable": "Aktifkan",
"enabled": "Diaktifkan",
"error": "Galat",
"since": "sejak",
"skip": "Lewati",
"start": "Mulai",
"status": "Status",
"password": "Kata sandi",
"human_routes": {
"upgrade": {
"system": "Perbarui sistem",
"apps": "Perbarui semua aplikasi",
"app": "Perbarui aplikasi '{app}'"
},
"reboot": "Mulai ulang peladen",
"services": {
"restart": "Mulai ulang layanan '{name}'",
"start": "Jalankan layanan '{name}'",
"stop": "Hentikan layanan '{name}'"
},
"users": {
"create": "Buat pengguna '{name}'",
"delete": "Hapus pengguna '{name}'",
"update": "Perbarui pengguna '{name}'"
},
"shutdown": "Matikan peladen",
"update": "Periksa pembaruan",
"diagnosis": {
"run_specific": "Jalankan diagnosis '{description}'",
"run": "Jalankan diagnosis",
"ignore": {
"warning": "Abaikan peringatan",
"error": "Abaikan galat"
},
"unignore": {
"error": "Batal abaikan galat",
"warning": "Batal abaikan peringatan"
}
},
"apps": {
"install": "Pasang aplikasi '{name}'",
"uninstall": "Lepas aplikasi '{name}'",
"change_url": "Ubah URL akses dari '{name}'",
"set_default": "Mengalihkan pangkal domain '{domain}' ke '{name}'",
"change_label": "Ubah label '{prevName}' menjadi '{nextName}'",
"dismiss_notification": "Abaikan pemberitahuan untuk '{name}'",
"action_config": "Jalankan tindakan '{action}' dari konfigurasi aplikasi '{name}'",
"update_config": "Perbarui panel '{id}' dari konfigurasi aplikasi '{name}'"
},
"domains": {
"add": "Tambahkan domain '{name}'",
"delete": "Hapus domain '{name}'",
"cert_install": "Pasang sertifikat untuk '{name}'",
"cert_renew": "Perbarui sertifikat untuk '{name}'",
"set_default": "Atur '{name}' sebagai domain utama",
"push_dns_changes": "Kirim rekaman DNS ke registrar untuk '{name}'",
"update_config": "Perbarui panel '{id}' dari konfigurasi domain '{name}'"
},
"backups": {
"delete": "Hapus cadangan '{name}'",
"restore": "Pulihkan cadangan '{name}'",
"create": "Buat cadangan"
},
"groups": {
"create": "Buat kelompok '{name}'",
"delete": "Hapus kelompok '{name}'",
"add": "Tambahkan pengguna '{user}' ke kelompok '{name}'",
"remove": "Hapus pengguna '{user}' dari kelompok '{name}'"
},
"share_logs": "Buat tautan untuk log '{name}'",
"firewall": {
"upnp": "{action} UPnP",
"ports": "{action} porta {port} ({protocol}, {connection})"
},
"reconnecting": "Menyambungkan ulang",
"permissions": {
"remove": "Hapus izin '{name}' untuk mengakses '{perm}'",
"add": "Izinkan '{name}' untuk mengakses '{perm}'"
},
"postinstall": "Jalankan pasca pemasangan",
"migrations": {
"run": "Jalankan migrasi",
"skip": "Lewati migrasi"
},
"settings": {
"update": "Perbarui pengaturan '{panel}' global"
}
},
"save": "Simpan",
"search": {
"not_found": "Ada {items} yang sesuai dengan kriteria Anda. | Ada 1 {items} yang sesuai kriteria Anda. | Ada {items} yang sesuai kriteria Anda.",
"for": "Cari {items}…"
},
"select_all": "Pilih semua",
"stop": "Berhenti",
"system": "Sistem",
"system_apps_nothing": "Semua aplikasi sudah mutakhir!",
"system_upgrade_all_applications_btn": "Perbarui semua aplikasi",
"system_upgrade_all_packages_btn": "Perbarui semua paket (package)",
"tcp": "TCP",
"tools_shutdown": "Matikan peladen Anda",
"tools_shutdown_btn": "Matikan",
"tools_shutdown_reboot": "Matikan/Mulai Ulang",
"tools_webadmin": {
"language": "Bahasa",
"fallback_language_description": "Bahasa yang akan digunakan jika terjemahan tidak tersedia di bahasa utama.",
"cache": "Tembolok",
"cache_description": "Pertimbangkan menonaktifkan tembolok jika Anda ingin menggunakan CLI sembari menggunakan administrasi web.",
"experimental": "Mode eksperimental",
"theme": "Beralih mode gelap",
"fallback_language": "Bahasa alternatif",
"transitions": "Animasi transisi halaman",
"experimental_description": "Memberikan Anda akses ke fitur eksperimental. Ini ditimbang sebagai tidak stabil dan mungkin akan merusak sistem Anda.<br> Aktifkan ini jika Anda tahu apa yang Anda lakukan."
},
"user_fullname": "Nama lengkap",
"users_import_csv_file": "Berkas CSV",
"warnings": "{count} peringatan",
"certificate_manage": "Kelola sertifikat SSL",
"ok": "Oke",
"run": "Jalankan",
"system_update": "Pembaruan sistem",
"system_upgrade_btn": "Perbarui",
"tools": "Alat",
"tools_reboot": "Mulai ulang peladen Anda",
"tools_reboot_btn": "Mulai ulang",
"upnp": "UPnP",
"upnp_disabled": "UPnP tidak aktif.",
"upnp_enabled": "UPnP aktif.",
"url": "URL",
"user_email": "Surel",
"user_interface_link": "Antarmuka pengguna",
"users_import_confirm_destructive": "Apakah Anda yakin ingin menghapus pengguna yang tidak ada di dalam berkas ini?",
"version": "Versi",
"yes": "Ya",
"yunohost_admin": "Admin YunoHost",
"running": "Berjalan",
"service_start_on_boot": "Mulai saat sistem dimulai",
"services": "Layanan",
"size": "Ukuran",
"tools_webadmin_settings": "Pengaturan administrasi web",
"udp": "UDP",
"unignore": "Jangan diabaikan",
"unknown": "Tidak diketahui",
"user_username": "Nama pengguna",
"user_username_edit": "Sunting akun milik {name}",
"users": "Pengguna",
"users_new": "Pengguna baru",
"users_no": "Tidak ada pengguna.",
"certificate": "Sertifikat",
"purge_user_data_checkbox": "Bersihkan data milik {name}? (Ini akan menghapus isi direktori home dan mail mereka)",
"purge_user_data_warning": "Membersihkan data pengguna tidak dapat dibatalkan. Pastikan Anda yakin dengan perbuatan Anda!",
"domain_dns_config": "Konfigurasi DNS",
"domain_dns_longdesc": "Lihat konfigurasi DNS",
"footer": {
"help": "Butuh bantuan?",
"donate": "Berdonasi",
"documentation": "Dokumentasi"
},
"form_errors": {
"notInUsers": "Pengguna '{value}' sudah ada.",
"passwordLenght": "Kata sandi harus memiliki sekurang-kurangnya 8 karakter.",
"pattern": "{type}",
"remote": "{message}",
"passwordMatch": "Kata sandi tidak sama.",
"required": "Bidang ini diperlukan.",
"appRepoUrl": "URL depot aplikasi YunoHost seharusnya seperti https://domain.tld/jalur/ke/repo_ynh",
"invalid_form": "Ada galat di formulir ini.",
"maxValue": "Harus sama atau lebih kecil dari {max}.",
"alpha": "Harus berupa huruf alfabet saja.",
"minValue": "Harus sama atau lebih besar dari {min}.",
"name": "Nama tidak diperbolehkan mengandung karakter spesial lain kecuali <code> ,.'-</code>",
"number": "Harus berupa angka.",
"between": "Harus di antara {min} dan {max}.",
"dynDomain": "Nama domain tidak valid: Huruf kecil, angka, dan tanda hubung saja",
"domain": "Nama domain tidak valid: Huruf kecil, angka, titik dan tanda hubung saja",
"email": "Surel tidak valid: Huruf, angka, dan <code>_.-</code> saja (cth. blabla@contoh.com, b1la-2@contoh.com)",
"alphalownumdot_": "Harus hanya berupa karakter alfanumerik kecil dan garis bawah.",
"emailForward": "Penerusan surel tidak valid: harus alfanumerik dan hanya karakter <code>_.-+</code> (misal. someone+tag@example.com, s0me-1+tag@example.com)"
},
"form_input_example": "Contoh: {example}",
"group": "Kelompok",
"group_name": "Nama kelompok",
"group_all_users": "Semua pengguna",
"group_visitors": "Pengunjung",
"group_add_member": "Tambahkan pengguna",
"history": {
"is_empty": "Tidak ada apapun di riwayat saat ini.",
"last_action": "Tindakan terakhir:",
"methods": {
"DELETE": "hapus",
"GET": "baca",
"POST": "buat/eksekusi",
"PUT": "modifikasi"
},
"title": "Riwayat"
},
"domain": {
"config": {
"title": "Konfigurasi domain",
"edit": "Sunting konfigurasi domain"
},
"cert": {
"types": {
"selfsigned": "Disertifikasi sendiri",
"letsencrypt": "Let's Encrypt",
"other": "Lainnya/Tidak diketahui"
},
"valid_for": "berlaku untuk {days}"
},
"toggle_subdomains": "Alih subdomain",
"types": {
"main_domain": "Domain utama"
},
"dns": {
"auto_config_ok": "Konfigurasi otomatis sepertinya oke!",
"push_force": "Timpa rekaman yang ada",
"auto_config": "Konfigurasi rekaman DNS otomatis",
"auto_config_ignored": "diabaikan, tidak akan diubah oleh YunoHost kecuali Anda mencentang opsi timpa",
"auto_config_zone": "Zona DNS saat ini",
"methods": {
"auto": "Otomatis",
"handled_in_parent": "Dikelola di domain induk",
"manual": "Manual",
"none": "Tidak ada",
"semi_auto": "Semi-otomatis"
},
"edit": "Sunting konfigurasi DNS",
"manual_config": "DNS yang disarankan untuk konfigurasi manual",
"push_force_confirm": "Apakah Anda yakin ingin mengirim paksa semua rekaman DNS ini? Perlu diketahui bahwa itu bisa menimpa konfigurasi rekaman atau rekaman baku yang sudah diatur oleh Anda atau registrar Anda.",
"info": "Konfigurasi rekaman DNS otomatis merupakan fitur eksperimental. <br>Disarankan untuk menyimpan zona DNS Anda saat ini dari registrar DNS Anda sebelum mengirim rekaman dari sini.",
"push": "Kirim rekaman DNS ke registrar",
"push_force_warning": "Sepertinya ada beberapa rekaman DNS yang direkomendasikan YunoHost telah ada di konfigurasi registrar. Anda bisa menggunakan opsi untuk menimpa mereka jika Anda tahu apa yang Anda lakukan."
},
"info": {
"apps_on_domain": "Aplikasi yang dipasang di domain",
"registrar": "Registrar",
"certificate_authority": "Otoritas Sertifikat SSL",
"dyn_dns_remove_and_unsubscribe": "Sekaligus batalkan pendaftaran domain dari layanan DynDNS YunoHost"
},
"see_parent_domain": "Lihat domain induk",
"explain": {
"main_domain": "Domain utama adalah domain di mana pengguna terhubung ke portal (via \"{domain}/yunohost/sso\").<br>Karena itu, domain tersebut tidak bisa dihapus.<br>Jika Anda ingin menghapus \"{domain}\", Anda harus mengatur atau menambah domain lain dan menunjuknya menjadi domain utama."
},
"add": {
"dyn_dns_password": "Sandi pemulihan domain",
"dyn_dns_password_desc": "Sandi ini memungkinkan anda memulihkan kendali domain apabila nanti anda memasang ulang sistem anda. Jika anda sudah mendaftarkan domain ini sebelumnya, gunakan sandi pemulihan anda di sini untuk mengklaimnya.",
"from_local": "Saya ingin satu domain untuk penggunaan / tes lokal saja",
"from_registrar": "Saya ingin menambahkan satu domain yang saya miliki, atau satu subdomain",
"from_registrar_desc": "Anda perlu mengonfigurasi catatan DNS secara manual pada registrar anda untuk menyelesaikan konfigurasi domain ini. Diagnosa YunoHost akan memandu anda tentang catatan DNS apa yang harus dikonfigurasi secara tepat.",
"from_yunohost": "Saya tidak memiliki domain, Saya ingin mendaftar/menggunakan domain DynDNS gratis yang disediakan oleh proyek YunoHost",
"from_yunohost_desc": "Proyek YunoHost mempertahankan layanan 'DynDNS' gratis. Ini terbatas pada satu domain per server (meskipun anda juga dapat menambahkan sub-domain nanti menggunakan opsi 'Tambahkan domain yang saya miliki, atau subdomain' lainnya di atas). Konfigurasi DNS akan ditangani secara otomatis oleh YunoHost. Ini sangat ideal ketika memulai dengan hosting mandiri secara umum dan anda belum ingin berinvestasi dalam nama domain. Namun, dalam jangka menengah/panjang, kami sarankan untuk membeli nama domain anda sendiri ke beberapa registrar agar anda memiliki kepemilikan penuh atas domain anda.",
"from_local_desc": "Jika anda tidak ingin satu nama domain publik \"aktual\", anda dapat menggunakan apa saja yang berakhiran dengan <code>.local</code> atau <code>.test</code>. Nama domain yang diakhiri dengan <code>.local</code> adalah istimewa dalam artian bahwa mereka secara otomatis akan berubah kepada jaringan lokal, dengan asumsi klien mendukung protokol Bonjour. Alternatifnya, anda mungkin perlu melakukan penyesuaian pada berkas <code>/etc/hosts</code> (atau yang setara dengan Windows) pada setiap klien yang ingin anda gunakan dari domain ini, atau untuk mengkonfigurasi entri di router internet anda."
}
},
"error_server_unexpected": "Galat peladen tak terduga",
"everything_good": "Semuanya bagus!",
"experimental": "Eksperimental",
"footer_version": "Ditenegai oleh <a href='https://yunohost.org'>YunoHost</a> {version} ({repo}).",
"go_back": "Kembali",
"group_explain_all_users": "Ini adalah kelompok istimewa yang mengandung semua akun pengguna di peladen ini",
"home": "Beranda",
"hook_adminjs_group_configuration": "Konfigurasi sistem",
"hook_conf_ldap": "Basis data pengguna",
"hook_conf_ynh_settings": "Konfigurasi YunoHost",
"restart": "Mulai ulang",
"protocol": "Protokol",
"readme": "Bacalah",
"rerun_diagnosis": "Jalankan diagnosis lagi",
"open": "Buka",
"hook_data_xmpp": "Data XMPP",
"ignored": "{count} diabaikan",
"infos": "Informasi",
"logout": "Keluar",
"hook_data_home": "Data pengguna",
"hook_data_home_desc": "Data pengguna terletak di /home/PENGGUNA",
"install": "Pasang",
"install_name": "Pasang {id}",
"install_time": "Waktu pemasangan",
"installation_complete": "Pemasangan selesai",
"installed": "Terpasang",
"ipv4": "IPv4",
"ipv6": "IPv6",
"issues": "{count} masalah",
"label": "Label",
"last_ran": "Terakhir dijalankan:",
"license": "Lisensi",
"login": "Masuk",
"no": "Tidak",
"only_highquality_apps": "Hanya aplikasi berkualitas tinggi",
"only_working_apps": "Hanya aplikasi yang dapat bekerja",
"only_decent_quality_apps": "Hanya aplikasi yang lumayan berkualitas",
"placeholder": {
"username": "mamat",
"firstname": "Sam",
"lastname": "Bambang",
"domain": "domainku.com",
"groupname": "Nama kelompok saya",
"fullname": "John Doe",
"file": "Jelajahi berkas atau seret dan jatuhkan di sini"
},
"postinstall_intro_1": "Selamat! YunoHost berhasil dipasang.",
"postinstall_intro_3": "Anda dapat mendapatkan lebih banyak informasi dengan mengunjungi <a href='//yunohost.org/en/install/hardware:vps_debian#fa-cog-proceed-with-the-initial-configuration' target='_blank'>halaman dokumentasinya</a>",
"app": {
"install": {
"notifs": {
"post": {
"title": "Catatan setelah pemasangan untuk '{name}'",
"alert": "Sepertinya pemasangannya lancar!\nBerikut beberapa catatan pengelola paket yang cukup penting untuk diketahui.\nAnda bisa membacanya kembali di halaman informasi aplikasi."
},
"pre": {
"warning": "Hal-hal yang perlu diketahui sebelum pemasangan",
"danger": "Pemasangan aplikasi ini sepertinya akan mengakibatkan beberapa isu",
"critical": "Aplikasi tidak dapat dipasang"
}
},
"problems": {
"arch": "Aplikasi ini hanya bisa dipasang pada arsitektur tertentu ({required}) tapi arsitektur peladen Anda adalah {current}.",
"broken": "Aplikasi ini rusak menurut uji coba otomatis YunoHost dan mungkin akan merusak sistem Anda! Sebaiknya Anda TIDAK memasangnya kecuali Anda yakin dengan apa yang Anda lakukan.",
"thirdparty": "Aplikasi ini bukan bagian dari katalog resmi YunoHost, memasang aplikasi pihak ketiga dapat membahayakan integritas serta keamanan sistem Anda. Anda sebaiknya TIDAK memasangnya kecuali Anda yakin dengan apa yang Anda lakukan.",
"ignore": "Saya mengerti bahwa pemasangan ini mungkin akan merusak sistem saya tapi saya tetap ingin mencobanya.",
"inprogress": "Aplikasi ini masih eksperimental (jika tidak secara jelas tidak bekerja) dan mungkin akan merusak sistem Anda! Sebaiknya Anda TIDAK memasangnya kecuali Anda yakin dengan apa yang Anda lakukan.",
"install": "Telah dipasang dan tidak dapat dipasang lebih dari sekali.",
"lowquality": "Aplikasi ini mungkin bisa bekerja tapi tidak terintegrasi dengan baik di YunoHost. Beberapa fitur seperti SSO dan pencadangan mungkin tidak tersedia.",
"ram": "Aplikasi ini memerlukan RAM sebanyak {required} untuk pemasangan/pembaruan tapi hanya {current} yang tersedia sekarang. Meski aplikasi ini bisa bekerja, proses pemasangannya memerlukan RAM yang banyak sehingga peladen Anda bisa rusak atau prosesnya gagal total.",
"version": "Aplikasi ini memerlukan YunoHost >= {required} tapi versi yang terpasang adalah {current}, silakan YunoHost-nya diperbarui terlebih dahulu."
},
"license": "Lisensi: {license}",
"try_demo": "Coba demonstrasi",
"version": "Versi saat ini: {version}"
},
"integration": {
"multi_instance": {
"false": "Hanya bisa dipasang sekali",
"true": "Bisa dipasang berkali-kali"
},
"sso": {
"?": "Tidak ada informasi tentang integrasi SSO",
"false": "SSO tidak tersedia",
"true": "SSO tersedia"
},
"title": "Integrasi YunoHost",
"archs": "Arsitektur yang didukung:",
"ldap": {
"false": "Tidak menggunakan akun YunoHost untuk masuk (LDAP)",
"true": "Menggunakan akun YunoHost untuk masuk (LDAP)",
"?": "Tidak ada informasi tentang integrasi LDAP"
},
"resources": "Penggunaan sumber daya: {ram} RAM, {disk} diska"
},
"links": {
"admindoc": "Dokumentasi Admin Resmi",
"code": "Depot Kode Resmi",
"forum": "Topik tentang aplikasi ini di forum YunoHost",
"package": "Depot Paket YunoHost",
"title": "Tautan",
"userdoc": "Dokumentasi Pengguna Resmi",
"website": "Situs Resmi",
"license": "Lisensi aplikasi",
"package_license": "Lisensi paket YunoHost"
},
"potential_alternative_to": "Alternatif dari:",
"upgrade": {
"confirm": {
"apps": "Aplikasi yang akan diperbarui",
"title": "Konfirmasi pembaruan aplikasi"
},
"continue": "Ke aplikasi selanjutnya",
"notifs": {
"pre": {
"alert": "Anda sebaiknya periksa catatan tersebut sebelum pembaruan, mungkin ada informasi penting yang perlu diketahui.",
"title": "Peringatan!"
},
"post": {
"alert": "Sepertinya pemasangannya lancar!\n Berikut beberapa catatan yang pengelola paket rasa cukup penting untuk diketahui tentang pembaruan ini.\nAnda bisa membacanya kembali di halaman informasi aplikasi.",
"title": "Catatan setelah pembaruan untuk '{name}'"
}
},
"stop": "Batalkan pembaruan aplikasi berikutnya"
},
"installed_version": "Versi terpasang:",
"open_this_app": "Buka aplikasi ini",
"antifeatures": "Aplikasi ini memiliki fitur yang mungkin Anda tidak suka:",
"doc": {
"about": {
"title": "Tentang",
"description": "Deskripsi"
},
"admin": {
"title": "Dokumentasi admin"
},
"notifications": {
"title": "Pemberitahuan",
"post_upgrade": "Catatan setelah pembaruan",
"post_install": "Catatan setelah pemasangan",
"understood": "Mengerti"
}
},
"info": {
"forum": "Cari atau tanyakan di forum!",
"problem": "Masalah dengan aplikasi ini?",
"config_panel_error": "Satu kesalahan mengakibatkan panel konfigurasi tidak dapat ditampilkan:",
"config_panel_error_please_report": "Harap melaporkan galat ini kepada tim YunoHost agar dapat diperbaiki!"
},
"uninstall": {
"purge_desc": "Singkirkan direktori data yang berkaitan dengan aplikasi (biasanya ini adalah data yang anda unggah sendiri menggunakan aplikasi)."
}
},
"app_state_inprogress_explanation": "Pengelola aplikasi ini menyatakan bahwa aplikasi ini belum siap untuk penggunaan umum. HATI-HATI!",
"group_explain_visitors": "Ini adalah kelompok khusus yang mewakili pengunjung awanama",
"group_explain_visitors_needed_for_external_client": "Perlu diingat bahwa Anda memerlukan beberapa aplikasi untuk dibuka ke pengunjung (visitors) jika Anda ingin menggunakan mereka dengan aplikasi eksternal. Sebagai contoh, Nextcloud perlu dibuka jika Anda ingin menggunakan aplikasi sinkronisasi di ponsel atau komputer Anda.",
"port": "Porta",
"restore": "Pulihkan",
"tools_yunohost_settings": "Pengaturan YunoHost",
"action": "Tindakan",
"api_not_found": "Sepertinya web administrasi mencoba mengkueri sesuatu yang tidak ada.",
"api_not_responding": "API YunoHost tidak merespons. Mungkin 'yunohost-api' mati atau sedang dimulai ulang?",
"app_make_default": "Jadikan aplikasi utama",
"app_state_inprogress": "belum selesai",
"app_state_lowquality_explanation": "Aplikasi ini mungkin bisa bekerja, tapi masih memiliki masalah atau belum sepenuhnya terintegrasi dengan YunoHost atau tidak mengikuti panduan umum.",
"backup_content": "Konten cadangan",
"backup_create": "Buat cadangan",
"archive_empty": "Arsip kosong",
"check": "Periksa",
"confirm_app_change_url": "Apakah Anda yakin ingin mengubah URL akses aplikasi ini?",
"confirm_update_system": "Apakah Anda yakin ingin memperbarui semua paket sistem?",
"custom_app_install": "Pasang aplikasi lain",
"connection": "Koneksi",
"domain_default_longdesc": "Ini adalah domain utama Anda.",
"domains": "Domain",
"hook_data_mail": "Surel",
"group_new": "Kelompok baru",
"groups_and_permissions": "Kelompok dan izin",
"groups_and_permissions_manage": "Kelola kelompok dan izin",
"permissions": "Izin",
"ports": "Porta",
"postinstall_set_domain": "Atur domain utama",
"users_export": "Ekspor pengguna",
"words": {
"browse": "Jelajah",
"default": "Baku",
"link": "Tautan",
"none": "Tidak ada",
"separator": ", ",
"valid": "Valid",
"collapse": "Perkecil"
},
"domain_name": "Nama domain",
"hook_conf_manually_modified_files": "Konfigurasi yang diubah secara manual",
"hook_conf_ynh_certs": "Sertifikat SSL",
"app_state_broken": "rusak",
"app_state_broken_explanation": "Saat ini, aplikasi ini rusak dan tidak dapat dipasang menurut uji coba otomatis YunoHost",
"group_admins": "Admin",
"group_explain_admins": "Ini adalah kelompok khusus yang memuat pengguna administrator. Pengguna di kelompok ini bisa mengakses web administrasi YunoHost, terhubung ke peladen dengan SSH, dan menggunakan perintah `sudo`. Yang di kelompok tersebut juga akan menerima surel yang dikirim ke root@, admin@, dan admins@ seperti pemberitahuan diagnosis. Anda sebaiknya menambahkan orang-orang yang Anda sangat percaya ke kelompok ini!",
"password_confirmation": "Konfirmasi kata sandi",
"app_info_changeurl_desc": "Ubah URL akses aplikasi ini (domain dan/atau jalur).",
"confirm_uninstall": "Apakah Anda yakin ingin melepas {name}?",
"from_to": "dari {0} ke {1}",
"group_add_permission": "Tambahkan izin",
"group_specific_permissions": "Izin pengguna",
"multi_instance": "Bisa dipasang berkali-kali",
"previous": "Sebelumnya",
"set_default": "Atur yang baku",
"confirm_restore": "Apakah Anda yakin ingin memulihkan {name}?",
"confirm_install_domain_root": "Apakah Anda yakin ingin memasang aplikasi ini di '/'? Anda tidak akan dapat memasang aplikasi lain di {domain}",
"details_about": "Tampilkan lebih banyak detail tentang {subject}",
"wrong_password_or_username": "Nama pengguna atau kata sandi salah",
"firewall": "Tembok Api",
"user_new_forward": "terusanbaru@domainlainku.org",
"experimental_warning": "Peringatan: fitur ini bersifat eksperimental dan belum bisa diputuskan sebagai stabil, Anda jangan menggunakannya kecuali jika Anda mengetahui apa yang Anda lakukan.",
"users_import": "Impor pengguna",
"app_info_default_desc": "Alihkan pangkal domain ke aplikasi ini ({domain}).",
"diagnosis_explanation": "Fitur diagnosis akan berusaha mencari masalah umum di setiap aspek peladen Anda untuk memastikan semuanya berjalan dengan baik. Diagnosis akan berjalan secara otomatis dua kali sehari dan sebuah surel akan dikirim ke administrator jika ada masalah yang ditemukan. Perlu dicatat bahwa beberapa uji coba mungkin tidak akan relevan jika Anda tidak ingin beberapa fitur (seperti XMPP) atau mungkin gagal jika Anda memiliki pengaturan yang kompleks. Jika begitu dan jika Anda mengetahui apa yang Anda lakukan, dipersilakan untuk mengabaikan masalah atau peringatan tersebut.",
"diagnosis_first_run": "Fitur diagnosis akan berusaha mencari masalah umum di setiap aspek peladen Anda untuk memastikan semuanya berjalan dengan baik. Mohon jangan panik jika Anda melihat banyak galat setelah Anda mengatur peladen Anda, itu ditujukan untuk membantu Anda menemukan masalahnya dan membantu Anda memperbaikinya. Diagnosis juga akan berjalan secara otomatis dua kali sehari dan sebuah surel akan dikirim ke administrator jika ada masalah yang ditemukan.",
"domain_add_dyndns_forbidden": "Anda sudah terdaftar/berlangganan ke satu domain DynDNS dari proyek YunoHost. Sesuai desain, fitur ini terbatas pada satu domain per server. Apabila Anda ingin menambahkan satu subdomain di domain Anda yang sudah ada, harap menggunakan opsi 'Tambah satu domain yang sudah saya miliki, atau satu subdomain' di atas. Apabila Anda ingin menggunakan domain yang berbeda, Anda harus menghapus domain DynDNS yang sudah ada. Domain DynDNS bagus apabila dipergunakan untuk hos mandiri, tetapi untuk jangka menengah/panjang, kami merekomendasikan kepada Anda agar membeli nama domain Anda sendiri pada suatu regstrar untuk kepemilikan penuh atas domain Anda.",
"domain_default_desc": "Domain utama adalah domain di mana pengguna masuk ke SSO.",
"error_connection_interrupted": "Server menutup koneksi alih-alih menjawabnya. Apakah nginx atau yunohost-api dimulai ulang atau terhenti untuk beberapa alasan?",
"good_practices_about_admin_password": "Sekarang Anda akan menentukan kata sandi admin baru. Kata sandi harus terdiri dari minimal 8 karakter - meskipun sebaiknya menggunakan kata sandi yang lebih panjang (misalnya parafrasa) dan/atau menggunakan beragam karakter (huruf besar, huruf kecil, angka, dan karakter khusus).",
"good_practices_about_user_password": "Sekarang Anda akan menentukan kata sandi pengguna baru. Kata sandi harus terdiri dari minimal 8 karakter - meskipun sebaiknya menggunakan kata sandi yang lebih panjang (misalnya parafrasa) dan/atau menggunakan beragam karakter (huruf besar, huruf kecil, angka, dan karakter khusus).",
"label_for_manifestname_help": "Ini adalah nama yang ditampilkan di portal pengguna. Bisa diubah lagi nanti.",
"manage_apps": "Kelola aplikasi",
"postinstall": {
"user": {
"first_user_help": "Pengguna ini akan diberikan hak administrator dan akan diperbolehkan untuk terhubung ke antarmuka administrasi atau lewat SSH.\nSeperti layaknya pengguna biasa, Anda juga bisa terhubung ke SSO dengan kredensialnya.\nSetelah pemasangan selesai, Anda bisa membuat pengguna administrator lain dengan menambahkan mereka ke kelompok 'admins'.",
"title": "Buat pengguna administrator pertama"
},
"force": "Paksakan langkah setelah pemasangan",
"title": "Langkah Setelah Pemasangan"
},
"postinstall_domain": "Ini adalah domain pertama yang ditautkan ke peladen YunoHost Anda dan yang akan digunakan oleh pengguna peladen Anda untuk mengakses SSO. Ini akan terlihat ke semua orang, jadi pilih dengan bijak.",
"retry": "Ulang",
"system_packages_nothing": "Semua paket sistem sudah mutakhir!",
"text_selection_is_disabled": "Pemilihan teks dinonaktifkan. Jika Anda ingin membagikan log ini, silakan bagikan log dengan tombol 'Bagikan dengan Yunopaste'.<br/><small>Atau jika Anda benar-benar ingin pemilihan teks, tekan tombol ini: ↓↓↑↑.</small>",
"confirm_group_add_access_permission": "Apakah Anda yakin ingin memberi akses {perm} ke {name}? Akses tersebut bisa meningkatkan ancaman jika {name} merupakan orang jahat. Anda sebaiknya lakukan ini jika Anda PERCAYA kepada orang tersebut.",
"confirm_migrations_skip": "Melewati migrasi tidak direkomendasikan. Apakah Anda yakin ingin melewatinya?",
"confirm_install_app_inprogress": "PERINGATAN! Aplikasi ini masih bersifat eksperimental (bila tidak secara jelas tidak dapat bekerja) dan mungkin akan merusak sistem Anda! Sebaiknya Anda TIDAK memasangnya kecuali Anda yakin dengan apa yang Anda lakukan. Apakah Anda ingin mengambil risiko tersebut?",
"run_first_diagnosis": "Jalankan diagnosis pertama",
"domain_delete_forbidden_desc": "Anda tidak bisa menghapus '{domain}' dikarenakan itu adalah domain utama, Anda harus memilih domain lain (atau <a href='#/domains/add'>tambahkan yang baru</a>) dan atur itu menjadi domain utama supaya bisa menghapus domain ini.",
"hook_data_xmpp_desc": "Konfigurasi pengguna dan ruangan, berkas unggahan",
"hook_data_mail_desc": "Mentahan surel yang tersimpan di peladen",
"id": "ID",
"items": {
"services": "tidak ada layanan | layanan | {c} layanan",
"users": "tidak ada pengguna | pengguna | {c} pengguna",
"backups": "tidak ada cadangan | cadangan | {c} cadangan",
"logs": "tidak ada log | log | {c} log",
"permissions": "tidak ada perizinan | perizinan | {c} perizinan",
"apps": "tidak ada aplikasi | aplikasi | {c} aplikasi",
"domains": "tidak ada domain | domain | {c} domain",
"groups": "tidak ada kelompok | kelompok | {c} kelompok",
"installed_apps": "tidak ada aplikasi yang terpasang | aplikasi yang terpasang | {c} aplikasi yang terpasang"
},
"migrations_no_pending": "Tidak ada migrasi yang tertunda",
"orphaned_details": "Aplikasi ini sudah tidak dikelola beberapa lama. Mungkin masih bekerja, tapi tidak akan menerima pembaruan sampai orang lain mengelolanya. Silakan jika Anda mau untuk berkontribusi mengelolanya!",
"others": "Lain-lain",
"logs_service": "Log layanan",
"path": "Jalur",
"logs_app": "Log aplikasi",
"logs_share_with_yunopaste": "Bagikan log dengan YunoPaste",
"tip_about_user_email": "Pengguna dibuat dengan alamat surelnya (dan akun XMPP) tersendiri dengan format namapengguna@domain.tld. Surel tambahan seperti alias surel dan surel terusan bisa ditambahkan oleh administrator dan pengguna itu sendiri.",
"user_emailforward": "Surel terusan",
"user_emailforward_add": "Tambah surel terusan",
"user_emailaliases_add": "Tambah alias surel",
"mailbox_quota_description": "Atur batas ukuran penyimpanan untuk konten surel.<br>Atur ke 0 untuk menonaktifkannya.",
"logs": "Log",
"logs_suboperations": "Sub-tindakan",
"logs_context": "Konteks",
"logs_history": "Riwayat perintah yang dijalankan pada sistem",
"logs_more": "Tampilkan lebih banyak",
"logs_package": "Riwayat pengelolaan paket Debian",
"mailbox_quota_example": "700M pada CD, 4700M pada DVD",
"mailbox_quota_placeholder": "Atur ke 0 untuk menonaktifkan.",
"manage_groups": "Kelola kelompok",
"logs_error": "Galat",
"logs_no_logs_registered": "Tidak ada log yang tersedia di kategori ini",
"logs_operation": "Tindakan yang dilakukan di sistem dengan YunoHost",
"user_emailaliases": "Alias surel",
"users_import_delete_others": "Hapus pengguna yang tidak ada di daftar",
"app_manage_label_and_tiles": "Kelola label dan kisi",
"confirm_app_default": "Apakah Anda yakin ingin menjadikan aplikasi ini sebagai default?",
"unauthorized": "Tidak terotoriasasi",
"logs_ended_at": "Akhir",
"permission_main": "Label utama",
"uninstall": "Lepas",
"users_import_update": "Perbarui pengguna yang telah ada",
"migrations_done": "Migrasi sebelumnya",
"migrations_no_done": "Belum ada migrasi",
"migrations_disclaimer_check_message": "Saya membaca dan mengerti peringatan ini",
"migrations_disclaimer_not_checked": "Migrasi ini memerlukan Anda mengetahui peringatannya sebelum bisa dijalankan.",
"logs_path": "Jalur",
"permission_show_tile_enabled": "Terlihat sebagai kisi di portal pengguna",
"confirm_firewall_allow": "Apakah Anda yakin ingin membuka port {port}? (protokol: {protocol}, koneksi: {connection})",
"confirm_firewall_disallow": "Apakah Anda yakin ingin menutup port {port}? (protokol: {protocol}, koneksi: {connection})",
"manage_domains": "Kelola domain",
"migrations_pending": "Migrasi yang tertunda",
"operations": "Tindakan",
"orphaned": "Tidak dikelola",
"postinstall_intro_2": "Dua langkah konfigurasi lagi diperlukan untuk mengaktifkan layanan peladen Anda.",
"confirm_install_app_broken": "PERINGATAN! Aplikasi ini rusak menurut uji coba otomatis YunoHost dan mungkin akan merusak sistem Anda! Sebaiknya Anda TIDAK memasangnya kecuali Anda yakin dengan apa yang Anda lakukan. Apakah Anda yakin ingin memasangnya?",
"domain_dns_conf_is_just_a_recommendation": "Bagian ini hanya menampilkan kepada Anda konfigurasi *yang direkomendasikan*. Ini *tidak* mengonfigurasi DNS untuk Anda. Merupakan tugas Anda untuk mengonfigurasi zona DNS Anda di registrar DNS Anda menurut rekomendasi ini.",
"domain_dns_push_failed_to_authenticate": "Autentikasi gagal pada API registrar. Besar kemungkinan karena <a href='#/domains/{domain}/config'>kredensial</a> tidak sesuai? (Galat: {error})",
"ignore": "Abaikan",
"label_for_manifestname": "Label untuk {name}",
"local_archives": "Arsip lokal",
"user_mailbox_quota": "Kuota penyimpanan surel",
"user_mailbox_use": "Penyimpanan surel yang digunakan",
"important_yunohost_upgrade": "Pembaruan besar YunoHost tersedia. Sangat direkomendasikan untuk membaca catatan rilis di forum sebelum pembaruan: <a href='https://forum.yunohost.org/tag/ynh_release'>Baca catatan rilis di forum</a>",
"logs_started_at": "Awal",
"manage_users": "Kelola pengguna",
"migrations": "Migrasi",
"next": "Selanjutnya",
"domain_dns_push_not_applicable": "Fitur rekaman DNS otomatis tidak tersedia untuk domain {domain},<br> Anda harus secara manual mengonfigurasi rekaman DNS Anda dengan mengikuti <a href='https://yunohost.org/dns'>dokumentasi</a> dan konfigurasi yang disarankan di bawah ini.",
"logs_system": "Log kernel dan peristiwa tingkat dasar lainnya",
"operation_failed_explanation": "Tindakan ini gagal! Sangat maaf sekali :( Anda bisa mencoba <a href='https://yunohost.org/help'>tanya-tanya</a>. Mohon sediakan *log penuh* dari tindakan tersebut kepada yang membantu Anda. Anda bisa melakukan tersebut dengan tombol 'Bagikan dengan Yunopaste'. Ketika membagikan log tersebut, YunoHost akan secara otomatis mencoba menyembunyikan data pribadi seperti nama domain dan IP.",
"items_verbose_count": "Ada {items}. | Ada 1 {items}. | Ada {items}.",
"perform": "Laksanakan",
"domain_dns_push_managed_in_parent_domain": "Fitur rekaman DNS otomatis dikelola di domain induk <a href='#/domains/{parent_domain}/dns'>{parent_domain}</a>.",
"confirm_install_app_lowquality": "Peringatan: aplikasi ini mungkin bisa bekerja tapi tidak terintegrasi dengan baik di YunoHost. Beberapa fitur seperti SSO dan pencadangan mungkin tidak tersedia.",
"logs_access": "Daftar akses dan blokiran",
"permission_corresponding_url": "URL yang sesuai",
"users_import_delete_desc": "Jika dipilih, semua pengguna yang telah ada yang tidak ada di berkas CSV akan dihapus (dan dibersihkan).",
"users_import_update_desc": "Jika dipilih, semua pengguna yang ada di dalam berkas CSV akan diperbarui dengan nilai baru",
"users_import_delete": "Hapus pengguna yang tidak ada di daftar",
"users_import_csv_file_desc": "Berkas CSV harus dalam UTF-8 dan dengan kolom nama pengguna, kata sandi, kelompok, surel, dan kuota surel. Sebagai contoh berkas CSV impornya, Anda bisa <a href='/yunohost/api/users/export' target='_BLANK'>mengekspor daftar pengguna Anda ke berkas CSV</a> dan mengubah berkas tersebut.",
"pending_migrations": "Terdapat migrasi tertunda yang menunggu untuk dijalankan. Silakan ke <a href='#/tools/migrations'>Alat > Migrasi</a> untuk memulai mereka.",
"error_modify_something": "Anda harus mengubah sesuatu",
"group_format_name_help": "Anda bisa menggunakan karakter alfanumerik dan garis bawah",
"items_verbose_items_left": "Ada {items} tersisa. | Ada 1 {items} tersisa. | Ada {items} tersisa.",
"traceback": "Telusur",
"select_none": "Pilih tidak sama sekali",
"nobody": "Bukan siapa-siapa",
"confirm_postinstall": "Anda akan meluncurkan proses pasca instalasi pada domain {domain}. Mungkin memerlukan waktu beberapa menit, *jangan hentikan pengoperasian*."
}

View file

@ -17,17 +17,22 @@
"backup_new": "Nuovo backup", "backup_new": "Nuovo backup",
"both": "Entrambi", "both": "Entrambi",
"close": "Chiudi", "close": "Chiudi",
"confirm_app_default": "Sei sicuro di voler impostare questa app come predefinita?", "confirm_app_default": "Sei sicuro di voler impostare questa app come predefinita ?",
"confirm_change_maindomain": "Sei sicuro di voler cambiare il dominio principale?", "confirm_change_maindomain": "Sei sicuro di voler cambiare il dominio principale?",
"confirm_delete": "Sei sicuro di voler eliminare {name} ?", "confirm_delete": "Sei sicuro di voler eliminare {name} ?",
"confirm_uninstall": "Sei sicuro di voler disinstallare {name} ?", "confirm_uninstall": "Sei sicuro di voler disinstallare {name} ?",
"connection": "Connessione", "connection": "Connessione",
"created_at": "Creato a", "created_at": "Creato a",
"custom_app_install": "Installa app personalizzata", "custom_app_install": "Installa app personalizzata",
"custom_app_url_only_github": "Al momento solo da GitHub",
"delete": "Elimina", "delete": "Elimina",
"description": "Descrizione", "description": "Descrizione",
"disable": "Disabilita", "disable": "Disabilita",
"domain_add": "Aggiungi dominio", "domain_add": "Aggiungi dominio",
"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…",
"domain_dns_config": "Configurazione del DNS", "domain_dns_config": "Configurazione del DNS",
"domain_name": "Nome a domino", "domain_name": "Nome a domino",
"domains": "Domini", "domains": "Domini",
@ -38,6 +43,11 @@
"home": "Home", "home": "Home",
"hook_adminjs_group_configuration": "Configurazioni di sistema", "hook_adminjs_group_configuration": "Configurazioni di sistema",
"hook_conf_ldap": "Database utenti", "hook_conf_ldap": "Database utenti",
"hook_conf_nginx": "Nginx",
"hook_conf_ssh": "SSH",
"hook_conf_ssowat": "SSOwat",
"hook_conf_xmpp": "XMPP",
"hook_conf_ynh_firewall": "Firewall",
"hook_data_home": "Dati utente", "hook_data_home": "Dati utente",
"hook_data_mail": "Mail", "hook_data_mail": "Mail",
"hook_data_mail_desc": "Mail raw presenti sul server", "hook_data_mail_desc": "Mail raw presenti sul server",
@ -59,6 +69,7 @@
"manage_domains": "Gestisci domini", "manage_domains": "Gestisci domini",
"manage_users": "Gestisci utenti", "manage_users": "Gestisci utenti",
"multi_instance": "Può essere installato più volte", "multi_instance": "Può essere installato più volte",
"myserver": "mioserver",
"next": "Successivo", "next": "Successivo",
"no": "No", "no": "No",
"open": "Apri", "open": "Apri",
@ -69,6 +80,7 @@
"port": "Porta", "port": "Porta",
"ports": "Porte", "ports": "Porte",
"postinstall_intro_1": "Congratulazioni! YunoHost è stato installato con successo.", "postinstall_intro_1": "Congratulazioni! YunoHost è stato installato con successo.",
"postinstall_password": "Questa password sarà usata per gestire tutto sul tuo server. Prenditi un attimo per sceglierla con attenzione.",
"previous": "Precedente", "previous": "Precedente",
"protocol": "Protocollo", "protocol": "Protocollo",
"restore": "Ripristina", "restore": "Ripristina",
@ -86,6 +98,9 @@
"system_upgrade_btn": "Aggiorna", "system_upgrade_btn": "Aggiorna",
"tcp": "TCP", "tcp": "TCP",
"tools": "Strumenti", "tools": "Strumenti",
"tools_adminpw": "Cambia password amministrazione",
"tools_adminpw_current": "Password attuale",
"tools_adminpw_current_placeholder": "Inserisci la tua attuale password",
"udp": "UDP", "udp": "UDP",
"unauthorized": "Non autorizzato", "unauthorized": "Non autorizzato",
"uninstall": "Disinstalla", "uninstall": "Disinstalla",
@ -105,10 +120,13 @@
"users": "Utenti", "users": "Utenti",
"users_new": "Nuovo utente", "users_new": "Nuovo utente",
"users_no": "Nessun utente.", "users_no": "Nessun utente.",
"wrong_password": "Password sbagliata",
"yes": "Si", "yes": "Si",
"app_state_inprogress": "ancora non funzionante", "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_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": "Sei sicuro di voler installare l'applicazione su '/'? Non sarai in grado di installare qualsiasi altra applicazione su {domain}", "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", "begin": "Iniziamo",
"check": "Verifica", "check": "Verifica",
"confirm_postinstall": "Stai per lanciare il processo di post-installazione sul dominio {domain}. Potrebbe richiedere alcuni minuti, *non interrompere l'operazione*.", "confirm_postinstall": "Stai per lanciare il processo di post-installazione sul dominio {domain}. Potrebbe richiedere alcuni minuti, *non interrompere l'operazione*.",
@ -119,10 +137,14 @@
"domain_default_longdesc": "Questo è il tuo dominio predefinito.", "domain_default_longdesc": "Questo è il tuo dominio predefinito.",
"domain_delete_longdesc": "Rimuovi questo dominio", "domain_delete_longdesc": "Rimuovi questo dominio",
"domain_dns_longdesc": "Vedi la configurazione DNS", "domain_dns_longdesc": "Vedi la configurazione DNS",
"domain_visit": "Visita",
"domain_visit_url": "Visita {url}",
"error_server_unexpected": "Errore server inaspettato", "error_server_unexpected": "Errore server inaspettato",
"footer_version": "Offerto da <a href='https://yunohost.org'>YunoHost</a> {version} ({repo}).", "footer_version": "Offerto da <a href='https://yunohost.org'>YunoHost</a> {version} ({repo}).",
"form_input_example": "Esempio: {example}", "form_input_example": "Esempio: {example}",
"hook_conf_cron": "Operazioni automatiche",
"hook_conf_ynh_certs": "Certificati SSL", "hook_conf_ynh_certs": "Certificati SSL",
"hook_conf_ynh_mysql": "Password MySQL",
"hook_data_home_desc": "Dati dell'utente posizionati in /home/USER", "hook_data_home_desc": "Dati dell'utente posizionati in /home/USER",
"local_archives": "Archivi locali", "local_archives": "Archivi locali",
"mailbox_quota_placeholder": "Lascia vuoto o metti 0 per disattivare.", "mailbox_quota_placeholder": "Lascia vuoto o metti 0 per disattivare.",
@ -132,6 +154,8 @@
"running": "In esecuzione", "running": "In esecuzione",
"system_update": "Aggiornamento del sistema", "system_update": "Aggiornamento del sistema",
"user_mailbox_use": "Spazio utilizzato dalla casella di posta", "user_mailbox_use": "Spazio utilizzato dalla casella di posta",
"certificate_alert_not_valid": "CRITICO: il certificato attuale non è valido ! L'HTTPS non funzionerà per niente !",
"certificate_alert_selfsigned": "ATTENZIONE: il certificato attuale è auto-firmato. I browser mostreranno un avvertimento ai nuovi visitatori !",
"ok": "OK", "ok": "OK",
"app_info_changeurl_desc": "Cambia l'URL di accesso di questa applicazione (dominio e/o percorso).", "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", "app_info_change_url_disabled_tooltip": "Questa funzionalità non è ancora stata implementata in questa applicazione",
@ -147,7 +171,7 @@
"confirm_upnp_disable": "Sei sicuro di voler disabilitare UPnP?", "confirm_upnp_disable": "Sei sicuro di voler disabilitare UPnP?",
"confirm_reboot_action_reboot": "Sei sicuro di voler riavviare il tuo server?", "confirm_reboot_action_reboot": "Sei sicuro di voler riavviare il tuo server?",
"confirm_reboot_action_shutdown": "Sei sicuro di voler spegnere il tuo server?", "confirm_reboot_action_shutdown": "Sei sicuro di voler spegnere il tuo server?",
"domain_dns_conf_is_just_a_recommendation": "Questa sezione 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.", "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": "Migrazioni",
"migrations_pending": "Migrazioni in attesa", "migrations_pending": "Migrazioni in attesa",
"migrations_done": "Migrazioni precedenti", "migrations_done": "Migrazioni precedenti",
@ -159,12 +183,39 @@
"system_upgrade_all_packages_btn": "Aggiorna tutti i pacchetti", "system_upgrade_all_packages_btn": "Aggiorna tutti i pacchetti",
"tools_reboot": "Riavvia il tuo server", "tools_reboot": "Riavvia il tuo server",
"tools_reboot_btn": "Riavviare", "tools_reboot_btn": "Riavviare",
"tools_reboot_done": "Riavviando...",
"tools_rebooting": "Il tuo server si sta riavviando. Per tornare all'interfaccia di amministrazione web devi attendere che il server torni disponibile. Puoi controllare lo stato del riavvio aggiornando questa pagina (F5).",
"tools_shutdown": "Spegni il tuo server", "tools_shutdown": "Spegni il tuo server",
"tools_shutdown_btn": "Spegnere", "tools_shutdown_btn": "Spegnere",
"tools_shutdown_done": "Spegnendo...",
"tools_shuttingdown": "Il tuo server si sta spegnendo. Fintanto che il tuo server è spento, non sarai in grado di utilizzare l'interfaccia di amministrazione web.",
"tools_shutdown_reboot": "Spegnere/Riavviare", "tools_shutdown_reboot": "Spegnere/Riavviare",
"certificate_alert_letsencrypt_about_to_expire": "Il certificato attuale sta per scadere. Dovrebbe essere rinnovato automaticamente a breve.",
"certificate_alert_about_to_expire": "ATTENZIONE : Il certificato attuale sta per scadere ! NON sarà rinnovato automaticamente !",
"certificate_alert_good": "Ok, il certificato attuale è corretto !",
"certificate_alert_great": "Ottimo ! Stai utilizzando un certificato Let's Encrypt valido !",
"certificate_alert_unknown": "Stato sconosciuto",
"certificate_manage": "Gestisci certificato SSL", "certificate_manage": "Gestisci certificato SSL",
"ssl_certificate": "Certificato SSL",
"certificate": "Certificato", "certificate": "Certificato",
"certificate_status": "Stato del certificato",
"certificate_authority": "Autorità di certificazione",
"validity": "Validità",
"install_letsencrypt_cert": "Installa un certificato Let's Encrypt",
"manually_renew_letsencrypt": "Rinnova manualmente ora",
"confirm_cert_install_LE": "Sei sicuro di voler installare un certificato Let's Encrypt per questo dominio ?",
"confirm_cert_regen_selfsigned": "Sei sicuro di voler rigenerare un certificato autofirmato per questo dominio ?",
"confirm_cert_manual_renew_LE": "Sei sicuro di voler rinnovare manualmente il certificato Let's Encrypt per questo dominio ora ?",
"confirm_cert_revert_to_selfsigned": "Sei sicuro di voler ritornare ad un certificato autofirmato per questo dominio ?",
"domain_is_eligible_for_ACME": "Questo dominio sembra correttamente configurato per l'installazione di un certificato Let's Encrypt !",
"domain_not_eligible_for_ACME": "Questo dominio non sembra pronto per un certificato Let's Encrypt. Per favore controlla la tua configurazione DNS e la raggiungibilità del tuo server HTTP. Le sezioni 'DNS records' e 'Web' nella <a href='#/diagnosis'>pagina di diagnosi</a> può aiutarti nel capire cosa non è ben configurato.",
"manually_renew_letsencrypt_message": "Il certificato sarà rinnovato automaticamente durante gli ultimi 15 giorni di validità. Puoi rinnovarlo manualmente se lo desideri (Non consigliato).",
"regenerate_selfsigned_cert_message": "Se lo desideri, puoi rigenerare il certificato autofirmato.",
"regenerate_selfsigned_cert": "Rigenera il certificato autofirmato",
"revert_to_selfsigned_cert_message": "Se lo desideri veramente, puoi reinstallare un certificato autofirmato. (Non consigliato)",
"revert_to_selfsigned_cert": "Ritorna ad un certificato autofirmato",
"all_apps": "Tutte le app", "all_apps": "Tutte le app",
"app_no_actions": "Questa applicazione non ha nessuna azione",
"confirm_install_app_lowquality": "Attenzione: questa applicazione può funzionare ma non è ben integrata in Yunohost. Alcune funzionalità come il single sign-on (accesso unico) e backup/ripristino potrebbero non essere disponibili.", "confirm_install_app_lowquality": "Attenzione: questa applicazione può funzionare ma non è ben integrata in Yunohost. Alcune funzionalità come il single sign-on (accesso unico) e backup/ripristino potrebbero non essere disponibili.",
"confirm_install_app_inprogress": "ATTENZIONE! Questa applicazione è ancora sperimentale (se non esplicitamente non funzionante) ed è probabile che rovini il tuo sistema! Probabilmente NON dovresti installarla a meno che tu non sappia cosa stai facendo. Sei sicuro di voler prenderti questo rischio?", "confirm_install_app_inprogress": "ATTENZIONE! Questa applicazione è ancora sperimentale (se non esplicitamente non funzionante) ed è probabile che rovini il tuo sistema! Probabilmente NON dovresti installarla a meno che tu non sappia cosa stai facendo. Sei sicuro di voler prenderti questo rischio?",
"error_connection_interrupted": "Il server ha chiuso la connessione invece che rispondere. Probabilmente nginx o le API di YunoHost sono stato riavviati per qualche ragione?", "error_connection_interrupted": "Il server ha chiuso la connessione invece che rispondere. Probabilmente nginx o le API di YunoHost sono stato riavviati per qualche ragione?",
@ -190,35 +241,38 @@
"logs_more": "Mostra più linee", "logs_more": "Mostra più linee",
"select_all": "Seleziona tutto", "select_all": "Seleziona tutto",
"select_none": "Deseleziona tutto", "select_none": "Deseleziona tutto",
"unmaintained": "Non mantenuta",
"version": "Versione", "version": "Versione",
"purge_user_data_checkbox": "Eliminare i dati di {name}? (Questo rimuoverà il contenuto delle sue cartelle home e mail.)", "purge_user_data_checkbox": "Eliminare i dati di {name}? (Questo rimuoverà il contenuto delle sue cartelle home e mail.)",
"purge_user_data_warning": "L'eliminazione dei dati utente non è annullabile. Assicurati di sapere cosa stai facendo!", "purge_user_data_warning": "L'eliminazione dei dati utente non è annullabile. Assicurati di sapere cosa stai facendo!",
"hook_conf_ynh_currenthost": "Dominio principale attuale",
"confirm_update_system": "Sei sicuro di voler aggiornare tutti i pacchetti di sistema?", "confirm_update_system": "Sei sicuro di voler aggiornare tutti i pacchetti di sistema?",
"app_state_inprogress_explanation": "Questo maintainer di questa applicazione ha dichiarato che l'applicazione non è ancora pronta per l'uso in produzione. ATTENZIONE!", "app_state_inprogress_explanation": "Questo maintainer di questa applicazione ha dichiarato che l'applicazione non è ancora pronta per l'uso in produzione. ATTENZIONE!",
"app_state_notworking_explanation": "Questo maintainer di questa applicazione ha dichiarato che \"non funziona\". SI ROMPERÀ IL VOSTRO SISTEMA!",
"app_state_highquality": "alta qualità",
"group_add_permission": "Aggiungere un permesso", "group_add_permission": "Aggiungere un permesso",
"group_explain_all_users": "Questo è un gruppo speciale contenente tutti gli account di tutti gli utenti sul server", "group_explain_all_users": "Questo è un gruppo speciale contenente tutti gli account di tutti gli utenti sul server",
"group": "Gruppo", "group": "Gruppo",
"group_name": "Nome del gruppo", "group_name": "Nome del gruppo",
"group_all_users": "Tutti gli utenti", "group_all_users": "Tutti gli utenti",
"group_visitors": "Visitatori", "group_visitors": "Visitori",
"group_format_name_help": "È possibile utilizzare caratteri alfanumerici e spazio", "group_format_name_help": "È possibile utilizzare caratteri alfanumerici e spazio",
"group_add_member": "Aggiungere un utente", "group_add_member": "Aggiungere un utente",
"app_state_highquality_explanation": "Questa applicazione è ben integrata con YunoHost da almeno un anno a questa parte.", "app_state_highquality_explanation": "Questa applicazione è ben integrata con YunoHost da almeno un anno a questa parte.",
"details": "Dettagli", "details": "Dettagli",
"everything_good": "Tutto ok!", "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!",
"from_to": "da {0} a {1}", "from_to": "da {0} a {1}",
"configuration": "Configuratione", "configuration": "Configuratione",
"app_state_working_explanation": "Il manutentore di questa applicazione lo ha dichiarato \"funzionante\". Significa che dovrebbe essere funzionale (c.f. livello di applicazione) ma non è necessariamente sottoposta a peer-reviewing, può ancora contenere problemi o non è pienamente integrata con YunoHost.",
"group_new": "Nuovo gruppo", "group_new": "Nuovo gruppo",
"warnings": "{count} avvisi", "warnings": "{count} avvisi",
"words": { "words": {
"default": "Predefinito", "default": "Predefinito",
"collapse": "Collassa", "dismiss": "Annulla",
"browse": "Naviga", "collapse": "Collassa"
"none": "Nessuno",
"separator": ", ",
"link": "Collegamento",
"valid": "Valido"
}, },
"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",
"unignore": "Non ignorare più", "unignore": "Non ignorare più",
"since": "da", "since": "da",
"restart": "Riavvia", "restart": "Riavvia",
@ -238,7 +292,7 @@
"permissions": "Permessi", "permissions": "Permessi",
"groups_and_permissions_manage": "Gestisci i gruppi e i permessi", "groups_and_permissions_manage": "Gestisci i gruppi e i permessi",
"groups_and_permissions": "Gruppi e permessi", "groups_and_permissions": "Gruppi e permessi",
"group_specific_permissions": "Permessi per lutente singolo", "group_specific_permissions": "Permessi specifici per l'utente",
"group_explain_visitors_needed_for_external_client": "Poni attenzione al fatto che dovrai dare l'accesso ai visitatori ad alcune applicazioni se pensi di usarle con dei client esterni. Ad esempio questo è il caso di Nextcloud nel caso tu lo voglia usare con un client di sincronizzazione dal tuo smartphone o dal computer desktop.", "group_explain_visitors_needed_for_external_client": "Poni attenzione al fatto che dovrai dare l'accesso ai visitatori ad alcune applicazioni se pensi di usarle con dei client esterni. Ad esempio questo è il caso di Nextcloud nel caso tu lo voglia usare con un client di sincronizzazione dal tuo smartphone o dal computer desktop.",
"group_explain_visitors": "Questo è un gruppo speciale che individua i visitatori anonimi", "group_explain_visitors": "Questo è un gruppo speciale che individua i visitatori anonimi",
"run_first_diagnosis": "Avvio diagnosi iniziali", "run_first_diagnosis": "Avvio diagnosi iniziali",
@ -249,7 +303,7 @@
"app_state_lowquality_explanation": "Questa applicazione può essere funzionale ma potrebbe presentare dei problemi oppure non essere pienamente integrata con YunoHost oppure non rispettare le pratiche consigliate.", "app_state_lowquality_explanation": "Questa applicazione può essere funzionale ma potrebbe presentare dei problemi oppure non essere pienamente integrata con YunoHost oppure non rispettare le pratiche consigliate.",
"app_state_lowquality": "bassa qualità", "app_state_lowquality": "bassa qualità",
"all": "Tutti", "all": "Tutti",
"pending_migrations": "Ci sono alcune migrazioni in sospeso in attesa di essere eseguite. Vai in <a href='#/tools/migrations'>Strumenti > Migrazioni</a> per eseguirle.", "pending_migrations": "Ci sono alcune migrazioni in sospeso in attesa di essere eseguite. Consulta <a href='#/tools/migrations'>Tools > Migrations</a> per visualizzarle.",
"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.", "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", "logs_suboperations": "Sub-operazioni",
"permission_show_tile_enabled": "Mostra il tile nel portale dell'utente", "permission_show_tile_enabled": "Mostra il tile nel portale dell'utente",
@ -269,29 +323,28 @@
"cache": "Cache", "cache": "Cache",
"fallback_language_description": "Lingua utilizzata nel caso che la traduzione non sia disponibile.", "fallback_language_description": "Lingua utilizzata nel caso che la traduzione non sia disponibile.",
"fallback_language": "Lingua di riserva", "fallback_language": "Lingua di riserva",
"language": "Lingua", "language": "Lingua"
"theme": "Attiva o disattiva la modalità scura"
}, },
"tools_power_up": "Il tuo server sembra accessibile, puoi provare a collegarti.",
"search": { "search": {
"not_found": "Ci sono {items} che corrispondono ai tuoi criteri. | Cè un {items} che corrisponde ai tuoi criteri. | Ci sono {items} che corrispondono ai tuoi criteri.", "not_found": "Ci sono {items} che corrispondono ai tuoi criteri.",
"for": "Cerca per {items}" "for": "Cerca per {items}..."
}, },
"readme": "Leggimi", "readme": "Leggimi",
"postinstall_set_password": "Imposta la password d'amministratore",
"postinstall_set_domain": "Imposta dominio principale", "postinstall_set_domain": "Imposta dominio principale",
"placeholder": { "placeholder": {
"domain": "mio-dominio.it", "domain": "mio-dominio.it",
"groupname": "Nome del mio gruppo", "groupname": "Nome del mio gruppo",
"lastname": "Rossi", "lastname": "Rossi",
"firstname": "Mario", "firstname": "Mario",
"username": "mariorossi", "username": "mariorossi"
"file": "Scegli un file o trascinalo qui",
"fullname": "Mario Rossi"
}, },
"perform": "Eseguire", "perform": "Eseguire",
"migrations_disclaimer_not_checked": "Questa migrazione necessita della tua accettazione delle condizioni d'utilizzo prima di essere eseguita.", "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", "migrations_disclaimer_check_message": "Ho letto e compreso le condizioni d'utilizzo",
"mailbox_quota_example": "700MB è un CD, 4700M è un DVD", "mailbox_quota_example": "700MB è un CD, 4700M è un DVD",
"items_verbose_count": "Ci sono {items}. | Cè 1 {items}. | Ci sono {items}.", "items_verbose_count": "Ci sono {items}.",
"items": { "items": {
"users": "nessun utente | utente | {c} utenti", "users": "nessun utente | utente | {c} utenti",
"services": "nessun servizio | servizio | {c} servizi", "services": "nessun servizio | servizio | {c} servizi",
@ -323,18 +376,14 @@
"notInUsers": "L'utente '{value}' esiste già.", "notInUsers": "L'utente '{value}' esiste già.",
"minValue": "Il valore dev'essere maggiore o uguale a {min}.", "minValue": "Il valore dev'essere maggiore o uguale a {min}.",
"name": "I nomi non devono includere caratteri speciali, tolti <code> ,.'-</code>", "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)", "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)", "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", "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", "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}.", "between": "Il valore dev'essere compreso tra {min} e {max}.",
"alphalownumdot_": "Il valore deve contenere solo caratteri alfanumerici minuscoli e underscore.", "alphalownum_": "Il valore deve contenere solo caratteri alfanumerici minuscoli e underscore.",
"alpha": "Il valore deve comprendere solo caratteri alfanumerici.", "alpha": "Il valore deve comprendere solo caratteri alfanumerici."
"remote": "{message}",
"pattern": "{type}",
"maxValue": "Il valore deve essere un numero uguale o minore di {max}.",
"invalid_form": "Il modulo contiene alcuni errori.",
"appRepoUrl": "Gli URL della repository delle app di YunoHost dovrebbero essere come https://dominio.tld/percorso/alla/repo_ynh"
}, },
"footer": { "footer": {
"donate": "Dona", "donate": "Dona",
@ -345,7 +394,7 @@
"error": "Errore", "error": "Errore",
"enabled": "Abilitato", "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_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à registrato/sottoscritto un dominio DynDNS dal progetto YunoHost. Questopzione è intenzionalmente limitata a un solo dominio di questo genere per ciascun server. Se vuoi aggiungere un sottodominio al tuo dominio già sottoscritto, usa lopzione “Aggiungi un dominio o un sottodominio che possiedo” qui sopra. Se vuoi usare un dominio completamente differente, dovresti prima rimuovere il tuo dominio DynDNS esistente. I domini DynDNS sono unottima possibilità per esordire nel self-hosting, ma nel medio/lungo termine raccomandiamo di acquistare il proprio nome dominio, per averne un controllo completo.", "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", "disabled": "Disabilitato",
"dead": "Inattivo", "dead": "Inattivo",
"day_validity": " Scaduto | 1 giorno | {count} giorni", "day_validity": " Scaduto | 1 giorno | {count} giorni",
@ -356,8 +405,13 @@
}, },
"code": "Codice", "code": "Codice",
"app_show_categories": "Mostra categorie", "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_choose_category": "Scegli una categoria",
"api_waiting": "Aspetto la risposta del server…", "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_not_found": "Sembra che l'amministratore ha provato a richiedere qualcosa che non esiste.",
"api_errors_titles": { "api_errors_titles": {
"APIConnexionError": "YunoHost ha riscontrato un errore di connessione", "APIConnexionError": "YunoHost ha riscontrato un errore di connessione",
@ -382,19 +436,7 @@
"pending": "In corso", "pending": "In corso",
"error": "Fallito" "error": "Fallito"
}, },
"processing": "Il server sta processando la richiesta…", "processing": "Il server sta processando la richiesta..."
"partial_logs": "[…] (controlla i log completi nella cronologia)",
"reconnecting": {
"title": "Sto cercando di comunicare con il server…",
"failed": "Sembra che il server non stia rispondendo. Puoi riprovare a collegarti oppure prova a dare il comando `systemctl restart yunohost-api` da ssh.",
"reason": {
"shutdown": "Il tuo server si sta spegnendo e non è più raggiungibile. Accendilo nuovamente e un prompt di login sarà visualizzato appena il server tornerà raggiungibile.",
"unknown": "La connessione al server è stata interrotta per ragioni sconosciute.",
"reboot": "Il tuo server si sta riavviando e non sarà raggiungibile per un po'. Il prompt per il login sarà disponibile non appena il server diventerà raggiungibile.",
"upgrade_system": "La connessione al server è stata chiusa per un aggiornamento di YunoHost. Attendi che il server sia nuovamente raggiungibile…"
},
"success": "Il server è nuovamente raggiungibile! Puoi provare a fare il login"
}
}, },
"address": { "address": {
"local_part_description": { "local_part_description": {
@ -437,7 +479,7 @@
"run": "Esegui migrazioni" "run": "Esegui migrazioni"
}, },
"groups": { "groups": {
"remove": "Rimuovi '{user}' dal gruppo '{name}'", "remove": "Rimuovi {'user'} dal gruppo '{name}'",
"add": "Aggiungi '{user}' al gruppo '{name}'", "add": "Aggiungi '{user}' al gruppo '{name}'",
"delete": "Elimina gruppo '{name}'", "delete": "Elimina gruppo '{name}'",
"create": "Crea gruppo '{name}'" "create": "Crea gruppo '{name}'"
@ -448,12 +490,12 @@
}, },
"domains": { "domains": {
"set_default": "Imposta '{name}' come dominio di default", "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}'", "delete": "Elimina dominio '{name}'",
"add": "Aggiungi dominio '{name}'", "add": "Aggiungi dominio '{name}'"
"push_dns_changes": "Sincronizza i record DNS al registrar per '{name}'",
"update_config": "Aggiorna il pannello {id} della configurazione del dominio {name}",
"cert_renew": "Rinnova il certificato per {name}",
"cert_install": "Installa il certificato per {name}"
}, },
"diagnosis": { "diagnosis": {
"unignore": { "unignore": {
@ -473,223 +515,24 @@
"create": "Crea backup" "create": "Crea backup"
}, },
"apps": { "apps": {
"update_config": "Aggiorna il pannello {id} della configurazione dellapp {name}", "update_config": "Aggiorna la configurazione dell'app '{name}'",
"uninstall": "Disinstalla l'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}'", "set_default": "Reindirizza la domain root di '{domain}' a '{name}'",
"install": "Installa l'app '{name}'", "install": "Installa l'app '{name}'",
"change_url": "Cambia l'URL d'accesso di '{name}'", "change_url": "Cambia l'url d'accesso di '{name}'",
"change_label": "Cambia label da '{prevName}' a '{nextName}'", "change_label": "Cambia label da '{prevName}' a '{nextName}'"
"dismiss_notification": "Nascondi la notifica per {name}",
"action_config": "Esegui lazione {action} della configurazione dellapp {name}"
}, },
"reconnecting": "Riconnessione", "adminpw": "Cambia password d'amministratore"
"settings": {
"update": "Aggiorna le impostazioni globali di {panel}"
}
}, },
"postinstall": { "postinstall": {
"force": "Forza il post-install", "force": "Forza il post-install"
"title": "Post-installazione",
"user": {
"title": "Crea il primo utente amministratore",
"first_user_help": "Questo utente avrà privilegi da amministratore e gli sarà permesso di connettersi sia a questinterfaccia di amministrazione chee direttamente al server via SSH.\nPoiché si tratta di un utente normale, potrà anche connettersi al portale utente (SSO) con le sue credenziali.\nQuando la post-installazione sarà completa, potrai creare altri utenti amministratori aggiungendoli al gruppo amministratori."
}
}, },
"items_verbose_items_left": "Ci sono {items} oggetti rimasti. | Cè un {items} rimasto | Ci sono {items} rimasti.", "items_verbose_items_left": "Ci sono {items} oggetti rimasti.",
"hook_data_xmpp_desc": "Configurazioni utenti e stanze, upload file", "hook_data_xmpp_desc": "Configurazioni utenti e stanze, upload file",
"hook_data_xmpp": "Dati XMPP", "hook_data_xmpp": "Dati XMPP",
"hook_conf_manually_modified_files": "Configurazioni modificate manualmente", "hook_conf_manually_modified_files": "Configurazioni modificate manualmente",
"hook_conf_ynh_settings": "Configurazioni YunoHost", "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.", "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", "app_install_parameters": "Parametri installazione"
"domain": {
"config": {
"edit": "Modifica la configurazione del dominio",
"title": "Configurazione del dominio"
},
"dns": {
"push": "Invia records DNS al registrar",
"push_force": "Sovrascivi records esistenti",
"push_force_confirm": "Sei sicuro di voler impostare tutti i records dns suggeriti? Sii consapevole che potresti sovrascrivere records predefiniti importanti o impostati manualmente da te o dal tuo registrar.",
"auto_config": "Configurazione automatica dei records DNS",
"auto_config_ignored": "ignorato, non verrà cambiato da YunoHost a meno che non selezioni l'opzione di sovrascrittura",
"auto_config_ok": "La configurazione automatica sembra essere a posto!",
"auto_config_zone": "Zona DNS corrente",
"edit": "Modifica la configurazione DNS",
"manual_config": "Records DNS suggeriti per la configurazione manuale",
"info": "La configurazione automatica dei records DNS e una funzione sperimentale. <br>Considera il salvataggio della tua zona DNS corrente dall'interfaccia del tuo registrar DNS prima di impostare records da qui.",
"push_force_warning": "Sembra che alcuni records DNS che YunoHost avrebbe impostato, sono già presenti nella configurazione del registrar. Puoi usare l'opzione sovrascrivi se sai ciò che stai facendo.",
"methods": {
"semi_auto": "Semi-automatico",
"manual": "Manuale",
"none": "Nessuno",
"handled_in_parent": "Gestito nel dominio genitore",
"auto": "Automatico"
}
},
"info": {
"apps_on_domain": "App installate in questo dominio",
"dyn_dns_remove_and_unsubscribe": "De-registra inoltre il dominio dal servizio DynDNS di YunoHost",
"certificate_authority": "Autorità di certificazione SSL",
"registrar": "Registro"
},
"add": {
"dyn_dns_password": "Password per il recupero del dominio",
"dyn_dns_password_desc": "Questa password ti permetterà di recuperare il controllo del dominio qualora scegliessi di reinstallare il tuo sistema in un secondo momento. Se hai già registrato questo dominio in precedenza, usa qui la tua password di recupero per riottenerlo.",
"from_local": "Voglio un dominio per uso locale/solo test",
"from_yunohost_desc": "Il progetto YunoHost mantiene un servizio “DynDNS” gratuito. È limitato a un dominio per server (anche se puoi anche aggiungere sottodomini successivamente, usando lopzione “Aggiungi un dominio o un sottodominio che possiedo” qui sopra). La configurazione DNS sarà gestita da YunoHost. Questopzione è lideale per esordire nel self-hosting e se non vuoi investire in un nome dominio per il momento. Tuttavia, nel medio/lungo termine raccomandiamo di acquistare il tuo nome dominio da un registrar, per avere un controllo completo del tuo dominio.",
"from_local_desc": "Se non vuoi un “vero” nome di dominio pubblico, puoi usare qualunque cosa che termini con <code>.local</code> o <code>.test</code>. I nomi dominio che terminano con <code>.local</code> sono speciali perché possono essere risolti automaticamente dal network locale, assumendo che i client supportino il protocollo Bonjour. Alternativamente potresti dover modificare il file <code>/etc/hosts</code> (o lequivalente di Windows) su ogni client da cui desideri utilizzare questo dominio, o dover configurare parametri DNS locali sul tuo router internet.",
"from_registrar": "Vorrei aggiungere un dominio o un sottodominio che possiedo",
"from_registrar_desc": "Dovrai configurare manualmente i registri DNS sul tuo registrar per finalizzare la configurazione di questo dominio. La diagnosi di YunoHost ti guiderà per individuare quali registri DNS devi configurare.",
"from_yunohost": "Non possiedo un dominio, voglio registrare/usare un dominio DynDNS gratuito, offerto dal progetto YunoHost"
},
"toggle_subdomains": "Attiva o disattiva i sottodomini",
"types": {
"main_domain": "Dominio principale"
},
"explain": {
"main_domain": "Il dominio principale è il dominio da cui gli utenti possono connettersi al portale (via “{domain}/yunohost/sso”).<br>Per questa ragione non è possibile eliminarlo.<br>Se vuoi eliminare “{domain}”, devi prima scegliere o aggiungere un altro dominio come principale."
},
"cert": {
"valid_for": "Valido per {days}",
"types": {
"selfsigned": "Auto-verificato",
"other": "Altro/Sconosciuto",
"letsencrypt": "Lets Encrypt"
}
},
"see_parent_domain": "Vedi il dominio genitore"
},
"users_import_csv_file_desc": "Il file CSV dovrebbe essere in UTF-8 e con le colonne username, password , gruppi, email e quota. Per avere un esempio di un file CSV da importare, puoi <a href='/yunohost/api/users/export' target='_blank'>esportare i tuoi attuali utenti in un file CSV</a> e modificarlo.",
"users_import_delete_others": "Elimina utenti non in lista",
"domain_dns_push_failed_to_authenticate": "Lautenticazione sullAPI del registrar è fallita. È probabile che le <a href='#/domains/{domain}/config'>credenziali</a> non siano corrette. (Errore: {error})",
"domain_dns_push_managed_in_parent_domain": "Il settaggio automatico dei DNS record è gestita nel dominio genitore <a href='#/domains/{parent_domain}/dns'>{parent_domain}</a>.",
"users_import_confirm_destructive": "Sei sicurə di voler eliminare gli utenti che non sono presenti in questo file?",
"yunohost_admin": "Amministratore di YunoHost",
"users_import": "Importa utenti",
"users_export": "Esporta utenti",
"users_import_csv_file": "File CSV",
"users_import_update": "Aggiorna gli utenti esistenti",
"users_import_delete": "Elimina gli utenti non in lista",
"users_import_update_desc": "Se spuntato, tutti gli utenti contenuti nel file CSV saranno aggiornati con il nuovo valore",
"domain_dns_push_not_applicable": "Il settaggio automatico dei record DNS non è applicabile al dominio {domain},<br>Dovresti configurare i tuoi record DNS seguendo la <a href='https://yunohost.org/dns'>documentazione</a> e la configurazione suggerita qui sotto.",
"text_selection_is_disabled": "La selezione del testo è disabilitata. Se vuoi condividere questo log, sei pregato di condividere il log *interamente*, tramite il bottone 'condividi con Yunopaste'.<br/><small>Oppure, se vuoi proprio proprio selezionare il testo, premi i tasti: ↓↓↑↑.</small>",
"users_import_delete_desc": "Se spuntato, tutti gli utenti esistenti che non sono nel file CSV saranno eliminati (e espulsi).",
"retry": "Riprova",
"app_state_broken_explanation": "Questa applicazione è attualmente non funzionante e quindi non installabile secondo i controlli automatici di YunoHost",
"confirm_install_app_broken": "ATTENZIONE! Questa applicazione non è funzionante secondo i controlli automatici di YunoHost e quindi potrebbe rovinare il vostro sistema! Probabilmente NON dovreste installarla a meno che non sappiate cosa state facendo. Volete prendervi questo rischio?",
"app": {
"doc": {
"notifications": {
"understood": "Ho capito",
"title": "Notifiche",
"post_upgrade": "Note post-aggiornamento",
"post_install": "Note post-installazione"
},
"about": {
"title": "Altro su",
"description": "Descrizione"
},
"admin": {
"title": "Documentazione admin"
}
},
"antifeatures": "Questa app ha funzionalità che potrebbero non piacerti:",
"info": {
"forum": "Cerca o domanda sul forum!",
"problem": "Un problema con quest'app?",
"config_panel_error_please_report": "Per favore, segnala questo errore al team di YunoHost, perché sia risolto!",
"config_panel_error": "Un errore impedisce di mostrare il pannello di configurazione:"
},
"install": {
"license": "Licenza: {license}",
"notifs": {
"post": {
"title": "Notifiche successive all'installazione di '{name}'",
"alert": "Sembra che linstallazione abbia funzionato!\nEcco alcune notifiche che la persona che ha creato il pacchetto considera importante conoscere.\nPuoi leggerle di nuovo nella pagina di informazione dellapplicazione."
},
"pre": {
"warning": "Ciò che occorre sapere prima dell'installazione",
"danger": "L'installazione dell'applicazione determinerà molto probabilmente dei problemi",
"critical": "L'applicazione non può essere installata"
}
},
"problems": {
"arch": "Questa applicazione può essere installata solo su architetture specifiche ({required}), ma l'architettura del tuo server è {current}.",
"broken": "Questa applicazione è guasta secondo le verifiche automatiche di YunoHost ed è probabile che guasti il tuo sistema! Probabilmente NON dovresti installarla a meno che sappia ciò che stai facendo.",
"ignore": "Capisco che questa installazione può guastare il mio sistema, ma voglio provare comunque.",
"inprogress": "Questa applicazione è ancora sperimentale (non funziona ancora alla perfezione) ed è probabile che guasti il tuo sistema! Probabilmente NON dovresti installarla a meno che tu non sappia cosa stai facendo.",
"install": "È già installato e non può essere installato più di una volta.",
"version": "Questapplicazione richiede YunoHost ≥ {required}, ma la versione attualmente installata è {current}. Considera di aggiornare YunoHost, prima.",
"lowquality": "Anche se questapplicazione funziona, non è ben integrata in YunoHost. Alcune funzionalità, come single sign-on e backup/recupero potrebbero non essere disponibili, oppure lapplicazione potrebbe non rispettare buone pratiche.",
"ram": "Questapplicazione richiede {required} di RAM per linstallazione o laggiornamento, ma solo {current} sono disponibili al momento. Anche se lapp può funzionare, il suo processo dinstallazione richiede una grande quantità di RAM, perciò il tuo server potrebbe bloccarsi e fallire miseramente.",
"thirdparty": "Questapplicazione non è parte del catalogo ufficiale di YunoHost. Installare applicazioni di terze parti potrebbe compromettere lintegrità e la sicurezza del tuo sistema. NON dovresti installarla se non sei sicurə di ciò che stai facendo."
},
"try_demo": "Prova la demo",
"version": "Versione corrente: {version}"
},
"open_this_app": "Apri questapp",
"integration": {
"ldap": {
"true": "Usa gli account YunoHost per laccesso (LDAP)",
"?": "Nessuna informazione riguardo allintegrazione LDAP",
"false": "Non usa gli account YunoHost per laccesso (LDAP)"
},
"sso": {
"true": "Il sign-on singolo è disponibile (SSO)",
"?": "Nessuna informazione riguardo allintegrazione SSO",
"false": "Il sign-on singolo non è disponibile (SSO)"
},
"archs": "Architetture supportate:",
"multi_instance": {
"false": "Può essere installata solo una volta",
"true": "Può essere installata più volte"
},
"resources": "Utilizzo di risorse tipico: {ram} RAM, {disk} disco",
"title": "Integrazione con YunoHost"
},
"links": {
"package": "Repository dei pacchetti di YunoHost",
"title": "Collegamenti",
"userdoc": "Documentazione ufficiale per gli utenti",
"website": "Sito web ufficiale",
"admindoc": "Documentazione Admin ufficiale",
"code": "Repository ufficiale del codice sorgente",
"license": "Licenza dellapp",
"forum": "Argomenti collegati a questapp nel forum di YunoHost",
"package_license": "Licenza del pacchetto YunoHost"
},
"upgrade": {
"confirm": {
"apps": "Applicazioni che saranno aggiornate",
"title": "Conferma laggiornamento delle app"
},
"continue": "Continua allapp successiva",
"notifs": {
"post": {
"title": "Notifiche post-aggiornamento per {name}",
"alert": "Sembra che laggiornamento sia andato bene!\nEcco alcune notifiche che la persona che ha creato il pacchetto considera importanti riguardo a questo aggiornamento.\nPotrai leggerle nuovamente nella pagina di informazioni dellapp."
},
"pre": {
"alert": "Dovresti controllare queste notifiche prima di aggiornare, potrebbero esserci cose importanti da sapere.",
"title": "Attenzione!"
}
},
"stop": "Annulla i prossimi aggiornamenti di app"
},
"installed_version": "Versione installata:",
"potential_alternative_to": "Potenziale alternativa a:",
"uninstall": {
"purge_desc": "Rimuovi la directory dei dati associati allapp (solitamente, si tratta di dati che hai caricato tu stessə usando lapp)."
}
},
"wrong_password_or_username": "Password o username sbagliati",
"manage_groups": "Gestisci i gruppi",
"tools_yunohost_settings": "Impostazioni di YunoHost",
"app_state_broken": "rottə",
"details_about": "Mostra maggiori dettagli riguardo a {subject}",
"group_explain_admins": "Questo è un gruppo speciale, che corrisponde agli utenti amministratori. Gli utenti di questo gruppo possono accedere allinterfaccia di amministrazione web di YunoHost, connettersi al server tramite SSH e usare il comando `sudo`. Inoltre, ricevono le email inviate a root@, admin@ e admins@, come le notifiche di diagnosi. Dovresti aggiungere a questo gruppo solo persone di cui ti fidi completamente!",
"group_admins": "Amministratori",
"important_yunohost_upgrade": "Un importante aggiornamento di YunoHost è importante. È fortemente raccomandato di leggere attentamente le note di rilascio sul forum, prima di aggiornare: <a href='https://forum.yunohost.org/tag/ynh_release'>Visita le note di rilascio sul forum</a>",
"label_for_manifestname_help": "Questo è il nome mostrato nel portale dellutente. Potrà essere cambiato in seguito."
} }

View file

@ -1,680 +0,0 @@
{
"action": "アクション",
"add": "追加",
"address": {
"domain_description": {
"domain": "ドメインを選択してください。",
"email": "メールアドレス用ドメインを選択してください。"
},
"local_part_description": {
"domain": "サブドメインを選択してください。",
"email": "電子メールのローカルパート(@の右側)を選択してください。"
}
},
"administration_password": "管理用パスワード",
"all": "すべて",
"all_apps": "すべてのアプリ",
"api": {
"partial_logs": "[…] (詳細ログで履歴を確認)",
"processing": "サーバーはアクションを実行中です…",
"query_status": {
"error": "失敗",
"pending": "実行中",
"success": "成功",
"warning": "成功(エラーまたは警告あり)"
},
"reconnecting": {
"reason": {
"shutdown": "サーバーがシャットダウン中のため、接続できません。サーバーの電源をオンにし、起動後にログイン画面が利用可能になります。",
"unknown": "原因は不明ですが、サーバーとの接続が切断されました。",
"upgrade_system": "YunoHostのアップグレードのためサーバーとの接続が切断されました。サーバーが再度利用可能になるまでお待ちください…",
"reboot": "サーバーが再起動中のため、接続が途切れることがあります。再起動後、すぐにログイン画面が利用可能になります。"
},
"success": "サーバーが利用可能になりました!ログインが可能です",
"title": "サーバーと通信中…",
"failed": "サーバーが応答していないようです。再接続するか、SSH経由で`systemctl restart yunohost-api`を実行してみてください。"
}
},
"api_error": {
"error_message": "エラーメッセージ:",
"info": "以下の情報はあなたの状況を周りに伝えるのに役立ちます:",
"server_said": "アクションの実行中にサーバーが生成したメッセージ:",
"sorry": "申し訳ありません。",
"view_error": "ビューエラー",
"help": "ヘルプが必要ですか? <a href=\"https://forum.yunohost.org/\">フォーラム</a> または <a href=\"https://chat.yunohost.org/\">チャット</a> をご利用ください。もしバグを報告したい場合は <a href=\"https://github.com/YunoHost/issues\">バグトラッカー</a>にどうぞ。"
},
"api_errors_titles": {
"APIBadRequestError": "YunoHostにエラーが発生しました",
"APIConnexionError": "YunoHostに接続エラーが発生しました",
"APIError": "YunoHostに予期しないエラーが発生しました",
"APIInternalError": "YunoHostに内部エラーが発生しました",
"APINotFoundError": "YunoHost APIはルートを見つけることができませんでした",
"APINotRespondingError": "YunoHost APIが応答していません"
},
"api_not_responding": "YunoHost APIは応答していません。'yunohost-api'が停止しているか、再起動中ではありませんか?",
"api_waiting": "サーバーの応答を待っています…",
"app": {
"installed_version": "インストール済バージョン:",
"open_this_app": "このアプリを開く",
"antifeatures": "このアプリはあなたが気に入らないかもしれない機能を持っています:",
"doc": {
"about": {
"title": "YunoHostについて",
"description": "説明"
},
"admin": {
"title": "管理者ドキュメント"
},
"notifications": {
"understood": "了解",
"title": "通知",
"post_upgrade": "アップグレード後のお知らせ",
"post_install": "アップグレード後のお知らせ"
}
},
"info": {
"forum": "フォーラムで検索するか、相談してください!",
"config_panel_error": "設定パネル表示を妨げるエラー:",
"problem": "このアプリに問題がありましたか?",
"config_panel_error_please_report": "YunoHostチームにこのエラーを報告して修正してもらいましょう"
},
"install": {
"license": "ライセンス: {license}",
"notifs": {
"post": {
"title": "インストール後の通知 - '{name}'",
"alert": "インストールが成功したようです!\n パッケージ作成者が重要と指定したいくつかの通知があります。\nこの通知はアプリの情報ページからも確認できます。"
},
"pre": {
"danger": "このアプリケーションをインストールすると問題が発生する可能性が高まります",
"warning": "インストール前に知っておくべきこと",
"critical": "アプリケーションはインストールできません"
}
},
"problems": {
"thirdparty": "このアプリケーションは、YunoHostの公式カタログの一部ではありません。サードパーティのアプリケーションをインストールすると、システムの整合性とセキュリティが損なわれる可能性があります。あなたが何をやろうとしているか十分に理解していないのであれば、インストールをするべきではありません。",
"install": "すでにインストールされており、複数回インストールすることはできません。",
"ram": "このアプリケーションのインストール/アップグレードには{required}のRAMが必要ですが、現在利用可能なのは{current}です。このアプリが実行できたとしても、インストールには大量のRAMが必要なため、サーバーがフリーズして失敗する可能性があります。",
"version": "このアプリケーションは YunoHost >= {required} を要求していますが、現在インストールされているバージョンは{current}です。",
"arch": "このアプリは特定のアーキテクチャ({required})でしかインストールできません。あなたのアーキテクチャは{current}です。",
"broken": "YunoHostの自動テストにより、このアプリケーションは破損しており、インストールすることでシステムが壊れる可能性が高いと判断されましたあなたが何をやろうとしているか十分に理解していないのであれば、インストールをするべきではありません。",
"ignore": "インストールすることで私のシステムが壊れるかもしれないことは理解していますが、それでも試します。",
"inprogress": "このアプリケーションはまだ実験的なものであり(明確に動作しないわけではありませんが)、あなたのシステムを壊す可能性があります!あなたが何をやろうとしているか十分に理解していないのであれば、インストールをするべきではありません。",
"lowquality": "このアプリケーションは動作するかもしれませんが、YunoHostへ十分に統合されていません。シングルサインオンやバックアップ/リストアなど一部の機能は利用できないか、グッドプラクティスに沿わない可能性があります。"
},
"try_demo": "デモを試す",
"version": "現在のバージョン: {version}"
},
"integration": {
"archs": "サポートするアーキテクチャ:",
"ldap": {
"false": "YunoHostアカウントをログインに利用しない(LDAP)",
"true": "YunoHostアカウントをログインに利用する(LDAP)",
"?": "LDAP統合の情報がありません"
},
"multi_instance": {
"false": "インストールは一度しか行えません",
"true": "複数回インストールすることが可能"
},
"resources": "一般的なリソース消費: {ram} RAM, {disk} disk",
"sso": {
"true": "シングルサインオン(SSO)は利用可能",
"?": "シングルサインオン(SSO)統合の情報がありません",
"false": "シングルサインオン(SSO)は利用可能ではありません"
},
"title": "YunoHost統合"
},
"links": {
"admindoc": "公式管理者ドキュメント",
"code": "公式コードレポジトリ",
"package": "YunoHost パッケージ レポジトリ",
"title": "リンク",
"userdoc": "公式ユーザードキュメント",
"website": "公式ウェブサイト",
"license": "ライセンス",
"forum": "このアプリに関するYunoHostフォーラム上の話題"
},
"potential_alternative_to": "代替できるかも:",
"upgrade": {
"confirm": {
"title": "アプリをアップグレードする",
"apps": "アップグレードされるアプリ"
},
"continue": "次のアプリに続ける",
"notifs": {
"pre": {
"title": "警告!",
"alert": "アップグレード前にそれらの通知を確認するべきです。重要な情報が記載されているかもしれません。"
},
"post": {
"title": "アップグレード後の通知 - '{name}'",
"alert": "アップグレードはうまくいったようです!\n パッケージ製作者がこのアップグレードで重要と考えている事項について、通知があります。\nこの通知はアプリの情報ページからも確認できます。"
}
},
"stop": "次のアプリのアップグレードをキャンセルする"
}
},
"app_info_change_url_disabled_tooltip": "この機能はまだアプリに実装されていません",
"app_info_default_desc": "このアプリケーションへリダイレクトするドメインルート ({domain})。",
"app_install_custom_no_manifest": "manifest.jsonファイルがありません",
"app_install_parameters": "インストール設定",
"app_make_default": "デフォルトにする",
"app_manage_label_and_tiles": "ラベルとタイトルを管理する",
"app_show_categories": "カテゴリを表示",
"app_state_broken": "壊れている",
"app_state_broken_explanation": "このアプリケーションは現在壊れており、YunoHostの自動テストによるとインストール不能です",
"app_state_highquality_explanation": "このアプリは(少なくとも)昨年からYunoHostとよく統合されています。",
"app_state_inprogress": "まだ動いていない",
"app_state_inprogress_explanation": "このアプリのメンテナーは、このアプリケーションはまだ実環境(production)での利用に十分備えられていないとしています。ご注意ください!",
"app_state_lowquality": "低品質",
"app_state_lowquality_explanation": "このアプリはおそらく動きますが、問題があるか、全ての機能がYunoHostと統合されておらず、グッドプラクティスに沿わないでしょう。",
"applications": "アプリケーション",
"archive_empty": "空のアーカイブ",
"backup": "バックアップ",
"backup_action": "バックアップ",
"backup_content": "コンテンツをバックアップ",
"backup_create": "バックアップする",
"backup_new": "新しいバックアップ",
"begin": "始める",
"both": "両方",
"cancel": "キャンセル",
"catalog": "カタログ",
"certificate": "証明書",
"certificate_manage": "SSL証明書を管理",
"close": "閉じる",
"common": {
"firstname": "名前",
"lastname": "苗字"
},
"configuration": "設定",
"confirm_app_change_url": "このアプリのアクセスURLを変更してよいですか",
"confirm_app_default": "このアプリをデフォルトに変更してよろしいですか?",
"confirm_app_install": "このアプリケーションをインストールしますか?",
"confirm_change_maindomain": "メインドメインを変更してもよろしいですか?",
"confirm_firewall_disallow": "閉鎖してもよろしいですか? port {port} (protocol: {protocol}, connection: {connection})",
"confirm_install_app_broken": "警告このアプリケーションはYunoHostの自動テストによると壊れており、あなたのシステムを壊す可能性がありますあなたが何をやろうとしているか十分に理解していないのであれば、インストールをするべきではありません。リスクを承知で実行しますか",
"confirm_install_app_lowquality": "警告: このアプリケーションはおそらく動きますが、YunoHostとよく統合されていません。いくつかの機能(シングルサインオン、バックアップ/リストアなど)はおそらく使えません。",
"confirm_install_domain_root": "このアプリを'/'(root)にインストールしてもよろしいですか?その場合、 {domain} に対して他のアプリをインストールできなくなります",
"confirm_migrations_skip": "マイグレーションをスキップすることは推奨されません。スキップしてもよろしいですか?",
"confirm_postinstall": "ドメイン {domain} のインストール後処理を開始しようとしています。数分かかりますので、 *処理を中断しないでください*。",
"confirm_reboot_action_reboot": "サーバーを再起動してもよろしいですか?",
"confirm_reboot_action_shutdown": "サーバーをシャットダウンしてもよろしいですか?",
"confirm_restore": "{name} をリストアしてもよろしいですか?",
"confirm_service_restart": "{name} を再起動してもよろしいですか?",
"confirm_service_start": "{name} を開始してもよろしいですか?",
"confirm_service_stop": "{name} を停止してもよろしいですか?",
"confirm_uninstall": "{name} をアンインストールしてもよろしいですか?",
"confirm_upnp_enable": "UPnPを有効化してもよろしいですか",
"confirm_update_apps": "全てのアプリケーションをアップデートしてもよろしいですか?",
"confirm_upnp_disable": "UPnPを無効化してもよろしいですか",
"connection": "コネクション",
"created_at": "作成時刻",
"custom_app_install": "カスタムアプリをインストール",
"day_validity": " 期限切れ | 1日 | {count} 日",
"dead": "非アクティブ",
"delete": "削除",
"description": "説明",
"details": "詳細",
"diagnosis": "診断",
"disable": "無効",
"disabled": "無効化済み",
"dns": "DNS",
"domain": {
"cert": {
"types": {
"letsencrypt": "Let's Encrypt",
"other": "その他/不明",
"selfsigned": "自己署名"
},
"valid_for": "あと {days} 日有効"
},
"config": {
"edit": "ドメイン設定を編集する",
"title": "ドメイン設定"
},
"dns": {
"auto_config": "自動DNSレコード設定",
"auto_config_ignored": "上書きオプションを有効にしない限り、YunoHostによって変更されることはありません",
"auto_config_ok": "自動設定は問題ないようですね!",
"auto_config_zone": "現在のDNSゾーン",
"edit": "DNS設定を編集する",
"manual_config": "手動設定用の推奨DNSレコード",
"methods": {
"auto": "自動的",
"handled_in_parent": "親ドメインにて処理される",
"manual": "手動",
"none": "なし",
"semi_auto": "半自動"
},
"push": "DNSレコードをレジスターに登録する",
"push_force": "既存のレコードを上書きする",
"push_force_warning": "既存のDNSレコードのうち、いくつかはYunoHostが登録したもののように見えます。何をやっているのか自分で理解しているのであれば、上書きオプションを利用することもできます。",
"info": "DNSレコードの自動設定は実験的な機能です。<br>ここからレコードを操作する前に、DNSレジストラのインターフェイスから現在のDNSゾーンを保存することを検討してください。",
"push_force_confirm": "提案された全てのDNSレコードを登録してもよろしいですかこの操作によりあなたが手動で登録したり、レジスターが登録した重要なレコードが上書きされる可能性があります。"
},
"info": {
"apps_on_domain": "このドメインにインストールされているアプリ",
"certificate_authority": "SSL認証局",
"registrar": "レジスター"
},
"see_parent_domain": "親ドメインを見る",
"toggle_subdomains": "サブドメインを切り替える",
"types": {
"main_domain": "メインドメイン"
},
"explain": {
"main_domain": "メインドメインは、ユーザーがポータルに接続するためのドメインです(\"{domain}/yunohost/sso \"経由で)。<br>そのため、それを削除することはできません。<br>\"{domain}\"を削除したい場合は、まず別のドメインを選択または追加し、メインドメインとして設定する必要があります。"
}
},
"domain_add": "ドメインを追加する",
"domain_default_desc": "デフォルトドメインとは、ユーザーがログインするために接続するドメインです。",
"domain_default_longdesc": "それはあなたのデフォルトドメインです。",
"domain_delete_longdesc": "このドメインを削除する",
"domain_dns_conf_is_just_a_recommendation": "このセクションでは、*推奨される*設定を示します。あなたのためにDNSを設定することは*ありません*。この推奨に従ってDNSレジストラでDNSゾーンを設定するのはあなたの責任です。",
"domain_dns_config": "DNS設定",
"domain_dns_longdesc": "DNS設定を見る",
"domain_dns_push_failed_to_authenticate": "レジスターのAPI認証に失敗しました。おそらく <a href='#/domains/{domain}/config'>資格情報</a> が間違っていませんか? (Error: {error})",
"domain_name": "ドメイン名",
"domains": "ドメイン",
"download": "ダウンロード",
"enable": "有効か",
"enabled": "有効化済み",
"error": "エラー",
"error_modify_something": "なにか編集しなければなりません",
"error_server_unexpected": "予期せぬサーバーエラー",
"everything_good": "問題なし!",
"experimental": "実験的",
"footer": {
"donate": "寄付",
"help": "ヘルプが必要ですか?",
"documentation": "ドキュメント"
},
"footer_version": "Powered by <a href='https://yunohost.org'>YunoHost</a> {version} ({repo}).",
"form_errors": {
"alpha": "値はアルファベットである必要があります。",
"alphalownumdot_": "値は小文字の英数字である必要があります。",
"between": "値は{min}から{max}の間である必要があります。",
"domain": "不正なドメイン名: 小文字の英数字、.(ドット)、-(ダッシュ)である必要があります",
"dynDomain": "不正なドメイン名: 小文字の英数字、-(ダッシュ)である必要があります",
"invalid_form": "フォームにエラーがあります。",
"maxValue": "値は{max}より小さい必要があります。",
"minValue": "値は{min}より大きい必要があります。",
"email": "不正な電子メール: 小文字の英数字、<code>_.-</code> である必要があります (例: someone@example.com, s0me-1@example.com)",
"emailForward": "不正な電子メール転送: 小文字の英数字、<code>_.-</code> である必要があります (例: someone+tag@example.com, s0me-1+tag@example.com)",
"pattern": "{type}",
"remote": "{message}",
"required": "フィールドは必要です。",
"appRepoUrl": "YunoHostアプリリポジトリのURLは次のようになります https://domain.tld/path/to/repo_ynh",
"name": "名前に次の特殊文字を含めることはできません。 <code> ,.'-</code>",
"notInUsers": "ユーザー '{value}' は既に存在します。",
"passwordLenght": "パスワードは最低8文字必要です。",
"passwordMatch": "パスワードが一致しません。",
"number": "値は数値でなければなりません。"
},
"group": "グループ",
"group_admins": "管理者",
"group_visitors": "ビジター",
"history": {
"methods": {
"DELETE": "削除",
"GET": "読み取り",
"POST": "作成/実行",
"PUT": "編集"
},
"title": "履歴",
"is_empty": "現在は履歴がありません。",
"last_action": "最後のアクション:"
},
"home": "ホーム",
"hook_data_mail": "メール",
"human_routes": {
"reconnecting": "再接続",
"backups": {
"delete": "バックアップを削除’する {name}'",
"restore": "バックアップを復元する {name}",
"create": "バックアップを作成する"
},
"domains": {
"cert_install": "証明書 {name} をインストールする",
"cert_renew": "証明書 {name} を再発行する",
"delete": "ドメイン {name} を削除する",
"push_dns_changes": "{name} DNSレコードを登録する",
"set_default": "{name} をデフォルトドメインに設定",
"add": "ドメイン {name} を追加する",
"update_config": "ドメイン {name} の設定パネル {id} を更新"
},
"migrations": {
"run": "移行を実行する",
"skip": "移行をスキップする"
},
"reboot": "サーバーを再起動する",
"services": {
"restart": "サービス {name} をリスタートする",
"start": "サービス {name} をスタートする",
"stop": "サービス {name} をストップする"
},
"shutdown": "サーバーをシャットダウンする",
"update": "アップデートを確認する",
"upgrade": {
"app": "アプリ '{app}' をアップグレードする",
"apps": "全てのアプリをアップグレードする",
"system": "システムをアップグレードする"
},
"apps": {
"action_config": "{name} アプリのアクション {action}' を実行する",
"change_label": "ラベルを '{prevName}' から '{nextName}' に変更",
"change_url": "'{name}' のアクセスURLを変更",
"install": "アプリをインストール {name}",
"set_default": "'{domain}' ドメインのルートを '{name}' にリダイレクト",
"dismiss_notification": "'{name}' の通知を消去する",
"uninstall": "アプリ {name} を削除する",
"update_config": "'{name}' の {id} パネル設定をアップデートする"
},
"diagnosis": {
"ignore": {
"error": "エラーを無視する",
"warning": "警告を無視する"
},
"run": "診断を実行する",
"run_specific": "'{description}' 診断を実行する",
"unignore": {
"error": "エラーを無視しない",
"warning": "警告を無視しない"
}
},
"groups": {
"add": "'{user}' をグループ '{name}' に追加",
"create": "グループ {name} を作成する",
"delete": "グループ {name} を削除する",
"remove": "'{user}' をグループ '{name}' から削除する"
},
"users": {
"create": "ユーザー {name} を作成する",
"delete": "ユーザー {name} を削除する",
"update": "ユーザー {name} を更新する"
},
"firewall": {
"ports": "{action} ポート {port} ({protocol}, {connection})",
"upnp": "{action} UPnP"
},
"permissions": {
"add": "'{name}' に '{perm}' アクセスを許可する",
"remove": "'{name}' の '{perm}' アクセス許可を剥奪する"
},
"postinstall": "ポストインストールを実行する",
"settings": {
"update": "'{panel}' のグローバル設定を更新する"
},
"share_logs": "ログ '{name}' へのリンクを生成する"
},
"ignore": "無視",
"infos": "情報",
"install": "インストール",
"installed": "インストール済み",
"ipv4": "IPv4",
"ipv6": "IPv6",
"label": "ラベル",
"license": "ライセンス",
"login": "ログイン",
"logout": "ログアウト",
"logs": "ログ",
"logs_context": "コンテキスト",
"logs_ended_at": "終了",
"logs_error": "エラー",
"logs_path": "パス",
"logs_started_at": "開始",
"logs_suboperations": "サブ・オペレーション",
"next": "次",
"no": "No",
"nobody": "無人",
"ok": "OK",
"open": "開く",
"operations": "操作",
"others": "その他",
"password": "パスワード",
"path": "パス",
"placeholder": {
"domain": "my-domain.com",
"firstname": "太郎",
"lastname": "山田",
"username": "山田太郎",
"file": "ファイルを選択するかドラッグ&ドロップする",
"fullname": "山田 太郎",
"groupname": "グループ名"
},
"previous": "前",
"protocol": "プロトコル",
"readme": "Readme",
"restart": "リスタート",
"restore": "リストア",
"retry": "リトライ",
"run": "実行",
"running": "実行中",
"save": "保存",
"services": "サービス",
"size": "サイズ",
"skip": "スキップ",
"start": "スタート",
"status": "状態",
"stop": "ストップ",
"system": "システム",
"system_upgrade_btn": "アップグレード",
"tcp": "TCP",
"tools": "ツール",
"tools_reboot_btn": "再起動",
"tools_shutdown_btn": "シャットダウン",
"tools_shutdown_reboot": "シャットダウン/再起動",
"tools_webadmin": {
"cache": "キャッシュ",
"language": "言語",
"experimental": "実験的モード",
"fallback_language": "フォールバック言語",
"fallback_language_description": "主言語が利用できない際に使用される言語です。",
"theme": "ダークモード切り替え",
"transitions": "ページ推移アニメーション",
"cache_description": "この Web 管理画面を使いながら CLI 操作をする場合は、キャッシュを無効にすることを検討してください。",
"experimental_description": "実験的な機能にアクセスできます。これらは不安定であると見なされ、システムを壊す可能性があります。<br> 自分が何をしているかがわかっている場合にのみ有効にしてください。"
},
"traceback": "トレースバック",
"udp": "UDP",
"unknown": "未知",
"upnp": "UPnP",
"url": "URL",
"user_email": "電子メール",
"user_new_forward": "newforward@myforeigndomain.org",
"user_username": "ユーザー名",
"users": "ユーザー",
"words": {
"collapse": "たたむ",
"default": "デフォルト",
"link": "リンク",
"none": "なし",
"separator": ", ",
"valid": "有効",
"browse": "参照"
},
"yes": "はい",
"api_not_found": "Web管理者が存在しない何かを検索したようです。",
"app_choose_category": "カテゴリーを選択する",
"app_info_access_desc": "現在このアプリへアクセスが許可されている グループ / ユーザー:",
"app_info_changeurl_desc": "このアプリへアクセスするURLを変更します(ドメイン または パス)。",
"app_info_uninstall_desc": "このアプリケーションを削除する。",
"check": "チェック",
"code": "コード",
"confirm_delete": "{name} を削除してもよろしいですか?",
"confirm_firewall_allow": "開放してもよろしいですか? port {port} (protocol: {protocol}, connection: {connection})",
"confirm_group_add_access_permission": "本当に {perm} 権限を {name} へ許可しますか?このような権限は、 {name} が悪意のある人物であった場合、攻撃経路を大幅に増やします。この人物/グループを **信頼** できる場合にのみ許可してください。",
"confirm_install_app_inprogress": "警告!このアプリケーションはまだ実験段階であり、あなたのシステムを壊す可能性があります!あなたが何をやろうとしているか十分に理解していないのであれば、インストールをするべきではありません。リスクを承知で実行しますか?",
"confirm_install_custom_app": "警告!サードパーティのアプリケーションをインストールすると、システムの完全性とセキュリティが損なわれる可能性があります。あなたが何をやろうとしているか十分に理解していないのであれば、インストールをするべきではありません。リスクを承知で実行しますか?",
"confirm_update_system": "全てのシステムパッケージを更新してもよろしいですか?",
"confirm_update_specific_app": "{app} をアップデートしてもよろしいですか?",
"details_about": "{subject} について詳細を表示する",
"diagnosis_explanation": "診断機能は、サーバーのさまざまな側面における一般的な問題を特定し、すべてがスムーズに動作するように試みます。診断は1日2回自動的に実行され、問題が見つかった場合は管理者にメールが送信されます。特定の機能例えばXMPPを使用したくない場合、または複雑なセットアップを行った場合、いくつかのテストは適切でない可能性があります。そのような場合、また自分が何をしているかわかっている場合は、対応する問題や警告を無視してもかまいません。",
"diagnosis_first_run": "診断機能は、サーバーのさまざまな側面で一般的な問題を特定し、すべてがスムーズに動作するように試みます。サーバーをセットアップした直後に大量のエラーが表示されても慌てないでください。これは問題を特定し、解決するための指針を示すためのものです。また、診断は1日2回自動的に実行され、問題が見つかった場合は管理者にメールが送信されます。",
"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>)し、メインドメインとして設定する必要があります。",
"firewall": "ファイアウォール",
"id": "ID",
"migrations": "移行",
"permissions": "権限",
"port": "ポート",
"ports": "ポート",
"uninstall": "アンインストール",
"version": "バージョン",
"group_add_member": "ユーザーを追加",
"group_add_permission": "権限を追加",
"group_all_users": "全てのユーザー",
"group_name": "グループ名",
"group_new": "新しいグループ",
"hook_adminjs_group_configuration": "システム設定",
"hook_conf_ldap": "ユーザーデータベース",
"hook_conf_manually_modified_files": "手動変更された設定",
"ignored": "{count} 回無視",
"local_archives": "ローカルアーカイブ",
"logs_access": "アクセス/BANのリスト",
"logs_app": "アプリログ",
"logs_history": "システムで実行されたコマンドログ",
"logs_more": "もっと表示する",
"logs_operation": "YunoHostによるシステム操作",
"logs_package": "Debianパッケージ管理履歴",
"logs_service": "サービスログ",
"logs_share_with_yunopaste": "ログをYunoPasteで共有する",
"mailbox_quota_example": "CDは700M, DVDは 4700M",
"multi_instance": "複数回インストール可能",
"only_decent_quality_apps": "ふさわしい品質のアプリのみ",
"only_highquality_apps": "高い品質のアプリのみ",
"only_working_apps": "機能するアプリのみ",
"orphaned": "メンテナンスされていない",
"password_confirmation": "パスワード確認",
"permission_main": "メインラベル",
"permission_show_tile_enabled": "ユーザーポータルでタイルに表示する",
"rerun_diagnosis": "診断を再実行",
"run_first_diagnosis": "初回診断を実行する",
"select_all": "全てを選択",
"select_none": "選択を外す",
"service_start_on_boot": "起動時にスタート",
"system_apps_nothing": "全てのアプリが最新になりました!",
"system_packages_nothing": "全てのシステムパッケージが最新になりました!",
"system_update": "システムアップデート",
"tools_reboot": "サーバーを再起動",
"tools_shutdown": "サーバーをシャットダウン",
"unignore": "無視しない",
"upnp_disabled": "UPnPは無効化されています。",
"upnp_enabled": "UPnPは有効化されています。",
"user_emailaliases": "メールエイリアス",
"user_mailbox_use": "メールボックス使用スペース",
"user_username_edit": "{name}のアカウントを編集する",
"users_import_delete": "リストにないユーザーを削除する",
"warnings": "{count} 件の警告",
"wrong_password_or_username": "パスワードかユーザー名が間違っています",
"yunohost_admin": "YunoHost 管理者",
"form_input_example": "例: {example}",
"from_to": "{0} から {1}",
"go_back": "戻る",
"group_specific_permissions": "ユーザー個別権限",
"groups_and_permissions": "グループと権限",
"groups_and_permissions_manage": "グループと権限を管理する",
"hook_conf_ynh_certs": "SSL証明書",
"hook_conf_ynh_settings": "YunoHost設定",
"hook_data_home": "ユーザーデータ",
"hook_data_home_desc": "/home/USER 配下のユーザーデータ",
"hook_data_mail_desc": "サーバー内に保存されている電子メールアドレス",
"hook_data_xmpp": "XMPPデータ",
"install_name": "インストール {id}",
"install_time": "インストール時間",
"installation_complete": "インストール完了",
"issues": "{count} 個の問題",
"label_for_manifestname": "{name} のラベル",
"last_ran": "最後の実行:",
"logs_no_logs_registered": "このカテゴリーにログが登録されていません",
"manage_domains": "ドメイン管理",
"manage_groups": "グループ管理",
"manage_users": "ユーザー管理",
"migrations_disclaimer_check_message": "私はこの免責条項を読み、理解しました",
"migrations_disclaimer_not_checked": "このマイグレーションを実行する前に、免責条項を確認する必要があります。",
"migrations_done": "以前のマイグレーション",
"migrations_no_done": "以前のマイグレーションはありません",
"migrations_no_pending": "中断したマイグレーションはありません",
"migrations_pending": "中断しているマイグレーション",
"logs_system": "カーネルログとその他低レベルログイベント",
"mailbox_quota_placeholder": "0にセットすると無効化します。",
"manage_apps": "アプリ管理",
"set_default": "デフォルトに設定",
"system_upgrade_all_applications_btn": "全てのアプリケーションをアップグレード",
"system_upgrade_all_packages_btn": "全てのパッケージをアップグレード",
"tools_webadmin_settings": "Web管理者設定",
"tools_yunohost_settings": "YunoHost設定",
"user_emailaliases_add": "メールエイリアスを追加する",
"user_emailforward": "メール転送",
"user_emailforward_add": "メール転送を追加する",
"user_fullname": "フルネーム",
"user_interface_link": "ユーザーインターフェイス",
"user_mailbox_quota": "メールボックス クォータ",
"users_export": "ユーザーをエクスポート",
"users_import": "ユーザーをインポート",
"users_import_csv_file": "CSVファイル",
"users_import_delete_desc": "チェックを入れた場合、既存のユーザーのうちCSVファイルに入っていないユーザーは削除されます。",
"users_import_delete_others": "リストにないユーザーを削除する",
"users_import_update": "既存のユーザーを更新する",
"users_import_update_desc": "チェックを入れた場合、CSVファイルに入っている全てのユーザー情報が新しい値に更新されます",
"users_new": "新しいユーザー",
"users_no": "ユーザーがいません。",
"domain_dns_push_managed_in_parent_domain": "自動 DNS レコード機能は、親ドメイン <a href='#/domains/{parent_domain}/dns'>{parent_domain}</a>で管理されます。",
"domain_dns_push_not_applicable": "自動DNSレコード機能はドメイン {domain}には適用されません。<br> 以下の <a href='https://yunohost.org/dns'>ドキュメント</a> と推奨される構成に従って、DNS レコードを手動で構成する必要があります。",
"error_connection_interrupted": "サーバーは接続に応答する代わりに接続を閉じました。nginxまたはyunohost-apiが何らかの理由で再起動または停止されていませんか?",
"hook_data_xmpp_desc": "ルームとユーザーの設定、ファイルのアップロード",
"important_yunohost_upgrade": "YunoHostのメジャーアップグレードが利用可能です。アップグレードする前に、フォーラムのリリースートを注意深く読むことを強くお勧めします: フォーラムの<a href='https://forum.yunohost.org/tag/ynh_release'>リリースノートを閲覧</a>",
"items": {
"apps": "アプリなし | アプリ | {c} 個のアプリ",
"backups": "バックアップなし | バックアップ | {c} 個のバックアップ",
"domains": "ドメインなし | ドメイン | {c} 個のドメイン",
"groups": "グループなし | グループ | {c} 個のグループ",
"installed_apps": "インストール済アプリなし | インストール済アプリ | {c} 個のインストール済アプリ",
"logs": "ログなし | ログ | {c} 個のログ",
"permissions": "権限なし | 権限 | {c} 個の権限",
"services": "サービスなし | サービス | {c} 個のサービス",
"users": "ユーザーなし | ユーザー | {c} 人のユーザー"
},
"mailbox_quota_description": "メールのストレージサイズ制限を設定します。<br>無効にするには 0 を設定します。",
"perform": "実行する",
"permission_corresponding_url": "対応する URL",
"postinstall": {
"force": "インストール後処理の強制",
"title": "インストール後処理",
"user": {
"first_user_help": "このユーザーには管理者権限が付与され、この管理インターフェイスへの接続と、SSH 経由でサーバーへの直接接続が許可されます。\n通常のユーザーであるため、資格情報を使用してユーザーポータル(SSO)に接続することもできます。\nインストール後処理が完了すると、他のユーザーを「admins」グループに追加することで管理者ユーザーを作成できるようになります。",
"title": "最初の管理者ユーザーを作成する"
}
},
"postinstall_intro_1": "やりましたYunoHostは正常にインストールされました。",
"postinstall_intro_2": "サーバーのサービスを有効化するには、さらに 2 つの設定手順が必要です。",
"search": {
"for": "{items}について検索…",
"not_found": "条件に合致する {items} が存在する。 | 条件に合致する1つの {items} が存在する。 | 条件に合致する {items} が存在する。"
},
"since": "から",
"text_selection_is_disabled": "テキスト選択は無効です。このログを共有したい場合は、[Yunopasteで共有]ボタンで *フル*ログ を共有してください。<br/><small>または、本当にテキストを選択したい場合は、次のキーを押します:↓↓↑↑。</small>",
"tip_about_user_email": "ユーザーは、username@domain.tld 形式の関連付けられた電子メール アドレス (および XMPP アカウント) を使用して作成されます。追加のメール エイリアスとメール転送については、管理者とユーザーの両方が後から追加できます。",
"unauthorized": "許可されていないアクセス",
"users_import_confirm_destructive": "このファイルに存在しないユーザーを削除してもよろしいですか?",
"users_import_csv_file_desc": "CSV ファイルは UTF-8 でエンコードされており、username, password, groups, email, quota の列が含まれている必要があります。よくわからない場合、一旦 <a href='/yunohost/api/users/export' target='_BLANK'>ユーザーを CSV ファイルにエクスポート</a> し、そのファイルを変更してください。",
"experimental_warning": "警告:この機能は実験的なものであり、安定しているとは見なされないため、自分が何をしているのかを知っている場合を除いて、使用しないでください。",
"good_practices_about_admin_password": "新しい管理者パスワードを設定しようとしています。パスワードは少なくとも8文字である必要がありますが、より長いパスワード(パスフレーズなど)を使用したり、さまざまな種類の文字(大文字、小文字、数字、特殊文字)を使用したりすることをお勧めします。",
"good_practices_about_user_password": "新しいユーザー・パスワードを定義しようとしています。パスワードは少なくとも8文字である必要がありますが、より長いパスワード(パスフレーズなど)を使用したり、さまざまな種類の文字(大文字、小文字、数字、特殊文字)を使用したりすることをお勧めします。",
"group_explain_all_users": "これは、サーバー上のすべてのユーザー アカウントを含む特別なグループです",
"group_explain_visitors": "これは匿名の訪問者を代表する特別なグループです",
"group_explain_visitors_needed_for_external_client": "一部のアプリケーションを外部クライアントで使用する場合は、訪問者に許可しておく必要があることに注意してください。たとえば、スマートフォンまたはデスクトップコンピューターで同期クライアントを使用する場合、Nextcloudの場合がこれに当てはまります。",
"group_format_name_help": "英数字の文字とアンダースコアを使用できます",
"items_verbose_count": "存在する {items}. | 存在する 1つの {items}. | 存在する {items}.",
"items_verbose_items_left": "{items} 個残っている。 | 1個の {items} が残っている。 | {items} が残っている。",
"label_for_manifestname_help": "これはユーザーポータルに表示される名前です。後で変更できます。",
"operation_failed_explanation": "この操作は失敗しました。本当に申し訳ありません :( あなたは <a href='https://yunohost.org/help'>ヘルプ</a>を試すことができます。あなたを助けてくれる人々に、操作の*完全なログ*を提供してください。これを行うには、[Yunopasteで共有] と書かれた緑色のボタンをクリックします。ログを共有する場合、YunoHostは自動的にドメイン名やIPなどの個人データの匿名化を試みます。",
"orphaned_details": "このアプリはかなり長い間メンテナンスされていません。まだ機能しているかもしれませんが、誰かがそれをメンテナンスと言い始めるまで、アップグレードを受け取りません。このアプリを復活させるために力を貸してください!",
"pending_migrations": "実行を待機している保留中の移行がいくつかあります。<a href='#/tools/migrations'>ツール > 移行</a> に移動して、移行を実行してください。",
"postinstall_domain": "これは、YunoHostサーバーにリンクされた最初のドメイン名ですが、サーバーのユーザーが認証ポータルにアクセスするために使用するドメイン名でもあります。したがって、誰にでも見えるものになりますので、慎重に選択してください。",
"postinstall_set_domain": "メインドメインの設定",
"purge_user_data_checkbox": "{name}のデータをパージ(削除)しますか?(これにより、ホームディレクトリとメールディレクトリの内容が削除されます)",
"purge_user_data_warning": "ユーザーのデータのパージ(削除)は一度行うと元に戻せません。自分が何をしようとしているのか、十分に理解してくださいね!",
"group_explain_admins": "これは管理者ユーザーに対応する特別なグループです。このグループのユーザーは、YunoHostのウェブ管理者にアクセスし、SSHでサーバーに接続し、「sudo」コマンドを使用できます。また、root@、admin@、admins@に送信された診断通知などの電子メールも受信します。このグループには、絶対に信頼できる人だけを追加する必要があります!",
"postinstall_intro_3": "詳細については、<a href='//yunohost.org/en/install/hardware:vps_debian#fa-cog-proceed-with-the-initial-configuration' target='_blank'>適切なドキュメントページ</a>を参照してください"
}

View file

@ -1,170 +0,0 @@
{
"add": "Rnu",
"address": {
"domain_description": {
"domain": "Fren taɣult.",
"email": "Fren taɣult i imayl inek·inem."
},
"local_part_description": {
"email": "Fren aḥric adigan n imayl.",
"domain": "Fren taɣult ddaw."
}
},
"action": "Tigawt",
"all": "Akk",
"api": {
"query_status": {
"pending": "Iteddu"
}
},
"connection": "Tuqqna",
"created_at": "Yettwarna di",
"domain_name": "Isem n Taɣult",
"domains": "Tiɣula",
"download": "Sider",
"enable": "Rmed",
"enabled": "Yermed",
"error": "Tuccḍa",
"go_back": "Uɣal ɣer deffir",
"group_new": "Agraw amaynut",
"permissions": "Tisirag",
"history": {
"title": "Amazray",
"last_action": "Tigawt taneggarut:",
"methods": {
"DELETE": "Kkes",
"GET": "ɣeṛ"
}
},
"home": "Agejdan",
"id": "ID",
"ignore": "Ignorer",
"infos": "talɣut",
"next": "Suivant",
"no": "Uhu",
"nobody": "Ula yiwen",
"ok": "Ih",
"open": "Ldi",
"operations": "Timhalin",
"logs": "Aɣmis",
"logs_error": "Tuccḍa",
"logs_ended_at": "Fin",
"logs_started_at": "Démarrer",
"logs_context": "Asatal",
"port": "Port",
"previous": "Précédent",
"service_start_on_boot": "Bdu seg usenker",
"services": "Imeẓla",
"tools": "Ifecka",
"tools_webadmin": {
"cache": "Tuffirt",
"language": "Tutlayt"
},
"udp": "UDP",
"unignore": "Ur yettwazgel ara",
"uninstall": "Désinstaller",
"unknown": "D arussin",
"url": "URL",
"user_email": "Imayl",
"user_fullname": "Isem inek ummid",
"user_interface_link": "Agrudem n useqdac",
"version": "Lqem",
"words": {
"browse": "Snirem",
"collapse": "Ḍfes",
"default": "Prédéfini(e)",
"link": "Aseɣwen",
"none": "Ula d yiwen",
"separator": ", ",
"valid": "Tettwaqbel"
},
"yes": "Ih",
"api_error": {
"error_message": "Izen n tuccḍa:"
},
"app_make_default": "Err-it d amezwer",
"applications": "Isnasen",
"backup": "Asekles",
"backup_action": "Sekles",
"begin": "Bdu",
"cancel": "Sefsex",
"catalog": "Akaram",
"check": "Rrcem",
"close": "Mdel",
"code": "Tangalt",
"common": {
"firstname": "Isem",
"lastname": "Isem n tmagit"
},
"dead": "D arurmid",
"delete": "Kkes",
"configuration": "Tawila",
"description": "Asnummel",
"details": "Talqayt",
"disable": "Désactiver",
"disabled": "Ittwarermed",
"experimental": "Expérimental",
"firewall": "Aɣṛab n tmes",
"group_name": "Isem n wegraw",
"footer": {
"documentation": "Tasemlit",
"help": "Tesriḍ tallelt?",
"donate": "Tawsa"
},
"group_all_users": "Meṛṛa iseqdacen",
"group": "Agraw",
"group_visitors": "Imerza",
"group_add_member": "Rnu aseqdac",
"hook_data_mail": "Imayl",
"install": "sebdeed",
"installation_complete": "Asebded immed",
"installed": "Yettwasbedd",
"label": "Tabzimt",
"license": "Licence",
"login": "Aseqdac",
"logout": "Tufɣa",
"manage_users": "Sefrek iseqdacen",
"others": "Wiyyaḍ",
"password": "Awal n uɛeddi",
"password_confirmation": "Asentem n wawal uffir",
"path": "Chemin d'accès",
"logs_path": "Chemin d'accès",
"restart": "Ales tanekra",
"protocol": "Protocole",
"restore": "Err-d",
"retry": "Ɛreḍ tikkelt-nniḍen",
"run": "Selkem",
"running": "En cours d'exécution",
"save": "Sekles",
"select_all": "Fren akk",
"size": "Teɣzi",
"skip": "Zgel",
"start": "Démarrer",
"status": "État",
"stop": "Arrêter",
"system": "Anagraw",
"system_upgrade_btn": "Leqqem",
"tcp": "TCP",
"tools_reboot_btn": "Alles asekker",
"tools_shutdown_btn": "Sexsi",
"user_username": "Isem n useqdac",
"users": "Iseqdacen",
"administration_password": "Awal uffir n tedbelt",
"domain": {
"dns": {
"methods": {
"none": "Ula d yiwen"
}
}
},
"group_admins": "Inedbalen",
"footer_version": "Yezreɛ-it <a href='https://yunohost.org'>YunoHost</a> {version} ({repo}).",
"users_new": "Aseqdac amaynut",
"human_routes": {
"upgrade": {
"system": "Aleqqem n unagraw"
}
},
"tools_yunohost_settings": "Iɣewwaṛen n YunoHost",
"user_username_edit": "Ẓreg amaɣnu n {name}"
}

View file

@ -1,41 +0,0 @@
{
"action": "동작",
"add": "추가",
"address": {
"domain_description": {
"domain": "도메인을 선택하세요.",
"email": "이메일에 사용할 도메인을 선택하세요."
},
"local_part_description": {
"domain": "서브도메인을 선택하세요.",
"email": "이메일의 주소 부분(@의 오른쪽 부분)를 선택하세요."
}
},
"administration_password": "관리자 비밀번호",
"all": "모두",
"all_apps": "모든 앱",
"api": {
"partial_logs": "[…] (전체 로그는 기록에 있음)",
"processing": "서버가 동작을 수행 중입니다…",
"query_status": {
"error": "실패",
"pending": "실행 중",
"warning": "오류나 알림과 함께 성공적으로 완료됨",
"success": "성공적으로 완료됨"
},
"reconnecting": {
"reason": {
"reboot": "서버가 다시 시작되는 중이며 잠시동안 연결할 수 없습니다. 서버가 연결되면 로그인 프롬포트가 표시됩니다.",
"shutdown": "서버가 종료되는 중이며 더 이상 연결할 수 없습니다. 서버가 시작된 후 연결되면 로그인 프롬포트가 표시됩니다.",
"unknown": "알 수 없는 이유로 서버와의 연결이 종료되었습니다.",
"upgrade_system": "YunoHost 업그레이드를 위해 서버와의 연결이 종료되었습니다. 다시 연결될 때까지 잠시 기다리세요…"
},
"success": "서버와 연결되었습니다! 다시 로그인할 수 있습니다",
"title": "서버와 통신중…",
"failed": "서버가 응답하지 않는 것 같습니다. 다시 연결하거나 ssh를 통해 `systemctl restart yunohost-api` 명령을 실행하세요."
}
},
"api_error": {
"error_message": "오류 메시지:"
}
}

View file

@ -1,118 +0,0 @@
{
"address": {
"domain_description": {
"domain": "Pasirinkite domeną.",
"email": "Pasirinkite domeną savo el. paštui."
},
"local_part_description": {
"domain": "Pasirinkite subdomeną.",
"email": "Pasirinkite vietinę el. pašto dalį."
}
},
"api": {
"partial_logs": "[…] (visas išvestis rasite istorijoje)",
"reconnecting": {
"failed": "Atrodo, kad serveris neatsako. Galite pabandyti dar kartą prisijungti arba per ssh paleisti `systemctl restart yunohost-api`.",
"reason": {
"shutdown": "Jūsų serveris išjungiamas ir nebėra pasiekiamas. Įjunkite jį iš naujo ir prisijungimo užklausa bus rodoma, kai tik serveris taps pasiekiamas.",
"reboot": "Jūsų serveris perkraunamas ir kurį laiką nebus pasiekiamas. Kai tik serveris taps pasiekiamas, bus pateikta prisijungimo užklausa.",
"unknown": "Ryšys su serveriu nutrauktas dėl nežinomų priežasčių.",
"upgrade_system": "Ryšys su serveriu nutrauktas dėl YunoHost atnaujinimo. Laukiama, kol serveris vėl bus pasiekiamas…"
},
"success": "Dabar serveris pasiekiamas! Galite pabandyti prisijungti",
"title": "Bandoma susisiekti su serveriu…"
},
"processing": "Serveris apdoroja veiksmą…",
"query_status": {
"error": "Nesėkminga",
"pending": "Vykdoma",
"success": "Sėkmingai užbaigta",
"warning": "Sėkminga užbaiga su klaidom arba įspėjimais"
}
},
"api_error": {
"help": "Turėtumėte ieškoti pagalbos <a href=\"https://forum.yunohost.org/\">Forume</a> arba <a href=\"https://chat.yunohost.org/\">Pokalbiuose</a> , kad ištaisyti padėtį arba praneškite apie klaidą <a href=\"https://github.com/YunoHost/issues\"> klaidų stebėjimo sistemoje</a>.",
"error_message": "Pranešimas apie klaidą:",
"info": "Toliau pateikta informacija gali būti naudinga jums padedančiam asmeniui:",
"server_said": "Apdorojant veiksmą serveris pranešė:",
"sorry": "Labai atsiprašau apie tai.",
"view_error": "Peržiūros klaida"
},
"api_not_found": "Atrodo, kad žiniatinklio administratorius bandė pateikti užklausą apie tai, ko nėra.",
"api_not_responding": "\"YunoHost\" API neatsako. Galbūt 'yunohost-api' neveikia arba buvo paleista iš naujo?",
"api_waiting": "Laukiama serverio atsakymo…",
"app": {
"open_this_app": "Atidarykite šią programėlę",
"doc": {
"notifications": {
"post_upgrade": "Pastabos po atnaujinimo",
"title": "Pranešimai",
"post_install": "Pastabos po diegimo"
},
"about": {
"title": "Apie",
"description": "Aprašymas"
},
"admin": {
"title": "Admin dokumentacija"
}
},
"install": {
"notifs": {
"post": {
"alert": "Atrodo, kad diegimas pavyko gerai!\n Štai keletas pranešimų, kuriuos, pakuotojo nuomone, svarbu žinoti.\nJuos dar kartą galite perskaityti programėlės informacijos puslapyje.",
"title": "Pranešimai po įdiegimo '{name}'"
},
"pre": {
"warning": "Ką reikia žinoti prieš diegimą",
"danger": "Įdiegus programą greičiausiai kils problemų",
"critical": "Programos neįmanoma įdiegti"
}
},
"problems": {
"arch": "Šią programą galima įdiegti tik tam tikrose architektūrose ({required}), tačiau jūsų serverio architektūra yra {current}.",
"thirdparty": "Ši programa nepriklauso oficialiam \"YunoHost\" katalogui, todėl įdiegus trečiųjų šalių programas gali būti pažeistas jūsų sistemos vientisumas ir saugumas. Neturėtumėte jos diegti, nebent žinote, ką darote.",
"lowquality": "Ši programa gali veikti, tačiau ji nėra gerai integruota į \"YunoHost\". Kai kurios funkcijos, pavyzdžiui, vieno prisijungimo ir atsarginių kopijų darymo / atkūrimo, gali būti nepasiekiamos arba neatitinka standartų.",
"broken": "Pagal \"YunoHost\" automatinius testus ši programa yra sugedusi ir gali sugadinti jūsų sistemą! Neturėtumėte jos diegti, nebent žinote, ką darote.",
"ignore": "Suprantu, kad šis diegimas gali sugadinti mano sistemą, bet vis tiek noriu pabandyti.",
"inprogress": "Ši programa vis dar yra eksperimentinė (jei ne neveikianti) ir gali sugadinti jūsų sistemą! Neturėtumėte jos diegti, jei nežinote, ką darote.",
"install": "Tai jau įdiegta ir negali būti įdiegta daugiau nei vieną kartą.",
"ram": "Šiai programai įdiegti / atnaujinti reikia {required} operatyviosios atminties, tačiau dabar galima naudoti tik {current}. Net jei ši programa galėtų veikti, jos diegimo procesui reikia daug operatyviosios atminties, todėl jūsų serveris gali užšalti ir žlugti.",
"version": "Šiai programai reikia \"YunoHost\" >= {required}, bet jūsų dabartinė įdiegta versija yra {current}, pirmiausia atnaujinkite \"YunoHost\"."
},
"license": "Licencija: {license}",
"try_demo": "Išbandykite demonstracinę versiją",
"version": "Dabartinė versija: {version}"
},
"integration": {
"ldap": {
"?": "Nėra informacijos apie LDAP integraciją",
"false": "Nenaudoja \"YunoHost\" paskyrų prisijungimui (LDAP)",
"true": "Naudokite \"YunoHost\" paskyras prisijungimui (LDAP)"
},
"archs": "Palaikomos architektūros:",
"multi_instance": {
"false": "Galima įdiegti tik vieną kartą"
}
},
"installed_version": "Įdiegta versija:",
"antifeatures": "Ši programėlė turi funkcijų, kurios jums gali nepatikti:",
"info": {
"forum": "Ieškokite arba klauskite forume!",
"problem": "Problema su šia programėle?"
}
},
"action": "Veiksmas",
"add": "Pridėti",
"administration_password": "Administracijos slaptažodis",
"all": "Visi",
"all_apps": "Visos programėlės",
"api_errors_titles": {
"APIBadRequestError": "\"YunoHost\" susidūrė su klaida",
"APIConnexionError": "\"YunoHost\" susidūrė su ryšio klaida",
"APIError": "\"YunoHost\" susidūrė su netikėta klaida",
"APIInternalError": "\"YunoHost\" susidūrė su vidine klaida",
"APINotFoundError": "YunoHost API nepavyko rasti maršruto",
"APINotRespondingError": "\"YunoHost\" API neatsako"
}
}

View file

@ -1,13 +0,0 @@
{
"action": "акција",
"add": "додади",
"address": {
"domain_description": {
"domain": "одбери домен",
"email": "одбери домен за вашиот емаил"
},
"local_part_description": {
"domain": "одбери под домен"
}
}
}

Some files were not shown because too many files have changed in this diff Show more