Compare commits

..

No commits in common. "master" and "v2.32.1" have entirely different histories.

162 changed files with 1893 additions and 104438 deletions

View File

@ -1,7 +1,5 @@
.venv *
dist !docker/*
.idea !healthcheck.sh
frontend/node_modules !docker_config.json
frontend/dist !filebrowser
filebrowser.db
docs/index.md

2
.github/CODEOWNERS vendored
View File

@ -2,4 +2,4 @@
# Unless a later match takes precedence, @o1egl will be requested for # Unless a later match takes precedence, @o1egl will be requested for
# review when someone opens a pull request. # review when someone opens a pull request.
* @o1egl @hacdias * @o1egl

View File

@ -20,32 +20,22 @@ body:
render: Text render: Text
description: | description: |
Enter the version of FileBrowser you are using. Enter the version of FileBrowser you are using.
validations:
required: true
- type: textarea - type: textarea
attributes: attributes:
label: Description label: Description
description: | description: |
A clear and concise description of what the issue is about. What are you trying to do? A clear and concise description of what the issue is about. What are you trying to do?
validations:
required: true
- type: textarea - type: textarea
attributes: attributes:
label: What did you expect to happen? label: What did you expect to happen?
validations:
required: true
- type: textarea - type: textarea
attributes: attributes:
label: What actually happened? label: What actually happened?
validations:
required: true
- type: textarea - type: textarea
attributes: attributes:
label: Reproduction Steps label: Reproduction Steps
description: | description: |
Tell us how to reproduce this issue. How can someone who is starting from scratch reproduce this behavior as minimally as possible? Tell us how to reproduce this issue. How can someone who is starting from scratch reproduce this behavior as minimally as possible?
validations:
required: true
- type: textarea - type: textarea
attributes: attributes:
label: Files label: Files

View File

@ -11,6 +11,5 @@
Before submitting your PR, please indicate which issues are either fixed or closed by this PR. See [GitHub Help: Closing issues using keywords](https://help.github.com/articles/closing-issues-via-commit-messages/). Before submitting your PR, please indicate which issues are either fixed or closed by this PR. See [GitHub Help: Closing issues using keywords](https://help.github.com/articles/closing-issues-via-commit-messages/).
- [ ] I am aware the project is currently in maintenance-only mode. See [README](https://github.com/filebrowser/community/blob/master/README.md) - [ ] I am aware the project is currently in maintenance-only mode. See [README](https://github.com/filebrowser/community/blob/master/README.md)
- [ ] I am aware that translations MUST be made through [Transifex](https://app.transifex.com/file-browser/file-browser/) and that this PR is NOT a translation update
- [ ] I am making a PR against the `master` branch. - [ ] I am making a PR against the `master` branch.
- [ ] I am sure File Browser can be successfully built. See [builds](https://github.com/filebrowser/community/blob/master/builds.md) and [development](https://github.com/filebrowser/community/blob/master/development.md). - [ ] I am sure File Browser can be successfully built. See [builds](https://github.com/filebrowser/community/blob/master/builds.md) and [development](https://github.com/filebrowser/community/blob/master/development.md).

View File

@ -1,20 +0,0 @@
name: Build Site
on:
pull_request:
paths:
- 'www'
- '*.md'
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Build site
run: make site

View File

@ -1,32 +0,0 @@
name: Build and Deploy Site
on:
push:
branches:
- master
jobs:
deploy:
permissions:
contents: read
deployments: write
pull-requests: write
runs-on: ubuntu-latest
timeout-minutes: 5
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Build site
run: make site
- name: Deploy to Cloudflare Pages
uses: cloudflare/wrangler-action@v3
with:
apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}
accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
command: pages deploy www/public --project-name=${{ secrets.CLOUDFLARE_PROJECT_NAME }}
gitHubToken: ${{ secrets.GITHUB_TOKEN }}

1
.gitignore vendored
View File

@ -6,7 +6,6 @@ rice-box.go
/filebrowser /filebrowser
/filebrowser.exe /filebrowser.exe
/dist /dist
.venv
.DS_Store .DS_Store
node_modules node_modules

View File

@ -1,132 +1,121 @@
version: "2" linters-settings:
dupl:
threshold: 100
exhaustive:
default-signifies-exhaustive: false
funlen:
lines: 100
statements: 50
goconst:
min-len: 2
min-occurrences: 2
gocritic:
enabled-tags:
- diagnostic
- experimental
- opinionated
- performance
- style
disabled-checks:
- dupImport # https://github.com/go-critic/go-critic/issues/845
- ifElseChain
- octalLiteral
- whyNoLint
- wrapperFunc
gocyclo:
min-complexity: 15
goimports:
local-prefixes: github.com/filebrowser/filebrowser
gomnd:
# don't include the "operation" and "assign"
checks:
- argument
- case
- condition
- return
ignored-numbers:
- '0'
- '1'
- '2'
- '3'
ignored-functions:
- strings.SplitN
govet:
enable:
- nilness
- shadow
lll:
line-length: 140
misspell:
locale: US
nolintlint:
allow-unused: false # report any unused nolint directives
require-explanation: false # require an explanation for nolint directives
require-specific: true # require nolint directives to be specific about which linter is being skipped
linters: linters:
# inverted configuration with `default: all` and `disable` is not scalable during updates of golangci-lint # please, do not use `enable-all`: it's deprecated and will be removed soon.
default: none # inverted configuration with `enable-all` and `disable` is not scalable during updates of golangci-lint
disable-all: true
enable: enable:
- bodyclose - bodyclose
- dogsled - dogsled
- dupl - dupl
- errcheck - errcheck
- errorlint - errorlint
- exportloopref
- exhaustive - exhaustive
- funlen - funlen
- gocheckcompilerdirectives - gocheckcompilerdirectives
- gochecknoinits - gochecknoinits
- goconst
- gocritic - gocritic
- gocyclo - gocyclo
- godox - godox
- goimports
- gomnd
- goprintffuncname - goprintffuncname
- gosec - gosec
- gosimple
- govet - govet
- ineffassign - ineffassign
- lll - lll
- misspell - misspell
- mnd
- nakedret - nakedret
- nolintlint - nolintlint
- prealloc - prealloc
- revive - revive
- rowserrcheck - rowserrcheck
- staticcheck - staticcheck
- stylecheck
- testifylint - testifylint
- typecheck
- unconvert - unconvert
- unparam - unparam
- unused - unused
- whitespace - whitespace
settings:
dupl:
threshold: 100
exhaustive:
default-signifies-exhaustive: false
funlen:
lines: 100
statements: 50
gocritic:
disabled-checks:
- dupImport # https://github.com/go-critic/go-critic/issues/845
- ifElseChain
- octalLiteral
- whyNoLint
- wrapperFunc
enabled-tags:
- diagnostic
- experimental
- opinionated
- performance
- style
gocyclo:
min-complexity: 15
govet:
enable:
- nilness
- shadow
lll:
line-length: 140
misspell:
locale: US
mnd:
# don't include the "operation" and "assign"
checks:
- argument
- case
- condition
- return
ignored-numbers:
- "0"
- "1"
- "2"
- "3"
- "0666"
- "0700"
- "0700"
ignored-functions:
- strings.SplitN
- make
nolintlint:
allow-unused: false # report any unused nolint directives
require-explanation: false # require an explanation for nolint directives
require-specific: true # require nolint directives to be specific about which linter is being skipped
staticcheck:
checks:
- "all"
- "-QF*"
exclusions:
generated: lax
presets:
- comments
- common-false-positives
- legacy
- std-error-handling
rules:
- linters:
- gochecknoinits
path: cmd/.*.go
- linters:
- dupl
- funlen
- gochecknoinits
- gocyclo
- lll
- scopelint
path: .*_test.go
- linters:
- misspell
text: "[aA]uther"
- linters:
- mnd
text: strconv.Parse
paths:
- frontend/
formatters: issues:
enable: exclude-dirs:
- goimports - frontend/
settings: exclude-rules:
goimports: - path: cmd/.*.go
local-prefixes: linters:
- github.com/filebrowser/filebrowser - gochecknoinits
exclusions: - path: .*_test.go
generated: lax linters:
paths: - lll
- frontend/ - gochecknoinits
- gocyclo
- funlen
- dupl
- scopelint
- text: "Auther"
linters:
- misspell
- text: "strconv.Parse"
linters:
- gomnd
run:
timeout: 5m

View File

@ -19,30 +19,31 @@ builds:
- freebsd - freebsd
goarch: goarch:
- amd64 - amd64
- "386" - 386
- arm - arm
- arm64 - arm64
- riscv64 - riscv64
goarm: goarm:
- "5" - 5
- "6" - 6
- "7" - 7
ignore: ignore:
- goos: darwin - goos: darwin
goarch: "386" goarch: 386
- goos: freebsd - goos: freebsd
goarch: arm goarch: arm
archives: archives:
- name_template: "{{.Os}}-{{.Arch}}{{if .Arm}}v{{.Arm}}{{end}}-{{ .ProjectName }}" -
formats: ["tar.gz"] name_template: "{{.Os}}-{{.Arch}}{{if .Arm}}v{{.Arm}}{{end}}-{{ .ProjectName }}"
formats: [ 'tar.gz' ]
format_overrides: format_overrides:
- goos: windows - goos: windows
formats: ["zip"] formats: [ 'zip' ]
dockers: dockers:
# Alpine docker images -
- dockerfile: Dockerfile dockerfile: Dockerfile
use: buildx use: buildx
build_flag_templates: build_flag_templates:
- "--pull" - "--pull"
@ -58,8 +59,10 @@ dockers:
- "filebrowser/filebrowser:{{ .Tag }}-amd64" - "filebrowser/filebrowser:{{ .Tag }}-amd64"
- "filebrowser/filebrowser:v{{ .Major }}-amd64" - "filebrowser/filebrowser:v{{ .Major }}-amd64"
extra_files: extra_files:
- docker - docker_config.json
- dockerfile: Dockerfile - healthcheck.sh
-
dockerfile: Dockerfile
use: buildx use: buildx
build_flag_templates: build_flag_templates:
- "--pull" - "--pull"
@ -75,8 +78,10 @@ dockers:
- "filebrowser/filebrowser:{{ .Tag }}-arm64" - "filebrowser/filebrowser:{{ .Tag }}-arm64"
- "filebrowser/filebrowser:v{{ .Major }}-arm64" - "filebrowser/filebrowser:v{{ .Major }}-arm64"
extra_files: extra_files:
- docker - docker_config.json
- dockerfile: Dockerfile - healthcheck.sh
-
dockerfile: Dockerfile
use: buildx use: buildx
build_flag_templates: build_flag_templates:
- "--pull" - "--pull"
@ -88,13 +93,15 @@ dockers:
- "--platform=linux/arm/v6" - "--platform=linux/arm/v6"
goos: linux goos: linux
goarch: arm goarch: arm
goarm: "6" goarm: '6'
image_templates: image_templates:
- "filebrowser/filebrowser:{{ .Tag }}-armv6" - "filebrowser/filebrowser:{{ .Tag }}-armv6"
- "filebrowser/filebrowser:v{{ .Major }}-armv6" - "filebrowser/filebrowser:v{{ .Major }}-armv6"
extra_files: extra_files:
- docker - docker_config.json
- dockerfile: Dockerfile - healthcheck.sh
-
dockerfile: Dockerfile
use: buildx use: buildx
build_flag_templates: build_flag_templates:
- "--pull" - "--pull"
@ -106,15 +113,16 @@ dockers:
- "--platform=linux/arm/v7" - "--platform=linux/arm/v7"
goos: linux goos: linux
goarch: arm goarch: arm
goarm: "7" goarm: '7'
image_templates: image_templates:
- "filebrowser/filebrowser:{{ .Tag }}-armv7" - "filebrowser/filebrowser:{{ .Tag }}-armv7"
- "filebrowser/filebrowser:v{{ .Major }}-armv7" - "filebrowser/filebrowser:v{{ .Major }}-armv7"
extra_files: extra_files:
- docker - docker_config.json
- healthcheck.sh
## s6-overlay docker images ## s6 based docker images
- dockerfile: Dockerfile.s6 -
dockerfile: Dockerfile.s6
use: buildx use: buildx
build_flag_templates: build_flag_templates:
- "--pull" - "--pull"
@ -130,8 +138,10 @@ dockers:
- "filebrowser/filebrowser:{{ .Tag }}-amd64-s6" - "filebrowser/filebrowser:{{ .Tag }}-amd64-s6"
- "filebrowser/filebrowser:v{{ .Major }}-amd64-s6" - "filebrowser/filebrowser:v{{ .Major }}-amd64-s6"
extra_files: extra_files:
- docker - docker/root
- dockerfile: Dockerfile.s6 - healthcheck.sh
-
dockerfile: Dockerfile.s6.aarch64
use: buildx use: buildx
build_flag_templates: build_flag_templates:
- "--pull" - "--pull"
@ -147,8 +157,8 @@ dockers:
- "filebrowser/filebrowser:{{ .Tag }}-arm64-s6" - "filebrowser/filebrowser:{{ .Tag }}-arm64-s6"
- "filebrowser/filebrowser:v{{ .Major }}-arm64-s6" - "filebrowser/filebrowser:v{{ .Major }}-arm64-s6"
extra_files: extra_files:
- docker - docker/root
- healthcheck.sh
docker_manifests: docker_manifests:
- name_template: "filebrowser/filebrowser:latest" - name_template: "filebrowser/filebrowser:latest"
image_templates: image_templates:
@ -165,7 +175,7 @@ docker_manifests:
- "filebrowser/filebrowser:v{{ .Major }}-amd64" - "filebrowser/filebrowser:v{{ .Major }}-amd64"
- "filebrowser/filebrowser:v{{ .Major }}-arm64" - "filebrowser/filebrowser:v{{ .Major }}-arm64"
- "filebrowser/filebrowser:v{{ .Major }}-armv7" - "filebrowser/filebrowser:v{{ .Major }}-armv7"
## s6 image manifests ## s6 image manifests
- name_template: "filebrowser/filebrowser:s6" - name_template: "filebrowser/filebrowser:s6"
image_templates: image_templates:
- "filebrowser/filebrowser:{{ .Tag }}-amd64-s6" - "filebrowser/filebrowser:{{ .Tag }}-amd64-s6"
@ -178,20 +188,15 @@ docker_manifests:
image_templates: image_templates:
- "filebrowser/filebrowser:v{{ .Major }}-amd64-s6" - "filebrowser/filebrowser:v{{ .Major }}-amd64-s6"
- "filebrowser/filebrowser:v{{ .Major }}-arm64-s6" - "filebrowser/filebrowser:v{{ .Major }}-arm64-s6"
brews:
homebrew_casks:
- name: filebrowser - name: filebrowser
repository: repository:
owner: filebrowser owner: filebrowser
name: homebrew-tap name: homebrew-tap
directory: Formula
homepage: https://filebrowser.org
commit_author: commit_author:
name: FileBrowser Robot name: FileBrowser Robot
email: robot@filebrowser.org email: robot@filebrowser.org
homepage: https://github.com/filebrowser/filebrowser
description: File Browser is a create-your-own-cloud-kind of software where you can install it on a server, direct it to a path and then access your files through a nice web interface description: File Browser is a create-your-own-cloud-kind of software where you can install it on a server, direct it to a path and then access your files through a nice web interface
hooks: license: "MIT"
post:
install: |
if system_command("/usr/bin/xattr", args: ["-h"]).exit_status == 0
system_command "/usr/bin/xattr", args: ["-dr", "com.apple.quarantine", "#{staged_path}/filebrowser"]
end

View File

@ -2,259 +2,6 @@
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
### [2.40.1](https://github.com/filebrowser/filebrowser/compare/v2.40.0...v2.40.1) (2025-07-15)
### Bug Fixes
* print correct user on setup ([88f1442](https://github.com/filebrowser/filebrowser/commit/88f144293267260fd4d823e3259783309b1a57b3))
## [2.40.0](https://github.com/filebrowser/filebrowser/compare/v2.39.0...v2.40.0) (2025-07-13)
### Features
* add font size botton to text editor ([#5290](https://github.com/filebrowser/filebrowser/issues/5290)) ([035084d](https://github.com/filebrowser/filebrowser/commit/035084d8e83243065fad69bfac1b69559fbad5fb))
### Bug Fixes
* invalid path when uploading files ([9072cbc](https://github.com/filebrowser/filebrowser/commit/9072cbce340da55477906f5419a4cfb6d6937dc0))
* Only left click should drag the image in extended image view ([b8454bb](https://github.com/filebrowser/filebrowser/commit/b8454bb2e41ca2848b926b66354468ba4b1c7ba5))
## [2.39.0](https://github.com/filebrowser/filebrowser/compare/v2.38.0...v2.39.0) (2025-07-13)
### Features
* Improve Docker entrypoint and config handling ([01c814c](https://github.com/filebrowser/filebrowser/commit/01c814cf98f81f2bcd622aea75e5b1efe3484940))
* rewrite the archiver and added support for zstd and brotli ([#5283](https://github.com/filebrowser/filebrowser/issues/5283)) ([7c71686](https://github.com/filebrowser/filebrowser/commit/7c716862c1bd3cdedd3c02d3a37207293db197ca))
### Bug Fixes
* drop modify permission for uploading new file ([#5270](https://github.com/filebrowser/filebrowser/issues/5270)) ([0f27c91](https://github.com/filebrowser/filebrowser/commit/0f27c91eca581482ce4f82f6429f5dac12f8b64e))
* Settings button in the sidebar ([5a8e717](https://github.com/filebrowser/filebrowser/commit/5a8e7171b1b41eff771fe27133c91d2c250896a8))
### Build
* improve docker image and binary sizes ([35ca24a](https://github.com/filebrowser/filebrowser/commit/35ca24adb886721fc9d5e1a68cfc577e2c5f0230))
* lightweight busybox-based container build ([#5285](https://github.com/filebrowser/filebrowser/issues/5285)) ([5c5942d](https://github.com/filebrowser/filebrowser/commit/5c5942d99514b433e09d90624bbe58992eab6be2))
* remove upx ([1a5c83b](https://github.com/filebrowser/filebrowser/commit/1a5c83bcfe847f1e41a44cef23fd795b19b6b434))
## [2.38.0](https://github.com/filebrowser/filebrowser/compare/v2.37.0...v2.38.0) (2025-07-12)
### Features
* Show the current users name in the sidebar ([#2821](https://github.com/filebrowser/filebrowser/issues/2821)) ([528ce92](https://github.com/filebrowser/filebrowser/commit/528ce92fad6dcc8e8b7910036bf9175146e27bf7))
* Updates for project File Browser ([b4eddf4](https://github.com/filebrowser/filebrowser/commit/b4eddf45e4d7e6f6ccf242e67fe20f89f5e2f9a9))
### Bug Fixes
* prevent page change if there are outstanding edits ([#5260](https://github.com/filebrowser/filebrowser/issues/5260)) ([fbe169b](https://github.com/filebrowser/filebrowser/commit/fbe169b84f28cba22ea87f01b52f2420f1ea6814))
## [2.37.0](https://github.com/filebrowser/filebrowser/compare/v2.36.3...v2.37.0) (2025-07-08)
### Features
* Translate frontend/src/i18n/en.json in zh_CN ([65bbf44](https://github.com/filebrowser/filebrowser/commit/65bbf44e3c0bff83e64193d46e9d6ad302952276))
* Translate frontend/src/i18n/en.json in zh_TW ([b28952c](https://github.com/filebrowser/filebrowser/commit/b28952cb2582bd4eb44e91d0676e2803c458cf31))
* Translate frontend/src/i18n/en.json in zh_TW ([1e96fd9](https://github.com/filebrowser/filebrowser/commit/1e96fd9035d5185dc80970a2826ccb573b5f000e))
### Bug Fixes
* long file name overlap ([fcb248a](https://github.com/filebrowser/filebrowser/commit/fcb248a5feb7b7404ca5923aae17f6d3f8d3cc96))
* preview PDF is correctly displayed ([bf73e4d](https://github.com/filebrowser/filebrowser/commit/bf73e4dea3b27c01c8f6e60fb2048e1a2122a70e))
* Upload progress size calculation ([e423395](https://github.com/filebrowser/filebrowser/commit/e423395ef0bcd106ddc7d460c055b95b5208415e))
### [2.36.3](https://github.com/filebrowser/filebrowser/compare/v2.36.2...v2.36.3) (2025-07-06)
### Bug Fixes
* log error if branding file exists but cannot be loaded ([3645b57](https://github.com/filebrowser/filebrowser/commit/3645b578cddb9fc8f25a00e0153fb600ad1b9266))
### [2.36.2](https://github.com/filebrowser/filebrowser/compare/v2.36.1...v2.36.2) (2025-07-06)
### Bug Fixes
* lookup directory name if blank when downloading shared directory ([046d619](https://github.com/filebrowser/filebrowser/commit/046d6193c57b4df0e3dc583b6518b43d29d302c9))
### [2.36.1](https://github.com/filebrowser/filebrowser/compare/v2.36.0...v2.36.1) (2025-07-03)
### Bug Fixes
* remove associated shares when deleting file/folder ([e99e0b3](https://github.com/filebrowser/filebrowser/commit/e99e0b3028e1c8a50e1744bb07ecc8e809bdb8e6))
## [2.36.0](https://github.com/filebrowser/filebrowser/compare/v2.35.0...v2.36.0) (2025-07-02)
### Features
* update icons, remove deprecated Microsoft Tiles ([04166e8](https://github.com/filebrowser/filebrowser/commit/04166e81e52d38b1f66ba3313ccb1291c239eea2))
## [2.35.0](https://github.com/filebrowser/filebrowser/compare/v2.34.2...v2.35.0) (2025-06-30)
### Features
* Long press selects item in single click mode ([8d75220](https://github.com/filebrowser/filebrowser/commit/8d7522049ced83f28f0933b55772c32e3ad04627))
### Bug Fixes
* shell value must be joined by blank space ([4403cd3](https://github.com/filebrowser/filebrowser/commit/4403cd35720dbda5a8bb1013b92582accf3317bc))
* update documentation links ([38d0366](https://github.com/filebrowser/filebrowser/commit/38d0366acf88352b5a9a97c45837b0f865efae0b))
### [2.34.2](https://github.com/filebrowser/filebrowser/compare/v2.34.1...v2.34.2) (2025-06-29)
### Bug Fixes
* mitigate unprotected shares ([2b5d6cb](https://github.com/filebrowser/filebrowser/commit/2b5d6cbb996a61a769acc56af0acc12eec2d8d8f))
### [2.34.1](https://github.com/filebrowser/filebrowser/compare/v2.34.0...v2.34.1) (2025-06-29)
### Bug Fixes
* exclude to-be-moved folder from move dialog ([#5235](https://github.com/filebrowser/filebrowser/issues/5235)) ([7354eb6](https://github.com/filebrowser/filebrowser/commit/7354eb6cf966244141277c2808988855c004f908))
* passthrough the minimum password length ([#5236](https://github.com/filebrowser/filebrowser/issues/5236)) ([bf37f88](https://github.com/filebrowser/filebrowser/commit/bf37f88c32222ad9c186482bb97338a9c9b4a93c))
## [2.34.0](https://github.com/filebrowser/filebrowser/compare/v2.33.10...v2.34.0) (2025-06-29)
### Features
* Translate frontend/src/i18n/en.json in fa ([0acd69c](https://github.com/filebrowser/filebrowser/commit/0acd69c537ce2909ff62c4bb6980982524ece221))
* Translate frontend/src/i18n/en.json in fa ([#5233](https://github.com/filebrowser/filebrowser/issues/5233)) ([09f679f](https://github.com/filebrowser/filebrowser/commit/09f679fae43398f5b87d21acc9d974d4d053392f))
* update translations for project File Browser ([#5226](https://github.com/filebrowser/filebrowser/issues/5226)) ([a5ea2a2](https://github.com/filebrowser/filebrowser/commit/a5ea2a266bef619d1c4322266d1aa7d397d2c856))
### Bug Fixes
* abort ongoing requests when changing pages ([#3927](https://github.com/filebrowser/filebrowser/issues/3927)) ([93c4b2e](https://github.com/filebrowser/filebrowser/commit/93c4b2e03c5176da01a7e00a03c03ffcce279bc8))
* add configurable minimum password length ([#5225](https://github.com/filebrowser/filebrowser/issues/5225)) ([464b644](https://github.com/filebrowser/filebrowser/commit/464b644adf22a2178414a6f1e4fa286276de81d2))
* do not expose the name of the root directory ([#5224](https://github.com/filebrowser/filebrowser/issues/5224)) ([0892559](https://github.com/filebrowser/filebrowser/commit/089255997a653c284cd4249990b58bed00086c61))
* Graceful shutdown ([8230eb7](https://github.com/filebrowser/filebrowser/commit/8230eb7ab51ccbd00b03f5b9d6964fa4aae331d4))
### Reverts
* Revert "docs: change cloudflare environment (#5231)" (#5232) ([9e273cd](https://github.com/filebrowser/filebrowser/commit/9e273cd9475d57b9500034e8b341ff8b620bcab8)), closes [#5231](https://github.com/filebrowser/filebrowser/issues/5231) [#5232](https://github.com/filebrowser/filebrowser/issues/5232)
### Build
* add an arm64 target for the site image ([#5229](https://github.com/filebrowser/filebrowser/issues/5229)) ([f5e531c](https://github.com/filebrowser/filebrowser/commit/f5e531c8ae0b9b18717e184856ace0ce19beef82))
* bump golangci-lint to 2.1.6 ([1d494ff](https://github.com/filebrowser/filebrowser/commit/1d494ff3159ef939cfb4980ccde6f27df3e738b5))
* **deps:** bump brace-expansion from 1.1.11 to 1.1.12 in /tools ([#5228](https://github.com/filebrowser/filebrowser/issues/5228)) ([5a07291](https://github.com/filebrowser/filebrowser/commit/5a072913062a6b2b0e5c74a02ca7710218ed3e5e))
* **deps:** bump github.com/go-viper/mapstructure/v2 ([f32f273](https://github.com/filebrowser/filebrowser/commit/f32f27383d1fafa074f038cc873bd37b7f20ee27))
* **deps:** bump github.com/go-viper/mapstructure/v2 in /tools ([5331969](https://github.com/filebrowser/filebrowser/commit/5331969163f5ae1fd2389f665059fc9e4a98db15))
* publish docs to cloudflare pages ([#5230](https://github.com/filebrowser/filebrowser/issues/5230)) ([8861933](https://github.com/filebrowser/filebrowser/commit/8861933cf845b104e072f35e5f37d7c26097c9dc))
### [2.33.10](https://github.com/filebrowser/filebrowser/compare/v2.33.9...v2.33.10) (2025-06-26)
### Bug Fixes
* correctly check if command is allowed when using shell ([4d830f7](https://github.com/filebrowser/filebrowser/commit/4d830f707fc4314741fd431e70c2ce50cd5a3108))
* correctly split shell ([f84a6db](https://github.com/filebrowser/filebrowser/commit/f84a6db680b6df1c7c8f06f1816f7e4c9e963668))
* ignore linting error ([e735491](https://github.com/filebrowser/filebrowser/commit/e735491c57b12c3b19dd2e4b570723df78f4eb44))
### [2.33.9](https://github.com/filebrowser/filebrowser/compare/v2.33.8...v2.33.9) (2025-06-26)
### Bug Fixes
* check exact match on command allow list ([e2e1e49](https://github.com/filebrowser/filebrowser/commit/e2e1e4913085cca8917e0f69171dc28d3c6af1b6))
* remove auth token from /api/command ([d5b39a1](https://github.com/filebrowser/filebrowser/commit/d5b39a14fd3fc0d1c364116b41289484df7c27b2))
* remove unused import ([c232d41](https://github.com/filebrowser/filebrowser/commit/c232d41f903d3026ec290bbe819b6c59a933048e))
### [2.33.8](https://github.com/filebrowser/filebrowser/compare/v2.33.7...v2.33.8) (2025-06-25)
### [2.33.7](https://github.com/filebrowser/filebrowser/compare/v2.33.6...v2.33.7) (2025-06-25)
### Bug Fixes
* correctly parse negative boolean flags ([221451a](https://github.com/filebrowser/filebrowser/commit/221451a5179c8f139819a315b80d0ecb0e7220c3))
* linting issues ([4bfbf33](https://github.com/filebrowser/filebrowser/commit/4bfbf332499fc8aea5f6df6aae1efa0de918d1ae))
* linting issues ([e74c958](https://github.com/filebrowser/filebrowser/commit/e74c95886226c0ee429af1860eed21dd1f8601aa))
### [2.33.6](https://github.com/filebrowser/filebrowser/compare/v2.33.5...v2.33.6) (2025-06-24)
### Bug Fixes
* remove incorrect default for password flag ([23bd8f6](https://github.com/filebrowser/filebrowser/commit/23bd8f67155081d707d4799393d3b1e2bebeaa34))
### [2.33.5](https://github.com/filebrowser/filebrowser/compare/v2.33.4...v2.33.5) (2025-06-24)
### Features
* update languages for project File Browser ([#5190](https://github.com/filebrowser/filebrowser/issues/5190)) ([f330764](https://github.com/filebrowser/filebrowser/commit/f33076462a133935ca97fb6c7345303fe350e167))
### Bug Fixes
* actually register the czech language ([#5189](https://github.com/filebrowser/filebrowser/issues/5189)) ([0268506](https://github.com/filebrowser/filebrowser/commit/0268506f80d33d2d31e38055e12530241d27a11b))
### [2.33.4](https://github.com/filebrowser/filebrowser/compare/v2.33.3...v2.33.4) (2025-06-22)
### Features
* translation updates for project File Browser ([#5179](https://github.com/filebrowser/filebrowser/issues/5179)) ([f714e71](https://github.com/filebrowser/filebrowser/commit/f714e71a356c2301f394d651c9b6c467440508e3))
### [2.33.3](https://github.com/filebrowser/filebrowser/compare/v2.33.2...v2.33.3) (2025-06-22)
### Bug Fixes
* keep command behavior in Dockerfile ([7c0c782](https://github.com/filebrowser/filebrowser/commit/7c0c7820efbbed2f0499353cc76ecb85d00ff7c3))
* update search hotkey in help prompt ([#5178](https://github.com/filebrowser/filebrowser/issues/5178)) ([2741616](https://github.com/filebrowser/filebrowser/commit/2741616473636d40b7e9f14c9906ada08d328c3c))
### [2.33.2](https://github.com/filebrowser/filebrowser/compare/v2.33.1...v2.33.2) (2025-06-21)
### Bug Fixes
* create user dir on signup ([0ca8059](https://github.com/filebrowser/filebrowser/commit/0ca8059d8dea4fe079146471ce4f24acc96021f2))
### [2.33.1](https://github.com/filebrowser/filebrowser/compare/v2.33.0...v2.33.1) (2025-06-21)
### Bug Fixes
* downloadUrl of file preview ([#3728](https://github.com/filebrowser/filebrowser/issues/3728)) ([8a14018](https://github.com/filebrowser/filebrowser/commit/8a14018861fe581672bbd27cdc3ae5691f70a108))
* remove auth query parameter from download and preview links ([cbb7124](https://github.com/filebrowser/filebrowser/commit/cbb712484d3bdabc033acaf3b696ef4f5865813d))
* search uses ctrl+shift+f instead of hijacking browser's ctrl+f ([#4638](https://github.com/filebrowser/filebrowser/issues/4638)) ([a02b297](https://github.com/filebrowser/filebrowser/commit/a02b2972ebde2a58806ad1377bad46e748b63166))
## [2.33.0](https://github.com/filebrowser/filebrowser/compare/v2.32.3...v2.33.0) (2025-06-18)
### Features
* improved docker image volumes and permissions ([#5160](https://github.com/filebrowser/filebrowser/issues/5160)) ([2e26393](https://github.com/filebrowser/filebrowser/commit/2e26393a022df0eaa9e08727407aba8b997aa728))
### [2.32.3](https://github.com/filebrowser/filebrowser/compare/v2.32.2...v2.32.3) (2025-06-17)
### [2.32.2](https://github.com/filebrowser/filebrowser/compare/v2.32.1...v2.32.2) (2025-06-17)
### Features
* updated for project File Browser ([#5159](https://github.com/filebrowser/filebrowser/issues/5159)) ([c34c0af](https://github.com/filebrowser/filebrowser/commit/c34c0afecf3242b16ad5d5584cd90a6ad323361c))
### [2.32.1](https://github.com/filebrowser/filebrowser/compare/v2.32.0...v2.32.1) (2025-06-16) ### [2.32.1](https://github.com/filebrowser/filebrowser/compare/v2.32.0...v2.32.1) (2025-06-16)

View File

@ -1,46 +0,0 @@
# Code of Conduct
## Contributor Covenant Code of Conduct
### Our Pledge
In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation.
### Our Standards
Examples of behavior that contributes to creating a positive environment include:
* Using welcoming and inclusive language
* Being respectful of differing viewpoints and experiences
* Gracefully accepting constructive criticism
* Focusing on what is best for the community
* Showing empathy towards other community members
Examples of unacceptable behavior by participants include:
* The use of sexualized language or imagery and unwelcome sexual attention or advances
* Trolling, insulting/derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or electronic address, without explicit permission
* Other conduct which could reasonably be considered inappropriate in a professional setting
### Our Responsibilities
Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior.
Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful.
### Scope
This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers.
### Enforcement
Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at hacdias@gmail.com. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.
Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership.
### Attribution
This Code of Conduct is adapted from the [Contributor Covenant](http://contributor-covenant.org), version 1.4, available at [https://contributor-covenant.org/version/1/4](https://contributor-covenant.org/version/1/4).

View File

@ -1,91 +0,0 @@
# Contributing
If you're interested in contributing to this project, this is the best place to start. Before contributing to this project, please take a bit of time to read our [Code of Conduct](code-of-conduct.md). Also, note that this project is open-source and licensed under [Apache License 2.0](LICENSE).
## Project Structure
The backend side of the application is written in [Go](https://golang.org/), while the frontend (located on a subdirectory of the same name) is written in [Vue.js](https://vuejs.org/). Due to the tight coupling required by some features, basic knowledge of both Go and Vue.js is recommended.
* Learn Go: [https://github.com/golang/go/wiki/Learn](https://github.com/golang/go/wiki/Learn)
* Learn Vue.js: [https://vuejs.org/guide/introduction.html](https://vuejs.org/guide/introduction.html)
We encourage you to use git to manage your fork. To clone the main repository, just run:
```bash
git clone https://github.com/filebrowser/filebrowser
```
## Build
### Frontend
We are using [Node.js](https://nodejs.org/en/) on the frontend to manage the build process. The steps to build it are:
```bash
# From the root of the repo, go to frontend/
cd frontend
# Install the dependencies
pnpm install
# Build the frontend
pnpm run build
```
This will install the dependencies and build the frontend so you can then embed it into the Go app. Although, if you want to play with it, you'll get bored of building it after every change you do. So, you can run the command below to watch for changes:
```bash
pnpm run dev
```
### Backend
First of all, you need to download the required dependencies. We are using the built-in `go mod` tool for dependency management. To get the modules, run:
```bash
go mod download
```
The magic of File Browser is that the static assets are bundled into the final binary. For that, we use [Go embed.FS](https://golang.org/pkg/embed/). The files from `frontend/dist` will be embedded during the build process.
To build File Browser is just like any other Go program:
```bash
go build
```
To create a development build use the "dev" tag, this way the content inside the frontend folder will not be embedded in the binary but will be reloaded at every change:
```bash
go build -tags dev
```
## Translations
Translations are managed on Transifex, which is an online website where everyone can contribute and translate strings for our project. It automatically syncs with the main language file \(in English\) and,, for you to contribute, you just need to:
1. Go to our Transifex web page: [app.transifex.com/file-browser/file-browser](https://app.transifex.com/file-browser/file-browser/)
2. Click on **Join the project** and pick your language. We'll accept you as soon as possible. If you're language is not on the list, please request it via the interface.
Translations are automatically pushed to GitHub via an integration.
## Authentication Provider
To build a new authentication provider, you need to implement the [Auther interface](https://github.com/filebrowser/filebrowser/blob/master/auth/auth.go), whose method will be called on the login page after the user has submitted their login data.
```go
// Auther is the authentication interface.
type Auther interface {
// Auth is called to authenticate a request.
Auth(r *http.Request, s *users.Storage, root string) (*users.User, error)
}
```
After implementing the interface you should:
1. Add it to [`auth` directory](https://github.com/filebrowser/filebrowser/blob/master/auth).
2. Add it to the [configuration parser](https://github.com/filebrowser/filebrowser/blob/master/cmd/config.go) for the CLI.
3. Add it to the [`authBackend.Get`](https://github.com/filebrowser/filebrowser/blob/master/storage/bolt/auth.go).
If you need to add more flags, please update the function `addConfigFlags`.

View File

@ -1,46 +1,19 @@
## Multistage build: First stage fetches dependencies FROM alpine:latest
FROM alpine:3.22 AS fetcher RUN apk --update add ca-certificates \
mailcap \
curl \
jq
# install and copy ca-certificates, mailcap, and tini-static; download JSON.sh COPY healthcheck.sh /healthcheck.sh
RUN apk update && \ RUN chmod +x /healthcheck.sh # Make the script executable
apk --no-cache add ca-certificates mailcap tini-static && \
wget -O /JSON.sh https://raw.githubusercontent.com/dominictarr/JSON.sh/0d5e5c77365f63809bf6e77ef44a1f34b0e05840/JSON.sh
## Second stage: Use lightweight BusyBox image for final runtime environment HEALTHCHECK --start-period=2s --interval=5s --timeout=3s \
FROM busybox:1.37.0-musl CMD /healthcheck.sh || exit 1
# Define non-root user UID and GID
ENV UID=1000
ENV GID=1000
# Create user group and user
RUN addgroup -g $GID user && \
adduser -D -u $UID -G user user
# Copy binary, scripts, and configurations into image with proper ownership
COPY --chown=user:user filebrowser /bin/filebrowser
COPY --chown=user:user docker/common/ /
COPY --chown=user:user docker/alpine/ /
COPY --chown=user:user --from=fetcher /sbin/tini-static /bin/tini
COPY --from=fetcher /JSON.sh /JSON.sh
COPY --from=fetcher /etc/ca-certificates.conf /etc/ca-certificates.conf
COPY --from=fetcher /etc/ca-certificates /etc/ca-certificates
COPY --from=fetcher /etc/mime.types /etc/mime.types
COPY --from=fetcher /etc/ssl /etc/ssl
# Create data directories, set ownership, and ensure healthcheck script is executable
RUN mkdir -p /config /database /srv && \
chown -R user:user /config /database /srv \
&& chmod +x /healthcheck.sh
# Define healthcheck script
HEALTHCHECK --start-period=2s --interval=5s --timeout=3s CMD /healthcheck.sh
# Set the user, volumes and exposed ports
USER user
VOLUME /srv /config /database
VOLUME /srv
EXPOSE 80 EXPOSE 80
ENTRYPOINT [ "tini", "--", "/init.sh" ] COPY docker_config.json /.filebrowser.json
COPY filebrowser /filebrowser
ENTRYPOINT [ "/filebrowser" ]

View File

@ -1,23 +1,21 @@
FROM ghcr.io/linuxserver/baseimage-alpine:3.22 FROM ghcr.io/linuxserver/baseimage-alpine:3.20
RUN apk update && \ RUN apk --update add ca-certificates \
apk --no-cache add ca-certificates mailcap jq mailcap \
curl \
jq
# Make user and create necessary directories COPY healthcheck.sh /healthcheck.sh
RUN mkdir -p /config /database /srv && \ RUN chmod +x /healthcheck.sh # Make the script executable
chown -R abc:abc /config /database /srv
# Copy files and set permissions HEALTHCHECK --start-period=2s --interval=5s --timeout=3s \
COPY filebrowser /bin/filebrowser CMD /healthcheck.sh || exit 1
COPY docker/common/ /
COPY docker/s6/ /
RUN chown -R abc:abc /bin/filebrowser /defaults healthcheck.sh # copy local files
COPY docker/root/ /
RUN ln -s /config/settings.json /.filebrowser.json
COPY filebrowser /usr/bin/filebrowser
# Define healthcheck script # ports and volumes
HEALTHCHECK --start-period=2s --interval=5s --timeout=3s CMD /healthcheck.sh
# Set the volumes and exposed ports
VOLUME /srv /config /database VOLUME /srv /config /database
EXPOSE 80 EXPOSE 80

21
Dockerfile.s6.aarch64 Normal file
View File

@ -0,0 +1,21 @@
FROM ghcr.io/linuxserver/baseimage-alpine:arm64v8-3.20
RUN apk --update add ca-certificates \
mailcap \
curl \
jq
COPY healthcheck.sh /healthcheck.sh
RUN chmod +x /healthcheck.sh # Make the script executable
HEALTHCHECK --start-period=2s --interval=5s --timeout=3s \
CMD /healthcheck.sh || exit 1
# copy local files
COPY docker/root/ /
RUN ln -s /config/settings.json /.filebrowser.json
COPY filebrowser /usr/bin/filebrowser
# ports and volumes
VOLUME /srv /config /database
EXPOSE 80

View File

@ -187,7 +187,7 @@
same "printed page" as the copyright notice for easier same "printed page" as the copyright notice for easier
identification within third-party archives. identification within third-party archives.
Copyright 2018 File Browser Contributors Copyright 2018 File Browser contributors
Licensed under the Apache License, Version 2.0 (the "License"); Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. you may not use this file except in compliance with the License.

View File

@ -3,14 +3,6 @@ include tools.mk
LDFLAGS += -X "$(MODULE)/version.Version=$(VERSION)" -X "$(MODULE)/version.CommitSHA=$(VERSION_HASH)" LDFLAGS += -X "$(MODULE)/version.Version=$(VERSION)" -X "$(MODULE)/version.CommitSHA=$(VERSION_HASH)"
SITE_DOCKER_FLAGS = \
-v $(CURDIR)/www:/docs \
-v $(CURDIR)/LICENSE:/docs/docs/LICENSE \
-v $(CURDIR)/SECURITY.md:/docs/docs/security.md \
-v $(CURDIR)/CHANGELOG.md:/docs/docs/changelog.md \
-v $(CURDIR)/CODE-OF-CONDUCT.md:/docs/docs/code-of-conduct.md \
-v $(CURDIR)/CONTRIBUTING.md:/docs/docs/contributing.md
## Build: ## Build:
.PHONY: build .PHONY: build
@ -61,17 +53,6 @@ clean: clean-tools ## Clean
bump-version: $(standard-version) ## Bump app version bump-version: $(standard-version) ## Bump app version
$Q ./scripts/bump_version.sh $Q ./scripts/bump_version.sh
.PHONY: site
site: ## Build site
@rm -rf www/public
docker build -f www/Dockerfile --progress=plain -t filebrowser.site www
docker run --rm $(SITE_DOCKER_FLAGS) filebrowser.site build -d "public"
.PHONY: site-serve
site-serve: ## Serve site for development
docker build -f www/Dockerfile --progress=plain -t filebrowser.site www
docker run --rm -it -p 8000:8000 $(SITE_DOCKER_FLAGS) filebrowser.site
## Help: ## Help:
help: ## Show this help help: ## Show this help
@echo '' @echo ''

View File

@ -2,19 +2,15 @@
<img src="https://raw.githubusercontent.com/filebrowser/logo/master/banner.png" width="550"/> <img src="https://raw.githubusercontent.com/filebrowser/logo/master/banner.png" width="550"/>
</p> </p>
![Preview](https://user-images.githubusercontent.com/5447088/50716739-ebd26700-107a-11e9-9817-14230c53efd2.gif)
[![Build](https://github.com/filebrowser/filebrowser/actions/workflows/main.yaml/badge.svg)](https://github.com/filebrowser/filebrowser/actions/workflows/main.yaml) [![Build](https://github.com/filebrowser/filebrowser/actions/workflows/main.yaml/badge.svg)](https://github.com/filebrowser/filebrowser/actions/workflows/main.yaml)
[![Go Report Card](https://goreportcard.com/badge/github.com/filebrowser/filebrowser)](https://goreportcard.com/report/github.com/filebrowser/filebrowser) [![Go Report Card](https://goreportcard.com/badge/github.com/filebrowser/filebrowser?style=flat-square)](https://goreportcard.com/report/github.com/filebrowser/filebrowser)
[![Documentation](https://img.shields.io/badge/godoc-reference-blue.svg)](http://godoc.org/github.com/filebrowser/filebrowser) [![Documentation](https://img.shields.io/badge/godoc-reference-blue.svg?style=flat-square)](http://godoc.org/github.com/filebrowser/filebrowser)
[![Version](https://img.shields.io/github/release/filebrowser/filebrowser.svg)](https://github.com/filebrowser/filebrowser/releases/latest) [![Version](https://img.shields.io/github/release/filebrowser/filebrowser.svg?style=flat-square)](https://github.com/filebrowser/filebrowser/releases/latest)
[![Chat IRC](https://img.shields.io/badge/freenode-%23filebrowser-blue.svg)](http://webchat.freenode.net/?channels=%23filebrowser) [![Chat IRC](https://img.shields.io/badge/freenode-%23filebrowser-blue.svg?style=flat-square)](http://webchat.freenode.net/?channels=%23filebrowser)
File Browser provides a file managing interface within a specified directory and it can be used to upload, delete, preview and edit your files. It is a **create-your-own-cloud**-kind of software where you can just install it on your server, direct it to a path and access your files through a nice web interface. filebrowser provides a file managing interface within a specified directory and it can be used to upload, delete, preview, rename and edit your files. It allows the creation of multiple users and each user can have its own directory. It can be used as a standalone app.
## Documentation
Documentation on how to install, configure, and contribute to this project is hosted at [filebrowser.org](https://filebrowser.org).
## Project Status
> [!WARNING] > [!WARNING]
> >
@ -29,10 +25,28 @@ Documentation on how to install, configure, and contribute to this project is ho
[issues]: https://github.com/filebrowser/filebrowser/issues [issues]: https://github.com/filebrowser/filebrowser/issues
[discussions]: https://github.com/filebrowser/filebrowser/discussions [discussions]: https://github.com/filebrowser/filebrowser/discussions
## Demo
URL: https://demo.filebrowser.org/
Credentials: `demo`/`demo`
## Features
Please refer to our docs at [https://filebrowser.org/features](https://filebrowser.org/features)
## Install
For installation instructions please refer to our docs at [https://filebrowser.org/installation](https://filebrowser.org/installation).
## Configuration
[Authentication Method](https://filebrowser.org/configuration/authentication-method) - You can change the way the user authenticates with the filebrowser server
[Command Runner](https://filebrowser.org/configuration/command-runner) - The command runner is a feature that enables you to execute any shell command you want before or after a certain event.
[Custom Branding](https://filebrowser.org/configuration/custom-branding) - You can customize your File Browser installation by change its name to any other you want, by adding a global custom style sheet and by using your own logotype if you want.
## Contributing ## Contributing
Contributions are always welcome. To start contributing to this project, read our [guidelines](CONTRIBUTING.md) first. If you're interested in contributing to this project, our docs are best places to start [https://filebrowser.org/contributing](https://filebrowser.org/contributing).
## License
[Apache License 2.0](LICENSE) © File Browser Contributors

View File

@ -12,9 +12,7 @@ currently being supported with security updates.
## Reporting a Vulnerability ## Reporting a Vulnerability
Vulnerabilities with critical impact should be reported on the [Security](https://github.com/filebrowser/filebrowser/security) page of this repository, which is a private way of communicating vulnerabilities to maintainers. This project is in maintenance-only mode and it can take a while until someone gets back to you. Vulnerabilities should be reported to filebrowser@googlegroups.com - which is a private, maintainer-only group. Maintainers will attempt to respond to/confirm reports within 2-3 days, but if you believe your report to be "critical" to user safety and security, please note as such in the subject. We have tens of thousands of users using our software, and take security vulnerabilities seriously.
If it is not a critical vulnerability, please open an issue and we will categorize it as a security issue. By giving visibility, we can get more help from the community at fixing such issues.
When reporting an issue, where possible, please provide at least: When reporting an issue, where possible, please provide at least:
@ -23,4 +21,6 @@ When reporting an issue, where possible, please provide at least:
* Steps to reproduce * Steps to reproduce
* Your recommended remediation(s), if any. * Your recommended remediation(s), if any.
The File Browser team is a volunteer-only effort, and may reach back out for clarification. The FileBrowser team is a volunteer-only effort, and may reach back out for clarification.
> Note: Please do not open public issues for security issues, as GitHub does not provide facility for private issues, and deleting the issue makes it hard to triage/respond back to the reporter.

View File

@ -150,7 +150,7 @@ func (a *HookAuth) SaveUser() (*users.User, error) {
} }
if u == nil { if u == nil {
pass, err := users.ValidateAndHashPwd(a.Cred.Password, a.Settings.MinimumPasswordLength) pass, err := users.HashPwd(a.Cred.Password)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -186,7 +186,7 @@ func (a *HookAuth) SaveUser() (*users.User, error) {
// update the password when it doesn't match the current // update the password when it doesn't match the current
if p { if p {
pass, err := users.ValidateAndHashPwd(a.Cred.Password, a.Settings.MinimumPasswordLength) pass, err := users.HashPwd(a.Cred.Password)
if err != nil { if err != nil {
return nil, err return nil, err
} }

View File

@ -1,6 +1,7 @@
package auth package auth
import ( import (
"crypto/rand"
"errors" "errors"
"net/http" "net/http"
@ -28,14 +29,15 @@ func (a ProxyAuth) Auth(r *http.Request, usr users.Store, setting *settings.Sett
} }
func (a ProxyAuth) createUser(usr users.Store, setting *settings.Settings, srv *settings.Server, username string) (*users.User, error) { func (a ProxyAuth) createUser(usr users.Store, setting *settings.Settings, srv *settings.Server, username string) (*users.User, error) {
const randomPasswordLength = settings.DefaultMinimumPasswordLength + 10 const passwordSize = 32
pwd, err := users.RandomPwd(randomPasswordLength) randomPasswordBytes := make([]byte, passwordSize)
_, err := rand.Read(randomPasswordBytes)
if err != nil { if err != nil {
return nil, err return nil, err
} }
var hashedRandomPassword string var hashedRandomPassword string
hashedRandomPassword, err = users.ValidateAndHashPwd(pwd, setting.MinimumPasswordLength) hashedRandomPassword, err = users.HashPwd(string(randomPasswordBytes))
if err != nil { if err != nil {
return nil, err return nil, err
} }

View File

@ -32,7 +32,6 @@ func addConfigFlags(flags *pflag.FlagSet) {
addUserFlags(flags) addUserFlags(flags)
flags.BoolP("signup", "s", false, "allow users to signup") flags.BoolP("signup", "s", false, "allow users to signup")
flags.Bool("create-user-dir", false, "generate user's home directory automatically") flags.Bool("create-user-dir", false, "generate user's home directory automatically")
flags.Uint("minimum-password-length", settings.DefaultMinimumPasswordLength, "minimum password length for new users")
flags.String("shell", "", "shell command to which other commands should be appended") flags.String("shell", "", "shell command to which other commands should be appended")
flags.String("auth.method", string(auth.MethodJSONAuth), "authentication type") flags.String("auth.method", string(auth.MethodJSONAuth), "authentication type")
@ -145,7 +144,6 @@ func printSettings(ser *settings.Server, set *settings.Settings, auther auth.Aut
fmt.Fprintf(w, "Sign up:\t%t\n", set.Signup) fmt.Fprintf(w, "Sign up:\t%t\n", set.Signup)
fmt.Fprintf(w, "Create User Dir:\t%t\n", set.CreateUserDir) fmt.Fprintf(w, "Create User Dir:\t%t\n", set.CreateUserDir)
fmt.Fprintf(w, "Minimum Password Length:\t%d\n", set.MinimumPasswordLength)
fmt.Fprintf(w, "Auth method:\t%s\n", set.AuthMethod) fmt.Fprintf(w, "Auth method:\t%s\n", set.AuthMethod)
fmt.Fprintf(w, "Shell:\t%s\t\n", strings.Join(set.Shell, " ")) fmt.Fprintf(w, "Shell:\t%s\t\n", strings.Join(set.Shell, " "))
fmt.Fprintln(w, "\nBranding:") fmt.Fprintln(w, "\nBranding:")

View File

@ -56,7 +56,7 @@ The path must be for a json or yaml file.`,
checkErr(err) checkErr(err)
var rawAuther interface{} var rawAuther interface{}
if filepath.Ext(args[0]) != ".json" { if filepath.Ext(args[0]) != ".json" { //nolint:goconst
rawAuther = cleanUpInterfaceMap(file.Auther.(map[interface{}]interface{})) rawAuther = cleanUpInterfaceMap(file.Auther.(map[interface{}]interface{}))
} else { } else {
rawAuther = file.Auther rawAuther = file.Auther

View File

@ -29,13 +29,12 @@ override the options.`,
authMethod, auther := getAuthentication(flags) authMethod, auther := getAuthentication(flags)
s := &settings.Settings{ s := &settings.Settings{
Key: generateKey(), Key: generateKey(),
Signup: mustGetBool(flags, "signup"), Signup: mustGetBool(flags, "signup"),
CreateUserDir: mustGetBool(flags, "create-user-dir"), CreateUserDir: mustGetBool(flags, "create-user-dir"),
MinimumPasswordLength: mustGetUint(flags, "minimum-password-length"), Shell: convertCmdStrToCmdArray(mustGetString(flags, "shell")),
Shell: convertCmdStrToCmdArray(mustGetString(flags, "shell")), AuthMethod: authMethod,
AuthMethod: authMethod, Defaults: defaults,
Defaults: defaults,
Branding: settings.Branding{ Branding: settings.Branding{
Name: mustGetString(flags, "branding.name"), Name: mustGetString(flags, "branding.name"),
DisableExternal: mustGetBool(flags, "branding.disableExternal"), DisableExternal: mustGetBool(flags, "branding.disableExternal"),

View File

@ -51,8 +51,6 @@ you want to change. Other options will remain unchanged.`,
set.Shell = convertCmdStrToCmdArray(mustGetString(flags, flag.Name)) set.Shell = convertCmdStrToCmdArray(mustGetString(flags, flag.Name))
case "create-user-dir": case "create-user-dir":
set.CreateUserDir = mustGetBool(flags, flag.Name) set.CreateUserDir = mustGetBool(flags, flag.Name)
case "minimum-password-length":
set.MinimumPasswordLength = mustGetUint(flags, flag.Name)
case "branding.name": case "branding.name":
set.Branding.Name = mustGetString(flags, flag.Name) set.Branding.Name = mustGetString(flags, flag.Name)
case "branding.color": case "branding.color":

View File

@ -1,7 +1,6 @@
package cmd package cmd
import ( import (
"context"
"crypto/tls" "crypto/tls"
"errors" "errors"
"io" "io"
@ -14,7 +13,6 @@ import (
"path/filepath" "path/filepath"
"strings" "strings"
"syscall" "syscall"
"time"
homedir "github.com/mitchellh/go-homedir" homedir "github.com/mitchellh/go-homedir"
"github.com/spf13/afero" "github.com/spf13/afero"
@ -50,7 +48,7 @@ func init() {
persistent.StringP("database", "d", "./filebrowser.db", "database path") persistent.StringP("database", "d", "./filebrowser.db", "database path")
flags.Bool("noauth", false, "use the noauth auther when using quick setup") flags.Bool("noauth", false, "use the noauth auther when using quick setup")
flags.String("username", "admin", "username for the first user when using quick config") flags.String("username", "admin", "username for the first user when using quick config")
flags.String("password", "", "hashed password for the first user when using quick config") flags.String("password", "", "hashed password for the first user when using quick config (default \"admin\")")
addServerFlags(flags) addServerFlags(flags)
} }
@ -63,14 +61,14 @@ func addServerFlags(flags *pflag.FlagSet) {
flags.StringP("key", "k", "", "tls key") flags.StringP("key", "k", "", "tls key")
flags.StringP("root", "r", ".", "root to prepend to relative paths") flags.StringP("root", "r", ".", "root to prepend to relative paths")
flags.String("socket", "", "socket to listen to (cannot be used with address, port, cert nor key flags)") flags.String("socket", "", "socket to listen to (cannot be used with address, port, cert nor key flags)")
flags.Uint32("socket-perm", 0666, "unix socket file permissions") flags.Uint32("socket-perm", 0666, "unix socket file permissions") //nolint:gomnd
flags.StringP("baseurl", "b", "", "base url") flags.StringP("baseurl", "b", "", "base url")
flags.String("cache-dir", "", "file cache directory (disabled if empty)") flags.String("cache-dir", "", "file cache directory (disabled if empty)")
flags.String("token-expiration-time", "2h", "user session timeout") flags.String("token-expiration-time", "2h", "user session timeout")
flags.Int("img-processors", 4, "image processors count") //nolint:mnd flags.Int("img-processors", 4, "image processors count") //nolint:gomnd
flags.Bool("disable-thumbnails", false, "disable image thumbnails") flags.Bool("disable-thumbnails", false, "disable image thumbnails")
flags.Bool("disable-preview-resize", false, "disable resize of image previews") flags.Bool("disable-preview-resize", false, "disable resize of image previews")
flags.Bool("disable-exec", true, "disables Command Runner feature") flags.Bool("disable-exec", false, "disables Command Runner feature")
flags.Bool("disable-type-detection-by-header", false, "disables type detection by reading file headers") flags.Bool("disable-type-detection-by-header", false, "disables type detection by reading file headers")
} }
@ -131,7 +129,7 @@ user created with the credentials from options "username" and "password".`,
cacheDir, err := cmd.Flags().GetString("cache-dir") cacheDir, err := cmd.Flags().GetString("cache-dir")
checkErr(err) checkErr(err)
if cacheDir != "" { if cacheDir != "" {
if err := os.MkdirAll(cacheDir, 0700); err != nil { //nolint:govet if err := os.MkdirAll(cacheDir, 0700); err != nil { //nolint:govet,gomnd
log.Fatalf("can't make directory %s: %s", cacheDir, err) log.Fatalf("can't make directory %s: %s", cacheDir, err)
} }
fileCache = diskcache.New(afero.NewOsFs(), cacheDir) fileCache = diskcache.New(afero.NewOsFs(), cacheDir)
@ -169,6 +167,10 @@ user created with the credentials from options "username" and "password".`,
checkErr(err) checkErr(err)
} }
sigc := make(chan os.Signal, 1)
signal.Notify(sigc, os.Interrupt, syscall.SIGTERM)
go cleanupHandler(listener, sigc)
assetsFs, err := fs.Sub(frontend.Assets(), "dist") assetsFs, err := fs.Sub(frontend.Assets(), "dist")
if err != nil { if err != nil {
panic(err) panic(err)
@ -180,74 +182,61 @@ user created with the credentials from options "username" and "password".`,
defer listener.Close() defer listener.Close()
log.Println("Listening on", listener.Addr().String()) log.Println("Listening on", listener.Addr().String())
srv := &http.Server{ //nolint: gosec
Handler: handler, if err := http.Serve(listener, handler); err != nil {
ReadHeaderTimeout: 60 * time.Second, log.Fatal(err)
} }
go func() {
if err := srv.Serve(listener); !errors.Is(err, http.ErrServerClosed) {
log.Fatalf("HTTP server error: %v", err)
}
log.Println("Stopped serving new connections.")
}()
sigc := make(chan os.Signal, 1)
signal.Notify(sigc, os.Interrupt, syscall.SIGTERM)
<-sigc
shutdownCtx, shutdownRelease := context.WithTimeout(context.Background(), 10*time.Second) //nolint:mnd
defer shutdownRelease()
if err := srv.Shutdown(shutdownCtx); err != nil {
log.Fatalf("HTTP shutdown error: %v", err)
}
log.Println("Graceful shutdown complete.")
}, pythonConfig{allowNoDB: true}), }, pythonConfig{allowNoDB: true}),
} }
func cleanupHandler(listener net.Listener, c chan os.Signal) { //nolint:interfacer
sig := <-c
log.Printf("Caught signal %s: shutting down.", sig)
listener.Close()
os.Exit(0)
}
//nolint:gocyclo //nolint:gocyclo
func getRunParams(flags *pflag.FlagSet, st *storage.Storage) *settings.Server { func getRunParams(flags *pflag.FlagSet, st *storage.Storage) *settings.Server {
server, err := st.Settings.GetServer() server, err := st.Settings.GetServer()
checkErr(err) checkErr(err)
if val, set := getStringParamB(flags, "root"); set { if val, set := getParamB(flags, "root"); set {
server.Root = val server.Root = val
} }
if val, set := getStringParamB(flags, "baseurl"); set { if val, set := getParamB(flags, "baseurl"); set {
server.BaseURL = val server.BaseURL = val
} }
if val, set := getStringParamB(flags, "log"); set { if val, set := getParamB(flags, "log"); set {
server.Log = val server.Log = val
} }
isSocketSet := false isSocketSet := false
isAddrSet := false isAddrSet := false
if val, set := getStringParamB(flags, "address"); set { if val, set := getParamB(flags, "address"); set {
server.Address = val server.Address = val
isAddrSet = isAddrSet || set isAddrSet = isAddrSet || set
} }
if val, set := getStringParamB(flags, "port"); set { if val, set := getParamB(flags, "port"); set {
server.Port = val server.Port = val
isAddrSet = isAddrSet || set isAddrSet = isAddrSet || set
} }
if val, set := getStringParamB(flags, "key"); set { if val, set := getParamB(flags, "key"); set {
server.TLSKey = val server.TLSKey = val
isAddrSet = isAddrSet || set isAddrSet = isAddrSet || set
} }
if val, set := getStringParamB(flags, "cert"); set { if val, set := getParamB(flags, "cert"); set {
server.TLSCert = val server.TLSCert = val
isAddrSet = isAddrSet || set isAddrSet = isAddrSet || set
} }
if val, set := getStringParamB(flags, "socket"); set { if val, set := getParamB(flags, "socket"); set {
server.Socket = val server.Socket = val
isSocketSet = isSocketSet || set isSocketSet = isSocketSet || set
} }
@ -261,69 +250,33 @@ func getRunParams(flags *pflag.FlagSet, st *storage.Storage) *settings.Server {
server.Socket = "" server.Socket = ""
} }
disableThumbnails := getBoolParam(flags, "disable-thumbnails") _, disableThumbnails := getParamB(flags, "disable-thumbnails")
server.EnableThumbnails = !disableThumbnails server.EnableThumbnails = !disableThumbnails
disablePreviewResize := getBoolParam(flags, "disable-preview-resize") _, disablePreviewResize := getParamB(flags, "disable-preview-resize")
server.ResizePreview = !disablePreviewResize server.ResizePreview = !disablePreviewResize
disableTypeDetectionByHeader := getBoolParam(flags, "disable-type-detection-by-header") _, disableTypeDetectionByHeader := getParamB(flags, "disable-type-detection-by-header")
server.TypeDetectionByHeader = !disableTypeDetectionByHeader server.TypeDetectionByHeader = !disableTypeDetectionByHeader
disableExec := getBoolParam(flags, "disable-exec") _, disableExec := getParamB(flags, "disable-exec")
server.EnableExec = !disableExec server.EnableExec = !disableExec
if server.EnableExec { if val, set := getParamB(flags, "token-expiration-time"); set {
log.Println("WARNING: Command Runner feature enabled!")
log.Println("WARNING: This feature has known security vulnerabilities and should not")
log.Println("WARNING: you fully understand the risks involved. For more information")
log.Println("WARNING: read https://github.com/filebrowser/filebrowser/issues/5199")
}
if val, set := getStringParamB(flags, "token-expiration-time"); set {
server.TokenExpirationTime = val server.TokenExpirationTime = val
} }
return server return server
} }
// getBoolParamB returns a parameter as a string and a boolean to tell if it is different from the default // getParamB returns a parameter as a string and a boolean to tell if it is different from the default
// //
// NOTE: we could simply bind the flags to viper and use IsSet. // NOTE: we could simply bind the flags to viper and use IsSet.
// Although there is a bug on Viper that always returns true on IsSet // Although there is a bug on Viper that always returns true on IsSet
// if a flag is binded. Our alternative way is to manually check // if a flag is binded. Our alternative way is to manually check
// the flag and then the value from env/config/gotten by viper. // the flag and then the value from env/config/gotten by viper.
// https://github.com/spf13/viper/pull/331 // https://github.com/spf13/viper/pull/331
func getBoolParamB(flags *pflag.FlagSet, key string) (value, ok bool) { func getParamB(flags *pflag.FlagSet, key string) (string, bool) {
value, _ = flags.GetBool(key)
// If set on Flags, use it.
if flags.Changed(key) {
return value, true
}
// If set through viper (env, config), return it.
if v.IsSet(key) {
return v.GetBool(key), true
}
// Otherwise use default value on flags.
return value, false
}
func getBoolParam(flags *pflag.FlagSet, key string) bool {
val, _ := getBoolParamB(flags, key)
return val
}
// getStringParamB returns a parameter as a string and a boolean to tell if it is different from the default
//
// NOTE: we could simply bind the flags to viper and use IsSet.
// Although there is a bug on Viper that always returns true on IsSet
// if a flag is binded. Our alternative way is to manually check
// the flag and then the value from env/config/gotten by viper.
// https://github.com/spf13/viper/pull/331
func getStringParamB(flags *pflag.FlagSet, key string) (string, bool) {
value, _ := flags.GetString(key) value, _ := flags.GetString(key)
// If set on Flags, use it. // If set on Flags, use it.
@ -340,8 +293,8 @@ func getStringParamB(flags *pflag.FlagSet, key string) (string, bool) {
return value, false return value, false
} }
func getStringParam(flags *pflag.FlagSet, key string) string { func getParam(flags *pflag.FlagSet, key string) string {
val, _ := getStringParamB(flags, key) val, _ := getParamB(flags, key)
return val return val
} }
@ -364,14 +317,11 @@ func setupLog(logMethod string) {
} }
func quickSetup(flags *pflag.FlagSet, d pythonData) { func quickSetup(flags *pflag.FlagSet, d pythonData) {
log.Println("Performing quick setup")
set := &settings.Settings{ set := &settings.Settings{
Key: generateKey(), Key: generateKey(),
Signup: false, Signup: false,
CreateUserDir: false, CreateUserDir: false,
MinimumPasswordLength: settings.DefaultMinimumPasswordLength, UserHomeBasePath: settings.DefaultUsersHomeBasePath,
UserHomeBasePath: settings.DefaultUsersHomeBasePath,
Defaults: settings.UserDefaults{ Defaults: settings.UserDefaults{
Scope: ".", Scope: ".",
Locale: "en", Locale: "en",
@ -399,7 +349,7 @@ func quickSetup(flags *pflag.FlagSet, d pythonData) {
} }
var err error var err error
if _, noauth := getStringParamB(flags, "noauth"); noauth { if _, noauth := getParamB(flags, "noauth"); noauth {
set.AuthMethod = auth.MethodNoAuth set.AuthMethod = auth.MethodNoAuth
err = d.store.Auth.Save(&auth.NoAuth{}) err = d.store.Auth.Save(&auth.NoAuth{})
} else { } else {
@ -412,31 +362,30 @@ func quickSetup(flags *pflag.FlagSet, d pythonData) {
checkErr(err) checkErr(err)
ser := &settings.Server{ ser := &settings.Server{
BaseURL: getStringParam(flags, "baseurl"), BaseURL: getParam(flags, "baseurl"),
Port: getStringParam(flags, "port"), Port: getParam(flags, "port"),
Log: getStringParam(flags, "log"), Log: getParam(flags, "log"),
TLSKey: getStringParam(flags, "key"), TLSKey: getParam(flags, "key"),
TLSCert: getStringParam(flags, "cert"), TLSCert: getParam(flags, "cert"),
Address: getStringParam(flags, "address"), Address: getParam(flags, "address"),
Root: getStringParam(flags, "root"), Root: getParam(flags, "root"),
} }
err = d.store.Settings.SaveServer(ser) err = d.store.Settings.SaveServer(ser)
checkErr(err) checkErr(err)
username := getStringParam(flags, "username") username := getParam(flags, "username")
password := getStringParam(flags, "password") password := getParam(flags, "password")
if password == "" { if password == "" {
var pwd string var pwd string
pwd, err = users.RandomPwd(set.MinimumPasswordLength) pwd, err = users.RandomPwd()
checkErr(err) checkErr(err)
log.Printf("User '%s' initialized with randomly generated password: %s\n", username, pwd) log.Println("Generated random admin password for quick setup:", pwd)
password, err = users.ValidateAndHashPwd(pwd, set.MinimumPasswordLength)
password, err = users.HashPwd(pwd)
checkErr(err) checkErr(err)
} else {
log.Printf("User '%s' initialize wth user-provided password\n", username)
} }
if username == "" || password == "" { if username == "" || password == "" {
@ -471,7 +420,6 @@ func initConfig() {
v.SetEnvPrefix("FB") v.SetEnvPrefix("FB")
v.AutomaticEnv() v.AutomaticEnv()
v.SetEnvKeyReplacer(strings.NewReplacer(".", "_")) v.SetEnvKeyReplacer(strings.NewReplacer(".", "_"))
v.SetEnvKeyReplacer(strings.NewReplacer("-", "_"))
if err := v.ReadInConfig(); err != nil { if err := v.ReadInConfig(); err != nil {
var configParseError v.ConfigParseError var configParseError v.ConfigParseError

View File

@ -25,7 +25,7 @@ this version.`,
flags := cmd.Flags() flags := cmd.Flags()
oldDB := mustGetString(flags, "old.database") oldDB := mustGetString(flags, "old.database")
oldConf := mustGetString(flags, "old.config") oldConf := mustGetString(flags, "old.config")
err := importer.Import(oldDB, oldConf, getStringParam(flags, "database")) err := importer.Import(oldDB, oldConf, getParam(flags, "database"))
checkErr(err) checkErr(err)
}, },
} }

View File

@ -21,7 +21,7 @@ var usersAddCmd = &cobra.Command{
checkErr(err) checkErr(err)
getUserDefaults(cmd.Flags(), &s.Defaults, false) getUserDefaults(cmd.Flags(), &s.Defaults, false)
password, err := users.ValidateAndHashPwd(args[1], s.MinimumPasswordLength) password, err := users.HashPwd(args[1])
checkErr(err) checkErr(err)
user := &users.User{ user := &users.User{

View File

@ -27,10 +27,8 @@ options you want to change.`,
password := mustGetString(flags, "password") password := mustGetString(flags, "password")
newUsername := mustGetString(flags, "username") newUsername := mustGetString(flags, "username")
s, err := d.store.Settings.Get()
checkErr(err)
var ( var (
err error
user *users.User user *users.User
) )
@ -66,7 +64,7 @@ options you want to change.`,
} }
if password != "" { if password != "" {
user.Password, err = users.ValidateAndHashPwd(password, s.MinimumPasswordLength) user.Password, err = users.HashPwd(password)
checkErr(err) checkErr(err)
} }

View File

@ -14,7 +14,6 @@ import (
"github.com/spf13/pflag" "github.com/spf13/pflag"
yaml "gopkg.in/yaml.v2" yaml "gopkg.in/yaml.v2"
"github.com/filebrowser/filebrowser/v2/files"
"github.com/filebrowser/filebrowser/v2/settings" "github.com/filebrowser/filebrowser/v2/settings"
"github.com/filebrowser/filebrowser/v2/storage" "github.com/filebrowser/filebrowser/v2/storage"
"github.com/filebrowser/filebrowser/v2/storage/bolt" "github.com/filebrowser/filebrowser/v2/storage/bolt"
@ -73,7 +72,7 @@ func dbExists(path string) (bool, error) {
d := filepath.Dir(path) d := filepath.Dir(path)
_, err = os.Stat(d) _, err = os.Stat(d)
if os.IsNotExist(err) { if os.IsNotExist(err) {
if err := os.MkdirAll(d, 0700); err != nil { //nolint:govet if err := os.MkdirAll(d, 0700); err != nil { //nolint:govet,gomnd
return false, err return false, err
} }
return false, nil return false, nil
@ -87,7 +86,7 @@ func python(fn pythonFunc, cfg pythonConfig) cobraFunc {
return func(cmd *cobra.Command, args []string) { return func(cmd *cobra.Command, args []string) {
data := pythonData{hadDB: true} data := pythonData{hadDB: true}
path := getStringParam(cmd.Flags(), "database") path := getParam(cmd.Flags(), "database")
absPath, err := filepath.Abs(path) absPath, err := filepath.Abs(path)
if err != nil { if err != nil {
panic(err) panic(err)
@ -106,7 +105,7 @@ func python(fn pythonFunc, cfg pythonConfig) cobraFunc {
log.Println("Using database: " + absPath) log.Println("Using database: " + absPath)
data.hadDB = exists data.hadDB = exists
db, err := storm.Open(path, storm.BoltOptions(files.PermFile, nil)) db, err := storm.Open(path)
checkErr(err) checkErr(err)
defer db.Close() defer db.Close()
data.store, err = bolt.NewStorage(db) data.store, err = bolt.NewStorage(db)
@ -125,7 +124,7 @@ func marshal(filename string, data interface{}) error {
encoder := json.NewEncoder(fd) encoder := json.NewEncoder(fd)
encoder.SetIndent("", " ") encoder.SetIndent("", " ")
return encoder.Encode(data) return encoder.Encode(data)
case ".yml", ".yaml": case ".yml", ".yaml": //nolint:goconst
encoder := yaml.NewEncoder(fd) encoder := yaml.NewEncoder(fd)
return encoder.Encode(data) return encoder.Encode(data)
default: default:

View File

@ -37,11 +37,11 @@ func (f *FileCache) Store(_ context.Context, key string, value []byte) error {
defer mu.Unlock() defer mu.Unlock()
fileName := f.getFileName(key) fileName := f.getFileName(key)
if err := f.fs.MkdirAll(filepath.Dir(fileName), 0700); err != nil { if err := f.fs.MkdirAll(filepath.Dir(fileName), 0700); err != nil { //nolint:gomnd
return err return err
} }
if err := afero.WriteFile(f.fs, fileName, value, 0700); err != nil { if err := afero.WriteFile(f.fs, fileName, value, 0700); err != nil { //nolint:gomnd
return err return err
} }

View File

@ -1,9 +0,0 @@
#!/bin/sh
set -e
PORT=${FB_PORT:-$(cat /config/settings.json | sh /JSON.sh | grep '\["port"\]' | awk '{print $2}')}
ADDRESS=${FB_ADDRESS:-$(cat /config/settings.json | sh /JSON.sh | grep '\["address"\]' | awk '{print $2}' | sed 's/"//g')}
ADDRESS=${ADDRESS:-localhost}
wget -q --spider http://$ADDRESS:$PORT/health || exit 1

View File

@ -1,35 +0,0 @@
#!/bin/sh
set -e
# Ensure configuration exists
if [ ! -f "/config/settings.json" ]; then
cp -a /defaults/settings.json /config/settings.json
fi
# Extract config file path from arguments
config_file=""
next_is_config=0
for arg in "$@"; do
if [ "$next_is_config" -eq 1 ]; then
config_file="$arg"
break
fi
case "$arg" in
-c|--config)
next_is_config=1
;;
-c=*|--config=*)
config_file="${arg#*=}"
break
;;
esac
done
# If no config argument is provided, set the default and add it to the args
if [ -z "$config_file" ]; then
config_file="/config/settings.json"
set -- --config=/config/settings.json "$@"
fi
exec filebrowser "$@"

View File

@ -1,9 +0,0 @@
#!/bin/sh
set -e
PORT=${FB_PORT:-$(jq -r .port /config/settings.json)}
ADDRESS=${FB_ADDRESS:-$(jq -r .address /config/settings.json)}
ADDRESS=${ADDRESS:-localhost}
wget -q --spider http://$ADDRESS:$PORT/health || exit 1

View File

@ -1,6 +1,9 @@
#!/usr/bin/with-contenv bash #!/usr/bin/with-contenv bash
# Ensure configuration exists # make folders
mkdir -p /database
# copy config
if [ ! -f "/config/settings.json" ]; then if [ ! -f "/config/settings.json" ]; then
cp -a /defaults/settings.json /config/settings.json cp -a /defaults/settings.json /config/settings.json
fi fi

View File

@ -0,0 +1,3 @@
#!/usr/bin/with-contenv bash
exec s6-setuidgid abc filebrowser -c /config/settings.json -d /database/filebrowser.db;

View File

@ -1,3 +0,0 @@
#!/usr/bin/with-contenv bash
exec s6-setuidgid abc filebrowser -c /config/settings.json;

View File

@ -3,6 +3,6 @@
"baseURL": "", "baseURL": "",
"address": "", "address": "",
"log": "stdout", "log": "stdout",
"database": "/database/filebrowser.db", "database": "/database.db",
"root": "/srv" "root": "/srv"
} }

View File

@ -1,16 +1,12 @@
package errors package errors
import ( import "errors"
"errors"
"fmt"
)
var ( var (
ErrEmptyKey = errors.New("empty key") ErrEmptyKey = errors.New("empty key")
ErrExist = errors.New("the resource already exists") ErrExist = errors.New("the resource already exists")
ErrNotExist = errors.New("the resource does not exist") ErrNotExist = errors.New("the resource does not exist")
ErrEmptyPassword = errors.New("password is empty") ErrEmptyPassword = errors.New("password is empty")
ErrEasyPassword = errors.New("password is too easy")
ErrEmptyUsername = errors.New("username is empty") ErrEmptyUsername = errors.New("username is empty")
ErrEmptyRequest = errors.New("empty request") ErrEmptyRequest = errors.New("empty request")
ErrScopeIsRelative = errors.New("scope is a relative path") ErrScopeIsRelative = errors.New("scope is a relative path")
@ -23,11 +19,3 @@ var (
ErrSourceIsParent = errors.New("source is parent") ErrSourceIsParent = errors.New("source is parent")
ErrRootUserDeletion = errors.New("user with id 1 can't be deleted") ErrRootUserDeletion = errors.New("user with id 1 can't be deleted")
) )
type ErrShortPassword struct {
MinimumLength uint
}
func (e ErrShortPassword) Error() string {
return fmt.Sprintf("password is too short, minimum length is %d", e.MinimumLength)
}

View File

@ -27,8 +27,8 @@ import (
"github.com/filebrowser/filebrowser/v2/rules" "github.com/filebrowser/filebrowser/v2/rules"
) )
const PermFile = 0640 const PermFile = 0644
const PermDir = 0750 const PermDir = 0755
var ( var (
reSubDirs = regexp.MustCompile("(?i)^sub(s|titles)$") reSubDirs = regexp.MustCompile("(?i)^sub(s|titles)$")
@ -86,11 +86,6 @@ func NewFileInfo(opts *FileOptions) (*FileInfo, error) {
return nil, err return nil, err
} }
// Do not expose the name of root directory.
if file.Path == "/" {
file.Name = ""
}
if opts.Expand { if opts.Expand {
if file.IsDir { if file.IsDir {
if err := file.readListing(opts.Checker, opts.ReadHeader); err != nil { //nolint:govet if err := file.readListing(opts.Checker, opts.ReadHeader); err != nil { //nolint:govet
@ -222,6 +217,7 @@ func (i *FileInfo) RealPath() string {
return i.Path return i.Path
} }
//nolint:goconst
func (i *FileInfo) detectType(modify, saveContent, readHeader bool) error { func (i *FileInfo) detectType(modify, saveContent, readHeader bool) error {
if IsNamedPipe(i.Mode) { if IsNamedPipe(i.Mode) {
i.Type = "blob" i.Type = "blob"
@ -318,7 +314,7 @@ func (i *FileInfo) readFirstBytes() []byte {
} }
defer reader.Close() defer reader.Close()
buffer := make([]byte, 512) buffer := make([]byte, 512) //nolint:gomnd
n, err := reader.Read(buffer) n, err := reader.Read(buffer)
if err != nil && !errors.Is(err, io.EOF) { if err != nil && !errors.Is(err, io.EOF) {
log.Print(err) log.Print(err)

View File

@ -16,6 +16,8 @@ type Listing struct {
} }
// ApplySort applies the sort order using .Order and .Sort // ApplySort applies the sort order using .Order and .Sort
//
//nolint:goconst
func (l Listing) ApplySort() { func (l Listing) ApplySort() {
// Check '.Order' to know how to sort // Check '.Order' to know how to sort
if !l.Sorting.Asc { if !l.Sorting.Asc {

View File

@ -1,25 +1,26 @@
import pluginVue from "eslint-plugin-vue"; import pluginVue from "eslint-plugin-vue";
import { import vueTsEslintConfig from "@vue/eslint-config-typescript";
defineConfigWithVueTs,
vueTsConfigs,
} from "@vue/eslint-config-typescript";
import prettierConfig from "@vue/eslint-config-prettier"; import prettierConfig from "@vue/eslint-config-prettier";
export default defineConfigWithVueTs( export default [
{ {
name: "app/files-to-lint", name: "app/files-to-lint",
files: ["**/*.{ts,mts,tsx,vue}"], files: ["**/*.{ts,mts,tsx,vue}"],
}, },
{ {
name: "app/files-to-ignore", name: "app/files-to-ignore",
ignores: ["**/dist/**", "**/dist-ssr/**", "**/coverage/**"], ignores: ["**/dist/**", "**/dist-ssr/**", "**/coverage/**"],
}, },
pluginVue.configs["flat/essential"],
vueTsConfigs.recommended, ...pluginVue.configs["flat/essential"],
...vueTsEslintConfig(),
prettierConfig, prettierConfig,
{ {
rules: { rules: {
// Note: you must disable the base rule as it can report incorrect errors // Note: you must disable the base rule as it can report incorrect errors
"no-unused-expressions": "off",
"@typescript-eslint/no-unused-expressions": "off", "@typescript-eslint/no-unused-expressions": "off",
// TODO: theres too many of these from before ts // TODO: theres too many of these from before ts
"@typescript-eslint/no-explicit-any": "off", "@typescript-eslint/no-explicit-any": "off",
@ -33,5 +34,5 @@ export default defineConfigWithVueTs(
}, },
], ],
}, },
} },
); ];

View File

@ -10,10 +10,18 @@
<title>File Browser</title> <title>File Browser</title>
<link rel="icon" type="image/svg+xml" href="/img/icons/favicon.svg" /> <link
<link rel="shortcut icon" href="/img/icons/favicon.ico" /> rel="icon"
<link rel="apple-touch-icon" sizes="180x180" href="/img/icons/apple-touch-icon.png" /> type="image/png"
<meta name="apple-mobile-web-app-title" content="File Browser" /> sizes="32x32"
href="/img/icons/favicon-32x32.png"
/>
<link
rel="icon"
type="image/png"
sizes="16x16"
href="/img/icons/favicon-16x16.png"
/>
<!-- Add to home screen for Android and modern mobile browsers --> <!-- Add to home screen for Android and modern mobile browsers -->
<link <link
@ -23,6 +31,19 @@
/> />
<meta name="theme-color" content="#2979ff" /> <meta name="theme-color" content="#2979ff" />
<!-- Add to home screen for Safari on iOS/iPadOS -->
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-status-bar-style" content="black" />
<meta name="apple-mobile-web-app-title" content="assets" />
<link rel="apple-touch-icon" href="/img/icons/apple-touch-icon.png" />
<!-- Add to home screen for Windows -->
<meta
name="msapplication-TileImage"
content="/img/icons/mstile-144x144.png"
/>
<meta name="msapplication-TileColor" content="#2979ff" />
<!-- Inject Some Variables and generate the manifest json --> <!-- Inject Some Variables and generate the manifest json -->
<script> <script>
// We can assign JSON directly // We can assign JSON directly

View File

@ -21,56 +21,54 @@
"@chenfengyuan/vue-number-input": "^2.0.1", "@chenfengyuan/vue-number-input": "^2.0.1",
"@vueuse/core": "^12.5.0", "@vueuse/core": "^12.5.0",
"@vueuse/integrations": "^12.5.0", "@vueuse/integrations": "^12.5.0",
"ace-builds": "^1.43.2", "ace-builds": "^1.37.5",
"core-js": "^3.44.0", "core-js": "^3.40.0",
"dayjs": "^1.11.13", "dayjs": "^1.11.10",
"dompurify": "^3.2.6",
"epubjs": "^0.3.93", "epubjs": "^0.3.93",
"filesize": "^10.1.1", "filesize": "^10.1.1",
"js-base64": "^3.7.7", "js-base64": "^3.7.7",
"jwt-decode": "^4.0.0", "jwt-decode": "^4.0.0",
"lodash-es": "^4.17.21", "lodash-es": "^4.17.21",
"marked": "^15.0.6", "marked": "^15.0.6",
"material-icons": "^1.13.14", "material-icons": "^1.13.13",
"normalize.css": "^8.0.1", "normalize.css": "^8.0.1",
"pinia": "^2.3.1", "pinia": "^2.3.1",
"pretty-bytes": "^6.1.1", "pretty-bytes": "^6.1.1",
"qrcode.vue": "^3.6.0", "qrcode.vue": "^3.4.1",
"tus-js-client": "^4.3.1", "tus-js-client": "^4.3.1",
"utif": "^3.1.0", "utif": "^3.1.0",
"video.js": "^8.23.3", "video.js": "^8.21.0",
"videojs-hotkeys": "^0.2.28", "videojs-hotkeys": "^0.2.28",
"videojs-mobile-ui": "^1.1.1", "videojs-mobile-ui": "^1.1.1",
"vue": "^3.5.17", "vue": "^3.4.21",
"vue-final-modal": "^4.5.5", "vue-final-modal": "^4.5.4",
"vue-i18n": "^11.1.9", "vue-i18n": "^11.1.2",
"vue-lazyload": "^3.0.0", "vue-lazyload": "^3.0.0",
"vue-reader": "^1.2.17", "vue-reader": "^1.2.17",
"vue-router": "^4.5.1", "vue-router": "^4.3.0",
"vue-toastification": "^2.0.0-rc.5" "vue-toastification": "^2.0.0-rc.5"
}, },
"devDependencies": { "devDependencies": {
"@intlify/unplugin-vue-i18n": "^6.0.8", "@intlify/unplugin-vue-i18n": "^6.0.3",
"@playwright/test": "^1.54.1", "@playwright/test": "^1.50.0",
"@tsconfig/node22": "^22.0.2", "@tsconfig/node22": "^22.0.0",
"@types/lodash-es": "^4.17.12", "@types/lodash-es": "^4.17.12",
"@types/node": "^22.10.10", "@types/node": "^22.10.10",
"@typescript-eslint/eslint-plugin": "^8.37.0", "@typescript-eslint/eslint-plugin": "^8.21.0",
"@vitejs/plugin-legacy": "^6.0.0", "@vitejs/plugin-legacy": "^6.0.0",
"@vitejs/plugin-vue": "^5.0.4", "@vitejs/plugin-vue": "^5.0.4",
"@vue/eslint-config-prettier": "^10.2.0", "@vue/eslint-config-prettier": "^10.2.0",
"@vue/eslint-config-typescript": "^14.6.0", "@vue/eslint-config-typescript": "^14.3.0",
"@vue/tsconfig": "^0.7.0", "@vue/tsconfig": "^0.7.0",
"autoprefixer": "^10.4.21", "autoprefixer": "^10.4.19",
"concurrently": "^9.2.0", "concurrently": "^9.1.2",
"eslint": "^9.31.0", "eslint": "^9.19.0",
"eslint-config-prettier": "^10.1.5", "eslint-plugin-prettier": "^5.2.3",
"eslint-plugin-prettier": "^5.5.1",
"eslint-plugin-vue": "^9.24.0", "eslint-plugin-vue": "^9.24.0",
"jsdom": "^26.1.0", "jsdom": "^26.0.0",
"postcss": "^8.5.6", "postcss": "^8.5.1",
"prettier": "^3.6.2", "prettier": "^3.4.2",
"terser": "^5.43.1", "terser": "^5.37.0",
"vite": "^6.1.6", "vite": "^6.1.6",
"vite-plugin-compression2": "^1.0.0", "vite-plugin-compression2": "^1.0.0",
"vue-tsc": "^2.2.0" "vue-tsc": "^2.2.0"

1098
frontend/pnpm-lock.yaml generated

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.3 KiB

After

Width:  |  Height:  |  Size: 7.2 KiB

View File

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<browserconfig>
<msapplication>
<tile>
<square150x150logo src="/mstile-150x150.png"/>
<TileColor>#455a64</TileColor>
</tile>
</msapplication>
</browserconfig>

Binary file not shown.

After

Width:  |  Height:  |  Size: 843 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

View File

@ -0,0 +1,42 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
width="700.000000pt" height="700.000000pt" viewBox="0 0 700.000000 700.000000"
preserveAspectRatio="xMidYMid meet">
<metadata>
Created by potrace 1.11, written by Peter Selinger 2001-2013
</metadata>
<g transform="translate(0.000000,700.000000) scale(0.100000,-0.100000)"
fill="#000000" stroke="none">
<path d="M3245 6989 c-522 -39 -1042 -197 -1480 -449 -849 -488 -1459 -1308
-1673 -2250 -177 -776 -89 -1582 250 -2301 368 -778 1052 -1418 1857 -1739
903 -359 1927 -325 2812 92 778 368 1418 1052 1739 1857 359 903 325 1927 -92
2812 -296 627 -806 1175 -1423 1529 -587 338 -1308 500 -1990 449z m555 -580
c519 -51 1018 -245 1446 -565 788 -588 1229 -1526 1174 -2496 -16 -277 -58
-500 -145 -763 -144 -440 -378 -819 -710 -1150 -452 -452 -1005 -730 -1655
-832 -91 -14 -175 -18 -405 -18 -304 0 -369 6 -595 51 -1105 223 -1999 1092
-2259 2197 -52 221 -73 412 -73 667 0 397 64 732 204 1080 304 752 886 1334
1638 1638 431 174 895 238 1380 191z"/>
<path d="M2670 5215 c0 -13 -44 -15 -335 -15 -352 0 -383 -3 -399 -45 -3 -9
-6 -758 -6 -1663 0 -1168 -3 -1643 -11 -1632 -8 11 -9 8 -4 -15 3 -16 17 -41
31 -55 l24 -25 1530 0 1530 0 24 25 c14 14 26 36 27 50 1 14 1 711 1 1550 l-2
1526 -228 142 -229 142 -136 0 -137 0 0 -600 0 -600 -705 0 -705 0 0 615 0
615 -135 0 c-113 0 -135 -2 -135 -15z m-264 -190 c57 -29 89 -71 103 -137 35
-154 -98 -282 -258 -247 -55 12 -122 62 -148 113 -36 69 -12 186 49 243 62 58
170 70 254 28z m2316 -1702 c17 -15 18 -49 18 -670 l0 -653 -1245 0 -1245 0 0
654 c0 582 2 656 16 670 14 14 139 16 1226 16 1113 0 1213 -1 1230 -17z
m-2602 -1363 c40 -40 13 -100 -43 -100 -60 0 -88 59 -47 100 11 11 31 20 45
20 14 0 34 -9 45 -20z m2840 0 c41 -41 11 -100 -52 -100 -35 0 -58 24 -58 60
0 54 71 79 110 40z"/>
<path d="M2431 3091 c-7 -13 -7 -23 2 -35 11 -15 97 -16 1067 -14 l1055 3 0
30 0 30 -1057 3 c-1023 2 -1058 1 -1067 -17z"/>
<path d="M2436 2675 c-19 -19 -11 -41 17 -49 41 -11 2067 -7 2088 4 23 13 25
46 3 54 -9 3 -483 6 -1054 6 -919 0 -1040 -2 -1054 -15z"/>
<path d="M2447 2273 c-14 -4 -17 -13 -15 -36 l3 -32 1049 -3 c767 -1 1052 1
1062 9 20 16 17 47 -5 59 -20 10 -2055 13 -2094 3z"/>
<path d="M3822 5027 c-21 -23 -22 -30 -22 -293 0 -258 1 -271 20 -292 27 -29
56 -35 140 -30 56 3 75 8 93 26 22 22 22 26 22 298 l0 276 -24 19 c-19 16 -40
19 -115 19 -84 0 -95 -2 -114 -23z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.4 KiB

View File

@ -18,10 +18,18 @@
<meta name="robots" content="noindex,nofollow" /> <meta name="robots" content="noindex,nofollow" />
<link rel="icon" type="image/svg+xml" href="[{[ .StaticURL ]}]/img/icons/favicon.svg" /> <link
<link rel="shortcut icon" href="[{[ .StaticURL ]}]/img/icons/favicon.ico" /> rel="icon"
<link rel="apple-touch-icon" sizes="180x180" href="[{[ .StaticURL ]}]/img/icons/apple-touch-icon.png" /> type="image/png"
<meta name="apple-mobile-web-app-title" content="File Browser" /> sizes="32x32"
href="[{[ .StaticURL ]}]/img/icons/favicon-32x32.png"
/>
<link
rel="icon"
type="image/png"
sizes="16x16"
href="[{[ .StaticURL ]}]/img/icons/favicon-16x16.png"
/>
<!-- Add to home screen for Android and modern mobile browsers --> <!-- Add to home screen for Android and modern mobile browsers -->
<link <link
@ -34,6 +42,25 @@
content="[{[ if .Color -]}][{[ .Color ]}][{[ else ]}]#2979ff[{[ end ]}]" content="[{[ if .Color -]}][{[ .Color ]}][{[ else ]}]#2979ff[{[ end ]}]"
/> />
<!-- Add to home screen for Safari on iOS/iPadOS -->
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-status-bar-style" content="black" />
<meta name="apple-mobile-web-app-title" content="assets" />
<link
rel="apple-touch-icon"
href="[{[ .StaticURL ]}]/img/icons/apple-touch-icon.png"
/>
<!-- Add to home screen for Windows -->
<meta
name="msapplication-TileImage"
content="[{[ .StaticURL ]}]/img/icons/mstile-144x144.png"
/>
<meta
name="msapplication-TileColor"
content="[{[ if .Color -]}][{[ .Color ]}][{[ else ]}]#2979ff[{[ end ]}]"
/>
<!-- Inject Some Variables and generate the manifest json --> <!-- Inject Some Variables and generate the manifest json -->
<script> <script>
// We can assign JSON directly // We can assign JSON directly

View File

@ -1,5 +1,6 @@
import { baseURL } from "@/utils/constants";
import { removePrefix } from "./utils"; import { removePrefix } from "./utils";
import { baseURL } from "@/utils/constants";
import { useAuthStore } from "@/stores/auth";
const ssl = window.location.protocol === "https:"; const ssl = window.location.protocol === "https:";
const protocol = ssl ? "wss:" : "ws:"; const protocol = ssl ? "wss:" : "ws:";
@ -10,8 +11,10 @@ export default function command(
onmessage: WebSocket["onmessage"], onmessage: WebSocket["onmessage"],
onclose: WebSocket["onclose"] onclose: WebSocket["onclose"]
) { ) {
const authStore = useAuthStore();
url = removePrefix(url); url = removePrefix(url);
url = `${protocol}//${window.location.host}${baseURL}/api/command${url}`; url = `${protocol}//${window.location.host}${baseURL}/api/command${url}?auth=${authStore.jwt}`;
const conn = new window.WebSocket(url); const conn = new window.WebSocket(url);
conn.onopen = () => conn.send(command); conn.onopen = () => conn.send(command);

View File

@ -2,22 +2,14 @@ import { useAuthStore } from "@/stores/auth";
import { useLayoutStore } from "@/stores/layout"; import { useLayoutStore } from "@/stores/layout";
import { baseURL } from "@/utils/constants"; import { baseURL } from "@/utils/constants";
import { upload as postTus, useTus } from "./tus"; import { upload as postTus, useTus } from "./tus";
import { createURL, fetchURL, removePrefix, StatusError } from "./utils"; import { createURL, fetchURL, removePrefix } from "./utils";
export async function fetch(url: string, signal?: AbortSignal) { export async function fetch(url: string) {
url = removePrefix(url); url = removePrefix(url);
const res = await fetchURL(`/api/resources${url}`, { signal });
let data: Resource; const res = await fetchURL(`/api/resources${url}`, {});
try {
data = (await res.json()) as Resource; const data = (await res.json()) as Resource;
} catch (e) {
// Check if the error is an intentional cancellation
if (e instanceof Error && e.name === "AbortError") {
throw new StatusError("000 No connection", 0, true);
}
throw e;
}
data.url = `/files${url}`; data.url = `/files${url}`;
if (data.isDir) { if (data.isDir) {
@ -83,6 +75,11 @@ export function download(format: any, ...files: string[]) {
url += `algo=${format}&`; url += `algo=${format}&`;
} }
const authStore = useAuthStore();
if (authStore.jwt) {
url += `auth=${authStore.jwt}&`;
}
window.open(url); window.open(url);
} }
@ -213,18 +210,10 @@ export function getSubtitlesURL(file: ResourceItem) {
return file.subtitles?.map((d) => createURL("api/subtitle" + d, params)); return file.subtitles?.map((d) => createURL("api/subtitle" + d, params));
} }
export async function usage(url: string, signal: AbortSignal) { export async function usage(url: string) {
url = removePrefix(url); url = removePrefix(url);
const res = await fetchURL(`/api/usage${url}`, { signal }); const res = await fetchURL(`/api/usage${url}`, {});
try { return await res.json();
return await res.json();
} catch (e) {
// Check if the error is an intentional cancellation
if (e instanceof Error && e.name == "AbortError") {
throw new StatusError("000 No connection", 0, true);
}
throw e;
}
} }

View File

@ -71,5 +71,5 @@ export function getDownloadURL(res: Resource, inline = false) {
...(res.token && { token: res.token }), ...(res.token && { token: res.token }),
}; };
return createURL("api/public/dl/" + res.hash + res.path, params); return createURL("api/public/dl/" + res.hash + res.path, params, false);
} }

View File

@ -41,5 +41,5 @@ export async function create(
} }
export function getShareURL(share: Share) { export function getShareURL(share: Share) {
return createURL("share/" + share.hash, {}); return createURL("share/" + share.hash, {}, false);
} }

View File

@ -1,8 +1,9 @@
import * as tus from "tus-js-client"; import * as tus from "tus-js-client";
import { baseURL, tusEndpoint, tusSettings, origin } from "@/utils/constants"; import { baseURL, tusEndpoint, tusSettings } from "@/utils/constants";
import { useAuthStore } from "@/stores/auth"; import { useAuthStore } from "@/stores/auth";
import { useUploadStore } from "@/stores/upload"; import { useUploadStore } from "@/stores/upload";
import { removePrefix } from "@/api/utils"; import { removePrefix } from "@/api/utils";
import { fetchURL } from "./utils";
const RETRY_BASE_DELAY = 1000; const RETRY_BASE_DELAY = 1000;
const RETRY_MAX_DELAY = 20000; const RETRY_MAX_DELAY = 20000;
@ -27,6 +28,8 @@ export async function upload(
filePath = removePrefix(filePath); filePath = removePrefix(filePath);
const resourcePath = `${tusEndpoint}${filePath}?override=${overwrite}`; const resourcePath = `${tusEndpoint}${filePath}?override=${overwrite}`;
await createUpload(resourcePath);
const authStore = useAuthStore(); const authStore = useAuthStore();
// Exit early because of typescript, tus content can't be a string // Exit early because of typescript, tus content can't be a string
@ -35,7 +38,7 @@ export async function upload(
} }
return new Promise<void | string>((resolve, reject) => { return new Promise<void | string>((resolve, reject) => {
const upload = new tus.Upload(content, { const upload = new tus.Upload(content, {
endpoint: `${origin}${baseURL}${resourcePath}`, uploadUrl: `${baseURL}${resourcePath}`,
chunkSize: tusSettings.chunkSize, chunkSize: tusSettings.chunkSize,
retryDelays: computeRetryDelays(tusSettings), retryDelays: computeRetryDelays(tusSettings),
parallelUploads: 1, parallelUploads: 1,
@ -43,18 +46,6 @@ export async function upload(
headers: { headers: {
"X-Auth": authStore.jwt, "X-Auth": authStore.jwt,
}, },
onShouldRetry: function (err) {
const status = err.originalResponse
? err.originalResponse.getStatus()
: 0;
// Do not retry for file conflict.
if (status === 409) {
return false;
}
return true;
},
onError: function (error) { onError: function (error) {
if (CURRENT_UPLOAD_LIST[filePath].interval) { if (CURRENT_UPLOAD_LIST[filePath].interval) {
clearInterval(CURRENT_UPLOAD_LIST[filePath].interval); clearInterval(CURRENT_UPLOAD_LIST[filePath].interval);
@ -101,6 +92,17 @@ export async function upload(
}); });
} }
async function createUpload(resourcePath: string) {
const headResp = await fetchURL(resourcePath, {
method: "POST",
});
if (headResp.status !== 201) {
throw new Error(
`Failed to create an upload: ${headResp.status} ${headResp.statusText}`
);
}
}
function computeRetryDelays(tusSettings: TusSettings): number[] | undefined { function computeRetryDelays(tusSettings: TusSettings): number[] | undefined {
if (!tusSettings.retryCount || tusSettings.retryCount < 1) { if (!tusSettings.retryCount || tusSettings.retryCount < 1) {
// Disable retries altogether // Disable retries altogether
@ -128,8 +130,7 @@ function isTusSupported() {
return tus.isSupported === true; return tus.isSupported === true;
} }
function computeETA(speed?: number) { function computeETA(state: ETAState, speed?: number) {
const state = useUploadStore();
if (state.speedMbyte === 0) { if (state.speedMbyte === 0) {
return Infinity; return Infinity;
} }
@ -137,13 +138,22 @@ function computeETA(speed?: number) {
(acc: number, size: number) => acc + size, (acc: number, size: number) => acc + size,
0 0
); );
const uploadedSize = state.progress.reduce((a, b) => a + b, 0); const uploadedSize = state.progress.reduce(
(acc: number, progress: Progress) => {
if (typeof progress === "number") {
return acc + progress;
}
return acc;
},
0
);
const remainingSize = totalSize - uploadedSize; const remainingSize = totalSize - uploadedSize;
const speedBytesPerSecond = (speed ?? state.speedMbyte) * 1024 * 1024; const speedBytesPerSecond = (speed ?? state.speedMbyte) * 1024 * 1024;
return remainingSize / speedBytesPerSecond; return remainingSize / speedBytesPerSecond;
} }
function computeGlobalSpeedAndETA() { function computeGlobalSpeedAndETA() {
const uploadStore = useUploadStore();
let totalSpeed = 0; let totalSpeed = 0;
let totalCount = 0; let totalCount = 0;
@ -155,7 +165,7 @@ function computeGlobalSpeedAndETA() {
if (totalCount === 0) return { speed: 0, eta: Infinity }; if (totalCount === 0) return { speed: 0, eta: Infinity };
const averageSpeed = totalSpeed / totalCount; const averageSpeed = totalSpeed / totalCount;
const averageETA = computeETA(averageSpeed); const averageETA = computeETA(uploadStore, averageSpeed);
return { speed: averageSpeed, eta: averageETA }; return { speed: averageSpeed, eta: averageETA };
} }
@ -197,9 +207,6 @@ export function abortAllUploads() {
} }
if (CURRENT_UPLOAD_LIST[filePath].upload) { if (CURRENT_UPLOAD_LIST[filePath].upload) {
CURRENT_UPLOAD_LIST[filePath].upload.abort(true); CURRENT_UPLOAD_LIST[filePath].upload.abort(true);
CURRENT_UPLOAD_LIST[filePath].upload.options!.onError!(
new Error("Upload aborted")
);
} }
delete CURRENT_UPLOAD_LIST[filePath]; delete CURRENT_UPLOAD_LIST[filePath];
} }

View File

@ -6,8 +6,7 @@ import { encodePath } from "@/utils/url";
export class StatusError extends Error { export class StatusError extends Error {
constructor( constructor(
message: any, message: any,
public status?: number, public status?: number
public is_canceled?: boolean
) { ) {
super(message); super(message);
this.name = "StatusError"; this.name = "StatusError";
@ -34,11 +33,7 @@ export async function fetchURL(
}, },
...rest, ...rest,
}); });
} catch (e) { } catch {
// Check if the error is an intentional cancellation
if (e instanceof Error && e.name === "AbortError") {
throw new StatusError("000 No connection", 0, true);
}
throw new StatusError("000 No connection", 0); throw new StatusError("000 No connection", 0);
} }
@ -81,13 +76,23 @@ export function removePrefix(url: string): string {
return url; return url;
} }
export function createURL(endpoint: string, searchParams = {}): string { export function createURL(endpoint: string, params = {}, auth = true): string {
const authStore = useAuthStore();
let prefix = baseURL; let prefix = baseURL;
if (!prefix.endsWith("/")) { if (!prefix.endsWith("/")) {
prefix = prefix + "/"; prefix = prefix + "/";
} }
const url = new URL(prefix + encodePath(endpoint), origin); const url = new URL(prefix + encodePath(endpoint), origin);
url.search = new URLSearchParams(searchParams).toString();
const searchParams: SearchParams = {
...(auth && { auth: authStore.jwt }),
...params,
};
for (const key in searchParams) {
url.searchParams.set(key, searchParams[key]);
}
return url.toString(); return url.toString();
} }

View File

@ -192,8 +192,7 @@ export default {
style["position"] = "absolute"; style["position"] = "absolute";
style["top"] = "0"; style["top"] = "0";
style["height"] = "100%"; style["height"] = "100%";
((style["min-height"] = this.size_px + "px"), (style["min-height"] = this.size_px + "px"), (style["z-index"] = "-1");
(style["z-index"] = "-1"));
} }
return style; return style;

View File

@ -2,10 +2,6 @@
<div v-show="active" @click="closeHovers" class="overlay"></div> <div v-show="active" @click="closeHovers" class="overlay"></div>
<nav :class="{ active }"> <nav :class="{ active }">
<template v-if="isLoggedIn"> <template v-if="isLoggedIn">
<button @click="toAccountSettings" class="action">
<i class="material-icons">person</i>
<span>{{ user.username }}</span>
</button>
<button <button
class="action" class="action"
@click="toRoot" @click="toRoot"
@ -38,28 +34,29 @@
</button> </button>
</div> </div>
<div v-if="user.perm.admin"> <div>
<button <button
class="action" class="action"
@click="toGlobalSettings" @click="toSettings"
:aria-label="$t('sidebar.settings')" :aria-label="$t('sidebar.settings')"
:title="$t('sidebar.settings')" :title="$t('sidebar.settings')"
> >
<i class="material-icons">settings_applications</i> <i class="material-icons">settings_applications</i>
<span>{{ $t("sidebar.settings") }}</span> <span>{{ $t("sidebar.settings") }}</span>
</button> </button>
<button
v-if="canLogout"
@click="logout"
class="action"
id="logout"
:aria-label="$t('sidebar.logout')"
:title="$t('sidebar.logout')"
>
<i class="material-icons">exit_to_app</i>
<span>{{ $t("sidebar.logout") }}</span>
</button>
</div> </div>
<button
v-if="canLogout"
@click="logout"
class="action"
id="logout"
:aria-label="$t('sidebar.logout')"
:title="$t('sidebar.logout')"
>
<i class="material-icons">exit_to_app</i>
<span>{{ $t("sidebar.logout") }}</span>
</button>
</template> </template>
<template v-else> <template v-else>
<router-link <router-link
@ -132,7 +129,6 @@ import {
import { files as api } from "@/api"; import { files as api } from "@/api";
import ProgressBar from "@/components/ProgressBar.vue"; import ProgressBar from "@/components/ProgressBar.vue";
import prettyBytes from "pretty-bytes"; import prettyBytes from "pretty-bytes";
import { StatusError } from "@/api/utils.js";
const USAGE_DEFAULT = { used: "0 B", total: "0 B", usedPercentage: 0 }; const USAGE_DEFAULT = { used: "0 B", total: "0 B", usedPercentage: 0 };
@ -140,7 +136,7 @@ export default {
name: "sidebar", name: "sidebar",
setup() { setup() {
const usage = reactive(USAGE_DEFAULT); const usage = reactive(USAGE_DEFAULT);
return { usage, usageAbortController: new AbortController() }; return { usage };
}, },
components: { components: {
ProgressBar, ProgressBar,
@ -161,9 +157,6 @@ export default {
}, },
methods: { methods: {
...mapActions(useLayoutStore, ["closeHovers", "showHover"]), ...mapActions(useLayoutStore, ["closeHovers", "showHover"]),
abortOngoingFetchUsage() {
this.usageAbortController.abort();
},
async fetchUsage() { async fetchUsage() {
const path = this.$route.path.endsWith("/") const path = this.$route.path.endsWith("/")
? this.$route.path ? this.$route.path
@ -173,18 +166,13 @@ export default {
return Object.assign(this.usage, usageStats); return Object.assign(this.usage, usageStats);
} }
try { try {
this.abortOngoingFetchUsage(); const usage = await api.usage(path);
this.usageAbortController = new AbortController();
const usage = await api.usage(path, this.usageAbortController.signal);
usageStats = { usageStats = {
used: prettyBytes(usage.used, { binary: true }), used: prettyBytes(usage.used, { binary: true }),
total: prettyBytes(usage.total, { binary: true }), total: prettyBytes(usage.total, { binary: true }),
usedPercentage: Math.round((usage.used / usage.total) * 100), usedPercentage: Math.round((usage.used / usage.total) * 100),
}; };
} catch (error) { } catch (error) {
if (error instanceof StatusError && error.is_canceled) {
return;
}
this.$showError(error); this.$showError(error);
} }
return Object.assign(this.usage, usageStats); return Object.assign(this.usage, usageStats);
@ -193,12 +181,8 @@ export default {
this.$router.push({ path: "/files" }); this.$router.push({ path: "/files" });
this.closeHovers(); this.closeHovers();
}, },
toAccountSettings() { toSettings() {
this.$router.push({ path: "/settings/profile" }); this.$router.push({ path: "/settings" });
this.closeHovers();
},
toGlobalSettings() {
this.$router.push({ path: "/settings/global" });
this.closeHovers(); this.closeHovers();
}, },
help() { help() {
@ -216,8 +200,5 @@ export default {
immediate: true, immediate: true,
}, },
}, },
unmounted() {
this.abortOngoingFetchUsage();
},
}; };
</script> </script>

View File

@ -172,8 +172,7 @@ const setCenter = () => {
imgex.value.style.top = position.value.center.y + "px"; imgex.value.style.top = position.value.center.y + "px";
}; };
const mousedownStart = (event: MouseEvent) => { const mousedownStart = (event: Event) => {
if (event.button !== 0) return;
lastX.value = null; lastX.value = null;
lastY.value = null; lastY.value = null;
inDrag.value = true; inDrag.value = true;
@ -185,10 +184,8 @@ const mouseMove = (event: MouseEvent) => {
event.preventDefault(); event.preventDefault();
}; };
const mouseUp = (event: Event) => { const mouseUp = (event: Event) => {
if (inDrag.value) {
event.preventDefault();
}
inDrag.value = false; inDrag.value = false;
event.preventDefault();
}; };
const touchStart = (event: TouchEvent) => { const touchStart = (event: TouchEvent) => {
lastX.value = null; lastX.value = null;

View File

@ -8,13 +8,6 @@
@dragover="dragOver" @dragover="dragOver"
@drop="drop" @drop="drop"
@click="itemClick" @click="itemClick"
@mousedown="handleMouseDown"
@mouseup="handleMouseUp"
@mouseleave="handleMouseLeave"
@touchstart="handleTouchStart"
@touchend="handleTouchEnd"
@touchcancel="handleTouchCancel"
@touchmove="handleTouchMove"
:data-dir="isDir" :data-dir="isDir"
:data-type="type" :data-type="type"
:aria-label="name" :aria-label="name"
@ -57,12 +50,6 @@ import { useRouter } from "vue-router";
const touches = ref<number>(0); const touches = ref<number>(0);
const longPressTimer = ref<number | null>(null);
const longPressTriggered = ref<boolean>(false);
const longPressDelay = ref<number>(500);
const startPosition = ref<{ x: number; y: number } | null>(null);
const moveThreshold = ref<number>(10);
const $showError = inject<IToastError>("$showError")!; const $showError = inject<IToastError>("$showError")!;
const router = useRouter(); const router = useRouter();
@ -222,12 +209,6 @@ const drop = async (event: Event) => {
}; };
const itemClick = (event: Event | KeyboardEvent) => { const itemClick = (event: Event | KeyboardEvent) => {
// If long press was triggered, prevent normal click behavior
if (longPressTriggered.value) {
longPressTriggered.value = false;
return;
}
if ( if (
singleClick.value && singleClick.value &&
!(event as KeyboardEvent).ctrlKey && !(event as KeyboardEvent).ctrlKey &&
@ -300,76 +281,4 @@ const getExtension = (fileName: string): string => {
} }
return fileName.substring(lastDotIndex); return fileName.substring(lastDotIndex);
}; };
// Long-press helper functions
const startLongPress = (clientX: number, clientY: number) => {
startPosition.value = { x: clientX, y: clientY };
longPressTimer.value = window.setTimeout(() => {
handleLongPress();
}, longPressDelay.value);
};
const cancelLongPress = () => {
if (longPressTimer.value !== null) {
window.clearTimeout(longPressTimer.value);
longPressTimer.value = null;
}
startPosition.value = null;
};
const handleLongPress = () => {
if (singleClick.value) {
longPressTriggered.value = true;
click(new Event("longpress"));
}
cancelLongPress();
};
const checkMovement = (clientX: number, clientY: number): boolean => {
if (!startPosition.value) return false;
const deltaX = Math.abs(clientX - startPosition.value.x);
const deltaY = Math.abs(clientY - startPosition.value.y);
return deltaX > moveThreshold.value || deltaY > moveThreshold.value;
};
// Event handlers
const handleMouseDown = (event: MouseEvent) => {
if (event.button === 0) {
startLongPress(event.clientX, event.clientY);
}
};
const handleMouseUp = () => {
cancelLongPress();
};
const handleMouseLeave = () => {
cancelLongPress();
};
const handleTouchStart = (event: TouchEvent) => {
if (event.touches.length === 1) {
const touch = event.touches[0];
startLongPress(touch.clientX, touch.clientY);
}
};
const handleTouchEnd = () => {
cancelLongPress();
};
const handleTouchCancel = () => {
cancelLongPress();
};
const handleTouchMove = (event: TouchEvent) => {
if (event.touches.length === 1 && startPosition.value) {
const touch = event.touches[0];
if (checkMovement(touch.clientX, touch.clientY)) {
cancelLongPress();
}
}
};
</script> </script>

View File

@ -36,7 +36,5 @@ const formats = {
tarxz: "tar.xz", tarxz: "tar.xz",
tarlz4: "tar.lz4", tarlz4: "tar.lz4",
tarsz: "tar.sz", tarsz: "tar.sz",
tarbr: "tar.br",
tarzst: "tar.zst",
}; };
</script> </script>

View File

@ -31,16 +31,9 @@ import { useFileStore } from "@/stores/file";
import url from "@/utils/url"; import url from "@/utils/url";
import { files } from "@/api"; import { files } from "@/api";
import { StatusError } from "@/api/utils.js";
export default { export default {
name: "file-list", name: "file-list",
props: {
exclude: {
type: Array,
default: () => [],
},
},
data: function () { data: function () {
return { return {
items: [], items: [],
@ -50,7 +43,6 @@ export default {
}, },
selected: null, selected: null,
current: window.location.pathname, current: window.location.pathname,
nextAbortController: new AbortController(),
}; };
}, },
inject: ["$showError"], inject: ["$showError"],
@ -64,13 +56,7 @@ export default {
mounted() { mounted() {
this.fillOptions(this.req); this.fillOptions(this.req);
}, },
unmounted() {
this.abortOngoingNext();
},
methods: { methods: {
abortOngoingNext() {
this.nextAbortController.abort();
},
fillOptions(req) { fillOptions(req) {
// Sets the current path and resets // Sets the current path and resets
// the current items. // the current items.
@ -96,7 +82,6 @@ export default {
// move options. // move options.
for (const item of req.items) { for (const item of req.items) {
if (!item.isDir) continue; if (!item.isDir) continue;
if (this.exclude?.includes(item.url)) continue;
this.items.push({ this.items.push({
name: item.name, name: item.name,
@ -109,17 +94,8 @@ export default {
// just clicked in and fill the options with its // just clicked in and fill the options with its
// content. // content.
const uri = event.currentTarget.dataset.url; const uri = event.currentTarget.dataset.url;
this.abortOngoingNext();
this.nextAbortController = new AbortController(); files.fetch(uri).then(this.fillOptions).catch(this.$showError);
files
.fetch(uri, this.nextAbortController.signal)
.then(this.fillOptions)
.catch((e) => {
if (e instanceof StatusError && e.is_canceled) {
return;
}
this.$showError(e);
});
}, },
touchstart(event) { touchstart(event) {
const url = event.currentTarget.dataset.url; const url = event.currentTarget.dataset.url;

View File

@ -11,7 +11,7 @@
<li><strong>DEL</strong> - {{ $t("help.del") }}</li> <li><strong>DEL</strong> - {{ $t("help.del") }}</li>
<li><strong>ESC</strong> - {{ $t("help.esc") }}</li> <li><strong>ESC</strong> - {{ $t("help.esc") }}</li>
<li><strong>CTRL + S</strong> - {{ $t("help.ctrl.s") }}</li> <li><strong>CTRL + S</strong> - {{ $t("help.ctrl.s") }}</li>
<li><strong>CTRL + SHIFT + F</strong> - {{ $t("help.ctrl.f") }}</li> <li><strong>CTRL + F</strong> - {{ $t("help.ctrl.f") }}</li>
<li><strong>CTRL + Click</strong> - {{ $t("help.ctrl.click") }}</li> <li><strong>CTRL + Click</strong> - {{ $t("help.ctrl.click") }}</li>
<li><strong>Click</strong> - {{ $t("help.click") }}</li> <li><strong>Click</strong> - {{ $t("help.click") }}</li>
<li><strong>Double click</strong> - {{ $t("help.doubleClick") }}</li> <li><strong>Double click</strong> - {{ $t("help.doubleClick") }}</li>

View File

@ -8,7 +8,6 @@
<file-list <file-list
ref="fileList" ref="fileList"
@update:selected="(val) => (dest = val)" @update:selected="(val) => (dest = val)"
:exclude="excludedFolders"
tabindex="1" tabindex="1"
/> />
</div> </div>
@ -77,11 +76,6 @@ export default {
computed: { computed: {
...mapState(useFileStore, ["req", "selected"]), ...mapState(useFileStore, ["req", "selected"]),
...mapState(useAuthStore, ["user"]), ...mapState(useAuthStore, ["user"]),
excludedFolders() {
return this.selected
.filter((idx) => this.req.items[idx].isDir)
.map((idx) => this.req.items[idx].url);
},
}, },
methods: { methods: {
...mapActions(useLayoutStore, ["showHover", "closeHovers"]), ...mapActions(useLayoutStore, ["showHover", "closeHovers"]),

View File

@ -32,6 +32,16 @@
<i class="material-icons">content_paste</i> <i class="material-icons">content_paste</i>
</button> </button>
</td> </td>
<td class="small" v-if="hasDownloadLink()">
<button
class="action copy-clipboard"
:aria-label="$t('buttons.copyDownloadLinkToClipboard')"
:title="$t('buttons.copyDownloadLinkToClipboard')"
@click="copyToClipboard(buildDownloadLink(link))"
>
<i class="material-icons">content_paste_go</i>
</button>
</td>
<td class="small"> <td class="small">
<button <button
class="action" class="action"
@ -132,7 +142,7 @@
<script> <script>
import { mapActions, mapState } from "pinia"; import { mapActions, mapState } from "pinia";
import { useFileStore } from "@/stores/file"; import { useFileStore } from "@/stores/file";
import { share as api } from "@/api"; import { share as api, pub as pub_api } from "@/api";
import dayjs from "dayjs"; import dayjs from "dayjs";
import { useLayoutStore } from "@/stores/layout"; import { useLayoutStore } from "@/stores/layout";
import { copy } from "@/utils/clipboard"; import { copy } from "@/utils/clipboard";
@ -247,6 +257,14 @@ export default {
buildLink(share) { buildLink(share) {
return api.getShareURL(share); return api.getShareURL(share);
}, },
hasDownloadLink() {
return (
this.selected.length === 1 && !this.req.items[this.selected[0]].isDir
);
},
buildDownloadLink(share) {
return pub_api.getDownloadURL(share);
},
sort() { sort() {
this.links = this.links.sort((a, b) => { this.links = this.links.sort((a, b) => {
if (a.expire === 0) return -1; if (a.expire === 0) return -1;

View File

@ -19,7 +19,6 @@ export default {
hu: "Magyar", hu: "Magyar",
ar: "Ű§Ù„ŰčŰ±ŰšÙŠŰ©", ar: "Ű§Ù„ŰčŰ±ŰšÙŠŰ©",
ca: "CatalĂ ", ca: "CatalĂ ",
cs: "Čeơtina",
de: "Deutsch", de: "Deutsch",
el: "ΕλληΜÎčÎșÎŹ", el: "ΕλληΜÎčÎșÎŹ",
en: "English", en: "English",

View File

@ -195,6 +195,10 @@ html[dir="rtl"] #listing {
align-items: center; align-items: center;
} }
#listing.list .item p.name:not(#listing.list .item.header .name) {
margin-right: -3em;
}
#listing.list .item .name { #listing.list .item .name {
width: 50%; width: 50%;
} }
@ -223,18 +227,18 @@ html[dir="rtl"] #listing {
border-bottom: 1px solid var(--borderPrimary); border-bottom: 1px solid var(--borderPrimary);
} }
#listing.list .item.header > div { #listing.list .item.header > div:first-child {
width: 100%; width: 0;
}
#listing.list .item.header .name {
margin-right: 3em;
} }
#listing.list .header a { #listing.list .header a {
color: inherit; color: inherit;
} }
#listing.list .item.header > div:first-child {
width: 0;
}
#listing.list .name { #listing.list .name {
font-weight: normal; font-weight: normal;
word-wrap: break-word; word-wrap: break-word;

View File

@ -24,7 +24,6 @@
"ok": "Ù…ÙˆŰ§ÙÙ‚", "ok": "Ù…ÙˆŰ§ÙÙ‚",
"permalink": "Ű§Ù„Ű­Ű”ÙˆÙ„ Űčلى ۱ۧۚ۷ ŰŻŰ§ŰŠÙ…", "permalink": "Ű§Ù„Ű­Ű”ÙˆÙ„ Űčلى ۱ۧۚ۷ ŰŻŰ§ŰŠÙ…",
"previous": "Ű§Ù„ŰłŰ§ŰšÙ‚", "previous": "Ű§Ù„ŰłŰ§ŰšÙ‚",
"preview": "Preview",
"publish": "Ù†ŰŽŰ±", "publish": "Ù†ŰŽŰ±",
"rename": "Ű„Űčۧۯ۩ ŰȘŰłÙ…ÙŠŰ©", "rename": "Ű„Űčۧۯ۩ ŰȘŰłÙ…ÙŠŰ©",
"replace": "ۧ۳ŰȘŰšŰŻŰ§Ù„", "replace": "ۧ۳ŰȘŰšŰŻŰ§Ù„",
@ -170,7 +169,6 @@
"commandRunnerHelp": "Ù‡Ù†Ű§ ŰšŰ„Ù…ÙƒŰ§Ù†Ùƒ ŰȘŰčيين Ű§ï»·ÙˆŰ§Ù…Ű± Ű§Ù„ŰȘي ŰłÙŠŰȘم ŰȘÙ†ÙÙŠŰ°Ù‡Ű§ في Ű§ï»·Ű­ŰŻŰ§Ű« Ű§Ù„Ù…ŰłÙ…Ű§Ű©. ÙŠŰŹŰš كŰȘۧۚ۩ ŰŁÙ…Ű± ÙˆŰ§Ű­ŰŻ في كل ۳۷۱. ŰłŰȘكون Ű§Ù„Ù…ŰȘŰșÙŠŰ±Ű§ŰȘ Ű§Ù„ŰšÙŠŰŠÙŠŰ© (env) {0} و {1} مŰȘŰ§Ű­Ű©ŰŒ Ű­ÙŠŰ« {0} Ù†ŰłŰšÙŠ لـ {1}. لمŰČÙŠŰŻ من Ű§Ù„Ù…ŰčÙ„ÙˆÙ…Ű§ŰȘ Ű­ÙˆÙ„ Ù‡Ű°Ù‡ Ű§Ù„Ù…ÙŠŰČŰ© و Ű§Ù„Ù…ŰȘŰșÙŠŰ±Ű§ŰȘ Ű§Ù„ŰšÙŠŰŠÙŠŰ© Ű§Ù„Ù…ŰȘŰ§Ű­Ű©ŰŒ ÙŠŰ±ŰŹÙ‰ Ù‚Ű±Ű§ŰĄŰ© {2}.", "commandRunnerHelp": "Ù‡Ù†Ű§ ŰšŰ„Ù…ÙƒŰ§Ù†Ùƒ ŰȘŰčيين Ű§ï»·ÙˆŰ§Ù…Ű± Ű§Ù„ŰȘي ŰłÙŠŰȘم ŰȘÙ†ÙÙŠŰ°Ù‡Ű§ في Ű§ï»·Ű­ŰŻŰ§Ű« Ű§Ù„Ù…ŰłÙ…Ű§Ű©. ÙŠŰŹŰš كŰȘۧۚ۩ ŰŁÙ…Ű± ÙˆŰ§Ű­ŰŻ في كل ۳۷۱. ŰłŰȘكون Ű§Ù„Ù…ŰȘŰșÙŠŰ±Ű§ŰȘ Ű§Ù„ŰšÙŠŰŠÙŠŰ© (env) {0} و {1} مŰȘŰ§Ű­Ű©ŰŒ Ű­ÙŠŰ« {0} Ù†ŰłŰšÙŠ لـ {1}. لمŰČÙŠŰŻ من Ű§Ù„Ù…ŰčÙ„ÙˆÙ…Ű§ŰȘ Ű­ÙˆÙ„ Ù‡Ű°Ù‡ Ű§Ù„Ù…ÙŠŰČŰ© و Ű§Ù„Ù…ŰȘŰșÙŠŰ±Ű§ŰȘ Ű§Ù„ŰšÙŠŰŠÙŠŰ© Ű§Ù„Ù…ŰȘŰ§Ű­Ű©ŰŒ ÙŠŰ±ŰŹÙ‰ Ù‚Ű±Ű§ŰĄŰ© {2}.",
"commandsUpdated": "ŰȘم ŰȘŰ­ŰŻÙŠŰ« Ű§ï»·ÙˆŰ§Ù…Ű±", "commandsUpdated": "ŰȘم ŰȘŰ­ŰŻÙŠŰ« Ű§ï»·ÙˆŰ§Ù…Ű±",
"createUserDir": "Ű„Ù†ŰŽŰ§ŰĄ Ù…ŰŹÙ„ŰŻ Ű§Ù„Ù…ŰłŰȘŰźŰŻÙ… (home) ŰȘÙ„Ù‚Ű§ŰŠÙŠŰ§Ù‹ ŰčÙ†ŰŻ Ű„Ù†ŰŽŰ§ŰĄ Ù…ŰłŰȘŰźŰŻÙ… ŰŹŰŻÙŠŰŻ", "createUserDir": "Ű„Ù†ŰŽŰ§ŰĄ Ù…ŰŹÙ„ŰŻ Ű§Ù„Ù…ŰłŰȘŰźŰŻÙ… (home) ŰȘÙ„Ù‚Ű§ŰŠÙŠŰ§Ù‹ ŰčÙ†ŰŻ Ű„Ù†ŰŽŰ§ŰĄ Ù…ŰłŰȘŰźŰŻÙ… ŰŹŰŻÙŠŰŻ",
"minimumPasswordLength": "Minimum password length",
"tusUploads": "Ű§Ù„ŰȘŰ­Ù…ÙŠÙ„Ű§ŰȘ Ű§Ù„Ù…ŰȘÙ‚Ű·ŰčŰ©", "tusUploads": "Ű§Ù„ŰȘŰ­Ù…ÙŠÙ„Ű§ŰȘ Ű§Ù„Ù…ŰȘÙ‚Ű·ŰčŰ©",
"tusUploadsHelp": "ÙŠŰŻŰčم مŰȘŰ”ÙŰ­ Ű§Ù„Ù…Ù„ÙŰ§ŰȘ ŰȘŰ­Ù…ÙŠÙ„ Ű§Ù„Ù…Ù„ÙŰ§ŰȘ Ű§Ù„Ù…ŰȘÙ‚Ű·ŰčŰ©ŰŒ Ù…Ù…Ű§ ÙŠŰłÙ…Ű­ ŰšŰȘŰ­Ù…ÙŠÙ„Ű§ŰȘ Ű§Ù„Ù…Ù„ÙŰ§ŰȘ ŰšŰŽÙƒÙ„ فŰčŰ§Ù„ و Ù…ÙˆŰ«ÙˆÙ‚ و Ù‚Ű§ŰšÙ„Ű© للمŰȘۧۚŰșŰ© و مŰȘÙ‚Ű·ŰčŰ© Ű­ŰȘى Űčلى Ű§Ù„ŰŽŰšÙƒŰ§ŰȘ ŰșÙŠŰ± Ű§Ù„Ù…ÙˆŰ«ÙˆÙ‚Ű©.", "tusUploadsHelp": "ÙŠŰŻŰčم مŰȘŰ”ÙŰ­ Ű§Ù„Ù…Ù„ÙŰ§ŰȘ ŰȘŰ­Ù…ÙŠÙ„ Ű§Ù„Ù…Ù„ÙŰ§ŰȘ Ű§Ù„Ù…ŰȘÙ‚Ű·ŰčŰ©ŰŒ Ù…Ù…Ű§ ÙŠŰłÙ…Ű­ ŰšŰȘŰ­Ù…ÙŠÙ„Ű§ŰȘ Ű§Ù„Ù…Ù„ÙŰ§ŰȘ ŰšŰŽÙƒÙ„ فŰčŰ§Ù„ و Ù…ÙˆŰ«ÙˆÙ‚ و Ù‚Ű§ŰšÙ„Ű© للمŰȘۧۚŰșŰ© و مŰȘÙ‚Ű·ŰčŰ© Ű­ŰȘى Űčلى Ű§Ù„ŰŽŰšÙƒŰ§ŰȘ ŰșÙŠŰ± Ű§Ù„Ù…ÙˆŰ«ÙˆÙ‚Ű©.",
"tusUploadsChunkSize": "ÙŠŰŽÙŠŰ± Ű„Ù„Ù‰ Ű§Ù„Ű­ŰŻ Ű§ï»·Ù‚Ű”Ù‰ Ù„Ű­ŰŹÙ… Ű§Ù„Ű·Ù„Űš (ŰłÙŠŰȘم ۧ۳ŰȘŰźŰŻŰ§Ù… Ű§Ù„ŰȘŰ­Ù…ÙŠÙ„ Ű§Ù„Ù…ŰšŰ§ŰŽŰ± للŰȘŰ­Ù…ÙŠÙ„Ű§ŰȘ Ű”ŰșÙŠŰ±Ű© Ű§Ù„ŰźŰ­Ù…). يمكنك Ű„ŰŻŰźŰ§Ù„ ŰčŰŻŰŻ Ű”Ű­ÙŠŰ­ ŰčŰ§ŰŻÙŠ ÙŠŰŻÙ„ Űčلى Ű§Ù„Ű­ŰŹÙ… ŰšÙˆŰ­ŰŻŰ© Ű§Ù„ŰšŰ§ÙŠŰȘ ŰŁÙˆ Ù†Ù…Űž Ù…Ű«Ù„10MB, 1GB, Ű„Ù„Űź.", "tusUploadsChunkSize": "ÙŠŰŽÙŠŰ± Ű„Ù„Ù‰ Ű§Ù„Ű­ŰŻ Ű§ï»·Ù‚Ű”Ù‰ Ù„Ű­ŰŹÙ… Ű§Ù„Ű·Ù„Űš (ŰłÙŠŰȘم ۧ۳ŰȘŰźŰŻŰ§Ù… Ű§Ù„ŰȘŰ­Ù…ÙŠÙ„ Ű§Ù„Ù…ŰšŰ§ŰŽŰ± للŰȘŰ­Ù…ÙŠÙ„Ű§ŰȘ Ű”ŰșÙŠŰ±Ű© Ű§Ù„ŰźŰ­Ù…). يمكنك Ű„ŰŻŰźŰ§Ù„ ŰčŰŻŰŻ Ű”Ű­ÙŠŰ­ ŰčŰ§ŰŻÙŠ ÙŠŰŻÙ„ Űčلى Ű§Ù„Ű­ŰŹÙ… ŰšÙˆŰ­ŰŻŰ© Ű§Ù„ŰšŰ§ÙŠŰȘ ŰŁÙˆ Ù†Ù…Űž Ù…Ű«Ù„10MB, 1GB, Ű„Ù„Űź.",

View File

@ -24,7 +24,6 @@
"ok": "D'acord", "ok": "D'acord",
"permalink": "Enllaç permanent", "permalink": "Enllaç permanent",
"previous": "Anterior", "previous": "Anterior",
"preview": "Preview",
"publish": "Publicar", "publish": "Publicar",
"rename": "Reanomenar", "rename": "Reanomenar",
"replace": "Substituir", "replace": "Substituir",
@ -170,7 +169,6 @@
"commandRunnerHelp": "Aquí pots establir les comandes que s'executen en els esdeveniments anomenats. Has d'escriure'n una per línia. Les variables d'entorn {0} i {1} estaran disponibles, sent {0} relativa a {1}. Per a més informació sobre aquesta característica i les variables d'entorn disponibles, si us plau llegeix el {2}.", "commandRunnerHelp": "Aquí pots establir les comandes que s'executen en els esdeveniments anomenats. Has d'escriure'n una per línia. Les variables d'entorn {0} i {1} estaran disponibles, sent {0} relativa a {1}. Per a més informació sobre aquesta característica i les variables d'entorn disponibles, si us plau llegeix el {2}.",
"commandsUpdated": "Comandes actualitzades!", "commandsUpdated": "Comandes actualitzades!",
"createUserDir": "Crea automĂ ticament una carpeta d'inici quan s'afegeix un usuari", "createUserDir": "Crea automĂ ticament una carpeta d'inici quan s'afegeix un usuari",
"minimumPasswordLength": "Minimum password length",
"tusUploads": "CĂ rregues a trossos", "tusUploads": "CĂ rregues a trossos",
"tusUploadsHelp": "El File Browser suporta cĂ rregues de fitxers a trossos, permetent la creaciĂł de cĂ rregues de fitxers eficients, fiables, reanudables i a trossos fins i tot en xarxes poc fiables.", "tusUploadsHelp": "El File Browser suporta cĂ rregues de fitxers a trossos, permetent la creaciĂł de cĂ rregues de fitxers eficients, fiables, reanudables i a trossos fins i tot en xarxes poc fiables.",
"tusUploadsChunkSize": "Indica la mida màxima d'una sol·licitud (s'utilitzaran càrregues directes per a càrregues més petites). Podeu introduir un enter pla que indiqui la mida en bytes o una cadena com 10MB, 1GB, etc.", "tusUploadsChunkSize": "Indica la mida màxima d'una sol·licitud (s'utilitzaran càrregues directes per a càrregues més petites). Podeu introduir un enter pla que indiqui la mida en bytes o una cadena com 10MB, 1GB, etc.",

View File

@ -24,7 +24,6 @@
"ok": "OK", "ok": "OK",
"permalink": "ZĂ­skat trvalĂœ odkaz", "permalink": "ZĂ­skat trvalĂœ odkaz",
"previous": "Pƙedchozí", "previous": "Pƙedchozí",
"preview": "Preview",
"publish": "Publikovat", "publish": "Publikovat",
"rename": "Pƙejmenovat", "rename": "Pƙejmenovat",
"replace": "Nahradit", "replace": "Nahradit",
@ -170,7 +169,6 @@
"commandRunnerHelp": "Zde mĆŻĆŸete nastavit pƙíkazy, kterĂ© se spustĂ­ pƙi určenĂœch udĂĄlostech. KaĆŸdĂœ pƙíkaz musĂ­ bĂœt na samostatnĂ©m ƙádku. Budou k dispozici proměnnĂ© prostƙedĂ­ {0} a {1}, pƙičemĆŸ {0} se vztahuje na {1}. Pro vĂ­ce informacĂ­ o tĂ©to funkci a dostupnĂœch proměnnĂœch prostƙedĂ­ si pƙečtěte {2}.", "commandRunnerHelp": "Zde mĆŻĆŸete nastavit pƙíkazy, kterĂ© se spustĂ­ pƙi určenĂœch udĂĄlostech. KaĆŸdĂœ pƙíkaz musĂ­ bĂœt na samostatnĂ©m ƙádku. Budou k dispozici proměnnĂ© prostƙedĂ­ {0} a {1}, pƙičemĆŸ {0} se vztahuje na {1}. Pro vĂ­ce informacĂ­ o tĂ©to funkci a dostupnĂœch proměnnĂœch prostƙedĂ­ si pƙečtěte {2}.",
"commandsUpdated": "Pƙíkazy aktualizovány!", "commandsUpdated": "Pƙíkazy aktualizovány!",
"createUserDir": "Automaticky vytvoƙit domovskou sloĆŸku uĆŸivatele pƙi pƙidĂĄnĂ­ novĂ©ho uĆŸivatele", "createUserDir": "Automaticky vytvoƙit domovskou sloĆŸku uĆŸivatele pƙi pƙidĂĄnĂ­ novĂ©ho uĆŸivatele",
"minimumPasswordLength": "Minimum password length",
"tusUploads": "Nahrávání po částech", "tusUploads": "Nahrávání po částech",
"tusUploadsHelp": "File Browser podporuje nahrĂĄvĂĄnĂ­ souborĆŻ po částech, coĆŸ umoĆŸĆˆuje vytváƙenĂ­ efektivnĂ­ch, spolehlivĂœch, obnovitelnĂœch a rozdělenĂœch nahrĂĄvek souborĆŻ i na nespolehlivĂœch sĂ­tĂ­ch.", "tusUploadsHelp": "File Browser podporuje nahrĂĄvĂĄnĂ­ souborĆŻ po částech, coĆŸ umoĆŸĆˆuje vytváƙenĂ­ efektivnĂ­ch, spolehlivĂœch, obnovitelnĂœch a rozdělenĂœch nahrĂĄvek souborĆŻ i na nespolehlivĂœch sĂ­tĂ­ch.",
"tusUploadsChunkSize": "MaximĂĄlnĂ­ velikost poĆŸadavku (pƙímĂ© nahrĂĄvĂĄnĂ­ bude pouĆŸito pro menĆĄĂ­ nahrĂĄvky). MĆŻĆŸete zadat prostĂ© číslo označujĂ­cĂ­ velikost v bajtech nebo ƙetězec jako 10MB, 1GB atd.", "tusUploadsChunkSize": "MaximĂĄlnĂ­ velikost poĆŸadavku (pƙímĂ© nahrĂĄvĂĄnĂ­ bude pouĆŸito pro menĆĄĂ­ nahrĂĄvky). MĆŻĆŸete zadat prostĂ© číslo označujĂ­cĂ­ velikost v bajtech nebo ƙetězec jako 10MB, 1GB atd.",

View File

@ -3,17 +3,14 @@
"cancel": "Abbrechen", "cancel": "Abbrechen",
"clear": "Schließen", "clear": "Schließen",
"close": "Schließen", "close": "Schließen",
"continue": "Fortfahren",
"copy": "Kopieren", "copy": "Kopieren",
"copyFile": "Kopiere Datei", "copyFile": "Kopiere Datei",
"copyToClipboard": "In Zwischenablage kopieren", "copyToClipboard": "In Zwischenablage kopieren",
"copyDownloadLinkToClipboard": "Download-Link in die Zwischenablage kopieren",
"create": "Neu", "create": "Neu",
"delete": "Löschen", "delete": "Löschen",
"download": "Herunterladen", "download": "Herunterladen",
"file": "Datei", "file": "Datei",
"folder": "Ordner", "folder": "Ordner",
"fullScreen": "Vollbildmodus umschalten",
"hideDotfiles": "Versteckte Dateien ausblenden", "hideDotfiles": "Versteckte Dateien ausblenden",
"info": "Info", "info": "Info",
"more": "mehr", "more": "mehr",
@ -24,7 +21,6 @@
"ok": "OK", "ok": "OK",
"permalink": "permanenten Verweis anzeigen", "permalink": "permanenten Verweis anzeigen",
"previous": "vorherige", "previous": "vorherige",
"preview": "Vorschau",
"publish": "Veröffentlichen", "publish": "Veröffentlichen",
"rename": "umbenennen", "rename": "umbenennen",
"replace": "Ersetzen", "replace": "Ersetzen",
@ -41,17 +37,13 @@
"toggleSidebar": "Seitenleiste anzeigen", "toggleSidebar": "Seitenleiste anzeigen",
"update": "Update", "update": "Update",
"upload": "Upload", "upload": "Upload",
"openFile": "Datei öffnen", "openFile": "Datei öffnen"
"discardChanges": "Verwerfen"
}, },
"download": { "download": {
"downloadFile": "Download Datei", "downloadFile": "Download Datei",
"downloadFolder": "Download Ordner", "downloadFolder": "Download Ordner",
"downloadSelected": "Auswahl herunterladen" "downloadSelected": "Auswahl herunterladen"
}, },
"upload": {
"abortUpload": "Sind Sie sicher, dass Sie den Vorgang abbrechen möchten?"
},
"errors": { "errors": {
"forbidden": "Sie haben keine Berechtigung dies abzurufen.", "forbidden": "Sie haben keine Berechtigung dies abzurufen.",
"internal": "Etwas ist schiefgelaufen.", "internal": "Etwas ist schiefgelaufen.",
@ -110,7 +102,6 @@
"deleteMessageMultiple": "Sind Sie sicher, dass Sie {count} Datei(en) löschen möchten?", "deleteMessageMultiple": "Sind Sie sicher, dass Sie {count} Datei(en) löschen möchten?",
"deleteMessageSingle": "Sind Sie sicher, dass Sie diesen Ordner/diese Datei löschen möchten?", "deleteMessageSingle": "Sind Sie sicher, dass Sie diesen Ordner/diese Datei löschen möchten?",
"deleteMessageShare": "Sind Sie sicher, dass Sie diese Freigabe löschen möchten ({path})?", "deleteMessageShare": "Sind Sie sicher, dass Sie diese Freigabe löschen möchten ({path})?",
"deleteUser": "Sind Sie sicher, dass Sie diesen Benutzer löschen möchten?",
"deleteTitle": "Lösche Dateien", "deleteTitle": "Lösche Dateien",
"displayName": "Anzeigename:", "displayName": "Anzeigename:",
"download": "Lade Dateien", "download": "Lade Dateien",
@ -139,9 +130,7 @@
"upload": "Upload", "upload": "Upload",
"uploadFiles": "Upload von {files} Dateien...", "uploadFiles": "Upload von {files} Dateien...",
"uploadMessage": "WĂ€hlen Sie eine Upload-Methode", "uploadMessage": "WĂ€hlen Sie eine Upload-Methode",
"optionalPassword": "Optionales Passwort", "optionalPassword": "Optionales Passwort"
"resolution": "Auflösung",
"discardEditorChanges": "Möchten Sie die vorgenommenen Änderungen wirklich verwerfen?"
}, },
"search": { "search": {
"images": "Bilder", "images": "Bilder",
@ -170,14 +159,10 @@
"commandRunnerHelp": "Hier könne Sie Befehle eintragen, welche bei den benannten Aktionen ausgefĂŒhrt werden. Sie mĂŒssen pro Zeile jeweils einen Befehl eingeben. Die Umgebungsvariable {0} und {1} sind verfĂŒgbar, wobei {0} relative zu {1} ist. FĂŒr mehr Informationen ĂŒber diese Funktion und die verfĂŒgbaren Umgebungsvariablen lesen Sie bitte die {2}.", "commandRunnerHelp": "Hier könne Sie Befehle eintragen, welche bei den benannten Aktionen ausgefĂŒhrt werden. Sie mĂŒssen pro Zeile jeweils einen Befehl eingeben. Die Umgebungsvariable {0} und {1} sind verfĂŒgbar, wobei {0} relative zu {1} ist. FĂŒr mehr Informationen ĂŒber diese Funktion und die verfĂŒgbaren Umgebungsvariablen lesen Sie bitte die {2}.",
"commandsUpdated": "Befehle aktualisiert!", "commandsUpdated": "Befehle aktualisiert!",
"createUserDir": "Automatisches Erstellen des Home-Verzeichnisses beim Anlegen neuer Benutzer", "createUserDir": "Automatisches Erstellen des Home-Verzeichnisses beim Anlegen neuer Benutzer",
"minimumPasswordLength": "Minimum password length",
"tusUploads": "GestĂŒckelter Upload", "tusUploads": "GestĂŒckelter Upload",
"tusUploadsHelp": "File Browser unterstĂŒtzt das Hochladen von gestĂŒckelten Dateien und ermöglicht so einen effizienten, zuverlĂ€ssigen, fortsetzbaren und gestĂŒckelten Datei-Upload auch in unzuverlĂ€ssigen Netzwerken.", "tusUploadsHelp": "File Browser unterstĂŒtzt das Hochladen von gestĂŒckelten Dateien und ermöglicht so einen effizienten, zuverlĂ€ssigen, fortsetzbaren und gestĂŒckelten Datei-Upload auch in unzuverlĂ€ssigen Netzwerken.",
"tusUploadsChunkSize": "Gibt die maximale GrĂ¶ĂŸe pro Anfrage an (direkte Uploads werden fĂŒr kleinere Uploads verwendet). Bitte geben Sie eine Byte-Angabe oder eine Zeichenfolge wie 10 MB, 1 GB usw. an", "tusUploadsChunkSize": "Gibt die maximale GrĂ¶ĂŸe pro Anfrage an (direkte Uploads werden fĂŒr kleinere Uploads verwendet). Bitte geben Sie eine Byte-Angabe oder eine Zeichenfolge wie 10 MB, 1 GB usw. an",
"tusUploadsRetryCount": "Anzahl der Wiederholungsversuche, wenn das Hochladen eines StĂŒckes fehlschlĂ€gt.", "tusUploadsRetryCount": "Anzahl der Wiederholungsversuche, wenn das Hochladen eines StĂŒckes fehlschlĂ€gt.",
"userHomeBasePath": "Basispfad fĂŒr Benutzer-Home-Verzeichnisse",
"userScopeGenerationPlaceholder": "Scope wird automatisch generiert",
"createUserHomeDirectory": "Benutzer-Home-Verzeichnis erstellen",
"customStylesheet": "Individuelles Stylesheet", "customStylesheet": "Individuelles Stylesheet",
"defaultUserDescription": "Das sind die Standardeinstellung fĂŒr Benutzer", "defaultUserDescription": "Das sind die Standardeinstellung fĂŒr Benutzer",
"disableExternalLinks": "Externe Links deaktivieren (außer Dokumentation)", "disableExternalLinks": "Externe Links deaktivieren (außer Dokumentation)",
@ -224,7 +209,6 @@
"shareDeleted": "Freigabe gelöscht!", "shareDeleted": "Freigabe gelöscht!",
"singleClick": "Einfacher Klick zum Öffnen von Dateien und Ordnern", "singleClick": "Einfacher Klick zum Öffnen von Dateien und Ordnern",
"themes": { "themes": {
"default": "Systemstandard",
"dark": "Dunkel", "dark": "Dunkel",
"light": "Hell", "light": "Hell",
"title": "Erscheinungsbild" "title": "Erscheinungsbild"

View File

@ -3,7 +3,6 @@
"cancel": "ΑÎșύρωση", "cancel": "ΑÎșύρωση",
"clear": "ΚαΞαρÎčσΌός", "clear": "ΚαΞαρÎčσΌός",
"close": "ÎšÎ»Î”ÎŻÏƒÎčÎŒÎż", "close": "ÎšÎ»Î”ÎŻÏƒÎčÎŒÎż",
"continue": "Continue",
"copy": "ΑΜτÎčÎłÏÎ±Ï†Îź", "copy": "ΑΜτÎčÎłÏÎ±Ï†Îź",
"copyFile": "ΑΜτÎčÎłÏÎ±Ï†Îź Î±ÏÏ‡Î”ÎŻÎżÏ…", "copyFile": "ΑΜτÎčÎłÏÎ±Ï†Îź Î±ÏÏ‡Î”ÎŻÎżÏ…",
"copyToClipboard": "ΑΜτÎčÎłÏÎ±Ï†Îź ÏƒÏ„Îż πρόχΔÎčÏÎż", "copyToClipboard": "ΑΜτÎčÎłÏÎ±Ï†Îź ÏƒÏ„Îż πρόχΔÎčÏÎż",
@ -13,7 +12,6 @@
"download": "Î›ÎźÏˆÎ·", "download": "Î›ÎźÏˆÎ·",
"file": "Î‘ÏÏ‡Î”ÎŻÎż", "file": "Î‘ÏÏ‡Î”ÎŻÎż",
"folder": "ΊΏÎșÎ”Î»ÎżÏ‚", "folder": "ΊΏÎșÎ”Î»ÎżÏ‚",
"fullScreen": "Toggle full screen",
"hideDotfiles": "ΑπόÎșρυψη ÎșρυφώΜ Î±ÏÏ‡Î”ÎŻÏ‰Îœ", "hideDotfiles": "ΑπόÎșρυψη ÎșρυφώΜ Î±ÏÏ‡Î”ÎŻÏ‰Îœ",
"info": "Î Î»Î·ÏÎżÏ†ÎżÏÎŻÎ”Ï‚", "info": "Î Î»Î·ÏÎżÏ†ÎżÏÎŻÎ”Ï‚",
"more": "ΠΔρÎčσσότΔρα", "more": "ΠΔρÎčσσότΔρα",
@ -24,7 +22,6 @@
"ok": "Î•ÎœÏ„ÎŹÎŸÎ”Îč", "ok": "Î•ÎœÏ„ÎŹÎŸÎ”Îč",
"permalink": "Î›ÎźÏˆÎ· ΌόΜÎčÎŒÎżÏ… ÏƒÏ…ÎœÎŽÎ­ÏƒÎŒÎżÏ…", "permalink": "Î›ÎźÏˆÎ· ΌόΜÎčÎŒÎżÏ… ÏƒÏ…ÎœÎŽÎ­ÏƒÎŒÎżÏ…",
"previous": "Î ÏÎżÎ·ÎłÎżÏÎŒÎ”ÎœÎż", "previous": "Î ÏÎżÎ·ÎłÎżÏÎŒÎ”ÎœÎż",
"preview": "Preview",
"publish": "Î”Î·ÎŒÎżÏƒÎŻÎ”Ï…ÏƒÎ·", "publish": "Î”Î·ÎŒÎżÏƒÎŻÎ”Ï…ÏƒÎ·",
"rename": "ÎœÎ”Ï„ÎżÎœÎżÎŒÎ±ÏƒÎŻÎ±", "rename": "ÎœÎ”Ï„ÎżÎœÎżÎŒÎ±ÏƒÎŻÎ±",
"replace": "ΑΜτÎčÎșÎ±Ï„ÎŹÏƒÏ„Î±ÏƒÎ·", "replace": "ΑΜτÎčÎșÎ±Ï„ÎŹÏƒÏ„Î±ÏƒÎ·",
@ -35,14 +32,12 @@
"select": "ΕπÎčλογΟ", "select": "ΕπÎčλογΟ",
"selectMultiple": "ΕπÎčλογΟ Ï€ÎżÎ»Î»Î±Ï€Î»ÏŽÎœ", "selectMultiple": "ΕπÎčλογΟ Ï€ÎżÎ»Î»Î±Ï€Î»ÏŽÎœ",
"share": "ΚοÎčÎœÎżÏ€ÎżÎŻÎ·ÏƒÎ·", "share": "ΚοÎčÎœÎżÏ€ÎżÎŻÎ·ÏƒÎ·",
"shell": "Toggle shell",
"submit": "Î„Ï€ÎżÎČολΟ", "submit": "Î„Ï€ÎżÎČολΟ",
"switchView": "Î•ÎœÎ±Î»Î»Î±ÎłÎź Ï€ÏÎżÎČÎżÎ»ÎźÏ‚", "switchView": "Î•ÎœÎ±Î»Î»Î±ÎłÎź Ï€ÏÎżÎČÎżÎ»ÎźÏ‚",
"toggleSidebar": "(Απ-)Î”ÎœÎ”ÏÎłÎżÏ€ÎżÎŻÎ·ÏƒÎ·Ï‚ της πλΔυρÎčÎșÎźÏ‚ ÎŒÏ€ÎŹÏÎ±Ï‚", "toggleSidebar": "(Απ-)Î”ÎœÎ”ÏÎłÎżÏ€ÎżÎŻÎ·ÏƒÎ·Ï‚ της πλΔυρÎčÎșÎźÏ‚ ÎŒÏ€ÎŹÏÎ±Ï‚",
"update": "ΕΜηΌέρωση", "update": "ΕΜηΌέρωση",
"upload": "ΜΔταφόρτωση", "upload": "ΜΔταφόρτωση",
"openFile": "Î†ÎœÎżÎčÎłÎŒÎ± Î±ÏÏ‡Î”ÎŻÎżÏ…", "openFile": "Î†ÎœÎżÎčÎłÎŒÎ± Î±ÏÏ‡Î”ÎŻÎżÏ…"
"discardChanges": "Discard"
}, },
"download": { "download": {
"downloadFile": "Î›ÎźÏˆÎ· Î±ÏÏ‡Î”ÎŻÎżÏ…", "downloadFile": "Î›ÎźÏˆÎ· Î±ÏÏ‡Î”ÎŻÎżÏ…",
@ -106,11 +101,9 @@
"prompts": { "prompts": {
"copy": "ΑΜτÎčÎłÏÎ±Ï†Îź", "copy": "ΑΜτÎčÎłÏÎ±Ï†Îź",
"copyMessage": "ΕπÎčλέΟτΔ Ï„ÎżÏ€ÎżÎžÎ”ÏƒÎŻÎ± ÎłÎčα αΜτÎčÎłÏÎ±Ï†Îź τωΜ Î±ÏÏ‡Î”ÎŻÏ‰Îœ σας:", "copyMessage": "ΕπÎčλέΟτΔ Ï„ÎżÏ€ÎżÎžÎ”ÏƒÎŻÎ± ÎłÎčα αΜτÎčÎłÏÎ±Ï†Îź τωΜ Î±ÏÏ‡Î”ÎŻÏ‰Îœ σας:",
"currentlyNavigating": "Currently navigating on:",
"deleteMessageMultiple": "Î•ÎŻÏƒÏ„Î” ÏƒÎŻÎłÎżÏ…ÏÎżÎč ότÎč ΞέλΔτΔ Μα ÎŽÎčÎ±ÎłÏÎŹÏˆÎ”Ï„Î” {count} Î±ÏÏ‡Î”ÎŻÎ±;", "deleteMessageMultiple": "Î•ÎŻÏƒÏ„Î” ÏƒÎŻÎłÎżÏ…ÏÎżÎč ότÎč ΞέλΔτΔ Μα ÎŽÎčÎ±ÎłÏÎŹÏˆÎ”Ï„Î” {count} Î±ÏÏ‡Î”ÎŻÎ±;",
"deleteMessageSingle": "Î•ÎŻÏƒÏ„Î” ÏƒÎŻÎłÎżÏ…ÏÎżÎč ότÎč ΞέλΔτΔ Μα ÎŽÎčÎ±ÎłÏÎŹÏˆÎ”Ï„Î” αυτό Ï„Îż Î±ÏÏ‡Î”ÎŻÎż/Ï†ÎŹÎșΔλο;", "deleteMessageSingle": "Î•ÎŻÏƒÏ„Î” ÏƒÎŻÎłÎżÏ…ÏÎżÎč ότÎč ΞέλΔτΔ Μα ÎŽÎčÎ±ÎłÏÎŹÏˆÎ”Ï„Î” αυτό Ï„Îż Î±ÏÏ‡Î”ÎŻÎż/Ï†ÎŹÎșΔλο;",
"deleteMessageShare": "Î•ÎŻÏƒÏ„Î” ÏƒÎŻÎłÎżÏ…ÏÎżÎč ότÎč ΞέλΔτΔ Μα ÎŽÎčÎ±ÎłÏÎŹÏˆÎ”Ï„Î” Î±Ï…Ï„Îź τηΜ ÎșÎżÎčÎœÎżÏ€ÎżÎŻÎ·ÏƒÎ· ({path});", "deleteMessageShare": "Î•ÎŻÏƒÏ„Î” ÏƒÎŻÎłÎżÏ…ÏÎżÎč ότÎč ΞέλΔτΔ Μα ÎŽÎčÎ±ÎłÏÎŹÏˆÎ”Ï„Î” Î±Ï…Ï„Îź τηΜ ÎșÎżÎčÎœÎżÏ€ÎżÎŻÎ·ÏƒÎ· ({path});",
"deleteUser": "Are you sure you want to delete this user?",
"deleteTitle": "ΔÎčÎ±ÎłÏÎ±Ï†Îź Î±ÏÏ‡Î”ÎŻÏ‰Îœ", "deleteTitle": "ΔÎčÎ±ÎłÏÎ±Ï†Îź Î±ÏÏ‡Î”ÎŻÏ‰Îœ",
"displayName": "Î•ÎŒÏ†ÎŹÎœÎčση ÎżÎœÏŒÎŒÎ±Ï„ÎżÏ‚:", "displayName": "Î•ÎŒÏ†ÎŹÎœÎčση ÎżÎœÏŒÎŒÎ±Ï„ÎżÏ‚:",
"download": "Î›ÎźÏˆÎ· Î±ÏÏ‡Î”ÎŻÏ‰Îœ", "download": "Î›ÎźÏˆÎ· Î±ÏÏ‡Î”ÎŻÏ‰Îœ",
@ -139,9 +132,7 @@
"upload": "ΜΔταφόρτωση", "upload": "ΜΔταφόρτωση",
"uploadFiles": "ΜΔταφόρτωση {files} Î±ÏÏ‡Î”ÎŻÏ‰Îœâ€Š", "uploadFiles": "ΜΔταφόρτωση {files} Î±ÏÏ‡Î”ÎŻÏ‰Îœâ€Š",
"uploadMessage": "ΕπÎčλέΟτΔ ÎŒÎčα ΔπÎčλογΟ ÎłÎčα τη ΌΔταφόρτωση.", "uploadMessage": "ΕπÎčλέΟτΔ ÎŒÎčα ΔπÎčλογΟ ÎłÎčα τη ΌΔταφόρτωση.",
"optionalPassword": "Î ÏÎżÎ±ÎčρΔτÎčÎșός ÎșωΎÎčÎșός πρόσÎČασης", "optionalPassword": "Î ÏÎżÎ±ÎčρΔτÎčÎșός ÎșωΎÎčÎșός πρόσÎČασης"
"resolution": "Resolution",
"discardEditorChanges": "Are you sure you wish to discard the changes you've made?"
}, },
"search": { "search": {
"images": "ΕÎčÎșόΜΔς", "images": "ΕÎčÎșόΜΔς",
@ -170,7 +161,6 @@
"commandRunnerHelp": "ΕΎώ ÎŒÏ€ÎżÏÎ”ÎŻÏ„Î” Μα ÎżÏÎŻÏƒÎ”Ï„Î” Î”ÎœÏ„ÎżÎ»Î­Ï‚ Ï€ÎżÏ… ΔÎșÏ„Î”Î»ÎżÏÎœÏ„Î±Îč στα ÎżÎœÎżÎŒÎ±ÏƒÎŒÎ­ÎœÎ± ÎłÎ”ÎłÎżÎœÏŒÏ„Î± ÎșαÎč ΎραστηρÎčότητΔς. ΠρέπΔÎč Μα ÎłÏÎŹÏˆÎ”Ï„Î” ÎŒÎŻÎ± Î”ÎœÏ„ÎżÎ»Îź Î±ÎœÎŹ ÎłÏÎ±ÎŒÎŒÎź. ΟÎč ΌΔταÎČλητές πΔρÎčÎČÎŹÎ»Î»ÎżÎœÏ„ÎżÏ‚ {0} ÎșαÎč {1} Ξα Î”ÎŻÎœÎ±Îč ÎŽÎčαΞέσÎčΌΔς, ÎșαÎč Ξα Î”ÎŻÎœÎ±Îč {0} σχΔτÎčÎșές ΌΔ Ï„Îż {1}. ΓÎčα πΔρÎčσσότΔρΔς Ï€Î»Î·ÏÎżÏ†ÎżÏÎŻÎ”Ï‚ σχΔτÎčÎșÎŹ ΌΔ Î±Ï…Ï„Îź τη λΔÎčÏ„ÎżÏ…ÏÎłÎŻÎ± ÎșαÎč τÎčς ÎŽÎčαΞέσÎčΌΔς ΌΔταÎČλητές πΔρÎčÎČÎŹÎ»Î»ÎżÎœÏ„ÎżÏ‚, παραÎșαλώ ÎŽÎčαÎČÎŹÏƒÏ„Î” Ï„Îż {2}.", "commandRunnerHelp": "ΕΎώ ÎŒÏ€ÎżÏÎ”ÎŻÏ„Î” Μα ÎżÏÎŻÏƒÎ”Ï„Î” Î”ÎœÏ„ÎżÎ»Î­Ï‚ Ï€ÎżÏ… ΔÎșÏ„Î”Î»ÎżÏÎœÏ„Î±Îč στα ÎżÎœÎżÎŒÎ±ÏƒÎŒÎ­ÎœÎ± ÎłÎ”ÎłÎżÎœÏŒÏ„Î± ÎșαÎč ΎραστηρÎčότητΔς. ΠρέπΔÎč Μα ÎłÏÎŹÏˆÎ”Ï„Î” ÎŒÎŻÎ± Î”ÎœÏ„ÎżÎ»Îź Î±ÎœÎŹ ÎłÏÎ±ÎŒÎŒÎź. ΟÎč ΌΔταÎČλητές πΔρÎčÎČÎŹÎ»Î»ÎżÎœÏ„ÎżÏ‚ {0} ÎșαÎč {1} Ξα Î”ÎŻÎœÎ±Îč ÎŽÎčαΞέσÎčΌΔς, ÎșαÎč Ξα Î”ÎŻÎœÎ±Îč {0} σχΔτÎčÎșές ΌΔ Ï„Îż {1}. ΓÎčα πΔρÎčσσότΔρΔς Ï€Î»Î·ÏÎżÏ†ÎżÏÎŻÎ”Ï‚ σχΔτÎčÎșÎŹ ΌΔ Î±Ï…Ï„Îź τη λΔÎčÏ„ÎżÏ…ÏÎłÎŻÎ± ÎșαÎč τÎčς ÎŽÎčαΞέσÎčΌΔς ΌΔταÎČλητές πΔρÎčÎČÎŹÎ»Î»ÎżÎœÏ„ÎżÏ‚, παραÎșαλώ ÎŽÎčαÎČÎŹÏƒÏ„Î” Ï„Îż {2}.",
"commandsUpdated": "ΟÎč Î”ÎœÏ„ÎżÎ»Î­Ï‚ ΔΜηΌΔρώΞηÎșαΜ!", "commandsUpdated": "ΟÎč Î”ÎœÏ„ÎżÎ»Î­Ï‚ ΔΜηΌΔρώΞηÎșαΜ!",
"createUserDir": "ΑυτόΌατη ΎηΌÎčÎżÏ…ÏÎłÎŻÎ± φαÎșÎ­Î»ÎżÏ… Ï‡ÏÎźÏƒÏ„Î· ÎșÎ±Ï„ÎŹ τηΜ Ï€ÏÎżÏƒÎžÎźÎșη ÎœÎ­ÎżÏ… Ï‡ÏÎźÏƒÏ„Î·", "createUserDir": "ΑυτόΌατη ΎηΌÎčÎżÏ…ÏÎłÎŻÎ± φαÎșÎ­Î»ÎżÏ… Ï‡ÏÎźÏƒÏ„Î· ÎșÎ±Ï„ÎŹ τηΜ Ï€ÏÎżÏƒÎžÎźÎșη ÎœÎ­ÎżÏ… Ï‡ÏÎźÏƒÏ„Î·",
"minimumPasswordLength": "Minimum password length",
"tusUploads": "΀ΌηΌατÎčÎșές ÎŒÎ”Ï„Î±Ï†ÎżÏÎ­Ï‚ Î±ÏÏ‡Î”ÎŻÏ‰Îœ", "tusUploads": "΀ΌηΌατÎčÎșές ÎŒÎ”Ï„Î±Ï†ÎżÏÎ­Ï‚ Î±ÏÏ‡Î”ÎŻÏ‰Îœ",
"tusUploadsHelp": "Η Î”Ï†Î±ÏÎŒÎżÎłÎź File Browser Ï…Ï€ÎżÏƒÏ„Î·ÏÎŻÎ¶Î”Îč τΌηΌατÎčÎșές ÎŒÎ”Ï„Î±Ï†ÎżÏÏ„ÏŽÏƒÎ”Îčς Î±ÏÏ‡Î”ÎŻÏ‰Îœ, ΔπÎčÏ„ÏÎ­Ï€ÎżÎœÏ„Î±Ï‚ τηΜ Î±Ï€ÎżÎŽÎżÏ„ÎčÎșÎź, αΟÎčόπÎčστη ÎșαÎč συΜΔχÎčζόΌΔΜη ΌΔταφόρτωση Î±ÏÏ‡Î”ÎŻÏ‰Îœ αÎșόΌα ÎșαÎč σΔ Î±ÏƒÏ„Î±ÎžÎ”ÎŻÏ‚ συΜΎέσΔÎčς ÎŽÎčÎșÏ„ÏÎżÏ….", "tusUploadsHelp": "Η Î”Ï†Î±ÏÎŒÎżÎłÎź File Browser Ï…Ï€ÎżÏƒÏ„Î·ÏÎŻÎ¶Î”Îč τΌηΌατÎčÎșές ÎŒÎ”Ï„Î±Ï†ÎżÏÏ„ÏŽÏƒÎ”Îčς Î±ÏÏ‡Î”ÎŻÏ‰Îœ, ΔπÎčÏ„ÏÎ­Ï€ÎżÎœÏ„Î±Ï‚ τηΜ Î±Ï€ÎżÎŽÎżÏ„ÎčÎșÎź, αΟÎčόπÎčστη ÎșαÎč συΜΔχÎčζόΌΔΜη ΌΔταφόρτωση Î±ÏÏ‡Î”ÎŻÏ‰Îœ αÎșόΌα ÎșαÎč σΔ Î±ÏƒÏ„Î±ÎžÎ”ÎŻÏ‚ συΜΎέσΔÎčς ÎŽÎčÎșÏ„ÏÎżÏ….",
"tusUploadsChunkSize": "Î„Ï€ÎżÎŽÎ”ÎčÎșΜύΔÎč Ï„Îż ÎŒÎ­ÎłÎčÏƒÏ„Îż ÎŒÎ­ÎłÎ”ÎžÎżÏ‚ ΔΜός αÎčÏ„ÎźÎŒÎ±Ï„ÎżÏ‚ ΌΔταφόρτωσης (ÎłÎčα ÎŒÎčÎșρότΔρΔς ÎŒÎ”Ï„Î±Ï†ÎżÏÎ­Ï‚ Î±ÏÏ‡Î”ÎŻÏ‰Îœ Ξα χρησÎčÎŒÎżÏ€ÎżÎčÎ·ÎžÎżÏÎœ Î±Ï€Î”Ï…ÎžÎ”ÎŻÎ±Ï‚ ÎșαÎč όχÎč τΌηΌατÎčÎșές ÎŒÎ”Ï„Î±Ï†ÎżÏÏ„ÏŽÏƒÎ”Îčς). ÎœÏ€ÎżÏÎ”ÎŻÏ„Î” Μα ΔÎčÏƒÎŹÎłÎ”Ï„Î” έΜαΜ αÎșέραÎčÎż αρÎčΞΌό Ï€ÎżÏ… Ï…Ï€ÎżÎŽÎ·Î»ÏŽÎœÎ”Îč Ï„Îż ÎŒÎ­ÎłÎ”ÎžÎżÏ‚ σΔ bytes, Îź ÎșÎ”ÎŻÎŒÎ”ÎœÎż ΌΔ αρÎčΞΌό ÎșαÎč ÎŒÎżÎœÎŹÎŽÎ± Όέτρησης ÎŒÎ”ÎłÎ­ÎžÎżÏ…Ï‚ ÎŽÎ”ÎŽÎżÎŒÎ­ÎœÏ‰Îœ, όπως 10MB, 1GB Îșλπ.", "tusUploadsChunkSize": "Î„Ï€ÎżÎŽÎ”ÎčÎșΜύΔÎč Ï„Îż ÎŒÎ­ÎłÎčÏƒÏ„Îż ÎŒÎ­ÎłÎ”ÎžÎżÏ‚ ΔΜός αÎčÏ„ÎźÎŒÎ±Ï„ÎżÏ‚ ΌΔταφόρτωσης (ÎłÎčα ÎŒÎčÎșρότΔρΔς ÎŒÎ”Ï„Î±Ï†ÎżÏÎ­Ï‚ Î±ÏÏ‡Î”ÎŻÏ‰Îœ Ξα χρησÎčÎŒÎżÏ€ÎżÎčÎ·ÎžÎżÏÎœ Î±Ï€Î”Ï…ÎžÎ”ÎŻÎ±Ï‚ ÎșαÎč όχÎč τΌηΌατÎčÎșές ÎŒÎ”Ï„Î±Ï†ÎżÏÏ„ÏŽÏƒÎ”Îčς). ÎœÏ€ÎżÏÎ”ÎŻÏ„Î” Μα ΔÎčÏƒÎŹÎłÎ”Ï„Î” έΜαΜ αÎșέραÎčÎż αρÎčΞΌό Ï€ÎżÏ… Ï…Ï€ÎżÎŽÎ·Î»ÏŽÎœÎ”Îč Ï„Îż ÎŒÎ­ÎłÎ”ÎžÎżÏ‚ σΔ bytes, Îź ÎșÎ”ÎŻÎŒÎ”ÎœÎż ΌΔ αρÎčΞΌό ÎșαÎč ÎŒÎżÎœÎŹÎŽÎ± Όέτρησης ÎŒÎ”ÎłÎ­ÎžÎżÏ…Ï‚ ÎŽÎ”ÎŽÎżÎŒÎ­ÎœÏ‰Îœ, όπως 10MB, 1GB Îșλπ.",
@ -224,7 +214,6 @@
"shareDeleted": "Η ÎșÎżÎčÎœÎżÏ€ÎżÎŻÎ·ÏƒÎ· ÎŽÎčÎ±ÎłÏÎŹÏ†Î·ÎșΔ!", "shareDeleted": "Η ÎșÎżÎčÎœÎżÏ€ÎżÎŻÎ·ÏƒÎ· ÎŽÎčÎ±ÎłÏÎŹÏ†Î·ÎșΔ!",
"singleClick": "Î§ÏÎźÏƒÎ· ÎŒÎżÎœÎżÏ ÎșλÎčÎș ÎłÎčα Μα Î±ÎœÎżÎŻÎŸÎ”Ï„Î” Î±ÏÏ‡Î”ÎŻÎ± ÎșαÎč φαÎșÎ­Î»ÎżÏ…Ï‚", "singleClick": "Î§ÏÎźÏƒÎ· ÎŒÎżÎœÎżÏ ÎșλÎčÎș ÎłÎčα Μα Î±ÎœÎżÎŻÎŸÎ”Ï„Î” Î±ÏÏ‡Î”ÎŻÎ± ÎșαÎč φαÎșÎ­Î»ÎżÏ…Ï‚",
"themes": { "themes": {
"default": "System default",
"dark": "ÎŁÎșÎżÏ„Î”ÎčΜό", "dark": "ÎŁÎșÎżÏ„Î”ÎčΜό",
"light": "ΊωτΔÎčΜό", "light": "ΊωτΔÎčΜό",
"title": "ÎœÎżÏ„ÎŻÎČÎż" "title": "ÎœÎżÏ„ÎŻÎČÎż"

View File

@ -170,7 +170,6 @@
"commandRunnerHelp": "Here you can set commands that are executed in the named events. You must write one per line. The environment variables {0} and {1} will be available, being {0} relative to {1}. For more information about this feature and the available environment variables, please read the {2}.", "commandRunnerHelp": "Here you can set commands that are executed in the named events. You must write one per line. The environment variables {0} and {1} will be available, being {0} relative to {1}. For more information about this feature and the available environment variables, please read the {2}.",
"commandsUpdated": "Commands updated!", "commandsUpdated": "Commands updated!",
"createUserDir": "Auto create user home dir while adding new user", "createUserDir": "Auto create user home dir while adding new user",
"minimumPasswordLength": "Minimum password length",
"tusUploads": "Chunked Uploads", "tusUploads": "Chunked Uploads",
"tusUploadsHelp": "File Browser supports chunked file uploads, allowing for the creation of efficient, reliable, resumable and chunked file uploads even on unreliable networks.", "tusUploadsHelp": "File Browser supports chunked file uploads, allowing for the creation of efficient, reliable, resumable and chunked file uploads even on unreliable networks.",
"tusUploadsChunkSize": "Indicates to maximum size of a request (direct uploads will be used for smaller uploads). You may input a plain integer denoting byte size input or a string like 10MB, 1GB etc.", "tusUploadsChunkSize": "Indicates to maximum size of a request (direct uploads will be used for smaller uploads). You may input a plain integer denoting byte size input or a string like 10MB, 1GB etc.",

View File

@ -7,13 +7,11 @@
"copy": "Copiar", "copy": "Copiar",
"copyFile": "Copiar archivo", "copyFile": "Copiar archivo",
"copyToClipboard": "Copiar al portapapeles", "copyToClipboard": "Copiar al portapapeles",
"copyDownloadLinkToClipboard": "Copy download link to clipboard",
"create": "Crear", "create": "Crear",
"delete": "Borrar", "delete": "Borrar",
"download": "Descargar", "download": "Descargar",
"file": "Archivo", "file": "Archivo",
"folder": "Carpeta", "folder": "Carpeta",
"fullScreen": "Toggle full screen",
"hideDotfiles": "Ocultar archivos empezados por punto", "hideDotfiles": "Ocultar archivos empezados por punto",
"info": "Info", "info": "Info",
"more": "MĂĄs", "more": "MĂĄs",
@ -24,7 +22,6 @@
"ok": "OK", "ok": "OK",
"permalink": "Link permanente", "permalink": "Link permanente",
"previous": "Anterior", "previous": "Anterior",
"preview": "Preview",
"publish": "Publicar", "publish": "Publicar",
"rename": "Renombrar", "rename": "Renombrar",
"replace": "Reemplazar", "replace": "Reemplazar",
@ -41,17 +38,13 @@
"toggleSidebar": "Mostrar/Ocultar menĂș", "toggleSidebar": "Mostrar/Ocultar menĂș",
"update": "Actualizar", "update": "Actualizar",
"upload": "Subir", "upload": "Subir",
"openFile": "Abrir archivo", "openFile": "Abrir archivo"
"discardChanges": "Discard"
}, },
"download": { "download": {
"downloadFile": "Descargar fichero", "downloadFile": "Descargar fichero",
"downloadFolder": "Descargar directorio", "downloadFolder": "Descargar directorio",
"downloadSelected": "Descargar seleccionados" "downloadSelected": "Descargar seleccionados"
}, },
"upload": {
"abortUpload": "Are you sure you wish to abort?"
},
"errors": { "errors": {
"forbidden": "No tienes los permisos necesarios para acceder.", "forbidden": "No tienes los permisos necesarios para acceder.",
"internal": "La verdad es que algo ha ido mal.", "internal": "La verdad es que algo ha ido mal.",
@ -110,7 +103,6 @@
"deleteMessageMultiple": "ÂżEstĂĄs seguro que quieres eliminar {count} archivo(s)?", "deleteMessageMultiple": "ÂżEstĂĄs seguro que quieres eliminar {count} archivo(s)?",
"deleteMessageSingle": "ÂżEstĂĄs seguro que quieres eliminar este archivo/carpeta?", "deleteMessageSingle": "ÂżEstĂĄs seguro que quieres eliminar este archivo/carpeta?",
"deleteMessageShare": "ÂżEstĂĄ seguro de que quiere eliminar este recurso compartido({path})?", "deleteMessageShare": "ÂżEstĂĄ seguro de que quiere eliminar este recurso compartido({path})?",
"deleteUser": "Are you sure you want to delete this user?",
"deleteTitle": "Borrar archivos", "deleteTitle": "Borrar archivos",
"displayName": "Nombre:", "displayName": "Nombre:",
"download": "Descargar archivos", "download": "Descargar archivos",
@ -139,9 +131,7 @@
"upload": "Subir", "upload": "Subir",
"uploadFiles": "Subiendo {files} archivos...", "uploadFiles": "Subiendo {files} archivos...",
"uploadMessage": "Seleccione una opciĂłn para subir.", "uploadMessage": "Seleccione una opciĂłn para subir.",
"optionalPassword": "Contraseña opcional", "optionalPassword": "Contraseña opcional"
"resolution": "Resolution",
"discardEditorChanges": "Are you sure you wish to discard the changes you've made?"
}, },
"search": { "search": {
"images": "ImĂĄgenes", "images": "ImĂĄgenes",
@ -170,11 +160,6 @@
"commandRunnerHelp": "AquĂ­ puede establecer los comandos que se ejecutan en los eventos nombrados. Debe escribir uno por lĂ­nea. Las variables de entorno {0} y {1} estarĂĄn disponibles, siendo {0} relativa a {1}. Para mĂĄs informaciĂłn sobre esta caracterĂ­stica y las variables de entorno disponibles, por favor lea el {2}.", "commandRunnerHelp": "AquĂ­ puede establecer los comandos que se ejecutan en los eventos nombrados. Debe escribir uno por lĂ­nea. Las variables de entorno {0} y {1} estarĂĄn disponibles, siendo {0} relativa a {1}. Para mĂĄs informaciĂłn sobre esta caracterĂ­stica y las variables de entorno disponibles, por favor lea el {2}.",
"commandsUpdated": "ÂĄComandos actualizados!", "commandsUpdated": "ÂĄComandos actualizados!",
"createUserDir": "Crea automaticamente una carpeta de inicio cuando se agrega un usuario", "createUserDir": "Crea automaticamente una carpeta de inicio cuando se agrega un usuario",
"minimumPasswordLength": "Minimum password length",
"tusUploads": "Chunked Uploads",
"tusUploadsHelp": "File Browser supports chunked file uploads, allowing for the creation of efficient, reliable, resumable and chunked file uploads even on unreliable networks.",
"tusUploadsChunkSize": "Indicates to maximum size of a request (direct uploads will be used for smaller uploads). You may input a plain integer denoting byte size input or a string like 10MB, 1GB etc.",
"tusUploadsRetryCount": "Number of retries to perform if a chunk fails to upload.",
"userHomeBasePath": "Ruta base para los directorios personales de los usuarios", "userHomeBasePath": "Ruta base para los directorios personales de los usuarios",
"userScopeGenerationPlaceholder": "El ĂĄmbito se generarĂĄ automĂĄticamente", "userScopeGenerationPlaceholder": "El ĂĄmbito se generarĂĄ automĂĄticamente",
"createUserHomeDirectory": "Crear el directorio principal del usuario", "createUserHomeDirectory": "Crear el directorio principal del usuario",
@ -224,7 +209,6 @@
"shareDeleted": "ÂĄRecurso compartido eliminado!", "shareDeleted": "ÂĄRecurso compartido eliminado!",
"singleClick": "Utilice un solo clic para abrir archivos y directorios", "singleClick": "Utilice un solo clic para abrir archivos y directorios",
"themes": { "themes": {
"default": "System default",
"dark": "Oscuro", "dark": "Oscuro",
"light": "Claro", "light": "Claro",
"title": "Tema" "title": "Tema"

View File

@ -1,266 +0,0 @@
{
"buttons": {
"cancel": "لŰșو",
"clear": "ÙŸŰ§Ú© Ú©Ű±ŰŻÙ†",
"close": "ۚ۳ŰȘن",
"continue": "Ű§ŰŻŰ§Ù…Ù‡",
"copy": "کٟی",
"copyFile": "Ú©ÙŸÛŒ ÙŰ§ÛŒÙ„",
"copyToClipboard": "Ú©ÙŸÛŒ ŰšÙ‡ Ű­Ű§ÙŰžÙ‡",
"copyDownloadLinkToClipboard": "Ú©ÙŸÛŒ ۹ۯ۱۳ ŰšÙ‡ Ű­Ű§ÙŰžÙ‡",
"create": "Ű§ÛŒŰŹŰ§ŰŻ",
"delete": "Ű­Ű°Ù",
"download": "ŰŻŰ§Ù†Ù„ÙˆŰŻ",
"file": "ÙŰ§ÛŒÙ„",
"folder": "ÙŸÙˆŰŽÙ‡",
"fullScreen": "ŰȘÙ…Ű§Ù… Ű”ÙŰ­Ù‡ ",
"hideDotfiles": "Ù…ŰźÙÛŒ Ú©Ű±ŰŻÙ† ۯۧŰȘ ÙŰ§ÛŒÙ„Ù‡Ű§",
"info": "Ű§Ű·Ù„Ű§ŰčۧŰȘ",
"more": "ŰšÛŒŰŽŰȘ۱",
"move": "Ű§Ù†ŰȘÙ‚Ű§Ù„",
"moveFile": "Ű§Ù†ŰȘÙ‚Ű§Ù„ ÙŰ§ÛŒÙ„",
"new": "ŰŹŰŻÛŒŰŻ",
"next": "ŰšŰčŰŻÛŒ",
"ok": "ŰȘŰ§ÛŒÛŒŰŻ",
"permalink": "ŰŻŰ±ÛŒŰ§ÙŰȘ لینک ŰŻŰ§ŰŠÙ…ÛŒ",
"previous": "Ù‚ŰšÙ„ÛŒ",
"preview": "Ù†Ù…Ű§ÛŒŰŽ",
"publish": "Ű§Ù†ŰȘێۧ۱",
"rename": "ŰȘŰșÛŒÛŒŰ± Ù†Ű§Ù…",
"replace": "ŰŹŰ§ÛŒÚŻŰČین",
"reportIssue": "ÚŻŰČۧ۱ێ Ù…ŰŽÚ©Ù„",
"save": "Ű°ŰźÛŒŰ±Ù‡",
"schedule": "ŰČÙ…Ű§Ù† ŰšÙ†ŰŻÛŒ",
"search": "ŰŹŰłŰȘŰŹÙˆ",
"select": "Ű§Ù†ŰȘ۟ۧۚ",
"selectMultiple": "Ű§Ù†ŰȘ۟ۧۚ Ú†Ù†ŰŻŰȘŰ§ÛŒÛŒ",
"share": "ۧێŰȘ۱ۧک ÚŻŰ°Ű§Ű±ÛŒ",
"shell": "ŰȘŰșÛŒÛŒŰ± ÙŸÙˆŰłŰȘه",
"submit": "۫ۚŰȘ",
"switchView": "ŰȘŰșÛŒÛŒŰ± Ù†Ù…Ű§ÛŒŰŽ",
"toggleSidebar": "ŰȘŰșÛŒÛŒŰ± Ù†ÙˆŰ§Ű±Ú©Ù†Ű§Ű±ÛŒ",
"update": "ŰšÙ‡ Ű±ÙˆŰČ ŰłŰ§Ù†ÛŒ",
"upload": "ŰąÙŸÙ„ÙˆŰŻ",
"openFile": "ۚۧŰČ Ú©Ű±ŰŻÙ† ÙŰ§ÛŒÙ„",
"discardChanges": "لŰșو Ú©Ű±ŰŻÙ†"
},
"download": {
"downloadFile": "ŰŻŰ§Ù†Ù„ÙˆŰŻ ÙŰ§ÛŒÙ„",
"downloadFolder": "ŰŻŰ§Ù†Ù„ÙˆŰŻ ÙŸÙˆŰŽÙ‡",
"downloadSelected": "ŰŻŰ§Ù†Ù„ÙˆŰŻ Ű§Ù†ŰȘ۟ۧۚ ŰŽŰŻÙ‡ Ù‡Ű§"
},
"upload": {
"abortUpload": "ŰąÛŒŰ§ Ù…Ű·Ù…ŰŠÙ† Ù‡ŰłŰȘÛŒŰŻ که Ù…ÛŒŰźÙˆŰ§Ù‡ÛŒŰŻ لŰșو Ú©Ù†ÛŒŰŻŰŸ"
},
"errors": {
"forbidden": "ŰŽÙ…Ű§ Ù…ŰŹÙˆŰČ ŰŻŰłŰȘŰ±ŰłÛŒ ŰšÙ‡ Ű§ÛŒÙ† ۱ۧ Ù†ŰŻŰ§Ű±ÛŒŰŻ.",
"internal": "ۧێŰȘŰšŰ§Ù‡ÛŒ ۧŰȘÙŰ§Ù‚ Ű§ÙŰȘŰ§ŰŻÙ‡ ۧ۳ŰȘ",
"notFound": "Ű§ÛŒÙ† Ù…Ű­Ù„ Ù‚Ű§ŰšÙ„ ŰŻŰłŰȘŰ±ŰłÛŒ Ù†ÛŒŰłŰȘ",
"connection": "ŰłŰ±ÙˆŰ± Ù‚Ű§ŰšÙ„ ŰŻŰłŰȘŰ±ŰłÛŒ Ù†ÛŒŰłŰȘ"
},
"files": {
"body": "ŰšŰŻÙ†Ù‡",
"closePreview": "ۚ۳ŰȘن Ù†Ù…Ű§ÛŒŰŽ",
"files": "ÙŰ§ÛŒÙ„ Ù‡Ű§",
"folders": "ÙŸÙˆŰŽÙ‡ Ù‡Ű§",
"home": "Ű”ÙŰ­Ù‡ Ű§Ű”Ù„ÛŒ",
"lastModified": "ŰąŰźŰ±ÛŒÙ† ÙˆÛŒŰ±Ű§ÛŒŰŽ",
"loading": "ۯ۱ Ű­Ű§Ù„ ŰšŰ§Ű±ÚŻŰ°Ű§Ű±ÛŒ...",
"lonely": "It feels lonely here...",
"metadata": "ÙŰ±Ű§ŰŻŰ§ŰŻÙ‡",
"multipleSelectionEnabled": "فŰčŰ§Ù„ ŰšÙˆŰŻÙ† Ú†Ù†ŰŻ ÚŻŰČینه Ű§ÛŒ",
"name": "Ù†Ű§Ù…",
"size": "Ű§Ù†ŰŻŰ§ŰČه",
"sortByLastModified": "Ù…Ű±ŰȘŰš ۳ۧŰČی ŰąŰźŰ±ÛŒÙ† ÙˆÛŒŰ±Ű§ÛŒŰŽ",
"sortByName": "Ù…Ű±ŰȘŰš ۳ۧŰČی Ù†Ű§Ù…",
"sortBySize": "Ù…Ű±ŰȘŰš ۳ۧŰČی Ű§Ù†ŰŻŰ§ŰČه",
"noPreview": "Ű§ÛŒÙ† ÙŰ§ÛŒÙ„ Ù‚Ű§ŰšÙ„ Ù†Ù…Ű§ÛŒŰŽ Ù†ÛŒŰłŰȘ"
},
"help": {
"click": "Ű§Ù†ŰȘ۟ۧۚ ÙŰ§ÛŒÙ„ ÛŒŰ§ ÙŸÙˆŰŽÙ‡",
"ctrl": {
"click": "Ű§Ù†ŰȘ۟ۧۚ Ú†Ù†ŰŻ ÙŰ§ÛŒÙ„ ÛŒŰ§ ÙŸÙˆŰŽÙ‡",
"f": "ۚۧŰČ Ú©Ű±ŰŻÙ† ŰŹŰłŰȘŰŹÙˆ",
"s": "Ű°ŰźÛŒŰ±Ù‡ یک ÙŰ§ÛŒÙ„ ÛŒŰ§ ŰŻŰ§Ù†Ù„ÙˆŰŻ ÙŸÙˆŰŽÙ‡ ŰŹŰ§Ű±ÛŒ"
},
"del": "Ű­Ű°Ù ÚŻŰČینه Ű§Ù†ŰȘŰźŰ§ŰšÛŒ ",
"doubleClick": "ۚۧŰČ Ú©Ű±ŰŻÙ† ÙŰ§ÛŒÙ„ ÛŒŰ§ ÙŸÙˆŰŽÙ‡",
"esc": "لŰșو Ű§Ù†ŰȘ۟ۧۚ و/ÛŒŰ§ ۚ۳ŰȘن ÙŸÛŒŰșŰ§Ù…",
"f1": "Ű§ÛŒÙ† Ű§Ű·Ù„Ű§ŰčۧŰȘ",
"f2": "ŰȘŰșÛŒÛŒŰ± Ù†Ű§Ù… ÙŰ§ÛŒÙ„",
"help": "Ű±Ű§Ù‡Ù†Ù…Ű§"
},
"login": {
"createAnAccount": "Ű§ÛŒŰŹŰ§ŰŻ کۧ۱ۚ۱",
"loginInstead": "کۧ۱ۚ۱ ŰȘÚ©Ű±Ű§Ű±ÛŒ",
"password": "Ű±Ù…ŰČ ŰčŰšÙˆŰ±",
"passwordConfirm": "ŰȘŰ§ÛŒÛŒŰŻ Ű±Ù…ŰČ",
"passwordsDontMatch": "ŰčŰŻÙ… ŰȘŰ·Ű§ŰšÙ‚ Ű±Ù…ŰČÙ‡Ű§",
"signup": "۫ۚŰȘ Ù†Ű§Ù…",
"submit": "ÙˆŰ±ÙˆŰŻ",
"username": "Ù†Ű§Ù… Ú©Ű§Ű±ŰšŰ±ÛŒ",
"usernameTaken": "Ù†Ű§Ù… Ú©Ű§Ű±ŰšŰ±ÛŒ ŰȘÚ©Ű±Ű§Ű±ÛŒ",
"wrongCredentials": "۟۷ۧ ۯ۱ ۧŰčŰȘŰšŰ§Ű±ŰłÙ†ŰŹÛŒ"
},
"permanent": "ŰŻŰ§ŰŠÙ…ÛŒ",
"prompts": {
"copy": "کٟی",
"copyMessage": "Ű§Ù†ŰȘ۟ۧۚ Ù…Ű­Ù„ ŰšŰ±Ű§ÛŒ Ú©ÙŸÛŒ ÙŰ§ÛŒÙ„ ŰšÙ‡ ŰąÙ†ŰŹŰ§ ",
"currentlyNavigating": "ۯ۱ Ű­Ű§Ù„ ÙŸÛŒÙ…Ű§ÛŒŰŽ",
"deleteMessageMultiple": "ŰąÛŒŰ§ Ù…Ű·Ù…ŰŠÙ†ÛŒŰŻ که Ù…ÛŒâ€ŒŰźÙˆŰ§Ù‡ÛŒŰŻ {count} ÙŰ§ÛŒÙ„ ۱ۧ Ű­Ű°Ù Ú©Ù†ÛŒŰŻŰŸ",
"deleteMessageSingle": "ŰąÛŒŰ§ Ù…Ű·Ù…ŰŠÙ†ÛŒŰŻ که Ù…ÛŒŰźÙˆŰ§Ù‡ÛŒŰŻ ÙŰ§ÛŒÙ„/ÙŸÙˆŰŽÙ‡ ۱ۧ Ű­Ű°Ù Ú©Ù†ÛŒŰŻŰŸ",
"deleteMessageShare": "ŰąÛŒŰ§ Ù…Ű·Ù…ŰŠÙ† Ù‡ŰłŰȘÛŒŰŻ که Ù…ÛŒâ€ŒŰźÙˆŰ§Ù‡ÛŒŰŻ Ű§ÛŒÙ† ۧێŰȘŰ±Ű§Ú©â€ŒÚŻŰ°Ű§Ű±ÛŒ ({path}) ۱ۧ Ű­Ű°Ù Ú©Ù†ÛŒŰŻŰŸ",
"deleteUser": "ŰąÛŒŰ§ Ù…Ű·Ù…ŰŠÙ†ÛŒŰŻ که Ù…ÛŒŰźÙˆŰ§Ù‡ÛŒŰŻ Ű§ÛŒÙ† کۧ۱ۚ۱ ۱ۧ Ű­Ű°Ù Ú©Ù†ÛŒŰŻŰŸ",
"deleteTitle": "Ű­Ű°Ù ÙŰ§ÛŒÙ„ Ù‡Ű§",
"displayName": "Ù†Ù…Ű§ÛŒŰŽ Ù†Ű§Ù…:",
"download": "ŰŻŰ§Ù†Ù„ÙˆŰŻ ÙŰ§ÛŒÙ„ Ù‡Ű§",
"downloadMessage": "نوŰč ÙŰ§ÛŒÙ„ÛŒ که Ù…ÛŒŰźÙˆŰ§Ù‡ÛŒŰŻ ŰŻŰ§Ù†Ù„ÙˆŰŻ Ú©Ù†ÛŒŰŻ ۱ۧ Ű§Ù†ŰȘ۟ۧۚ Ú©Ù†ÛŒŰŻ ",
"error": "ۧێŰȘŰšŰ§Ù‡ÛŒ ۱۟ ŰŻŰ§ŰŻÙ‡",
"fileInfo": "Ű§Ű·Ù„Ű§ŰčۧŰȘ ÙŰ§ÛŒÙ„ ",
"filesSelected": "{count} ÙŰ§ÛŒÙ„ Ű§Ù†ŰȘ۟ۧۚ ŰŽŰŻ.",
"lastModified": "ŰąŰźŰ±ÛŒÙ† ÙˆÛŒŰ±Ű§ÛŒŰŽ",
"move": "Ű§Ù†ŰȘÙ‚Ű§Ù„",
"moveMessage": "Ù…Ű­Ù„ ŰŹŰŻÛŒŰŻÛŒ ŰšŰ±Ű§ÛŒ ÙŰ§ÛŒÙ„(Ù‡Ű§)/ÙŸÙˆŰŽÙ‡(Ù‡Ű§ÛŒ) ŰźÙˆŰŻ Ű§Ù†ŰȘ۟ۧۚ Ú©Ù†ÛŒŰŻ:",
"newArchetype": "یک ÙŸŰłŰȘ ŰŹŰŻÛŒŰŻ ۚ۱ ۧ۳ۧ۳ یک ۹۱کŰȘŰ§ÛŒÙŸ Ű§ÛŒŰŹŰ§ŰŻ Ú©Ù†ÛŒŰŻ. ÙŰ§ÛŒÙ„ ŰŽÙ…Ű§ ۯ۱ ÙŸÙˆŰŽÙ‡ Ù…Ű­ŰȘÙˆŰ§ Ű§ÛŒŰŹŰ§ŰŻ ŰźÙˆŰ§Ù‡ŰŻ ŰŽŰŻ.",
"newDir": "ÙŸÙˆŰŽÙ‡ ŰŹŰŻÛŒŰŻ",
"newDirMessage": "Ù†Ű§Ù… ÙŸÙˆŰŽÙ‡ ŰŹŰŻÛŒŰŻ",
"newFile": "ÙŰ§ÛŒÙ„ ŰŹŰŻÛŒŰŻ",
"newFileMessage": "Ù†Ű§Ù… ÙŰ§ÛŒÙ„ ŰŹŰŻÛŒŰŻ",
"numberDirs": "ŰȘŰčۯۧۯ ÙŸÙˆŰŽÙ‡ Ù‡Ű§",
"numberFiles": "ŰȘŰčۯۧۯ ÙŰ§ÛŒÙ„ Ù‡Ű§",
"rename": "ŰȘŰșÛŒÛŒŰ± Ù†Ű§Ù…",
"renameMessage": "ÙˆŰ±ÙˆŰŻ Ù†Ű§Ù… ŰŹŰŻÛŒŰŻ ŰšŰ±Ű§ÛŒ",
"replace": "ŰŹŰ§ÛŒÚŻŰČین Ú©Ű±ŰŻÙ†",
"replaceMessage": "یکی ۧŰČ ÙŰ§ÛŒÙ„â€ŒÙ‡Ű§ÛŒÛŒ که Ù…ÛŒâ€ŒŰźÙˆŰ§Ù‡ÛŒŰŻ ŰąÙŸÙ„ÙˆŰŻ Ú©Ù†ÛŒŰŻŰŒ Ù†Ű§Ù… مŰȘÙŰ§ÙˆŰȘی ۯۧ۱ۯ. ŰąÛŒŰ§ Ù…ÛŒâ€ŒŰźÙˆŰ§Ù‡ÛŒŰŻ ۧŰČ Ű§ÛŒÙ† ÙŰ§ÛŒÙ„ Ű”Ű±Ù Ù†ŰžŰ± Ú©Ù†ÛŒŰŻ و ŰšÙ‡ ŰąÙŸÙ„ÙˆŰŻ Ű§ŰŻŰ§Ù…Ù‡ ŰŻÙ‡ÛŒŰŻ ÛŒŰ§ ÙŰ§ÛŒÙ„ Ù…ÙˆŰŹÙˆŰŻ ۱ۧ ŰŹŰ§ÛŒÚŻŰČین Ú©Ù†ÛŒŰŻŰŸ",
"schedule": "ŰČÙ…Ű§Ù† ŰšÙ†ŰŻÛŒ",
"scheduleMessage": "ŰȘŰ§Ű±ÛŒŰź و ŰČÙ…Ű§Ù†ÛŒ ۱ۧ ŰšŰ±Ű§ÛŒ ŰšŰ±Ù†Ű§Ù…Ù‡â€ŒŰ±ÛŒŰČی Ű§Ù†ŰȘێۧ۱ Ű§ÛŒÙ† ÙŸŰłŰȘ Ű§Ù†ŰȘ۟ۧۚ Ú©Ù†ÛŒŰŻ",
"show": "Ù†Ù…Ű§ÛŒŰŽ",
"size": "Ű§Ù†ŰŻŰ§ŰČه",
"upload": "ŰąÙŸÙ„ÙˆŰŻ",
"uploadFiles": "ۯ۱ Ű­Ű§Ù„ ŰąÙŸÙ„ÙˆŰŻ {files} ÙŰ§ÛŒÙ„â€ŒÙ‡Ű§...",
"uploadMessage": "یک ÚŻŰČینه ŰšŰ±Ű§ÛŒ ŰąÙŸÙ„ÙˆŰŻ Ű§Ù†ŰȘ۟ۧۚ Ú©Ù†ÛŒŰŻ.",
"optionalPassword": "Ű±Ù…ŰČ ŰčŰšÙˆŰ± ۧ۟ŰȘÛŒŰ§Ű±ÛŒ",
"resolution": "ÙˆŰ¶ÙˆŰ­ ŰȘŰ”ÙˆÛŒŰ±",
"discardEditorChanges": "ŰąÛŒŰ§ Ù…Ű·Ù…ŰŠÙ† Ù‡ŰłŰȘÛŒŰŻ که Ù…ÛŒâ€ŒŰźÙˆŰ§Ù‡ÛŒŰŻ ŰȘŰșÛŒÛŒŰ±Ű§ŰȘی ۱ۧ که Ű§ÛŒŰŹŰ§ŰŻ Ú©Ű±ŰŻÙ‡â€ŒŰ§ÛŒŰŻŰŒ لŰșو Ú©Ù†ÛŒŰŻŰŸ"
},
"search": {
"images": "ŰȘŰ”Ű§ÙˆÛŒŰ±",
"music": "Ù…ÙˆŰłÛŒÙ‚ÛŒ",
"pdf": "ÙŸÛŒ ŰŻÛŒ Ű§Ù",
"pressToSearch": "ŰšŰ±Ű§ÛŒ ŰŹŰłŰȘŰŹÙˆ enter ۱ۧ ŰšŰČÙ†ÛŒŰŻ...",
"search": "ŰŹŰłŰȘŰŹÙˆ...",
"typeToSearch": "ŰȘŰ§ÛŒÙŸ ŰšŰ±Ű§ÛŒ ŰŹŰłŰȘŰŹÙˆ",
"types": "Ű§Ù†ÙˆŰ§Űč",
"video": "ÙˆÛŒŰŻŰŠÙˆ "
},
"settings": {
"admin": "Admin",
"administrator": "Administrator",
"allowCommands": "Ű§ŰŹŰ±Ű§ÛŒ ŰŻŰłŰȘÙˆŰ±Ű§ŰȘ",
"allowEdit": "ÙˆÛŒŰ±Ű§ÛŒŰŽŰŒ ŰȘŰșÛŒÛŒŰ± Ù†Ű§Ù…ŰŒ و Ű­Ű°Ù ÙŰ§ÛŒÙ„ Ù‡Ű§ و ÙŸÙˆŰŽÙ‡ Ù‡Ű§",
"allowNew": "Ű§ÛŒŰŹŰ§ŰŻ ÙŰ§ÛŒÙ„Ù‡Ű§ و ÙŸÙˆŰŽÙ‡ Ù‡Ű§ÛŒ ŰŹŰŻÛŒŰŻ",
"allowPublish": "Ű§Ù†ŰȘێۧ۱ ÙŸŰłŰȘ Ù‡Ű§ و Ű”ÙŰ­Ű§ŰȘ ŰŹŰŻÛŒŰŻ",
"allowSignup": "Ű§ŰŹŰ§Ű±Ù‡ ŰŻŰ§ŰŻÙ† ŰšÙ‡ Ú©Ű§Ű±ŰšŰ±Ű§Ù† ŰšŰ±Ű§ÛŒ ۫ۚŰȘ Ù†Ű§Ù…",
"avoidChanges": "(ŰźŰ§Ù„ÛŒ ŰšÚŻŰ°Ű§Ű±ÛŒŰŻ ŰȘۧ ŰȘŰșÛŒÛŒŰ± Ű§ÛŒŰŹŰ§ŰŻ Ù†ŰŽÙˆŰŻ)",
"branding": "ŰšŰ±Ù†ŰŻŰłŰ§ŰČی",
"brandingDirectoryPath": "Ù…ŰłÛŒŰ± ÙŸÙˆŰŽÙ‡ ŰšŰ±Ù†ŰŻ",
"brandingHelp": "ŰŽÙ…Ű§ می‌ŰȘÙˆŰ§Ù†ÛŒŰŻ ŰžŰ§Ù‡Ű± و Ű­Űł نمونه‌ی Ù…Ű±ÙˆŰ±ÚŻŰ± ÙŰ§ÛŒÙ„ ŰźÙˆŰŻ ۱ۧ ۚۧ ŰȘŰșÛŒÛŒŰ± Ù†Ű§Ù…ŰŒ ŰŹŰ§ÛŒÚŻŰČینی Ù„ÙˆÚŻÙˆŰŒ Ű§Ű¶Ű§ÙÙ‡ Ú©Ű±ŰŻÙ† ŰłŰšÚ©â€ŒÙ‡Ű§ÛŒ ŰłÙŰ§Ű±ŰŽÛŒ و Ű­ŰȘی ŰșÛŒŰ±ÙŰčŰ§Ù„ Ú©Ű±ŰŻÙ† Ù„ÛŒÙ†Ú©â€ŒÙ‡Ű§ÛŒ ŰźŰ§Ű±ŰŹÛŒ ŰšÙ‡ ÚŻÛŒŰȘâ€ŒÙ‡Ű§ŰšŰŒ ŰłÙŰ§Ű±ŰŽÛŒ Ú©Ù†ÛŒŰŻ.\nŰšŰ±Ű§ÛŒ Ű§Ű·Ù„Ű§ŰčۧŰȘ ŰšÛŒŰŽŰȘ۱ ۯ۱ Ù…ÙˆŰ±ŰŻ ŰšŰ±Ù†ŰŻŰłŰ§ŰČی ŰłÙŰ§Ű±ŰŽÛŒŰŒ Ù„Ű·ÙŰ§Ù‹ ŰšÙ‡ {0} Ù…Ű±Ű§ŰŹŰčه Ú©Ù†ÛŒŰŻ.",
"changePassword": "ŰȘŰčŰšÛŒŰ± Ű±Ù…ŰČ",
"commandRunner": "ۧۏ۱ۧ Ú©Ù†Ù†ŰŻÙ‡ ŰŻŰłŰȘÙˆŰ±Ű§ŰȘ",
"commandRunnerHelp": "ۯ۱ Ű§ÛŒÙ†ŰŹŰ§ می‌ŰȘÙˆŰ§Ù†ÛŒŰŻ ŰŻŰłŰȘÙˆŰ±Ű§ŰȘی ۱ۧ که ۯ۱ Ű±ÙˆÛŒŰŻŰ§ŰŻÙ‡Ű§ÛŒ Ù†Ű§Ù…ÚŻŰ°Ű§Ű±ÛŒ ŰŽŰŻÙ‡ ۧۏ۱ۧ Ù…ÛŒâ€ŒŰŽÙˆÙ†ŰŻŰŒ ŰȘÙ†ŰžÛŒÙ… Ú©Ù†ÛŒŰŻ. ŰšŰ§ÛŒŰŻ ۯ۱ Ù‡Ű± ۟۷ یکی ۱ۧ ŰšÙ†ÙˆÛŒŰłÛŒŰŻ. مŰȘŰșÛŒŰ±Ù‡Ű§ÛŒ Ù…Ű­ÛŒŰ·ÛŒ {0} و {1} ۯ۱ ŰŻŰłŰȘ۱۳ ŰźÙˆŰ§Ù‡Ù†ŰŻ ŰšÙˆŰŻ و {0} Ù†ŰłŰšŰȘ ŰšÙ‡ {1} Ù‡ŰłŰȘÙ†ŰŻ. ŰšŰ±Ű§ÛŒ Ű§Ű·Ù„Ű§ŰčۧŰȘ ŰšÛŒŰŽŰȘ۱ ۯ۱ Ù…ÙˆŰ±ŰŻ Ű§ÛŒÙ† ÙˆÛŒÚ˜ÚŻÛŒ و مŰȘŰșÛŒŰ±Ù‡Ű§ÛŒ Ù…Ű­ÛŒŰ·ÛŒ Ù…ÙˆŰŹÙˆŰŻŰŒ Ù„Ű·ÙŰ§Ù‹ {2} ۱ۧ Ù…Ű·Ű§Ù„Űčه Ú©Ù†ÛŒŰŻ.",
"commandsUpdated": "ŰŻŰłŰȘÙˆŰ±Ű§ŰȘ ÙˆÛŒŰ±Ű§ÛŒŰŽ ŰŽŰŻ!",
"createUserDir": "Ű§ÛŒŰŹŰ§ŰŻ ŰźÙˆŰŻÚ©Ű§Ű± ÙŸÙˆŰŽÙ‡ ŰšŰ±Ű§ÛŒ Ù‡Ű± کۧ۱ۚ۱ Ù‡Ù†ÚŻŰ§Ù… Ű§Ű¶Ű§ÙÙ‡ Ú©Ű±ŰŻÙ† کۧ۱ۚ۱ ŰŹŰŻÛŒŰŻ",
"minimumPasswordLength": "Ű­ŰŻŰ§Ù‚Ù„ Ű·ÙˆÙ„ Ű±Ù…ŰČ ŰčŰšÙˆŰ±",
"tusUploads": "ŰąÙŸÙ„ÙˆŰŻÙ‡Ű§ÛŒ ۚ۟ێ ۚ۟ێ ŰŽŰŻÙ‡",
"tusUploadsHelp": "Ù…Ű±ÙˆŰ±ÚŻŰ± ÙŰ§ÛŒÙ„ ۧŰČ ŰąÙŸÙ„ÙˆŰŻ ÙŰ§ÛŒÙ„ ۚ۟ێ ۚ۟ێ ŰŽŰŻÙ‡ ÙŸŰŽŰȘÛŒŰšŰ§Ù†ÛŒ Ù…ÛŒâ€ŒÚ©Ù†ŰŻ و Ű§Ù…Ú©Ű§Ù† Ű§ÛŒŰŹŰ§ŰŻ ŰąÙŸÙ„ÙˆŰŻÙ‡Ű§ÛŒ ÙŰ§ÛŒÙ„ Ú©Ű§Ű±ŰąÙ…ŰŻŰŒ Ù‚Ű§ŰšÙ„ ۧŰčŰȘÙ…Ű§ŰŻŰŒ Ù‚Ű§ŰšÙ„ ۧŰČ ŰłŰ±ÚŻÛŒŰ±ÛŒ و ۚ۟ێ ۚ۟ێ ŰŽŰŻÙ‡ ۱ۧ Ű­ŰȘی ۯ۱ ŰŽŰšÚ©Ù‡â€ŒÙ‡Ű§ÛŒ ŰșÛŒŰ±Ù‚Ű§ŰšÙ„ ۧŰčŰȘÙ…Ű§ŰŻ ÙŰ±Ű§Ù‡Ù… Ù…ÛŒâ€ŒÚ©Ù†ŰŻ.",
"tusUploadsChunkSize": "ۭۯۧک۫۱ Ű§Ù†ŰŻŰ§ŰČه یک ŰŻŰ±ŰźÙˆŰ§ŰłŰȘ ۱ۧ Ù†ŰŽŰ§Ù† Ù…ÛŒâ€ŒŰŻÙ‡ŰŻ (ŰšŰ±Ű§ÛŒ ŰąÙŸÙ„ÙˆŰŻÙ‡Ű§ÛŒ کوچک‌ŰȘ۱ ۧŰČ ŰąÙŸÙ„ÙˆŰŻ Ù…ŰłŰȘقیم ۧ۳ŰȘÙŰ§ŰŻÙ‡ Ù…ÛŒâ€ŒŰŽÙˆŰŻ). می‌ŰȘÙˆŰ§Ù†ÛŒŰŻ یک ŰčŰŻŰŻ Ű”Ű­ÛŒŰ­ ŰłŰ§ŰŻÙ‡ که Ù†ŰŽŰ§Ù†â€ŒŰŻÙ‡Ù†ŰŻÙ‡ Ű§Ù†ŰŻŰ§ŰČه ŰšŰ§ÛŒŰȘ ۧ۳ŰȘ ÛŒŰ§ یک ۱ێŰȘه Ù…Ű§Ù†Ù†ŰŻ Û±Û° Ù…ÚŻŰ§ŰšŰ§ÛŒŰȘی Û± ÚŻÛŒÚŻŰ§ŰšŰ§ÛŒŰȘ و ŰșÛŒŰ±Ù‡ ÙˆŰ§Ű±ŰŻ Ú©Ù†ÛŒŰŻ.",
"tusUploadsRetryCount": "ŰȘŰčۯۧۯ ŰȘÙ„Ű§ŰŽâ€ŒÙ‡Ű§ÛŒ Ù…ŰŹŰŻŰŻ ŰšŰ±Ű§ÛŒ Ű§Ù†ŰŹŰ§Ù… ۯ۱ Ű”ÙˆŰ±ŰȘ ŰčŰŻÙ… موفقیŰȘ ۯ۱ ŰąÙŸÙ„ÙˆŰŻ یک Ù‚Ű·Űčه ŰŻŰ§ŰŻÙ‡.",
"userHomeBasePath": "Ù…ŰłÛŒŰ± ÙŸŰ§ÛŒÙ‡ ŰšŰ±Ű§ÛŒ ÙŸÙˆŰŽÙ‡ Ù‡Ű§ÛŒ کۧ۱ۚ۱",
"userScopeGenerationPlaceholder": "Ù…Ű­ŰŻÙˆŰŻÙ‡ ŰšÙ‡ Ű”ÙˆŰ±ŰȘ ŰźÙˆŰŻÚ©Ű§Ű± ŰȘÙˆÙ„ÛŒŰŻ ŰźÙˆŰ§Ù‡ŰŻ ŰŽŰŻ",
"createUserHomeDirectory": "Ű§ÛŒŰŹŰ§ŰŻ ÙŸÙˆŰŽÙ‡ Ù†Ű§Ű­ÛŒÙ‡ Ú©Ű§Ű±ŰšŰ±ÛŒ",
"customStylesheet": "Stylesheet ŰłÙŰ§Ű±ŰŽÛŒ",
"defaultUserDescription": "Ű§ÛŒÙ† ŰȘÙ†ŰžÛŒÙ…Ű§ŰȘ ÙŸÛŒŰŽâ€ŒÙŰ±Ű¶ ŰšŰ±Ű§ÛŒ Ú©Ű§Ű±ŰšŰ±Ű§Ù† ŰŹŰŻÛŒŰŻ ۧ۳ŰȘ.",
"disableExternalLinks": "ŰșÛŒŰ±ÙŰčŰ§Ù„ Ú©Ű±ŰŻÙ† Ù„ÛŒÙ†Ú©â€ŒÙ‡Ű§ÛŒ ŰźŰ§Ű±ŰŹÛŒ (ŰšÙ‡ ŰŹŰČ Ù…ŰłŰȘÙ†ŰŻŰ§ŰȘ)",
"disableUsedDiskPercentage": "Ù†Ù…ÙˆŰŻŰ§Ű± ۯ۱۔ۯ ŰŻÛŒŰłÚ© ۧ۳ŰȘÙŰ§ŰŻÙ‡ ŰŽŰŻÙ‡ ۱ۧ ŰșÛŒŰ±ÙŰčŰ§Ù„ Ú©Ù†ÛŒŰŻ",
"documentation": "Ù…ŰłŰȘÙ†ŰŻŰłŰ§ŰČی",
"examples": "Ù…Ű«Ű§Ù„ Ù‡Ű§",
"executeOnShell": "ۧۏ۱ۧ Ű±ÙˆÛŒ shell",
"executeOnShellDescription": "ŰšÙ‡ Ű·ÙˆŰ± ÙŸÛŒŰŽâ€ŒÙŰ±Ű¶ŰŒ Ù…Ű±ÙˆŰ±ÚŻŰ± ÙŰ§ÛŒÙ„ŰŒ ŰŻŰłŰȘÙˆŰ±Ű§ŰȘ ۱ۧ ۚۧ ÙŰ±Ű§ŰźÙˆŰ§Ù†ÛŒ Ù…ŰłŰȘقیم ÙŰ§ÛŒÙ„â€ŒÙ‡Ű§ÛŒ ŰšŰ§ÛŒÙ†Ű±ÛŒ ŰąÙ†Ù‡Ű§ ۧۏ۱ۧ Ù…ÛŒâ€ŒÚ©Ù†ŰŻ. ۧگ۱ Ù…ÛŒâ€ŒŰźÙˆŰ§Ù‡ÛŒŰŻ ŰąÙ†Ù‡Ű§ ۱ۧ Ű±ÙˆÛŒ یک ÙŸÙˆŰłŰȘه (Ù…Ű§Ù†Ù†ŰŻ Bash ÛŒŰ§ PowerShell) ۧۏ۱ۧ Ú©Ù†ÛŒŰŻŰŒ می‌ŰȘÙˆŰ§Ù†ÛŒŰŻ ŰąÙ† ۱ۧ ۯ۱ Ű§ÛŒÙ†ŰŹŰ§ ۚۧ ŰąŰ±ÚŻÙˆÙ…Ű§Ù†â€ŒÙ‡Ű§ و ÙŸŰ±Ú†Ù…â€ŒÙ‡Ű§ÛŒ Ù…ÙˆŰ±ŰŻ Ù†ÛŒŰ§ŰČ ŰȘŰčŰ±ÛŒÙ Ú©Ù†ÛŒŰŻ. ۯ۱ Ű”ÙˆŰ±ŰȘ ŰȘÙ†ŰžÛŒÙ…ŰŒ ŰŻŰłŰȘÙˆŰ±ÛŒ که ۧۏ۱ۧ Ù…ÛŒâ€ŒÚ©Ù†ÛŒŰŻ ŰšÙ‡ ŰčÙ†ÙˆŰ§Ù† یک ŰąŰ±ÚŻÙˆÙ…Ű§Ù† ÙŸÛŒÙˆŰłŰȘ Ù…ÛŒâ€ŒŰŽÙˆŰŻ. Ű§ÛŒÙ† Ù…ÙˆŰ¶ÙˆŰč هم ۯ۱ Ù…ÙˆŰ±ŰŻ ŰŻŰłŰȘÙˆŰ±Ű§ŰȘ کۧ۱ۚ۱ و هم ۯ۱ Ù…ÙˆŰ±ŰŻ هوک Ù‡Ű§ Ű”ŰŻÙ‚ Ù…ÛŒâ€ŒÚ©Ù†ŰŻ.",
"globalRules": "Ű§ÛŒÙ† یک Ù…ŰŹÙ…ÙˆŰčه ŰŹÙ‡Ű§Ù†ÛŒ ۧŰČ Ù‚ÙˆŰ§Ù†ÛŒÙ† Ù…ŰŹŰ§ŰČ Ùˆ ŰșÛŒŰ±Ù…ŰŹŰ§ŰČ Ű§ŰłŰȘ. ŰąÙ†Ù‡Ű§ ŰšŰ±Ű§ÛŒ Ù‡Ű± کۧ۱ۚ۱ ۧŰčÙ…Ű§Ù„ Ù…ÛŒâ€ŒŰŽÙˆÙ†ŰŻ. ŰŽÙ…Ű§ می‌ŰȘÙˆŰ§Ù†ÛŒŰŻ Ù‚ÙˆŰ§Ù†ÛŒÙ† ŰźŰ§Ű”ÛŒ ۱ۧ ۯ۱ ŰȘÙ†ŰžÛŒÙ…Ű§ŰȘ Ù‡Ű± کۧ۱ۚ۱ ŰȘŰčŰ±ÛŒÙ Ú©Ù†ÛŒŰŻ ŰȘۧ Ű§ÛŒÙ† Ù‚ÙˆŰ§Ù†ÛŒÙ† ۱ۧ لŰșو Ú©Ù†ÛŒŰŻ.",
"globalSettings": "ŰȘÙ†ŰžÛŒÙ…Ű§ŰȘ ŰłŰ±Ű§ŰłŰ±ÛŒ",
"hideDotfiles": "Ù…ŰźÙÛŒ Ú©Ű±ŰŻÙ† ۯۧŰȘ ÙŰ§ÛŒÙ„ Ù‡Ű§",
"insertPath": "ÙˆŰ§Ű±ŰŻ Ú©Ű±ŰŻÙ† Ù…ŰłÛŒŰ±",
"insertRegex": "ÙˆŰ§Ű±ŰŻ Ú©Ű±ŰŻÙ† Űčۚۧ۱ۧŰȘ ŰšŰ§Ù‚Ű§ŰčŰŻÙ‡",
"instanceName": "Ù†Ű§Ù… نمونه",
"language": "ŰČŰšŰ§Ù†",
"lockPassword": "ŰŹÙ„ÙˆÚŻÛŒŰ±ÛŒ ۧŰČ ŰȘŰșÛŒÛŒŰ± Ű±Ù…ŰČ ŰȘÙˆŰłŰ· کۧ۱ۚ۱",
"newPassword": "Ű±Ù…ŰČ ŰŹŰŻÛŒŰŻ ŰŽÙ…Ű§",
"newPasswordConfirm": "ŰȘŰ§ÛŒÛŒŰŻ Ű±Ù…ŰČ ŰŹŰŻÛŒŰŻ ŰŽÙ…Ű§",
"newUser": "کۧ۱ۚ۱ ŰŹŰŻÛŒŰŻ ",
"password": " Ű±Ù…ŰČ ŰčŰšÙˆŰ±",
"passwordUpdated": "Ű±Ù…ŰČ ŰčŰšÙˆŰ± ÙˆÛŒŰ±Ű§ÛŒŰŽ ŰŽŰŻ!",
"path": "Ù…ŰłÛŒŰ±",
"perm": {
"create": "ۧ۳ŰȘۧۯ ÙŰ§ÛŒÙ„ Ù‡Ű§ و ÙŸÙˆŰŽÙ‡ Ù‡Ű§",
"delete": "Ű­Ű°Ù ÙŰ§ÛŒÙ„ Ù‡Ű§ و ÙŸÙˆŰŽÙ‡ Ù‡Ű§",
"download": "ŰŻŰ§Ù†Ù„ÙˆŰŻ",
"execute": "Ű§ŰŹŰ±Ű§ÛŒ ŰŻŰłŰȘÙˆŰ±Ű§ŰȘ",
"modify": "ÙˆÛŒŰ±Ű§ÛŒŰŽ ÙŰ§ÛŒÙ„ Ù‡Ű§",
"rename": "ŰȘŰșÛŒÛŒŰ± Ù†Ű§Ù… ÛŒŰ§ Ű§Ù†ŰȘÙ‚Ű§Ù„ ÙŰ§ÛŒÙ„ Ù‡Ű§ و ÙŸÙˆŰŽÙ‡ Ù‡Ű§",
"share": "ŰšÙ‡ ۧێŰȘ۱ۧک ÚŻŰ°Ű§Ű±ÛŒ ÙŰ§ÛŒÙ„ Ù‡Ű§"
},
"permissions": "ŰŻŰłŰȘŰ±ŰłÛŒ Ù‡Ű§",
"permissionsHelp": "ŰŽÙ…Ű§ می‌ŰȘÙˆŰ§Ù†ÛŒŰŻ کۧ۱ۚ۱ ۱ۧ ŰšÙ‡ ŰčÙ†ÙˆŰ§Ù† Ù…ŰŻÛŒŰ± ŰȘÙ†ŰžÛŒÙ… Ú©Ù†ÛŒŰŻ ÛŒŰ§ ŰŻŰłŰȘŰ±ŰłÛŒâ€ŒÙ‡Ű§ ۱ۧ ŰšÙ‡ Ű”ÙˆŰ±ŰȘ ŰŹŰŻŰ§ÚŻŰ§Ù†Ù‡ Ű§Ù†ŰȘ۟ۧۚ Ú©Ù†ÛŒŰŻ. ۧگ۱ \"Ù…ŰŻÛŒŰ±\" ۱ۧ Ű§Ù†ŰȘ۟ۧۚ Ú©Ù†ÛŒŰŻŰŒ ŰȘÙ…Ű§Ù… ÚŻŰČÛŒÙ†Ù‡â€ŒÙ‡Ű§ÛŒ ŰŻÛŒÚŻŰ± ŰšÙ‡ Ű·ÙˆŰ± ŰźÙˆŰŻÚ©Ű§Ű± ۧŰčÙ…Ű§Ù„ Ù…ÛŒâ€ŒŰŽÙˆÙ†ŰŻ. Ù…ŰŻÛŒŰ±ÛŒŰȘ Ú©Ű§Ű±ŰšŰ±Ű§Ù† Ù‡Ù…Ú†Ù†Ű§Ù† ۧŰČ Ű§ŰźŰȘÛŒŰ§Ű±Ű§ŰȘ Ù…ŰŻÛŒŰ± ۧ۳ŰȘ.",
"profileSettings": "ŰȘÙ†ŰžÛŒÙ…Ű§ŰȘ Ù†Ű§Ű­ÛŒÙ‡ Ú©Ű§Ű±ŰšŰ±ÛŒ",
"ruleExample1": "ۧŰČ ŰŻŰłŰȘŰ±ŰłÛŒ ŰšÙ‡ Ù‡Ű±ÚŻÙˆÙ†Ù‡ ÙŰ§ÛŒÙ„ Ù†Ù‚Ű·Ù‡â€ŒŰ§ÛŒ (Ù…Ű§Ù†Ù†ŰŻ .gitی .gitignore) ۯ۱ Ù‡Ű± ÙŸÙˆŰŽÙ‡ ŰŹÙ„ÙˆÚŻÛŒŰ±ÛŒ Ù…ÛŒâ€ŒÚ©Ù†ŰŻ.",
"ruleExample2": "ŰŻŰłŰȘŰ±ŰłÛŒ ŰšÙ‡ ÙŰ§ÛŒÙ„ÛŒ ŰšÙ‡ Ù†Ű§Ù… Caddyfile ۱ۧ ۯ۱ Ű±ÛŒŰŽÙ‡ ŰŻŰ§Ù…Ù†Ù‡ Ù…ŰłŰŻÙˆŰŻ Ù…ÛŒâ€ŒÚ©Ù†ŰŻ.",
"rules": "Ù‚ÙˆŰ§ŰčŰŻ",
"rulesHelp": "ۯ۱ Ű§ÛŒÙ†ŰŹŰ§ می‌ŰȘÙˆŰ§Ù†ÛŒŰŻ Ù…ŰŹÙ…ÙˆŰčÙ‡â€ŒŰ§ÛŒ ۧŰČ Ù‚ÙˆŰ§Ù†ÛŒÙ† Ù…ŰŹŰ§ŰČ Ùˆ ŰșÛŒŰ±Ù…ŰŹŰ§ŰČ Ű±Ű§ ŰšŰ±Ű§ÛŒ Ű§ÛŒÙ† کۧ۱ۚ۱ ۟ۧ۔ ŰȘŰčŰ±ÛŒÙ Ú©Ù†ÛŒŰŻ. ÙŰ§ÛŒÙ„â€ŒÙ‡Ű§ÛŒ Ù…ŰłŰŻÙˆŰŻ ŰŽŰŻÙ‡ ۯ۱ Ù„ÛŒŰłŰȘâ€ŒÙ‡Ű§ Ù†Ù…Ű§ÛŒŰŽ ŰŻŰ§ŰŻÙ‡ Ù†Ù…ÛŒâ€ŒŰŽÙˆÙ†ŰŻ و کۧ۱ۚ۱ ŰšÙ‡ ŰąÙ†Ù‡Ű§ ŰŻŰłŰȘŰ±ŰłÛŒ Ù†ŰźÙˆŰ§Ù‡ŰŻ ۯۧێŰȘ. Ù…Ű§ ۧŰČ regex و Ù…ŰłÛŒŰ±Ù‡Ű§ÛŒ Ù…Ű±ŰšÙˆŰ· ŰšÙ‡ Ù…Ű­ŰŻÙˆŰŻÙ‡ کۧ۱ۚ۱ ÙŸŰŽŰȘÛŒŰšŰ§Ù†ÛŒ می‌کنیم.",
"scope": "Ù…Ű­ŰŻÙˆŰŻÙ‡",
"setDateFormat": "ŰȘÙ†ŰžÛŒÙ… Ù‚Ű§Ù„Űš ŰŻÙ‚ÛŒÙ‚ ŰȘŰ§Ű±ÛŒŰź",
"settingsUpdated": "ŰȘÙ†ŰžÛŒÙ…Ű§ŰȘ ŰšÙ‡ Ű±ÙˆŰČ ŰŽŰŻ!",
"shareDuration": "ŰČÙ…Ű§Ù† ŰšÙ‡ ۧێŰȘ۱ۧک ÚŻŰ°Ű§Ű±ÛŒ",
"shareManagement": "Ù…ŰŻÛŒŰ±ÛŒŰȘ ŰšÙ‡ ۧێŰȘ۱ۧک ÚŻŰ°Ű§Ű±ÛŒ",
"shareDeleted": "ŰšÙ‡ ۧێŰȘ۱ۧک ÚŻŰ°Ű§Ű±ÛŒ Ű­Ű°Ù ŰŽŰŻ!",
"singleClick": "ۧ۳ŰȘÙŰ§ŰŻÙ‡ ۧŰČ ÛŒÚ© کلیک ŰšŰ±Ű§ÛŒ ۚۧŰČ Ú©Ű±ŰŻÙ† ÙŰ§ÛŒÙ„ Ù‡Ű§ و ÙŸÙˆŰŽÙ‡ Ù‡Ű§",
"themes": {
"default": "ŰȘÙ†ŰžÛŒÙ…Ű§ŰȘ ÙŸÛŒŰŽ ÙŰ±Ű¶ ŰłÛŒŰłŰȘم",
"dark": "ŰȘŰ§Ű±ÛŒÚ© ",
"light": "Ű±ÙˆŰŽÙ†",
"title": "ŰȘم ÛŒŰ§ ŰČمینه"
},
"user": "کۧ۱ۚ۱",
"userCommands": "ŰŻŰłŰȘÙˆŰ±Ű§ŰȘ",
"userCommandsHelp": "ÙÙ‡Ű±ŰłŰȘی ۧŰČ ŰŻŰłŰȘÙˆŰ±Ű§ŰȘ Ù…ÙˆŰŹÙˆŰŻ ŰšŰ±Ű§ÛŒ Ű§ÛŒÙ† کۧ۱ۚ۱ که ۚۧ ÙŰ§Ű”Ù„Ù‡ ۧŰČ Ù‡Ù… ۏۯۧ ŰŽŰŻÙ‡â€ŒŰ§Ù†ŰŻ. Ù…Ű«Ű§Ù„:",
"userCreated": "کۧ۱ۚ۱ Ű§ÛŒŰŹŰ§ŰŻ ŰŽŰŻ",
"userDefaults": "ŰȘÙ†ŰžÛŒÙ…Ű§ŰȘ ÙŸÛŒŰŽ ÙŰ±Ű¶ کۧ۱ۚ۱",
"userDeleted": "کۧ۱ۚ۱ Ű­Ű°Ù ŰŽŰŻ",
"userManagement": "Ù…ŰŻÛŒŰ±ÛŒŰȘ Ú©Ű§Ű±ŰšŰ±Ű§Ù†",
"userUpdated": "کۧ۱ۚ۱ ŰšÙ‡ Ű±ÙˆŰČ ŰŽŰŻ!",
"username": "Ù†Ű§Ù… Ú©Ű§Ű±ŰšŰ±ÛŒ",
"users": "Ú©Ű§Ű±ŰšŰ±Ű§Ù†"
},
"sidebar": {
"help": "Ű±Ű§Ù‡Ù†Ù…Ű§",
"hugoNew": "Hugo New",
"login": "ÙˆŰ±ÙˆŰŻ",
"logout": "ŰźŰ±ÙˆŰŹ ۧŰČ Ű­ŰłŰ§Űš",
"myFiles": "ÙŰ§ÛŒÙ„ Ù‡Ű§ÛŒ من",
"newFile": "ÙŰ§ÛŒÙ„ ŰŹŰŻÛŒŰŻ",
"newFolder": "ÙŸÙˆŰŽÙ‡ ŰŹŰŻÛŒŰŻ",
"preview": "Ù†Ù…Ű§ÛŒŰŽ",
"settings": "ŰȘÙ†ŰžÛŒÙ…Ű§ŰȘ",
"signup": "۫ۚŰȘ Ù†Ű§Ù…",
"siteSettings": "ŰȘÙ†ŰžÛŒÙ…Ű§ŰȘ ŰłŰ§ÛŒŰȘ "
},
"success": {
"linkCopied": "لینک Ú©ÙŸÛŒ ŰŽŰŻ!"
},
"time": {
"days": "Ű±ÙˆŰČÙ‡Ű§",
"hours": "۳ۧŰčŰȘ",
"minutes": "ŰŻÙ‚ÛŒÙ‚Ù‡",
"seconds": "Ű«Ű§Ù†ÛŒÙ‡",
"unit": "ÙˆŰ§Ű­ŰŻ ŰČÙ…Ű§Ù†"
}
}

View File

@ -170,7 +170,6 @@
"commandRunnerHelp": "Ici, vous pouvez définir les commandes qui seront exécutées lors des événements nommés précédemments. Vous devez en écrire une par ligne. Les variables d'environnement {0} et {1} seront disponibles, {0} étant relatif à {1}. Pour plus d'informations sur cette fonctionnalité et les variables d'environnement disponibles, veuillez lire la {2}.", "commandRunnerHelp": "Ici, vous pouvez définir les commandes qui seront exécutées lors des événements nommés précédemments. Vous devez en écrire une par ligne. Les variables d'environnement {0} et {1} seront disponibles, {0} étant relatif à {1}. Pour plus d'informations sur cette fonctionnalité et les variables d'environnement disponibles, veuillez lire la {2}.",
"commandsUpdated": "Commandes mises Ă  jour !", "commandsUpdated": "Commandes mises Ă  jour !",
"createUserDir": "Créer automatiquement un dossier pour l'utilisateur", "createUserDir": "Créer automatiquement un dossier pour l'utilisateur",
"minimumPasswordLength": "Minimum password length",
"tusUploads": "Uploads segmentés", "tusUploads": "Uploads segmentés",
"tusUploadsHelp": "File Browser prend en charge les uploads segmentés afin de permettre une gestion efficace, fiable et reprenable sur des réseaux instables.", "tusUploadsHelp": "File Browser prend en charge les uploads segmentés afin de permettre une gestion efficace, fiable et reprenable sur des réseaux instables.",
"tusUploadsChunkSize": "Taille maximale autorisée par segment (les uploads directs seront utilisés pour les fichiers plus petits). Vous pouvez entrer un entier en octets ou une chaßne telle que 10MB, 1GB, etc.", "tusUploadsChunkSize": "Taille maximale autorisée par segment (les uploads directs seront utilisés pour les fichiers plus petits). Vous pouvez entrer un entier en octets ou une chaßne telle que 10MB, 1GB, etc.",
@ -224,7 +223,6 @@
"shareDeleted": "Partage supprimé !", "shareDeleted": "Partage supprimé !",
"singleClick": "Utiliser un simple clic pour ouvrir les fichiers et les dossiers", "singleClick": "Utiliser un simple clic pour ouvrir les fichiers et les dossiers",
"themes": { "themes": {
"default": "System default",
"dark": "Sombre", "dark": "Sombre",
"light": "Clair", "light": "Clair",
"title": "ThĂšme" "title": "ThĂšme"

View File

@ -3,7 +3,6 @@
"cancel": "Ś‘Ś™Ś˜Ś•Śœ", "cancel": "Ś‘Ś™Ś˜Ś•Śœ",
"clear": "ڠڧڔ", "clear": "ڠڧڔ",
"close": "ŚĄŚ’Ś™ŚšŚ”", "close": "ŚĄŚ’Ś™ŚšŚ”",
"continue": "Ś”ŚžŚ©Śš",
"copy": "Ś”ŚąŚȘڧڔ", "copy": "Ś”ŚąŚȘڧڔ",
"copyFile": "Ś”ŚąŚȘڧ ڧڕڑڄ", "copyFile": "Ś”ŚąŚȘڧ ڧڕڑڄ",
"copyToClipboard": "Ś”ŚąŚȘڧ ŚœŚœŚ•Ś—", "copyToClipboard": "Ś”ŚąŚȘڧ ŚœŚœŚ•Ś—",
@ -13,7 +12,6 @@
"download": "Ś”Ś•ŚšŚ“Ś”", "download": "Ś”Ś•ŚšŚ“Ś”",
"file": "ڧڕڑڄ", "file": "ڧڕڑڄ",
"folder": "ŚȘڙڧڙڙڔ", "folder": "ŚȘڙڧڙڙڔ",
"fullScreen": "Toggle full screen",
"hideDotfiles": "Ś”ŚĄŚȘŚš Ś§Ś‘ŚŠŚ™Ś/ŚȘڙڧڙڕŚȘ Ś©Ś©ŚžŚ ŚžŚȘŚ—Ś™Śœ ڑڠڧڕړڔ", "hideDotfiles": "Ś”ŚĄŚȘŚš Ś§Ś‘ŚŠŚ™Ś/ŚȘڙڧڙڕŚȘ Ś©Ś©ŚžŚ ŚžŚȘŚ—Ś™Śœ ڑڠڧڕړڔ",
"info": "ŚžŚ™Ś“Śą", "info": "ŚžŚ™Ś“Śą",
"more": "ŚąŚ•Ś“", "more": "ŚąŚ•Ś“",
@ -24,7 +22,6 @@
"ok": "ŚŚ™Ś©Ś•Śš", "ok": "ŚŚ™Ś©Ś•Śš",
"permalink": "Ś™ŚŠŚ™ŚšŚȘ Ś§Ś™Ś©Ś•Śš Ś§Ś‘Ś•Śą", "permalink": "Ś™ŚŠŚ™ŚšŚȘ Ś§Ś™Ś©Ś•Śš Ś§Ś‘Ś•Śą",
"previous": "Ś”Ś§Ś•Ś“Ś", "previous": "Ś”Ś§Ś•Ś“Ś",
"preview": "Preview",
"publish": "Ś€ŚšŚĄŚ•Ś", "publish": "Ś€ŚšŚĄŚ•Ś",
"rename": "کڙڠڕڙ Ś©Ś", "rename": "کڙڠڕڙ Ś©Ś",
"replace": "Ś”Ś—ŚœŚ€Ś”", "replace": "Ś”Ś—ŚœŚ€Ś”",
@ -42,6 +39,7 @@
"update": "ŚąŚ“Ś›Ś•ŚŸ", "update": "ŚąŚ“Ś›Ś•ŚŸ",
"upload": "Ś”ŚąŚœŚŚ”", "upload": "Ś”ŚąŚœŚŚ”",
"openFile": "Ś€ŚȘŚ— ڧڕڑڄ", "openFile": "Ś€ŚȘŚ— ڧڕڑڄ",
"continue": "Ś”ŚžŚ©Śš",
"discardChanges": "Ś–ŚšŚ™Ś§ŚȘ Ś”Ś©Ś™Ś Ś•Ś™Ś™Ś" "discardChanges": "Ś–ŚšŚ™Ś§ŚȘ Ś”Ś©Ś™Ś Ś•Ś™Ś™Ś"
}, },
"download": { "download": {
@ -60,6 +58,7 @@
}, },
"files": { "files": {
"body": "Ś’Ś•ŚŁ", "body": "Ś’Ś•ŚŁ",
"clear": "ڠڙڧڕڙ",
"closePreview": "ŚĄŚ’Ś™ŚšŚȘ ŚȘŚŠŚ•Ś’Ś” ŚžŚ§Ś“Ś™ŚžŚ”", "closePreview": "ŚĄŚ’Ś™ŚšŚȘ ŚȘŚŠŚ•Ś’Ś” ŚžŚ§Ś“Ś™ŚžŚ”",
"files": "Ś§Ś‘ŚŠŚ™Ś", "files": "Ś§Ś‘ŚŠŚ™Ś",
"folders": "ŚȘڙڧڙڕŚȘ", "folders": "ŚȘڙڧڙڕŚȘ",
@ -110,7 +109,6 @@
"deleteMessageMultiple": "Ś”ŚŚ ڐŚȘŚ” Ś‘Ś˜Ś•Ś— Ś©Ś‘ŚšŚŠŚ•Ś Śš ŚœŚžŚ—Ś•Ś§ {count} Ś§Ś‘ŚŠŚ™Ś?", "deleteMessageMultiple": "Ś”ŚŚ ڐŚȘŚ” Ś‘Ś˜Ś•Ś— Ś©Ś‘ŚšŚŠŚ•Ś Śš ŚœŚžŚ—Ś•Ś§ {count} Ś§Ś‘ŚŠŚ™Ś?",
"deleteMessageSingle": "Ś”ŚŚ ڐŚȘŚ” Ś‘Ś˜Ś•Ś— Ś©Ś‘ŚšŚŠŚ•Ś Śš ŚœŚžŚ—Ś•Ś§ ڐŚȘ ڔڧڕڑڄ/Ś”ŚȘڙڧڙڙڔ?", "deleteMessageSingle": "Ś”ŚŚ ڐŚȘŚ” Ś‘Ś˜Ś•Ś— Ś©Ś‘ŚšŚŠŚ•Ś Śš ŚœŚžŚ—Ś•Ś§ ڐŚȘ ڔڧڕڑڄ/Ś”ŚȘڙڧڙڙڔ?",
"deleteMessageShare": "Ś”ŚŚ ڐŚȘŚ” Ś‘Ś˜Ś•Ś— Ś©Ś‘ŚšŚŠŚ•Ś Śš ŚœŚžŚ—Ś•Ś§ ڐŚȘ ڔکڙŚȘŚ•ŚŁ ڔږڔ ({path})?", "deleteMessageShare": "Ś”ŚŚ ڐŚȘŚ” Ś‘Ś˜Ś•Ś— Ś©Ś‘ŚšŚŠŚ•Ś Śš ŚœŚžŚ—Ś•Ś§ ڐŚȘ ڔکڙŚȘŚ•ŚŁ ڔږڔ ({path})?",
"deleteUser": "Are you sure you want to delete this user?",
"deleteTitle": "ŚžŚ—Ś™Ś§ŚȘ Ś§Ś‘ŚŠŚ™Ś", "deleteTitle": "ŚžŚ—Ś™Ś§ŚȘ Ś§Ś‘ŚŠŚ™Ś",
"displayName": "Ś©Ś:", "displayName": "Ś©Ś:",
"download": "Ś”Ś•ŚšŚ“ŚȘ Ś§Ś‘ŚŠŚ™Ś", "download": "Ś”Ś•ŚšŚ“ŚȘ Ś§Ś‘ŚŠŚ™Ś",
@ -140,7 +138,6 @@
"uploadFiles": "ŚžŚąŚœŚ” {files} Ś§Ś‘ŚŠŚ™Ś...", "uploadFiles": "ŚžŚąŚœŚ” {files} Ś§Ś‘ŚŠŚ™Ś...",
"uploadMessage": "Ś‘Ś—Śš ŚŚ€Ś©ŚšŚ•ŚȘ Ś”ŚąŚœŚŚ”.", "uploadMessage": "Ś‘Ś—Śš ŚŚ€Ś©ŚšŚ•ŚȘ Ś”ŚąŚœŚŚ”.",
"optionalPassword": "ŚĄŚ™ŚĄŚžŚ ŚŚ•Ś€ŚŠŚ™Ś•Ś ŚœŚ™ŚȘ", "optionalPassword": "ŚĄŚ™ŚĄŚžŚ ŚŚ•Ś€ŚŠŚ™Ś•Ś ŚœŚ™ŚȘ",
"resolution": "Resolution",
"discardEditorChanges": "Ś”ŚŚ ڐŚȘŚ” Ś‘Ś˜Ś•Ś— Ś©Ś‘ŚšŚŠŚ•Ś Śš ŚœŚ‘Ś˜Śœ ڐŚȘ Ś”Ś©Ś™Ś Ś•Ś™Ś™Ś Ś©Ś‘Ś™ŚŠŚąŚȘ?" "discardEditorChanges": "Ś”ŚŚ ڐŚȘŚ” Ś‘Ś˜Ś•Ś— Ś©Ś‘ŚšŚŠŚ•Ś Śš ŚœŚ‘Ś˜Śœ ڐŚȘ Ś”Ś©Ś™Ś Ś•Ś™Ś™Ś Ś©Ś‘Ś™ŚŠŚąŚȘ?"
}, },
"search": { "search": {
@ -170,11 +167,6 @@
"commandRunnerHelp": "ڐŚȘŚ” Ś™Ś›Ś•Śœ ŚœŚ”Ś’Ś“Ś™Śš ڀڧڕړڕŚȘ Ś©Ś™Ś‘Ś•ŚŠŚąŚ• Ś‘ŚŚ™ŚšŚ•ŚąŚ™Ś Ś©Ś•Ś Ś™Ś. ŚąŚœŚ™Śš ŚœŚ›ŚȘڕڑ ڐڗړ Ś‘Ś›Śœ Ś©Ś•ŚšŚ”. ŚžŚ©ŚȘŚ Ś™ Ś”ŚĄŚ‘Ś™Ś‘Ś” {0} Ś•-{1} ڙڔڙڕ Ś–ŚžŚ™Ś Ś™Ś, ڑڔڙڕŚȘŚ {0} Ś‘Ś™Ś—ŚĄ ڜ-{1}. ŚœŚžŚ™Ś“Śą Ś Ś•ŚĄŚŁ ŚąŚœ ŚȘڛڕڠڔ Ś–Ś• Ś•ŚąŚœ ŚžŚ©ŚȘŚ Ś™ Ś”ŚĄŚ‘Ś™Ś‘Ś” Ś”Ś–ŚžŚ™Ś Ś™Ś, ŚąŚ™Ś™ŚŸ Ś‘ {2}.", "commandRunnerHelp": "ڐŚȘŚ” Ś™Ś›Ś•Śœ ŚœŚ”Ś’Ś“Ś™Śš ڀڧڕړڕŚȘ Ś©Ś™Ś‘Ś•ŚŠŚąŚ• Ś‘ŚŚ™ŚšŚ•ŚąŚ™Ś Ś©Ś•Ś Ś™Ś. ŚąŚœŚ™Śš ŚœŚ›ŚȘڕڑ ڐڗړ Ś‘Ś›Śœ Ś©Ś•ŚšŚ”. ŚžŚ©ŚȘŚ Ś™ Ś”ŚĄŚ‘Ś™Ś‘Ś” {0} Ś•-{1} ڙڔڙڕ Ś–ŚžŚ™Ś Ś™Ś, ڑڔڙڕŚȘŚ {0} Ś‘Ś™Ś—ŚĄ ڜ-{1}. ŚœŚžŚ™Ś“Śą Ś Ś•ŚĄŚŁ ŚąŚœ ŚȘڛڕڠڔ Ś–Ś• Ś•ŚąŚœ ŚžŚ©ŚȘŚ Ś™ Ś”ŚĄŚ‘Ś™Ś‘Ś” Ś”Ś–ŚžŚ™Ś Ś™Ś, ŚąŚ™Ś™ŚŸ Ś‘ {2}.",
"commandsUpdated": "ڔڀڧڕړڕŚȘ ŚąŚ•Ś“Ś›Ś Ś•!", "commandsUpdated": "ڔڀڧڕړڕŚȘ ŚąŚ•Ś“Ś›Ś Ś•!",
"createUserDir": "ŚŠŚ•Śš ŚŚ•Ś˜Ś•ŚžŚ˜Ś™ŚȘ ŚȘڙڧڙڙŚȘ ڑڙŚȘ Ś‘ŚąŚȘ Ś”Ś•ŚĄŚ€ŚȘ ŚžŚ©ŚȘŚžŚ© ڗړک", "createUserDir": "ŚŠŚ•Śš ŚŚ•Ś˜Ś•ŚžŚ˜Ś™ŚȘ ŚȘڙڧڙڙŚȘ ڑڙŚȘ Ś‘ŚąŚȘ Ś”Ś•ŚĄŚ€ŚȘ ŚžŚ©ŚȘŚžŚ© ڗړک",
"minimumPasswordLength": "Minimum password length",
"tusUploads": "Chunked Uploads",
"tusUploadsHelp": "File Browser supports chunked file uploads, allowing for the creation of efficient, reliable, resumable and chunked file uploads even on unreliable networks.",
"tusUploadsChunkSize": "Indicates to maximum size of a request (direct uploads will be used for smaller uploads). You may input a plain integer denoting byte size input or a string like 10MB, 1GB etc.",
"tusUploadsRetryCount": "Number of retries to perform if a chunk fails to upload.",
"userHomeBasePath": "Ś ŚȘڙڑ ŚšŚŚ©Ś™ ڜŚȘڙڧڙڕŚȘ ڔڑڙŚȘ کڜ ŚžŚ©ŚȘŚžŚ©Ś™Ś", "userHomeBasePath": "Ś ŚȘڙڑ ŚšŚŚ©Ś™ ڜŚȘڙڧڙڕŚȘ ڔڑڙŚȘ کڜ ŚžŚ©ŚȘŚžŚ©Ś™Ś",
"userScopeGenerationPlaceholder": "Ś”Ś”Ś™Ś§ŚŁ Ś™Ś•Ś•ŚŠŚš ŚŚ•Ś˜Ś•ŚžŚ˜Ś™ŚȘ", "userScopeGenerationPlaceholder": "Ś”Ś”Ś™Ś§ŚŁ Ś™Ś•Ś•ŚŠŚš ŚŚ•Ś˜Ś•ŚžŚ˜Ś™ŚȘ",
"createUserHomeDirectory": "ŚŠŚ•Śš ŚȘڙڧڙڙŚȘ ڑڙŚȘ ŚœŚžŚ©ŚȘŚžŚ©", "createUserHomeDirectory": "ŚŠŚ•Śš ŚȘڙڧڙڙŚȘ ڑڙŚȘ ŚœŚžŚ©ŚȘŚžŚ©",
@ -224,7 +216,6 @@
"shareDeleted": "ڔکڙŚȘŚ•ŚŁ Ś ŚžŚ—Ś§!", "shareDeleted": "ڔکڙŚȘŚ•ŚŁ Ś ŚžŚ—Ś§!",
"singleClick": "ڔکŚȘŚžŚ© Ś‘ŚœŚ—Ś™ŚŠŚ” ڑڕړړŚȘ ڛړڙ ڜڀŚȘڕڗ ڧڕڑڄ/ŚȘڙڧڙڙڔ", "singleClick": "ڔکŚȘŚžŚ© Ś‘ŚœŚ—Ś™ŚŠŚ” ڑڕړړŚȘ ڛړڙ ڜڀŚȘڕڗ ڧڕڑڄ/ŚȘڙڧڙڙڔ",
"themes": { "themes": {
"default": "System default",
"dark": "ڛڔڔ", "dark": "ڛڔڔ",
"light": "Ś‘Ś”Ś™Śš", "light": "Ś‘Ś”Ś™Śš",
"title": "ŚąŚšŚ›ŚȘ ڠڕکڐ" "title": "ŚąŚšŚ›ŚȘ ڠڕکڐ"

View File

@ -3,17 +3,14 @@
"cancel": "Mégse", "cancel": "Mégse",
"clear": "Törlése", "clear": "Törlése",
"close": "BezĂĄrĂĄs", "close": "BezĂĄrĂĄs",
"continue": "Continue",
"copy": "MĂĄsolĂĄs", "copy": "MĂĄsolĂĄs",
"copyFile": "FĂĄjl mĂĄsolĂĄsa", "copyFile": "FĂĄjl mĂĄsolĂĄsa",
"copyToClipboard": "MĂĄsolĂĄs vĂĄgĂłlapra", "copyToClipboard": "MĂĄsolĂĄs vĂĄgĂłlapra",
"copyDownloadLinkToClipboard": "Copy download link to clipboard",
"create": "Létrehozås", "create": "Létrehozås",
"delete": "Törlése", "delete": "Törlése",
"download": "Letöltés", "download": "Letöltés",
"file": "FĂĄjl", "file": "FĂĄjl",
"folder": "Mappa", "folder": "Mappa",
"fullScreen": "Toggle full screen",
"hideDotfiles": "Rejtett fåjlok elrejtése", "hideDotfiles": "Rejtett fåjlok elrejtése",
"info": "InfĂł", "info": "InfĂł",
"more": "TovĂĄbbi", "more": "TovĂĄbbi",
@ -24,7 +21,6 @@
"ok": "OK", "ok": "OK",
"permalink": "Állandó link lekérése", "permalink": "Állandó link lekérése",
"previous": "ElƑzƑ", "previous": "ElƑzƑ",
"preview": "Preview",
"publish": "PublikĂĄlĂĄsa", "publish": "PublikĂĄlĂĄsa",
"rename": "Átnevezés", "rename": "Átnevezés",
"replace": "Csere", "replace": "Csere",
@ -41,17 +37,13 @@
"toggleSidebar": "OldalsĂĄv ĂĄtvĂĄltĂĄsa", "toggleSidebar": "OldalsĂĄv ĂĄtvĂĄltĂĄsa",
"update": "Frissítés", "update": "Frissítés",
"upload": "Feltöltés", "upload": "Feltöltés",
"openFile": "FĂĄjl megnyitĂĄsa", "openFile": "FĂĄjl megnyitĂĄsa"
"discardChanges": "Discard"
}, },
"download": { "download": {
"downloadFile": "Fåjl letöltése", "downloadFile": "Fåjl letöltése",
"downloadFolder": "Mappa letöltése", "downloadFolder": "Mappa letöltése",
"downloadSelected": "Kijelölés letöltése" "downloadSelected": "Kijelölés letöltése"
}, },
"upload": {
"abortUpload": "Are you sure you wish to abort?"
},
"errors": { "errors": {
"forbidden": "Nincs jogosultsåga a hozzåféréshez.", "forbidden": "Nincs jogosultsåga a hozzåféréshez.",
"internal": "Valami nagyon elromlott.", "internal": "Valami nagyon elromlott.",
@ -110,7 +102,6 @@
"deleteMessageMultiple": "Biztosan törölni szeretne {count} fåjlt?", "deleteMessageMultiple": "Biztosan törölni szeretne {count} fåjlt?",
"deleteMessageSingle": "Biztosan törölni szeretné ezt a fåjl vagy mappåt?", "deleteMessageSingle": "Biztosan törölni szeretné ezt a fåjl vagy mappåt?",
"deleteMessageShare": "Biztosan törölni szeretné ezt a megosztåst ({path})?", "deleteMessageShare": "Biztosan törölni szeretné ezt a megosztåst ({path})?",
"deleteUser": "Are you sure you want to delete this user?",
"deleteTitle": "Fåjlok törlése", "deleteTitle": "Fåjlok törlése",
"displayName": "Megjelenített név:", "displayName": "Megjelenített név:",
"download": "Fåjlok letöltése", "download": "Fåjlok letöltése",
@ -139,9 +130,7 @@
"upload": "Feltöltés", "upload": "Feltöltés",
"uploadFiles": "{files} fĂĄjl feltöltĂ©se
", "uploadFiles": "{files} fĂĄjl feltöltĂ©se
",
"uploadMessage": "Vålasszon egy feltöltési módot.", "uploadMessage": "Vålasszon egy feltöltési módot.",
"optionalPassword": "VĂĄlaszthatĂł jelszĂł", "optionalPassword": "VĂĄlaszthatĂł jelszĂł"
"resolution": "Resolution",
"discardEditorChanges": "Are you sure you wish to discard the changes you've made?"
}, },
"search": { "search": {
"images": "Képek", "images": "Képek",
@ -170,18 +159,12 @@
"commandRunnerHelp": "BeĂĄllĂ­thatja azokat a parancsokat, amelyek a megnevezett esemĂ©nyek sorĂĄn vĂ©grehajtĂĄsra kerĂŒlnek. SoronkĂ©nt egyet kell megadni. A {0} Ă©s a {1} környezeti vĂĄltozĂłk lesznek elĂ©rhetƑek, ahol a {0} relatĂ­v a {1}-hez. A funkciĂłrĂłl Ă©s a rendelkezĂ©sre ĂĄllĂł környezeti vĂĄltozĂłkrĂłl tovĂĄbbi informĂĄciĂł: {2}.", "commandRunnerHelp": "BeĂĄllĂ­thatja azokat a parancsokat, amelyek a megnevezett esemĂ©nyek sorĂĄn vĂ©grehajtĂĄsra kerĂŒlnek. SoronkĂ©nt egyet kell megadni. A {0} Ă©s a {1} környezeti vĂĄltozĂłk lesznek elĂ©rhetƑek, ahol a {0} relatĂ­v a {1}-hez. A funkciĂłrĂłl Ă©s a rendelkezĂ©sre ĂĄllĂł környezeti vĂĄltozĂłkrĂłl tovĂĄbbi informĂĄciĂł: {2}.",
"commandsUpdated": "Parancsok frissĂ­tve!", "commandsUpdated": "Parancsok frissĂ­tve!",
"createUserDir": "FelhasznĂĄlĂłk sajĂĄt mappĂĄinak automatikus lĂ©trehozĂĄsa Ășj felhasznĂĄlĂłk hozzĂĄadĂĄsakor", "createUserDir": "FelhasznĂĄlĂłk sajĂĄt mappĂĄinak automatikus lĂ©trehozĂĄsa Ășj felhasznĂĄlĂłk hozzĂĄadĂĄsakor",
"minimumPasswordLength": "Minimum password length",
"tusUploads": "Chunked Uploads",
"tusUploadsHelp": "File Browser supports chunked file uploads, allowing for the creation of efficient, reliable, resumable and chunked file uploads even on unreliable networks.",
"tusUploadsChunkSize": "Indicates to maximum size of a request (direct uploads will be used for smaller uploads). You may input a plain integer denoting byte size input or a string like 10MB, 1GB etc.",
"tusUploadsRetryCount": "Number of retries to perform if a chunk fails to upload.",
"userHomeBasePath": "Alap elĂ©rĂ©si Ăștvonal a felhasznĂĄlĂłk sajĂĄt mappĂĄihoz", "userHomeBasePath": "Alap elĂ©rĂ©si Ăștvonal a felhasznĂĄlĂłk sajĂĄt mappĂĄihoz",
"userScopeGenerationPlaceholder": "A környezet automatikus lesz létrehozva", "userScopeGenerationPlaceholder": "A környezet automatikus lesz létrehozva",
"createUserHomeDirectory": "Felhasznålói sajåt mappåk létrehozåsa", "createUserHomeDirectory": "Felhasznålói sajåt mappåk létrehozåsa",
"customStylesheet": "Egyéni stíluslap", "customStylesheet": "Egyéni stíluslap",
"defaultUserDescription": "Ezek az alapĂ©rtelmezett beĂĄllĂ­tĂĄsok az Ășj felhasznĂĄlĂłk szĂĄmĂĄra.", "defaultUserDescription": "Ezek az alapĂ©rtelmezett beĂĄllĂ­tĂĄsok az Ășj felhasznĂĄlĂłk szĂĄmĂĄra.",
"disableExternalLinks": "KĂŒlsƑ linkek letiltĂĄsa (kivĂ©ve a dokumentĂĄciĂł)", "disableExternalLinks": "KĂŒlsƑ linkek letiltĂĄsa (kivĂ©ve a dokumentĂĄciĂł)",
"disableUsedDiskPercentage": "Disable used disk percentage graph",
"documentation": "dokumentĂĄciĂł", "documentation": "dokumentĂĄciĂł",
"examples": "Példåk", "examples": "Példåk",
"executeOnShell": "FuttatĂĄs parancsĂ©rtelmezƑben", "executeOnShell": "FuttatĂĄs parancsĂ©rtelmezƑben",
@ -224,7 +207,6 @@
"shareDeleted": "Megosztås törölve!", "shareDeleted": "Megosztås törölve!",
"singleClick": "Fåjlok és könyvtårak megnyitåsa egyetlen kattintåssal", "singleClick": "Fåjlok és könyvtårak megnyitåsa egyetlen kattintåssal",
"themes": { "themes": {
"default": "System default",
"dark": "Sötét", "dark": "Sötét",
"light": "VilĂĄgos", "light": "VilĂĄgos",
"title": "Téma" "title": "Téma"

View File

@ -26,7 +26,6 @@ import("dayjs/locale/uk");
import("dayjs/locale/vi"); import("dayjs/locale/vi");
import("dayjs/locale/zh-cn"); import("dayjs/locale/zh-cn");
import("dayjs/locale/zh-tw"); import("dayjs/locale/zh-tw");
import("dayjs/locale/cs");
// All i18n resources specified in the plugin `include` option can be loaded // All i18n resources specified in the plugin `include` option can be loaded
// at once using the import syntax // at once using the import syntax

View File

@ -3,18 +3,13 @@
"cancel": "HÊtta við", "cancel": "HÊtta við",
"clear": "Hreinsa", "clear": "Hreinsa",
"close": "Loka", "close": "Loka",
"continue": "Continue",
"copy": "Afrita", "copy": "Afrita",
"copyFile": "Afrita skjal", "copyFile": "Afrita skjal",
"copyToClipboard": "Afrita", "copyToClipboard": "Afrita",
"copyDownloadLinkToClipboard": "Copy download link to clipboard",
"create": "BĂșa til", "create": "BĂșa til",
"delete": "Eyða", "delete": "Eyða",
"download": "SĂŠkja", "download": "SĂŠkja",
"file": "File", "hideDotfiles": "",
"folder": "Folder",
"fullScreen": "Toggle full screen",
"hideDotfiles": "Hide dotfiles",
"info": "UpplĂœsingar", "info": "UpplĂœsingar",
"more": "Meira", "more": "Meira",
"move": "FĂŠra", "move": "FĂŠra",
@ -24,7 +19,6 @@
"ok": "OK", "ok": "OK",
"permalink": "SĂŠkja fastan hlekk", "permalink": "SĂŠkja fastan hlekk",
"previous": "Fyrri", "previous": "Fyrri",
"preview": "Preview",
"publish": "Gefa Ășt", "publish": "Gefa Ășt",
"rename": "Endurnefna", "rename": "Endurnefna",
"replace": "Skipta Ășt", "replace": "Skipta Ășt",
@ -36,27 +30,20 @@
"selectMultiple": "Velja mörg", "selectMultiple": "Velja mörg",
"share": "Deila", "share": "Deila",
"shell": "SĂœna skipanaglugga", "shell": "SĂœna skipanaglugga",
"submit": "Submit",
"switchView": "Skipta um Ăștlit", "switchView": "Skipta um Ăștlit",
"toggleSidebar": "SĂœna hliðarstiku", "toggleSidebar": "SĂœna hliðarstiku",
"update": "Vista", "update": "Vista",
"upload": "Hlaða upp", "upload": "Hlaða upp"
"openFile": "Open file",
"discardChanges": "Discard"
}, },
"download": { "download": {
"downloadFile": "SĂŠkja skjal", "downloadFile": "SĂŠkja skjal",
"downloadFolder": "SÊkja möppu", "downloadFolder": "SÊkja möppu",
"downloadSelected": "Download Selected" "downloadSelected": ""
},
"upload": {
"abortUpload": "Are you sure you wish to abort?"
}, },
"errors": { "errors": {
"forbidden": "ÞĂș hefur ekki aðgang að ĂŸessari síðu.", "forbidden": "ÞĂș hefur ekki aðgang að ĂŸessari síðu.",
"internal": "Eitthvað fĂłr Ășrskeiðis.", "internal": "Eitthvað fĂłr Ășrskeiðis.",
"notFound": "Ekki er hĂŠgt að opna ĂŸessa síðu.", "notFound": "Ekki er hĂŠgt að opna ĂŸessa síðu."
"connection": "The server can't be reached."
}, },
"files": { "files": {
"body": "MeginmĂĄl", "body": "MeginmĂĄl",
@ -73,8 +60,7 @@
"size": "StÊrð", "size": "StÊrð",
"sortByLastModified": "Flokka eftir Seinast breytt", "sortByLastModified": "Flokka eftir Seinast breytt",
"sortByName": "Flokka eftir nafni", "sortByName": "Flokka eftir nafni",
"sortBySize": "Flokka eftir stÊrð", "sortBySize": "Flokka eftir stÊrð"
"noPreview": "Preview is not available for this file."
}, },
"help": { "help": {
"click": "velja skjal eða möppu", "click": "velja skjal eða möppu",
@ -109,8 +95,6 @@
"currentlyNavigating": "NĂșverandi staðsetning:", "currentlyNavigating": "NĂșverandi staðsetning:",
"deleteMessageMultiple": "Ertu viss um að ĂŸĂș viljir eyða {count} skjölum?", "deleteMessageMultiple": "Ertu viss um að ĂŸĂș viljir eyða {count} skjölum?",
"deleteMessageSingle": "Ertu viss um að ĂŸĂș viljir eyða ĂŸessu skjali/möppu?", "deleteMessageSingle": "Ertu viss um að ĂŸĂș viljir eyða ĂŸessu skjali/möppu?",
"deleteMessageShare": "Are you sure you wish to delete this share({path})?",
"deleteUser": "Are you sure you want to delete this user?",
"deleteTitle": "Eyða skjölum", "deleteTitle": "Eyða skjölum",
"displayName": "Nafn: ", "displayName": "Nafn: ",
"download": "SÊkja skjöl", "download": "SÊkja skjöl",
@ -136,12 +120,8 @@
"scheduleMessage": "Veldu dagsetningu og tĂ­ma fyrir ĂĄĂŠtlaða ĂștgĂĄfu. ", "scheduleMessage": "Veldu dagsetningu og tĂ­ma fyrir ĂĄĂŠtlaða ĂștgĂĄfu. ",
"show": "SĂœna", "show": "SĂœna",
"size": "StÊrð", "size": "StÊrð",
"upload": "Upload", "upload": "",
"uploadFiles": "Uploading {files} files...", "uploadMessage": ""
"uploadMessage": "Select an option to upload.",
"optionalPassword": "Optional password",
"resolution": "Resolution",
"discardEditorChanges": "Are you sure you wish to discard the changes you've made?"
}, },
"search": { "search": {
"images": "Myndir", "images": "Myndir",
@ -170,14 +150,6 @@
"commandRunnerHelp": "HĂ©r geturðu sett inn skipanir sem eru keyrðar eftir ĂŸvĂ­ sem ĂŸĂș tilgreinir. Skrifaðu eina skipun Ă­ hverja lĂ­nu. Umhverfisbreyturnar {0} og {1} verða aðgengilegar ({0} miðast við {1}). Til að lesa meira og sjĂĄ lista yfir ĂŸĂŠr skipanir sem eru Ă­ boði, vinsamlegast lestu {2}. ", "commandRunnerHelp": "HĂ©r geturðu sett inn skipanir sem eru keyrðar eftir ĂŸvĂ­ sem ĂŸĂș tilgreinir. Skrifaðu eina skipun Ă­ hverja lĂ­nu. Umhverfisbreyturnar {0} og {1} verða aðgengilegar ({0} miðast við {1}). Til að lesa meira og sjĂĄ lista yfir ĂŸĂŠr skipanir sem eru Ă­ boði, vinsamlegast lestu {2}. ",
"commandsUpdated": "Skipanastillingar vistaðar!", "commandsUpdated": "Skipanastillingar vistaðar!",
"createUserDir": "Auto create user home dir while adding new user", "createUserDir": "Auto create user home dir while adding new user",
"minimumPasswordLength": "Minimum password length",
"tusUploads": "Chunked Uploads",
"tusUploadsHelp": "File Browser supports chunked file uploads, allowing for the creation of efficient, reliable, resumable and chunked file uploads even on unreliable networks.",
"tusUploadsChunkSize": "Indicates to maximum size of a request (direct uploads will be used for smaller uploads). You may input a plain integer denoting byte size input or a string like 10MB, 1GB etc.",
"tusUploadsRetryCount": "Number of retries to perform if a chunk fails to upload.",
"userHomeBasePath": "Base path for user home directories",
"userScopeGenerationPlaceholder": "The scope will be auto generated",
"createUserHomeDirectory": "Create user home directory",
"customStylesheet": "Custom Stylesheet", "customStylesheet": "Custom Stylesheet",
"defaultUserDescription": "Þetta eru sjĂĄlfgefnar stillingar fyrir nĂœja notendur.", "defaultUserDescription": "Þetta eru sjĂĄlfgefnar stillingar fyrir nĂœja notendur.",
"disableExternalLinks": "SĂœna ytri-hlekki (fyrir utan leiðbeiningar)", "disableExternalLinks": "SĂœna ytri-hlekki (fyrir utan leiðbeiningar)",
@ -188,7 +160,7 @@
"executeOnShellDescription": "SjĂĄlfgefnar stillingar File Browser eru að keyra skipanir beint með ĂŸvĂ­ að sĂŠkja binaries. Ef ĂŸĂș villt keyra skipanir Ă­ skel (t.d. Ă­ Bash eða PowerShell), ĂŸĂĄ geturðu skilgreint ĂŸað hĂ©r með nauðsynlegum arguments og flags. Ef ĂŸetta er stillt, ĂŸĂĄ verður skipuninni bĂŠtt fyrir aftan sem argument. Þetta gildir bÊði um skipanir notenda og event hooks.", "executeOnShellDescription": "SjĂĄlfgefnar stillingar File Browser eru að keyra skipanir beint með ĂŸvĂ­ að sĂŠkja binaries. Ef ĂŸĂș villt keyra skipanir Ă­ skel (t.d. Ă­ Bash eða PowerShell), ĂŸĂĄ geturðu skilgreint ĂŸað hĂ©r með nauðsynlegum arguments og flags. Ef ĂŸetta er stillt, ĂŸĂĄ verður skipuninni bĂŠtt fyrir aftan sem argument. Þetta gildir bÊði um skipanir notenda og event hooks.",
"globalRules": "Þetta eru sjĂĄlfgegnar aðgangsreglur. Þér gilda um alla notendur. ÞĂș getur tilgreint sĂ©rstakar reglur Ă­ stillingum fyrir hvern notenda til að Ăłgilda ĂŸessar reglur. ", "globalRules": "Þetta eru sjĂĄlfgegnar aðgangsreglur. Þér gilda um alla notendur. ÞĂș getur tilgreint sĂ©rstakar reglur Ă­ stillingum fyrir hvern notenda til að Ăłgilda ĂŸessar reglur. ",
"globalSettings": "Global stillingar", "globalSettings": "Global stillingar",
"hideDotfiles": "Hide dotfiles", "hideDotfiles": "",
"insertPath": "Settu inn slóð", "insertPath": "Settu inn slóð",
"insertRegex": "Setja inn reglulega segð", "insertRegex": "Setja inn reglulega segð",
"instanceName": "Nafn tilviks", "instanceName": "Nafn tilviks",
@ -199,7 +171,7 @@
"newUser": "NĂœr notandi", "newUser": "NĂœr notandi",
"password": "Lykilorð", "password": "Lykilorð",
"passwordUpdated": "Lykilorð vistað!", "passwordUpdated": "Lykilorð vistað!",
"path": "Path", "path": "",
"perm": { "perm": {
"create": "BĂșa til sköl og möppur", "create": "BĂșa til sköl og möppur",
"delete": "Eyða skjölum og möppum", "delete": "Eyða skjölum og möppum",
@ -217,17 +189,14 @@
"rules": "Reglur", "rules": "Reglur",
"rulesHelp": "HĂ©r getur ĂŸĂș skilgreint hvaða reglur gilda um notandann. Skjölin sem hann hefur ekki aðgang að eru Ăłaðgengileg og hann sĂ©r ĂŸau ekki. Stuðst er við reglulegar segðir og slóðir sem miðast við sĂœn notandans. ", "rulesHelp": "HĂ©r getur ĂŸĂș skilgreint hvaða reglur gilda um notandann. Skjölin sem hann hefur ekki aðgang að eru Ăłaðgengileg og hann sĂ©r ĂŸau ekki. Stuðst er við reglulegar segðir og slóðir sem miðast við sĂœn notandans. ",
"scope": "SĂœn notandans", "scope": "SĂœn notandans",
"setDateFormat": "Set exact date format",
"settingsUpdated": "Stillingar vistaðar!", "settingsUpdated": "Stillingar vistaðar!",
"shareDuration": "Share Duration", "shareDuration": "",
"shareManagement": "Share Management", "shareManagement": "",
"shareDeleted": "Share deleted!", "singleClick": "",
"singleClick": "Use single clicks to open files and directories",
"themes": { "themes": {
"default": "System default", "dark": "",
"dark": "Dark", "light": "",
"light": "Light", "title": ""
"title": "Theme"
}, },
"user": "Notandi", "user": "Notandi",
"userCommands": "Skipanir", "userCommands": "Skipanir",

View File

@ -7,13 +7,9 @@
"copy": "Copia", "copy": "Copia",
"copyFile": "Copia file", "copyFile": "Copia file",
"copyToClipboard": "Copia negli appunti", "copyToClipboard": "Copia negli appunti",
"copyDownloadLinkToClipboard": "Copy download link to clipboard",
"create": "Crea", "create": "Crea",
"delete": "Elimina", "delete": "Elimina",
"download": "Scarica", "download": "Scarica",
"file": "File",
"folder": "Folder",
"fullScreen": "Toggle full screen",
"hideDotfiles": "Nascondi dotfile", "hideDotfiles": "Nascondi dotfile",
"info": "Informazioni", "info": "Informazioni",
"more": "Altro", "more": "Altro",
@ -24,7 +20,6 @@
"ok": "OK", "ok": "OK",
"permalink": "Ottieni link permanente", "permalink": "Ottieni link permanente",
"previous": "Precedente", "previous": "Precedente",
"preview": "Preview",
"publish": "Publica", "publish": "Publica",
"rename": "Rinomina", "rename": "Rinomina",
"replace": "Sostituisci", "replace": "Sostituisci",
@ -36,27 +31,20 @@
"selectMultiple": "Seleziona molteplici", "selectMultiple": "Seleziona molteplici",
"share": "Condividi", "share": "Condividi",
"shell": "Mostra/nascondi shell", "shell": "Mostra/nascondi shell",
"submit": "Submit",
"switchView": "Cambia vista", "switchView": "Cambia vista",
"toggleSidebar": "Mostra/nascondi la barra laterale", "toggleSidebar": "Mostra/nascondi la barra laterale",
"update": "Aggiorna", "update": "Aggiorna",
"upload": "Carica", "upload": "Carica"
"openFile": "Open file",
"discardChanges": "Discard"
}, },
"download": { "download": {
"downloadFile": "Scarica file", "downloadFile": "Scarica file",
"downloadFolder": "Scarica cartella", "downloadFolder": "Scarica cartella",
"downloadSelected": "Scarica selezionati" "downloadSelected": "Scarica selezionati"
}, },
"upload": {
"abortUpload": "Are you sure you wish to abort?"
},
"errors": { "errors": {
"forbidden": "Non hai i permessi per accedere a questo file.", "forbidden": "Non hai i permessi per accedere a questo file.",
"internal": "Qualcosa Ăš andato veramente male.", "internal": "Qualcosa Ăš andato veramente male.",
"notFound": "Questo percorso non puĂČ essere raggiunto.", "notFound": "Questo percorso non puĂČ essere raggiunto."
"connection": "The server can't be reached."
}, },
"files": { "files": {
"body": "Contenuto", "body": "Contenuto",
@ -73,8 +61,7 @@
"size": "Dimensione", "size": "Dimensione",
"sortByLastModified": "Ordina per ultima modifica", "sortByLastModified": "Ordina per ultima modifica",
"sortByName": "Ordina per nome", "sortByName": "Ordina per nome",
"sortBySize": "Ordina per dimensione", "sortBySize": "Ordina per dimensione"
"noPreview": "Preview is not available for this file."
}, },
"help": { "help": {
"click": "seleziona un file o una cartella", "click": "seleziona un file o una cartella",
@ -109,8 +96,6 @@
"currentlyNavigating": "Attualmente navigando su:", "currentlyNavigating": "Attualmente navigando su:",
"deleteMessageMultiple": "Sei sicuro di voler eliminare {count} file?", "deleteMessageMultiple": "Sei sicuro di voler eliminare {count} file?",
"deleteMessageSingle": "Sei sicuro di voler eliminare questo file/cartella?", "deleteMessageSingle": "Sei sicuro di voler eliminare questo file/cartella?",
"deleteMessageShare": "Are you sure you wish to delete this share({path})?",
"deleteUser": "Are you sure you want to delete this user?",
"deleteTitle": "Elimina", "deleteTitle": "Elimina",
"displayName": "Nome visualizzato:", "displayName": "Nome visualizzato:",
"download": "Scarica files", "download": "Scarica files",
@ -137,11 +122,7 @@
"show": "Mostra", "show": "Mostra",
"size": "Dimensione", "size": "Dimensione",
"upload": "Carica", "upload": "Carica",
"uploadFiles": "Uploading {files} files...", "uploadMessage": "Seleziona un'opzione per il caricamento."
"uploadMessage": "Seleziona un'opzione per il caricamento.",
"optionalPassword": "Optional password",
"resolution": "Resolution",
"discardEditorChanges": "Are you sure you wish to discard the changes you've made?"
}, },
"search": { "search": {
"images": "Immagini", "images": "Immagini",
@ -170,14 +151,6 @@
"commandRunnerHelp": "Qui puoi impostare i comandi da eseguire negli eventi nominati. Ne devi scrivere uno per riga. Le variabili d'ambiente {0} e {1} sono disponibili, essendo {0} relativo a {1}. Per altre informazioni su questa funzionalitĂ  e sulle variabili d'ambiente utilizzabili, leggi la {2}.", "commandRunnerHelp": "Qui puoi impostare i comandi da eseguire negli eventi nominati. Ne devi scrivere uno per riga. Le variabili d'ambiente {0} e {1} sono disponibili, essendo {0} relativo a {1}. Per altre informazioni su questa funzionalitĂ  e sulle variabili d'ambiente utilizzabili, leggi la {2}.",
"commandsUpdated": "Comandi aggiornati!", "commandsUpdated": "Comandi aggiornati!",
"createUserDir": "Crea automaticamente la home directory dell'utente quando lo aggiungi", "createUserDir": "Crea automaticamente la home directory dell'utente quando lo aggiungi",
"minimumPasswordLength": "Minimum password length",
"tusUploads": "Chunked Uploads",
"tusUploadsHelp": "File Browser supports chunked file uploads, allowing for the creation of efficient, reliable, resumable and chunked file uploads even on unreliable networks.",
"tusUploadsChunkSize": "Indicates to maximum size of a request (direct uploads will be used for smaller uploads). You may input a plain integer denoting byte size input or a string like 10MB, 1GB etc.",
"tusUploadsRetryCount": "Number of retries to perform if a chunk fails to upload.",
"userHomeBasePath": "Base path for user home directories",
"userScopeGenerationPlaceholder": "The scope will be auto generated",
"createUserHomeDirectory": "Create user home directory",
"customStylesheet": "Foglio di stile personalizzato", "customStylesheet": "Foglio di stile personalizzato",
"defaultUserDescription": "Queste sono le impostazioni predefinite per i nuovi utenti.", "defaultUserDescription": "Queste sono le impostazioni predefinite per i nuovi utenti.",
"disableExternalLinks": "Disabilita link esterni (tranne per la documentazione)", "disableExternalLinks": "Disabilita link esterni (tranne per la documentazione)",
@ -217,14 +190,11 @@
"rules": "Regole", "rules": "Regole",
"rulesHelp": "Qui Ăš possibile definire una serie di regole e permessi per questo specifico utente. I file bloccati non appariranno negli elenchi e non saranno accessibili dagli utenti. all'utente. Sia regex che i percorsi relativi all'ambito di applicazione degli utenti sono supportati.\n", "rulesHelp": "Qui Ăš possibile definire una serie di regole e permessi per questo specifico utente. I file bloccati non appariranno negli elenchi e non saranno accessibili dagli utenti. all'utente. Sia regex che i percorsi relativi all'ambito di applicazione degli utenti sono supportati.\n",
"scope": "Scope", "scope": "Scope",
"setDateFormat": "Set exact date format",
"settingsUpdated": "Impostazioni aggiornate!", "settingsUpdated": "Impostazioni aggiornate!",
"shareDuration": "Durata della condivisione", "shareDuration": "Durata della condivisione",
"shareManagement": "Gestione delle condivisioni", "shareManagement": "Gestione delle condivisioni",
"shareDeleted": "Share deleted!",
"singleClick": "Usa un singolo click per aprire file e cartelle", "singleClick": "Usa un singolo click per aprire file e cartelle",
"themes": { "themes": {
"default": "System default",
"dark": "Scuro", "dark": "Scuro",
"light": "Chiaro", "light": "Chiaro",
"title": "Tema" "title": "Tema"

View File

@ -3,7 +3,6 @@
"cancel": "ă‚­ăƒŁăƒłă‚»ăƒ«", "cancel": "ă‚­ăƒŁăƒłă‚»ăƒ«",
"clear": "クăƒȘă‚ąăƒŒ", "clear": "クăƒȘă‚ąăƒŒ",
"close": "閉じる", "close": "閉じる",
"continue": "ç¶šèĄŒ",
"copy": "ă‚łăƒ”ăƒŒ", "copy": "ă‚łăƒ”ăƒŒ",
"copyFile": "ăƒ•ă‚Ąă‚€ăƒ«ăźă‚łăƒ”ăƒŒ", "copyFile": "ăƒ•ă‚Ąă‚€ăƒ«ăźă‚łăƒ”ăƒŒ",
"copyToClipboard": "ć…±æœ‰ăƒȘăƒłă‚Żă‚’ă‚łăƒ”ăƒŒ", "copyToClipboard": "ć…±æœ‰ăƒȘăƒłă‚Żă‚’ă‚łăƒ”ăƒŒ",
@ -13,7 +12,6 @@
"download": "ăƒ€ă‚Šăƒłăƒ­ăƒŒăƒ‰", "download": "ăƒ€ă‚Šăƒłăƒ­ăƒŒăƒ‰",
"file": "ăƒ•ă‚Ąă‚€ăƒ«", "file": "ăƒ•ă‚Ąă‚€ăƒ«",
"folder": "ăƒ•ă‚©ăƒ«ăƒ€ăƒŒ", "folder": "ăƒ•ă‚©ăƒ«ăƒ€ăƒŒ",
"fullScreen": "Toggle full screen",
"hideDotfiles": "ăƒ‰ăƒƒăƒˆă§ć§‹ăŸă‚‹ăƒ•ă‚Ąă‚€ăƒ«ă‚’èĄšç€șしăȘい", "hideDotfiles": "ăƒ‰ăƒƒăƒˆă§ć§‹ăŸă‚‹ăƒ•ă‚Ąă‚€ăƒ«ă‚’èĄšç€șしăȘい",
"info": "æƒ…ć ±", "info": "æƒ…ć ±",
"more": "さらに", "more": "さらに",
@ -24,7 +22,6 @@
"ok": "OK", "ok": "OK",
"permalink": "ăƒ‘ăƒŒăƒžăƒȘăƒłă‚Żă‚’ć–ćŸ—", "permalink": "ăƒ‘ăƒŒăƒžăƒȘăƒłă‚Żă‚’ć–ćŸ—",
"previous": "才ま", "previous": "才ま",
"preview": "Preview",
"publish": "慬開", "publish": "慬開",
"rename": "ćć‰ăźć€‰æ›Ž", "rename": "ćć‰ăźć€‰æ›Ž",
"replace": "çœźæ›ă™ă‚‹", "replace": "çœźæ›ă™ă‚‹",
@ -42,7 +39,7 @@
"update": "曎新", "update": "曎新",
"upload": "ă‚ąăƒƒăƒ—ăƒ­ăƒŒăƒ‰", "upload": "ă‚ąăƒƒăƒ—ăƒ­ăƒŒăƒ‰",
"openFile": "ăƒ•ă‚Ąă‚€ăƒ«ă‚’é–‹ă", "openFile": "ăƒ•ă‚Ąă‚€ăƒ«ă‚’é–‹ă",
"discardChanges": "Discard" "continue": "ç¶šèĄŒ"
}, },
"download": { "download": {
"downloadFile": "ăƒ•ă‚Ąă‚€ăƒ«ăźăƒ€ă‚Šăƒłăƒ­ăƒŒăƒ‰", "downloadFile": "ăƒ•ă‚Ąă‚€ăƒ«ăźăƒ€ă‚Šăƒłăƒ­ăƒŒăƒ‰",
@ -60,6 +57,7 @@
}, },
"files": { "files": {
"body": "æœŹæ–‡", "body": "æœŹæ–‡",
"clear": "æ¶ˆćŽ»",
"closePreview": "ăƒ—ăƒŹăƒ“ăƒ„ăƒŒă‚’é–‰ă˜ă‚‹", "closePreview": "ăƒ—ăƒŹăƒ“ăƒ„ăƒŒă‚’é–‰ă˜ă‚‹",
"files": "ăƒ•ă‚Ąă‚€ăƒ«", "files": "ăƒ•ă‚Ąă‚€ăƒ«",
"folders": "ăƒ•ă‚©ăƒ«ăƒ€ăƒŒ", "folders": "ăƒ•ă‚©ăƒ«ăƒ€ăƒŒ",
@ -110,7 +108,6 @@
"deleteMessageMultiple": "{count} ć€‹ăźăƒ•ă‚Ąă‚€ăƒ«ă‚’ć‰Šé™€ă—ăŠă‚‚ă‚ˆă‚ă—ă„ă§ă™ă‹ïŒŸ", "deleteMessageMultiple": "{count} ć€‹ăźăƒ•ă‚Ąă‚€ăƒ«ă‚’ć‰Šé™€ă—ăŠă‚‚ă‚ˆă‚ă—ă„ă§ă™ă‹ïŒŸ",
"deleteMessageSingle": "ă“ăźăƒ•ă‚Ąă‚€ăƒ«ïŒăƒ•ă‚©ăƒ«ăƒ€ăƒŒă‚’ć‰Šé™€ă—ăŠă‚‚ă‚ˆă‚ă—ă„ă§ă™ă‹ïŒŸ", "deleteMessageSingle": "ă“ăźăƒ•ă‚Ąă‚€ăƒ«ïŒăƒ•ă‚©ăƒ«ăƒ€ăƒŒă‚’ć‰Šé™€ă—ăŠă‚‚ă‚ˆă‚ă—ă„ă§ă™ă‹ïŒŸ",
"deleteMessageShare": "ć…±æœ‰äž­ăźăƒ•ă‚Ąă‚€ăƒ«ïŒˆ{path}ïŒ‰ă‚’ć‰Šé™€ă—ăŠă‚‚ă‚ˆă‚ă—ă„ă§ă™ă‹ïŒŸ", "deleteMessageShare": "ć…±æœ‰äž­ăźăƒ•ă‚Ąă‚€ăƒ«ïŒˆ{path}ïŒ‰ă‚’ć‰Šé™€ă—ăŠă‚‚ă‚ˆă‚ă—ă„ă§ă™ă‹ïŒŸ",
"deleteUser": "Are you sure you want to delete this user?",
"deleteTitle": "ăƒ•ă‚Ąă‚€ăƒ«ăźć‰Šé™€", "deleteTitle": "ăƒ•ă‚Ąă‚€ăƒ«ăźć‰Šé™€",
"displayName": "èĄšç€șćïŒš", "displayName": "èĄšç€șćïŒš",
"download": "ăƒ•ă‚Ąă‚€ăƒ«ăźăƒ€ă‚Šăƒłăƒ­ăƒŒăƒ‰", "download": "ăƒ•ă‚Ąă‚€ăƒ«ăźăƒ€ă‚Šăƒłăƒ­ăƒŒăƒ‰",
@ -139,9 +136,7 @@
"upload": "ă‚ąăƒƒăƒ—ăƒ­ăƒŒăƒ‰", "upload": "ă‚ąăƒƒăƒ—ăƒ­ăƒŒăƒ‰",
"uploadFiles": "{files} ć€‹ăźăƒ•ă‚Ąă‚€ăƒ«ă‚’ă‚ąăƒƒăƒ—ăƒ­ăƒŒăƒ‰ă—ăŠă„ăŸă™â€Š", "uploadFiles": "{files} ć€‹ăźăƒ•ă‚Ąă‚€ăƒ«ă‚’ă‚ąăƒƒăƒ—ăƒ­ăƒŒăƒ‰ă—ăŠă„ăŸă™â€Š",
"uploadMessage": "ă‚ąăƒƒăƒ—ăƒ­ăƒŒăƒ‰ă™ă‚‹ă‚Șăƒ—ă‚·ăƒ§ăƒłă‚’éžæŠžă—ăŠăă ă•ă„ă€‚", "uploadMessage": "ă‚ąăƒƒăƒ—ăƒ­ăƒŒăƒ‰ă™ă‚‹ă‚Șăƒ—ă‚·ăƒ§ăƒłă‚’éžæŠžă—ăŠăă ă•ă„ă€‚",
"optionalPassword": "パă‚čăƒŻăƒŒăƒ‰ïŒˆă‚Șăƒ—ă‚·ăƒ§ăƒłïŒ‰", "optionalPassword": "パă‚čăƒŻăƒŒăƒ‰ïŒˆă‚Șăƒ—ă‚·ăƒ§ăƒłïŒ‰"
"resolution": "Resolution",
"discardEditorChanges": "Are you sure you wish to discard the changes you've made?"
}, },
"search": { "search": {
"images": "ç”»ćƒ", "images": "ç”»ćƒ",
@ -170,7 +165,6 @@
"commandRunnerHelp": "ă“ă“ă§ăŻă€æŒ‡ćźšă—ăŸă‚€ăƒ™ăƒłăƒˆăźéš›ă«ćźŸèĄŒă•ă‚Œă‚‹ă‚łăƒžăƒłăƒ‰ă‚’èš­ćźšă™ă‚‹ă“ăšăŒă§ăăŸă™ă€‚1èĄŒă«1ă€ăšă€æ›žăćż…èŠăŒă‚ă‚ŠăŸă™ă€‚ç’°ćąƒć€‰æ•°ăšă—ăŠ {0} や {1} ăŒäœżç”šćŻèƒœă§ă€{0} は {1} ă«é–ąé€Łă—ăŸć€‰æ•°ăšă—ăŠæ‰±ă‚ă‚ŒăŸă™ă€‚ă“ăźæ©Ÿèƒœăšäœżç”šćŻèƒœăȘç’°ćąƒć€‰æ•°ăźè©łçŽ°ă«ă€ă„ăŠăŻă€{2}をおèȘ­ăżăă ă•い。", "commandRunnerHelp": "ă“ă“ă§ăŻă€æŒ‡ćźšă—ăŸă‚€ăƒ™ăƒłăƒˆăźéš›ă«ćźŸèĄŒă•ă‚Œă‚‹ă‚łăƒžăƒłăƒ‰ă‚’èš­ćźšă™ă‚‹ă“ăšăŒă§ăăŸă™ă€‚1èĄŒă«1ă€ăšă€æ›žăćż…èŠăŒă‚ă‚ŠăŸă™ă€‚ç’°ćąƒć€‰æ•°ăšă—ăŠ {0} や {1} ăŒäœżç”šćŻèƒœă§ă€{0} は {1} ă«é–ąé€Łă—ăŸć€‰æ•°ăšă—ăŠæ‰±ă‚ă‚ŒăŸă™ă€‚ă“ăźæ©Ÿèƒœăšäœżç”šćŻèƒœăȘç’°ćąƒć€‰æ•°ăźè©łçŽ°ă«ă€ă„ăŠăŻă€{2}をおèȘ­ăżăă ă•い。",
"commandsUpdated": "ă‚łăƒžăƒłăƒ‰ă‚’æ›Žæ–°ă—ăŸă—ăŸïŒ", "commandsUpdated": "ă‚łăƒžăƒłăƒ‰ă‚’æ›Žæ–°ă—ăŸă—ăŸïŒ",
"createUserDir": "æ–°èŠăƒŠăƒŒă‚¶ăƒŒèżœćŠ æ™‚ă«ăƒŠăƒŒă‚¶ăƒŒăźăƒ›ăƒŒăƒ ăƒ‡ă‚ŁăƒŹă‚ŻăƒˆăƒȘをè‡Șć‹•ç”Ÿæˆă™ă‚‹", "createUserDir": "æ–°èŠăƒŠăƒŒă‚¶ăƒŒèżœćŠ æ™‚ă«ăƒŠăƒŒă‚¶ăƒŒăźăƒ›ăƒŒăƒ ăƒ‡ă‚ŁăƒŹă‚ŻăƒˆăƒȘをè‡Șć‹•ç”Ÿæˆă™ă‚‹",
"minimumPasswordLength": "Minimum password length",
"tusUploads": "ăƒăƒŁăƒłă‚Żă•ă‚ŒăŸăƒ•ă‚Ąă‚€ăƒ«ă‚ąăƒƒăƒ—ăƒ­ăƒŒăƒ‰", "tusUploads": "ăƒăƒŁăƒłă‚Żă•ă‚ŒăŸăƒ•ă‚Ąă‚€ăƒ«ă‚ąăƒƒăƒ—ăƒ­ăƒŒăƒ‰",
"tusUploadsHelp": "File Browser ăŻăƒăƒŁăƒłă‚Żă•ă‚ŒăŸăƒ•ă‚Ąă‚€ăƒ«ă‚ąăƒƒăƒ—ăƒ­ăƒŒăƒ‰ă‚’ă‚”ăƒăƒŒăƒˆă—ăŠăŠă‚Šă€äżĄé Œæ€§ăźäœŽă„ăƒăƒƒăƒˆăƒŻăƒŒă‚ŻäžŠă§ă‚‚ă€ćŠčçŽ‡çš„ă§äżĄé Œæ€§ăźé«˜ă„ă€ć†é–‹ćŻèƒœăȘăƒăƒŁăƒłă‚Żă•ă‚ŒăŸăƒ•ă‚Ąă‚€ăƒ«ă‚ąăƒƒăƒ—ăƒ­ăƒŒăƒ‰ă‚’äœœæˆă™ă‚‹ă“ăšăŒă§ăăŸă™ă€‚", "tusUploadsHelp": "File Browser ăŻăƒăƒŁăƒłă‚Żă•ă‚ŒăŸăƒ•ă‚Ąă‚€ăƒ«ă‚ąăƒƒăƒ—ăƒ­ăƒŒăƒ‰ă‚’ă‚”ăƒăƒŒăƒˆă—ăŠăŠă‚Šă€äżĄé Œæ€§ăźäœŽă„ăƒăƒƒăƒˆăƒŻăƒŒă‚ŻäžŠă§ă‚‚ă€ćŠčçŽ‡çš„ă§äżĄé Œæ€§ăźé«˜ă„ă€ć†é–‹ćŻèƒœăȘăƒăƒŁăƒłă‚Żă•ă‚ŒăŸăƒ•ă‚Ąă‚€ăƒ«ă‚ąăƒƒăƒ—ăƒ­ăƒŒăƒ‰ă‚’äœœæˆă™ă‚‹ă“ăšăŒă§ăăŸă™ă€‚",
"tusUploadsChunkSize": "1チャンクあたりぼăƒȘクスă‚čăƒˆăźæœ€ć€§ă‚”ă‚€ă‚șă€‚ăƒă‚€ăƒˆæ•°ă‚’ç€șă™æ•Žæ•°ă‹ă€10MB、1GBăȘă©ăźæ–‡ć­—ćˆ—ă‚’ć…„ćŠ›ă§ăăŸă™ă€‚", "tusUploadsChunkSize": "1チャンクあたりぼăƒȘクスă‚čăƒˆăźæœ€ć€§ă‚”ă‚€ă‚șă€‚ăƒă‚€ăƒˆæ•°ă‚’ç€șă™æ•Žæ•°ă‹ă€10MB、1GBăȘă©ăźæ–‡ć­—ćˆ—ă‚’ć…„ćŠ›ă§ăăŸă™ă€‚",
@ -224,7 +218,6 @@
"shareDeleted": "ăƒ•ă‚Ąă‚€ăƒ«ăźć…±æœ‰ă‚’ć‰Šé™€ă—ăŸă—ăŸïŒ", "shareDeleted": "ăƒ•ă‚Ąă‚€ăƒ«ăźć…±æœ‰ă‚’ć‰Šé™€ă—ăŸă—ăŸïŒ",
"singleClick": "ăƒ€ăƒ–ăƒ«ă‚ŻăƒȘăƒƒă‚Żăźä»Łă‚ă‚Šă«ă‚ŻăƒȘăƒƒă‚Żă§ăƒ•ă‚Ąă‚€ăƒ«ă‚„ăƒ•ă‚©ăƒ«ăƒ€ăƒŒă‚’é–‹ă", "singleClick": "ăƒ€ăƒ–ăƒ«ă‚ŻăƒȘăƒƒă‚Żăźä»Łă‚ă‚Šă«ă‚ŻăƒȘăƒƒă‚Żă§ăƒ•ă‚Ąă‚€ăƒ«ă‚„ăƒ•ă‚©ăƒ«ăƒ€ăƒŒă‚’é–‹ă",
"themes": { "themes": {
"default": "System default",
"dark": "ăƒ€ăƒŒă‚Ż", "dark": "ăƒ€ăƒŒă‚Ż",
"light": "ăƒ©ă‚€ăƒˆ", "light": "ăƒ©ă‚€ăƒˆ",
"title": "ăƒ†ăƒŒăƒž" "title": "ăƒ†ăƒŒăƒž"

View File

@ -3,46 +3,46 @@
"cancel": "췚소", "cancel": "췚소",
"clear": "지우Ʞ", "clear": "지우Ʞ",
"close": "ë‹«êž°", "close": "ë‹«êž°",
"continue": "Continue", "continue": "êł„ì†",
"copy": "ëł”ì‚Ź", "copy": "ëł”ì‚Ź",
"copyFile": "파음 ëł”ì‚Ź", "copyFile": "파음 ëł”ì‚Ź",
"copyToClipboard": "íŽëŠœëłŽë“œ ëł”ì‚Ź", "copyToClipboard": "íŽëŠœëłŽë“œì— ëł”ì‚Ź",
"copyDownloadLinkToClipboard": "Copy download link to clipboard", "copyDownloadLinkToClipboard": "ë‹€ìšŽëĄœë“œ 링큏 íŽëŠœëłŽë“œì— ëł”ì‚Ź",
"create": "생성", "create": "생성",
"delete": "삭제", "delete": "삭제",
"download": "ë‹€ìšŽëĄœë“œ", "download": "ë‹€ìšŽëĄœë“œ",
"file": "File", "file": "파음",
"folder": "Folder", "folder": "폮더",
"fullScreen": "Toggle full screen", "fullScreen": "전ìČŽ 화멎 전환",
"hideDotfiles": "숚êč€íŒŒìŒ(dotfile)을 표시 안핚", "hideDotfiles": "숚êč€ íŒŒìŒ 숚ꞰꞰ",
"info": "ì •ëłŽ", "info": "ì •ëłŽ",
"more": "ë”ëłŽêž°", "more": "더 ëłŽêž°",
"move": "읎동", "move": "읎동",
"moveFile": "파음 읎동", "moveFile": "파음 읎동",
"new": "신규", "new": "ìƒˆëĄœ 만듀Ʞ",
"next": "닀음", "next": "닀음",
"ok": "확읞", "ok": "확읞",
"permalink": "링큏 얻Ʞ", "permalink": "ì˜ê”Ź 링큏 받Ʞ",
"previous": "읎전", "previous": "읎전",
"preview": "Preview", "preview": "ëŻžëŠŹëłŽêž°",
"publish": "êČŒì‹œ", "publish": "êČŒì‹œ",
"rename": "읎늄 바꟞Ʞ", "rename": "읎늄 바꟞Ʞ",
"replace": "대ìČŽ", "replace": "바꟞Ʞ",
"reportIssue": "읎슈 ëłŽë‚Žêž°", "reportIssue": "ëŹžì œ ëłŽêł ",
"save": "저임", "save": "저임",
"schedule": "음정", "schedule": "예앜",
"search": "êČ€ìƒ‰", "search": "êČ€ìƒ‰",
"select": "선택", "select": "선택",
"selectMultiple": "닀쀑 선택", "selectMultiple": "닀쀑 선택",
"share": "êł”ìœ ", "share": "êł”ìœ ",
"shell": "쉘 전환", "shell": "ì…ž 전환",
"submit": "Submit", "submit": "제출",
"switchView": "ëłŽêž° 전환", "switchView": "ëłŽêž° 전환",
"toggleSidebar": "ì‚ŹìŽë“œë°” 전환", "toggleSidebar": "ì‚ŹìŽë“œë°” 전환",
"update": "업데읎튞", "update": "업데읎튞",
"upload": "ì—…ëĄœë“œ", "upload": "ì—…ëĄœë“œ",
"openFile": "Open file", "openFile": "파음 ì—Žêž°",
"discardChanges": "Discard" "discardChanges": "변êČœ ì‚Źí•­ 췚소"
}, },
"download": { "download": {
"downloadFile": "파음 ë‹€ìšŽëĄœë“œ", "downloadFile": "파음 ë‹€ìšŽëĄœë“œ",
@ -50,13 +50,13 @@
"downloadSelected": "선택 항ëȘ© ë‹€ìšŽëĄœë“œ" "downloadSelected": "선택 항ëȘ© ë‹€ìšŽëĄœë“œ"
}, },
"upload": { "upload": {
"abortUpload": "Are you sure you wish to abort?" "abortUpload": "ì—…ëĄœë“œë„Œ 쀑닚하시êČ ìŠ”ë‹ˆêčŒ?"
}, },
"errors": { "errors": {
"forbidden": "ì ‘ê·Œ 권한읎 없슔니닀.", "forbidden": "ìŽêłłì— 접귌할 권한읎 없슔니닀.",
"internal": "였넘가 발생하였슔니닀.", "internal": "ëŹžì œê°€ 발생했슔니닀.",
"notFound": "핮ë‹č êČœëĄœë„Œ 찟을 수 없슔니닀.", "notFound": "읎 위ìč˜ì— 접귌할 수 없슔니닀.",
"connection": "The server can't be reached." "connection": "서ëČ„ì— 연êȰ할 수 없슔니닀."
}, },
"files": { "files": {
"body": "볞돞", "body": "볞돞",
@ -64,193 +64,192 @@
"files": "파음", "files": "파음",
"folders": "폮더", "folders": "폮더",
"home": "홈", "home": "홈",
"lastModified": "ì”œìą… 수정", "lastModified": "마지막 수정음",
"loading": "ëĄœë”©ì€‘...", "loading": "ëĄœë”© 쀑...",
"lonely": "폎더가 ëč„ì–Ž 있슔니닀...", "lonely": "ì—Źêž°ì— ì•„ëŹŽêȃ도 없넀요...",
"metadata": "메타데읎터", "metadata": "메타데읎터",
"multipleSelectionEnabled": "닀쀑 선택 쌜짐", "multipleSelectionEnabled": "닀쀑 선택 활성화됚",
"name": "읎늄", "name": "읎늄",
"size": "íŹêž°", "size": "íŹêž°",
"sortByLastModified": "수정시간순 ì •ë Ź", "sortByLastModified": "마지막 수정음 순 ì •ë Ź",
"sortByName": "읎늄순", "sortByName": "읎늄 순 ì •ë Ź",
"sortBySize": "íŹêž°ìˆœ", "sortBySize": "íŹêž° 순 ì •ë Ź",
"noPreview": "Preview is not available for this file." "noPreview": "읎 파음은 ëŻžëŠŹëłŽêž°ë„Œ ì‚Źìš©í•  수 없슔니닀."
}, },
"help": { "help": {
"click": "파음읎나 ë””ë ‰í† ëŠŹë„Œ ì„ íƒí•ŽìŁŒì„žìš”.", "click": "파음 또는 디렉터멬 선택",
"ctrl": { "ctrl": {
"click": "ì—ŹëŸŹ 개의 파음읎나 ë””ë ‰í† ëŠŹë„Œ ì„ íƒí•ŽìŁŒì„žìš”.", "click": "ì—ŹëŸŹ 파음 또는 디렉터멬 선택",
"f": "êČ€ìƒ‰ì°œ ì—Žêž°", "f": "êČ€ìƒ‰ ì—Žêž°",
"s": "파음 또는 디렉토멬 ë‹€ìšŽëĄœë“œ" "s": "파음 저임 또는 í˜„ìžŹ 디렉터멬 ë‹€ìšŽëĄœë“œ"
}, },
"del": "선택된 파음 삭제", "del": "선택한 항ëȘ© 삭제",
"doubleClick": "파음 또는 디렉토멬 ì—Žêž°", "doubleClick": "파음 또는 디렉터멬 ì—Žêž°",
"esc": "선택 췚소/프롬프튾 ë‹«êž°", "esc": "선택 췚소 및/또는 프롬프튾 ë‹«êž°",
"f1": "ì •ëłŽ", "f1": "읎 ì •ëłŽ",
"f2": "파음 읎늄 변êČœ", "f2": "파음 읎늄 바꟞Ʞ",
"help": "도움말" "help": "도움말"
}, },
"login": { "login": {
"createAnAccount": "êł„ì • 생성", "createAnAccount": "êł„ì • 만듀Ʞ",
"loginInstead": "ìŽëŻž êł„ì •ìŽ 있슔니닀", "loginInstead": "ìŽëŻž êł„ì •ìŽ 있슔니닀",
"password": "ëč„ë°€ëȈ혞", "password": "ëč„ë°€ëȈ혞",
"passwordConfirm": "ëč„ë°€ëȈ혞 확읞", "passwordConfirm": "ëč„ë°€ëȈ혞 확읞",
"passwordsDontMatch": "ëč„ë°€ëČˆí˜žê°€ 음ìč˜í•˜ì§€ 않슔니닀", "passwordsDontMatch": "ëč„ë°€ëČˆí˜žê°€ 음ìč˜í•˜ì§€ 않슔니닀",
"signup": "가입하Ʞ", "signup": "가입",
"submit": "ëĄœê·žìž", "submit": "ëĄœê·žìž",
"username": "ì‚Źìš©ìž 읎늄", "username": "ì‚Źìš©ìž 읎늄",
"usernameTaken": "ì‚Źìš©ìž 읎늄읎 ìĄŽìžŹí•©ë‹ˆë‹€", "usernameTaken": "ìŽëŻž ì‚Źìš© 쀑읞 ì‚Źìš©ìž 읎늄입니닀",
"wrongCredentials": "ì‚Źìš©ìž 읎늄 또는 ëč„ë°€ëČˆí˜žë„Œ 확읞하십시였" "wrongCredentials": "잘ëȘ»ëœ 자êČ© 슝ëȘ…"
}, },
"permanent": "ì˜ê”Ź", "permanent": "ì˜ê”Ź",
"prompts": { "prompts": {
"copy": "ëł”ì‚Ź", "copy": "ëł”ì‚Ź",
"copyMessage": "ëł”ì‚Źí•  디렉토멬:", "copyMessage": "파음을 ëł”ì‚Źí•  위ìč˜ë„Œ 선택하섞요:",
"currentlyNavigating": "í˜„ìžŹ 위ìč˜:", "currentlyNavigating": "í˜„ìžŹ 탐색 쀑:",
"deleteMessageMultiple": "{count} 개의 파음을 삭제하시êČ ìŠ”ë‹ˆêčŒ?", "deleteMessageMultiple": "{count}개의 파음을 삭제하시êČ ìŠ”ë‹ˆêčŒ?",
"deleteMessageSingle": "파음 í˜č은 ë””ë ‰í† ëŠŹë„Œ 삭제하시êČ ìŠ”ë‹ˆêčŒ?", "deleteMessageSingle": "읎 파음/폎더넌 삭제하시êČ ìŠ”ë‹ˆêčŒ?",
"deleteMessageShare": "Are you sure you wish to delete this share({path})?", "deleteMessageShare": "읎 êł”ìœ ({path})넌 삭제하시êČ ìŠ”ë‹ˆêčŒ?",
"deleteUser": "Are you sure you want to delete this user?", "deleteUser": "읎 ì‚Źìš©ìžë„Œ 삭제하시êČ ìŠ”ë‹ˆêčŒ?",
"deleteTitle": "파음 삭제", "deleteTitle": "파음 삭제",
"displayName": "êČŒì‹œ 읎늄:", "displayName": "표시 읎늄:",
"download": "파음 ë‹€ìšŽëĄœë“œ", "download": "파음 ë‹€ìšŽëĄœë“œ",
"downloadMessage": "ë‹€ìšŽëĄœë“œ íŹë§· 섀정.", "downloadMessage": "ë‹€ìšŽëĄœë“œí•  형식을 선택하섞요.",
"error": "ì—ëŸŹ 발생!", "error": "ëŹžì œê°€ 발생했슔니닀",
"fileInfo": "파음 ì •ëłŽ", "fileInfo": "파음 ì •ëłŽ",
"filesSelected": "{count} 개의 파음읎 선택되었슔니닀.", "filesSelected": "{count}개의 파음 선택됚.",
"lastModified": "ì”œìą… 수정", "lastModified": "마지막 수정음",
"move": "읎동", "move": "읎동",
"moveMessage": "읎동할 화음 또는 ë””ë ‰í† ëŠŹë„Œ 선택하섞요:", "moveMessage": "파음/폎더의 새 위ìč˜ë„Œ 선택하섞요:",
"newArchetype": "원형을 유지하는 íŹìŠ€íŠžë„Œ 생성합니닀. 파음은 컚텐튞 폎더에 생성됩니닀.", "newArchetype": "아킀타입을 êž°ë°˜ìœŒëĄœ 새 êČŒì‹œëŹŒì„ 만듭니닀. 파음은 content 폎더에 생성됩니닀.",
"newDir": "새 디렉토멬", "newDir": "새 디렉터멬",
"newDirMessage": "새 디렉토멬 읎늄을 ìž…ë „í•ŽìŁŒì„žìš”.", "newDirMessage": "새 디렉터멬 읎늄을 지정하섞요.",
"newFile": "새 파음", "newFile": "새 파음",
"newFileMessage": "새 파음 읎늄을 ìž…ë „í•ŽìŁŒì„žìš”.", "newFileMessage": "새 파음 읎늄을 지정하섞요.",
"numberDirs": "디렉토멬 수", "numberDirs": "디렉터멬 수",
"numberFiles": "파음 수", "numberFiles": "파음 수",
"rename": "읎늄 변êČœ", "rename": "읎늄 바꟞Ʞ",
"renameMessage": "ìƒˆëĄœìšŽ 읎늄을 입렄하섞요.", "renameMessage": "새 읎늄을 입렄하섞요:",
"replace": "대ìČŽí•˜êž°", "replace": "바꟞Ʞ",
"replaceMessage": "동음한 파음 읎늄읎 ìĄŽìžŹí•©ë‹ˆë‹€. í˜„ìžŹ 파음을 ëźì–Žì“žêčŒìš”?\n", "replaceMessage": "ì—…ëĄœë“œí•˜ë €ëŠ” 파음 쀑 읎늄읎 충돌하는 파음읎 있슔니닀. 읎 파음을 ê±Žë„ˆë›°êł  ì—…ëĄœë“œë„Œ êł„ì†í•˜ê±°ë‚˜ êž°ìĄŽ 파음을 바꟞시êČ ìŠ”ë‹ˆêčŒ?\n",
"schedule": "음정", "schedule": "예앜",
"scheduleMessage": "읎 Ꞁ을 êł”ê°œí•  시간을 ì•Œë €ìŁŒì„žìš”.", "scheduleMessage": "읎 êČŒì‹œëŹŒì˜ êČŒì‹œë„Œ 예앜할 날짜와 시간을 선택하섞요.",
"show": "ëłŽêž°", "show": "표시",
"size": "íŹêž°", "size": "íŹêž°",
"upload": "ì—…ëĄœë“œ", "upload": "ì—…ëĄœë“œ",
"uploadFiles": "Uploading {files} files...", "uploadFiles": "{files}개의 파음 ì—…ëĄœë“œ 쀑...",
"uploadMessage": "ì—…ëĄœë“œ 옔션을 선택하섞요.", "uploadMessage": "ì—…ëĄœë“œí•  옔션을 선택하섞요.",
"optionalPassword": "Optional password", "optionalPassword": "선택적 ëč„ë°€ëȈ혞",
"resolution": "Resolution", "resolution": "핎상도",
"discardEditorChanges": "Are you sure you wish to discard the changes you've made?" "discardEditorChanges": "변êČœ ì‚Źí•­ì„ 췚소하시êČ ìŠ”ë‹ˆêčŒ?"
}, },
"search": { "search": {
"images": "ìŽëŻžì§€", "images": "ìŽëŻžì§€",
"music": "음악", "music": "음악",
"pdf": "PDF", "pdf": "PDF",
"pressToSearch": "êČ€ìƒ‰í•˜ë €ë©Ž 엔터넌 입렄하섞요", "pressToSearch": "Enter 킀넌 눌러 êČ€ìƒ‰...",
"search": "êČ€ìƒ‰...", "search": "êČ€ìƒ‰...",
"typeToSearch": "êČ€ìƒ‰ì–Ž ìž…ë „...", "typeToSearch": "êČ€ìƒ‰ì–Ž ìž…ë „...",
"types": "Types", "types": "유형",
"video": "ëč„디였" "video": "ëč„디였"
}, },
"settings": { "settings": {
"admin": "êŽ€ëŠŹìž", "admin": "êŽ€ëŠŹìž",
"administrator": "êŽ€ëŠŹìž", "administrator": "êŽ€ëŠŹìž",
"allowCommands": "ëȘ…ë č 싀행", "allowCommands": "ëȘ…ë č 싀행 허용",
"allowEdit": "파음/ë””ë ‰í† ëŠŹì˜ 수정/변êČœ/삭제 허용", "allowEdit": "파음 또는 디렉터멬 펞집, 읎늄 바꟞Ʞ, 삭제 허용",
"allowNew": "파음/디렉토멬 생성 허용", "allowNew": "새 파음 및 디렉터멬 생성 허용",
"allowPublish": "새 íŹìŠ€íŠž/페읎지 생성 허용", "allowPublish": "새 êČŒì‹œëŹŒ 및 페읎지 êČŒì‹œ 허용",
"allowSignup": "ì‚Źìš©ìž 가입 허용", "allowSignup": "ì‚Źìš©ìž 가입 허용",
"avoidChanges": "(수정하지 않윌멎 ëč„워두섞요)", "avoidChanges": "(변êČœí•˜ì§€ 않윌렀멎 ëč„워두섞요)",
"branding": "람랜딩", "branding": "람랜딩",
"brandingDirectoryPath": "뾌랜드 디렉토멬 êČœëĄœ", "brandingDirectoryPath": "람랜딩 디렉터멬 êČœëĄœ",
"brandingHelp": "File Browser 읞슀턎슀는 읎늄, ëĄœêł , 슀타음 등을 변êČœí•  수 있슔니닀. 자섞한 ì‚Źí•­ì€ ì—Źêž°{0}에서 확읞하섞요.", "brandingHelp": "File Browser 읞슀턎슀의 읎늄 변êČœ, ëĄœêł  ꔐìČŽ, ì‚Źìš©ìž 정의 슀타음 추가, GitHub 왞부 링큏 ëč„활성화넌 톔핎 ëȘšì–‘êłŒ 느낌을 ì‚Źìš©ìž 지정할 수 있슔니닀.\nì‚Źìš©ìž 정의 람랜딩에 대한 자섞한 낎용은 {0}을(넌) 확읞하섞요.",
"changePassword": "ëč„ë°€ëȈ혞 변êČœ", "changePassword": "ëč„ë°€ëȈ혞 변êČœ",
"commandRunner": "ëȘ…ë č 싀행Ʞ", "commandRunner": "ëȘ…ë čì–Ž 싀행Ʞ",
"commandRunnerHelp": "읎ëČ€íŠžì— 핮ë‹č하는 ëȘ…ë č을 섀정하섞요. 쀄ë‹č 1개의 ëȘ…ë č을 적윌섞요. 환êČœ ëł€ìˆ˜{0} 와 {1}읎 ì‚Źìš©ê°€ëŠ„í•˜ë©°, {0} 은 {1}에 상대 êČœëĄœ 입니닀. 자섞한 ì‚Źí•­ì€ {2} 넌 ì°žìĄ°í•˜ì„žìš”.", "commandRunnerHelp": "ì—Źêž°ì„œ 지정된 읎ëČ€íŠžì—ì„œ 싀행될 ëȘ…ë č얎넌 섀정할 수 있슔니닀. 한 쀄에 하나씩 작성핎알 합니닀. 환êČœ ëł€ìˆ˜ {0} 및 {1}을(넌) ì‚Źìš©í•  수 있윌며, {0}은(는) {1}에 상대적입니닀. 읎 êž°ëŠ„êłŒ ì‚Źìš© 가늄한 환êČœ ëł€ìˆ˜ì— 대한 자섞한 낎용은 {2}을(넌) ìœì–ŽëłŽì„žìš”.",
"commandsUpdated": "ëȘ…ë č 수정됚!", "commandsUpdated": "ëȘ…ë čì–Žê°€ 업데읎튞되었슔니닀!",
"createUserDir": "Auto create user home dir while adding new user", "createUserDir": "새 ì‚Źìš©ìž 추가 시 ì‚Źìš©ìž 홈 디렉터멬 자동 생성",
"minimumPasswordLength": "Minimum password length", "tusUploads": "ìȭ큏 ì—…ëĄœë“œ",
"tusUploads": "Chunked Uploads", "tusUploadsHelp": "File Browser는 ìȭ큏 파음 ì—…ëĄœë“œë„Œ ì§€ì›í•˜ì—Ź 불안정한 ë„€íŠžì›ŒíŹì—ì„œë„ íššìœšì ìŽêł  안정적읎며 ìžŹê°œ ê°€ëŠ„í•˜êł  분할된 파음 ì—…ëĄœë“œë„Œ 가늄하êȌ 합니닀.",
"tusUploadsHelp": "File Browser supports chunked file uploads, allowing for the creation of efficient, reliable, resumable and chunked file uploads even on unreliable networks.", "tusUploadsChunkSize": "요ìČ­ì˜ 씜대 íŹêž°ë„Œ 나타냅니닀 (더 작은 ì—…ëĄœë“œì—ëŠ” 직접 ì—…ëĄœë“œê°€ ì‚Źìš©ë©ë‹ˆë‹€). 바읎튞 íŹêž°ë„Œ 나타낮는 음반 정수 또는 10MB, 1GB ë“±êłŒ 같은 ëŹžìžì—Žì„ ìž…ë „í•  수 있슔니닀.",
"tusUploadsChunkSize": "Indicates to maximum size of a request (direct uploads will be used for smaller uploads). You may input a plain integer denoting byte size input or a string like 10MB, 1GB etc.", "tusUploadsRetryCount": "ìȭ큏 ì—…ëĄœë“œ 싀팚 시 ìžŹì‹œë„ 횟수.",
"tusUploadsRetryCount": "Number of retries to perform if a chunk fails to upload.", "userHomeBasePath": "ì‚Źìš©ìž 홈 ë””ë ‰í„°ëŠŹì˜ êž°ëłž êČœëĄœ",
"userHomeBasePath": "Base path for user home directories", "userScopeGenerationPlaceholder": "ëČ”ìœ„ê°€ ìžë™ìœŒëĄœ 생성됩니닀",
"userScopeGenerationPlaceholder": "The scope will be auto generated", "createUserHomeDirectory": "ì‚Źìš©ìž 홈 디렉터멬 생성",
"createUserHomeDirectory": "Create user home directory", "customStylesheet": "ì‚Źìš©ìž 정의 슀타음시튞",
"customStylesheet": "컀슀텀 슀타음시튞", "defaultUserDescription": "새 ì‚Źìš©ìžì˜ êž°ëłž 섀정입니닀.",
"defaultUserDescription": "아래 ì‚Źí•­ì€ 신규 ì‚Źìš©ìžë“€ì— 대한 êž°ëłž 섀정입니닀.", "disableExternalLinks": "왞부 링큏 ëč„활성화 (ëŹžì„œ 제왞)",
"disableExternalLinks": "왞부 링큏 감추Ʞ", "disableUsedDiskPercentage": "ì‚Źìš©ëœ ë””ìŠ€íŹ ëč„윚 귞래프 ëč„활성화",
"disableUsedDiskPercentage": "Disable used disk percentage graph",
"documentation": "ëŹžì„œ", "documentation": "ëŹžì„œ",
"examples": "예", "examples": "예시",
"executeOnShell": "쉘에서 싀행", "executeOnShell": "셞에서 싀행",
"executeOnShellDescription": "êž°ëłžì ìœŒëĄœ File Browser 는 ë°”ìŽë„ˆëŠŹë„Œ ëȘ…ë čì–ŽëĄœ í˜žì¶œí•˜ì—Ź 싀행합니닀. 쉘을 톔핎 싀행하Ʞ넌 원한닀멎, Bash 또는 PowerShell 에 필요한 읞수와 플래귞넌 섀정하섞요. ì‚Źìš©ìž ëȘ…ë č얎와 읎ëȀ튞 훅에 ëȘšë‘ 적용됩니닀.", "executeOnShellDescription": "êž°ëłžì ìœŒëĄœ File Browser는 ë°”ìŽë„ˆëŠŹë„Œ 직접 í˜žì¶œí•˜ì—Ź ëȘ…ë č을 싀행합니닀. 대신 ì…ž(예: Bash 또는 PowerShell)에서 싀행하렀멎 필요한 읞수 및 플래귞와 핚께 ì—Źêž°ì— 정의할 수 있슔니닀. 섀정된 êČœìš° 싀행하는 ëȘ…ë č읎 ìžìˆ˜ëĄœ 추가됩니닀. 읎는 ì‚Źìš©ìž ëȘ…ë čêłŒ 읎ëȀ튞 후크 ëȘšë‘ì— 적용됩니닀.",
"globalRules": "규ìč™ì— 대한 ì „ì—­ì„€ì •ìœŒëĄœ ëȘšë“  ì‚Źìš©ìžì—êȌ 적용됩니닀. 지정된 규ìč™ì€ ì‚Źìš©ìž 섀정을 ëźì–Žì“°êž° 합니닀.", "globalRules": "읎êČƒì€ 전역 허용 및 찚닚 규ìč™ ì„žíŠžìž…ë‹ˆë‹€. ëȘšë“  ì‚Źìš©ìžì—êȌ 적용됩니닀. 각 ì‚Źìš©ìž 섀정에서 íŠč정 규ìč™ì„ ì •ì˜í•˜ì—Ź 읎 규ìč™ì„ ìžŹì •ì˜í•  수 있슔니닀.",
"globalSettings": "전역 섀정", "globalSettings": "전역 섀정",
"hideDotfiles": "숚êč€íŒŒìŒ(dotfile)을 표시하지 않슔니닀.", "hideDotfiles": "숚êč€ íŒŒìŒ 숚ꞰꞰ",
"insertPath": "êČœëĄœ ìž…ë „", "insertPath": "êČœëĄœ 삜입",
"insertRegex": "정규식 ìž…ë „", "insertRegex": "정규식 표현 삜입",
"instanceName": "읞슀턎슀 읎늄", "instanceName": "읞슀턎슀 읎늄",
"language": "ì–žì–Ž", "language": "ì–žì–Ž",
"lockPassword": "ì‚Źìš©ìžì— 의한 ëč„ë°€ëȈ혞 변êČœì„ 허용하지 않음", "lockPassword": "ì‚Źìš©ìžê°€ ëč„ë°€ëČˆí˜žë„Œ 변êČœí•˜ì§€ ëȘ»í•˜ë„록 잠ꞈ",
"newPassword": "ìƒˆëĄœìšŽ ëč„ë°€ëȈ혞", "newPassword": "새 ëč„ë°€ëȈ혞",
"newPasswordConfirm": "ìƒˆëĄœìšŽ ëč„ë°€ëȈ혞 확읞", "newPasswordConfirm": "새 ëč„ë°€ëȈ혞 확읞",
"newUser": "ìƒˆëĄœìšŽ ì‚Źìš©ìž", "newUser": "새 ì‚Źìš©ìž",
"password": "ëč„ë°€ëȈ혞", "password": "ëč„ë°€ëȈ혞",
"passwordUpdated": "ëč„ë°€ëȈ혞 수정 ì™„ëŁŒ!", "passwordUpdated": "ëč„ë°€ëČˆí˜žê°€ 업데읎튞되었슔니닀!",
"path": "êČœëĄœ", "path": "êČœëĄœ",
"perm": { "perm": {
"create": "파음읎나 디렉토멬 생성하Ʞ", "create": "파음 및 디렉터멬 생성",
"delete": "화음읎나 디렉토멬 삭제하Ʞ", "delete": "파음 및 디렉터멬 삭제",
"download": "ë‹€ìšŽëĄœë“œ", "download": "ë‹€ìšŽëĄœë“œ",
"execute": "ëȘ…ë č 싀행", "execute": "ëȘ…ë č 싀행",
"modify": "파음 펞집", "modify": "파음 펞집",
"rename": "파음 읎늄 변êČœ 또는 디렉토멬 읎동", "rename": "파음 및 디렉터멬 읎늄 바꟞Ʞ 또는 읎동",
"share": "파음 êł”ìœ í•˜êž°" "share": "파음 êł”ìœ "
}, },
"permissions": "권한", "permissions": "권한",
"permissionsHelp": "ì‚Źìš©ìžë„Œ êŽ€ëŠŹìžëĄœ 만듀거나 권한을 ë¶€ì—Źí•  수 있슔니닀. êŽ€ëŠŹìžë„Œ 선택하멎, ëȘšë“  옔션읎 ìžë™ìœŒëĄœ 선택됩니닀. ì‚Źìš©ìž êŽ€ëŠŹëŠ” í˜„ìžŹ êŽ€ëŠŹìžë§Œ 할 수 있슔니닀.\n", "permissionsHelp": "ì‚Źìš©ìžë„Œ êŽ€ëŠŹìžëĄœ 섀정하거나 ê°œëł„ì ìœŒëĄœ 권한을 선택할 수 있슔니닀. \"êŽ€ëŠŹìž\"넌 선택하멎 닀넞 ëȘšë“  옔션읎 ìžë™ìœŒëĄœ 선택됩니닀. ì‚Źìš©ìž êŽ€ëŠŹëŠ” êŽ€ëŠŹìžì˜ ê¶Œí•œìœŒëĄœ 유지됩니닀.\n",
"profileSettings": "프로필 섀정", "profileSettings": "프로필 섀정",
"ruleExample1": "점(.)ìœŒëĄœ 시작하는 ëȘšë“  파음의 접귌을 방지합니닀.(예 .git, .gitignore)\n", "ruleExample1": "ëȘšë“  폎더에서 ëȘšë“  숚êč€ íŒŒìŒ(예: .git, .gitignore)에 대한 ì•Ąì„žìŠ€ë„Œ 방지합니닀.\n",
"ruleExample2": "Caddyfile파음의 접귌을 방지합니닀.", "ruleExample2": "ëČ”ìœ„ì˜ ëŁšíŠžì— 있는 Caddyfile읎띌는 파음에 대한 ì•Ąì„žìŠ€ë„Œ 찚닚합니닀.",
"rules": "룰", "rules": "규ìč™",
"rulesHelp": "ì‚Źìš©ìžëł„ëĄœ 규ìč™ì„ 허용/방지넌 지정할 수 있슔니닀. 방지된 파음은 ëłŽìŽì§€ ì•Šêł  ì‚Źìš©ìžë“€ì€ 접귌할 수 없슔니닀. ì‚Źìš©ìžì˜ ì ‘ê·Œ 허용 ëČ”ìœ„ì™€ ꎀ렚핎 정규표현식(regex)êłŒ êČœëĄœë„Œ 지원합니닀.\n", "rulesHelp": "ì—Źêž°ì„œ 읎 íŠč정 ì‚Źìš©ìžì— 대한 허용 및 찚닚 규ìč™ ì„žíŠžë„Œ 정의할 수 있슔니닀. 찚닚된 파음은 ëȘ©ëĄì— 표시되지 않윌며 ì‚Źìš©ìžê°€ ì•Ąì„žìŠ€í•  수 없슔니닀. ì‚Źìš©ìžì˜ ëČ”ìœ„ì— 상대적읞 정규식 및 êČœëĄœë„Œ 지원합니닀.\n",
"scope": "ëČ”ìœ„", "scope": "ëČ”ìœ„",
"setDateFormat": "Set exact date format", "setDateFormat": "정확한 날짜 형식 섀정",
"settingsUpdated": "섀정 수정됚!", "settingsUpdated": "섀정읎 업데읎튞되었슔니닀!",
"shareDuration": "êł”ìœ  êž°ê°„", "shareDuration": "êł”ìœ  êž°ê°„",
"shareManagement": "êł”ìœ  낎역 êŽ€ëŠŹ", "shareManagement": "êł”ìœ  êŽ€ëŠŹ",
"shareDeleted": "Share deleted!", "shareDeleted": "êł”ìœ ê°€ 삭제되었슔니닀!",
"singleClick": "한ëȈ íŽëŠ­ìœŒëĄœ íŒŒìŒêłŒ 폎더넌 ì—Žë„ëĄ 합니닀.", "singleClick": "파음 및 ë””ë ‰í„°ëŠŹë„Œ ì—Ž 때 한 ëȈ 큎늭 ì‚Źìš©",
"themes": { "themes": {
"default": "System default", "default": "시슀템 êž°ëłžê°’",
"dark": "ë‹€íŹí…Œë§ˆ", "dark": "ì–Žë‘ĄêȌ",
"light": "띌읎튞테마", "light": "밝êȌ",
"title": "테마" "title": "테마"
}, },
"user": "ì‚Źìš©ìž", "user": "ì‚Źìš©ìž",
"userCommands": "ëȘ…ë čì–Ž", "userCommands": "ëȘ…ë čì–Ž",
"userCommandsHelp": "ì‚Źìš©ì—êȌ 허용할 ëȘ…ë č얎넌 êł”ë°±ìœŒëĄœ ê”Źë¶„í•˜ì—Ź 입렄하섞요. 예:\n", "userCommandsHelp": "읎 ì‚Źìš©ìžê°€ ì‚Źìš©í•  수 있는 ëȘ…ë čì–Ž ëȘ©ëĄ (êł”ë°±ìœŒëĄœ ê”Źë¶„). 예:\n",
"userCreated": "ì‚Źìš©ìž 생성됚!", "userCreated": "ì‚Źìš©ìžê°€ 생성되었슔니닀!",
"userDefaults": "ì‚Źìš©ìž êž°ëłž 섀정", "userDefaults": "ì‚Źìš©ìž êž°ëłž 섀정",
"userDeleted": "ì‚Źìš©ìž 삭제됚!", "userDeleted": "ì‚Źìš©ìžê°€ 삭제되었슔니닀!",
"userManagement": "ì‚Źìš©ìž êŽ€ëŠŹ", "userManagement": "ì‚Źìš©ìž êŽ€ëŠŹ",
"userUpdated": "ì‚Źìš©ìž 수정됚!", "userUpdated": "ì‚Źìš©ìžê°€ 업데읎튞되었슔니닀!",
"username": "ì‚Źìš©ìž 읎늄", "username": "ì‚Źìš©ìž 읎늄",
"users": "ì‚Źìš©ìž" "users": "ì‚Źìš©ìž"
}, },
"sidebar": { "sidebar": {
"help": "도움말", "help": "도움말",
"hugoNew": "Hugo New", "hugoNew": "Hugo ìƒˆëĄœ 만듀Ʞ",
"login": "ëĄœê·žìž", "login": "ëĄœê·žìž",
"logout": "ëĄœê·žì•„ì›ƒ", "logout": "ëĄœê·žì•„ì›ƒ",
"myFiles": "낮 파음", "myFiles": "낮 파음",
"newFile": "ìƒˆëĄœìšŽ 파음", "newFile": "새 파음",
"newFolder": "ìƒˆëĄœìšŽ 폮더", "newFolder": "새 폮더",
"preview": "ëŻžëŠŹëłŽêž°", "preview": "ëŻžëŠŹëłŽêž°",
"settings": "섀정", "settings": "섀정",
"signup": "가입하Ʞ", "signup": "가입",
"siteSettings": "ì‚ŹìŽíŠž 섀정" "siteSettings": "ì‚ŹìŽíŠž 섀정"
}, },
"success": { "success": {
@ -258,9 +257,9 @@
}, },
"time": { "time": {
"days": "음", "days": "음",
"hours": "시", "hours": "시간",
"minutes": "분", "minutes": "분",
"seconds": "쎈", "seconds": "쎈",
"unit": "Time Unit" "unit": "시간 닚위"
} }
} }

View File

@ -3,18 +3,13 @@
"cancel": "Annuleren", "cancel": "Annuleren",
"clear": "Wissen", "clear": "Wissen",
"close": "Sluiten", "close": "Sluiten",
"continue": "Continue",
"copy": "Kopiëren", "copy": "Kopiëren",
"copyFile": "Bestand kopiëren", "copyFile": "Bestand kopiëren",
"copyToClipboard": "Kopiëren naar klembord", "copyToClipboard": "Kopiëren naar klembord",
"copyDownloadLinkToClipboard": "Copy download link to clipboard",
"create": "Aanmaken", "create": "Aanmaken",
"delete": "Verwijderen", "delete": "Verwijderen",
"download": "Downloaden", "download": "Downloaden",
"file": "File", "hideDotfiles": "",
"folder": "Folder",
"fullScreen": "Toggle full screen",
"hideDotfiles": "Hide dotfiles",
"info": "Info", "info": "Info",
"more": "Meer", "more": "Meer",
"move": "Verplaatsen", "move": "Verplaatsen",
@ -24,7 +19,6 @@
"ok": "OK", "ok": "OK",
"permalink": "Maak permanente link", "permalink": "Maak permanente link",
"previous": "Vorige", "previous": "Vorige",
"preview": "Preview",
"publish": "Publiceren", "publish": "Publiceren",
"rename": "Hernoemen", "rename": "Hernoemen",
"replace": "Vervangen", "replace": "Vervangen",
@ -36,27 +30,20 @@
"selectMultiple": "Meerdere selecteren", "selectMultiple": "Meerdere selecteren",
"share": "Delen", "share": "Delen",
"shell": "Open shell", "shell": "Open shell",
"submit": "Submit",
"switchView": "Beeld wisselen", "switchView": "Beeld wisselen",
"toggleSidebar": "Zijbalk tonen", "toggleSidebar": "Zijbalk tonen",
"update": "Updaten", "update": "Updaten",
"upload": "Uploaden", "upload": "Uploaden"
"openFile": "Open file",
"discardChanges": "Discard"
}, },
"download": { "download": {
"downloadFile": "Bestand downloaden", "downloadFile": "Bestand downloaden",
"downloadFolder": "Map downloaden", "downloadFolder": "Map downloaden",
"downloadSelected": "Download Selected" "downloadSelected": ""
},
"upload": {
"abortUpload": "Are you sure you wish to abort?"
}, },
"errors": { "errors": {
"forbidden": "U hebt geen rechten om hier toegang toe te krijgen.", "forbidden": "U hebt geen rechten om hier toegang toe te krijgen.",
"internal": "Er ging iets mis.", "internal": "Er ging iets mis.",
"notFound": "Deze locatie kan niet worden bereikt.", "notFound": "Deze locatie kan niet worden bereikt."
"connection": "The server can't be reached."
}, },
"files": { "files": {
"body": "Body", "body": "Body",
@ -73,8 +60,7 @@
"size": "Grootte", "size": "Grootte",
"sortByLastModified": "Sorteren op laatst bewerkt", "sortByLastModified": "Sorteren op laatst bewerkt",
"sortByName": "Sorteren op naam", "sortByName": "Sorteren op naam",
"sortBySize": "Sorteren op grootte", "sortBySize": "Sorteren op grootte"
"noPreview": "Preview is not available for this file."
}, },
"help": { "help": {
"click": "selecteer bestand of map", "click": "selecteer bestand of map",
@ -109,8 +95,6 @@
"currentlyNavigating": "Momenteel zoeken op: ", "currentlyNavigating": "Momenteel zoeken op: ",
"deleteMessageMultiple": "Weet u zeker dat u {count} bestand(en) wil verwijderen?", "deleteMessageMultiple": "Weet u zeker dat u {count} bestand(en) wil verwijderen?",
"deleteMessageSingle": "Weet u zeker dat u dit bestand/map wil verwijderen?", "deleteMessageSingle": "Weet u zeker dat u dit bestand/map wil verwijderen?",
"deleteMessageShare": "Are you sure you wish to delete this share({path})?",
"deleteUser": "Are you sure you want to delete this user?",
"deleteTitle": "Bestanden verwijderen", "deleteTitle": "Bestanden verwijderen",
"displayName": "Weergavenaam: ", "displayName": "Weergavenaam: ",
"download": "Bestanden downloaden", "download": "Bestanden downloaden",
@ -136,12 +120,8 @@
"scheduleMessage": "Kies een datum en tijd om de publicatie van dit bericht in te plannen.", "scheduleMessage": "Kies een datum en tijd om de publicatie van dit bericht in te plannen.",
"show": "Tonen", "show": "Tonen",
"size": "Grootte", "size": "Grootte",
"upload": "Upload", "upload": "",
"uploadFiles": "Uploading {files} files...", "uploadMessage": ""
"uploadMessage": "Select an option to upload.",
"optionalPassword": "Optional password",
"resolution": "Resolution",
"discardEditorChanges": "Are you sure you wish to discard the changes you've made?"
}, },
"search": { "search": {
"images": "Afbeeldingen", "images": "Afbeeldingen",
@ -170,14 +150,6 @@
"commandRunnerHelp": "Hier kunt u opdrachten instellen die worden uitgevoerd in de benoemde gebeurtenissen. U moet er één per regel schrijven. De omgevingsvariabelen {0} en {1} zijn beschikbaar, zijnde {0} relatief ten opzichte van {1}. Raadpleeg {2} voor meer informatie over deze functie en de beschikbare omgevingsvariabelen.", "commandRunnerHelp": "Hier kunt u opdrachten instellen die worden uitgevoerd in de benoemde gebeurtenissen. U moet er één per regel schrijven. De omgevingsvariabelen {0} en {1} zijn beschikbaar, zijnde {0} relatief ten opzichte van {1}. Raadpleeg {2} voor meer informatie over deze functie en de beschikbare omgevingsvariabelen.",
"commandsUpdated": "Commando's bijgewerkt!", "commandsUpdated": "Commando's bijgewerkt!",
"createUserDir": "Maak automatisch een thuismap aan wanneer een nieuwe gebruiker wordt aangemaakt", "createUserDir": "Maak automatisch een thuismap aan wanneer een nieuwe gebruiker wordt aangemaakt",
"minimumPasswordLength": "Minimum password length",
"tusUploads": "Chunked Uploads",
"tusUploadsHelp": "File Browser supports chunked file uploads, allowing for the creation of efficient, reliable, resumable and chunked file uploads even on unreliable networks.",
"tusUploadsChunkSize": "Indicates to maximum size of a request (direct uploads will be used for smaller uploads). You may input a plain integer denoting byte size input or a string like 10MB, 1GB etc.",
"tusUploadsRetryCount": "Number of retries to perform if a chunk fails to upload.",
"userHomeBasePath": "Base path for user home directories",
"userScopeGenerationPlaceholder": "The scope will be auto generated",
"createUserHomeDirectory": "Create user home directory",
"customStylesheet": "Aangepast Stylesheet", "customStylesheet": "Aangepast Stylesheet",
"defaultUserDescription": "Dit zijn de standaardinstellingen voor nieuwe gebruikers.", "defaultUserDescription": "Dit zijn de standaardinstellingen voor nieuwe gebruikers.",
"disableExternalLinks": "Schakel externe links uit (behalve documentatie)", "disableExternalLinks": "Schakel externe links uit (behalve documentatie)",
@ -188,7 +160,7 @@
"executeOnShellDescription": "File Browser voert de opdrachten standaard uit door hun binaire bestanden rechtstreeks op te roepen. Als u ze in plaats daarvan wilt uitvoeren op een shell (zoals Bash of PowerShell), kunt u dit hier definiëren met de vereiste argumenten en vlaggen. Indien ingesteld, wordt de opdracht die u uitvoert, toegevoegd als een argument. Dit is van toepassing op zowel gebruikersopdrachten als event hooks.", "executeOnShellDescription": "File Browser voert de opdrachten standaard uit door hun binaire bestanden rechtstreeks op te roepen. Als u ze in plaats daarvan wilt uitvoeren op een shell (zoals Bash of PowerShell), kunt u dit hier definiëren met de vereiste argumenten en vlaggen. Indien ingesteld, wordt de opdracht die u uitvoert, toegevoegd als een argument. Dit is van toepassing op zowel gebruikersopdrachten als event hooks.",
"globalRules": "Dit is een algemene reeks toegestane en niet toegestane regels. Ze zijn van toepassing op elke gebruiker. U kunt specifieke regels voor de instellingen van elke gebruiker definiëren om deze te overschrijven.", "globalRules": "Dit is een algemene reeks toegestane en niet toegestane regels. Ze zijn van toepassing op elke gebruiker. U kunt specifieke regels voor de instellingen van elke gebruiker definiëren om deze te overschrijven.",
"globalSettings": "Algemene Instellingen", "globalSettings": "Algemene Instellingen",
"hideDotfiles": "Hide dotfiles", "hideDotfiles": "",
"insertPath": "Voeg een pad toe", "insertPath": "Voeg een pad toe",
"insertRegex": "Regex expressie invoeren", "insertRegex": "Regex expressie invoeren",
"instanceName": "Instantienaam", "instanceName": "Instantienaam",
@ -199,7 +171,7 @@
"newUser": "Nieuwe gebruiker", "newUser": "Nieuwe gebruiker",
"password": "Wachtwoord", "password": "Wachtwoord",
"passwordUpdated": "Wachtwoord bijgewerkt!", "passwordUpdated": "Wachtwoord bijgewerkt!",
"path": "Path", "path": "",
"perm": { "perm": {
"create": "Bestanden en mappen aanmaken", "create": "Bestanden en mappen aanmaken",
"delete": "Bestanden en mappen verwijderen", "delete": "Bestanden en mappen verwijderen",
@ -217,17 +189,14 @@
"rules": "Regels", "rules": "Regels",
"rulesHelp": "Hier kunt u een reeks regels voor toestaan en niet toestaan voor deze specifieke gebruiker definiëren. De geblokkeerde bestanden verschijnen niet in de lijsten en zijn niet toegankelijk voor de gebruiker. We ondersteunen regex en paden relatief ten opzichte van het bereik van gebruikers. \n", "rulesHelp": "Hier kunt u een reeks regels voor toestaan en niet toestaan voor deze specifieke gebruiker definiëren. De geblokkeerde bestanden verschijnen niet in de lijsten en zijn niet toegankelijk voor de gebruiker. We ondersteunen regex en paden relatief ten opzichte van het bereik van gebruikers. \n",
"scope": "Scope", "scope": "Scope",
"setDateFormat": "Set exact date format",
"settingsUpdated": "Instellingen bijgewerkt!", "settingsUpdated": "Instellingen bijgewerkt!",
"shareDuration": "Share Duration", "shareDuration": "",
"shareManagement": "Share Management", "shareManagement": "",
"shareDeleted": "Share deleted!", "singleClick": "",
"singleClick": "Use single clicks to open files and directories",
"themes": { "themes": {
"default": "System default", "dark": "",
"dark": "Dark", "light": "",
"light": "Light", "title": ""
"title": "Theme"
}, },
"user": "Gebruiker", "user": "Gebruiker",
"userCommands": "Commando's", "userCommands": "Commando's",

View File

@ -170,7 +170,6 @@
"commandRunnerHelp": "Tu moĆŒesz ustawić polecenia, ktĂłre będą wykonywane przy danych zdarzeniach. Musisz wpisywać po jednym na wiersz. Zmienne ƛrodowiskowe {0} i {1} będą dostępne, gdzie {0} jest względne wobec {1}. Więcej informacji o tej funkcji i dostępnych zmiennych ƛrodowiskowych znajdziesz w {2}.", "commandRunnerHelp": "Tu moĆŒesz ustawić polecenia, ktĂłre będą wykonywane przy danych zdarzeniach. Musisz wpisywać po jednym na wiersz. Zmienne ƛrodowiskowe {0} i {1} będą dostępne, gdzie {0} jest względne wobec {1}. Więcej informacji o tej funkcji i dostępnych zmiennych ƛrodowiskowych znajdziesz w {2}.",
"commandsUpdated": "Polecenie zaktualizowane!", "commandsUpdated": "Polecenie zaktualizowane!",
"createUserDir": "Automatycznie twĂłrz katalog domowy podczas dodawania uĆŒytkownika", "createUserDir": "Automatycznie twĂłrz katalog domowy podczas dodawania uĆŒytkownika",
"minimumPasswordLength": "Minimalna dƂugoƛć hasƂa",
"tusUploads": "PrzesyƂanie we fragmentach", "tusUploads": "PrzesyƂanie we fragmentach",
"tusUploadsHelp": "File Browser wspiera przesyƂanie plikĂłw we fragmentach, co pozwala na proces przesyƂania, ktĂłry jest wydajny, pewny i moĆŒliwy do wznowienia nawet w sieciach o wątpliwej stabilnoƛci przesyƂu danych.", "tusUploadsHelp": "File Browser wspiera przesyƂanie plikĂłw we fragmentach, co pozwala na proces przesyƂania, ktĂłry jest wydajny, pewny i moĆŒliwy do wznowienia nawet w sieciach o wątpliwej stabilnoƛci przesyƂu danych.",
"tusUploadsChunkSize": "Oznacza maksymalny rozmiar przesyƂanych plikĂłw (dla mniejszych plikĂłw uĆŒyte zostanie przesyƂanie bezpoƛrednie). MoĆŒesz ustawić tę wartoƛć zarĂłwno zapisaną samymi cyframi w bajtach, jak i podać ją w formie skrĂłconej, np. poprzez 10MB, 1GB itp.", "tusUploadsChunkSize": "Oznacza maksymalny rozmiar przesyƂanych plikĂłw (dla mniejszych plikĂłw uĆŒyte zostanie przesyƂanie bezpoƛrednie). MoĆŒesz ustawić tę wartoƛć zarĂłwno zapisaną samymi cyframi w bajtach, jak i podać ją w formie skrĂłconej, np. poprzez 10MB, 1GB itp.",

View File

@ -7,13 +7,11 @@
"copy": "Copiar", "copy": "Copiar",
"copyFile": "Copiar arquivo", "copyFile": "Copiar arquivo",
"copyToClipboard": "Copiar", "copyToClipboard": "Copiar",
"copyDownloadLinkToClipboard": "Copy download link to clipboard",
"create": "Criar", "create": "Criar",
"delete": "Apagar", "delete": "Apagar",
"download": "Baixar", "download": "Baixar",
"file": "Arquivo", "file": "Arquivo",
"folder": "Pasta", "folder": "Pasta",
"fullScreen": "Toggle full screen",
"hideDotfiles": "Ocultar dotfiles", "hideDotfiles": "Ocultar dotfiles",
"info": "InformaçÔes", "info": "InformaçÔes",
"more": "Mais", "more": "Mais",
@ -24,7 +22,6 @@
"ok": "OK", "ok": "OK",
"permalink": "Obter link permanente", "permalink": "Obter link permanente",
"previous": "Anterior", "previous": "Anterior",
"preview": "Preview",
"publish": "Publicar", "publish": "Publicar",
"rename": "Renomear", "rename": "Renomear",
"replace": "Substituir", "replace": "Substituir",
@ -42,7 +39,10 @@
"update": "Atualizar", "update": "Atualizar",
"upload": "Enviar", "upload": "Enviar",
"openFile": "Abrir", "openFile": "Abrir",
"discardChanges": "Discard" "copyDownloadLinkToClipboard": "Copiar link de download para a ĂĄrea de transferĂȘncia",
"fullScreen": "Alternar tela cheia",
"preview": "Pré-visualizar",
"discardChanges": "Descartar"
}, },
"download": { "download": {
"downloadFile": "Baixar arquivo", "downloadFile": "Baixar arquivo",
@ -50,7 +50,7 @@
"downloadSelected": "Baixar selecionado" "downloadSelected": "Baixar selecionado"
}, },
"upload": { "upload": {
"abortUpload": "Are you sure you wish to abort?" "abortUpload": "Tem certeza de que deseja abortar o upload?"
}, },
"errors": { "errors": {
"forbidden": "VocĂȘ nĂŁo tem permissĂ”es para acessar isto.", "forbidden": "VocĂȘ nĂŁo tem permissĂ”es para acessar isto.",
@ -65,8 +65,8 @@
"folders": "Pastas", "folders": "Pastas",
"home": "InĂ­cio", "home": "InĂ­cio",
"lastModified": "Última modificação", "lastModified": "Última modificação",
"loading": "Carregando. Aguarde, por favor.", "loading": "Carregando...",
"lonely": "NĂŁo existe nada aqui.", "lonely": "NĂŁo hĂĄ nada aqui...",
"metadata": "Metadados", "metadata": "Metadados",
"multipleSelectionEnabled": "Seleção mĂșltipla ativada", "multipleSelectionEnabled": "Seleção mĂșltipla ativada",
"name": "Nome", "name": "Nome",
@ -80,12 +80,12 @@
"click": "selecionar pasta ou arquivo", "click": "selecionar pasta ou arquivo",
"ctrl": { "ctrl": {
"click": "selecionar vĂĄrias pastas e arquivos", "click": "selecionar vĂĄrias pastas e arquivos",
"f": "pesquisar", "f": "abrir pesquisa",
"s": "salvar um arquivo ou baixar a pasta que vocĂȘ estĂĄ" "s": "salvar um arquivo ou baixar a pasta que vocĂȘ estĂĄ"
}, },
"del": "apagar os arquivos selecionados", "del": "apagar os arquivos selecionados",
"doubleClick": "abrir pasta ou arquivo", "doubleClick": "abrir pasta ou arquivo",
"esc": "limpar seleção e/ou fechar menu", "esc": "limpar seleção e/ou fechar prompt",
"f1": "esta informação", "f1": "esta informação",
"f2": "renomear arquivo", "f2": "renomear arquivo",
"help": "Ajuda" "help": "Ajuda"
@ -110,7 +110,6 @@
"deleteMessageMultiple": "Deseja apagar {count} arquivo(s)?", "deleteMessageMultiple": "Deseja apagar {count} arquivo(s)?",
"deleteMessageSingle": "Deseja apagar esta pasta/arquivo?", "deleteMessageSingle": "Deseja apagar esta pasta/arquivo?",
"deleteMessageShare": "Deseja apagar este compartilhamento ({path})?", "deleteMessageShare": "Deseja apagar este compartilhamento ({path})?",
"deleteUser": "Are you sure you want to delete this user?",
"deleteTitle": "Apagar arquivos", "deleteTitle": "Apagar arquivos",
"displayName": "Nome:", "displayName": "Nome:",
"download": "Baixar arquivos", "download": "Baixar arquivos",
@ -131,7 +130,7 @@
"rename": "Renomear", "rename": "Renomear",
"renameMessage": "Insira um novo nome para", "renameMessage": "Insira um novo nome para",
"replace": "Substituir", "replace": "Substituir",
"replaceMessage": "JĂĄ existe um arquivo com nome igual a um dos que estĂĄ tentando enviar. Deseja substituir?\n", "replaceMessage": "Um dos arquivos que vocĂȘ estĂĄ tentando enviar possui um nome conflitante. Deseja pular este arquivo e continuar o envio ou substituir o existente?\n",
"schedule": "Agendar", "schedule": "Agendar",
"scheduleMessage": "Escolha uma data para agendar a publicação deste post.", "scheduleMessage": "Escolha uma data para agendar a publicação deste post.",
"show": "Mostrar", "show": "Mostrar",
@ -140,8 +139,9 @@
"uploadFiles": "Enviando {files} arquivos...", "uploadFiles": "Enviando {files} arquivos...",
"uploadMessage": "Selecione uma opção para enviar.", "uploadMessage": "Selecione uma opção para enviar.",
"optionalPassword": "Senha opcional", "optionalPassword": "Senha opcional",
"resolution": "Resolution", "deleteUser": "Tem certeza de que deseja apagar este usuĂĄrio?",
"discardEditorChanges": "Are you sure you wish to discard the changes you've made?" "resolution": "Resolução",
"discardEditorChanges": "Tem certeza de que deseja descartar as alteraçÔes feitas?"
}, },
"search": { "search": {
"images": "Imagens", "images": "Imagens",
@ -169,12 +169,7 @@
"commandRunner": "Execução de comandos", "commandRunner": "Execução de comandos",
"commandRunnerHelp": "Aqui vocĂȘ pode definir comandos que serĂŁo executados nos eventos descritos. Escreva um por linha. As variĂĄveis de ambiente {0} e {1} estĂŁo disponĂ­veis, sendo {0} relativo a {1}. Para mais informaçÔes sobre esta função e as variĂĄveis de ambiente disponĂ­veis, leia a {2}.", "commandRunnerHelp": "Aqui vocĂȘ pode definir comandos que serĂŁo executados nos eventos descritos. Escreva um por linha. As variĂĄveis de ambiente {0} e {1} estĂŁo disponĂ­veis, sendo {0} relativo a {1}. Para mais informaçÔes sobre esta função e as variĂĄveis de ambiente disponĂ­veis, leia a {2}.",
"commandsUpdated": "Comandos atualizados!", "commandsUpdated": "Comandos atualizados!",
"createUserDir": "Criar diretĂłrio Home para novos usuĂĄrios", "createUserDir": "Criar diretĂłrio Home do usuĂĄrio automaticamente ao adicionar novo usuĂĄrio",
"minimumPasswordLength": "Minimum password length",
"tusUploads": "Chunked Uploads",
"tusUploadsHelp": "File Browser supports chunked file uploads, allowing for the creation of efficient, reliable, resumable and chunked file uploads even on unreliable networks.",
"tusUploadsChunkSize": "Indicates to maximum size of a request (direct uploads will be used for smaller uploads). You may input a plain integer denoting byte size input or a string like 10MB, 1GB etc.",
"tusUploadsRetryCount": "Number of retries to perform if a chunk fails to upload.",
"userHomeBasePath": "Caminho base para diretĂłrios de usuĂĄrios", "userHomeBasePath": "Caminho base para diretĂłrios de usuĂĄrios",
"userScopeGenerationPlaceholder": "O escopo serĂĄ gerado automaticamente", "userScopeGenerationPlaceholder": "O escopo serĂĄ gerado automaticamente",
"createUserHomeDirectory": "Criar diretĂłrio Home de usuĂĄrio", "createUserHomeDirectory": "Criar diretĂłrio Home de usuĂĄrio",
@ -199,7 +194,7 @@
"newUser": "Novo usuĂĄrio", "newUser": "Novo usuĂĄrio",
"password": "Senha", "password": "Senha",
"passwordUpdated": "Senha atualizada!", "passwordUpdated": "Senha atualizada!",
"path": "Path", "path": "Caminho",
"perm": { "perm": {
"create": "Criar arquivos e diretĂłrios", "create": "Criar arquivos e diretĂłrios",
"delete": "Apagar arquivos e diretĂłrios", "delete": "Apagar arquivos e diretĂłrios",
@ -224,7 +219,7 @@
"shareDeleted": "Compartilhamento apagado!", "shareDeleted": "Compartilhamento apagado!",
"singleClick": "Usar clique Ășnico para abrir arquivos e diretĂłrios", "singleClick": "Usar clique Ășnico para abrir arquivos e diretĂłrios",
"themes": { "themes": {
"default": "System default", "default": "PadrĂŁo do sistema",
"dark": "Escuro", "dark": "Escuro",
"light": "Claro", "light": "Claro",
"title": "Tema" "title": "Tema"
@ -245,7 +240,7 @@
"hugoNew": "Hugo New", "hugoNew": "Hugo New",
"login": "Login", "login": "Login",
"logout": "Sair", "logout": "Sair",
"myFiles": "Arquivos", "myFiles": "Meus arquivos",
"newFile": "Novo arquivo", "newFile": "Novo arquivo",
"newFolder": "Nova pasta", "newFolder": "Nova pasta",
"preview": "Pré-visualizar", "preview": "Pré-visualizar",
@ -261,6 +256,6 @@
"hours": "Horas", "hours": "Horas",
"minutes": "Minutos", "minutes": "Minutos",
"seconds": "Segundos", "seconds": "Segundos",
"unit": "Unidades de Tempo" "unit": "Unidade de tempo"
} }
} }

View File

@ -7,14 +7,10 @@
"copy": "Copiar", "copy": "Copiar",
"copyFile": "Copiar ficheiro", "copyFile": "Copiar ficheiro",
"copyToClipboard": "Copiar", "copyToClipboard": "Copiar",
"copyDownloadLinkToClipboard": "Copy download link to clipboard",
"create": "Criar", "create": "Criar",
"delete": "Eliminar", "delete": "Eliminar",
"download": "Descarregar", "download": "Descarregar",
"file": "File", "hideDotfiles": "",
"folder": "Folder",
"fullScreen": "Toggle full screen",
"hideDotfiles": "Hide dotfiles",
"info": "Info", "info": "Info",
"more": "Mais", "more": "Mais",
"move": "Mover", "move": "Mover",
@ -24,7 +20,6 @@
"ok": "OK", "ok": "OK",
"permalink": "Obter link permanente", "permalink": "Obter link permanente",
"previous": "Anterior", "previous": "Anterior",
"preview": "Preview",
"publish": "Publicar", "publish": "Publicar",
"rename": "Alterar nome", "rename": "Alterar nome",
"replace": "Substituir", "replace": "Substituir",
@ -36,27 +31,20 @@
"selectMultiple": "Selecionar vĂĄrios", "selectMultiple": "Selecionar vĂĄrios",
"share": "Partilhar", "share": "Partilhar",
"shell": "Alternar shell", "shell": "Alternar shell",
"submit": "Submit",
"switchView": "Alterar vista", "switchView": "Alterar vista",
"toggleSidebar": "Alternar barra lateral", "toggleSidebar": "Alternar barra lateral",
"update": "Atualizar", "update": "Atualizar",
"upload": "Enviar", "upload": "Enviar"
"openFile": "Open file",
"discardChanges": "Discard"
}, },
"download": { "download": {
"downloadFile": "Descarregar ficheiro", "downloadFile": "Descarregar ficheiro",
"downloadFolder": "Descarregar pasta", "downloadFolder": "Descarregar pasta",
"downloadSelected": "Download Selected" "downloadSelected": ""
},
"upload": {
"abortUpload": "Are you sure you wish to abort?"
}, },
"errors": { "errors": {
"forbidden": "Não tem permissÔes para aceder a isto", "forbidden": "Não tem permissÔes para aceder a isto",
"internal": "Algo correu bastante mal.", "internal": "Algo correu bastante mal.",
"notFound": "Esta localização não é alcançåvel.", "notFound": "Esta localização não é alcançåvel."
"connection": "The server can't be reached."
}, },
"files": { "files": {
"body": "Corpo", "body": "Corpo",
@ -73,8 +61,7 @@
"size": "Tamanho", "size": "Tamanho",
"sortByLastModified": "Ordenar pela Ășltima alteração", "sortByLastModified": "Ordenar pela Ășltima alteração",
"sortByName": "Ordenar pelo nome", "sortByName": "Ordenar pelo nome",
"sortBySize": "Ordenar pelo tamanho", "sortBySize": "Ordenar pelo tamanho"
"noPreview": "Preview is not available for this file."
}, },
"help": { "help": {
"click": "selecionar pasta ou ficheiro", "click": "selecionar pasta ou ficheiro",
@ -109,8 +96,6 @@
"currentlyNavigating": "A navegar em:", "currentlyNavigating": "A navegar em:",
"deleteMessageMultiple": "Quer eliminar {count} ficheiro(s)?", "deleteMessageMultiple": "Quer eliminar {count} ficheiro(s)?",
"deleteMessageSingle": "Quer eliminar esta pasta/ficheiro?", "deleteMessageSingle": "Quer eliminar esta pasta/ficheiro?",
"deleteMessageShare": "Are you sure you wish to delete this share({path})?",
"deleteUser": "Are you sure you want to delete this user?",
"deleteTitle": "Eliminar ficheiros", "deleteTitle": "Eliminar ficheiros",
"displayName": "Nome:", "displayName": "Nome:",
"download": "Descarregar ficheiros", "download": "Descarregar ficheiros",
@ -136,12 +121,8 @@
"scheduleMessage": "Escolha uma data para publicar este post.", "scheduleMessage": "Escolha uma data para publicar este post.",
"show": "Mostrar", "show": "Mostrar",
"size": "Tamanho", "size": "Tamanho",
"upload": "Upload", "upload": "",
"uploadFiles": "Uploading {files} files...", "uploadMessage": ""
"uploadMessage": "Select an option to upload.",
"optionalPassword": "Optional password",
"resolution": "Resolution",
"discardEditorChanges": "Are you sure you wish to discard the changes you've made?"
}, },
"search": { "search": {
"images": "Imagens", "images": "Imagens",
@ -170,14 +151,6 @@
"commandRunnerHelp": "Aqui pode definir comandos que são executados nos eventos nomeados. Tem de escrever um por linha. As variåveis de ambiente {0} e {1} estarão disponíveis, sendo {0} relativo a {1}. Para mais informaçÔes sobre esta funcionalidade e as variåveis de ambiente, veja {2}.", "commandRunnerHelp": "Aqui pode definir comandos que são executados nos eventos nomeados. Tem de escrever um por linha. As variåveis de ambiente {0} e {1} estarão disponíveis, sendo {0} relativo a {1}. Para mais informaçÔes sobre esta funcionalidade e as variåveis de ambiente, veja {2}.",
"commandsUpdated": "Comandos atualizados!", "commandsUpdated": "Comandos atualizados!",
"createUserDir": "Criar automaticamente a pasta de inĂ­cio ao adicionar um novo utilizador", "createUserDir": "Criar automaticamente a pasta de inĂ­cio ao adicionar um novo utilizador",
"minimumPasswordLength": "Minimum password length",
"tusUploads": "Chunked Uploads",
"tusUploadsHelp": "File Browser supports chunked file uploads, allowing for the creation of efficient, reliable, resumable and chunked file uploads even on unreliable networks.",
"tusUploadsChunkSize": "Indicates to maximum size of a request (direct uploads will be used for smaller uploads). You may input a plain integer denoting byte size input or a string like 10MB, 1GB etc.",
"tusUploadsRetryCount": "Number of retries to perform if a chunk fails to upload.",
"userHomeBasePath": "Base path for user home directories",
"userScopeGenerationPlaceholder": "The scope will be auto generated",
"createUserHomeDirectory": "Create user home directory",
"customStylesheet": "Folha de estilos personalizada", "customStylesheet": "Folha de estilos personalizada",
"defaultUserDescription": "Estas são as configuraçÔes padrão para novos utilizadores.", "defaultUserDescription": "Estas são as configuraçÔes padrão para novos utilizadores.",
"disableExternalLinks": "Desativar links externos (exceto documentação)", "disableExternalLinks": "Desativar links externos (exceto documentação)",
@ -188,7 +161,7 @@
"executeOnShellDescription": "Por padrĂŁo, o Navegador de Ficheiros executa os comandos chamando os seus binĂĄrios diretamente. Se em vez disso, quiser executĂĄ-los numa shell (como Bash ou PowerShell), pode definir isso aqui com os argumentos e bandeiras necessĂĄrios. Se definido, o comando que executa serĂĄ anexado como um argumento. Isto aplica-se tanto a comandos do utilizador como a hooks de eventos.", "executeOnShellDescription": "Por padrĂŁo, o Navegador de Ficheiros executa os comandos chamando os seus binĂĄrios diretamente. Se em vez disso, quiser executĂĄ-los numa shell (como Bash ou PowerShell), pode definir isso aqui com os argumentos e bandeiras necessĂĄrios. Se definido, o comando que executa serĂĄ anexado como um argumento. Isto aplica-se tanto a comandos do utilizador como a hooks de eventos.",
"globalRules": "Isto é um conjunto global de regras de permissão e negação. Elas aplicam-se a todos os utilizadores. Pode especificar regras específicas para cada configuração do utilizador para sobreporem-se a estas.", "globalRules": "Isto é um conjunto global de regras de permissão e negação. Elas aplicam-se a todos os utilizadores. Pode especificar regras específicas para cada configuração do utilizador para sobreporem-se a estas.",
"globalSettings": "ConfiguraçÔes globais", "globalSettings": "ConfiguraçÔes globais",
"hideDotfiles": "Hide dotfiles", "hideDotfiles": "",
"insertPath": "Inserir o caminho", "insertPath": "Inserir o caminho",
"insertRegex": "Inserir expressĂŁo regular", "insertRegex": "Inserir expressĂŁo regular",
"instanceName": "Nome da instĂąncia", "instanceName": "Nome da instĂąncia",
@ -199,7 +172,7 @@
"newUser": "Novo utilizador", "newUser": "Novo utilizador",
"password": "Palavra-passe", "password": "Palavra-passe",
"passwordUpdated": "Palavra-passe atualizada!", "passwordUpdated": "Palavra-passe atualizada!",
"path": "Path", "path": "",
"perm": { "perm": {
"create": "Criar ficheiros e pastas", "create": "Criar ficheiros e pastas",
"delete": "Eliminar ficheiros e pastas", "delete": "Eliminar ficheiros e pastas",
@ -217,17 +190,14 @@
"rules": "Regras", "rules": "Regras",
"rulesHelp": "Aqui pode definir um conjunto de regras para permitir ou bloquear o acesso do utilizador a determinados ficheiros ou pastas. Os ficheiros bloqueados não irão aparecer durante a navegação. Suportamos expressÔes regulares e os caminhos dos ficheiros devem ser relativos à base do utilizador.\n", "rulesHelp": "Aqui pode definir um conjunto de regras para permitir ou bloquear o acesso do utilizador a determinados ficheiros ou pastas. Os ficheiros bloqueados não irão aparecer durante a navegação. Suportamos expressÔes regulares e os caminhos dos ficheiros devem ser relativos à base do utilizador.\n",
"scope": "Base", "scope": "Base",
"setDateFormat": "Set exact date format",
"settingsUpdated": "ConfiguraçÔes atualizadas!", "settingsUpdated": "ConfiguraçÔes atualizadas!",
"shareDuration": "Share Duration", "shareDuration": "",
"shareManagement": "Share Management", "shareManagement": "",
"shareDeleted": "Share deleted!", "singleClick": "",
"singleClick": "Use single clicks to open files and directories",
"themes": { "themes": {
"default": "System default", "dark": "",
"dark": "Dark", "light": "",
"light": "Light", "title": ""
"title": "Theme"
}, },
"user": "Utilizador", "user": "Utilizador",
"userCommands": "Comandos", "userCommands": "Comandos",

View File

@ -3,18 +3,13 @@
"cancel": "Anulează", "cancel": "Anulează",
"clear": "Curăță", "clear": "Curăță",
"close": "Închide", "close": "Închide",
"continue": "Continue",
"copy": "Copiază", "copy": "Copiază",
"copyFile": "Copiază fișier", "copyFile": "Copiază fișier",
"copyToClipboard": "Copiază ßn clipboard", "copyToClipboard": "Copiază ßn clipboard",
"copyDownloadLinkToClipboard": "Copy download link to clipboard",
"create": "Crează", "create": "Crează",
"delete": "Șterge", "delete": "Șterge",
"download": "Descarcă", "download": "Descarcă",
"file": "File", "hideDotfiles": "",
"folder": "Folder",
"fullScreen": "Toggle full screen",
"hideDotfiles": "Hide dotfiles",
"info": "Info", "info": "Info",
"more": "Mai mult", "more": "Mai mult",
"move": "Mută", "move": "Mută",
@ -24,7 +19,6 @@
"ok": "OK", "ok": "OK",
"permalink": "Obține legătura permanentă", "permalink": "Obține legătura permanentă",
"previous": "Precedent", "previous": "Precedent",
"preview": "Preview",
"publish": "Puplică", "publish": "Puplică",
"rename": "Redenumește", "rename": "Redenumește",
"replace": "Înlocuiește", "replace": "Înlocuiește",
@ -36,27 +30,20 @@
"selectMultiple": "Selecție multiplă", "selectMultiple": "Selecție multiplă",
"share": "Distribuie", "share": "Distribuie",
"shell": "Comută linia de comandă", "shell": "Comută linia de comandă",
"submit": "Submit",
"switchView": "Schimba vizualizarea", "switchView": "Schimba vizualizarea",
"toggleSidebar": "Comută bara laterală", "toggleSidebar": "Comută bara laterală",
"update": "Actualizează", "update": "Actualizează",
"upload": "Încarcă", "upload": "Încarcă"
"openFile": "Open file",
"discardChanges": "Discard"
}, },
"download": { "download": {
"downloadFile": "Descarcă fișier", "downloadFile": "Descarcă fișier",
"downloadFolder": "Descarcă director", "downloadFolder": "Descarcă director",
"downloadSelected": "Download Selected" "downloadSelected": ""
},
"upload": {
"abortUpload": "Are you sure you wish to abort?"
}, },
"errors": { "errors": {
"forbidden": "Nu ai permisiuni sa accesezi asta.", "forbidden": "Nu ai permisiuni sa accesezi asta.",
"internal": "Ceva nu a funcționat corect.", "internal": "Ceva nu a funcționat corect.",
"notFound": "Aceasta locație nu poate fi accesată.", "notFound": "Aceasta locație nu poate fi accesată."
"connection": "The server can't be reached."
}, },
"files": { "files": {
"body": "Corp", "body": "Corp",
@ -73,8 +60,7 @@
"size": "Dimensiune", "size": "Dimensiune",
"sortByLastModified": "Ordonează dup ultima modificare", "sortByLastModified": "Ordonează dup ultima modificare",
"sortByName": "Ordonează după nume", "sortByName": "Ordonează după nume",
"sortBySize": "Ordonează după dimensiune", "sortBySize": "Ordonează după dimensiune"
"noPreview": "Preview is not available for this file."
}, },
"help": { "help": {
"click": "alege fișier sau director", "click": "alege fișier sau director",
@ -109,8 +95,6 @@
"currentlyNavigating": "Navigare curentă ßn:", "currentlyNavigating": "Navigare curentă ßn:",
"deleteMessageMultiple": "Ești sigur că vrei să ștergi aceste {count} fișier(e)?", "deleteMessageMultiple": "Ești sigur că vrei să ștergi aceste {count} fișier(e)?",
"deleteMessageSingle": "Ești sigur că vrei să ștergi acest fișier/director?", "deleteMessageSingle": "Ești sigur că vrei să ștergi acest fișier/director?",
"deleteMessageShare": "Are you sure you wish to delete this share({path})?",
"deleteUser": "Are you sure you want to delete this user?",
"deleteTitle": "Șterge fișiere", "deleteTitle": "Șterge fișiere",
"displayName": "Nume afișat:", "displayName": "Nume afișat:",
"download": "Descarcă fișiere", "download": "Descarcă fișiere",
@ -136,12 +120,8 @@
"scheduleMessage": "Alege data si ora pentru a programa publicarea acestei postări.", "scheduleMessage": "Alege data si ora pentru a programa publicarea acestei postări.",
"show": "Arată", "show": "Arată",
"size": "Dimensiune", "size": "Dimensiune",
"upload": "Upload", "upload": "",
"uploadFiles": "Uploading {files} files...", "uploadMessage": ""
"uploadMessage": "Select an option to upload.",
"optionalPassword": "Optional password",
"resolution": "Resolution",
"discardEditorChanges": "Are you sure you wish to discard the changes you've made?"
}, },
"search": { "search": {
"images": "Imagini", "images": "Imagini",
@ -170,14 +150,6 @@
"commandRunnerHelp": "Aici poti seta comenzile care sunt executate in evenimente. Trebuie să scrii una pe linie. Variabilele de mediu {0} și {1} vor fi disponile, {0} fiind relativă la {1}. Pentru mai multe informații despre acest feature si variabilele de mediu disponibile, cititi {2}.", "commandRunnerHelp": "Aici poti seta comenzile care sunt executate in evenimente. Trebuie să scrii una pe linie. Variabilele de mediu {0} și {1} vor fi disponile, {0} fiind relativă la {1}. Pentru mai multe informații despre acest feature si variabilele de mediu disponibile, cititi {2}.",
"commandsUpdated": "Comenzi actualizate!", "commandsUpdated": "Comenzi actualizate!",
"createUserDir": "Auto create user home dir while adding new user", "createUserDir": "Auto create user home dir while adding new user",
"minimumPasswordLength": "Minimum password length",
"tusUploads": "Chunked Uploads",
"tusUploadsHelp": "File Browser supports chunked file uploads, allowing for the creation of efficient, reliable, resumable and chunked file uploads even on unreliable networks.",
"tusUploadsChunkSize": "Indicates to maximum size of a request (direct uploads will be used for smaller uploads). You may input a plain integer denoting byte size input or a string like 10MB, 1GB etc.",
"tusUploadsRetryCount": "Number of retries to perform if a chunk fails to upload.",
"userHomeBasePath": "Base path for user home directories",
"userScopeGenerationPlaceholder": "The scope will be auto generated",
"createUserHomeDirectory": "Create user home directory",
"customStylesheet": "CSS personalizat", "customStylesheet": "CSS personalizat",
"defaultUserDescription": "Acestea sunt setările implicite pentru noii utilizatori.", "defaultUserDescription": "Acestea sunt setările implicite pentru noii utilizatori.",
"disableExternalLinks": "Dezactivează linkurile externe (exceptĂąnd documentația)", "disableExternalLinks": "Dezactivează linkurile externe (exceptĂąnd documentația)",
@ -188,7 +160,7 @@
"executeOnShellDescription": "Implicit, File Browser execută comenzile prin apelare directă a binarelor. Daca vrei sa le rulezi Ăźntr-un shell (cum ar fi Bash sau PowerShell), le poți defini aici cu argumentele necesare. Daca este setata, comanda va fi adăugată ca argument. Se aplică pentru comenzi si hookuri.", "executeOnShellDescription": "Implicit, File Browser execută comenzile prin apelare directă a binarelor. Daca vrei sa le rulezi Ăźntr-un shell (cum ar fi Bash sau PowerShell), le poți defini aici cu argumentele necesare. Daca este setata, comanda va fi adăugată ca argument. Se aplică pentru comenzi si hookuri.",
"globalRules": "Acesta este un set global de reguli. Se aplică tuturor utilizatorilor. Poți defini reguli specifice din setările fiecărui utilizator pentru a le suprascrie pe acestea.", "globalRules": "Acesta este un set global de reguli. Se aplică tuturor utilizatorilor. Poți defini reguli specifice din setările fiecărui utilizator pentru a le suprascrie pe acestea.",
"globalSettings": "Setări globale", "globalSettings": "Setări globale",
"hideDotfiles": "Hide dotfiles", "hideDotfiles": "",
"insertPath": "Redactează calea", "insertPath": "Redactează calea",
"insertRegex": "Redactează expresia regulată", "insertRegex": "Redactează expresia regulată",
"instanceName": "Numele instanței", "instanceName": "Numele instanței",
@ -199,7 +171,7 @@
"newUser": "Utilizator nou", "newUser": "Utilizator nou",
"password": "Parola", "password": "Parola",
"passwordUpdated": "Parola actualizată!", "passwordUpdated": "Parola actualizată!",
"path": "Path", "path": "",
"perm": { "perm": {
"create": "Crează fișiere și directoare", "create": "Crează fișiere și directoare",
"delete": "Șterge fișiere și directoare", "delete": "Șterge fișiere și directoare",
@ -217,17 +189,14 @@
"rules": "Reguli", "rules": "Reguli",
"rulesHelp": "Aici poți defini un set de reguli pentru acest utilizator. Fișierele blocate nu vor apărea in lista și nici nu vor putea fi accesate de utilizator. Expresiile regulate si căile relative la domeniul utilizatorului sunt permise.\n", "rulesHelp": "Aici poți defini un set de reguli pentru acest utilizator. Fișierele blocate nu vor apărea in lista și nici nu vor putea fi accesate de utilizator. Expresiile regulate si căile relative la domeniul utilizatorului sunt permise.\n",
"scope": "Domeniu", "scope": "Domeniu",
"setDateFormat": "Set exact date format",
"settingsUpdated": "Setări actualizate!", "settingsUpdated": "Setări actualizate!",
"shareDuration": "Share Duration", "shareDuration": "",
"shareManagement": "Share Management", "shareManagement": "",
"shareDeleted": "Share deleted!", "singleClick": "",
"singleClick": "Use single clicks to open files and directories",
"themes": { "themes": {
"default": "System default", "dark": "",
"dark": "Dark", "light": "",
"light": "Light", "title": ""
"title": "Theme"
}, },
"user": "Utilizator", "user": "Utilizator",
"userCommands": "Comenzi", "userCommands": "Comenzi",

View File

@ -3,17 +3,14 @@
"cancel": "ĐžŃ‚ĐŒĐ”ĐœĐ°", "cancel": "ĐžŃ‚ĐŒĐ”ĐœĐ°",
"clear": "Очостоть", "clear": "Очостоть",
"close": "ЗаĐșрыть", "close": "ЗаĐșрыть",
"continue": "ĐŸŃ€ĐŸĐŽĐŸĐ»Đ¶ĐžŃ‚ŃŒ",
"copy": "ĐšĐŸĐżĐžŃ€ĐŸĐČать", "copy": "ĐšĐŸĐżĐžŃ€ĐŸĐČать",
"copyFile": "ĐĄĐșĐŸĐżĐžŃ€ĐŸĐČать фаĐčĐ»", "copyFile": "ĐĄĐșĐŸĐżĐžŃ€ĐŸĐČать фаĐčĐ»",
"copyToClipboard": "ĐĄĐșĐŸĐżĐžŃ€ĐŸĐČать ĐČ Đ±ŃƒŃ„Đ”Ń€", "copyToClipboard": "ĐĄĐșĐŸĐżĐžŃ€ĐŸĐČать ĐČ Đ±ŃƒŃ„Đ”Ń€",
"copyDownloadLinkToClipboard": "ĐĄĐșĐŸĐżĐžŃ€ĐŸĐČать ссылĐșу ĐČ Đ±ŃƒŃ„Đ”Ń€",
"create": "ĐĄĐŸĐ·ĐŽĐ°Ń‚ŃŒ", "create": "ĐĄĐŸĐ·ĐŽĐ°Ń‚ŃŒ",
"delete": "ĐŁĐŽĐ°Đ»ĐžŃ‚ŃŒ", "delete": "ĐŁĐŽĐ°Đ»ĐžŃ‚ŃŒ",
"download": "ĐĄĐșачать", "download": "ĐĄĐșачать",
"file": "ЀаĐčĐ»", "file": "ЀаĐčĐ»",
"folder": "ПапĐșа", "folder": "ПапĐșа",
"fullScreen": " РазĐČĐ”Ń€ĐœŃƒŃ‚ŃŒ ĐœĐ° ĐČĐ”ŃŃŒ эĐșŃ€Đ°Đœ",
"hideDotfiles": "ĐĄĐșрыть Ń‚ĐŸŃ‡Đ”Ń‡ĐœŃ‹Đ” фаĐčлы", "hideDotfiles": "ĐĄĐșрыть Ń‚ĐŸŃ‡Đ”Ń‡ĐœŃ‹Đ” фаĐčлы",
"info": "Đ˜ĐœŃ„ĐŸ", "info": "Đ˜ĐœŃ„ĐŸ",
"more": "ЕщД", "more": "ЕщД",
@ -24,7 +21,6 @@
"ok": "OK", "ok": "OK",
"permalink": "ĐŸĐŸĐ»ŃƒŃ‡ĐžŃ‚ŃŒ ĐżĐŸŃŃ‚ĐŸŃĐœĐœŃƒŃŽ ссылĐșу", "permalink": "ĐŸĐŸĐ»ŃƒŃ‡ĐžŃ‚ŃŒ ĐżĐŸŃŃ‚ĐŸŃĐœĐœŃƒŃŽ ссылĐșу",
"previous": "ĐĐ°Đ·Đ°ĐŽ", "previous": "ĐĐ°Đ·Đ°ĐŽ",
"preview": "ĐŸŃ€Đ”ĐŽĐżŃ€ĐŸŃĐŒĐŸŃ‚Ń€",
"publish": "ĐžĐżŃƒĐ±Đ»ĐžĐșĐŸĐČать", "publish": "ĐžĐżŃƒĐ±Đ»ĐžĐșĐŸĐČать",
"rename": "ĐŸĐ”Ń€Đ”ĐžĐŒĐ”ĐœĐŸĐČать", "rename": "ĐŸĐ”Ń€Đ”ĐžĐŒĐ”ĐœĐŸĐČать",
"replace": "ĐŸĐ”Ń€Đ”Đ·Đ°ĐżĐžŃĐ°Ń‚ŃŒ", "replace": "ĐŸĐ”Ń€Đ”Đ·Đ°ĐżĐžŃĐ°Ń‚ŃŒ",
@ -41,17 +37,13 @@
"toggleSidebar": "Đ‘ĐŸĐșĐŸĐČая ĐżĐ°ĐœĐ”Đ»ŃŒ", "toggleSidebar": "Đ‘ĐŸĐșĐŸĐČая ĐżĐ°ĐœĐ”Đ»ŃŒ",
"update": "ĐžĐ±ĐœĐŸĐČоть", "update": "ĐžĐ±ĐœĐŸĐČоть",
"upload": "Đ—Đ°ĐłŃ€ŃƒĐ·ĐžŃ‚ŃŒ", "upload": "Đ—Đ°ĐłŃ€ŃƒĐ·ĐžŃ‚ŃŒ",
"openFile": "ОтĐșрыть фаĐčĐ»", "openFile": "ОтĐșрыть фаĐčĐ»"
"discardChanges": "ОтĐșĐ°Đ·Đ°Ń‚ŃŒŃŃ"
}, },
"download": { "download": {
"downloadFile": "ĐĄĐșачать фаĐčĐ»", "downloadFile": "ĐĄĐșачать фаĐčĐ»",
"downloadFolder": "Đ—Đ°ĐłŃ€ŃƒĐ·ĐžŃ‚ŃŒ папĐșу", "downloadFolder": "Đ—Đ°ĐłŃ€ŃƒĐ·ĐžŃ‚ŃŒ папĐșу",
"downloadSelected": "ĐĄĐșачать ĐČŃ‹Đ±Ń€Đ°ĐœĐœĐŸĐ”" "downloadSelected": "ĐĄĐșачать ĐČŃ‹Đ±Ń€Đ°ĐœĐœĐŸĐ”"
}, },
"upload": {
"abortUpload": "Вы ĐŽĐ”ĐčстĐČĐžŃ‚Đ”Đ»ŃŒĐœĐŸ, Ń‡Ń‚ĐŸ Ń…ĐŸŃ‚ĐžŃ‚Đ” прДрĐČать ĐŸĐżĐ”Ń€Đ°Ń†ĐžŃŽ?"
},
"errors": { "errors": {
"forbidden": "ĐŁ ĐČас ĐœĐ”Ń‚ праĐČ ĐŽĐŸŃŃ‚ŃƒĐżĐ° Đș ŃŃ‚ĐŸĐŒŃƒ.", "forbidden": "ĐŁ ĐČас ĐœĐ”Ń‚ праĐČ ĐŽĐŸŃŃ‚ŃƒĐżĐ° Đș ŃŃ‚ĐŸĐŒŃƒ.",
"internal": "Đ§Ń‚ĐŸ-Ń‚ĐŸ ĐżĐŸŃˆĐ»ĐŸ ĐœĐ” таĐș.", "internal": "Đ§Ń‚ĐŸ-Ń‚ĐŸ ĐżĐŸŃˆĐ»ĐŸ ĐœĐ” таĐș.",
@ -80,7 +72,7 @@
"click": "ĐČŃ‹Đ±Ń€Đ°Ń‚ŃŒ фаĐčĐ» ОлО ĐșĐ°Ń‚Đ°Đ»ĐŸĐł", "click": "ĐČŃ‹Đ±Ń€Đ°Ń‚ŃŒ фаĐčĐ» ОлО ĐșĐ°Ń‚Đ°Đ»ĐŸĐł",
"ctrl": { "ctrl": {
"click": "ĐČŃ‹Đ±Ń€Đ°Ń‚ŃŒ ĐœĐ”ŃĐșĐŸĐ»ŃŒĐșĐŸ фаĐčĐ»ĐŸĐČ ĐžĐ»Đž ĐșĐ°Ń‚Đ°Đ»ĐŸĐłĐŸĐČ", "click": "ĐČŃ‹Đ±Ń€Đ°Ń‚ŃŒ ĐœĐ”ŃĐșĐŸĐ»ŃŒĐșĐŸ фаĐčĐ»ĐŸĐČ ĐžĐ»Đž ĐșĐ°Ń‚Đ°Đ»ĐŸĐłĐŸĐČ",
"f": "ĐŸŃ‚ĐșрытыД ĐżĐŸĐžŃĐșĐž", "f": "ĐŸŃ‚Đșрыть ĐżĐŸĐžŃĐș",
"s": "сĐșачать фаĐčĐ» ОлО тДĐșущоĐč ĐșĐ°Ń‚Đ°Đ»ĐŸĐł" "s": "сĐșачать фаĐčĐ» ОлО тДĐșущоĐč ĐșĐ°Ń‚Đ°Đ»ĐŸĐł"
}, },
"del": "ŃƒĐŽĐ°Đ»ĐžŃ‚ŃŒ ĐČŃ‹Đ±Ń€Đ°ĐœĐœŃ‹Đ” ŃĐ»Đ”ĐŒĐ”ĐœŃ‚Ń‹", "del": "ŃƒĐŽĐ°Đ»ĐžŃ‚ŃŒ ĐČŃ‹Đ±Ń€Đ°ĐœĐœŃ‹Đ” ŃĐ»Đ”ĐŒĐ”ĐœŃ‚Ń‹",
@ -110,7 +102,6 @@
"deleteMessageMultiple": "ĐŁĐŽĐ°Đ»ĐžŃ‚ŃŒ это фаĐčлы ({count})?", "deleteMessageMultiple": "ĐŁĐŽĐ°Đ»ĐžŃ‚ŃŒ это фаĐčлы ({count})?",
"deleteMessageSingle": "ĐŁĐŽĐ°Đ»ĐžŃ‚ŃŒ ŃŃ‚ĐŸŃ‚ фаĐčĐ»/ĐșĐ°Ń‚Đ°Đ»ĐŸĐł?", "deleteMessageSingle": "ĐŁĐŽĐ°Đ»ĐžŃ‚ŃŒ ŃŃ‚ĐŸŃ‚ фаĐčĐ»/ĐșĐ°Ń‚Đ°Đ»ĐŸĐł?",
"deleteMessageShare": "ĐŁĐŽĐ°Đ»ĐžŃ‚ŃŒ ŃŃ‚ĐŸŃ‚ ĐŸĐ±Ń‰ĐžĐč фаĐčĐ»/ĐșĐ°Ń‚Đ°Đ»ĐŸĐł ({path})?", "deleteMessageShare": "ĐŁĐŽĐ°Đ»ĐžŃ‚ŃŒ ŃŃ‚ĐŸŃ‚ ĐŸĐ±Ń‰ĐžĐč фаĐčĐ»/ĐșĐ°Ń‚Đ°Đ»ĐŸĐł ({path})?",
"deleteUser": "Вы ĐŽĐ”ĐčстĐČĐžŃ‚Đ”Đ»ŃŒĐœĐŸ, Ń…ĐŸŃ‚ĐžŃ‚Đ” ŃƒĐŽĐ°Đ»ĐžŃ‚ŃŒ ĐżĐŸĐ»ŃŒĐ·ĐŸĐČĐ°Ń‚Đ”Đ»Ń?",
"deleteTitle": "ĐŁĐŽĐ°Đ»ĐžŃ‚ŃŒ фаĐčлы", "deleteTitle": "ĐŁĐŽĐ°Đ»ĐžŃ‚ŃŒ фаĐčлы",
"displayName": "ĐžŃ‚ĐŸĐ±Ń€Đ°Đ¶Đ°Đ”ĐŒĐŸĐ” ĐžĐŒŃ:", "displayName": "ĐžŃ‚ĐŸĐ±Ń€Đ°Đ¶Đ°Đ”ĐŒĐŸĐ” ĐžĐŒŃ:",
"download": "ĐĄĐșачать фаĐčлы", "download": "ĐĄĐșачать фаĐčлы",
@ -120,7 +111,7 @@
"filesSelected": "ЀаĐčĐ»ĐŸĐČ ĐČŃ‹Đ±Ń€Đ°ĐœĐŸ: {count}.", "filesSelected": "ЀаĐčĐ»ĐŸĐČ ĐČŃ‹Đ±Ń€Đ°ĐœĐŸ: {count}.",
"lastModified": "ĐŸĐŸŃĐ»Đ”ĐŽĐœĐ”Đ” ĐžĐ·ĐŒĐ”ĐœĐ”ĐœĐžĐ”", "lastModified": "ĐŸĐŸŃĐ»Đ”ĐŽĐœĐ”Đ” ĐžĐ·ĐŒĐ”ĐœĐ”ĐœĐžĐ”",
"move": "ĐŸĐ”Ń€Đ”ĐŒĐ”ŃŃ‚ĐžŃ‚ŃŒ", "move": "ĐŸĐ”Ń€Đ”ĐŒĐ”ŃŃ‚ĐžŃ‚ŃŒ",
"moveMessage": "ВыбДрОтД ĐœĐŸĐČыĐč ĐŽĐŸĐŒĐ°ŃˆĐœĐžĐč ĐșĐ°Ń‚Đ°Đ»ĐŸĐł ĐŽĐ»Ń ĐČашох фаĐčĐ»ĐŸĐČ/ĐżĐ°ĐżĐŸĐș:", "moveMessage": "ĐŸĐ”Ń€Đ”ĐŒĐ”ŃŃ‚ĐžŃ‚ŃŒ ĐČ:",
"newArchetype": "ĐĄĐŸĐ·ĐŽĐ°ĐčтД ĐœĐŸĐČую Đ·Đ°ĐżĐžŃŃŒ ĐœĐ° ĐŸŃĐœĐŸĐČĐ” архДтОпа. ЀаĐčĐ» Đ±ŃƒĐŽĐ”Ń‚ ŃĐŸĐ·ĐŽĐ°Đœ ĐČ ĐșĐ°Ń‚Đ°Đ»ĐŸĐłĐ”.", "newArchetype": "ĐĄĐŸĐ·ĐŽĐ°ĐčтД ĐœĐŸĐČую Đ·Đ°ĐżĐžŃŃŒ ĐœĐ° ĐŸŃĐœĐŸĐČĐ” архДтОпа. ЀаĐčĐ» Đ±ŃƒĐŽĐ”Ń‚ ŃĐŸĐ·ĐŽĐ°Đœ ĐČ ĐșĐ°Ń‚Đ°Đ»ĐŸĐłĐ”.",
"newDir": "ĐĐŸĐČыĐč ĐșĐ°Ń‚Đ°Đ»ĐŸĐł", "newDir": "ĐĐŸĐČыĐč ĐșĐ°Ń‚Đ°Đ»ĐŸĐł",
"newDirMessage": "Đ˜ĐŒŃ ĐœĐŸĐČĐŸĐłĐŸ ĐșĐ°Ń‚Đ°Đ»ĐŸĐłĐ°.", "newDirMessage": "Đ˜ĐŒŃ ĐœĐŸĐČĐŸĐłĐŸ ĐșĐ°Ń‚Đ°Đ»ĐŸĐłĐ°.",
@ -137,11 +128,8 @@
"show": "ĐŸĐŸĐșĐ°Đ·Đ°Ń‚ŃŒ", "show": "ĐŸĐŸĐșĐ°Đ·Đ°Ń‚ŃŒ",
"size": "Đ Đ°Đ·ĐŒĐ”Ń€", "size": "Đ Đ°Đ·ĐŒĐ”Ń€",
"upload": "Đ—Đ°ĐłŃ€ŃƒĐ·ĐžŃ‚ŃŒ", "upload": "Đ—Đ°ĐłŃ€ŃƒĐ·ĐžŃ‚ŃŒ",
"uploadFiles": "Đ—Đ°ĐłŃ€ŃƒĐ¶Đ°ŃŽ {files} фаĐčлы...",
"uploadMessage": "ВыбДрОтД ĐČĐ°Ń€ĐžĐ°ĐœŃ‚ ĐŽĐ»Ń Đ·Đ°ĐłŃ€ŃƒĐ·ĐșĐž.", "uploadMessage": "ВыбДрОтД ĐČĐ°Ń€ĐžĐ°ĐœŃ‚ ĐŽĐ»Ń Đ·Đ°ĐłŃ€ŃƒĐ·ĐșĐž.",
"optionalPassword": "ĐĐ”ĐŸĐ±ŃĐ·Đ°Ń‚Đ”Đ»ŃŒĐœŃ‹Đč ĐżĐ°Ń€ĐŸĐ»ŃŒ", "optionalPassword": "ĐĐ”ĐŸĐ±ŃĐ·Đ°Ń‚Đ”Đ»ŃŒĐœŃ‹Đč ĐżĐ°Ń€ĐŸĐ»ŃŒ"
"resolution": "Đ Đ°Đ·Ń€Đ”ŃˆĐ”ĐœĐžĐ”",
"discardEditorChanges": "Вы ĐŽĐ”ĐčстĐČĐžŃ‚Đ”Đ»ŃŒĐœĐŸ жДлаДтД ĐŸŃ‚ĐŒĐ”ĐœĐžŃ‚ŃŒ ĐČашО праĐČĐșĐž?"
}, },
"search": { "search": {
"images": "Đ˜Đ·ĐŸĐ±Ń€Đ°Đ¶Đ”ĐœĐžŃ", "images": "Đ˜Đ·ĐŸĐ±Ń€Đ°Đ¶Đ”ĐœĐžŃ",
@ -170,14 +158,6 @@
"commandRunnerHelp": "Đ—ĐŽĐ”ŃŃŒ ĐČы ĐŒĐŸĐ¶Đ”Ń‚Đ” ŃƒŃŃ‚Đ°ĐœĐŸĐČоть ĐșĐŸĐŒĐ°ĐœĐŽŃ‹, ĐșĐŸŃ‚ĐŸŃ€Ń‹Đ” Đ±ŃƒĐŽŃƒŃ‚ ĐČŃ‹ĐżĐŸĐ»ĐœŃŃ‚ŃŒŃŃ ĐČ ŃƒĐșĐ°Đ·Đ°ĐœĐœŃ‹Ń… ŃĐŸĐ±Ń‹Ń‚ĐžŃŃ…. Вы ĐŽĐŸĐ»Đ¶ĐœŃ‹ уĐșĐ°Đ·Đ°Ń‚ŃŒ ĐżĐŸ ĐŸĐŽĐœĐŸĐč ĐșĐŸĐŒĐ°ĐœĐŽĐ” ĐČ ĐșĐ°Đ¶ĐŽĐŸĐč ŃŃ‚Ń€ĐŸĐșĐ”. ĐŸĐ”Ń€Đ”ĐŒĐ”ĐœĐœŃ‹Đ” срДЎы {0} Đž {1} Đ±ŃƒĐŽŃƒŃ‚ ĐŽĐŸŃŃ‚ŃƒĐżĐœŃ‹, Đ±ŃƒĐŽŃƒŃ‡Đž {0} ĐŸŃ‚ĐœĐŸŃĐžŃ‚Đ”Đ»ŃŒĐœĐŸ {1}. Đ”ĐŸĐżĐŸĐ»ĐœĐžŃ‚Đ”Đ»ŃŒĐœŃ‹Đ” сĐČĐ”ĐŽĐ”ĐœĐžŃ ĐŸĐ± ŃŃ‚ĐŸĐč Ń„ŃƒĐœĐșцоо Đž ĐŽĐŸŃŃ‚ŃƒĐżĐœŃ‹Ń… ĐżĐ”Ń€Đ”ĐŒĐ”ĐœĐœŃ‹Ń… срДЎы ŃĐŒ. В {2}.", "commandRunnerHelp": "Đ—ĐŽĐ”ŃŃŒ ĐČы ĐŒĐŸĐ¶Đ”Ń‚Đ” ŃƒŃŃ‚Đ°ĐœĐŸĐČоть ĐșĐŸĐŒĐ°ĐœĐŽŃ‹, ĐșĐŸŃ‚ĐŸŃ€Ń‹Đ” Đ±ŃƒĐŽŃƒŃ‚ ĐČŃ‹ĐżĐŸĐ»ĐœŃŃ‚ŃŒŃŃ ĐČ ŃƒĐșĐ°Đ·Đ°ĐœĐœŃ‹Ń… ŃĐŸĐ±Ń‹Ń‚ĐžŃŃ…. Вы ĐŽĐŸĐ»Đ¶ĐœŃ‹ уĐșĐ°Đ·Đ°Ń‚ŃŒ ĐżĐŸ ĐŸĐŽĐœĐŸĐč ĐșĐŸĐŒĐ°ĐœĐŽĐ” ĐČ ĐșĐ°Đ¶ĐŽĐŸĐč ŃŃ‚Ń€ĐŸĐșĐ”. ĐŸĐ”Ń€Đ”ĐŒĐ”ĐœĐœŃ‹Đ” срДЎы {0} Đž {1} Đ±ŃƒĐŽŃƒŃ‚ ĐŽĐŸŃŃ‚ŃƒĐżĐœŃ‹, Đ±ŃƒĐŽŃƒŃ‡Đž {0} ĐŸŃ‚ĐœĐŸŃĐžŃ‚Đ”Đ»ŃŒĐœĐŸ {1}. Đ”ĐŸĐżĐŸĐ»ĐœĐžŃ‚Đ”Đ»ŃŒĐœŃ‹Đ” сĐČĐ”ĐŽĐ”ĐœĐžŃ ĐŸĐ± ŃŃ‚ĐŸĐč Ń„ŃƒĐœĐșцоо Đž ĐŽĐŸŃŃ‚ŃƒĐżĐœŃ‹Ń… ĐżĐ”Ń€Đ”ĐŒĐ”ĐœĐœŃ‹Ń… срДЎы ŃĐŒ. В {2}.",
"commandsUpdated": "ĐšĐŸĐŒĐ°ĐœĐŽŃ‹ ĐŸĐ±ĐœĐŸĐČĐ»Đ”ĐœŃ‹!", "commandsUpdated": "ĐšĐŸĐŒĐ°ĐœĐŽŃ‹ ĐŸĐ±ĐœĐŸĐČĐ»Đ”ĐœŃ‹!",
"createUserDir": "АĐČŃ‚ĐŸĐŒĐ°Ń‚ĐžŃ‡Đ”ŃĐșĐŸĐ” ŃĐŸĐ·ĐŽĐ°ĐœĐžĐ” ĐŽĐŸĐŒĐ°ŃˆĐœĐ”ĐłĐŸ ĐșĐ°Ń‚Đ°Đ»ĐŸĐłĐ° ĐżĐŸĐ»ŃŒĐ·ĐŸĐČĐ°Ń‚Đ”Đ»Ń про ĐŽĐŸĐ±Đ°ĐČĐ»Đ”ĐœĐžĐž ĐœĐŸĐČĐŸĐłĐŸ ĐżĐŸĐ»ŃŒĐ·ĐŸĐČĐ°Ń‚Đ”Đ»Ń", "createUserDir": "АĐČŃ‚ĐŸĐŒĐ°Ń‚ĐžŃ‡Đ”ŃĐșĐŸĐ” ŃĐŸĐ·ĐŽĐ°ĐœĐžĐ” ĐŽĐŸĐŒĐ°ŃˆĐœĐ”ĐłĐŸ ĐșĐ°Ń‚Đ°Đ»ĐŸĐłĐ° ĐżĐŸĐ»ŃŒĐ·ĐŸĐČĐ°Ń‚Đ”Đ»Ń про ĐŽĐŸĐ±Đ°ĐČĐ»Đ”ĐœĐžĐž ĐœĐŸĐČĐŸĐłĐŸ ĐżĐŸĐ»ŃŒĐ·ĐŸĐČĐ°Ń‚Đ”Đ»Ń",
"minimumPasswordLength": "Minimum password length",
"tusUploads": "Đ—Đ°ĐłŃ€ŃƒĐ¶Đ”ĐœĐœŃ‹Đ” фаĐčлы",
"tusUploadsHelp": " File Browser ĐżĐŸĐŽĐŽĐ”Ń€Đ¶ĐžĐČаДт Đ·Đ°ĐłŃ€ŃƒĐ·Đșу фаĐčĐ»ĐŸĐČ ĐżĐŸ Ń‡Đ°ŃŃ‚ŃĐŒ, Ń‡Ń‚ĐŸ ĐżĐŸĐ·ĐČĐŸĐ»ŃĐ”Ń‚ Ń€Đ°Đ±ĐŸŃ‚Đ°Ń‚ŃŒ ĐČ ŃĐ”Ń‚ŃŃ… ĐœĐžĐ·ĐșĐŸĐłĐŸ ĐșачДстĐČа.",
"tusUploadsChunkSize": "ĐŁĐșазыĐČаДт ĐŒĐ°ĐșŃĐžĐŒĐ°Đ»ŃŒĐœŃ‹Đč Ń€Đ°Đ·ĐŒĐ”Ń€ Đ·Đ°ĐżŃ€ĐŸŃĐ° (ĐŒĐ”Đ»ĐșОД Đ·Đ°ĐłŃ€ŃƒĐ·ĐșĐž ĐżĐŸĐčЮут ĐœĐ°ĐżŃ€ŃĐŒŃƒŃŽ). Вы ĐŒĐŸĐ¶Đ”Ń‚Đ” ĐČĐČДстО ĐżŃ€ĐŸŃŃ‚ĐŸĐ” Ń†Đ”Đ»ĐŸĐ” Ń‡ĐžŃĐ»ĐŸ, ĐŸĐ±ĐŸĐ·ĐœĐ°Ń‡Đ°ŃŽŃ‰Đ”Đ” Ń€Đ°Đ·ĐŒĐ”Ń€ ĐČĐČĐŸĐŽĐ° ĐČ Đ±Đ°Đčтах, ОлО ŃŃ‚Ń€ĐŸĐșу, ĐœĐ°ĐżŃ€ĐžĐŒĐ”Ń€ 10MB, 1GB Đž т. ĐŽ.",
"tusUploadsRetryCount": "ĐšĐŸĐ»ĐžŃ‡Đ”ŃŃ‚ĐČĐŸ ĐżĐŸĐČŃ‚ĐŸŃ€ĐœŃ‹Ń… ĐżĐŸĐżŃ‹Ń‚ĐŸĐș, ĐșĐŸŃ‚ĐŸŃ€Ń‹Đ” ĐœĐ”ĐŸĐ±Ń…ĐŸĐŽĐžĐŒĐŸ ĐČŃ‹ĐżĐŸĐ»ĐœĐžŃ‚ŃŒ, ДслО Ń„Ń€Đ°ĐłĐŒĐ”ĐœŃ‚ ĐœĐ” ŃƒĐŽĐ°Đ»ĐŸŃŃŒ Đ·Đ°ĐłŃ€ŃƒĐ·ĐžŃ‚ŃŒ.",
"userHomeBasePath": "Путь Đș ĐŽĐŸĐŒĐ°ŃˆĐœĐ”ĐŒŃƒ ĐșĐ°Ń‚Đ°Đ»ĐŸĐłŃƒ ĐżĐŸĐ»ŃŒĐ·ĐŸĐČĐ°Ń‚Đ”Đ»Ń",
"userScopeGenerationPlaceholder": "ĐžĐ±Đ»Đ°ŃŃ‚ŃŒ ĐŽĐ”ĐčстĐČоя Đ±ŃƒĐŽĐ”Ń‚ ŃĐłĐ”ĐœĐ”Ń€ĐžŃ€ĐŸĐČĐ°ĐœĐ° аĐČŃ‚ĐŸĐŒĐ°Ń‚ĐžŃ‡Đ”ŃĐșĐž",
"createUserHomeDirectory": "ĐĄĐŸĐ·ĐŽĐ°Ń‚ŃŒ ĐŽĐŸĐŒĐ°ŃˆĐœĐžĐč ĐșĐ°Ń‚Đ°Đ»ĐŸĐł ĐżĐŸĐ»ŃŒĐ·ĐŸĐČĐ°Ń‚Đ”Đ»Ń",
"customStylesheet": "ĐĄĐČĐŸĐč ŃŃ‚ĐžĐ»ŃŒ", "customStylesheet": "ĐĄĐČĐŸĐč ŃŃ‚ĐžĐ»ŃŒ",
"defaultUserDescription": "Đ­Ń‚ĐŸ ĐœĐ°ŃŃ‚Ń€ĐŸĐčĐșĐž ĐżĐŸ ŃƒĐŒĐŸĐ»Ń‡Đ°ĐœĐžŃŽ ĐŽĐ»Ń ĐœĐŸĐČых ĐżĐŸĐ»ŃŒĐ·ĐŸĐČатДлДĐč.", "defaultUserDescription": "Đ­Ń‚ĐŸ ĐœĐ°ŃŃ‚Ń€ĐŸĐčĐșĐž ĐżĐŸ ŃƒĐŒĐŸĐ»Ń‡Đ°ĐœĐžŃŽ ĐŽĐ»Ń ĐœĐŸĐČых ĐżĐŸĐ»ŃŒĐ·ĐŸĐČатДлДĐč.",
"disableExternalLinks": "ОтĐșĐ»ŃŽŃ‡ĐžŃ‚ŃŒ ĐČĐœĐ”ŃˆĐœĐžĐ” ссылĐșĐž (ĐșŃ€ĐŸĐŒĐ” ĐŽĐŸĐșŃƒĐŒĐ”ĐœŃ‚Đ°Ń†ĐžĐž)", "disableExternalLinks": "ОтĐșĐ»ŃŽŃ‡ĐžŃ‚ŃŒ ĐČĐœĐ”ŃˆĐœĐžĐ” ссылĐșĐž (ĐșŃ€ĐŸĐŒĐ” ĐŽĐŸĐșŃƒĐŒĐ”ĐœŃ‚Đ°Ń†ĐžĐž)",
@ -216,7 +196,7 @@
"ruleExample2": "Đ±Đ»ĐŸĐșĐžŃ€ŃƒĐ”Ń‚ ĐŽĐŸŃŃ‚ŃƒĐż Đș фаĐčлу с ĐžĐŒĐ”ĐœĐ”ĐŒ Caddyfile ĐČ ĐșĐŸŃ€ĐœĐ”ĐČĐŸĐč ĐŸĐ±Đ»Đ°ŃŃ‚Đž.", "ruleExample2": "Đ±Đ»ĐŸĐșĐžŃ€ŃƒĐ”Ń‚ ĐŽĐŸŃŃ‚ŃƒĐż Đș фаĐčлу с ĐžĐŒĐ”ĐœĐ”ĐŒ Caddyfile ĐČ ĐșĐŸŃ€ĐœĐ”ĐČĐŸĐč ĐŸĐ±Đ»Đ°ŃŃ‚Đž.",
"rules": "ПраĐČа", "rules": "ПраĐČа",
"rulesHelp": "Đ—ĐŽĐ”ŃŃŒ ĐČы ĐŒĐŸĐ¶Đ”Ń‚Đ” ĐŸĐżŃ€Đ”ĐŽĐ”Đ»ĐžŃ‚ŃŒ ĐœĐ°Đ±ĐŸŃ€ Ń€Đ°Đ·Ń€Đ”ŃˆĐ°ŃŽŃ‰ĐžŃ… Đž запрДщающОх праĐČОл ĐŽĐ»Ń ŃŃ‚ĐŸĐłĐŸ ĐșĐŸĐœĐșŃ€Đ”Ń‚ĐœĐŸĐłĐŸ ĐżĐŸĐ»ŃŒĐ·ĐŸĐČĐ°Ń‚Đ”Đ»ŃŒ. Đ‘Đ»ĐŸĐșĐžŃ€ĐŸĐČĐ°ĐœĐœŃ‹Đ” фаĐčлы ĐœĐ” Đ±ŃƒĐŽŃƒŃ‚ ĐŸŃ‚ĐŸĐ±Ń€Đ°Đ¶Đ°Ń‚ŃŒŃŃ ĐČ ŃĐżĐžŃĐșах, Đž ĐœĐ” Đ±ŃƒĐŽŃƒŃ‚ ĐŽĐŸŃŃ‚ŃƒĐżĐœŃ‹ ĐŽĐ»Ń ĐżĐŸĐ»ŃŒĐ·ĐŸĐČĐ°Ń‚Đ”Đ»Ń. Есть ĐżĐŸĐŽĐŽĐ”Ń€Đ¶Đșа Ń€Đ”ĐłŃƒĐ»ŃŃ€ĐœŃ‹Ń… ĐČŃ‹Ń€Đ°Đ¶Đ”ĐœĐžĐč Đž ĐŸŃ‚ĐœĐŸŃĐžŃ‚Đ”Đ»ŃŒĐœŃ‹Ń… ĐżŃƒŃ‚Đ”Đč.\n", "rulesHelp": "Đ—ĐŽĐ”ŃŃŒ ĐČы ĐŒĐŸĐ¶Đ”Ń‚Đ” ĐŸĐżŃ€Đ”ĐŽĐ”Đ»ĐžŃ‚ŃŒ ĐœĐ°Đ±ĐŸŃ€ Ń€Đ°Đ·Ń€Đ”ŃˆĐ°ŃŽŃ‰ĐžŃ… Đž запрДщающОх праĐČОл ĐŽĐ»Ń ŃŃ‚ĐŸĐłĐŸ ĐșĐŸĐœĐșŃ€Đ”Ń‚ĐœĐŸĐłĐŸ ĐżĐŸĐ»ŃŒĐ·ĐŸĐČĐ°Ń‚Đ”Đ»ŃŒ. Đ‘Đ»ĐŸĐșĐžŃ€ĐŸĐČĐ°ĐœĐœŃ‹Đ” фаĐčлы ĐœĐ” Đ±ŃƒĐŽŃƒŃ‚ ĐŸŃ‚ĐŸĐ±Ń€Đ°Đ¶Đ°Ń‚ŃŒŃŃ ĐČ ŃĐżĐžŃĐșах, Đž ĐœĐ” Đ±ŃƒĐŽŃƒŃ‚ ĐŽĐŸŃŃ‚ŃƒĐżĐœŃ‹ ĐŽĐ»Ń ĐżĐŸĐ»ŃŒĐ·ĐŸĐČĐ°Ń‚Đ”Đ»Ń. Есть ĐżĐŸĐŽĐŽĐ”Ń€Đ¶Đșа Ń€Đ”ĐłŃƒĐ»ŃŃ€ĐœŃ‹Ń… ĐČŃ‹Ń€Đ°Đ¶Đ”ĐœĐžĐč Đž ĐŸŃ‚ĐœĐŸŃĐžŃ‚Đ”Đ»ŃŒĐœŃ‹Ń… ĐżŃƒŃ‚Đ”Đč.\n",
"scope": "ĐžĐ±Đ»Đ°ŃŃ‚ŃŒ", "scope": "ĐšĐŸŃ€Đ”ĐœŃŒ",
"setDateFormat": "ĐŁŃŃ‚Đ°ĐœĐŸĐČоть Ń‚ĐŸŃ‡ĐœŃ‹Đč Ń„ĐŸŃ€ĐŒĐ°Ń‚ Юаты", "setDateFormat": "ĐŁŃŃ‚Đ°ĐœĐŸĐČоть Ń‚ĐŸŃ‡ĐœŃ‹Đč Ń„ĐŸŃ€ĐŒĐ°Ń‚ Юаты",
"settingsUpdated": "ĐĐ°ŃŃ‚Ń€ĐŸĐčĐșĐž ĐżŃ€ĐžĐŒĐ”ĐœĐ”ĐœŃ‹!", "settingsUpdated": "ĐĐ°ŃŃ‚Ń€ĐŸĐčĐșĐž ĐżŃ€ĐžĐŒĐ”ĐœĐ”ĐœŃ‹!",
"shareDuration": "Đ’Ń€Đ”ĐŒŃ Ń€Đ°ŃŃˆĐ°Ń€Đ”ĐœĐœĐŸĐč ссылĐșĐž", "shareDuration": "Đ’Ń€Đ”ĐŒŃ Ń€Đ°ŃŃˆĐ°Ń€Đ”ĐœĐœĐŸĐč ссылĐșĐž",
@ -224,7 +204,6 @@
"shareDeleted": "Đ Đ°ŃŃˆĐ°Ń€Đ”ĐœĐœĐ°Ń ссылĐșа ŃƒĐŽĐ°Đ»Đ”ĐœĐ°!", "shareDeleted": "Đ Đ°ŃŃˆĐ°Ń€Đ”ĐœĐœĐ°Ń ссылĐșа ŃƒĐŽĐ°Đ»Đ”ĐœĐ°!",
"singleClick": "ОтĐșрытОД фаĐčĐ»ĐŸĐČ Đž ĐșĐ°Ń‚Đ°Đ»ĐŸĐłĐŸĐČ ĐŸĐŽĐœĐžĐŒ ĐșлОĐșĐŸĐŒ", "singleClick": "ОтĐșрытОД фаĐčĐ»ĐŸĐČ Đž ĐșĐ°Ń‚Đ°Đ»ĐŸĐłĐŸĐČ ĐŸĐŽĐœĐžĐŒ ĐșлОĐșĐŸĐŒ",
"themes": { "themes": {
"default": " ĐĄĐžŃŃ‚Đ”ĐŒĐœŃ‹Đ” ĐœĐ°ŃŃ‚Ń€ĐŸĐčĐșĐž ĐżĐŸ ŃƒĐŒĐŸĐ»Ń‡Đ°ĐœĐžŃŽ",
"dark": "ĐąĐ”ĐŒĐœĐ°Ń", "dark": "ĐąĐ”ĐŒĐœĐ°Ń",
"light": "ĐĄĐČĐ”Ń‚Đ»Đ°Ń", "light": "ĐĄĐČĐ”Ń‚Đ»Đ°Ń",
"title": "ĐąĐ”ĐŒĐ°" "title": "ĐąĐ”ĐŒĐ°"

View File

@ -3,17 +3,14 @@
"cancel": "ZruƥiƄ", "cancel": "ZruƥiƄ",
"clear": "ZruĆĄiĆ„ vĂœber", "clear": "ZruĆĄiĆ„ vĂœber",
"close": "ZavrieƄ", "close": "ZavrieƄ",
"continue": "Continue",
"copy": "KopírovaƄ", "copy": "KopírovaƄ",
"copyFile": "KopĂ­rovaĆ„ sĂșbor", "copyFile": "KopĂ­rovaĆ„ sĂșbor",
"copyToClipboard": "KopírovaƄ do schrånky", "copyToClipboard": "KopírovaƄ do schrånky",
"copyDownloadLinkToClipboard": "Copy download link to clipboard",
"create": "VytvoriƄ", "create": "VytvoriƄ",
"delete": "OdstråniƄ", "delete": "OdstråniƄ",
"download": "StiahnuƄ", "download": "StiahnuƄ",
"file": "SĂșbor", "file": "SĂșbor",
"folder": "Priečinok", "folder": "Priečinok",
"fullScreen": "Toggle full screen",
"hideDotfiles": "SkryĆ„ sĂșbory začínajĂșce bodkou", "hideDotfiles": "SkryĆ„ sĂșbory začínajĂșce bodkou",
"info": "Info", "info": "Info",
"more": "Viac", "more": "Viac",
@ -24,7 +21,6 @@
"ok": "OK", "ok": "OK",
"permalink": "ZĂ­skaĆ„ trvalĂœ odkaz", "permalink": "ZĂ­skaĆ„ trvalĂœ odkaz",
"previous": "Predoƥlé", "previous": "Predoƥlé",
"preview": "Preview",
"publish": "ZverejniƄ", "publish": "ZverejniƄ",
"rename": "PremenovaƄ", "rename": "PremenovaƄ",
"replace": "NahradiƄ", "replace": "NahradiƄ",
@ -41,17 +37,13 @@
"toggleSidebar": "PrepnĂșĆ„ sidebar", "toggleSidebar": "PrepnĂșĆ„ sidebar",
"update": "AktualizovaƄ", "update": "AktualizovaƄ",
"upload": "NahraƄ", "upload": "NahraƄ",
"openFile": "OtvoriĆ„ sĂșbor", "openFile": "OtvoriĆ„ sĂșbor"
"discardChanges": "Discard"
}, },
"download": { "download": {
"downloadFile": "StiahnuĆ„ sĂșbor", "downloadFile": "StiahnuĆ„ sĂșbor",
"downloadFolder": "StiahnuĆ„ priečinok", "downloadFolder": "StiahnuĆ„ priečinok",
"downloadSelected": "StiahnuƄ vybraté" "downloadSelected": "StiahnuƄ vybraté"
}, },
"upload": {
"abortUpload": "Are you sure you wish to abort?"
},
"errors": { "errors": {
"forbidden": "You don't have permissions to access this.", "forbidden": "You don't have permissions to access this.",
"internal": "Something really went wrong.", "internal": "Something really went wrong.",
@ -110,7 +102,6 @@
"deleteMessageMultiple": "Naozaj chcete odstrĂĄniĆ„ {count} sĂșbor(ov)?", "deleteMessageMultiple": "Naozaj chcete odstrĂĄniĆ„ {count} sĂșbor(ov)?",
"deleteMessageSingle": "Naozaj chcete odstrĂĄniĆ„ tento sĂșbor/priečinok?", "deleteMessageSingle": "Naozaj chcete odstrĂĄniĆ„ tento sĂșbor/priečinok?",
"deleteMessageShare": "Naozaj chcete odstrĂĄniĆ„ toto zdieÄŸanie({path})?", "deleteMessageShare": "Naozaj chcete odstrĂĄniĆ„ toto zdieÄŸanie({path})?",
"deleteUser": "Are you sure you want to delete this user?",
"deleteTitle": "OdstrĂĄnenie sĂșborov", "deleteTitle": "OdstrĂĄnenie sĂșborov",
"displayName": "ZobrazenĂœ nĂĄzov:", "displayName": "ZobrazenĂœ nĂĄzov:",
"download": "StiahnuĆ„ sĂșbory", "download": "StiahnuĆ„ sĂșbory",
@ -137,11 +128,8 @@
"show": "ZobraziƄ", "show": "ZobraziƄ",
"size": "VeÄŸkosĆ„", "size": "VeÄŸkosĆ„",
"upload": "NahraƄ", "upload": "NahraƄ",
"uploadFiles": "Uploading {files} files...",
"uploadMessage": "ZvoÄŸte moĆŸnosĆ„ nahrĂĄvania.", "uploadMessage": "ZvoÄŸte moĆŸnosĆ„ nahrĂĄvania.",
"optionalPassword": "VoliteÄŸnĂ© heslo", "optionalPassword": "VoliteÄŸnĂ© heslo"
"resolution": "Resolution",
"discardEditorChanges": "Are you sure you wish to discard the changes you've made?"
}, },
"search": { "search": {
"images": "ObrĂĄzky", "images": "ObrĂĄzky",
@ -170,14 +158,6 @@
"commandRunnerHelp": "Sem mĂŽĆŸete nastaviĆ„ prĂ­kazy, ktorĂ© sa vykonajĂș pri určitĂœch udalostiach. MusĂ­te pĂ­saĆ„ jeden na riadok. PremennĂ© prostredia {0} a {1} sĂș k dispozĂ­cii, s tĂœm ĆŸe {0} relatĂ­vne k {1}. Viac informĂĄciĂ­ o tejto funkcionalite a dostupnĂœch premennĂœch prostredia nĂĄjdete na {2}.", "commandRunnerHelp": "Sem mĂŽĆŸete nastaviĆ„ prĂ­kazy, ktorĂ© sa vykonajĂș pri určitĂœch udalostiach. MusĂ­te pĂ­saĆ„ jeden na riadok. PremennĂ© prostredia {0} a {1} sĂș k dispozĂ­cii, s tĂœm ĆŸe {0} relatĂ­vne k {1}. Viac informĂĄciĂ­ o tejto funkcionalite a dostupnĂœch premennĂœch prostredia nĂĄjdete na {2}.",
"commandsUpdated": "Príkazy upravené!", "commandsUpdated": "Príkazy upravené!",
"createUserDir": "Automaticky vytvoriĆ„ domovskĂœ priečinok pri pridanĂ­ pouĆŸĂ­vateÄŸa", "createUserDir": "Automaticky vytvoriĆ„ domovskĂœ priečinok pri pridanĂ­ pouĆŸĂ­vateÄŸa",
"minimumPasswordLength": "Minimum password length",
"tusUploads": "Chunked Uploads",
"tusUploadsHelp": "File Browser supports chunked file uploads, allowing for the creation of efficient, reliable, resumable and chunked file uploads even on unreliable networks.",
"tusUploadsChunkSize": "Indicates to maximum size of a request (direct uploads will be used for smaller uploads). You may input a plain integer denoting byte size input or a string like 10MB, 1GB etc.",
"tusUploadsRetryCount": "Number of retries to perform if a chunk fails to upload.",
"userHomeBasePath": "Base path for user home directories",
"userScopeGenerationPlaceholder": "The scope will be auto generated",
"createUserHomeDirectory": "Create user home directory",
"customStylesheet": "VlastnĂœ Stylesheet", "customStylesheet": "VlastnĂœ Stylesheet",
"defaultUserDescription": "Toto sĂș predvolanĂ© nastavenia novĂ©ho pouĆŸĂ­vateÄŸa.", "defaultUserDescription": "Toto sĂș predvolanĂ© nastavenia novĂ©ho pouĆŸĂ­vateÄŸa.",
"disableExternalLinks": "VypnĂșĆ„ externĂ© odkazy (okrem dokumentĂĄcie)", "disableExternalLinks": "VypnĂșĆ„ externĂ© odkazy (okrem dokumentĂĄcie)",
@ -217,14 +197,12 @@
"rules": "PravidlĂĄ", "rules": "PravidlĂĄ",
"rulesHelp": "Tu mĂŽĆŸete definovaĆ„ pravidlĂĄ pre konkrĂ©tneho pouĆŸĂ­vateÄŸa. BlokovanĂ© sĂșbory pouĆŸĂ­vateÄŸ nebude vidieĆ„ a ani nebude k nim maĆ„ prĂ­stup. Podporujeme regex a cesty relatĂ­vne k pouĆŸĂ­vateÄŸovi.\n", "rulesHelp": "Tu mĂŽĆŸete definovaĆ„ pravidlĂĄ pre konkrĂ©tneho pouĆŸĂ­vateÄŸa. BlokovanĂ© sĂșbory pouĆŸĂ­vateÄŸ nebude vidieĆ„ a ani nebude k nim maĆ„ prĂ­stup. Podporujeme regex a cesty relatĂ­vne k pouĆŸĂ­vateÄŸovi.\n",
"scope": "Scope", "scope": "Scope",
"setDateFormat": "Set exact date format",
"settingsUpdated": "Nastavenia upravené!", "settingsUpdated": "Nastavenia upravené!",
"shareDuration": "Trvanie zdieÄŸania", "shareDuration": "Trvanie zdieÄŸania",
"shareManagement": "SprĂĄva zdieÄŸania", "shareManagement": "SprĂĄva zdieÄŸania",
"shareDeleted": "ZdieÄŸanie odstrĂĄnenĂ©!", "shareDeleted": "ZdieÄŸanie odstrĂĄnenĂ©!",
"singleClick": "PouĆŸĂ­vaĆ„ jeden klik na otvĂĄranie sĂșborov a priečinkov", "singleClick": "PouĆŸĂ­vaĆ„ jeden klik na otvĂĄranie sĂșborov a priečinkov",
"themes": { "themes": {
"default": "System default",
"dark": "TmavĂĄ", "dark": "TmavĂĄ",
"light": "SvetlĂĄ", "light": "SvetlĂĄ",
"title": "Téma" "title": "Téma"

View File

@ -3,18 +3,13 @@
"cancel": "Avbryt", "cancel": "Avbryt",
"clear": "Rensa", "clear": "Rensa",
"close": "StÀng", "close": "StÀng",
"continue": "Continue",
"copy": "Kopiera", "copy": "Kopiera",
"copyFile": "Kopiera fil", "copyFile": "Kopiera fil",
"copyToClipboard": "Kopiera till urklipp", "copyToClipboard": "Kopiera till urklipp",
"copyDownloadLinkToClipboard": "Copy download link to clipboard",
"create": "Skapa", "create": "Skapa",
"delete": "Ta bort", "delete": "Ta bort",
"download": "Ladda ner", "download": "Ladda ner",
"file": "File", "hideDotfiles": "",
"folder": "Folder",
"fullScreen": "Toggle full screen",
"hideDotfiles": "Hide dotfiles",
"info": "Info", "info": "Info",
"more": "Mer", "more": "Mer",
"move": "Flytta", "move": "Flytta",
@ -24,7 +19,6 @@
"ok": "OK", "ok": "OK",
"permalink": "Skapa en permanent lÀnk", "permalink": "Skapa en permanent lÀnk",
"previous": "FöregÄende", "previous": "FöregÄende",
"preview": "Preview",
"publish": "Publisera", "publish": "Publisera",
"rename": "Ändra namn", "rename": "Ändra namn",
"replace": "ErsÀtt", "replace": "ErsÀtt",
@ -36,27 +30,20 @@
"selectMultiple": "VĂ€lj flera", "selectMultiple": "VĂ€lj flera",
"share": "Dela", "share": "Dela",
"shell": "VĂ€xla skal", "shell": "VĂ€xla skal",
"submit": "Submit",
"switchView": "Byt vy", "switchView": "Byt vy",
"toggleSidebar": "VÀxla sidofÀlt", "toggleSidebar": "VÀxla sidofÀlt",
"update": "Uppdatera", "update": "Uppdatera",
"upload": "Ladda upp", "upload": "Ladda upp"
"openFile": "Open file",
"discardChanges": "Discard"
}, },
"download": { "download": {
"downloadFile": "Ladda ner fil", "downloadFile": "Ladda ner fil",
"downloadFolder": "Ladda ner mapp", "downloadFolder": "Ladda ner mapp",
"downloadSelected": "Download Selected" "downloadSelected": ""
},
"upload": {
"abortUpload": "Are you sure you wish to abort?"
}, },
"errors": { "errors": {
"forbidden": "Du saknar rÀttigheter till detta", "forbidden": "Du saknar rÀttigheter till detta",
"internal": "NÄgot gick fel", "internal": "NÄgot gick fel",
"notFound": "Det gÄr inte att nÄ den hÀr platsen.", "notFound": "Det gÄr inte att nÄ den hÀr platsen."
"connection": "The server can't be reached."
}, },
"files": { "files": {
"body": "Huvud", "body": "Huvud",
@ -73,8 +60,7 @@
"size": "Storlek", "size": "Storlek",
"sortByLastModified": "Sortera pÄ senast Àndrad", "sortByLastModified": "Sortera pÄ senast Àndrad",
"sortByName": "Sortera pÄ namn", "sortByName": "Sortera pÄ namn",
"sortBySize": "Sortera pÄ storlek", "sortBySize": "Sortera pÄ storlek"
"noPreview": "Preview is not available for this file."
}, },
"help": { "help": {
"click": "vÀlj fil eller mapp", "click": "vÀlj fil eller mapp",
@ -109,8 +95,6 @@
"currentlyNavigating": "För nÀrvarande navigerar du pÄ:", "currentlyNavigating": "För nÀrvarande navigerar du pÄ:",
"deleteMessageMultiple": "Är du sĂ€ker pĂ„ att du vill radera {count} filer(na)?", "deleteMessageMultiple": "Är du sĂ€ker pĂ„ att du vill radera {count} filer(na)?",
"deleteMessageSingle": "Är du sĂ€ker pĂ„ att du vill radera denna fil/mapp", "deleteMessageSingle": "Är du sĂ€ker pĂ„ att du vill radera denna fil/mapp",
"deleteMessageShare": "Are you sure you wish to delete this share({path})?",
"deleteUser": "Are you sure you want to delete this user?",
"deleteTitle": "Ta bort filer", "deleteTitle": "Ta bort filer",
"displayName": "Visningsnamn:", "displayName": "Visningsnamn:",
"download": "Ladda ner filer", "download": "Ladda ner filer",
@ -136,12 +120,8 @@
"scheduleMessage": "Pick a date and time to schedule the publication of this post.", "scheduleMessage": "Pick a date and time to schedule the publication of this post.",
"show": "Visa", "show": "Visa",
"size": "Storlek", "size": "Storlek",
"upload": "Upload", "upload": "",
"uploadFiles": "Uploading {files} files...", "uploadMessage": ""
"uploadMessage": "Select an option to upload.",
"optionalPassword": "Optional password",
"resolution": "Resolution",
"discardEditorChanges": "Are you sure you wish to discard the changes you've made?"
}, },
"search": { "search": {
"images": "Bilder", "images": "Bilder",
@ -170,14 +150,6 @@
"commandRunnerHelp": "HÀr kan du ange kommandon som körs i de namngivna hÀndelserna. Du mÄste skriva en per rad. Miljövariablerna {0} och {1} kommer att vara tillgÀngliga, och vara {0} i förhÄllande till {1}. För mer information om den hÀr funktionen och de tillgÀngliga miljövariablerna, vÀnligen lÀs {2}.", "commandRunnerHelp": "HÀr kan du ange kommandon som körs i de namngivna hÀndelserna. Du mÄste skriva en per rad. Miljövariablerna {0} och {1} kommer att vara tillgÀngliga, och vara {0} i förhÄllande till {1}. För mer information om den hÀr funktionen och de tillgÀngliga miljövariablerna, vÀnligen lÀs {2}.",
"commandsUpdated": "Kommandon uppdaterade!", "commandsUpdated": "Kommandon uppdaterade!",
"createUserDir": "Auto skapa anvÀndarens hemkatalog nÀr du lÀgger till nya anvÀndare", "createUserDir": "Auto skapa anvÀndarens hemkatalog nÀr du lÀgger till nya anvÀndare",
"minimumPasswordLength": "Minimum password length",
"tusUploads": "Chunked Uploads",
"tusUploadsHelp": "File Browser supports chunked file uploads, allowing for the creation of efficient, reliable, resumable and chunked file uploads even on unreliable networks.",
"tusUploadsChunkSize": "Indicates to maximum size of a request (direct uploads will be used for smaller uploads). You may input a plain integer denoting byte size input or a string like 10MB, 1GB etc.",
"tusUploadsRetryCount": "Number of retries to perform if a chunk fails to upload.",
"userHomeBasePath": "Base path for user home directories",
"userScopeGenerationPlaceholder": "The scope will be auto generated",
"createUserHomeDirectory": "Create user home directory",
"customStylesheet": "Anpassad formatmall", "customStylesheet": "Anpassad formatmall",
"defaultUserDescription": "Detta Àr standard instÀllningar för anvÀndare.", "defaultUserDescription": "Detta Àr standard instÀllningar för anvÀndare.",
"disableExternalLinks": "Inaktivera externa lÀnkar (förutom dokumentation)", "disableExternalLinks": "Inaktivera externa lÀnkar (förutom dokumentation)",
@ -188,7 +160,7 @@
"executeOnShellDescription": "Som standard kör fil blÀddraren kommandona genom att anropa deras binÀrfiler direkt. Om du vill köra dem pÄ ett skal i stÀllet (till exempel bash eller PowerShell), kan du definiera det hÀr med nödvÀndiga argument och flaggor. Om det Àr instÀllt kommer kommandot du kör att lÀggas till som ett argument. Detta gÀller bÄde anvÀndar kommandon och hÀndelse krokar.", "executeOnShellDescription": "Som standard kör fil blÀddraren kommandona genom att anropa deras binÀrfiler direkt. Om du vill köra dem pÄ ett skal i stÀllet (till exempel bash eller PowerShell), kan du definiera det hÀr med nödvÀndiga argument och flaggor. Om det Àr instÀllt kommer kommandot du kör att lÀggas till som ett argument. Detta gÀller bÄde anvÀndar kommandon och hÀndelse krokar.",
"globalRules": "Det hÀr Àr en global uppsÀttning regler för att tillÄta och inte tillÄta. De gÀller för alla anvÀndare. Du kan definiera specifika regler för varje anvÀndares instÀllningar för att ÄsidosÀtta de hÀr instÀllningarna.", "globalRules": "Det hÀr Àr en global uppsÀttning regler för att tillÄta och inte tillÄta. De gÀller för alla anvÀndare. Du kan definiera specifika regler för varje anvÀndares instÀllningar för att ÄsidosÀtta de hÀr instÀllningarna.",
"globalSettings": "Globala instÀllningar", "globalSettings": "Globala instÀllningar",
"hideDotfiles": "Hide dotfiles", "hideDotfiles": "",
"insertPath": "Ange sökvÀg", "insertPath": "Ange sökvÀg",
"insertRegex": "SĂ€tt in regex expression", "insertRegex": "SĂ€tt in regex expression",
"instanceName": "Instans namn", "instanceName": "Instans namn",
@ -199,7 +171,7 @@
"newUser": "Ny anvÀndare", "newUser": "Ny anvÀndare",
"password": "Lösenord", "password": "Lösenord",
"passwordUpdated": "Lösenord uppdaterat", "passwordUpdated": "Lösenord uppdaterat",
"path": "Path", "path": "",
"perm": { "perm": {
"create": "Skapa filer och mappar", "create": "Skapa filer och mappar",
"delete": "Ta bort filer och mappar", "delete": "Ta bort filer och mappar",
@ -217,17 +189,14 @@
"rules": "Regler", "rules": "Regler",
"rulesHelp": "HÀr kan du definiera en uppsÀttning regler för godkÀnna och neka för den hÀr specifika anvÀndaren. Den blockerade filen kommer inte upp i listningarna och kommer inte att vara tillgÀnglig till anvÀndaren. Vi stöder regex och sökvÀgar i förhÄllande till anvÀndarnas omfÄng.\n", "rulesHelp": "HÀr kan du definiera en uppsÀttning regler för godkÀnna och neka för den hÀr specifika anvÀndaren. Den blockerade filen kommer inte upp i listningarna och kommer inte att vara tillgÀnglig till anvÀndaren. Vi stöder regex och sökvÀgar i förhÄllande till anvÀndarnas omfÄng.\n",
"scope": "Omfattning", "scope": "Omfattning",
"setDateFormat": "Set exact date format",
"settingsUpdated": "InstÀllning uppdaterad!", "settingsUpdated": "InstÀllning uppdaterad!",
"shareDuration": "Share Duration", "shareDuration": "",
"shareManagement": "Share Management", "shareManagement": "",
"shareDeleted": "Share deleted!", "singleClick": "",
"singleClick": "Use single clicks to open files and directories",
"themes": { "themes": {
"default": "System default", "dark": "",
"dark": "Dark", "light": "",
"light": "Light", "title": ""
"title": "Theme"
}, },
"user": "AnvÀndare", "user": "AnvÀndare",
"userCommands": "Kommandon", "userCommands": "Kommandon",

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