Compare commits
130 Commits
4bf7983528
...
7859553c56
| Author | SHA1 | Date | |
|---|---|---|---|
| 7859553c56 | |||
|
|
e423395ef0 | ||
|
|
65bbf44e3c | ||
|
|
200b9a6c26 | ||
|
|
3645b578cd | ||
|
|
cc6db83988 | ||
|
|
046d6193c5 | ||
|
|
244fda2f2c | ||
|
|
e36a9b40a0 | ||
|
|
a756e02142 | ||
|
|
b6394745a3 | ||
|
|
e99e0b3028 | ||
|
|
47b3e218ad | ||
|
|
0c34b79a99 | ||
|
|
04166e81e5 | ||
|
|
fae410ce6e | ||
|
|
9da01be7fc | ||
|
|
e9e7c68557 | ||
|
|
8ef8f2c098 | ||
|
|
3b3df83d64 | ||
|
|
38d0366acf | ||
|
|
4403cd3572 | ||
|
|
8d7522049c | ||
|
|
7b43cfb1dc | ||
|
|
d644744417 | ||
|
|
d1a73a8b18 | ||
|
|
2b5d6cbb99 | ||
|
|
364f391017 | ||
|
|
c13861e13c | ||
|
|
e6b750add5 | ||
|
|
70d59ec03e | ||
|
|
bf37f88c32 | ||
|
|
7354eb6cf9 | ||
|
|
10684e5390 | ||
|
|
58fe817349 | ||
|
|
d8472e767b | ||
|
|
8700cb30ff | ||
|
|
93c4b2e03c | ||
|
|
2d1a82b73f | ||
|
|
5a07291306 | ||
|
|
09f679fae4 | ||
|
|
9e273cd947 | ||
|
|
77d266bc00 | ||
|
|
8861933cf8 | ||
|
|
a5ea2a266b | ||
|
|
f5e531c8ae | ||
|
|
6072540c3e | ||
|
|
464b644adf | ||
|
|
089255997a | ||
|
|
5331969163 | ||
|
|
f32f27383d | ||
|
|
0acd69c537 | ||
|
|
ae4fb0ea25 | ||
|
|
8230eb7ab5 | ||
|
|
8b8fb3343f | ||
|
|
1d494ff315 | ||
|
|
da03728cd7 | ||
|
|
e735491c57 | ||
|
|
4d830f707f | ||
|
|
f84a6db680 | ||
|
|
a430eb2e60 | ||
|
|
c232d41f90 | ||
|
|
c1e4fd648b | ||
|
|
d5b39a14fd | ||
|
|
e2e1e49130 | ||
|
|
b0f92dd2d7 | ||
|
|
21b0827808 | ||
|
|
d6d84e2b48 | ||
|
|
ca86f91621 | ||
|
|
4bfbf33249 | ||
|
|
f19943a42e | ||
|
|
e74c958862 | ||
|
|
221451a517 | ||
|
|
f46641b038 | ||
|
|
23bd8f6715 | ||
|
|
506fc08577 | ||
|
|
f33076462a | ||
|
|
6c29fabdc8 | ||
|
|
0268506f80 | ||
|
|
ad864a97e9 | ||
|
|
f714e71a35 | ||
|
|
dbdbbab4d7 | ||
|
|
7c0c7820ef | ||
|
|
2741616473 | ||
|
|
ffb858e4ef | ||
|
|
0ca8059d8d | ||
|
|
8ca080422f | ||
|
|
cbb712484d | ||
|
|
8a14018861 | ||
|
|
a493ec90ff | ||
|
|
33113036cd | ||
|
|
a02b2972eb | ||
|
|
e9bb3dc243 | ||
|
|
2e26393a02 | ||
|
|
04a13f086f | ||
|
|
1cc539eb8a | ||
|
|
6ebfdcceaa | ||
|
|
db671c227b | ||
|
|
4aee14de44 | ||
|
|
0cca7d8dc0 | ||
|
|
c34c0afecf | ||
|
|
56a0f9244b | ||
|
|
56b80b6d9b | ||
|
|
d9ebd65ffc | ||
|
|
a882fb6c85 | ||
|
|
5daae69a6d | ||
|
|
54a1ae0fa0 | ||
|
|
b6b4fb5da7 | ||
|
|
6d82a27f9a | ||
|
|
31a326606d | ||
|
|
abbf203bdd | ||
|
|
e82e2392a4 | ||
|
|
f4a8420bf3 | ||
|
|
71a8f5662c | ||
|
|
48f894740f | ||
|
|
b883e287a0 | ||
|
|
5d9f0977d6 | ||
|
|
c606a01a2d | ||
|
|
54b91b8ff0 | ||
|
|
a46acba5f9 | ||
|
|
1d14798653 | ||
|
|
6d55cc59f7 | ||
|
|
495e731ee7 | ||
|
|
ff1579b950 | ||
|
|
7a48fd0c3e | ||
|
|
cfea84fd5e | ||
|
|
0ba9505a19 | ||
|
|
5355629fd1 | ||
|
|
f8a16a6aca | ||
|
|
99c64c12ed |
@ -1,5 +1,7 @@
|
||||
*
|
||||
!docker/*
|
||||
!healthcheck.sh
|
||||
!docker_config.json
|
||||
!filebrowser
|
||||
.venv
|
||||
dist
|
||||
.idea
|
||||
frontend/node_modules
|
||||
frontend/dist
|
||||
filebrowser.db
|
||||
docs/index.md
|
||||
2
.github/CODEOWNERS
vendored
@ -2,4 +2,4 @@
|
||||
# Unless a later match takes precedence, @o1egl will be requested for
|
||||
# review when someone opens a pull request.
|
||||
|
||||
* @o1egl
|
||||
* @o1egl @hacdias
|
||||
|
||||
22
.github/ISSUE_TEMPLATE/bug_report.md
vendored
@ -1,22 +0,0 @@
|
||||
---
|
||||
name: Bug report
|
||||
about: Create a report to help us improve
|
||||
---
|
||||
|
||||
**Description**
|
||||
<!-- A clear and concise description of what the issue is about. What are you trying to do? -->
|
||||
|
||||
**Expected behaviour**
|
||||
<!-- What did you expect to happen? -->
|
||||
|
||||
**What is happening instead?**
|
||||
<!-- Please, give full error messages and/or log. -->
|
||||
|
||||
**Additional context**
|
||||
<!-- Add any other context about the problem here. If applicable, add screenshots to help explain your problem. -->
|
||||
|
||||
**How to reproduce?**
|
||||
<!-- Tell us how to reproduce this issue. How can someone who is starting from scratch reproduce this behaviour as minimally as possible? -->
|
||||
|
||||
**Files**
|
||||
<!-- A list of relevant files for this issue. Large files can be uploaded one-by-one or in a tarball/zipfile. -->
|
||||
53
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
Normal file
@ -0,0 +1,53 @@
|
||||
name: Bug Report
|
||||
description: Report a bug in FileBrowser.
|
||||
labels: [bug, triage]
|
||||
body:
|
||||
- type: checkboxes
|
||||
attributes:
|
||||
label: Checklist
|
||||
description: Please verify that you've followed these steps
|
||||
options:
|
||||
- label: This is a bug report, not a question.
|
||||
required: true
|
||||
- label: I have searched on the [issue tracker](https://github.com/filebrowser/filebrowser/issues?q=is%3Aissue) for my bug.
|
||||
required: true
|
||||
- label: I am running the latest [FileBrowser version](https://github.com/filebrowser/filebrowser/releases) or have an issue updating.
|
||||
required: true
|
||||
- type: textarea
|
||||
id: version
|
||||
attributes:
|
||||
label: Version
|
||||
render: Text
|
||||
description: |
|
||||
Enter the version of FileBrowser you are using.
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Description
|
||||
description: |
|
||||
A clear and concise description of what the issue is about. What are you trying to do?
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: What did you expect to happen?
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: What actually happened?
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Reproduction Steps
|
||||
description: |
|
||||
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
|
||||
attributes:
|
||||
label: Files
|
||||
description: |
|
||||
A list of relevant files for this issue. Large files can be uploaded one-by-one or in a tarball/zipfile.
|
||||
5
.github/ISSUE_TEMPLATE/config.yml
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
blank_issues_enabled: false
|
||||
contact_links:
|
||||
- name: GitHub Discussions
|
||||
url: https://github.com/filebrowser/filebrowser/discussions
|
||||
about: Please ask questions and discuss features here.
|
||||
16
.github/ISSUE_TEMPLATE/feature_request.md
vendored
@ -1,16 +0,0 @@
|
||||
---
|
||||
name: Feature request
|
||||
about: Suggest an idea for this project
|
||||
---
|
||||
|
||||
**Is your feature request related to a problem? Please describe.**
|
||||
<!-- Add a clear and concise description of what the problem is. E.g. *I'm always frustrated when [...]* -->
|
||||
|
||||
**Describe the solution you'd like**
|
||||
<!-- Add a clear and concise description of what you want to happen. -->
|
||||
|
||||
**Describe alternatives you've considered**
|
||||
<!-- Add a clear and concise description of any alternative solutions or features you've considered. -->
|
||||
|
||||
**Additional context**
|
||||
<!-- Add any other context or screenshots about the feature request here. -->
|
||||
27
.github/PULL_REQUEST_TEMPLATE.md
vendored
@ -1,19 +1,16 @@
|
||||
**Description**
|
||||
<!--
|
||||
Please explain the changes you made here.
|
||||
If the feature changes current behaviour, explain why your solution is better.
|
||||
-->
|
||||
## Description
|
||||
|
||||
:rotating_light: 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/).
|
||||
<!-- Please explain the changes you made here. -->
|
||||
|
||||
- [ ] DO make sure you are requesting to **pull a topic/feature/bugfix branch** (right side). Don't request your master!
|
||||
- [ ] DO make sure you are making a pull request against the **master branch** (left side). Also you should start *your branch* off *our master*.
|
||||
- [ ] DO make sure that 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).
|
||||
- [ ] AVOID breaking the continuous integration build.
|
||||
## Additional Information
|
||||
|
||||
**Further comments**
|
||||
<!--
|
||||
If this is a relatively large or complex change, kick off the discussion by explaining why you chose the solution you did, what alternatives you considered, etc.
|
||||
<!-- If it is a relatively large or complex change, please add more information to explain what you did, how you did it, if you considered any alternatives, etc. -->
|
||||
|
||||
:heart: Thank you!
|
||||
-->
|
||||
## Checklist
|
||||
|
||||
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 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 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).
|
||||
|
||||
20
.github/workflows/site-pr.yml
vendored
Normal file
@ -0,0 +1,20 @@
|
||||
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
|
||||
32
.github/workflows/site-publish.yml
vendored
Normal file
@ -0,0 +1,32 @@
|
||||
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 }}
|
||||
24
.github/workflows/stale.yml
vendored
@ -1,24 +0,0 @@
|
||||
name: 'Close stale issues and PRs'
|
||||
permissions:
|
||||
issues: write
|
||||
pull-requests: write
|
||||
|
||||
on:
|
||||
schedule:
|
||||
- cron: '30 1 * * *'
|
||||
|
||||
jobs:
|
||||
stale:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/stale@v9
|
||||
with:
|
||||
stale-pr-message: 'This PR is stale because it has been open 30 days with no activity. Remove stale label or comment or this will be closed in 5 days.'
|
||||
close-pr-message: 'This PR was closed because it has been stalled for 5 days with no activity.'
|
||||
stale-issue-message: 'This issue is stale because it has been open 30 days with no activity. Remove stale label or comment or this will be closed in 5 days.'
|
||||
close-issue-message: 'This issue was closed because it has been stalled for 5 days with no activity.'
|
||||
days-before-stale: 30
|
||||
days-before-close: 5
|
||||
exempt-issue-labels: 'feature ☘,enhancement ⚙,bug 🐞'
|
||||
exempt-pr-labels: 'need-help,wip'
|
||||
operations-per-run: 100
|
||||
1
.gitignore
vendored
@ -6,6 +6,7 @@ rice-box.go
|
||||
/filebrowser
|
||||
/filebrowser.exe
|
||||
/dist
|
||||
.venv
|
||||
|
||||
.DS_Store
|
||||
node_modules
|
||||
|
||||
183
.golangci.yml
@ -1,4 +1,40 @@
|
||||
linters-settings:
|
||||
version: "2"
|
||||
|
||||
linters:
|
||||
# inverted configuration with `default: all` and `disable` is not scalable during updates of golangci-lint
|
||||
default: none
|
||||
enable:
|
||||
- bodyclose
|
||||
- dogsled
|
||||
- dupl
|
||||
- errcheck
|
||||
- errorlint
|
||||
- exhaustive
|
||||
- funlen
|
||||
- gocheckcompilerdirectives
|
||||
- gochecknoinits
|
||||
- gocritic
|
||||
- gocyclo
|
||||
- godox
|
||||
- goprintffuncname
|
||||
- gosec
|
||||
- govet
|
||||
- ineffassign
|
||||
- lll
|
||||
- misspell
|
||||
- mnd
|
||||
- nakedret
|
||||
- nolintlint
|
||||
- prealloc
|
||||
- revive
|
||||
- rowserrcheck
|
||||
- staticcheck
|
||||
- testifylint
|
||||
- unconvert
|
||||
- unparam
|
||||
- unused
|
||||
- whitespace
|
||||
settings:
|
||||
dupl:
|
||||
threshold: 100
|
||||
exhaustive:
|
||||
@ -6,40 +42,21 @@ linters-settings:
|
||||
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
|
||||
enabled-tags:
|
||||
- diagnostic
|
||||
- experimental
|
||||
- opinionated
|
||||
- performance
|
||||
- style
|
||||
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
|
||||
@ -48,74 +65,68 @@ linters-settings:
|
||||
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
|
||||
|
||||
linters:
|
||||
# please, do not use `enable-all`: it's deprecated and will be removed soon.
|
||||
# inverted configuration with `enable-all` and `disable` is not scalable during updates of golangci-lint
|
||||
disable-all: true
|
||||
enable:
|
||||
- bodyclose
|
||||
- dogsled
|
||||
staticcheck:
|
||||
checks:
|
||||
- "all"
|
||||
- "-QF*"
|
||||
exclusions:
|
||||
generated: lax
|
||||
presets:
|
||||
- comments
|
||||
- common-false-positives
|
||||
- legacy
|
||||
- std-error-handling
|
||||
rules:
|
||||
- linters:
|
||||
- gochecknoinits
|
||||
path: cmd/.*.go
|
||||
- linters:
|
||||
- dupl
|
||||
- errcheck
|
||||
- errorlint
|
||||
- exportloopref
|
||||
- exhaustive
|
||||
- funlen
|
||||
- gocheckcompilerdirectives
|
||||
- gochecknoinits
|
||||
- goconst
|
||||
- gocritic
|
||||
- gocyclo
|
||||
- godox
|
||||
- goimports
|
||||
- gomnd
|
||||
- goprintffuncname
|
||||
- gosec
|
||||
- gosimple
|
||||
- govet
|
||||
- ineffassign
|
||||
- lll
|
||||
- misspell
|
||||
- nakedret
|
||||
- nolintlint
|
||||
- prealloc
|
||||
- revive
|
||||
- rowserrcheck
|
||||
- staticcheck
|
||||
- stylecheck
|
||||
- testifylint
|
||||
- typecheck
|
||||
- unconvert
|
||||
- unparam
|
||||
- unused
|
||||
- whitespace
|
||||
|
||||
issues:
|
||||
exclude-dirs:
|
||||
- frontend/
|
||||
exclude-rules:
|
||||
- path: cmd/.*.go
|
||||
linters:
|
||||
- gochecknoinits
|
||||
- path: .*_test.go
|
||||
linters:
|
||||
- lll
|
||||
- gochecknoinits
|
||||
- gocyclo
|
||||
- funlen
|
||||
- dupl
|
||||
- lll
|
||||
- scopelint
|
||||
- text: "Auther"
|
||||
linters:
|
||||
path: .*_test.go
|
||||
- linters:
|
||||
- misspell
|
||||
- text: "strconv.Parse"
|
||||
linters:
|
||||
- gomnd
|
||||
text: "[aA]uther"
|
||||
- linters:
|
||||
- mnd
|
||||
text: strconv.Parse
|
||||
paths:
|
||||
- frontend/
|
||||
|
||||
run:
|
||||
timeout: 5m
|
||||
formatters:
|
||||
enable:
|
||||
- goimports
|
||||
settings:
|
||||
goimports:
|
||||
local-prefixes:
|
||||
- github.com/filebrowser/filebrowser
|
||||
exclusions:
|
||||
generated: lax
|
||||
paths:
|
||||
- frontend/
|
||||
|
||||
@ -14,7 +14,7 @@ builds:
|
||||
goarm: [5, 6, 7]
|
||||
ignore:
|
||||
- goos: darwin
|
||||
goarch: 386
|
||||
goarch: "386"
|
||||
- goos: freebsd
|
||||
goarch: arm
|
||||
archives:
|
||||
@ -68,7 +68,7 @@ dockers:
|
||||
- --platform=linux/arm/v6
|
||||
goos: linux
|
||||
goarch: arm
|
||||
goarm: '6'
|
||||
goarm: "6"
|
||||
image_templates:
|
||||
- git.linuxcrack.zip/midou/filebrowser-fork:{{ .Tag }}-armv6
|
||||
- git.linuxcrack.zip/midou/filebrowser-fork:v{{ .Major }}-armv6
|
||||
@ -85,7 +85,7 @@ dockers:
|
||||
- --platform=linux/arm/v7
|
||||
goos: linux
|
||||
goarch: arm
|
||||
goarm: '7'
|
||||
goarm: "7"
|
||||
image_templates:
|
||||
- git.linuxcrack.zip/midou/filebrowser-fork:{{ .Tag }}-armv7
|
||||
- git.linuxcrack.zip/midou/filebrowser-fork:v{{ .Major }}-armv7
|
||||
|
||||
10
.tx/config
@ -1,10 +0,0 @@
|
||||
[main]
|
||||
host = https://www.transifex.com
|
||||
lang_map = pt_BR: pt-br, zh_CN: zh-cn, zh_HK: zh-hk, zh_TW: zh-tw, nl_BE: nl-be, sv_SE: sv-se, cz-CS: cz_cs
|
||||
|
||||
[file-browser.file-browser]
|
||||
file_filter = frontend/src/i18n/<lang>.json
|
||||
minimum_perc = 50
|
||||
source_file = frontend/src/i18n/en.json
|
||||
source_lang = en
|
||||
type = KEYVALUEJSON
|
||||
208
CHANGELOG.md
@ -2,6 +2,214 @@
|
||||
|
||||
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.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)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* add Vietnamese translation ([#3840](https://github.com/filebrowser/filebrowser/issues/3840)) ([56b80b6](https://github.com/filebrowser/filebrowser/commit/56b80b6d9b4710538765ba7df5da1f03898f6b81))
|
||||
* improve pt-br translations with new keys and refinements ([#4903](https://github.com/filebrowser/filebrowser/issues/4903)) ([a882fb6](https://github.com/filebrowser/filebrowser/commit/a882fb6c85ab6ccc845ed0bf3908d8e5e60ce346))
|
||||
* update translation ko.json ([#3852](https://github.com/filebrowser/filebrowser/issues/3852)) ([d9ebd65](https://github.com/filebrowser/filebrowser/commit/d9ebd65ffcf9b2166fec708d51849796d12b16e0))
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* err shadowing lint ([c606a01](https://github.com/filebrowser/filebrowser/commit/c606a01a2d20932fb32ee896234d57631f8c47e4))
|
||||
* generate random admin password on quick setup ([a46acba](https://github.com/filebrowser/filebrowser/commit/a46acba5f92ee044661880d6ae349e289d984328)), closes [#3646](https://github.com/filebrowser/filebrowser/issues/3646)
|
||||
* imports lint ([54b91b8](https://github.com/filebrowser/filebrowser/commit/54b91b8ff0b8ee1f02f72425ab97d27a5d942fc3))
|
||||
* set videojs locale ([#3742](https://github.com/filebrowser/filebrowser/issues/3742)) ([71a8f56](https://github.com/filebrowser/filebrowser/commit/71a8f5662c207e3cd4ee714a5b5a961121f510cd))
|
||||
|
||||
|
||||
### Build
|
||||
|
||||
* **deps-dev:** bump vite from 6.0.11 to 6.1.6 in /frontend ([#3886](https://github.com/filebrowser/filebrowser/issues/3886)) ([5355629](https://github.com/filebrowser/filebrowser/commit/5355629fd1e7bd85ee3222fca22da899ba23ea95))
|
||||
* **deps:** bump golang.org/x/crypto from 0.31.0 to 0.35.0 ([#3865](https://github.com/filebrowser/filebrowser/issues/3865)) ([0ba9505](https://github.com/filebrowser/filebrowser/commit/0ba9505a19cb369653fc9f8260dc02fcc6587629))
|
||||
* **deps:** bump golang.org/x/net from 0.33.0 to 0.38.0 ([#3869](https://github.com/filebrowser/filebrowser/issues/3869)) ([cfea84f](https://github.com/filebrowser/filebrowser/commit/cfea84fd5e7ec9c1d2366293e5db12baaa4e3a81))
|
||||
* **deps:** bump vue-i18n from 11.0.1 to 11.1.2 in /frontend ([#3786](https://github.com/filebrowser/filebrowser/issues/3786)) ([35d1c09](https://github.com/filebrowser/filebrowser/commit/35d1c092434b80b22c89a614a02122e9f5965b39))
|
||||
|
||||
## [2.32.0](https://github.com/filebrowser/filebrowser/compare/v2.31.2...v2.32.0) (2025-01-31)
|
||||
|
||||
|
||||
|
||||
46
CODE-OF-CONDUCT.md
Normal file
@ -0,0 +1,46 @@
|
||||
# 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).
|
||||
|
||||
91
CONTRIBUTING.md
Normal file
@ -0,0 +1,91 @@
|
||||
# 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`.
|
||||
|
||||
41
Dockerfile
@ -1,19 +1,32 @@
|
||||
FROM alpine:latest
|
||||
RUN apk --update add ca-certificates \
|
||||
mailcap \
|
||||
curl \
|
||||
jq
|
||||
FROM alpine:3.22
|
||||
|
||||
COPY healthcheck.sh /healthcheck.sh
|
||||
RUN chmod +x /healthcheck.sh # Make the script executable
|
||||
RUN apk update && \
|
||||
apk --no-cache add ca-certificates mailcap curl jq tini
|
||||
|
||||
HEALTHCHECK --start-period=2s --interval=5s --timeout=3s \
|
||||
CMD /healthcheck.sh || exit 1
|
||||
# Make user and create necessary directories
|
||||
ENV UID=1000
|
||||
ENV GID=1000
|
||||
|
||||
RUN addgroup -g $GID user && \
|
||||
adduser -D -u $UID -G user user && \
|
||||
mkdir -p /config /database /srv && \
|
||||
chown -R user:user /config /database /srv
|
||||
|
||||
# Copy files and set permissions
|
||||
COPY filebrowser /bin/filebrowser
|
||||
COPY docker/common/ /
|
||||
COPY docker/alpine/ /
|
||||
|
||||
RUN chown -R user:user /bin/filebrowser /defaults healthcheck.sh init.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
|
||||
|
||||
COPY docker_config.json /.filebrowser.json
|
||||
COPY filebrowser /filebrowser
|
||||
|
||||
ENTRYPOINT [ "/filebrowser" ]
|
||||
ENTRYPOINT [ "tini", "--", "/init.sh", "filebrowser", "--config", "/config/settings.json" ]
|
||||
|
||||
@ -1,21 +1,23 @@
|
||||
FROM ghcr.io/linuxserver/baseimage-alpine:3.20
|
||||
FROM ghcr.io/linuxserver/baseimage-alpine:3.22
|
||||
|
||||
RUN apk --update add ca-certificates \
|
||||
mailcap \
|
||||
curl \
|
||||
jq
|
||||
RUN apk update && \
|
||||
apk --no-cache add ca-certificates mailcap curl jq
|
||||
|
||||
COPY healthcheck.sh /healthcheck.sh
|
||||
RUN chmod +x /healthcheck.sh # Make the script executable
|
||||
# Make user and create necessary directories
|
||||
RUN mkdir -p /config /database /srv && \
|
||||
chown -R abc:abc /config /database /srv
|
||||
|
||||
HEALTHCHECK --start-period=2s --interval=5s --timeout=3s \
|
||||
CMD /healthcheck.sh || exit 1
|
||||
# Copy files and set permissions
|
||||
COPY filebrowser /bin/filebrowser
|
||||
COPY docker/common/ /
|
||||
COPY docker/s6/ /
|
||||
|
||||
# copy local files
|
||||
COPY docker/root/ /
|
||||
RUN ln -s /config/settings.json /.filebrowser.json
|
||||
COPY filebrowser /usr/bin/filebrowser
|
||||
RUN chown -R abc:abc /bin/filebrowser /defaults healthcheck.sh
|
||||
|
||||
# ports and volumes
|
||||
# Define healthcheck script
|
||||
HEALTHCHECK --start-period=2s --interval=5s --timeout=3s CMD /healthcheck.sh
|
||||
|
||||
# Set the volumes and exposed ports
|
||||
VOLUME /srv /config /database
|
||||
|
||||
EXPOSE 80
|
||||
|
||||
@ -1,21 +0,0 @@
|
||||
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
|
||||
2
LICENSE
@ -187,7 +187,7 @@
|
||||
same "printed page" as the copyright notice for easier
|
||||
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");
|
||||
you may not use this file except in compliance with the License.
|
||||
|
||||
19
Makefile
@ -3,6 +3,14 @@ include tools.mk
|
||||
|
||||
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:
|
||||
|
||||
.PHONY: build
|
||||
@ -53,6 +61,17 @@ clean: clean-tools ## Clean
|
||||
bump-version: $(standard-version) ## Bump app version
|
||||
$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: ## Show this help
|
||||
@echo ''
|
||||
|
||||
33
README.md
@ -8,7 +8,7 @@
|
||||
[](http://godoc.org/github.com/filebrowser/filebrowser)
|
||||
[](https://git.linuxcrack.zip/midou/filebrowser-fork/releases/latest)
|
||||
|
||||
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.
|
||||
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.
|
||||
|
||||
# This is a soft fork and is not meant to be used without knowing what it does
|
||||
|
||||
@ -23,22 +23,23 @@ filebrowser provides a file managing interface within a specified directory and
|
||||
Below is the rest of the orignal repository links that may be relevant to the fork.
|
||||
---
|
||||
|
||||
## Features
|
||||
> [!WARNING]
|
||||
>
|
||||
> This project is currently on **maintenance-only** mode, and is looking for new maintainers. For more information, please read the [discussion #4906](https://github.com/filebrowser/filebrowser/discussions/4906). Therefore, please note the following:
|
||||
>
|
||||
> - It can take a while until someone gets back to you. Please be patient.
|
||||
> - [Issues][issues] are only being used to track bugs. Any unrelated issues will be converted into a [discussion][discussions].
|
||||
> - No new features will be implemented until further notice. The priority is on triaging issues and merge bug fixes.
|
||||
>
|
||||
> If you're interested in maintaining this project, please reach out via the discussion above.
|
||||
|
||||
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.
|
||||
[issues]: https://github.com/filebrowser/filebrowser/issues
|
||||
[discussions]: https://github.com/filebrowser/filebrowser/discussions
|
||||
|
||||
## Contributing
|
||||
|
||||
If you're interested in contributing to this project, our docs are best places to start [https://filebrowser.org/contributing](https://filebrowser.org/contributing).
|
||||
Contributions are always welcome. To start contributing to this project, read our [guidelines](CONTRIBUTING.md) first.
|
||||
|
||||
## License
|
||||
|
||||
[Apache License 2.0](LICENSE) © File Browser Contributors
|
||||
|
||||
@ -12,7 +12,9 @@ currently being supported with security updates.
|
||||
|
||||
## Reporting a Vulnerability
|
||||
|
||||
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.
|
||||
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.
|
||||
|
||||
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:
|
||||
|
||||
@ -21,6 +23,4 @@ When reporting an issue, where possible, please provide at least:
|
||||
* Steps to reproduce
|
||||
* Your recommended remediation(s), if any.
|
||||
|
||||
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.
|
||||
The File Browser team is a volunteer-only effort, and may reach back out for clarification.
|
||||
|
||||
@ -150,7 +150,7 @@ func (a *HookAuth) SaveUser() (*users.User, error) {
|
||||
}
|
||||
|
||||
if u == nil {
|
||||
pass, err := users.HashPwd(a.Cred.Password)
|
||||
pass, err := users.ValidateAndHashPwd(a.Cred.Password, a.Settings.MinimumPasswordLength)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@ -186,7 +186,7 @@ func (a *HookAuth) SaveUser() (*users.User, error) {
|
||||
|
||||
// update the password when it doesn't match the current
|
||||
if p {
|
||||
pass, err := users.HashPwd(a.Cred.Password)
|
||||
pass, err := users.ValidateAndHashPwd(a.Cred.Password, a.Settings.MinimumPasswordLength)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
@ -1,7 +1,6 @@
|
||||
package auth
|
||||
|
||||
import (
|
||||
"crypto/rand"
|
||||
"errors"
|
||||
"net/http"
|
||||
|
||||
@ -29,15 +28,14 @@ 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) {
|
||||
const passwordSize = 32
|
||||
randomPasswordBytes := make([]byte, passwordSize)
|
||||
_, err := rand.Read(randomPasswordBytes)
|
||||
const randomPasswordLength = settings.DefaultMinimumPasswordLength + 10
|
||||
pwd, err := users.RandomPwd(randomPasswordLength)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var hashedRandomPassword string
|
||||
hashedRandomPassword, err = users.HashPwd(string(randomPasswordBytes))
|
||||
hashedRandomPassword, err = users.ValidateAndHashPwd(pwd, setting.MinimumPasswordLength)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
@ -32,6 +32,7 @@ func addConfigFlags(flags *pflag.FlagSet) {
|
||||
addUserFlags(flags)
|
||||
flags.BoolP("signup", "s", false, "allow users to signup")
|
||||
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("auth.method", string(auth.MethodJSONAuth), "authentication type")
|
||||
@ -144,6 +145,7 @@ func printSettings(ser *settings.Server, set *settings.Settings, auther auth.Aut
|
||||
|
||||
fmt.Fprintf(w, "Sign up:\t%t\n", set.Signup)
|
||||
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, "Shell:\t%s\t\n", strings.Join(set.Shell, " "))
|
||||
fmt.Fprintln(w, "\nBranding:")
|
||||
|
||||
@ -56,7 +56,7 @@ The path must be for a json or yaml file.`,
|
||||
checkErr(err)
|
||||
|
||||
var rawAuther interface{}
|
||||
if filepath.Ext(args[0]) != ".json" { //nolint:goconst
|
||||
if filepath.Ext(args[0]) != ".json" {
|
||||
rawAuther = cleanUpInterfaceMap(file.Auther.(map[interface{}]interface{}))
|
||||
} else {
|
||||
rawAuther = file.Auther
|
||||
|
||||
@ -32,6 +32,7 @@ override the options.`,
|
||||
Key: generateKey(),
|
||||
Signup: mustGetBool(flags, "signup"),
|
||||
CreateUserDir: mustGetBool(flags, "create-user-dir"),
|
||||
MinimumPasswordLength: mustGetUint(flags, "minimum-password-length"),
|
||||
Shell: convertCmdStrToCmdArray(mustGetString(flags, "shell")),
|
||||
AuthMethod: authMethod,
|
||||
Defaults: defaults,
|
||||
|
||||
@ -51,6 +51,8 @@ you want to change. Other options will remain unchanged.`,
|
||||
set.Shell = convertCmdStrToCmdArray(mustGetString(flags, flag.Name))
|
||||
case "create-user-dir":
|
||||
set.CreateUserDir = mustGetBool(flags, flag.Name)
|
||||
case "minimum-password-length":
|
||||
set.MinimumPasswordLength = mustGetUint(flags, flag.Name)
|
||||
case "branding.name":
|
||||
set.Branding.Name = mustGetString(flags, flag.Name)
|
||||
case "branding.color":
|
||||
|
||||
149
cmd/root.go
@ -1,6 +1,7 @@
|
||||
package cmd
|
||||
|
||||
import (
|
||||
"context"
|
||||
"crypto/tls"
|
||||
"errors"
|
||||
"io"
|
||||
@ -13,6 +14,7 @@ import (
|
||||
"path/filepath"
|
||||
"strings"
|
||||
"syscall"
|
||||
"time"
|
||||
|
||||
homedir "github.com/mitchellh/go-homedir"
|
||||
"github.com/spf13/afero"
|
||||
@ -48,7 +50,7 @@ func init() {
|
||||
persistent.StringP("database", "d", "./filebrowser.db", "database path")
|
||||
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("password", "", "hashed password for the first user when using quick config (default \"admin\")")
|
||||
flags.String("password", "", "hashed password for the first user when using quick config")
|
||||
|
||||
addServerFlags(flags)
|
||||
}
|
||||
@ -61,14 +63,14 @@ func addServerFlags(flags *pflag.FlagSet) {
|
||||
flags.StringP("key", "k", "", "tls key")
|
||||
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.Uint32("socket-perm", 0666, "unix socket file permissions") //nolint:gomnd
|
||||
flags.Uint32("socket-perm", 0666, "unix socket file permissions")
|
||||
flags.StringP("baseurl", "b", "", "base url")
|
||||
flags.String("cache-dir", "", "file cache directory (disabled if empty)")
|
||||
flags.String("token-expiration-time", "2h", "user session timeout")
|
||||
flags.Int("img-processors", 4, "image processors count") //nolint:gomnd
|
||||
flags.Int("img-processors", 4, "image processors count") //nolint:mnd
|
||||
flags.Bool("disable-thumbnails", false, "disable image thumbnails")
|
||||
flags.Bool("disable-preview-resize", false, "disable resize of image previews")
|
||||
flags.Bool("disable-exec", false, "disables Command Runner feature")
|
||||
flags.Bool("disable-exec", true, "disables Command Runner feature")
|
||||
flags.Bool("disable-type-detection-by-header", false, "disables type detection by reading file headers")
|
||||
}
|
||||
|
||||
@ -129,7 +131,7 @@ user created with the credentials from options "username" and "password".`,
|
||||
cacheDir, err := cmd.Flags().GetString("cache-dir")
|
||||
checkErr(err)
|
||||
if cacheDir != "" {
|
||||
if err := os.MkdirAll(cacheDir, 0700); err != nil { //nolint:govet,gomnd
|
||||
if err := os.MkdirAll(cacheDir, 0700); err != nil { //nolint:govet
|
||||
log.Fatalf("can't make directory %s: %s", cacheDir, err)
|
||||
}
|
||||
fileCache = diskcache.New(afero.NewOsFs(), cacheDir)
|
||||
@ -167,10 +169,6 @@ user created with the credentials from options "username" and "password".`,
|
||||
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")
|
||||
if err != nil {
|
||||
panic(err)
|
||||
@ -182,18 +180,31 @@ user created with the credentials from options "username" and "password".`,
|
||||
defer listener.Close()
|
||||
|
||||
log.Println("Listening on", listener.Addr().String())
|
||||
//nolint: gosec
|
||||
if err := http.Serve(listener, handler); err != nil {
|
||||
log.Fatal(err)
|
||||
srv := &http.Server{
|
||||
Handler: handler,
|
||||
ReadHeaderTimeout: 60 * time.Second,
|
||||
}
|
||||
}, 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)
|
||||
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}),
|
||||
}
|
||||
|
||||
//nolint:gocyclo
|
||||
@ -201,42 +212,42 @@ func getRunParams(flags *pflag.FlagSet, st *storage.Storage) *settings.Server {
|
||||
server, err := st.Settings.GetServer()
|
||||
checkErr(err)
|
||||
|
||||
if val, set := getParamB(flags, "root"); set {
|
||||
if val, set := getStringParamB(flags, "root"); set {
|
||||
server.Root = val
|
||||
}
|
||||
|
||||
if val, set := getParamB(flags, "baseurl"); set {
|
||||
if val, set := getStringParamB(flags, "baseurl"); set {
|
||||
server.BaseURL = val
|
||||
}
|
||||
|
||||
if val, set := getParamB(flags, "log"); set {
|
||||
if val, set := getStringParamB(flags, "log"); set {
|
||||
server.Log = val
|
||||
}
|
||||
|
||||
isSocketSet := false
|
||||
isAddrSet := false
|
||||
|
||||
if val, set := getParamB(flags, "address"); set {
|
||||
if val, set := getStringParamB(flags, "address"); set {
|
||||
server.Address = val
|
||||
isAddrSet = isAddrSet || set
|
||||
}
|
||||
|
||||
if val, set := getParamB(flags, "port"); set {
|
||||
if val, set := getStringParamB(flags, "port"); set {
|
||||
server.Port = val
|
||||
isAddrSet = isAddrSet || set
|
||||
}
|
||||
|
||||
if val, set := getParamB(flags, "key"); set {
|
||||
if val, set := getStringParamB(flags, "key"); set {
|
||||
server.TLSKey = val
|
||||
isAddrSet = isAddrSet || set
|
||||
}
|
||||
|
||||
if val, set := getParamB(flags, "cert"); set {
|
||||
if val, set := getStringParamB(flags, "cert"); set {
|
||||
server.TLSCert = val
|
||||
isAddrSet = isAddrSet || set
|
||||
}
|
||||
|
||||
if val, set := getParamB(flags, "socket"); set {
|
||||
if val, set := getStringParamB(flags, "socket"); set {
|
||||
server.Socket = val
|
||||
isSocketSet = isSocketSet || set
|
||||
}
|
||||
@ -250,33 +261,69 @@ func getRunParams(flags *pflag.FlagSet, st *storage.Storage) *settings.Server {
|
||||
server.Socket = ""
|
||||
}
|
||||
|
||||
_, disableThumbnails := getParamB(flags, "disable-thumbnails")
|
||||
disableThumbnails := getBoolParam(flags, "disable-thumbnails")
|
||||
server.EnableThumbnails = !disableThumbnails
|
||||
|
||||
_, disablePreviewResize := getParamB(flags, "disable-preview-resize")
|
||||
disablePreviewResize := getBoolParam(flags, "disable-preview-resize")
|
||||
server.ResizePreview = !disablePreviewResize
|
||||
|
||||
_, disableTypeDetectionByHeader := getParamB(flags, "disable-type-detection-by-header")
|
||||
disableTypeDetectionByHeader := getBoolParam(flags, "disable-type-detection-by-header")
|
||||
server.TypeDetectionByHeader = !disableTypeDetectionByHeader
|
||||
|
||||
_, disableExec := getParamB(flags, "disable-exec")
|
||||
disableExec := getBoolParam(flags, "disable-exec")
|
||||
server.EnableExec = !disableExec
|
||||
|
||||
if val, set := getParamB(flags, "token-expiration-time"); set {
|
||||
if server.EnableExec {
|
||||
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
|
||||
}
|
||||
|
||||
return server
|
||||
}
|
||||
|
||||
// getParamB returns a parameter as a string and a boolean to tell if it is different from the default
|
||||
// getBoolParamB 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 getParamB(flags *pflag.FlagSet, key string) (string, bool) {
|
||||
func getBoolParamB(flags *pflag.FlagSet, key string) (value, ok 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)
|
||||
|
||||
// If set on Flags, use it.
|
||||
@ -293,8 +340,8 @@ func getParamB(flags *pflag.FlagSet, key string) (string, bool) {
|
||||
return value, false
|
||||
}
|
||||
|
||||
func getParam(flags *pflag.FlagSet, key string) string {
|
||||
val, _ := getParamB(flags, key)
|
||||
func getStringParam(flags *pflag.FlagSet, key string) string {
|
||||
val, _ := getStringParamB(flags, key)
|
||||
return val
|
||||
}
|
||||
|
||||
@ -321,6 +368,7 @@ func quickSetup(flags *pflag.FlagSet, d pythonData) {
|
||||
Key: generateKey(),
|
||||
Signup: false,
|
||||
CreateUserDir: false,
|
||||
MinimumPasswordLength: settings.DefaultMinimumPasswordLength,
|
||||
UserHomeBasePath: settings.DefaultUsersHomeBasePath,
|
||||
Defaults: settings.UserDefaults{
|
||||
Scope: ".",
|
||||
@ -349,7 +397,7 @@ func quickSetup(flags *pflag.FlagSet, d pythonData) {
|
||||
}
|
||||
|
||||
var err error
|
||||
if _, noauth := getParamB(flags, "noauth"); noauth {
|
||||
if _, noauth := getStringParamB(flags, "noauth"); noauth {
|
||||
set.AuthMethod = auth.MethodNoAuth
|
||||
err = d.store.Auth.Save(&auth.NoAuth{})
|
||||
} else {
|
||||
@ -362,23 +410,29 @@ func quickSetup(flags *pflag.FlagSet, d pythonData) {
|
||||
checkErr(err)
|
||||
|
||||
ser := &settings.Server{
|
||||
BaseURL: getParam(flags, "baseurl"),
|
||||
Port: getParam(flags, "port"),
|
||||
Log: getParam(flags, "log"),
|
||||
TLSKey: getParam(flags, "key"),
|
||||
TLSCert: getParam(flags, "cert"),
|
||||
Address: getParam(flags, "address"),
|
||||
Root: getParam(flags, "root"),
|
||||
BaseURL: getStringParam(flags, "baseurl"),
|
||||
Port: getStringParam(flags, "port"),
|
||||
Log: getStringParam(flags, "log"),
|
||||
TLSKey: getStringParam(flags, "key"),
|
||||
TLSCert: getStringParam(flags, "cert"),
|
||||
Address: getStringParam(flags, "address"),
|
||||
Root: getStringParam(flags, "root"),
|
||||
}
|
||||
|
||||
err = d.store.Settings.SaveServer(ser)
|
||||
checkErr(err)
|
||||
|
||||
username := getParam(flags, "username")
|
||||
password := getParam(flags, "password")
|
||||
username := getStringParam(flags, "username")
|
||||
password := getStringParam(flags, "password")
|
||||
|
||||
if password == "" {
|
||||
password, err = users.HashPwd("admin")
|
||||
var pwd string
|
||||
pwd, err = users.RandomPwd(set.MinimumPasswordLength)
|
||||
checkErr(err)
|
||||
|
||||
log.Println("Randomly generated password for user 'admin':", pwd)
|
||||
|
||||
password, err = users.ValidateAndHashPwd(pwd, set.MinimumPasswordLength)
|
||||
checkErr(err)
|
||||
}
|
||||
|
||||
@ -414,6 +468,7 @@ func initConfig() {
|
||||
v.SetEnvPrefix("FB")
|
||||
v.AutomaticEnv()
|
||||
v.SetEnvKeyReplacer(strings.NewReplacer(".", "_"))
|
||||
v.SetEnvKeyReplacer(strings.NewReplacer("-", "_"))
|
||||
|
||||
if err := v.ReadInConfig(); err != nil {
|
||||
var configParseError v.ConfigParseError
|
||||
|
||||
@ -25,7 +25,7 @@ this version.`,
|
||||
flags := cmd.Flags()
|
||||
oldDB := mustGetString(flags, "old.database")
|
||||
oldConf := mustGetString(flags, "old.config")
|
||||
err := importer.Import(oldDB, oldConf, getParam(flags, "database"))
|
||||
err := importer.Import(oldDB, oldConf, getStringParam(flags, "database"))
|
||||
checkErr(err)
|
||||
},
|
||||
}
|
||||
|
||||
@ -21,7 +21,7 @@ var usersAddCmd = &cobra.Command{
|
||||
checkErr(err)
|
||||
getUserDefaults(cmd.Flags(), &s.Defaults, false)
|
||||
|
||||
password, err := users.HashPwd(args[1])
|
||||
password, err := users.ValidateAndHashPwd(args[1], s.MinimumPasswordLength)
|
||||
checkErr(err)
|
||||
|
||||
user := &users.User{
|
||||
|
||||
@ -27,8 +27,10 @@ options you want to change.`,
|
||||
password := mustGetString(flags, "password")
|
||||
newUsername := mustGetString(flags, "username")
|
||||
|
||||
s, err := d.store.Settings.Get()
|
||||
checkErr(err)
|
||||
|
||||
var (
|
||||
err error
|
||||
user *users.User
|
||||
)
|
||||
|
||||
@ -64,7 +66,7 @@ options you want to change.`,
|
||||
}
|
||||
|
||||
if password != "" {
|
||||
user.Password, err = users.HashPwd(password)
|
||||
user.Password, err = users.ValidateAndHashPwd(password, s.MinimumPasswordLength)
|
||||
checkErr(err)
|
||||
}
|
||||
|
||||
|
||||
@ -14,6 +14,7 @@ import (
|
||||
"github.com/spf13/pflag"
|
||||
yaml "gopkg.in/yaml.v2"
|
||||
|
||||
"github.com/filebrowser/filebrowser/v2/files"
|
||||
"github.com/filebrowser/filebrowser/v2/settings"
|
||||
"github.com/filebrowser/filebrowser/v2/storage"
|
||||
"github.com/filebrowser/filebrowser/v2/storage/bolt"
|
||||
@ -72,7 +73,7 @@ func dbExists(path string) (bool, error) {
|
||||
d := filepath.Dir(path)
|
||||
_, err = os.Stat(d)
|
||||
if os.IsNotExist(err) {
|
||||
if err := os.MkdirAll(d, 0700); err != nil { //nolint:govet,gomnd
|
||||
if err := os.MkdirAll(d, 0700); err != nil { //nolint:govet
|
||||
return false, err
|
||||
}
|
||||
return false, nil
|
||||
@ -86,7 +87,7 @@ func python(fn pythonFunc, cfg pythonConfig) cobraFunc {
|
||||
return func(cmd *cobra.Command, args []string) {
|
||||
data := pythonData{hadDB: true}
|
||||
|
||||
path := getParam(cmd.Flags(), "database")
|
||||
path := getStringParam(cmd.Flags(), "database")
|
||||
absPath, err := filepath.Abs(path)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
@ -105,7 +106,7 @@ func python(fn pythonFunc, cfg pythonConfig) cobraFunc {
|
||||
|
||||
log.Println("Using database: " + absPath)
|
||||
data.hadDB = exists
|
||||
db, err := storm.Open(path)
|
||||
db, err := storm.Open(path, storm.BoltOptions(files.PermFile, nil))
|
||||
checkErr(err)
|
||||
defer db.Close()
|
||||
data.store, err = bolt.NewStorage(db)
|
||||
@ -124,7 +125,7 @@ func marshal(filename string, data interface{}) error {
|
||||
encoder := json.NewEncoder(fd)
|
||||
encoder.SetIndent("", " ")
|
||||
return encoder.Encode(data)
|
||||
case ".yml", ".yaml": //nolint:goconst
|
||||
case ".yml", ".yaml":
|
||||
encoder := yaml.NewEncoder(fd)
|
||||
return encoder.Encode(data)
|
||||
default:
|
||||
|
||||
@ -37,11 +37,11 @@ func (f *FileCache) Store(_ context.Context, key string, value []byte) error {
|
||||
defer mu.Unlock()
|
||||
|
||||
fileName := f.getFileName(key)
|
||||
if err := f.fs.MkdirAll(filepath.Dir(fileName), 0700); err != nil { //nolint:gomnd
|
||||
if err := f.fs.MkdirAll(filepath.Dir(fileName), 0700); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if err := afero.WriteFile(f.fs, fileName, value, 0700); err != nil { //nolint:gomnd
|
||||
if err := afero.WriteFile(f.fs, fileName, value, 0700); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
|
||||
10
docker/alpine/init.sh
Executable file
@ -0,0 +1,10 @@
|
||||
#!/bin/sh
|
||||
|
||||
set -e
|
||||
|
||||
# Ensure configuration exists
|
||||
if [ ! -f "/config/settings.json" ]; then
|
||||
cp -a /defaults/settings.json /config/settings.json
|
||||
fi
|
||||
|
||||
exec "$@"
|
||||
9
docker/common/healthcheck.sh
Executable file
@ -0,0 +1,9 @@
|
||||
#!/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}
|
||||
|
||||
curl -f http://$ADDRESS:$PORT/health || exit 1
|
||||
@ -1,3 +0,0 @@
|
||||
#!/usr/bin/with-contenv bash
|
||||
|
||||
exec s6-setuidgid abc filebrowser -c /config/settings.json -d /database/filebrowser.db;
|
||||
@ -1,9 +1,6 @@
|
||||
#!/usr/bin/with-contenv bash
|
||||
|
||||
# make folders
|
||||
mkdir -p /database
|
||||
|
||||
# copy config
|
||||
# Ensure configuration exists
|
||||
if [ ! -f "/config/settings.json" ]; then
|
||||
cp -a /defaults/settings.json /config/settings.json
|
||||
fi
|
||||
3
docker/s6/etc/services.d/filebrowser/run
Executable file
@ -0,0 +1,3 @@
|
||||
#!/usr/bin/with-contenv bash
|
||||
|
||||
exec s6-setuidgid abc filebrowser -c /config/settings.json;
|
||||
@ -1,12 +1,16 @@
|
||||
package errors
|
||||
|
||||
import "errors"
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
)
|
||||
|
||||
var (
|
||||
ErrEmptyKey = errors.New("empty key")
|
||||
ErrExist = errors.New("the resource already exists")
|
||||
ErrNotExist = errors.New("the resource does not exist")
|
||||
ErrEmptyPassword = errors.New("password is empty")
|
||||
ErrEasyPassword = errors.New("password is too easy")
|
||||
ErrEmptyUsername = errors.New("username is empty")
|
||||
ErrEmptyRequest = errors.New("empty request")
|
||||
ErrScopeIsRelative = errors.New("scope is a relative path")
|
||||
@ -19,3 +23,11 @@ var (
|
||||
ErrSourceIsParent = errors.New("source is parent")
|
||||
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)
|
||||
}
|
||||
|
||||
@ -27,8 +27,8 @@ import (
|
||||
"github.com/filebrowser/filebrowser/v2/rules"
|
||||
)
|
||||
|
||||
const PermFile = 0644
|
||||
const PermDir = 0755
|
||||
const PermFile = 0640
|
||||
const PermDir = 0750
|
||||
|
||||
var (
|
||||
reSubDirs = regexp.MustCompile("(?i)^sub(s|titles)$")
|
||||
@ -86,6 +86,11 @@ func NewFileInfo(opts *FileOptions) (*FileInfo, error) {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// Do not expose the name of root directory.
|
||||
if file.Path == "/" {
|
||||
file.Name = ""
|
||||
}
|
||||
|
||||
if opts.Expand {
|
||||
if file.IsDir {
|
||||
if err := file.readListing(opts.Checker, opts.ReadHeader); err != nil { //nolint:govet
|
||||
@ -217,7 +222,6 @@ func (i *FileInfo) RealPath() string {
|
||||
return i.Path
|
||||
}
|
||||
|
||||
//nolint:goconst
|
||||
func (i *FileInfo) detectType(modify, saveContent, readHeader bool) error {
|
||||
if IsNamedPipe(i.Mode) {
|
||||
i.Type = "blob"
|
||||
@ -314,7 +318,7 @@ func (i *FileInfo) readFirstBytes() []byte {
|
||||
}
|
||||
defer reader.Close()
|
||||
|
||||
buffer := make([]byte, 512) //nolint:gomnd
|
||||
buffer := make([]byte, 512)
|
||||
n, err := reader.Read(buffer)
|
||||
if err != nil && !errors.Is(err, io.EOF) {
|
||||
log.Print(err)
|
||||
|
||||
@ -16,8 +16,6 @@ type Listing struct {
|
||||
}
|
||||
|
||||
// ApplySort applies the sort order using .Order and .Sort
|
||||
//
|
||||
//nolint:goconst
|
||||
func (l Listing) ApplySort() {
|
||||
// Check '.Order' to know how to sort
|
||||
if !l.Sorting.Asc {
|
||||
|
||||
@ -10,18 +10,10 @@
|
||||
|
||||
<title>File Browser</title>
|
||||
|
||||
<link
|
||||
rel="icon"
|
||||
type="image/png"
|
||||
sizes="32x32"
|
||||
href="/img/icons/favicon-32x32.png"
|
||||
/>
|
||||
<link
|
||||
rel="icon"
|
||||
type="image/png"
|
||||
sizes="16x16"
|
||||
href="/img/icons/favicon-16x16.png"
|
||||
/>
|
||||
<link rel="icon" type="image/svg+xml" href="/img/icons/favicon.svg" />
|
||||
<link rel="shortcut icon" href="/img/icons/favicon.ico" />
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="/img/icons/apple-touch-icon.png" />
|
||||
<meta name="apple-mobile-web-app-title" content="File Browser" />
|
||||
|
||||
<!-- Add to home screen for Android and modern mobile browsers -->
|
||||
<link
|
||||
@ -31,19 +23,6 @@
|
||||
/>
|
||||
<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 -->
|
||||
<script>
|
||||
// We can assign JSON directly
|
||||
|
||||
@ -24,6 +24,7 @@
|
||||
"ace-builds": "^1.37.5",
|
||||
"core-js": "^3.40.0",
|
||||
"dayjs": "^1.11.10",
|
||||
"dompurify": "^3.2.6",
|
||||
"epubjs": "^0.3.93",
|
||||
"filesize": "^10.1.1",
|
||||
"js-base64": "^3.7.7",
|
||||
@ -69,7 +70,7 @@
|
||||
"postcss": "^8.5.1",
|
||||
"prettier": "^3.4.2",
|
||||
"terser": "^5.37.0",
|
||||
"vite": "^6.0.11",
|
||||
"vite": "^6.1.6",
|
||||
"vite-plugin-compression2": "^1.0.0",
|
||||
"vue-tsc": "^2.2.0"
|
||||
},
|
||||
|
||||
299
frontend/pnpm-lock.yaml
generated
@ -26,6 +26,9 @@ importers:
|
||||
dayjs:
|
||||
specifier: ^1.11.10
|
||||
version: 1.11.13
|
||||
dompurify:
|
||||
specifier: ^3.2.6
|
||||
version: 3.2.6
|
||||
epubjs:
|
||||
specifier: ^0.3.93
|
||||
version: 0.3.93
|
||||
@ -98,7 +101,7 @@ importers:
|
||||
devDependencies:
|
||||
'@intlify/unplugin-vue-i18n':
|
||||
specifier: ^6.0.3
|
||||
version: 6.0.3(@vue/compiler-dom@3.5.13)(eslint@9.19.0)(rollup@4.32.0)(typescript@5.6.3)(vue-i18n@11.1.2(vue@3.5.13(typescript@5.6.3)))(vue@3.5.13(typescript@5.6.3))
|
||||
version: 6.0.3(@vue/compiler-dom@3.5.13)(eslint@9.19.0)(rollup@4.40.1)(typescript@5.6.3)(vue-i18n@11.1.2(vue@3.5.13(typescript@5.6.3)))(vue@3.5.13(typescript@5.6.3))
|
||||
'@playwright/test':
|
||||
specifier: ^1.50.0
|
||||
version: 1.50.0
|
||||
@ -116,10 +119,10 @@ importers:
|
||||
version: 8.21.0(@typescript-eslint/parser@8.21.0(eslint@9.19.0)(typescript@5.6.3))(eslint@9.19.0)(typescript@5.6.3)
|
||||
'@vitejs/plugin-legacy':
|
||||
specifier: ^6.0.0
|
||||
version: 6.0.0(terser@5.37.0)(vite@6.0.11(@types/node@22.10.10)(terser@5.37.0)(yaml@2.7.0))
|
||||
version: 6.0.0(terser@5.37.0)(vite@6.1.6(@types/node@22.10.10)(terser@5.37.0)(yaml@2.7.0))
|
||||
'@vitejs/plugin-vue':
|
||||
specifier: ^5.0.4
|
||||
version: 5.2.1(vite@6.0.11(@types/node@22.10.10)(terser@5.37.0)(yaml@2.7.0))(vue@3.5.13(typescript@5.6.3))
|
||||
version: 5.2.1(vite@6.1.6(@types/node@22.10.10)(terser@5.37.0)(yaml@2.7.0))(vue@3.5.13(typescript@5.6.3))
|
||||
'@vue/eslint-config-prettier':
|
||||
specifier: ^10.2.0
|
||||
version: 10.2.0(eslint@9.19.0)(prettier@3.4.2)
|
||||
@ -157,11 +160,11 @@ importers:
|
||||
specifier: ^5.37.0
|
||||
version: 5.37.0
|
||||
vite:
|
||||
specifier: ^6.0.11
|
||||
version: 6.0.11(@types/node@22.10.10)(terser@5.37.0)(yaml@2.7.0)
|
||||
specifier: ^6.1.6
|
||||
version: 6.1.6(@types/node@22.10.10)(terser@5.37.0)(yaml@2.7.0)
|
||||
vite-plugin-compression2:
|
||||
specifier: ^1.0.0
|
||||
version: 1.3.3(rollup@4.32.0)(vite@6.0.11(@types/node@22.10.10)(terser@5.37.0)(yaml@2.7.0))
|
||||
version: 1.3.3(rollup@4.40.1)(vite@6.1.6(@types/node@22.10.10)(terser@5.37.0)(yaml@2.7.0))
|
||||
vue-tsc:
|
||||
specifier: ^2.2.0
|
||||
version: 2.2.0(typescript@5.6.3)
|
||||
@ -934,22 +937,26 @@ packages:
|
||||
resolution: {integrity: sha512-nmG512G8QOABsserleechwHGZxzKSAlggGf9hQX0nltvSwyKNVuB/4o6iFeG2OnjXK253r8p8eSDOZf8PgFdWw==}
|
||||
engines: {node: '>= 16'}
|
||||
|
||||
'@intlify/message-compiler@11.0.0-rc.1':
|
||||
resolution: {integrity: sha512-TGw2uBfuTFTegZf/BHtUQBEKxl7Q/dVGLoqRIdw8lFsp9g/53sYn5iD+0HxIzdYjbWL6BTJMXCPUHp9PxDTRPw==}
|
||||
engines: {node: '>= 16'}
|
||||
|
||||
'@intlify/message-compiler@11.1.2':
|
||||
resolution: {integrity: sha512-T/xbNDzi+Yv0Qn2Dfz2CWCAJiwNgU5d95EhhAEf4YmOgjCKktpfpiUSmLcBvK1CtLpPQ85AMMQk/2NCcXnNj1g==}
|
||||
engines: {node: '>= 16'}
|
||||
|
||||
'@intlify/shared@11.0.0-rc.1':
|
||||
resolution: {integrity: sha512-8tR1xe7ZEbkabTuE/tNhzpolygUn9OaYp9yuYAF4MgDNZg06C3Qny80bes2/e9/Wm3aVkPUlCw6WgU7mQd0yEg==}
|
||||
'@intlify/message-compiler@12.0.0-alpha.2':
|
||||
resolution: {integrity: sha512-PD9C+oQbb7BF52hec0+vLnScaFkvnfX+R7zSbODYuRo/E2niAtGmHd0wPvEMsDhf9Z9b8f/qyDsVeZnD/ya9Ug==}
|
||||
engines: {node: '>= 16'}
|
||||
|
||||
'@intlify/shared@11.1.2':
|
||||
resolution: {integrity: sha512-dF2iMMy8P9uKVHV/20LA1ulFLL+MKSbfMiixSmn6fpwqzvix38OIc7ebgnFbBqElvghZCW9ACtzKTGKsTGTWGA==}
|
||||
engines: {node: '>= 16'}
|
||||
|
||||
'@intlify/shared@11.1.7':
|
||||
resolution: {integrity: sha512-4yZeMt2Aa/7n5Ehy4KalUlvt3iRLcg1tq9IBVfOgkyWFArN4oygn6WxgGIFibP3svpaH8DarbNaottq+p0gUZQ==}
|
||||
engines: {node: '>= 16'}
|
||||
|
||||
'@intlify/shared@12.0.0-alpha.2':
|
||||
resolution: {integrity: sha512-P2DULVX9nz3y8zKNqLw9Es1aAgQ1JGC+kgpx5q7yLmrnAKkPR5MybQWoEhxanefNJgUY5ehsgo+GKif59SrncA==}
|
||||
engines: {node: '>= 16'}
|
||||
|
||||
'@intlify/unplugin-vue-i18n@6.0.3':
|
||||
resolution: {integrity: sha512-9ZDjBlhUHtgjRl23TVcgfJttgu8cNepwVhWvOv3mUMRDAhjW0pur1mWKEUKr1I8PNwE4Gvv2IQ1xcl4RL0nG0g==}
|
||||
engines: {node: '>= 18'}
|
||||
@ -1045,98 +1052,103 @@ packages:
|
||||
rollup:
|
||||
optional: true
|
||||
|
||||
'@rollup/rollup-android-arm-eabi@4.32.0':
|
||||
resolution: {integrity: sha512-G2fUQQANtBPsNwiVFg4zKiPQyjVKZCUdQUol53R8E71J7AsheRMV/Yv/nB8giOcOVqP7//eB5xPqieBYZe9bGg==}
|
||||
'@rollup/rollup-android-arm-eabi@4.40.1':
|
||||
resolution: {integrity: sha512-kxz0YeeCrRUHz3zyqvd7n+TVRlNyTifBsmnmNPtk3hQURUyG9eAB+usz6DAwagMusjx/zb3AjvDUvhFGDAexGw==}
|
||||
cpu: [arm]
|
||||
os: [android]
|
||||
|
||||
'@rollup/rollup-android-arm64@4.32.0':
|
||||
resolution: {integrity: sha512-qhFwQ+ljoymC+j5lXRv8DlaJYY/+8vyvYmVx074zrLsu5ZGWYsJNLjPPVJJjhZQpyAKUGPydOq9hRLLNvh1s3A==}
|
||||
'@rollup/rollup-android-arm64@4.40.1':
|
||||
resolution: {integrity: sha512-PPkxTOisoNC6TpnDKatjKkjRMsdaWIhyuMkA4UsBXT9WEZY4uHezBTjs6Vl4PbqQQeu6oION1w2voYZv9yquCw==}
|
||||
cpu: [arm64]
|
||||
os: [android]
|
||||
|
||||
'@rollup/rollup-darwin-arm64@4.32.0':
|
||||
resolution: {integrity: sha512-44n/X3lAlWsEY6vF8CzgCx+LQaoqWGN7TzUfbJDiTIOjJm4+L2Yq+r5a8ytQRGyPqgJDs3Rgyo8eVL7n9iW6AQ==}
|
||||
'@rollup/rollup-darwin-arm64@4.40.1':
|
||||
resolution: {integrity: sha512-VWXGISWFY18v/0JyNUy4A46KCFCb9NVsH+1100XP31lud+TzlezBbz24CYzbnA4x6w4hx+NYCXDfnvDVO6lcAA==}
|
||||
cpu: [arm64]
|
||||
os: [darwin]
|
||||
|
||||
'@rollup/rollup-darwin-x64@4.32.0':
|
||||
resolution: {integrity: sha512-F9ct0+ZX5Np6+ZDztxiGCIvlCaW87HBdHcozUfsHnj1WCUTBUubAoanhHUfnUHZABlElyRikI0mgcw/qdEm2VQ==}
|
||||
'@rollup/rollup-darwin-x64@4.40.1':
|
||||
resolution: {integrity: sha512-nIwkXafAI1/QCS7pxSpv/ZtFW6TXcNUEHAIA9EIyw5OzxJZQ1YDrX+CL6JAIQgZ33CInl1R6mHet9Y/UZTg2Bw==}
|
||||
cpu: [x64]
|
||||
os: [darwin]
|
||||
|
||||
'@rollup/rollup-freebsd-arm64@4.32.0':
|
||||
resolution: {integrity: sha512-JpsGxLBB2EFXBsTLHfkZDsXSpSmKD3VxXCgBQtlPcuAqB8TlqtLcbeMhxXQkCDv1avgwNjF8uEIbq5p+Cee0PA==}
|
||||
'@rollup/rollup-freebsd-arm64@4.40.1':
|
||||
resolution: {integrity: sha512-BdrLJ2mHTrIYdaS2I99mriyJfGGenSaP+UwGi1kB9BLOCu9SR8ZpbkmmalKIALnRw24kM7qCN0IOm6L0S44iWw==}
|
||||
cpu: [arm64]
|
||||
os: [freebsd]
|
||||
|
||||
'@rollup/rollup-freebsd-x64@4.32.0':
|
||||
resolution: {integrity: sha512-wegiyBT6rawdpvnD9lmbOpx5Sph+yVZKHbhnSP9MqUEDX08G4UzMU+D87jrazGE7lRSyTRs6NEYHtzfkJ3FjjQ==}
|
||||
'@rollup/rollup-freebsd-x64@4.40.1':
|
||||
resolution: {integrity: sha512-VXeo/puqvCG8JBPNZXZf5Dqq7BzElNJzHRRw3vjBE27WujdzuOPecDPc/+1DcdcTptNBep3861jNq0mYkT8Z6Q==}
|
||||
cpu: [x64]
|
||||
os: [freebsd]
|
||||
|
||||
'@rollup/rollup-linux-arm-gnueabihf@4.32.0':
|
||||
resolution: {integrity: sha512-3pA7xecItbgOs1A5H58dDvOUEboG5UfpTq3WzAdF54acBbUM+olDJAPkgj1GRJ4ZqE12DZ9/hNS2QZk166v92A==}
|
||||
'@rollup/rollup-linux-arm-gnueabihf@4.40.1':
|
||||
resolution: {integrity: sha512-ehSKrewwsESPt1TgSE/na9nIhWCosfGSFqv7vwEtjyAqZcvbGIg4JAcV7ZEh2tfj/IlfBeZjgOXm35iOOjadcg==}
|
||||
cpu: [arm]
|
||||
os: [linux]
|
||||
|
||||
'@rollup/rollup-linux-arm-musleabihf@4.32.0':
|
||||
resolution: {integrity: sha512-Y7XUZEVISGyge51QbYyYAEHwpGgmRrAxQXO3siyYo2kmaj72USSG8LtlQQgAtlGfxYiOwu+2BdbPjzEpcOpRmQ==}
|
||||
'@rollup/rollup-linux-arm-musleabihf@4.40.1':
|
||||
resolution: {integrity: sha512-m39iO/aaurh5FVIu/F4/Zsl8xppd76S4qoID8E+dSRQvTyZTOI2gVk3T4oqzfq1PtcvOfAVlwLMK3KRQMaR8lg==}
|
||||
cpu: [arm]
|
||||
os: [linux]
|
||||
|
||||
'@rollup/rollup-linux-arm64-gnu@4.32.0':
|
||||
resolution: {integrity: sha512-r7/OTF5MqeBrZo5omPXcTnjvv1GsrdH8a8RerARvDFiDwFpDVDnJyByYM/nX+mvks8XXsgPUxkwe/ltaX2VH7w==}
|
||||
'@rollup/rollup-linux-arm64-gnu@4.40.1':
|
||||
resolution: {integrity: sha512-Y+GHnGaku4aVLSgrT0uWe2o2Rq8te9hi+MwqGF9r9ORgXhmHK5Q71N757u0F8yU1OIwUIFy6YiJtKjtyktk5hg==}
|
||||
cpu: [arm64]
|
||||
os: [linux]
|
||||
|
||||
'@rollup/rollup-linux-arm64-musl@4.32.0':
|
||||
resolution: {integrity: sha512-HJbifC9vex9NqnlodV2BHVFNuzKL5OnsV2dvTw6e1dpZKkNjPG6WUq+nhEYV6Hv2Bv++BXkwcyoGlXnPrjAKXw==}
|
||||
'@rollup/rollup-linux-arm64-musl@4.40.1':
|
||||
resolution: {integrity: sha512-jEwjn3jCA+tQGswK3aEWcD09/7M5wGwc6+flhva7dsQNRZZTe30vkalgIzV4tjkopsTS9Jd7Y1Bsj6a4lzz8gQ==}
|
||||
cpu: [arm64]
|
||||
os: [linux]
|
||||
|
||||
'@rollup/rollup-linux-loongarch64-gnu@4.32.0':
|
||||
resolution: {integrity: sha512-VAEzZTD63YglFlWwRj3taofmkV1V3xhebDXffon7msNz4b14xKsz7utO6F8F4cqt8K/ktTl9rm88yryvDpsfOw==}
|
||||
'@rollup/rollup-linux-loongarch64-gnu@4.40.1':
|
||||
resolution: {integrity: sha512-ySyWikVhNzv+BV/IDCsrraOAZ3UaC8SZB67FZlqVwXwnFhPihOso9rPOxzZbjp81suB1O2Topw+6Ug3JNegejQ==}
|
||||
cpu: [loong64]
|
||||
os: [linux]
|
||||
|
||||
'@rollup/rollup-linux-powerpc64le-gnu@4.32.0':
|
||||
resolution: {integrity: sha512-Sts5DST1jXAc9YH/iik1C9QRsLcCoOScf3dfbY5i4kH9RJpKxiTBXqm7qU5O6zTXBTEZry69bGszr3SMgYmMcQ==}
|
||||
'@rollup/rollup-linux-powerpc64le-gnu@4.40.1':
|
||||
resolution: {integrity: sha512-BvvA64QxZlh7WZWqDPPdt0GH4bznuL6uOO1pmgPnnv86rpUpc8ZxgZwcEgXvo02GRIZX1hQ0j0pAnhwkhwPqWg==}
|
||||
cpu: [ppc64]
|
||||
os: [linux]
|
||||
|
||||
'@rollup/rollup-linux-riscv64-gnu@4.32.0':
|
||||
resolution: {integrity: sha512-qhlXeV9AqxIyY9/R1h1hBD6eMvQCO34ZmdYvry/K+/MBs6d1nRFLm6BOiITLVI+nFAAB9kUB6sdJRKyVHXnqZw==}
|
||||
'@rollup/rollup-linux-riscv64-gnu@4.40.1':
|
||||
resolution: {integrity: sha512-EQSP+8+1VuSulm9RKSMKitTav89fKbHymTf25n5+Yr6gAPZxYWpj3DzAsQqoaHAk9YX2lwEyAf9S4W8F4l3VBQ==}
|
||||
cpu: [riscv64]
|
||||
os: [linux]
|
||||
|
||||
'@rollup/rollup-linux-s390x-gnu@4.32.0':
|
||||
resolution: {integrity: sha512-8ZGN7ExnV0qjXa155Rsfi6H8M4iBBwNLBM9lcVS+4NcSzOFaNqmt7djlox8pN1lWrRPMRRQ8NeDlozIGx3Omsw==}
|
||||
'@rollup/rollup-linux-riscv64-musl@4.40.1':
|
||||
resolution: {integrity: sha512-n/vQ4xRZXKuIpqukkMXZt9RWdl+2zgGNx7Uda8NtmLJ06NL8jiHxUawbwC+hdSq1rrw/9CghCpEONor+l1e2gA==}
|
||||
cpu: [riscv64]
|
||||
os: [linux]
|
||||
|
||||
'@rollup/rollup-linux-s390x-gnu@4.40.1':
|
||||
resolution: {integrity: sha512-h8d28xzYb98fMQKUz0w2fMc1XuGzLLjdyxVIbhbil4ELfk5/orZlSTpF/xdI9C8K0I8lCkq+1En2RJsawZekkg==}
|
||||
cpu: [s390x]
|
||||
os: [linux]
|
||||
|
||||
'@rollup/rollup-linux-x64-gnu@4.32.0':
|
||||
resolution: {integrity: sha512-VDzNHtLLI5s7xd/VubyS10mq6TxvZBp+4NRWoW+Hi3tgV05RtVm4qK99+dClwTN1McA6PHwob6DEJ6PlXbY83A==}
|
||||
'@rollup/rollup-linux-x64-gnu@4.40.1':
|
||||
resolution: {integrity: sha512-XiK5z70PEFEFqcNj3/zRSz/qX4bp4QIraTy9QjwJAb/Z8GM7kVUsD0Uk8maIPeTyPCP03ChdI+VVmJriKYbRHQ==}
|
||||
cpu: [x64]
|
||||
os: [linux]
|
||||
|
||||
'@rollup/rollup-linux-x64-musl@4.32.0':
|
||||
resolution: {integrity: sha512-qcb9qYDlkxz9DxJo7SDhWxTWV1gFuwznjbTiov289pASxlfGbaOD54mgbs9+z94VwrXtKTu+2RqwlSTbiOqxGg==}
|
||||
'@rollup/rollup-linux-x64-musl@4.40.1':
|
||||
resolution: {integrity: sha512-2BRORitq5rQ4Da9blVovzNCMaUlyKrzMSvkVR0D4qPuOy/+pMCrh1d7o01RATwVy+6Fa1WBw+da7QPeLWU/1mQ==}
|
||||
cpu: [x64]
|
||||
os: [linux]
|
||||
|
||||
'@rollup/rollup-win32-arm64-msvc@4.32.0':
|
||||
resolution: {integrity: sha512-pFDdotFDMXW2AXVbfdUEfidPAk/OtwE/Hd4eYMTNVVaCQ6Yl8et0meDaKNL63L44Haxv4UExpv9ydSf3aSayDg==}
|
||||
'@rollup/rollup-win32-arm64-msvc@4.40.1':
|
||||
resolution: {integrity: sha512-b2bcNm9Kbde03H+q+Jjw9tSfhYkzrDUf2d5MAd1bOJuVplXvFhWz7tRtWvD8/ORZi7qSCy0idW6tf2HgxSXQSg==}
|
||||
cpu: [arm64]
|
||||
os: [win32]
|
||||
|
||||
'@rollup/rollup-win32-ia32-msvc@4.32.0':
|
||||
resolution: {integrity: sha512-/TG7WfrCAjeRNDvI4+0AAMoHxea/USWhAzf9PVDFHbcqrQ7hMMKp4jZIy4VEjk72AAfN5k4TiSMRXRKf/0akSw==}
|
||||
'@rollup/rollup-win32-ia32-msvc@4.40.1':
|
||||
resolution: {integrity: sha512-DfcogW8N7Zg7llVEfpqWMZcaErKfsj9VvmfSyRjCyo4BI3wPEfrzTtJkZG6gKP/Z92wFm6rz2aDO7/JfiR/whA==}
|
||||
cpu: [ia32]
|
||||
os: [win32]
|
||||
|
||||
'@rollup/rollup-win32-x64-msvc@4.32.0':
|
||||
resolution: {integrity: sha512-5hqO5S3PTEO2E5VjCePxv40gIgyS2KvO7E7/vvC/NbIW4SIRamkMr1hqj+5Y67fbBWv/bQLB6KelBQmXlyCjWA==}
|
||||
'@rollup/rollup-win32-x64-msvc@4.40.1':
|
||||
resolution: {integrity: sha512-ECyOuDeH3C1I8jH2MK1RtBJW+YPMvSfT0a5NN0nHfQYnDSJ6tUiZH3gzwVP5/Kfh/+Tt7tpWVF9LXNTnhTJ3kA==}
|
||||
cpu: [x64]
|
||||
os: [win32]
|
||||
|
||||
@ -1146,6 +1158,9 @@ packages:
|
||||
'@types/estree@1.0.6':
|
||||
resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==}
|
||||
|
||||
'@types/estree@1.0.7':
|
||||
resolution: {integrity: sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==}
|
||||
|
||||
'@types/json-schema@7.0.15':
|
||||
resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==}
|
||||
|
||||
@ -1162,6 +1177,9 @@ packages:
|
||||
'@types/node@22.10.10':
|
||||
resolution: {integrity: sha512-X47y/mPNzxviAGY5TcYPtYL8JsY3kAq2n8fMmKoRCxq/c4v4pyGNCzM2R6+M5/umG4ZfHuT+sgqDYqWc9rJ6ww==}
|
||||
|
||||
'@types/trusted-types@2.0.7':
|
||||
resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==}
|
||||
|
||||
'@types/web-bluetooth@0.0.20':
|
||||
resolution: {integrity: sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow==}
|
||||
|
||||
@ -1590,6 +1608,9 @@ packages:
|
||||
dom-walk@0.1.2:
|
||||
resolution: {integrity: sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==}
|
||||
|
||||
dompurify@3.2.6:
|
||||
resolution: {integrity: sha512-/2GogDQlohXPZe6D6NOgQvXLPSYBqIWMnZ8zzOhn09REE4eyAzb+Hed3jhoM9OkuaJ8P6ZGTTVWQKAi8ieIzfQ==}
|
||||
|
||||
electron-to-chromium@1.5.67:
|
||||
resolution: {integrity: sha512-nz88NNBsD7kQSAGGJyp8hS6xSPtWwqNogA0mjtc2nUYeEf3nURK9qpV18TuBdDmEDgVWotS8Wkzf+V52dSQ/LQ==}
|
||||
|
||||
@ -2086,6 +2107,11 @@ packages:
|
||||
engines: {node: '>=8', npm: '>=5'}
|
||||
hasBin: true
|
||||
|
||||
nanoid@3.3.11:
|
||||
resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==}
|
||||
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
|
||||
hasBin: true
|
||||
|
||||
nanoid@3.3.8:
|
||||
resolution: {integrity: sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==}
|
||||
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
|
||||
@ -2206,6 +2232,10 @@ packages:
|
||||
resolution: {integrity: sha512-6oz2beyjc5VMn/KV1pPw8fliQkhBXrVn1Z3TVyqZxU8kZpzEKhBdmCFqI6ZbmGtamQvQGuU1sgPTk8ZrXDD7jQ==}
|
||||
engines: {node: ^10 || ^12 || >=14}
|
||||
|
||||
postcss@8.5.3:
|
||||
resolution: {integrity: sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==}
|
||||
engines: {node: ^10 || ^12 || >=14}
|
||||
|
||||
prelude-ls@1.2.1:
|
||||
resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
|
||||
engines: {node: '>= 0.8.0'}
|
||||
@ -2298,8 +2328,8 @@ packages:
|
||||
resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
|
||||
engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
|
||||
|
||||
rollup@4.32.0:
|
||||
resolution: {integrity: sha512-JmrhfQR31Q4AuNBjjAX4s+a/Pu/Q8Q9iwjWBsjRH1q52SPFE2NqRMK6fUZKKnvKO6id+h7JIRf0oYsph53eATg==}
|
||||
rollup@4.40.1:
|
||||
resolution: {integrity: sha512-C5VvvgCCyfyotVITIAv+4efVytl5F7wt+/I2i9q9GZcEXW9BP52YYOXC58igUi+LFZVHukErIIqQSWwv/M3WRw==}
|
||||
engines: {node: '>=18.0.0', npm: '>=8.0.0'}
|
||||
hasBin: true
|
||||
|
||||
@ -2540,8 +2570,8 @@ packages:
|
||||
peerDependencies:
|
||||
vite: ^2.0.0||^3.0.0||^4.0.0||^5.0.0 ||^6.0.0
|
||||
|
||||
vite@6.0.11:
|
||||
resolution: {integrity: sha512-4VL9mQPKoHy4+FE0NnRE/kbY51TOfaknxAjt3fJbGJxhIpBZiqVzlZDEesWWsuREXHwNdAoOFZ9MkPEVXczHwg==}
|
||||
vite@6.1.6:
|
||||
resolution: {integrity: sha512-u+jokLMwHVFUoUkfL+m/1hzucejL2639g9QXcrRdtN3WPHfW7imI83V96Oh1R0xVZqDjvcgp+7S8bSQpdVlmPA==}
|
||||
engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0}
|
||||
hasBin: true
|
||||
peerDependencies:
|
||||
@ -3578,8 +3608,8 @@ snapshots:
|
||||
|
||||
'@intlify/bundle-utils@10.0.0(vue-i18n@11.1.2(vue@3.5.13(typescript@5.6.3)))':
|
||||
dependencies:
|
||||
'@intlify/message-compiler': 11.0.0-rc.1
|
||||
'@intlify/shared': 11.0.0-rc.1
|
||||
'@intlify/message-compiler': 12.0.0-alpha.2
|
||||
'@intlify/shared': 12.0.0-alpha.2
|
||||
acorn: 8.14.0
|
||||
escodegen: 2.1.0
|
||||
estree-walker: 2.0.2
|
||||
@ -3595,27 +3625,29 @@ snapshots:
|
||||
'@intlify/message-compiler': 11.1.2
|
||||
'@intlify/shared': 11.1.2
|
||||
|
||||
'@intlify/message-compiler@11.0.0-rc.1':
|
||||
dependencies:
|
||||
'@intlify/shared': 11.0.0-rc.1
|
||||
source-map-js: 1.2.1
|
||||
|
||||
'@intlify/message-compiler@11.1.2':
|
||||
dependencies:
|
||||
'@intlify/shared': 11.1.2
|
||||
source-map-js: 1.2.1
|
||||
|
||||
'@intlify/shared@11.0.0-rc.1': {}
|
||||
'@intlify/message-compiler@12.0.0-alpha.2':
|
||||
dependencies:
|
||||
'@intlify/shared': 12.0.0-alpha.2
|
||||
source-map-js: 1.2.1
|
||||
|
||||
'@intlify/shared@11.1.2': {}
|
||||
|
||||
'@intlify/unplugin-vue-i18n@6.0.3(@vue/compiler-dom@3.5.13)(eslint@9.19.0)(rollup@4.32.0)(typescript@5.6.3)(vue-i18n@11.1.2(vue@3.5.13(typescript@5.6.3)))(vue@3.5.13(typescript@5.6.3))':
|
||||
'@intlify/shared@11.1.7': {}
|
||||
|
||||
'@intlify/shared@12.0.0-alpha.2': {}
|
||||
|
||||
'@intlify/unplugin-vue-i18n@6.0.3(@vue/compiler-dom@3.5.13)(eslint@9.19.0)(rollup@4.40.1)(typescript@5.6.3)(vue-i18n@11.1.2(vue@3.5.13(typescript@5.6.3)))(vue@3.5.13(typescript@5.6.3))':
|
||||
dependencies:
|
||||
'@eslint-community/eslint-utils': 4.4.1(eslint@9.19.0)
|
||||
'@intlify/bundle-utils': 10.0.0(vue-i18n@11.1.2(vue@3.5.13(typescript@5.6.3)))
|
||||
'@intlify/shared': 11.1.2
|
||||
'@intlify/vue-i18n-extensions': 8.0.0(@intlify/shared@11.1.2)(@vue/compiler-dom@3.5.13)(vue-i18n@11.1.2(vue@3.5.13(typescript@5.6.3)))(vue@3.5.13(typescript@5.6.3))
|
||||
'@rollup/pluginutils': 5.1.4(rollup@4.32.0)
|
||||
'@intlify/shared': 11.1.7
|
||||
'@intlify/vue-i18n-extensions': 8.0.0(@intlify/shared@11.1.7)(@vue/compiler-dom@3.5.13)(vue-i18n@11.1.2(vue@3.5.13(typescript@5.6.3)))(vue@3.5.13(typescript@5.6.3))
|
||||
'@rollup/pluginutils': 5.1.4(rollup@4.40.1)
|
||||
'@typescript-eslint/scope-manager': 8.21.0
|
||||
'@typescript-eslint/typescript-estree': 8.21.0(typescript@5.6.3)
|
||||
debug: 4.4.0
|
||||
@ -3636,11 +3668,11 @@ snapshots:
|
||||
- supports-color
|
||||
- typescript
|
||||
|
||||
'@intlify/vue-i18n-extensions@8.0.0(@intlify/shared@11.1.2)(@vue/compiler-dom@3.5.13)(vue-i18n@11.1.2(vue@3.5.13(typescript@5.6.3)))(vue@3.5.13(typescript@5.6.3))':
|
||||
'@intlify/vue-i18n-extensions@8.0.0(@intlify/shared@11.1.7)(@vue/compiler-dom@3.5.13)(vue-i18n@11.1.2(vue@3.5.13(typescript@5.6.3)))(vue@3.5.13(typescript@5.6.3))':
|
||||
dependencies:
|
||||
'@babel/parser': 7.26.7
|
||||
optionalDependencies:
|
||||
'@intlify/shared': 11.1.2
|
||||
'@intlify/shared': 11.1.7
|
||||
'@vue/compiler-dom': 3.5.13
|
||||
vue: 3.5.13(typescript@5.6.3)
|
||||
vue-i18n: 11.1.2(vue@3.5.13(typescript@5.6.3))
|
||||
@ -3691,83 +3723,88 @@ snapshots:
|
||||
dependencies:
|
||||
playwright: 1.50.0
|
||||
|
||||
'@rollup/pluginutils@5.1.3(rollup@4.32.0)':
|
||||
'@rollup/pluginutils@5.1.3(rollup@4.40.1)':
|
||||
dependencies:
|
||||
'@types/estree': 1.0.6
|
||||
estree-walker: 2.0.2
|
||||
picomatch: 4.0.2
|
||||
optionalDependencies:
|
||||
rollup: 4.32.0
|
||||
rollup: 4.40.1
|
||||
|
||||
'@rollup/pluginutils@5.1.4(rollup@4.32.0)':
|
||||
'@rollup/pluginutils@5.1.4(rollup@4.40.1)':
|
||||
dependencies:
|
||||
'@types/estree': 1.0.6
|
||||
estree-walker: 2.0.2
|
||||
picomatch: 4.0.2
|
||||
optionalDependencies:
|
||||
rollup: 4.32.0
|
||||
rollup: 4.40.1
|
||||
|
||||
'@rollup/rollup-android-arm-eabi@4.32.0':
|
||||
'@rollup/rollup-android-arm-eabi@4.40.1':
|
||||
optional: true
|
||||
|
||||
'@rollup/rollup-android-arm64@4.32.0':
|
||||
'@rollup/rollup-android-arm64@4.40.1':
|
||||
optional: true
|
||||
|
||||
'@rollup/rollup-darwin-arm64@4.32.0':
|
||||
'@rollup/rollup-darwin-arm64@4.40.1':
|
||||
optional: true
|
||||
|
||||
'@rollup/rollup-darwin-x64@4.32.0':
|
||||
'@rollup/rollup-darwin-x64@4.40.1':
|
||||
optional: true
|
||||
|
||||
'@rollup/rollup-freebsd-arm64@4.32.0':
|
||||
'@rollup/rollup-freebsd-arm64@4.40.1':
|
||||
optional: true
|
||||
|
||||
'@rollup/rollup-freebsd-x64@4.32.0':
|
||||
'@rollup/rollup-freebsd-x64@4.40.1':
|
||||
optional: true
|
||||
|
||||
'@rollup/rollup-linux-arm-gnueabihf@4.32.0':
|
||||
'@rollup/rollup-linux-arm-gnueabihf@4.40.1':
|
||||
optional: true
|
||||
|
||||
'@rollup/rollup-linux-arm-musleabihf@4.32.0':
|
||||
'@rollup/rollup-linux-arm-musleabihf@4.40.1':
|
||||
optional: true
|
||||
|
||||
'@rollup/rollup-linux-arm64-gnu@4.32.0':
|
||||
'@rollup/rollup-linux-arm64-gnu@4.40.1':
|
||||
optional: true
|
||||
|
||||
'@rollup/rollup-linux-arm64-musl@4.32.0':
|
||||
'@rollup/rollup-linux-arm64-musl@4.40.1':
|
||||
optional: true
|
||||
|
||||
'@rollup/rollup-linux-loongarch64-gnu@4.32.0':
|
||||
'@rollup/rollup-linux-loongarch64-gnu@4.40.1':
|
||||
optional: true
|
||||
|
||||
'@rollup/rollup-linux-powerpc64le-gnu@4.32.0':
|
||||
'@rollup/rollup-linux-powerpc64le-gnu@4.40.1':
|
||||
optional: true
|
||||
|
||||
'@rollup/rollup-linux-riscv64-gnu@4.32.0':
|
||||
'@rollup/rollup-linux-riscv64-gnu@4.40.1':
|
||||
optional: true
|
||||
|
||||
'@rollup/rollup-linux-s390x-gnu@4.32.0':
|
||||
'@rollup/rollup-linux-riscv64-musl@4.40.1':
|
||||
optional: true
|
||||
|
||||
'@rollup/rollup-linux-x64-gnu@4.32.0':
|
||||
'@rollup/rollup-linux-s390x-gnu@4.40.1':
|
||||
optional: true
|
||||
|
||||
'@rollup/rollup-linux-x64-musl@4.32.0':
|
||||
'@rollup/rollup-linux-x64-gnu@4.40.1':
|
||||
optional: true
|
||||
|
||||
'@rollup/rollup-win32-arm64-msvc@4.32.0':
|
||||
'@rollup/rollup-linux-x64-musl@4.40.1':
|
||||
optional: true
|
||||
|
||||
'@rollup/rollup-win32-ia32-msvc@4.32.0':
|
||||
'@rollup/rollup-win32-arm64-msvc@4.40.1':
|
||||
optional: true
|
||||
|
||||
'@rollup/rollup-win32-x64-msvc@4.32.0':
|
||||
'@rollup/rollup-win32-ia32-msvc@4.40.1':
|
||||
optional: true
|
||||
|
||||
'@rollup/rollup-win32-x64-msvc@4.40.1':
|
||||
optional: true
|
||||
|
||||
'@tsconfig/node22@22.0.0': {}
|
||||
|
||||
'@types/estree@1.0.6': {}
|
||||
|
||||
'@types/estree@1.0.7': {}
|
||||
|
||||
'@types/json-schema@7.0.15': {}
|
||||
|
||||
'@types/localforage@0.0.34':
|
||||
@ -3784,6 +3821,9 @@ snapshots:
|
||||
dependencies:
|
||||
undici-types: 6.20.0
|
||||
|
||||
'@types/trusted-types@2.0.7':
|
||||
optional: true
|
||||
|
||||
'@types/web-bluetooth@0.0.20': {}
|
||||
|
||||
'@typescript-eslint/eslint-plugin@8.21.0(@typescript-eslint/parser@8.21.0(eslint@9.19.0)(typescript@5.6.3))(eslint@9.19.0)(typescript@5.6.3)':
|
||||
@ -3885,7 +3925,7 @@ snapshots:
|
||||
global: 4.4.0
|
||||
is-function: 1.0.2
|
||||
|
||||
'@vitejs/plugin-legacy@6.0.0(terser@5.37.0)(vite@6.0.11(@types/node@22.10.10)(terser@5.37.0)(yaml@2.7.0))':
|
||||
'@vitejs/plugin-legacy@6.0.0(terser@5.37.0)(vite@6.1.6(@types/node@22.10.10)(terser@5.37.0)(yaml@2.7.0))':
|
||||
dependencies:
|
||||
'@babel/core': 7.26.0
|
||||
'@babel/preset-env': 7.26.0(@babel/core@7.26.0)
|
||||
@ -3896,13 +3936,13 @@ snapshots:
|
||||
regenerator-runtime: 0.14.1
|
||||
systemjs: 6.15.1
|
||||
terser: 5.37.0
|
||||
vite: 6.0.11(@types/node@22.10.10)(terser@5.37.0)(yaml@2.7.0)
|
||||
vite: 6.1.6(@types/node@22.10.10)(terser@5.37.0)(yaml@2.7.0)
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
'@vitejs/plugin-vue@5.2.1(vite@6.0.11(@types/node@22.10.10)(terser@5.37.0)(yaml@2.7.0))(vue@3.5.13(typescript@5.6.3))':
|
||||
'@vitejs/plugin-vue@5.2.1(vite@6.1.6(@types/node@22.10.10)(terser@5.37.0)(yaml@2.7.0))(vue@3.5.13(typescript@5.6.3))':
|
||||
dependencies:
|
||||
vite: 6.0.11(@types/node@22.10.10)(terser@5.37.0)(yaml@2.7.0)
|
||||
vite: 6.1.6(@types/node@22.10.10)(terser@5.37.0)(yaml@2.7.0)
|
||||
vue: 3.5.13(typescript@5.6.3)
|
||||
|
||||
'@volar/language-core@2.4.11':
|
||||
@ -3939,7 +3979,7 @@ snapshots:
|
||||
'@vue/shared': 3.5.13
|
||||
estree-walker: 2.0.2
|
||||
magic-string: 0.30.14
|
||||
postcss: 8.5.1
|
||||
postcss: 8.5.3
|
||||
source-map-js: 1.2.1
|
||||
|
||||
'@vue/compiler-ssr@3.5.13':
|
||||
@ -4254,6 +4294,10 @@ snapshots:
|
||||
|
||||
dom-walk@0.1.2: {}
|
||||
|
||||
dompurify@3.2.6:
|
||||
optionalDependencies:
|
||||
'@types/trusted-types': 2.0.7
|
||||
|
||||
electron-to-chromium@1.5.67: {}
|
||||
|
||||
emoji-regex@8.0.0: {}
|
||||
@ -4805,6 +4849,8 @@ snapshots:
|
||||
'@babel/runtime': 7.26.7
|
||||
global: 4.4.0
|
||||
|
||||
nanoid@3.3.11: {}
|
||||
|
||||
nanoid@3.3.8: {}
|
||||
|
||||
natural-compare@1.4.0: {}
|
||||
@ -4911,6 +4957,12 @@ snapshots:
|
||||
picocolors: 1.1.1
|
||||
source-map-js: 1.2.1
|
||||
|
||||
postcss@8.5.3:
|
||||
dependencies:
|
||||
nanoid: 3.3.11
|
||||
picocolors: 1.1.1
|
||||
source-map-js: 1.2.1
|
||||
|
||||
prelude-ls@1.2.1: {}
|
||||
|
||||
prettier-linter-helpers@1.0.0:
|
||||
@ -4994,29 +5046,30 @@ snapshots:
|
||||
|
||||
reusify@1.0.4: {}
|
||||
|
||||
rollup@4.32.0:
|
||||
rollup@4.40.1:
|
||||
dependencies:
|
||||
'@types/estree': 1.0.6
|
||||
'@types/estree': 1.0.7
|
||||
optionalDependencies:
|
||||
'@rollup/rollup-android-arm-eabi': 4.32.0
|
||||
'@rollup/rollup-android-arm64': 4.32.0
|
||||
'@rollup/rollup-darwin-arm64': 4.32.0
|
||||
'@rollup/rollup-darwin-x64': 4.32.0
|
||||
'@rollup/rollup-freebsd-arm64': 4.32.0
|
||||
'@rollup/rollup-freebsd-x64': 4.32.0
|
||||
'@rollup/rollup-linux-arm-gnueabihf': 4.32.0
|
||||
'@rollup/rollup-linux-arm-musleabihf': 4.32.0
|
||||
'@rollup/rollup-linux-arm64-gnu': 4.32.0
|
||||
'@rollup/rollup-linux-arm64-musl': 4.32.0
|
||||
'@rollup/rollup-linux-loongarch64-gnu': 4.32.0
|
||||
'@rollup/rollup-linux-powerpc64le-gnu': 4.32.0
|
||||
'@rollup/rollup-linux-riscv64-gnu': 4.32.0
|
||||
'@rollup/rollup-linux-s390x-gnu': 4.32.0
|
||||
'@rollup/rollup-linux-x64-gnu': 4.32.0
|
||||
'@rollup/rollup-linux-x64-musl': 4.32.0
|
||||
'@rollup/rollup-win32-arm64-msvc': 4.32.0
|
||||
'@rollup/rollup-win32-ia32-msvc': 4.32.0
|
||||
'@rollup/rollup-win32-x64-msvc': 4.32.0
|
||||
'@rollup/rollup-android-arm-eabi': 4.40.1
|
||||
'@rollup/rollup-android-arm64': 4.40.1
|
||||
'@rollup/rollup-darwin-arm64': 4.40.1
|
||||
'@rollup/rollup-darwin-x64': 4.40.1
|
||||
'@rollup/rollup-freebsd-arm64': 4.40.1
|
||||
'@rollup/rollup-freebsd-x64': 4.40.1
|
||||
'@rollup/rollup-linux-arm-gnueabihf': 4.40.1
|
||||
'@rollup/rollup-linux-arm-musleabihf': 4.40.1
|
||||
'@rollup/rollup-linux-arm64-gnu': 4.40.1
|
||||
'@rollup/rollup-linux-arm64-musl': 4.40.1
|
||||
'@rollup/rollup-linux-loongarch64-gnu': 4.40.1
|
||||
'@rollup/rollup-linux-powerpc64le-gnu': 4.40.1
|
||||
'@rollup/rollup-linux-riscv64-gnu': 4.40.1
|
||||
'@rollup/rollup-linux-riscv64-musl': 4.40.1
|
||||
'@rollup/rollup-linux-s390x-gnu': 4.40.1
|
||||
'@rollup/rollup-linux-x64-gnu': 4.40.1
|
||||
'@rollup/rollup-linux-x64-musl': 4.40.1
|
||||
'@rollup/rollup-win32-arm64-msvc': 4.40.1
|
||||
'@rollup/rollup-win32-ia32-msvc': 4.40.1
|
||||
'@rollup/rollup-win32-x64-msvc': 4.40.1
|
||||
fsevents: 2.3.3
|
||||
|
||||
rrweb-cssom@0.8.0: {}
|
||||
@ -5238,19 +5291,19 @@ snapshots:
|
||||
dependencies:
|
||||
global: 4.4.0
|
||||
|
||||
vite-plugin-compression2@1.3.3(rollup@4.32.0)(vite@6.0.11(@types/node@22.10.10)(terser@5.37.0)(yaml@2.7.0)):
|
||||
vite-plugin-compression2@1.3.3(rollup@4.40.1)(vite@6.1.6(@types/node@22.10.10)(terser@5.37.0)(yaml@2.7.0)):
|
||||
dependencies:
|
||||
'@rollup/pluginutils': 5.1.3(rollup@4.32.0)
|
||||
'@rollup/pluginutils': 5.1.3(rollup@4.40.1)
|
||||
tar-mini: 0.2.0
|
||||
vite: 6.0.11(@types/node@22.10.10)(terser@5.37.0)(yaml@2.7.0)
|
||||
vite: 6.1.6(@types/node@22.10.10)(terser@5.37.0)(yaml@2.7.0)
|
||||
transitivePeerDependencies:
|
||||
- rollup
|
||||
|
||||
vite@6.0.11(@types/node@22.10.10)(terser@5.37.0)(yaml@2.7.0):
|
||||
vite@6.1.6(@types/node@22.10.10)(terser@5.37.0)(yaml@2.7.0):
|
||||
dependencies:
|
||||
esbuild: 0.24.2
|
||||
postcss: 8.5.1
|
||||
rollup: 4.32.0
|
||||
postcss: 8.5.3
|
||||
rollup: 4.40.1
|
||||
optionalDependencies:
|
||||
'@types/node': 22.10.10
|
||||
fsevents: 2.3.3
|
||||
|
||||
|
Before Width: | Height: | Size: 7.2 KiB After Width: | Height: | Size: 8.3 KiB |
@ -1,9 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<browserconfig>
|
||||
<msapplication>
|
||||
<tile>
|
||||
<square150x150logo src="/mstile-150x150.png"/>
|
||||
<TileColor>#455a64</TileColor>
|
||||
</tile>
|
||||
</msapplication>
|
||||
</browserconfig>
|
||||
|
Before Width: | Height: | Size: 843 B |
|
Before Width: | Height: | Size: 1.2 KiB |
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 15 KiB |
3
frontend/public/img/icons/favicon.svg
Normal file
|
After Width: | Height: | Size: 36 KiB |
|
Before Width: | Height: | Size: 7.0 KiB |
|
Before Width: | Height: | Size: 6.9 KiB |
|
Before Width: | Height: | Size: 7.5 KiB |
|
Before Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 4.9 KiB |
@ -1,42 +0,0 @@
|
||||
<?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>
|
||||
|
Before Width: | Height: | Size: 2.4 KiB |
@ -18,18 +18,10 @@
|
||||
|
||||
<meta name="robots" content="noindex,nofollow" />
|
||||
|
||||
<link
|
||||
rel="icon"
|
||||
type="image/png"
|
||||
sizes="32x32"
|
||||
href="[{[ .StaticURL ]}]/img/icons/favicon-32x32.png"
|
||||
/>
|
||||
<link
|
||||
rel="icon"
|
||||
type="image/png"
|
||||
sizes="16x16"
|
||||
href="[{[ .StaticURL ]}]/img/icons/favicon-16x16.png"
|
||||
/>
|
||||
<link rel="icon" type="image/svg+xml" href="[{[ .StaticURL ]}]/img/icons/favicon.svg" />
|
||||
<link rel="shortcut icon" href="[{[ .StaticURL ]}]/img/icons/favicon.ico" />
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="[{[ .StaticURL ]}]/img/icons/apple-touch-icon.png" />
|
||||
<meta name="apple-mobile-web-app-title" content="File Browser" />
|
||||
|
||||
<!-- Add to home screen for Android and modern mobile browsers -->
|
||||
<link
|
||||
@ -42,25 +34,6 @@
|
||||
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 -->
|
||||
<script>
|
||||
// We can assign JSON directly
|
||||
|
||||
@ -1,6 +1,5 @@
|
||||
import { removePrefix } from "./utils";
|
||||
import { baseURL } from "@/utils/constants";
|
||||
import { useAuthStore } from "@/stores/auth";
|
||||
import { removePrefix } from "./utils";
|
||||
|
||||
const ssl = window.location.protocol === "https:";
|
||||
const protocol = ssl ? "wss:" : "ws:";
|
||||
@ -11,10 +10,8 @@ export default function command(
|
||||
onmessage: WebSocket["onmessage"],
|
||||
onclose: WebSocket["onclose"]
|
||||
) {
|
||||
const authStore = useAuthStore();
|
||||
|
||||
url = removePrefix(url);
|
||||
url = `${protocol}//${window.location.host}${baseURL}/api/command${url}?auth=${authStore.jwt}`;
|
||||
url = `${protocol}//${window.location.host}${baseURL}/api/command${url}`;
|
||||
|
||||
const conn = new window.WebSocket(url);
|
||||
conn.onopen = () => conn.send(command);
|
||||
|
||||
@ -2,14 +2,22 @@ import { useAuthStore } from "@/stores/auth";
|
||||
import { useLayoutStore } from "@/stores/layout";
|
||||
import { baseURL } from "@/utils/constants";
|
||||
import { upload as postTus, useTus } from "./tus";
|
||||
import { createURL, fetchURL, removePrefix } from "./utils";
|
||||
import { createURL, fetchURL, removePrefix, StatusError } from "./utils";
|
||||
|
||||
export async function fetch(url: string) {
|
||||
export async function fetch(url: string, signal?: AbortSignal) {
|
||||
url = removePrefix(url);
|
||||
const res = await fetchURL(`/api/resources${url}`, { signal });
|
||||
|
||||
const res = await fetchURL(`/api/resources${url}`, {});
|
||||
|
||||
const data = (await res.json()) as Resource;
|
||||
let data: Resource;
|
||||
try {
|
||||
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}`;
|
||||
|
||||
if (data.isDir) {
|
||||
@ -75,11 +83,6 @@ export function download(format: any, ...files: string[]) {
|
||||
url += `algo=${format}&`;
|
||||
}
|
||||
|
||||
const authStore = useAuthStore();
|
||||
if (authStore.jwt) {
|
||||
url += `auth=${authStore.jwt}&`;
|
||||
}
|
||||
|
||||
window.open(url);
|
||||
}
|
||||
|
||||
@ -210,10 +213,18 @@ export function getSubtitlesURL(file: ResourceItem) {
|
||||
return file.subtitles?.map((d) => createURL("api/subtitle" + d, params));
|
||||
}
|
||||
|
||||
export async function usage(url: string) {
|
||||
export async function usage(url: string, signal: AbortSignal) {
|
||||
url = removePrefix(url);
|
||||
|
||||
const res = await fetchURL(`/api/usage${url}`, {});
|
||||
const res = await fetchURL(`/api/usage${url}`, { signal });
|
||||
|
||||
try {
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
@ -71,5 +71,5 @@ export function getDownloadURL(res: Resource, inline = false) {
|
||||
...(res.token && { token: res.token }),
|
||||
};
|
||||
|
||||
return createURL("api/public/dl/" + res.hash + res.path, params, false);
|
||||
return createURL("api/public/dl/" + res.hash + res.path, params);
|
||||
}
|
||||
|
||||
@ -41,5 +41,5 @@ export async function create(
|
||||
}
|
||||
|
||||
export function getShareURL(share: Share) {
|
||||
return createURL("share/" + share.hash, {}, false);
|
||||
return createURL("share/" + share.hash, {});
|
||||
}
|
||||
|
||||
@ -6,7 +6,8 @@ import { encodePath } from "@/utils/url";
|
||||
export class StatusError extends Error {
|
||||
constructor(
|
||||
message: any,
|
||||
public status?: number
|
||||
public status?: number,
|
||||
public is_canceled?: boolean
|
||||
) {
|
||||
super(message);
|
||||
this.name = "StatusError";
|
||||
@ -33,7 +34,11 @@ export async function fetchURL(
|
||||
},
|
||||
...rest,
|
||||
});
|
||||
} catch {
|
||||
} 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 new StatusError("000 No connection", 0);
|
||||
}
|
||||
|
||||
@ -76,23 +81,13 @@ export function removePrefix(url: string): string {
|
||||
return url;
|
||||
}
|
||||
|
||||
export function createURL(endpoint: string, params = {}, auth = true): string {
|
||||
const authStore = useAuthStore();
|
||||
|
||||
export function createURL(endpoint: string, searchParams = {}): string {
|
||||
let prefix = baseURL;
|
||||
if (!prefix.endsWith("/")) {
|
||||
prefix = prefix + "/";
|
||||
}
|
||||
const url = new URL(prefix + encodePath(endpoint), origin);
|
||||
|
||||
const searchParams: SearchParams = {
|
||||
...(auth && { auth: authStore.jwt }),
|
||||
...params,
|
||||
};
|
||||
|
||||
for (const key in searchParams) {
|
||||
url.searchParams.set(key, searchParams[key]);
|
||||
}
|
||||
url.search = new URLSearchParams(searchParams).toString();
|
||||
|
||||
return url.toString();
|
||||
}
|
||||
|
||||
@ -140,6 +140,7 @@ import {
|
||||
import { files as api } from "@/api";
|
||||
import ProgressBar from "@/components/ProgressBar.vue";
|
||||
import prettyBytes from "pretty-bytes";
|
||||
import { StatusError } from "@/api/utils.js";
|
||||
|
||||
const USAGE_DEFAULT = { used: "0 B", total: "0 B", usedPercentage: 0 };
|
||||
|
||||
@ -147,7 +148,7 @@ export default {
|
||||
name: "sidebar",
|
||||
setup() {
|
||||
const usage = reactive(USAGE_DEFAULT);
|
||||
return { usage };
|
||||
return { usage, usageAbortController: new AbortController() };
|
||||
},
|
||||
components: {
|
||||
ProgressBar,
|
||||
@ -168,6 +169,9 @@ export default {
|
||||
},
|
||||
methods: {
|
||||
...mapActions(useLayoutStore, ["closeHovers", "showHover"]),
|
||||
abortOngoingFetchUsage() {
|
||||
this.usageAbortController.abort();
|
||||
},
|
||||
async fetchUsage() {
|
||||
const path = this.$route.path.endsWith("/")
|
||||
? this.$route.path
|
||||
@ -177,13 +181,18 @@ export default {
|
||||
return Object.assign(this.usage, usageStats);
|
||||
}
|
||||
try {
|
||||
const usage = await api.usage(path);
|
||||
this.abortOngoingFetchUsage();
|
||||
this.usageAbortController = new AbortController();
|
||||
const usage = await api.usage(path, this.usageAbortController.signal);
|
||||
usageStats = {
|
||||
used: prettyBytes(usage.used, { binary: true }),
|
||||
total: prettyBytes(usage.total, { binary: true }),
|
||||
usedPercentage: Math.round((usage.used / usage.total) * 100),
|
||||
};
|
||||
} catch (error) {
|
||||
if (error instanceof StatusError && error.is_canceled) {
|
||||
return;
|
||||
}
|
||||
this.$showError(error);
|
||||
}
|
||||
return Object.assign(this.usage, usageStats);
|
||||
@ -211,5 +220,8 @@ export default {
|
||||
immediate: true,
|
||||
},
|
||||
},
|
||||
unmounted() {
|
||||
this.abortOngoingFetchUsage();
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
@ -8,6 +8,13 @@
|
||||
@dragover="dragOver"
|
||||
@drop="drop"
|
||||
@click="itemClick"
|
||||
@mousedown="handleMouseDown"
|
||||
@mouseup="handleMouseUp"
|
||||
@mouseleave="handleMouseLeave"
|
||||
@touchstart="handleTouchStart"
|
||||
@touchend="handleTouchEnd"
|
||||
@touchcancel="handleTouchCancel"
|
||||
@touchmove="handleTouchMove"
|
||||
:data-dir="isDir"
|
||||
:data-type="type"
|
||||
:aria-label="name"
|
||||
@ -50,6 +57,12 @@ import { useRouter } from "vue-router";
|
||||
|
||||
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 router = useRouter();
|
||||
|
||||
@ -209,6 +222,12 @@ const drop = async (event: Event) => {
|
||||
};
|
||||
|
||||
const itemClick = (event: Event | KeyboardEvent) => {
|
||||
// If long press was triggered, prevent normal click behavior
|
||||
if (longPressTriggered.value) {
|
||||
longPressTriggered.value = false;
|
||||
return;
|
||||
}
|
||||
|
||||
if (
|
||||
singleClick.value &&
|
||||
!(event as KeyboardEvent).ctrlKey &&
|
||||
@ -281,4 +300,76 @@ const getExtension = (fileName: string): string => {
|
||||
}
|
||||
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>
|
||||
|
||||
@ -62,7 +62,8 @@ const initVideoPlayer = async () => {
|
||||
const languagePack = await (
|
||||
languageImports[lang] || languageImports.en
|
||||
)?.();
|
||||
videojs.addLanguage("videoPlayerLocal", languagePack.default);
|
||||
const code = languageImports[lang] ? lang : "en";
|
||||
videojs.addLanguage(code, languagePack.default);
|
||||
sourceType.value = "";
|
||||
|
||||
//
|
||||
@ -70,7 +71,7 @@ const initVideoPlayer = async () => {
|
||||
|
||||
const srcOpt = { sources: { src: props.source, type: sourceType.value } };
|
||||
//Supporting localized language display.
|
||||
const langOpt = { language: "videoPlayerLocal" };
|
||||
const langOpt = { language: code };
|
||||
// support for playback at different speeds.
|
||||
const playbackRatesOpt = { playbackRates: [0.5, 1, 1.5, 2, 2.5, 3] };
|
||||
const options = getOptions(
|
||||
|
||||
@ -31,9 +31,16 @@ import { useFileStore } from "@/stores/file";
|
||||
|
||||
import url from "@/utils/url";
|
||||
import { files } from "@/api";
|
||||
import { StatusError } from "@/api/utils.js";
|
||||
|
||||
export default {
|
||||
name: "file-list",
|
||||
props: {
|
||||
exclude: {
|
||||
type: Array,
|
||||
default: () => [],
|
||||
},
|
||||
},
|
||||
data: function () {
|
||||
return {
|
||||
items: [],
|
||||
@ -43,6 +50,7 @@ export default {
|
||||
},
|
||||
selected: null,
|
||||
current: window.location.pathname,
|
||||
nextAbortController: new AbortController(),
|
||||
};
|
||||
},
|
||||
inject: ["$showError"],
|
||||
@ -56,7 +64,13 @@ export default {
|
||||
mounted() {
|
||||
this.fillOptions(this.req);
|
||||
},
|
||||
unmounted() {
|
||||
this.abortOngoingNext();
|
||||
},
|
||||
methods: {
|
||||
abortOngoingNext() {
|
||||
this.nextAbortController.abort();
|
||||
},
|
||||
fillOptions(req) {
|
||||
// Sets the current path and resets
|
||||
// the current items.
|
||||
@ -82,6 +96,7 @@ export default {
|
||||
// move options.
|
||||
for (const item of req.items) {
|
||||
if (!item.isDir) continue;
|
||||
if (this.exclude?.includes(item.url)) continue;
|
||||
|
||||
this.items.push({
|
||||
name: item.name,
|
||||
@ -94,8 +109,17 @@ export default {
|
||||
// just clicked in and fill the options with its
|
||||
// content.
|
||||
const uri = event.currentTarget.dataset.url;
|
||||
|
||||
files.fetch(uri).then(this.fillOptions).catch(this.$showError);
|
||||
this.abortOngoingNext();
|
||||
this.nextAbortController = new AbortController();
|
||||
files
|
||||
.fetch(uri, this.nextAbortController.signal)
|
||||
.then(this.fillOptions)
|
||||
.catch((e) => {
|
||||
if (e instanceof StatusError && e.is_canceled) {
|
||||
return;
|
||||
}
|
||||
this.$showError(e);
|
||||
});
|
||||
},
|
||||
touchstart(event) {
|
||||
const url = event.currentTarget.dataset.url;
|
||||
|
||||
@ -11,7 +11,7 @@
|
||||
<li><strong>DEL</strong> - {{ $t("help.del") }}</li>
|
||||
<li><strong>ESC</strong> - {{ $t("help.esc") }}</li>
|
||||
<li><strong>CTRL + S</strong> - {{ $t("help.ctrl.s") }}</li>
|
||||
<li><strong>CTRL + F</strong> - {{ $t("help.ctrl.f") }}</li>
|
||||
<li><strong>CTRL + SHIFT + F</strong> - {{ $t("help.ctrl.f") }}</li>
|
||||
<li><strong>CTRL + Click</strong> - {{ $t("help.ctrl.click") }}</li>
|
||||
<li><strong>Click</strong> - {{ $t("help.click") }}</li>
|
||||
<li><strong>Double click</strong> - {{ $t("help.doubleClick") }}</li>
|
||||
|
||||
@ -8,6 +8,7 @@
|
||||
<file-list
|
||||
ref="fileList"
|
||||
@update:selected="(val) => (dest = val)"
|
||||
:exclude="excludedFolders"
|
||||
tabindex="1"
|
||||
/>
|
||||
</div>
|
||||
@ -76,6 +77,11 @@ export default {
|
||||
computed: {
|
||||
...mapState(useFileStore, ["req", "selected"]),
|
||||
...mapState(useAuthStore, ["user"]),
|
||||
excludedFolders() {
|
||||
return this.selected
|
||||
.filter((idx) => this.req.items[idx].isDir)
|
||||
.map((idx) => this.req.items[idx].url);
|
||||
},
|
||||
},
|
||||
methods: {
|
||||
...mapActions(useLayoutStore, ["showHover", "closeHovers"]),
|
||||
|
||||
@ -32,16 +32,6 @@
|
||||
<i class="material-icons">content_paste</i>
|
||||
</button>
|
||||
</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">
|
||||
<button
|
||||
class="action"
|
||||
@ -142,7 +132,7 @@
|
||||
<script>
|
||||
import { mapActions, mapState } from "pinia";
|
||||
import { useFileStore } from "@/stores/file";
|
||||
import { share as api, pub as pub_api } from "@/api";
|
||||
import { share as api } from "@/api";
|
||||
import dayjs from "dayjs";
|
||||
import { useLayoutStore } from "@/stores/layout";
|
||||
import { copy } from "@/utils/clipboard";
|
||||
@ -257,14 +247,6 @@ export default {
|
||||
buildLink(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() {
|
||||
this.links = this.links.sort((a, b) => {
|
||||
if (a.expire === 0) return -1;
|
||||
|
||||
@ -19,6 +19,7 @@ export default {
|
||||
hu: "Magyar",
|
||||
ar: "العربية",
|
||||
ca: "Català",
|
||||
cs: "Čeština",
|
||||
de: "Deutsch",
|
||||
el: "Ελληνικά",
|
||||
en: "English",
|
||||
@ -38,6 +39,7 @@ export default {
|
||||
"sv-se": "Swedish (Sweden)",
|
||||
tr: "Türkçe",
|
||||
uk: "Українська",
|
||||
vi: "Tiếng Việt",
|
||||
"zh-cn": "中文 (简体)",
|
||||
"zh-tw": "中文 (繁體)",
|
||||
};
|
||||
|
||||
@ -24,6 +24,7 @@
|
||||
"ok": "موافق",
|
||||
"permalink": "الحصول على رابط دائم",
|
||||
"previous": "السابق",
|
||||
"preview": "Preview",
|
||||
"publish": "نشر",
|
||||
"rename": "إعادة تسمية",
|
||||
"replace": "استبدال",
|
||||
@ -169,6 +170,7 @@
|
||||
"commandRunnerHelp": "هنا بإمكانك تعيين اﻷوامر التي سيتم تنفيذها في اﻷحداث المسماة. يجب كتابة أمر واحد في كل سطر. ستكون المتغيرات البيئية (env) {0} و {1} متاحة، حيث {0} نسبي لـ {1}. لمزيد من المعلومات حول هذه الميزة و المتغيرات البيئية المتاحة، يرجى قراءة {2}.",
|
||||
"commandsUpdated": "تم تحديث اﻷوامر",
|
||||
"createUserDir": "إنشاء مجلد المستخدم (home) تلقائياً عند إنشاء مستخدم جديد",
|
||||
"minimumPasswordLength": "Minimum password length",
|
||||
"tusUploads": "التحميلات المتقطعة",
|
||||
"tusUploadsHelp": "يدعم متصفح الملفات تحميل الملفات المتقطعة، مما يسمح بتحميلات الملفات بشكل فعال و موثوق و قابلة للمتابغة و متقطعة حتى على الشبكات غير الموثوقة.",
|
||||
"tusUploadsChunkSize": "يشير إلى الحد اﻷقصى لحجم الطلب (سيتم استخدام التحميل المباشر للتحميلات صغيرة الخحم). يمكنك إدخال عدد صحيح عادي يدل على الحجم بوحدة البايت أو نمظ مثل10MB, 1GB, إلخ.",
|
||||
|
||||
@ -24,6 +24,7 @@
|
||||
"ok": "D'acord",
|
||||
"permalink": "Enllaç permanent",
|
||||
"previous": "Anterior",
|
||||
"preview": "Preview",
|
||||
"publish": "Publicar",
|
||||
"rename": "Reanomenar",
|
||||
"replace": "Substituir",
|
||||
@ -169,6 +170,7 @@
|
||||
"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!",
|
||||
"createUserDir": "Crea automàticament una carpeta d'inici quan s'afegeix un usuari",
|
||||
"minimumPasswordLength": "Minimum password length",
|
||||
"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.",
|
||||
"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.",
|
||||
|
||||
@ -24,6 +24,7 @@
|
||||
"ok": "OK",
|
||||
"permalink": "Získat trvalý odkaz",
|
||||
"previous": "Předchozí",
|
||||
"preview": "Preview",
|
||||
"publish": "Publikovat",
|
||||
"rename": "Přejmenovat",
|
||||
"replace": "Nahradit",
|
||||
@ -169,6 +170,7 @@
|
||||
"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!",
|
||||
"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",
|
||||
"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.",
|
||||
@ -3,14 +3,17 @@
|
||||
"cancel": "Abbrechen",
|
||||
"clear": "Schließen",
|
||||
"close": "Schließen",
|
||||
"continue": "Fortfahren",
|
||||
"copy": "Kopieren",
|
||||
"copyFile": "Kopiere Datei",
|
||||
"copyToClipboard": "In Zwischenablage kopieren",
|
||||
"copyDownloadLinkToClipboard": "Download-Link in die Zwischenablage kopieren",
|
||||
"create": "Neu",
|
||||
"delete": "Löschen",
|
||||
"download": "Herunterladen",
|
||||
"file": "Datei",
|
||||
"folder": "Ordner",
|
||||
"fullScreen": "Vollbildmodus umschalten",
|
||||
"hideDotfiles": "Versteckte Dateien ausblenden",
|
||||
"info": "Info",
|
||||
"more": "mehr",
|
||||
@ -21,6 +24,7 @@
|
||||
"ok": "OK",
|
||||
"permalink": "permanenten Verweis anzeigen",
|
||||
"previous": "vorherige",
|
||||
"preview": "Vorschau",
|
||||
"publish": "Veröffentlichen",
|
||||
"rename": "umbenennen",
|
||||
"replace": "Ersetzen",
|
||||
@ -37,13 +41,17 @@
|
||||
"toggleSidebar": "Seitenleiste anzeigen",
|
||||
"update": "Update",
|
||||
"upload": "Upload",
|
||||
"openFile": "Datei öffnen"
|
||||
"openFile": "Datei öffnen",
|
||||
"discardChanges": "Verwerfen"
|
||||
},
|
||||
"download": {
|
||||
"downloadFile": "Download Datei",
|
||||
"downloadFolder": "Download Ordner",
|
||||
"downloadSelected": "Auswahl herunterladen"
|
||||
},
|
||||
"upload": {
|
||||
"abortUpload": "Sind Sie sicher, dass Sie den Vorgang abbrechen möchten?"
|
||||
},
|
||||
"errors": {
|
||||
"forbidden": "Sie haben keine Berechtigung dies abzurufen.",
|
||||
"internal": "Etwas ist schiefgelaufen.",
|
||||
@ -102,6 +110,7 @@
|
||||
"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?",
|
||||
"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",
|
||||
"displayName": "Anzeigename:",
|
||||
"download": "Lade Dateien",
|
||||
@ -130,7 +139,9 @@
|
||||
"upload": "Upload",
|
||||
"uploadFiles": "Upload von {files} Dateien...",
|
||||
"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": {
|
||||
"images": "Bilder",
|
||||
@ -159,10 +170,14 @@
|
||||
"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!",
|
||||
"createUserDir": "Automatisches Erstellen des Home-Verzeichnisses beim Anlegen neuer Benutzer",
|
||||
"minimumPasswordLength": "Minimum password length",
|
||||
"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.",
|
||||
"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.",
|
||||
"userHomeBasePath": "Basispfad für Benutzer-Home-Verzeichnisse",
|
||||
"userScopeGenerationPlaceholder": "Scope wird automatisch generiert",
|
||||
"createUserHomeDirectory": "Benutzer-Home-Verzeichnis erstellen",
|
||||
"customStylesheet": "Individuelles Stylesheet",
|
||||
"defaultUserDescription": "Das sind die Standardeinstellung für Benutzer",
|
||||
"disableExternalLinks": "Externe Links deaktivieren (außer Dokumentation)",
|
||||
@ -209,6 +224,7 @@
|
||||
"shareDeleted": "Freigabe gelöscht!",
|
||||
"singleClick": "Einfacher Klick zum Öffnen von Dateien und Ordnern",
|
||||
"themes": {
|
||||
"default": "Systemstandard",
|
||||
"dark": "Dunkel",
|
||||
"light": "Hell",
|
||||
"title": "Erscheinungsbild"
|
||||
|
||||
@ -3,6 +3,7 @@
|
||||
"cancel": "Ακύρωση",
|
||||
"clear": "Καθαρισμός",
|
||||
"close": "Κλείσιμο",
|
||||
"continue": "Continue",
|
||||
"copy": "Αντιγραφή",
|
||||
"copyFile": "Αντιγραφή αρχείου",
|
||||
"copyToClipboard": "Αντιγραφή στο πρόχειρο",
|
||||
@ -12,6 +13,7 @@
|
||||
"download": "Λήψη",
|
||||
"file": "Αρχείο",
|
||||
"folder": "Φάκελος",
|
||||
"fullScreen": "Toggle full screen",
|
||||
"hideDotfiles": "Απόκρυψη κρυφών αρχείων",
|
||||
"info": "Πληροφορίες",
|
||||
"more": "Περισσότερα",
|
||||
@ -22,6 +24,7 @@
|
||||
"ok": "Εντάξει",
|
||||
"permalink": "Λήψη μόνιμου συνδέσμου",
|
||||
"previous": "Προηγούμενο",
|
||||
"preview": "Preview",
|
||||
"publish": "Δημοσίευση",
|
||||
"rename": "Μετονομασία",
|
||||
"replace": "Αντικατάσταση",
|
||||
@ -32,12 +35,14 @@
|
||||
"select": "Επιλογή",
|
||||
"selectMultiple": "Επιλογή πολλαπλών",
|
||||
"share": "Κοινοποίηση",
|
||||
"shell": "Toggle shell",
|
||||
"submit": "Υποβολή",
|
||||
"switchView": "Εναλλαγή προβολής",
|
||||
"toggleSidebar": "(Απ-)ενεργοποίησης της πλευρικής μπάρας",
|
||||
"update": "Ενημέρωση",
|
||||
"upload": "Μεταφόρτωση",
|
||||
"openFile": "Άνοιγμα αρχείου"
|
||||
"openFile": "Άνοιγμα αρχείου",
|
||||
"discardChanges": "Discard"
|
||||
},
|
||||
"download": {
|
||||
"downloadFile": "Λήψη αρχείου",
|
||||
@ -101,9 +106,11 @@
|
||||
"prompts": {
|
||||
"copy": "Αντιγραφή",
|
||||
"copyMessage": "Επιλέξτε τοποθεσία για αντιγραφή των αρχείων σας:",
|
||||
"currentlyNavigating": "Currently navigating on:",
|
||||
"deleteMessageMultiple": "Είστε σίγουροι ότι θέλετε να διαγράψετε {count} αρχεία;",
|
||||
"deleteMessageSingle": "Είστε σίγουροι ότι θέλετε να διαγράψετε αυτό το αρχείο/φάκελο;",
|
||||
"deleteMessageShare": "Είστε σίγουροι ότι θέλετε να διαγράψετε αυτή την κοινοποίηση ({path});",
|
||||
"deleteUser": "Are you sure you want to delete this user?",
|
||||
"deleteTitle": "Διαγραφή αρχείων",
|
||||
"displayName": "Εμφάνιση ονόματος:",
|
||||
"download": "Λήψη αρχείων",
|
||||
@ -132,7 +139,9 @@
|
||||
"upload": "Μεταφόρτωση",
|
||||
"uploadFiles": "Μεταφόρτωση {files} αρχείων…",
|
||||
"uploadMessage": "Επιλέξτε μια επιλογή για τη μεταφόρτωση.",
|
||||
"optionalPassword": "Προαιρετικός κωδικός πρόσβασης"
|
||||
"optionalPassword": "Προαιρετικός κωδικός πρόσβασης",
|
||||
"resolution": "Resolution",
|
||||
"discardEditorChanges": "Are you sure you wish to discard the changes you've made?"
|
||||
},
|
||||
"search": {
|
||||
"images": "Εικόνες",
|
||||
@ -161,6 +170,7 @@
|
||||
"commandRunnerHelp": "Εδώ μπορείτε να ορίσετε εντολές που εκτελούνται στα ονομασμένα γεγονότα και δραστηριότητες. Πρέπει να γράψετε μία εντολή ανά γραμμή. Οι μεταβλητές περιβάλλοντος {0} και {1} θα είναι διαθέσιμες, και θα είναι {0} σχετικές με το {1}. Για περισσότερες πληροφορίες σχετικά με αυτή τη λειτουργία και τις διαθέσιμες μεταβλητές περιβάλλοντος, παρακαλώ διαβάστε το {2}.",
|
||||
"commandsUpdated": "Οι εντολές ενημερώθηκαν!",
|
||||
"createUserDir": "Αυτόματη δημιουργία φακέλου χρήστη κατά την προσθήκη νέου χρήστη",
|
||||
"minimumPasswordLength": "Minimum password length",
|
||||
"tusUploads": "Τμηματικές μεταφορές αρχείων",
|
||||
"tusUploadsHelp": "Η εφαρμογή File Browser υποστηρίζει τμηματικές μεταφορτώσεις αρχείων, επιτρέποντας την αποδοτική, αξιόπιστη και συνεχιζόμενη μεταφόρτωση αρχείων ακόμα και σε ασταθείς συνδέσεις δικτύου.",
|
||||
"tusUploadsChunkSize": "Υποδεικνύει το μέγιστο μέγεθος ενός αιτήματος μεταφόρτωσης (για μικρότερες μεταφορές αρχείων θα χρησιμοποιηθούν απευθείας και όχι τμηματικές μεταφορτώσεις). Μπορείτε να εισάγετε έναν ακέραιο αριθμό που υποδηλώνει το μέγεθος σε bytes, ή κείμενο με αριθμό και μονάδα μέτρησης μεγέθους δεδομένων, όπως 10MB, 1GB κλπ.",
|
||||
@ -214,6 +224,7 @@
|
||||
"shareDeleted": "Η κοινοποίηση διαγράφηκε!",
|
||||
"singleClick": "Χρήση μονού κλικ για να ανοίξετε αρχεία και φακέλους",
|
||||
"themes": {
|
||||
"default": "System default",
|
||||
"dark": "Σκοτεινό",
|
||||
"light": "Φωτεινό",
|
||||
"title": "Μοτίβο"
|
||||
|
||||
@ -170,6 +170,7 @@
|
||||
"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!",
|
||||
"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.",
|
||||
|
||||
@ -7,11 +7,13 @@
|
||||
"copy": "Copiar",
|
||||
"copyFile": "Copiar archivo",
|
||||
"copyToClipboard": "Copiar al portapapeles",
|
||||
"copyDownloadLinkToClipboard": "Copy download link to clipboard",
|
||||
"create": "Crear",
|
||||
"delete": "Borrar",
|
||||
"download": "Descargar",
|
||||
"file": "Archivo",
|
||||
"folder": "Carpeta",
|
||||
"fullScreen": "Toggle full screen",
|
||||
"hideDotfiles": "Ocultar archivos empezados por punto",
|
||||
"info": "Info",
|
||||
"more": "Más",
|
||||
@ -22,6 +24,7 @@
|
||||
"ok": "OK",
|
||||
"permalink": "Link permanente",
|
||||
"previous": "Anterior",
|
||||
"preview": "Preview",
|
||||
"publish": "Publicar",
|
||||
"rename": "Renombrar",
|
||||
"replace": "Reemplazar",
|
||||
@ -38,13 +41,17 @@
|
||||
"toggleSidebar": "Mostrar/Ocultar menú",
|
||||
"update": "Actualizar",
|
||||
"upload": "Subir",
|
||||
"openFile": "Abrir archivo"
|
||||
"openFile": "Abrir archivo",
|
||||
"discardChanges": "Discard"
|
||||
},
|
||||
"download": {
|
||||
"downloadFile": "Descargar fichero",
|
||||
"downloadFolder": "Descargar directorio",
|
||||
"downloadSelected": "Descargar seleccionados"
|
||||
},
|
||||
"upload": {
|
||||
"abortUpload": "Are you sure you wish to abort?"
|
||||
},
|
||||
"errors": {
|
||||
"forbidden": "No tienes los permisos necesarios para acceder.",
|
||||
"internal": "La verdad es que algo ha ido mal.",
|
||||
@ -103,6 +110,7 @@
|
||||
"deleteMessageMultiple": "¿Estás seguro que quieres eliminar {count} archivo(s)?",
|
||||
"deleteMessageSingle": "¿Estás seguro que quieres eliminar este archivo/carpeta?",
|
||||
"deleteMessageShare": "¿Está seguro de que quiere eliminar este recurso compartido({path})?",
|
||||
"deleteUser": "Are you sure you want to delete this user?",
|
||||
"deleteTitle": "Borrar archivos",
|
||||
"displayName": "Nombre:",
|
||||
"download": "Descargar archivos",
|
||||
@ -131,7 +139,9 @@
|
||||
"upload": "Subir",
|
||||
"uploadFiles": "Subiendo {files} archivos...",
|
||||
"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": {
|
||||
"images": "Imágenes",
|
||||
@ -160,6 +170,11 @@
|
||||
"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!",
|
||||
"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",
|
||||
"userScopeGenerationPlaceholder": "El ámbito se generará automáticamente",
|
||||
"createUserHomeDirectory": "Crear el directorio principal del usuario",
|
||||
@ -209,6 +224,7 @@
|
||||
"shareDeleted": "¡Recurso compartido eliminado!",
|
||||
"singleClick": "Utilice un solo clic para abrir archivos y directorios",
|
||||
"themes": {
|
||||
"default": "System default",
|
||||
"dark": "Oscuro",
|
||||
"light": "Claro",
|
||||
"title": "Tema"
|
||||
|
||||
266
frontend/src/i18n/fa.json
Normal file
@ -0,0 +1,266 @@
|
||||
{
|
||||
"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": "واحد زمان"
|
||||
}
|
||||
}
|
||||
@ -14,7 +14,7 @@
|
||||
"file": "Fichier",
|
||||
"folder": "Dossier",
|
||||
"fullScreen": "Plein écran",
|
||||
"hideDotfiles": "Masquer les dotfiles",
|
||||
"hideDotfiles": "Masquer les fichiers cachés",
|
||||
"info": "Info",
|
||||
"more": "Plus",
|
||||
"move": "Déplacer",
|
||||
@ -22,15 +22,16 @@
|
||||
"new": "Nouveau",
|
||||
"next": "Suivant",
|
||||
"ok": "OK",
|
||||
"permalink": "Obtenir un lien permanent",
|
||||
"permalink": "Obtenir le lien permanent",
|
||||
"previous": "Précédent",
|
||||
"preview": "Prévisualiser",
|
||||
"publish": "Publier",
|
||||
"rename": "Renommer",
|
||||
"replace": "Remplacer",
|
||||
"reportIssue": "Rapport d'erreur",
|
||||
"reportIssue": "Signaler un problème",
|
||||
"save": "Enregistrer",
|
||||
"schedule": "Fixer la date",
|
||||
"search": "Chercher",
|
||||
"schedule": "Planifier",
|
||||
"search": "Rechercher",
|
||||
"select": "Sélectionner",
|
||||
"selectMultiple": "Sélection multiple",
|
||||
"share": "Partager",
|
||||
@ -40,18 +41,22 @@
|
||||
"toggleSidebar": "Afficher/Masquer la barre latérale",
|
||||
"update": "Mettre à jour",
|
||||
"upload": "Importer",
|
||||
"openFile": "Ouvrir le fichier"
|
||||
"openFile": "Ouvrir le fichier",
|
||||
"discardChanges": "Annuler"
|
||||
},
|
||||
"download": {
|
||||
"downloadFile": "Télécharger le fichier",
|
||||
"downloadFolder": "Télécharger le dossier",
|
||||
"downloadSelected": "Télécharger la selection"
|
||||
"downloadSelected": "Télécharger la sélection"
|
||||
},
|
||||
"upload": {
|
||||
"abortUpload": "Êtes-vous sûr de vouloir annuler ?"
|
||||
},
|
||||
"errors": {
|
||||
"forbidden": "Vous n'avez pas la permission d'accéder à cela.",
|
||||
"internal": "Aïe ! Quelque chose s'est mal passé.",
|
||||
"notFound": "Impossible d'accéder à cet emplacement.",
|
||||
"connection": "Le serveur n'est pas accessible."
|
||||
"connection": "Le serveur est injoignable."
|
||||
},
|
||||
"files": {
|
||||
"body": "Corps",
|
||||
@ -61,15 +66,15 @@
|
||||
"home": "Accueil",
|
||||
"lastModified": "Dernière modification",
|
||||
"loading": "Chargement...",
|
||||
"lonely": "Il semble qu'il n'y ait rien par ici...",
|
||||
"metadata": "Metadonnées",
|
||||
"lonely": "C'est un peu désert ici...",
|
||||
"metadata": "Métadonnées",
|
||||
"multipleSelectionEnabled": "Sélection multiple activée",
|
||||
"name": "Nom",
|
||||
"size": "Taille",
|
||||
"sortByLastModified": "Trier par date de dernière modification",
|
||||
"sortByLastModified": "Trier par date de modification",
|
||||
"sortByName": "Trier par nom",
|
||||
"sortBySize": "Trier par taille",
|
||||
"noPreview": "Il n'y a pas de prévisualisation pour ce fichier."
|
||||
"noPreview": "L'aperçu n'est pas disponible pour ce fichier."
|
||||
},
|
||||
"help": {
|
||||
"click": "Sélectionner un élément",
|
||||
@ -105,6 +110,7 @@
|
||||
"deleteMessageMultiple": "Êtes-vous sûr de vouloir supprimer ces {count} élément(s) ?",
|
||||
"deleteMessageSingle": "Êtes-vous sûr de vouloir supprimer cet élément ?",
|
||||
"deleteMessageShare": "Êtes-vous sûr de vouloir supprimer ce partage ({path}) ?",
|
||||
"deleteUser": "Êtes-vous sûr de vouloir supprimer cet utilisateur ?",
|
||||
"deleteTitle": "Supprimer",
|
||||
"displayName": "Nom :",
|
||||
"download": "Télécharger",
|
||||
@ -125,31 +131,33 @@
|
||||
"rename": "Renommer",
|
||||
"renameMessage": "Nouveau nom pour",
|
||||
"replace": "Remplacer",
|
||||
"replaceMessage": "Un des fichiers que vous êtes en train d'importer a le même nom qu'un autre déjà présent. Voulez-vous remplacer le fichier actuel par le nouveau ?\n",
|
||||
"schedule": "Fixer la date",
|
||||
"replaceMessage": "L'un des fichiers que vous êtes en train d'importer a le même nom qu'un autre déjà présent. Voulez-vous remplacer le fichier actuel par le nouveau ?\n",
|
||||
"schedule": "Planifier",
|
||||
"scheduleMessage": "Choisissez une date pour planifier la publication de ce post",
|
||||
"show": "Montrer",
|
||||
"size": "Taille",
|
||||
"upload": "Importer",
|
||||
"uploadFiles": "Importation de {files} fichiers...",
|
||||
"uploadMessage": "Séléctionnez une option d'import.",
|
||||
"optionalPassword": "Mot de passe optionnel"
|
||||
"uploadMessage": "Sélectionnez une option d'import.",
|
||||
"optionalPassword": "Mot de passe optionnel",
|
||||
"resolution": "Résolution",
|
||||
"discardEditorChanges": "Êtes-vous sûr de vouloir annuler les modifications apportées ?"
|
||||
},
|
||||
"search": {
|
||||
"images": "Images",
|
||||
"music": "Musique",
|
||||
"pdf": "PDF",
|
||||
"pressToSearch": "Appuyez du entrée pour chercher...",
|
||||
"pressToSearch": "Appuyez sur Entrée pour rechercher...",
|
||||
"search": "Recherche en cours...",
|
||||
"typeToSearch": "Écrivez pour chercher...",
|
||||
"typeToSearch": "Écrivez pour rechercher...",
|
||||
"types": "Types",
|
||||
"video": "Video"
|
||||
"video": "Vidéo"
|
||||
},
|
||||
"settings": {
|
||||
"admin": "Admin",
|
||||
"administrator": "Administrateur",
|
||||
"allowCommands": "Exécuter des commandes",
|
||||
"allowEdit": "Editer, renommer et supprimer des fichiers ou des dossiers",
|
||||
"allowEdit": "Éditer, renommer et supprimer des fichiers ou des dossiers",
|
||||
"allowNew": "Créer de nouveaux fichiers et dossiers",
|
||||
"allowPublish": "Publier de nouveaux posts et pages",
|
||||
"allowSignup": "Autoriser les utilisateurs à s'inscrire",
|
||||
@ -158,32 +166,40 @@
|
||||
"brandingDirectoryPath": "Chemin du dossier d'image de marque",
|
||||
"brandingHelp": "Vous pouvez personnaliser l'apparence de votre instance de File Browser en changeant son nom, en remplaçant le logo, en ajoutant des styles personnalisés et même en désactivant les liens externes vers GitHub.\nPour plus d'informations sur la personnalisation de l'image de marque, veuillez consulter la {0}.",
|
||||
"changePassword": "Modifier le mot de passe",
|
||||
"commandRunner": "Command runner",
|
||||
"commandRunnerHelp": "Ici, vous pouvez définir les commandes qui sont exécutées pour les é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}.",
|
||||
"commandRunner": "Exécuteur de commandes",
|
||||
"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 !",
|
||||
"createUserDir": "Créer automatiquement un dossier pour l'utilisateur",
|
||||
"minimumPasswordLength": "Minimum password length",
|
||||
"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.",
|
||||
"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.",
|
||||
"tusUploadsRetryCount": "Nombre de tentatives en cas d'échec d'un segment.",
|
||||
"userHomeBasePath": "Chemin de base pour les répertoires personnels des utilisateurs",
|
||||
"userScopeGenerationPlaceholder": "Le périmètre sera généré automatiquement",
|
||||
"createUserHomeDirectory": "Créer le répertoire personnel de l'utilisateur",
|
||||
"customStylesheet": "Feuille de style personnalisée",
|
||||
"defaultUserDescription": "Paramètres par défaut pour les nouveaux utilisateurs.",
|
||||
"disableExternalLinks": "Désactiver les liens externes (sauf la documentation)",
|
||||
"disableUsedDiskPercentage": "Disable used disk percentage graph",
|
||||
"disableUsedDiskPercentage": "Désactiver le graphique de pourcentage d'utilisation du disque",
|
||||
"documentation": "documentation",
|
||||
"examples": "Exemples",
|
||||
"executeOnShell": "Exécuter dans le shell",
|
||||
"executeOnShellDescription": "Par défaut, File Browser exécute les commandes en appelant directement leurs binaires. Si vous voulez les exécuter sur un shell à la place (comme Bash ou PowerShell), vous pouvez le définir ici avec les arguments et les drapeaux requis. S'il est défini, la commande que vous exécutez sera ajoutée en tant qu'argument. Cela s'applique à la fois aux commandes utilisateur et aux crochets d'événements.",
|
||||
"globalRules": "Il s'agit d'un ensemble global de règles d'autorisation et d'interdiction. Elles s'appliquent à tous les utilisateurs. Vous pouvez définir des règles spécifiques sur les paramètres de chaque utilisateur pour remplacer celles-ci.",
|
||||
"globalSettings": "Paramètres généraux",
|
||||
"globalSettings": "Paramètres globaux",
|
||||
"hideDotfiles": "Cacher les fichiers de configuration utilisateur (dotfiles)",
|
||||
"insertPath": "Insérez le chemin",
|
||||
"insertRegex": "Insérez l'expression régulière",
|
||||
"insertPath": "Insérer le chemin",
|
||||
"insertRegex": "Insérer une expression régulière",
|
||||
"instanceName": "Nom de l'instance",
|
||||
"language": "Langue",
|
||||
"lockPassword": "Empêcher l'utilisateur de changer son mot de passe",
|
||||
"newPassword": "Votre nouveau mot de passe",
|
||||
"newPasswordConfirm": "Confirmation du nouveau mot de passe",
|
||||
"newUser": "Nouvel Utilisateur",
|
||||
"newUser": "Nouvel utilisateur",
|
||||
"password": "Mot de passe",
|
||||
"passwordUpdated": "Mot de passe mis à jour !",
|
||||
"path": "",
|
||||
"path": "Chemin",
|
||||
"perm": {
|
||||
"create": "Créer des fichiers et des dossiers",
|
||||
"delete": "Supprimer des fichiers et des dossiers",
|
||||
@ -208,15 +224,16 @@
|
||||
"shareDeleted": "Partage supprimé !",
|
||||
"singleClick": "Utiliser un simple clic pour ouvrir les fichiers et les dossiers",
|
||||
"themes": {
|
||||
"default": "System default",
|
||||
"dark": "Sombre",
|
||||
"light": "Lumineux",
|
||||
"light": "Clair",
|
||||
"title": "Thème"
|
||||
},
|
||||
"user": "Utilisateur",
|
||||
"userCommands": "Commandes",
|
||||
"userCommandsHelp": "Une liste séparée par des espaces des commandes permises pour l'utilisateur. Exemple :",
|
||||
"userCommandsHelp": "Une liste séparée par des espaces des commandes permises pour l'utilisateur. Exemple :\n",
|
||||
"userCreated": "Utilisateur créé !",
|
||||
"userDefaults": "User default settings",
|
||||
"userDefaults": "Paramètres par défaut de l'utilisateur",
|
||||
"userDeleted": "Utilisateur supprimé !",
|
||||
"userManagement": "Gestion des utilisateurs",
|
||||
"userUpdated": "Utilisateur mis à jour !",
|
||||
@ -237,7 +254,7 @@
|
||||
"siteSettings": "Paramètres du site"
|
||||
},
|
||||
"success": {
|
||||
"linkCopied": "Lien copié!"
|
||||
"linkCopied": "Lien copié !"
|
||||
},
|
||||
"time": {
|
||||
"days": "Jours",
|
||||
|
||||
@ -3,6 +3,7 @@
|
||||
"cancel": "ביטול",
|
||||
"clear": "נקה",
|
||||
"close": "סגירה",
|
||||
"continue": "המשך",
|
||||
"copy": "העתקה",
|
||||
"copyFile": "העתק קובץ",
|
||||
"copyToClipboard": "העתק ללוח",
|
||||
@ -12,6 +13,7 @@
|
||||
"download": "הורדה",
|
||||
"file": "קובץ",
|
||||
"folder": "תיקייה",
|
||||
"fullScreen": "Toggle full screen",
|
||||
"hideDotfiles": "הסתר קבצים/תיקיות ששמם מתחיל בנקודה",
|
||||
"info": "מידע",
|
||||
"more": "עוד",
|
||||
@ -22,6 +24,7 @@
|
||||
"ok": "אישור",
|
||||
"permalink": "יצירת קישור קבוע",
|
||||
"previous": "הקודם",
|
||||
"preview": "Preview",
|
||||
"publish": "פרסום",
|
||||
"rename": "שינוי שם",
|
||||
"replace": "החלפה",
|
||||
@ -39,7 +42,6 @@
|
||||
"update": "עדכון",
|
||||
"upload": "העלאה",
|
||||
"openFile": "פתח קובץ",
|
||||
"continue": "המשך",
|
||||
"discardChanges": "זריקת השינויים"
|
||||
},
|
||||
"download": {
|
||||
@ -58,7 +60,6 @@
|
||||
},
|
||||
"files": {
|
||||
"body": "גוף",
|
||||
"clear": "ניקוי",
|
||||
"closePreview": "סגירת תצוגה מקדימה",
|
||||
"files": "קבצים",
|
||||
"folders": "תיקיות",
|
||||
@ -109,6 +110,7 @@
|
||||
"deleteMessageMultiple": "האם אתה בטוח שברצונך למחוק {count} קבצים?",
|
||||
"deleteMessageSingle": "האם אתה בטוח שברצונך למחוק את הקובץ/התיקייה?",
|
||||
"deleteMessageShare": "האם אתה בטוח שברצונך למחוק את השיתוף הזה ({path})?",
|
||||
"deleteUser": "Are you sure you want to delete this user?",
|
||||
"deleteTitle": "מחיקת קבצים",
|
||||
"displayName": "שם:",
|
||||
"download": "הורדת קבצים",
|
||||
@ -138,6 +140,7 @@
|
||||
"uploadFiles": "מעלה {files} קבצים...",
|
||||
"uploadMessage": "בחר אפשרות העלאה.",
|
||||
"optionalPassword": "סיסמא אופציונלית",
|
||||
"resolution": "Resolution",
|
||||
"discardEditorChanges": "האם אתה בטוח שברצונך לבטל את השינויים שביצעת?"
|
||||
},
|
||||
"search": {
|
||||
@ -167,6 +170,11 @@
|
||||
"commandRunnerHelp": "אתה יכול להגדיר פקודות שיבוצעו באירועים שונים. עליך לכתוב אחד בכל שורה. משתני הסביבה {0} ו-{1} יהיו זמינים, בהיותם {0} ביחס ל-{1}. למידע נוסף על תכונה זו ועל משתני הסביבה הזמינים, עיין ב {2}.",
|
||||
"commandsUpdated": "הפקודות עודכנו!",
|
||||
"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": "נתיב ראשי לתיקיות הבית של משתמשים",
|
||||
"userScopeGenerationPlaceholder": "ההיקף יווצר אוטומטית",
|
||||
"createUserHomeDirectory": "צור תיקיית בית למשתמש",
|
||||
@ -216,6 +224,7 @@
|
||||
"shareDeleted": "השיתוף נמחק!",
|
||||
"singleClick": "השתמש בלחיצה בודדת כדי לפתוח קובץ/תיקייה",
|
||||
"themes": {
|
||||
"default": "System default",
|
||||
"dark": "כהה",
|
||||
"light": "בהיר",
|
||||
"title": "ערכת נושא"
|
||||
|
||||
@ -3,14 +3,17 @@
|
||||
"cancel": "Mégse",
|
||||
"clear": "Törlése",
|
||||
"close": "Bezárás",
|
||||
"continue": "Continue",
|
||||
"copy": "Másolás",
|
||||
"copyFile": "Fájl másolása",
|
||||
"copyToClipboard": "Másolás vágólapra",
|
||||
"copyDownloadLinkToClipboard": "Copy download link to clipboard",
|
||||
"create": "Létrehozás",
|
||||
"delete": "Törlése",
|
||||
"download": "Letöltés",
|
||||
"file": "Fájl",
|
||||
"folder": "Mappa",
|
||||
"fullScreen": "Toggle full screen",
|
||||
"hideDotfiles": "Rejtett fájlok elrejtése",
|
||||
"info": "Infó",
|
||||
"more": "További",
|
||||
@ -21,6 +24,7 @@
|
||||
"ok": "OK",
|
||||
"permalink": "Állandó link lekérése",
|
||||
"previous": "Előző",
|
||||
"preview": "Preview",
|
||||
"publish": "Publikálása",
|
||||
"rename": "Átnevezés",
|
||||
"replace": "Csere",
|
||||
@ -37,13 +41,17 @@
|
||||
"toggleSidebar": "Oldalsáv átváltása",
|
||||
"update": "Frissítés",
|
||||
"upload": "Feltöltés",
|
||||
"openFile": "Fájl megnyitása"
|
||||
"openFile": "Fájl megnyitása",
|
||||
"discardChanges": "Discard"
|
||||
},
|
||||
"download": {
|
||||
"downloadFile": "Fájl letöltése",
|
||||
"downloadFolder": "Mappa letöltése",
|
||||
"downloadSelected": "Kijelölés letöltése"
|
||||
},
|
||||
"upload": {
|
||||
"abortUpload": "Are you sure you wish to abort?"
|
||||
},
|
||||
"errors": {
|
||||
"forbidden": "Nincs jogosultsága a hozzáféréshez.",
|
||||
"internal": "Valami nagyon elromlott.",
|
||||
@ -102,6 +110,7 @@
|
||||
"deleteMessageMultiple": "Biztosan törölni szeretne {count} fájlt?",
|
||||
"deleteMessageSingle": "Biztosan törölni szeretné ezt a fájl vagy mappát?",
|
||||
"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",
|
||||
"displayName": "Megjelenített név:",
|
||||
"download": "Fájlok letöltése",
|
||||
@ -130,7 +139,9 @@
|
||||
"upload": "Feltöltés",
|
||||
"uploadFiles": "{files} fájl feltöltése…",
|
||||
"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": {
|
||||
"images": "Képek",
|
||||
@ -159,12 +170,18 @@
|
||||
"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!",
|
||||
"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",
|
||||
"userScopeGenerationPlaceholder": "A környezet automatikus lesz létrehozva",
|
||||
"createUserHomeDirectory": "Felhasználói saját mappák létrehozása",
|
||||
"customStylesheet": "Egyéni stíluslap",
|
||||
"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ó)",
|
||||
"disableUsedDiskPercentage": "Disable used disk percentage graph",
|
||||
"documentation": "dokumentáció",
|
||||
"examples": "Példák",
|
||||
"executeOnShell": "Futtatás parancsértelmezőben",
|
||||
@ -207,6 +224,7 @@
|
||||
"shareDeleted": "Megosztás törölve!",
|
||||
"singleClick": "Fájlok és könyvtárak megnyitása egyetlen kattintással",
|
||||
"themes": {
|
||||
"default": "System default",
|
||||
"dark": "Sötét",
|
||||
"light": "Világos",
|
||||
"title": "Téma"
|
||||
|
||||
@ -23,8 +23,10 @@ import("dayjs/locale/sk");
|
||||
import("dayjs/locale/sv");
|
||||
import("dayjs/locale/tr");
|
||||
import("dayjs/locale/uk");
|
||||
import("dayjs/locale/vi");
|
||||
import("dayjs/locale/zh-cn");
|
||||
import("dayjs/locale/zh-tw");
|
||||
import("dayjs/locale/cs");
|
||||
|
||||
// All i18n resources specified in the plugin `include` option can be loaded
|
||||
// at once using the import syntax
|
||||
@ -103,6 +105,9 @@ export function detectLocale() {
|
||||
case /^uk\b/.test(locale):
|
||||
locale = "uk";
|
||||
break;
|
||||
case /^vi\b/.test(locale):
|
||||
locale = "vi";
|
||||
break;
|
||||
case /^sv-se\b/.test(locale):
|
||||
case /^sv\b/.test(locale):
|
||||
locale = "sv";
|
||||
|
||||
@ -3,13 +3,18 @@
|
||||
"cancel": "Hætta við",
|
||||
"clear": "Hreinsa",
|
||||
"close": "Loka",
|
||||
"continue": "Continue",
|
||||
"copy": "Afrita",
|
||||
"copyFile": "Afrita skjal",
|
||||
"copyToClipboard": "Afrita",
|
||||
"copyDownloadLinkToClipboard": "Copy download link to clipboard",
|
||||
"create": "Búa til",
|
||||
"delete": "Eyða",
|
||||
"download": "Sækja",
|
||||
"hideDotfiles": "",
|
||||
"file": "File",
|
||||
"folder": "Folder",
|
||||
"fullScreen": "Toggle full screen",
|
||||
"hideDotfiles": "Hide dotfiles",
|
||||
"info": "Upplýsingar",
|
||||
"more": "Meira",
|
||||
"move": "Færa",
|
||||
@ -19,6 +24,7 @@
|
||||
"ok": "OK",
|
||||
"permalink": "Sækja fastan hlekk",
|
||||
"previous": "Fyrri",
|
||||
"preview": "Preview",
|
||||
"publish": "Gefa út",
|
||||
"rename": "Endurnefna",
|
||||
"replace": "Skipta út",
|
||||
@ -30,20 +36,27 @@
|
||||
"selectMultiple": "Velja mörg",
|
||||
"share": "Deila",
|
||||
"shell": "Sýna skipanaglugga",
|
||||
"submit": "Submit",
|
||||
"switchView": "Skipta um útlit",
|
||||
"toggleSidebar": "Sýna hliðarstiku",
|
||||
"update": "Vista",
|
||||
"upload": "Hlaða upp"
|
||||
"upload": "Hlaða upp",
|
||||
"openFile": "Open file",
|
||||
"discardChanges": "Discard"
|
||||
},
|
||||
"download": {
|
||||
"downloadFile": "Sækja skjal",
|
||||
"downloadFolder": "Sækja möppu",
|
||||
"downloadSelected": ""
|
||||
"downloadSelected": "Download Selected"
|
||||
},
|
||||
"upload": {
|
||||
"abortUpload": "Are you sure you wish to abort?"
|
||||
},
|
||||
"errors": {
|
||||
"forbidden": "Þú hefur ekki aðgang að þessari síðu.",
|
||||
"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": {
|
||||
"body": "Meginmál",
|
||||
@ -60,7 +73,8 @@
|
||||
"size": "Stærð",
|
||||
"sortByLastModified": "Flokka eftir Seinast breytt",
|
||||
"sortByName": "Flokka eftir nafni",
|
||||
"sortBySize": "Flokka eftir stærð"
|
||||
"sortBySize": "Flokka eftir stærð",
|
||||
"noPreview": "Preview is not available for this file."
|
||||
},
|
||||
"help": {
|
||||
"click": "velja skjal eða möppu",
|
||||
@ -95,6 +109,8 @@
|
||||
"currentlyNavigating": "Núverandi staðsetning:",
|
||||
"deleteMessageMultiple": "Ertu viss um að þú viljir eyða {count} skjölum?",
|
||||
"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",
|
||||
"displayName": "Nafn: ",
|
||||
"download": "Sækja skjöl",
|
||||
@ -120,8 +136,12 @@
|
||||
"scheduleMessage": "Veldu dagsetningu og tíma fyrir áætlaða útgáfu. ",
|
||||
"show": "Sýna",
|
||||
"size": "Stærð",
|
||||
"upload": "",
|
||||
"uploadMessage": ""
|
||||
"upload": "Upload",
|
||||
"uploadFiles": "Uploading {files} files...",
|
||||
"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": {
|
||||
"images": "Myndir",
|
||||
@ -150,6 +170,14 @@
|
||||
"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!",
|
||||
"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",
|
||||
"defaultUserDescription": "Þetta eru sjálfgefnar stillingar fyrir nýja notendur.",
|
||||
"disableExternalLinks": "Sýna ytri-hlekki (fyrir utan leiðbeiningar)",
|
||||
@ -160,7 +188,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.",
|
||||
"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",
|
||||
"hideDotfiles": "",
|
||||
"hideDotfiles": "Hide dotfiles",
|
||||
"insertPath": "Settu inn slóð",
|
||||
"insertRegex": "Setja inn reglulega segð",
|
||||
"instanceName": "Nafn tilviks",
|
||||
@ -171,7 +199,7 @@
|
||||
"newUser": "Nýr notandi",
|
||||
"password": "Lykilorð",
|
||||
"passwordUpdated": "Lykilorð vistað!",
|
||||
"path": "",
|
||||
"path": "Path",
|
||||
"perm": {
|
||||
"create": "Búa til sköl og möppur",
|
||||
"delete": "Eyða skjölum og möppum",
|
||||
@ -189,14 +217,17 @@
|
||||
"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. ",
|
||||
"scope": "Sýn notandans",
|
||||
"setDateFormat": "Set exact date format",
|
||||
"settingsUpdated": "Stillingar vistaðar!",
|
||||
"shareDuration": "",
|
||||
"shareManagement": "",
|
||||
"singleClick": "",
|
||||
"shareDuration": "Share Duration",
|
||||
"shareManagement": "Share Management",
|
||||
"shareDeleted": "Share deleted!",
|
||||
"singleClick": "Use single clicks to open files and directories",
|
||||
"themes": {
|
||||
"dark": "",
|
||||
"light": "",
|
||||
"title": ""
|
||||
"default": "System default",
|
||||
"dark": "Dark",
|
||||
"light": "Light",
|
||||
"title": "Theme"
|
||||
},
|
||||
"user": "Notandi",
|
||||
"userCommands": "Skipanir",
|
||||
|
||||
@ -7,9 +7,13 @@
|
||||
"copy": "Copia",
|
||||
"copyFile": "Copia file",
|
||||
"copyToClipboard": "Copia negli appunti",
|
||||
"copyDownloadLinkToClipboard": "Copy download link to clipboard",
|
||||
"create": "Crea",
|
||||
"delete": "Elimina",
|
||||
"download": "Scarica",
|
||||
"file": "File",
|
||||
"folder": "Folder",
|
||||
"fullScreen": "Toggle full screen",
|
||||
"hideDotfiles": "Nascondi dotfile",
|
||||
"info": "Informazioni",
|
||||
"more": "Altro",
|
||||
@ -20,6 +24,7 @@
|
||||
"ok": "OK",
|
||||
"permalink": "Ottieni link permanente",
|
||||
"previous": "Precedente",
|
||||
"preview": "Preview",
|
||||
"publish": "Publica",
|
||||
"rename": "Rinomina",
|
||||
"replace": "Sostituisci",
|
||||
@ -31,20 +36,27 @@
|
||||
"selectMultiple": "Seleziona molteplici",
|
||||
"share": "Condividi",
|
||||
"shell": "Mostra/nascondi shell",
|
||||
"submit": "Submit",
|
||||
"switchView": "Cambia vista",
|
||||
"toggleSidebar": "Mostra/nascondi la barra laterale",
|
||||
"update": "Aggiorna",
|
||||
"upload": "Carica"
|
||||
"upload": "Carica",
|
||||
"openFile": "Open file",
|
||||
"discardChanges": "Discard"
|
||||
},
|
||||
"download": {
|
||||
"downloadFile": "Scarica file",
|
||||
"downloadFolder": "Scarica cartella",
|
||||
"downloadSelected": "Scarica selezionati"
|
||||
},
|
||||
"upload": {
|
||||
"abortUpload": "Are you sure you wish to abort?"
|
||||
},
|
||||
"errors": {
|
||||
"forbidden": "Non hai i permessi per accedere a questo file.",
|
||||
"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": {
|
||||
"body": "Contenuto",
|
||||
@ -61,7 +73,8 @@
|
||||
"size": "Dimensione",
|
||||
"sortByLastModified": "Ordina per ultima modifica",
|
||||
"sortByName": "Ordina per nome",
|
||||
"sortBySize": "Ordina per dimensione"
|
||||
"sortBySize": "Ordina per dimensione",
|
||||
"noPreview": "Preview is not available for this file."
|
||||
},
|
||||
"help": {
|
||||
"click": "seleziona un file o una cartella",
|
||||
@ -96,6 +109,8 @@
|
||||
"currentlyNavigating": "Attualmente navigando su:",
|
||||
"deleteMessageMultiple": "Sei sicuro di voler eliminare {count} file?",
|
||||
"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",
|
||||
"displayName": "Nome visualizzato:",
|
||||
"download": "Scarica files",
|
||||
@ -122,7 +137,11 @@
|
||||
"show": "Mostra",
|
||||
"size": "Dimensione",
|
||||
"upload": "Carica",
|
||||
"uploadMessage": "Seleziona un'opzione per il caricamento."
|
||||
"uploadFiles": "Uploading {files} files...",
|
||||
"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": {
|
||||
"images": "Immagini",
|
||||
@ -151,6 +170,14 @@
|
||||
"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!",
|
||||
"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",
|
||||
"defaultUserDescription": "Queste sono le impostazioni predefinite per i nuovi utenti.",
|
||||
"disableExternalLinks": "Disabilita link esterni (tranne per la documentazione)",
|
||||
@ -190,11 +217,14 @@
|
||||
"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",
|
||||
"scope": "Scope",
|
||||
"setDateFormat": "Set exact date format",
|
||||
"settingsUpdated": "Impostazioni aggiornate!",
|
||||
"shareDuration": "Durata della condivisione",
|
||||
"shareManagement": "Gestione delle condivisioni",
|
||||
"shareDeleted": "Share deleted!",
|
||||
"singleClick": "Usa un singolo click per aprire file e cartelle",
|
||||
"themes": {
|
||||
"default": "System default",
|
||||
"dark": "Scuro",
|
||||
"light": "Chiaro",
|
||||
"title": "Tema"
|
||||
|
||||
@ -3,6 +3,7 @@
|
||||
"cancel": "キャンセル",
|
||||
"clear": "クリアー",
|
||||
"close": "閉じる",
|
||||
"continue": "続行",
|
||||
"copy": "コピー",
|
||||
"copyFile": "ファイルのコピー",
|
||||
"copyToClipboard": "共有リンクをコピー",
|
||||
@ -12,6 +13,7 @@
|
||||
"download": "ダウンロード",
|
||||
"file": "ファイル",
|
||||
"folder": "フォルダー",
|
||||
"fullScreen": "Toggle full screen",
|
||||
"hideDotfiles": "ドットで始まるファイルを表示しない",
|
||||
"info": "情報",
|
||||
"more": "さらに",
|
||||
@ -22,6 +24,7 @@
|
||||
"ok": "OK",
|
||||
"permalink": "パーマリンクを取得",
|
||||
"previous": "前へ",
|
||||
"preview": "Preview",
|
||||
"publish": "公開",
|
||||
"rename": "名前の変更",
|
||||
"replace": "置換する",
|
||||
@ -39,7 +42,7 @@
|
||||
"update": "更新",
|
||||
"upload": "アップロード",
|
||||
"openFile": "ファイルを開く",
|
||||
"continue": "続行"
|
||||
"discardChanges": "Discard"
|
||||
},
|
||||
"download": {
|
||||
"downloadFile": "ファイルのダウンロード",
|
||||
@ -57,7 +60,6 @@
|
||||
},
|
||||
"files": {
|
||||
"body": "本文",
|
||||
"clear": "消去",
|
||||
"closePreview": "プレビューを閉じる",
|
||||
"files": "ファイル",
|
||||
"folders": "フォルダー",
|
||||
@ -108,6 +110,7 @@
|
||||
"deleteMessageMultiple": "{count} 個のファイルを削除してもよろしいですか?",
|
||||
"deleteMessageSingle": "このファイル/フォルダーを削除してもよろしいですか?",
|
||||
"deleteMessageShare": "共有中のファイル({path})を削除してもよろしいですか?",
|
||||
"deleteUser": "Are you sure you want to delete this user?",
|
||||
"deleteTitle": "ファイルの削除",
|
||||
"displayName": "表示名:",
|
||||
"download": "ファイルのダウンロード",
|
||||
@ -136,7 +139,9 @@
|
||||
"upload": "アップロード",
|
||||
"uploadFiles": "{files} 個のファイルをアップロードしています…",
|
||||
"uploadMessage": "アップロードするオプションを選択してください。",
|
||||
"optionalPassword": "パスワード(オプション)"
|
||||
"optionalPassword": "パスワード(オプション)",
|
||||
"resolution": "Resolution",
|
||||
"discardEditorChanges": "Are you sure you wish to discard the changes you've made?"
|
||||
},
|
||||
"search": {
|
||||
"images": "画像",
|
||||
@ -165,6 +170,7 @@
|
||||
"commandRunnerHelp": "ここでは、指定したイベントの際に実行されるコマンドを設定することができます。1行に1つずつ書く必要があります。環境変数として {0} や {1} が使用可能で、{0} は {1} に関連した変数として扱われます。この機能と使用可能な環境変数の詳細については、{2}をお読みください。",
|
||||
"commandsUpdated": "コマンドを更新しました!",
|
||||
"createUserDir": "新規ユーザー追加時にユーザーのホームディレクトリを自動生成する",
|
||||
"minimumPasswordLength": "Minimum password length",
|
||||
"tusUploads": "チャンクされたファイルアップロード",
|
||||
"tusUploadsHelp": "File Browser はチャンクされたファイルアップロードをサポートしており、信頼性の低いネットワーク上でも、効率的で信頼性の高い、再開可能なチャンクされたファイルアップロードを作成することができます。",
|
||||
"tusUploadsChunkSize": "1チャンクあたりのリクエストの最大サイズ。バイト数を示す整数か、10MB、1GBなどの文字列を入力できます。",
|
||||
@ -218,6 +224,7 @@
|
||||
"shareDeleted": "ファイルの共有を削除しました!",
|
||||
"singleClick": "ダブルクリックの代わりにクリックでファイルやフォルダーを開く",
|
||||
"themes": {
|
||||
"default": "System default",
|
||||
"dark": "ダーク",
|
||||
"light": "ライト",
|
||||
"title": "テーマ"
|
||||
|
||||
@ -3,12 +3,17 @@
|
||||
"cancel": "취소",
|
||||
"clear": "지우기",
|
||||
"close": "닫기",
|
||||
"continue": "Continue",
|
||||
"copy": "복사",
|
||||
"copyFile": "파일 복사",
|
||||
"copyToClipboard": "클립보드 복사",
|
||||
"copyDownloadLinkToClipboard": "Copy download link to clipboard",
|
||||
"create": "생성",
|
||||
"delete": "삭제",
|
||||
"download": "다운로드",
|
||||
"file": "File",
|
||||
"folder": "Folder",
|
||||
"fullScreen": "Toggle full screen",
|
||||
"hideDotfiles": "숨김파일(dotfile)을 표시 안함",
|
||||
"info": "정보",
|
||||
"more": "더보기",
|
||||
@ -19,6 +24,7 @@
|
||||
"ok": "확인",
|
||||
"permalink": "링크 얻기",
|
||||
"previous": "이전",
|
||||
"preview": "Preview",
|
||||
"publish": "게시",
|
||||
"rename": "이름 바꾸기",
|
||||
"replace": "대체",
|
||||
@ -30,20 +36,27 @@
|
||||
"selectMultiple": "다중 선택",
|
||||
"share": "공유",
|
||||
"shell": "쉘 전환",
|
||||
"submit": "Submit",
|
||||
"switchView": "보기 전환",
|
||||
"toggleSidebar": "사이드바 전환",
|
||||
"update": "업데이트",
|
||||
"upload": "업로드"
|
||||
"upload": "업로드",
|
||||
"openFile": "Open file",
|
||||
"discardChanges": "Discard"
|
||||
},
|
||||
"download": {
|
||||
"downloadFile": "파일 다운로드",
|
||||
"downloadFolder": "폴더 다운로드",
|
||||
"downloadSelected": "선택 항목 다운로드"
|
||||
},
|
||||
"upload": {
|
||||
"abortUpload": "Are you sure you wish to abort?"
|
||||
},
|
||||
"errors": {
|
||||
"forbidden": "접근 권한이 없습니다.",
|
||||
"internal": "오류가 발생하였습니다.",
|
||||
"notFound": "해당 경로를 찾을 수 없습니다."
|
||||
"notFound": "해당 경로를 찾을 수 없습니다.",
|
||||
"connection": "The server can't be reached."
|
||||
},
|
||||
"files": {
|
||||
"body": "본문",
|
||||
@ -60,7 +73,8 @@
|
||||
"size": "크기",
|
||||
"sortByLastModified": "수정시간순 정렬",
|
||||
"sortByName": "이름순",
|
||||
"sortBySize": "크기순"
|
||||
"sortBySize": "크기순",
|
||||
"noPreview": "Preview is not available for this file."
|
||||
},
|
||||
"help": {
|
||||
"click": "파일이나 디렉토리를 선택해주세요.",
|
||||
@ -95,6 +109,8 @@
|
||||
"currentlyNavigating": "현재 위치:",
|
||||
"deleteMessageMultiple": "{count} 개의 파일을 삭제하시겠습니까?",
|
||||
"deleteMessageSingle": "파일 혹은 디렉토리를 삭제하시겠습니까?",
|
||||
"deleteMessageShare": "Are you sure you wish to delete this share({path})?",
|
||||
"deleteUser": "Are you sure you want to delete this user?",
|
||||
"deleteTitle": "파일 삭제",
|
||||
"displayName": "게시 이름:",
|
||||
"download": "파일 다운로드",
|
||||
@ -121,7 +137,11 @@
|
||||
"show": "보기",
|
||||
"size": "크기",
|
||||
"upload": "업로드",
|
||||
"uploadMessage": "업로드 옵션을 선택하세요."
|
||||
"uploadFiles": "Uploading {files} files...",
|
||||
"uploadMessage": "업로드 옵션을 선택하세요.",
|
||||
"optionalPassword": "Optional password",
|
||||
"resolution": "Resolution",
|
||||
"discardEditorChanges": "Are you sure you wish to discard the changes you've made?"
|
||||
},
|
||||
"search": {
|
||||
"images": "이미지",
|
||||
@ -150,6 +170,14 @@
|
||||
"commandRunnerHelp": "이벤트에 해당하는 명령을 설정하세요. 줄당 1개의 명령을 적으세요. 환경 변수{0} 와 {1}이 사용가능하며, {0} 은 {1}에 상대 경로 입니다. 자세한 사항은 {2} 를 참조하세요.",
|
||||
"commandsUpdated": "명령 수정됨!",
|
||||
"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": "커스텀 스타일시트",
|
||||
"defaultUserDescription": "아래 사항은 신규 사용자들에 대한 기본 설정입니다.",
|
||||
"disableExternalLinks": "외부 링크 감추기",
|
||||
@ -189,11 +217,14 @@
|
||||
"rules": "룰",
|
||||
"rulesHelp": "사용자별로 규칙을 허용/방지를 지정할 수 있습니다. 방지된 파일은 보이지 않고 사용자들은 접근할 수 없습니다. 사용자의 접근 허용 범위와 관련해 정규표현식(regex)과 경로를 지원합니다.\n",
|
||||
"scope": "범위",
|
||||
"setDateFormat": "Set exact date format",
|
||||
"settingsUpdated": "설정 수정됨!",
|
||||
"shareDuration": "공유 기간",
|
||||
"shareManagement": "공유 내역 관리",
|
||||
"shareDeleted": "Share deleted!",
|
||||
"singleClick": "한번 클릭으로 파일과 폴더를 열도록 합니다.",
|
||||
"themes": {
|
||||
"default": "System default",
|
||||
"dark": "다크테마",
|
||||
"light": "라이트테마",
|
||||
"title": "테마"
|
||||
|
||||
@ -3,13 +3,18 @@
|
||||
"cancel": "Annuleren",
|
||||
"clear": "Wissen",
|
||||
"close": "Sluiten",
|
||||
"continue": "Continue",
|
||||
"copy": "Kopiëren",
|
||||
"copyFile": "Bestand kopiëren",
|
||||
"copyToClipboard": "Kopiëren naar klembord",
|
||||
"copyDownloadLinkToClipboard": "Copy download link to clipboard",
|
||||
"create": "Aanmaken",
|
||||
"delete": "Verwijderen",
|
||||
"download": "Downloaden",
|
||||
"hideDotfiles": "",
|
||||
"file": "File",
|
||||
"folder": "Folder",
|
||||
"fullScreen": "Toggle full screen",
|
||||
"hideDotfiles": "Hide dotfiles",
|
||||
"info": "Info",
|
||||
"more": "Meer",
|
||||
"move": "Verplaatsen",
|
||||
@ -19,6 +24,7 @@
|
||||
"ok": "OK",
|
||||
"permalink": "Maak permanente link",
|
||||
"previous": "Vorige",
|
||||
"preview": "Preview",
|
||||
"publish": "Publiceren",
|
||||
"rename": "Hernoemen",
|
||||
"replace": "Vervangen",
|
||||
@ -30,20 +36,27 @@
|
||||
"selectMultiple": "Meerdere selecteren",
|
||||
"share": "Delen",
|
||||
"shell": "Open shell",
|
||||
"submit": "Submit",
|
||||
"switchView": "Beeld wisselen",
|
||||
"toggleSidebar": "Zijbalk tonen",
|
||||
"update": "Updaten",
|
||||
"upload": "Uploaden"
|
||||
"upload": "Uploaden",
|
||||
"openFile": "Open file",
|
||||
"discardChanges": "Discard"
|
||||
},
|
||||
"download": {
|
||||
"downloadFile": "Bestand downloaden",
|
||||
"downloadFolder": "Map downloaden",
|
||||
"downloadSelected": ""
|
||||
"downloadSelected": "Download Selected"
|
||||
},
|
||||
"upload": {
|
||||
"abortUpload": "Are you sure you wish to abort?"
|
||||
},
|
||||
"errors": {
|
||||
"forbidden": "U hebt geen rechten om hier toegang toe te krijgen.",
|
||||
"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": {
|
||||
"body": "Body",
|
||||
@ -60,7 +73,8 @@
|
||||
"size": "Grootte",
|
||||
"sortByLastModified": "Sorteren op laatst bewerkt",
|
||||
"sortByName": "Sorteren op naam",
|
||||
"sortBySize": "Sorteren op grootte"
|
||||
"sortBySize": "Sorteren op grootte",
|
||||
"noPreview": "Preview is not available for this file."
|
||||
},
|
||||
"help": {
|
||||
"click": "selecteer bestand of map",
|
||||
@ -95,6 +109,8 @@
|
||||
"currentlyNavigating": "Momenteel zoeken op: ",
|
||||
"deleteMessageMultiple": "Weet u zeker dat u {count} bestand(en) 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",
|
||||
"displayName": "Weergavenaam: ",
|
||||
"download": "Bestanden downloaden",
|
||||
@ -120,8 +136,12 @@
|
||||
"scheduleMessage": "Kies een datum en tijd om de publicatie van dit bericht in te plannen.",
|
||||
"show": "Tonen",
|
||||
"size": "Grootte",
|
||||
"upload": "",
|
||||
"uploadMessage": ""
|
||||
"upload": "Upload",
|
||||
"uploadFiles": "Uploading {files} files...",
|
||||
"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": {
|
||||
"images": "Afbeeldingen",
|
||||
@ -150,6 +170,14 @@
|
||||
"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!",
|
||||
"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",
|
||||
"defaultUserDescription": "Dit zijn de standaardinstellingen voor nieuwe gebruikers.",
|
||||
"disableExternalLinks": "Schakel externe links uit (behalve documentatie)",
|
||||
@ -160,7 +188,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.",
|
||||
"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",
|
||||
"hideDotfiles": "",
|
||||
"hideDotfiles": "Hide dotfiles",
|
||||
"insertPath": "Voeg een pad toe",
|
||||
"insertRegex": "Regex expressie invoeren",
|
||||
"instanceName": "Instantienaam",
|
||||
@ -171,7 +199,7 @@
|
||||
"newUser": "Nieuwe gebruiker",
|
||||
"password": "Wachtwoord",
|
||||
"passwordUpdated": "Wachtwoord bijgewerkt!",
|
||||
"path": "",
|
||||
"path": "Path",
|
||||
"perm": {
|
||||
"create": "Bestanden en mappen aanmaken",
|
||||
"delete": "Bestanden en mappen verwijderen",
|
||||
@ -189,14 +217,17 @@
|
||||
"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",
|
||||
"scope": "Scope",
|
||||
"setDateFormat": "Set exact date format",
|
||||
"settingsUpdated": "Instellingen bijgewerkt!",
|
||||
"shareDuration": "",
|
||||
"shareManagement": "",
|
||||
"singleClick": "",
|
||||
"shareDuration": "Share Duration",
|
||||
"shareManagement": "Share Management",
|
||||
"shareDeleted": "Share deleted!",
|
||||
"singleClick": "Use single clicks to open files and directories",
|
||||
"themes": {
|
||||
"dark": "",
|
||||
"light": "",
|
||||
"title": ""
|
||||
"default": "System default",
|
||||
"dark": "Dark",
|
||||
"light": "Light",
|
||||
"title": "Theme"
|
||||
},
|
||||
"user": "Gebruiker",
|
||||
"userCommands": "Commando's",
|
||||
|
||||
@ -3,133 +3,153 @@
|
||||
"cancel": "Anuluj",
|
||||
"clear": "Wyczyść",
|
||||
"close": "Zamknij",
|
||||
"continue": "Kontynuuj",
|
||||
"copy": "Kopiuj",
|
||||
"copyFile": "Kopiuj plik",
|
||||
"copyToClipboard": "kopiuj do schowka",
|
||||
"copyToClipboard": "Kopiuj do schowka",
|
||||
"copyDownloadLinkToClipboard": "Kopiuj link pobierania do schowka",
|
||||
"create": "Utwórz",
|
||||
"delete": "Usuń",
|
||||
"download": "Pobierz",
|
||||
"hideDotfiles": "",
|
||||
"info": "Informacja",
|
||||
"more": "Więce",
|
||||
"file": "Plik",
|
||||
"folder": "Folder",
|
||||
"fullScreen": "Przełącz tryb pełnoekranowy",
|
||||
"hideDotfiles": "Ukryj pliki poprzedzone kropką",
|
||||
"info": "Informacje",
|
||||
"more": "Więcej",
|
||||
"move": "Przenieś",
|
||||
"moveFile": "Przenieś plik",
|
||||
"new": "Nowy",
|
||||
"next": "Następny",
|
||||
"ok": "OK",
|
||||
"permalink": "Uzyskaj link bezpośredni (permalink)",
|
||||
"permalink": "Uzyskaj stały link",
|
||||
"previous": "Poprzedni",
|
||||
"preview": "Podgląd",
|
||||
"publish": "Opublikuj",
|
||||
"rename": "Zmień nazwę",
|
||||
"replace": "Zamień",
|
||||
"reportIssue": "Zgłoś problem",
|
||||
"save": "Zapisz",
|
||||
"schedule": "Grafik",
|
||||
"schedule": "Harmonogram",
|
||||
"search": "Szukaj",
|
||||
"select": "Wybierz",
|
||||
"select": "Zaznacz",
|
||||
"selectMultiple": "Zaznacz wiele",
|
||||
"share": "Udostępnij",
|
||||
"shell": "Pokaż/ukryj powłokę",
|
||||
"shell": "Przełącz powłokę",
|
||||
"submit": "Prześlij",
|
||||
"switchView": "Zmień widok",
|
||||
"toggleSidebar": "Pokaż/ukryj panel boczny",
|
||||
"toggleSidebar": "Przełącz pasek boczny",
|
||||
"update": "Aktualizuj",
|
||||
"upload": "Wgraj"
|
||||
"upload": "Wyślij",
|
||||
"openFile": "Otwórz plik",
|
||||
"discardChanges": "Odrzuć"
|
||||
},
|
||||
"download": {
|
||||
"downloadFile": "Pobierz plik",
|
||||
"downloadFolder": "Pobierz folder",
|
||||
"downloadSelected": "Pobierz zaznaczone"
|
||||
},
|
||||
"upload": {
|
||||
"abortUpload": "Czy na pewno chcesz przerwać?"
|
||||
},
|
||||
"errors": {
|
||||
"forbidden": "Nie posiadasz uprawnień potrzebnych, by uzyskać do tego dostęp.",
|
||||
"forbidden": "Nie masz zezwolenia na dostęp do tego.",
|
||||
"internal": "Pojawił się poważny problem.",
|
||||
"notFound": "Ten adres nie jest poprawny."
|
||||
"notFound": "Ta lokalizacja jest nieosiągalna.",
|
||||
"connection": "Serwer jest nieosiągalny."
|
||||
},
|
||||
"files": {
|
||||
"body": "Body",
|
||||
"closePreview": "Zamknij poprzednie",
|
||||
"body": "Zawartość",
|
||||
"closePreview": "Zamknij podgląd",
|
||||
"files": "Pliki",
|
||||
"folders": "Foldery",
|
||||
"home": "Katalog domowy",
|
||||
"lastModified": "Ostatnio modyfikowane",
|
||||
"home": "Główny",
|
||||
"lastModified": "Ostatnio zmodyfikowano",
|
||||
"loading": "Ładowanie...",
|
||||
"lonely": "Smutno gdy tak pusto...",
|
||||
"lonely": "Smutno, gdy tak pusto...",
|
||||
"metadata": "Metadane",
|
||||
"multipleSelectionEnabled": "Zaznaczenie wielu włączone",
|
||||
"multipleSelectionEnabled": "Włączono zaznaczenie wielokrotne",
|
||||
"name": "Nazwa",
|
||||
"size": "Rozmiar",
|
||||
"sortByLastModified": "Sortuj wg. daty modyfikacji",
|
||||
"sortByName": "Sortuj wg. nazwy",
|
||||
"sortBySize": "Sortuj wg. rozmiaru"
|
||||
"sortByLastModified": "Sortuj wg ostatniej modyfikacji",
|
||||
"sortByName": "Sortuj wg nazwy",
|
||||
"sortBySize": "Sortuj wg rozmiaru",
|
||||
"noPreview": "Podgląd tego pliku jest niedostępny."
|
||||
},
|
||||
"help": {
|
||||
"click": "wybierz plik lub foler",
|
||||
"click": "zaznacz plik lub folder",
|
||||
"ctrl": {
|
||||
"click": "wybierz wiele plików lub folderów",
|
||||
"click": "zaznacz wiele plików lub folderów",
|
||||
"f": "otwórz wyszukiwarkę",
|
||||
"s": "pobierz aktywny plik lub folder"
|
||||
},
|
||||
"del": "usuń zaznaczone",
|
||||
"del": "usuń zaznaczone elementy",
|
||||
"doubleClick": "otwórz plik lub folder",
|
||||
"esc": "wyczyść zaznaczenie i/lub zamknij okno z powiadomieniem",
|
||||
"f1": "ta informacja",
|
||||
"esc": "wyczyść zaznaczenie i/lub zamknij monit",
|
||||
"f1": "te informacje",
|
||||
"f2": "zmień nazwę pliku",
|
||||
"help": "Pomoc"
|
||||
},
|
||||
"login": {
|
||||
"createAnAccount": "Utwórz konto",
|
||||
"loginInstead": "Takie konto już istnieje",
|
||||
"loginInstead": "Mam już konto",
|
||||
"password": "Hasło",
|
||||
"passwordConfirm": "Potwierdzenie hasła",
|
||||
"passwordsDontMatch": "Hasła różnią się",
|
||||
"passwordsDontMatch": "Hasła nie pasują do siebie",
|
||||
"signup": "Rejestracja",
|
||||
"submit": "Logowanie",
|
||||
"submit": "Zaloguj",
|
||||
"username": "Nazwa użytkownika",
|
||||
"usernameTaken": "Nazwa użytkownika już zajęta",
|
||||
"usernameTaken": "Ta nazwa użytkownika jest zajęta",
|
||||
"wrongCredentials": "Błędne dane logowania"
|
||||
},
|
||||
"permanent": "Permanentny",
|
||||
"prompts": {
|
||||
"copy": "Kopiuj",
|
||||
"copyMessage": "Wybierz lokalizację do której mają być skopiowane wybrane pliki",
|
||||
"currentlyNavigating": "Obecnie przeglądasz:",
|
||||
"deleteMessageMultiple": "Czy jesteś pewien że chcesz usunąć {count} plik(ów)?",
|
||||
"deleteMessageSingle": "Czy jesteś pewien, że chcesz usunąć ten plik/folder?",
|
||||
"copyMessage": "Wybierz lokalizację docelową:",
|
||||
"currentlyNavigating": "Aktualnie poruszasz się po:",
|
||||
"deleteMessageMultiple": "Czy na pewno chcesz usunąć pliki: {count}?",
|
||||
"deleteMessageSingle": "Czy na pewno chcesz usunąć ten plik/folder?",
|
||||
"deleteMessageShare": "Czy na pewno chcesz usunąć ten udział ({path})?",
|
||||
"deleteUser": "Czy na pewno chcesz usunąć tego użytkownika?",
|
||||
"deleteTitle": "Usuń pliki",
|
||||
"displayName": "Wyświetlana Nazwa:",
|
||||
"displayName": "Wyświetlana nazwa:",
|
||||
"download": "Pobierz pliki",
|
||||
"downloadMessage": "Wybierz format, jaki chesz pobrać.",
|
||||
"error": "Pojawił się nieznany błąd",
|
||||
"fileInfo": "Informacje o pliku",
|
||||
"filesSelected": "{count} plików zostało zaznaczonych.",
|
||||
"lastModified": "Osatnio Zmodyfikowane",
|
||||
"downloadMessage": "Wybierz format, w którym chcesz pobrać.",
|
||||
"error": "Pojawił się jakiś błąd",
|
||||
"fileInfo": "Informacje o pliku",
|
||||
"filesSelected": "Zaznaczone pliki: {count}",
|
||||
"lastModified": "Ostatnio zmodyfikowano",
|
||||
"move": "Przenieś",
|
||||
"moveMessage": "Wybierz nową lokalizację dla swoich plik(ów)/folder(ów):",
|
||||
"newArchetype": "Utwórz nowy wpis na bazie wybranego wzorca. Twój plik będzie utworzony w wybranym folderze.",
|
||||
"moveMessage": "Wybierz nową lokalizację dla swoich plików/folderów:",
|
||||
"newArchetype": "Utwórz nowy wpis na bazie wybranego wzorca. Twój plik będzie utworzony w wybranym folderze.",
|
||||
"newDir": "Nowy folder",
|
||||
"newDirMessage": "Podaj nazwę tworzonego folderu.",
|
||||
"newDirMessage": "Nazwij nowy folder.",
|
||||
"newFile": "Nowy plik",
|
||||
"newFileMessage": "Podaj nazwętworzonego pliku.",
|
||||
"numberDirs": "Ilość katalogów",
|
||||
"numberFiles": "Ilość plików",
|
||||
"newFileMessage": "Nazwij nowy plik.",
|
||||
"numberDirs": "Liczba folderów",
|
||||
"numberFiles": "Liczba plików",
|
||||
"rename": "Zmień nazwę",
|
||||
"renameMessage": "Podaj nową nazwę dla",
|
||||
"replace": "Zamień",
|
||||
"replaceMessage": "Jednen z plików który próbujesz wrzucić próbje nadpisać plik o tej samej nazwie. Czy chcesz nadpisać poprzedni plik?\n",
|
||||
"schedule": "Grafi",
|
||||
"scheduleMessage": "Wybierz datę i czas dla publikacji tego wpisu.",
|
||||
"replaceMessage": "Jeden z przesyłanych plików chce nadpisać istniejący plik o tej samej nazwie. Chcesz pominąć ten plik i kontynuować przesyłanie reszty plików, czy nadpisać istniejący plik?\n",
|
||||
"schedule": "Grafik",
|
||||
"scheduleMessage": "Wybierz datę i czas dla publikacji tego wpisu.",
|
||||
"show": "Pokaż",
|
||||
"size": "Rozmiar",
|
||||
"upload": "Prześlij",
|
||||
"uploadMessage": "Proszę wybrać metodę przesyłania"
|
||||
"upload": "Wyślij",
|
||||
"uploadFiles": "Wysyłam pliki: {files}...",
|
||||
"uploadMessage": "Wybierz opcję przesyłania.",
|
||||
"optionalPassword": "Opcjonalne hasło",
|
||||
"resolution": "Rozdzielczość",
|
||||
"discardEditorChanges": "Czy na pewno chcesz odrzucić wprowadzone zmiany?"
|
||||
},
|
||||
"search": {
|
||||
"images": "Zdjęcia",
|
||||
"images": "Obrazy",
|
||||
"music": "Muzyka",
|
||||
"pdf": "PDF",
|
||||
"pressToSearch": "Wciśnij enter, aby wyszukać...",
|
||||
"pressToSearch": "Naciśnij Enter, aby wyszukać...",
|
||||
"search": "Szukaj...",
|
||||
"typeToSearch": "Zacznij pisać, aby wyszukać...",
|
||||
"typeToSearch": "Typ plików do wyszukania...",
|
||||
"types": "Typy",
|
||||
"video": "Wideo"
|
||||
},
|
||||
@ -137,70 +157,81 @@
|
||||
"admin": "Admin",
|
||||
"administrator": "Administrator",
|
||||
"allowCommands": "Wykonaj polecenie",
|
||||
"allowEdit": "Edycja, zmiana nazwy i usuniecie plików lub folderów",
|
||||
"allowEdit": "Edycja, zmiana nazwy i usuniecie plików lub folderów",
|
||||
"allowNew": "Tworzenie nowych plików lub folderów",
|
||||
"allowPublish": "Tworzenie nowych wpisów i stron",
|
||||
"allowSignup": "Zezwól na rejestrację użytkowników",
|
||||
"avoidChanges": "(pozostaw puste aby nie zosatało zmienione)",
|
||||
"branding": "Branding",
|
||||
"brandingDirectoryPath": "Folder brandingowy",
|
||||
"brandingHelp": "Możesz dostosować wygląd i doznania użytkownika swojej instancji File Browser poprzez zmianę jej nazwy, zmianę logo, dodanie własnych stylów, a nawet wyłączyć linki zewnętrzne do GitHuba.\nW celu pozyskania większej ilości informacji nt. osobistego brandingu, zapoznaj się z {0}.",
|
||||
"changePassword": "Zmień Hasło",
|
||||
"allowPublish": "Tworzenie nowych wpisów i stron",
|
||||
"allowSignup": "Pozwól użytkownikom na rejestrację",
|
||||
"avoidChanges": "(pozostaw puste, aby uniknąć zmian)",
|
||||
"branding": "Personalizacja",
|
||||
"brandingDirectoryPath": "Ścieżka do folderu personalizacji",
|
||||
"brandingHelp": "Możesz zmodyfikować wygląd instancji File Browser poprzez zmianę nazwy, logo, dodanie własnych stylów graficznych, a nawet usunięcia linków do serwisu GitHub. Więcej informacji o modyfikacji wyglądu znajdziesz w {0}.",
|
||||
"changePassword": "Zmień hasło",
|
||||
"commandRunner": "Narzędzie do wykonywania poleceń",
|
||||
"commandRunnerHelp": "Tu możesz ustawić komendy, które będą wykonywane przy danych zdarzeniach. Musisz wpisywać po jednej na linjkę. 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 tutaj: {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!",
|
||||
"createUserDir": "Automatycznie utwórz katalog domowy użytkownika podczas dodania nowego użytkownika",
|
||||
"customStylesheet": "Własny arkusz stylów",
|
||||
"defaultUserDescription": "Oto domyślne ustawienia dla nowych użytkowników.",
|
||||
"disableExternalLinks": "Wyłącz linki zewnętrzne (z wyjątkiem dokumentacji)",
|
||||
"disableUsedDiskPercentage": "Disable used disk percentage graph",
|
||||
"documentation": "dokumentacja",
|
||||
"createUserDir": "Automatycznie twórz katalog domowy podczas dodawania użytkownika",
|
||||
"minimumPasswordLength": "Minimalna długość hasła",
|
||||
"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.",
|
||||
"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.",
|
||||
"tusUploadsRetryCount": "Liczba prób ponowienia transferu w przypadku wystapienia problemu z przesyłem.",
|
||||
"userHomeBasePath": "Ścieżka podstawowa dla katalogów domowych użytkowników",
|
||||
"userScopeGenerationPlaceholder": "Zakres zostanie wygenerowany automatycznie",
|
||||
"createUserHomeDirectory": "Utwórz katalog domowy użytkownika",
|
||||
"customStylesheet": "Własny arkusz stylu",
|
||||
"defaultUserDescription": "To są domyślne ustawienia dla nowych użytkowników.",
|
||||
"disableExternalLinks": "Wyłącz linki zewnętrzne (z wyjątkiem dokumentacji)",
|
||||
"disableUsedDiskPercentage": "Wyłącz wykres procentowy używanego dysku",
|
||||
"documentation": "dokumentacji",
|
||||
"examples": "Przykłady",
|
||||
"executeOnShell": "Wykonaj w powłoce",
|
||||
"executeOnShellDescription": "Domyślnie File Browser wykonuje polecenia wywołując ich pliki binarne bezpośrednio. Jesli preferujesz wykonywanie ich w powłoce (jak np. Bash czy PowerShell), możesz zdefiniować to tutaj wraz z wymaganymi flagami i argumentami. Jeśli to ustawienie jest aktywne, polecenie które wykonarz zostanie dodane jako argument. Stosuje się to zarówno do poleceń użytkownika jak i zaczepów zdarzeń.",
|
||||
"globalRules": "To jest globalne zestawienie reguł zezwalających i zabraniających. Stosują się one do każdego użytkownika. Możesz zdefiniować indywidualne zasady w ustawieniach każdego użytkownika, by zignorować te reguły.",
|
||||
"globalSettings": "Ustawienia Globalne",
|
||||
"hideDotfiles": "Ukryj ukryte pliki",
|
||||
"executeOnShell": "Wykonaj w powłoce",
|
||||
"executeOnShellDescription": "Domyślnie File Browser wykonuje polecenia poprzez bezpośrednie uruchomienie odpowiednich plików binarnych. Jeśli chcesz uruchamiać polecenia z poziomu powłoki (np. Bash lub PowerShell), możesz zdefiniować je tutaj, z wykorzystaniem odpowiednich argumentów i flag. Gdy się na to zdecydujesz, wykonywane polecenie będzie załączone jako argument. Tyczy się to tak poleceń użytkownika, jak i zaczepów zdarzeń.",
|
||||
"globalRules": "Globalny zestaw reguł zezwalających i zakazujących. Dotyczą każdego użytkownika. Aby zastąpić ustawienia globalne, możesz zdefiniować określone reguły indywidualnie dla każdego użytkownika.",
|
||||
"globalSettings": "Ustawienia globalne",
|
||||
"hideDotfiles": "Ukryj pliki poprzedzone kropką",
|
||||
"insertPath": "Wstaw ścieżkę",
|
||||
"insertRegex": "Wstaw wyrażenie regularne",
|
||||
"instanceName": "Nazwa instancji",
|
||||
"language": "Język",
|
||||
"lockPassword": "Zablokuj użytkownikowi możliwość zmiany hasła",
|
||||
"newPassword": "Twoje nowe hasło",
|
||||
"newPasswordConfirm": "Potwierdź swoje hasło",
|
||||
"newUser": "Nowy Użytkownik",
|
||||
"newPassword": "Nowe hasło",
|
||||
"newPasswordConfirm": "Potwierdź nowe hasło",
|
||||
"newUser": "Nowy użytkownik",
|
||||
"password": "Hasło",
|
||||
"passwordUpdated": "Hasło zostało zapisane!",
|
||||
"passwordUpdated": "Hasło zostało zaktualizowane!",
|
||||
"path": "Ścieżka",
|
||||
"perm": {
|
||||
"create": "Tworzenie plików i katalogów",
|
||||
"delete": "Usuwanie plików i katalogów",
|
||||
"create": "Tworzenie plików i folderów",
|
||||
"delete": "Usuwanie plików i folderów",
|
||||
"download": "Pobieranie",
|
||||
"execute": "Wykonywanie poleceń",
|
||||
"modify": "Edycja plików",
|
||||
"rename": "Zmiana nazw lub przenoszenie plików i katalogów",
|
||||
"modify": "Edytowanie plików",
|
||||
"rename": "Zmienianie nazwy lub przenoszenie plików i katalogów",
|
||||
"share": "Udostępnianie plików"
|
||||
},
|
||||
"permissions": "Uprawnienia",
|
||||
"permissionsHelp": "Możesz uczynić użytkownika administratorem, lub wybrać uprawnienia indywidualnie. Jeśli zaznaczysz opcję \"Administrator\", wszystkie pozostałe opcje zostaną automatycznie zaznaczone. Zarządzanie użytkownikami pozostaje przywilejem administratora.\n",
|
||||
"permissionsHelp": "Możesz ustawić użytkownika jako administratora lub wybrać uprawnienia indywidualnie. Jeśli wybierzesz „Administrator”, wszystkie pozostałe opcje zostaną automatycznie zaznaczone. Zarządzanie użytkownikami pozostaje przywilejem administratora.\n",
|
||||
"profileSettings": "Twój profil",
|
||||
"ruleExample1": "uniemożliwia dostęp do któregokolwiek z ukrytych plików (takich jak .git, .gitignore) w każdym folderze.\n",
|
||||
"ruleExample2": "blokuje dostęp do pliku Caddyfile w głównym katalogu zakresu.",
|
||||
"ruleExample1": "uniemożliwia dostęp do plików poprzedzonych kropką (takich jak .git, .gitignore) we wszystkich folderach.\n",
|
||||
"ruleExample2": "blokuje dostęp do pliku o nazwie Caddyfile w katalogu głównym zakresu.",
|
||||
"rules": "Uprawnienia",
|
||||
"rulesHelp": "Tu możesz zdefiniować zestawienie reguł zezwalających i zabraniających dla tego konkretnego użytkownika. Zablokowane pliki nie będą widoczne na listach i nie będą dostępne dla użytkownika. Wspierane są wyrażenia regularne i ścieżki względne wobec zakresu użytkownika.\n",
|
||||
"rulesHelp": "Tutaj możesz zdefiniować zestaw reguł zezwalających i zakazujących dla tego użytkownika. Zablokowane pliki nie pojawią się na listach i nie będą dostępne dla użytkownika. Obsługujemy wyrażenia regularne i ścieżki względne w stosunku do zakresu użytkownika.\n",
|
||||
"scope": "Zakres",
|
||||
"settingsUpdated": "Uprawnienia Zapisane!",
|
||||
"setDateFormat": "Ustaw dokładny format daty",
|
||||
"settingsUpdated": "Ustawienia zaktualizowane!",
|
||||
"shareDuration": "Okres udostępniania",
|
||||
"shareManagement": "Zarządzanie udostępnianiem",
|
||||
"singleClick": "Pojedyncze kliknięcie",
|
||||
"shareDeleted": "Udostępnienie usunięte!",
|
||||
"singleClick": "Używaj pojedynczych kliknięć, aby otwierać pliki i foldery",
|
||||
"themes": {
|
||||
"dark": "ciemny",
|
||||
"light": "jasny",
|
||||
"title": "Motywy"
|
||||
"default": "Domyślny systemowy",
|
||||
"dark": "Ciemny",
|
||||
"light": "Jasny",
|
||||
"title": "Motyw"
|
||||
},
|
||||
"user": "Użytkownik",
|
||||
"userCommands": "Polecenia",
|
||||
"userCommandsHelp": "Lista oddzielonych spacjami poleceń dostępnych dla tego użytkownika. Przykład:\n",
|
||||
"userCommandsHelp": "Oddzielona spacjami lista z dostępnymi poleceniami dla tego użytkownika. Przykład:\n",
|
||||
"userCreated": "Użytkownik zapisany!",
|
||||
"userDefaults": "Domyślne ustawienia użytkownika",
|
||||
"userDeleted": "Użytkownik usunięty!",
|
||||
@ -211,8 +242,8 @@
|
||||
},
|
||||
"sidebar": {
|
||||
"help": "Pomoc",
|
||||
"hugoNew": "Hugo New",
|
||||
"login": "Login",
|
||||
"hugoNew": "Nowy Hugo",
|
||||
"login": "Zaloguj",
|
||||
"logout": "Wyloguj",
|
||||
"myFiles": "Moje pliki",
|
||||
"newFile": "Nowy plik",
|
||||
@ -220,10 +251,10 @@
|
||||
"preview": "Podgląd",
|
||||
"settings": "Ustawienia",
|
||||
"signup": "Rejestracja",
|
||||
"siteSettings": "Ustawienia Strony"
|
||||
"siteSettings": "Ustawienia strony"
|
||||
},
|
||||
"success": {
|
||||
"linkCopied": "Link Skopiowany!"
|
||||
"linkCopied": "Link skopiowany!"
|
||||
},
|
||||
"time": {
|
||||
"days": "Dni",
|
||||
|
||||
@ -7,11 +7,13 @@
|
||||
"copy": "Copiar",
|
||||
"copyFile": "Copiar arquivo",
|
||||
"copyToClipboard": "Copiar",
|
||||
"copyDownloadLinkToClipboard": "Copy download link to clipboard",
|
||||
"create": "Criar",
|
||||
"delete": "Apagar",
|
||||
"download": "Baixar",
|
||||
"file": "Arquivo",
|
||||
"folder": "Pasta",
|
||||
"fullScreen": "Toggle full screen",
|
||||
"hideDotfiles": "Ocultar dotfiles",
|
||||
"info": "Informações",
|
||||
"more": "Mais",
|
||||
@ -22,6 +24,7 @@
|
||||
"ok": "OK",
|
||||
"permalink": "Obter link permanente",
|
||||
"previous": "Anterior",
|
||||
"preview": "Preview",
|
||||
"publish": "Publicar",
|
||||
"rename": "Renomear",
|
||||
"replace": "Substituir",
|
||||
@ -38,13 +41,17 @@
|
||||
"toggleSidebar": "Alternar barra lateral",
|
||||
"update": "Atualizar",
|
||||
"upload": "Enviar",
|
||||
"openFile": "Abrir"
|
||||
"openFile": "Abrir",
|
||||
"discardChanges": "Discard"
|
||||
},
|
||||
"download": {
|
||||
"downloadFile": "Baixar arquivo",
|
||||
"downloadFolder": "Baixar pasta",
|
||||
"downloadSelected": "Baixar selecionado"
|
||||
},
|
||||
"upload": {
|
||||
"abortUpload": "Are you sure you wish to abort?"
|
||||
},
|
||||
"errors": {
|
||||
"forbidden": "Você não tem permissões para acessar isto.",
|
||||
"internal": "Ops! Algum erro ocorreu.",
|
||||
@ -103,6 +110,7 @@
|
||||
"deleteMessageMultiple": "Deseja apagar {count} arquivo(s)?",
|
||||
"deleteMessageSingle": "Deseja apagar esta pasta/arquivo?",
|
||||
"deleteMessageShare": "Deseja apagar este compartilhamento ({path})?",
|
||||
"deleteUser": "Are you sure you want to delete this user?",
|
||||
"deleteTitle": "Apagar arquivos",
|
||||
"displayName": "Nome:",
|
||||
"download": "Baixar arquivos",
|
||||
@ -131,7 +139,9 @@
|
||||
"upload": "Enviar",
|
||||
"uploadFiles": "Enviando {files} arquivos...",
|
||||
"uploadMessage": "Selecione uma opção para enviar.",
|
||||
"optionalPassword": "Senha opcional"
|
||||
"optionalPassword": "Senha opcional",
|
||||
"resolution": "Resolution",
|
||||
"discardEditorChanges": "Are you sure you wish to discard the changes you've made?"
|
||||
},
|
||||
"search": {
|
||||
"images": "Imagens",
|
||||
@ -160,6 +170,11 @@
|
||||
"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!",
|
||||
"createUserDir": "Criar diretório Home para novos usuários",
|
||||
"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",
|
||||
"userScopeGenerationPlaceholder": "O escopo será gerado automaticamente",
|
||||
"createUserHomeDirectory": "Criar diretório Home de usuário",
|
||||
@ -184,7 +199,7 @@
|
||||
"newUser": "Novo usuário",
|
||||
"password": "Senha",
|
||||
"passwordUpdated": "Senha atualizada!",
|
||||
"path": "",
|
||||
"path": "Path",
|
||||
"perm": {
|
||||
"create": "Criar arquivos e diretórios",
|
||||
"delete": "Apagar arquivos e diretórios",
|
||||
@ -209,6 +224,7 @@
|
||||
"shareDeleted": "Compartilhamento apagado!",
|
||||
"singleClick": "Usar clique único para abrir arquivos e diretórios",
|
||||
"themes": {
|
||||
"default": "System default",
|
||||
"dark": "Escuro",
|
||||
"light": "Claro",
|
||||
"title": "Tema"
|
||||
|
||||
@ -7,10 +7,14 @@
|
||||
"copy": "Copiar",
|
||||
"copyFile": "Copiar ficheiro",
|
||||
"copyToClipboard": "Copiar",
|
||||
"copyDownloadLinkToClipboard": "Copy download link to clipboard",
|
||||
"create": "Criar",
|
||||
"delete": "Eliminar",
|
||||
"download": "Descarregar",
|
||||
"hideDotfiles": "",
|
||||
"file": "File",
|
||||
"folder": "Folder",
|
||||
"fullScreen": "Toggle full screen",
|
||||
"hideDotfiles": "Hide dotfiles",
|
||||
"info": "Info",
|
||||
"more": "Mais",
|
||||
"move": "Mover",
|
||||
@ -20,6 +24,7 @@
|
||||
"ok": "OK",
|
||||
"permalink": "Obter link permanente",
|
||||
"previous": "Anterior",
|
||||
"preview": "Preview",
|
||||
"publish": "Publicar",
|
||||
"rename": "Alterar nome",
|
||||
"replace": "Substituir",
|
||||
@ -31,20 +36,27 @@
|
||||
"selectMultiple": "Selecionar vários",
|
||||
"share": "Partilhar",
|
||||
"shell": "Alternar shell",
|
||||
"submit": "Submit",
|
||||
"switchView": "Alterar vista",
|
||||
"toggleSidebar": "Alternar barra lateral",
|
||||
"update": "Atualizar",
|
||||
"upload": "Enviar"
|
||||
"upload": "Enviar",
|
||||
"openFile": "Open file",
|
||||
"discardChanges": "Discard"
|
||||
},
|
||||
"download": {
|
||||
"downloadFile": "Descarregar ficheiro",
|
||||
"downloadFolder": "Descarregar pasta",
|
||||
"downloadSelected": ""
|
||||
"downloadSelected": "Download Selected"
|
||||
},
|
||||
"upload": {
|
||||
"abortUpload": "Are you sure you wish to abort?"
|
||||
},
|
||||
"errors": {
|
||||
"forbidden": "Não tem permissões para aceder a isto",
|
||||
"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": {
|
||||
"body": "Corpo",
|
||||
@ -61,7 +73,8 @@
|
||||
"size": "Tamanho",
|
||||
"sortByLastModified": "Ordenar pela última alteração",
|
||||
"sortByName": "Ordenar pelo nome",
|
||||
"sortBySize": "Ordenar pelo tamanho"
|
||||
"sortBySize": "Ordenar pelo tamanho",
|
||||
"noPreview": "Preview is not available for this file."
|
||||
},
|
||||
"help": {
|
||||
"click": "selecionar pasta ou ficheiro",
|
||||
@ -96,6 +109,8 @@
|
||||
"currentlyNavigating": "A navegar em:",
|
||||
"deleteMessageMultiple": "Quer eliminar {count} ficheiro(s)?",
|
||||
"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",
|
||||
"displayName": "Nome:",
|
||||
"download": "Descarregar ficheiros",
|
||||
@ -121,8 +136,12 @@
|
||||
"scheduleMessage": "Escolha uma data para publicar este post.",
|
||||
"show": "Mostrar",
|
||||
"size": "Tamanho",
|
||||
"upload": "",
|
||||
"uploadMessage": ""
|
||||
"upload": "Upload",
|
||||
"uploadFiles": "Uploading {files} files...",
|
||||
"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": {
|
||||
"images": "Imagens",
|
||||
@ -151,6 +170,14 @@
|
||||
"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!",
|
||||
"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",
|
||||
"defaultUserDescription": "Estas são as configurações padrão para novos utilizadores.",
|
||||
"disableExternalLinks": "Desativar links externos (exceto documentação)",
|
||||
@ -161,7 +188,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.",
|
||||
"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",
|
||||
"hideDotfiles": "",
|
||||
"hideDotfiles": "Hide dotfiles",
|
||||
"insertPath": "Inserir o caminho",
|
||||
"insertRegex": "Inserir expressão regular",
|
||||
"instanceName": "Nome da instância",
|
||||
@ -172,7 +199,7 @@
|
||||
"newUser": "Novo utilizador",
|
||||
"password": "Palavra-passe",
|
||||
"passwordUpdated": "Palavra-passe atualizada!",
|
||||
"path": "",
|
||||
"path": "Path",
|
||||
"perm": {
|
||||
"create": "Criar ficheiros e pastas",
|
||||
"delete": "Eliminar ficheiros e pastas",
|
||||
@ -190,14 +217,17 @@
|
||||
"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",
|
||||
"scope": "Base",
|
||||
"setDateFormat": "Set exact date format",
|
||||
"settingsUpdated": "Configurações atualizadas!",
|
||||
"shareDuration": "",
|
||||
"shareManagement": "",
|
||||
"singleClick": "",
|
||||
"shareDuration": "Share Duration",
|
||||
"shareManagement": "Share Management",
|
||||
"shareDeleted": "Share deleted!",
|
||||
"singleClick": "Use single clicks to open files and directories",
|
||||
"themes": {
|
||||
"dark": "",
|
||||
"light": "",
|
||||
"title": ""
|
||||
"default": "System default",
|
||||
"dark": "Dark",
|
||||
"light": "Light",
|
||||
"title": "Theme"
|
||||
},
|
||||
"user": "Utilizador",
|
||||
"userCommands": "Comandos",
|
||||
|
||||
@ -3,13 +3,18 @@
|
||||
"cancel": "Anulează",
|
||||
"clear": "Curăță",
|
||||
"close": "Închide",
|
||||
"continue": "Continue",
|
||||
"copy": "Copiază",
|
||||
"copyFile": "Copiază fișier",
|
||||
"copyToClipboard": "Copiază în clipboard",
|
||||
"copyDownloadLinkToClipboard": "Copy download link to clipboard",
|
||||
"create": "Crează",
|
||||
"delete": "Șterge",
|
||||
"download": "Descarcă",
|
||||
"hideDotfiles": "",
|
||||
"file": "File",
|
||||
"folder": "Folder",
|
||||
"fullScreen": "Toggle full screen",
|
||||
"hideDotfiles": "Hide dotfiles",
|
||||
"info": "Info",
|
||||
"more": "Mai mult",
|
||||
"move": "Mută",
|
||||
@ -19,6 +24,7 @@
|
||||
"ok": "OK",
|
||||
"permalink": "Obține legătura permanentă",
|
||||
"previous": "Precedent",
|
||||
"preview": "Preview",
|
||||
"publish": "Puplică",
|
||||
"rename": "Redenumește",
|
||||
"replace": "Înlocuiește",
|
||||
@ -30,20 +36,27 @@
|
||||
"selectMultiple": "Selecție multiplă",
|
||||
"share": "Distribuie",
|
||||
"shell": "Comută linia de comandă",
|
||||
"submit": "Submit",
|
||||
"switchView": "Schimba vizualizarea",
|
||||
"toggleSidebar": "Comută bara laterală",
|
||||
"update": "Actualizează",
|
||||
"upload": "Încarcă"
|
||||
"upload": "Încarcă",
|
||||
"openFile": "Open file",
|
||||
"discardChanges": "Discard"
|
||||
},
|
||||
"download": {
|
||||
"downloadFile": "Descarcă fișier",
|
||||
"downloadFolder": "Descarcă director",
|
||||
"downloadSelected": ""
|
||||
"downloadSelected": "Download Selected"
|
||||
},
|
||||
"upload": {
|
||||
"abortUpload": "Are you sure you wish to abort?"
|
||||
},
|
||||
"errors": {
|
||||
"forbidden": "Nu ai permisiuni sa accesezi asta.",
|
||||
"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": {
|
||||
"body": "Corp",
|
||||
@ -60,7 +73,8 @@
|
||||
"size": "Dimensiune",
|
||||
"sortByLastModified": "Ordonează dup ultima modificare",
|
||||
"sortByName": "Ordonează după nume",
|
||||
"sortBySize": "Ordonează după dimensiune"
|
||||
"sortBySize": "Ordonează după dimensiune",
|
||||
"noPreview": "Preview is not available for this file."
|
||||
},
|
||||
"help": {
|
||||
"click": "alege fișier sau director",
|
||||
@ -95,6 +109,8 @@
|
||||
"currentlyNavigating": "Navigare curentă în:",
|
||||
"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?",
|
||||
"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",
|
||||
"displayName": "Nume afișat:",
|
||||
"download": "Descarcă fișiere",
|
||||
@ -120,8 +136,12 @@
|
||||
"scheduleMessage": "Alege data si ora pentru a programa publicarea acestei postări.",
|
||||
"show": "Arată",
|
||||
"size": "Dimensiune",
|
||||
"upload": "",
|
||||
"uploadMessage": ""
|
||||
"upload": "Upload",
|
||||
"uploadFiles": "Uploading {files} files...",
|
||||
"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": {
|
||||
"images": "Imagini",
|
||||
@ -150,6 +170,14 @@
|
||||
"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!",
|
||||
"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",
|
||||
"defaultUserDescription": "Acestea sunt setările implicite pentru noii utilizatori.",
|
||||
"disableExternalLinks": "Dezactivează linkurile externe (exceptând documentația)",
|
||||
@ -160,7 +188,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.",
|
||||
"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",
|
||||
"hideDotfiles": "",
|
||||
"hideDotfiles": "Hide dotfiles",
|
||||
"insertPath": "Redactează calea",
|
||||
"insertRegex": "Redactează expresia regulată",
|
||||
"instanceName": "Numele instanței",
|
||||
@ -171,7 +199,7 @@
|
||||
"newUser": "Utilizator nou",
|
||||
"password": "Parola",
|
||||
"passwordUpdated": "Parola actualizată!",
|
||||
"path": "",
|
||||
"path": "Path",
|
||||
"perm": {
|
||||
"create": "Crează fișiere și directoare",
|
||||
"delete": "Șterge fișiere și directoare",
|
||||
@ -189,14 +217,17 @@
|
||||
"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",
|
||||
"scope": "Domeniu",
|
||||
"setDateFormat": "Set exact date format",
|
||||
"settingsUpdated": "Setări actualizate!",
|
||||
"shareDuration": "",
|
||||
"shareManagement": "",
|
||||
"singleClick": "",
|
||||
"shareDuration": "Share Duration",
|
||||
"shareManagement": "Share Management",
|
||||
"shareDeleted": "Share deleted!",
|
||||
"singleClick": "Use single clicks to open files and directories",
|
||||
"themes": {
|
||||
"dark": "",
|
||||
"light": "",
|
||||
"title": ""
|
||||
"default": "System default",
|
||||
"dark": "Dark",
|
||||
"light": "Light",
|
||||
"title": "Theme"
|
||||
},
|
||||
"user": "Utilizator",
|
||||
"userCommands": "Comenzi",
|
||||
|
||||
@ -3,14 +3,17 @@
|
||||
"cancel": "Отмена",
|
||||
"clear": "Очистить",
|
||||
"close": "Закрыть",
|
||||
"continue": "Продолжить",
|
||||
"copy": "Копировать",
|
||||
"copyFile": "Скопировать файл",
|
||||
"copyToClipboard": "Скопировать в буфер",
|
||||
"copyDownloadLinkToClipboard": "Скопировать ссылку в буфер",
|
||||
"create": "Создать",
|
||||
"delete": "Удалить",
|
||||
"download": "Скачать",
|
||||
"file": "Файл",
|
||||
"folder": "Папка",
|
||||
"fullScreen": " Развернуть на весь экран",
|
||||
"hideDotfiles": "Скрыть точечные файлы",
|
||||
"info": "Инфо",
|
||||
"more": "Еще",
|
||||
@ -21,6 +24,7 @@
|
||||
"ok": "OK",
|
||||
"permalink": "Получить постоянную ссылку",
|
||||
"previous": "Назад",
|
||||
"preview": "Предпросмотр",
|
||||
"publish": "Опубликовать",
|
||||
"rename": "Переименовать",
|
||||
"replace": "Перезаписать",
|
||||
@ -37,13 +41,17 @@
|
||||
"toggleSidebar": "Боковая панель",
|
||||
"update": "Обновить",
|
||||
"upload": "Загрузить",
|
||||
"openFile": "Открыть файл"
|
||||
"openFile": "Открыть файл",
|
||||
"discardChanges": "Отказаться"
|
||||
},
|
||||
"download": {
|
||||
"downloadFile": "Скачать файл",
|
||||
"downloadFolder": "Загрузить папку",
|
||||
"downloadSelected": "Скачать выбранное"
|
||||
},
|
||||
"upload": {
|
||||
"abortUpload": "Вы действительно, что хотите прервать операцию?"
|
||||
},
|
||||
"errors": {
|
||||
"forbidden": "У вас нет прав доступа к этому.",
|
||||
"internal": "Что-то пошло не так.",
|
||||
@ -72,7 +80,7 @@
|
||||
"click": "выбрать файл или каталог",
|
||||
"ctrl": {
|
||||
"click": "выбрать несколько файлов или каталогов",
|
||||
"f": "открыть поиск",
|
||||
"f": "открытые поиски",
|
||||
"s": "скачать файл или текущий каталог"
|
||||
},
|
||||
"del": "удалить выбранные элементы",
|
||||
@ -102,6 +110,7 @@
|
||||
"deleteMessageMultiple": "Удалить эти файлы ({count})?",
|
||||
"deleteMessageSingle": "Удалить этот файл/каталог?",
|
||||
"deleteMessageShare": "Удалить этот общий файл/каталог ({path})?",
|
||||
"deleteUser": "Вы действительно, хотите удалить пользователя?",
|
||||
"deleteTitle": "Удалить файлы",
|
||||
"displayName": "Отображаемое имя:",
|
||||
"download": "Скачать файлы",
|
||||
@ -111,7 +120,7 @@
|
||||
"filesSelected": "Файлов выбрано: {count}.",
|
||||
"lastModified": "Последнее изменение",
|
||||
"move": "Переместить",
|
||||
"moveMessage": "Переместить в:",
|
||||
"moveMessage": "Выберите новый домашний каталог для ваших файлов/папок:",
|
||||
"newArchetype": "Создайте новую запись на основе архетипа. Файл будет создан в каталоге.",
|
||||
"newDir": "Новый каталог",
|
||||
"newDirMessage": "Имя нового каталога.",
|
||||
@ -128,8 +137,11 @@
|
||||
"show": "Показать",
|
||||
"size": "Размер",
|
||||
"upload": "Загрузить",
|
||||
"uploadFiles": "Загружаю {files} файлы...",
|
||||
"uploadMessage": "Выберите вариант для загрузки.",
|
||||
"optionalPassword": "Необязательный пароль"
|
||||
"optionalPassword": "Необязательный пароль",
|
||||
"resolution": "Разрешение",
|
||||
"discardEditorChanges": "Вы действительно желаете отменить ваши правки?"
|
||||
},
|
||||
"search": {
|
||||
"images": "Изображения",
|
||||
@ -158,6 +170,14 @@
|
||||
"commandRunnerHelp": "Здесь вы можете установить команды, которые будут выполняться в указанных событиях. Вы должны указать по одной команде в каждой строке. Переменные среды {0} и {1} будут доступны, будучи {0} относительно {1}. Дополнительные сведения об этой функции и доступных переменных среды см. В {2}.",
|
||||
"commandsUpdated": "Команды обновлены!",
|
||||
"createUserDir": "Автоматическое создание домашнего каталога пользователя при добавлении нового пользователя",
|
||||
"minimumPasswordLength": "Minimum password length",
|
||||
"tusUploads": "Загруженные файлы",
|
||||
"tusUploadsHelp": " File Browser поддерживает загрузку файлов по частям, что позволяет работать в сетях низкого качества.",
|
||||
"tusUploadsChunkSize": "Указывает максимальный размер запроса (мелкие загрузки пойдут напрямую). Вы можете ввести простое целое число, обозначающее размер ввода в байтах, или строку, например 10MB, 1GB и т. д.",
|
||||
"tusUploadsRetryCount": "Количество повторных попыток, которые необходимо выполнить, если фрагмент не удалось загрузить.",
|
||||
"userHomeBasePath": "Путь к домашнему каталогу пользователя",
|
||||
"userScopeGenerationPlaceholder": "Область действия будет сгенерирована автоматически",
|
||||
"createUserHomeDirectory": "Создать домашний каталог пользователя",
|
||||
"customStylesheet": "Свой стиль",
|
||||
"defaultUserDescription": "Это настройки по умолчанию для новых пользователей.",
|
||||
"disableExternalLinks": "Отключить внешние ссылки (кроме документации)",
|
||||
@ -196,7 +216,7 @@
|
||||
"ruleExample2": "блокирует доступ к файлу с именем Caddyfile в корневой области.",
|
||||
"rules": "Права",
|
||||
"rulesHelp": "Здесь вы можете определить набор разрешающих и запрещающих правил для этого конкретного пользователь. Блокированные файлы не будут отображаться в списках, и не будут доступны для пользователя. Есть поддержка регулярных выражений и относительных путей.\n",
|
||||
"scope": "Корень",
|
||||
"scope": "Область",
|
||||
"setDateFormat": "Установить точный формат даты",
|
||||
"settingsUpdated": "Настройки применены!",
|
||||
"shareDuration": "Время расшаренной ссылки",
|
||||
@ -204,6 +224,7 @@
|
||||
"shareDeleted": "Расшаренная ссылка удалена!",
|
||||
"singleClick": "Открытие файлов и каталогов одним кликом",
|
||||
"themes": {
|
||||
"default": " Системные настройки по умолчанию",
|
||||
"dark": "Темная",
|
||||
"light": "Светлая",
|
||||
"title": "Тема"
|
||||
|
||||
@ -3,14 +3,17 @@
|
||||
"cancel": "Zrušiť",
|
||||
"clear": "Zrušiť výber",
|
||||
"close": "Zavrieť",
|
||||
"continue": "Continue",
|
||||
"copy": "Kopírovať",
|
||||
"copyFile": "Kopírovať súbor",
|
||||
"copyToClipboard": "Kopírovať do schránky",
|
||||
"copyDownloadLinkToClipboard": "Copy download link to clipboard",
|
||||
"create": "Vytvoriť",
|
||||
"delete": "Odstrániť",
|
||||
"download": "Stiahnuť",
|
||||
"file": "Súbor",
|
||||
"folder": "Priečinok",
|
||||
"fullScreen": "Toggle full screen",
|
||||
"hideDotfiles": "Skryť súbory začínajúce bodkou",
|
||||
"info": "Info",
|
||||
"more": "Viac",
|
||||
@ -21,6 +24,7 @@
|
||||
"ok": "OK",
|
||||
"permalink": "Získať trvalý odkaz",
|
||||
"previous": "Predošlé",
|
||||
"preview": "Preview",
|
||||
"publish": "Zverejniť",
|
||||
"rename": "Premenovať",
|
||||
"replace": "Nahradiť",
|
||||
@ -37,13 +41,17 @@
|
||||
"toggleSidebar": "Prepnúť sidebar",
|
||||
"update": "Aktualizovať",
|
||||
"upload": "Nahrať",
|
||||
"openFile": "Otvoriť súbor"
|
||||
"openFile": "Otvoriť súbor",
|
||||
"discardChanges": "Discard"
|
||||
},
|
||||
"download": {
|
||||
"downloadFile": "Stiahnuť súbor",
|
||||
"downloadFolder": "Stiahnuť priečinok",
|
||||
"downloadSelected": "Stiahnuť vybraté"
|
||||
},
|
||||
"upload": {
|
||||
"abortUpload": "Are you sure you wish to abort?"
|
||||
},
|
||||
"errors": {
|
||||
"forbidden": "You don't have permissions to access this.",
|
||||
"internal": "Something really went wrong.",
|
||||
@ -102,6 +110,7 @@
|
||||
"deleteMessageMultiple": "Naozaj chcete odstrániť {count} súbor(ov)?",
|
||||
"deleteMessageSingle": "Naozaj chcete odstrániť tento súbor/priečinok?",
|
||||
"deleteMessageShare": "Naozaj chcete odstrániť toto zdieľanie({path})?",
|
||||
"deleteUser": "Are you sure you want to delete this user?",
|
||||
"deleteTitle": "Odstránenie súborov",
|
||||
"displayName": "Zobrazený názov:",
|
||||
"download": "Stiahnuť súbory",
|
||||
@ -128,8 +137,11 @@
|
||||
"show": "Zobraziť",
|
||||
"size": "Veľkosť",
|
||||
"upload": "Nahrať",
|
||||
"uploadFiles": "Uploading {files} files...",
|
||||
"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": {
|
||||
"images": "Obrázky",
|
||||
@ -158,6 +170,14 @@
|
||||
"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é!",
|
||||
"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",
|
||||
"defaultUserDescription": "Toto sú predvolané nastavenia nového používateľa.",
|
||||
"disableExternalLinks": "Vypnúť externé odkazy (okrem dokumentácie)",
|
||||
@ -197,12 +217,14 @@
|
||||
"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",
|
||||
"scope": "Scope",
|
||||
"setDateFormat": "Set exact date format",
|
||||
"settingsUpdated": "Nastavenia upravené!",
|
||||
"shareDuration": "Trvanie zdieľania",
|
||||
"shareManagement": "Správa zdieľania",
|
||||
"shareDeleted": "Zdieľanie odstránené!",
|
||||
"singleClick": "Používať jeden klik na otváranie súborov a priečinkov",
|
||||
"themes": {
|
||||
"default": "System default",
|
||||
"dark": "Tmavá",
|
||||
"light": "Svetlá",
|
||||
"title": "Téma"
|
||||
|
||||
@ -3,13 +3,18 @@
|
||||
"cancel": "Avbryt",
|
||||
"clear": "Rensa",
|
||||
"close": "Stäng",
|
||||
"continue": "Continue",
|
||||
"copy": "Kopiera",
|
||||
"copyFile": "Kopiera fil",
|
||||
"copyToClipboard": "Kopiera till urklipp",
|
||||
"copyDownloadLinkToClipboard": "Copy download link to clipboard",
|
||||
"create": "Skapa",
|
||||
"delete": "Ta bort",
|
||||
"download": "Ladda ner",
|
||||
"hideDotfiles": "",
|
||||
"file": "File",
|
||||
"folder": "Folder",
|
||||
"fullScreen": "Toggle full screen",
|
||||
"hideDotfiles": "Hide dotfiles",
|
||||
"info": "Info",
|
||||
"more": "Mer",
|
||||
"move": "Flytta",
|
||||
@ -19,6 +24,7 @@
|
||||
"ok": "OK",
|
||||
"permalink": "Skapa en permanent länk",
|
||||
"previous": "Föregående",
|
||||
"preview": "Preview",
|
||||
"publish": "Publisera",
|
||||
"rename": "Ändra namn",
|
||||
"replace": "Ersätt",
|
||||
@ -30,20 +36,27 @@
|
||||
"selectMultiple": "Välj flera",
|
||||
"share": "Dela",
|
||||
"shell": "Växla skal",
|
||||
"submit": "Submit",
|
||||
"switchView": "Byt vy",
|
||||
"toggleSidebar": "Växla sidofält",
|
||||
"update": "Uppdatera",
|
||||
"upload": "Ladda upp"
|
||||
"upload": "Ladda upp",
|
||||
"openFile": "Open file",
|
||||
"discardChanges": "Discard"
|
||||
},
|
||||
"download": {
|
||||
"downloadFile": "Ladda ner fil",
|
||||
"downloadFolder": "Ladda ner mapp",
|
||||
"downloadSelected": ""
|
||||
"downloadSelected": "Download Selected"
|
||||
},
|
||||
"upload": {
|
||||
"abortUpload": "Are you sure you wish to abort?"
|
||||
},
|
||||
"errors": {
|
||||
"forbidden": "Du saknar rättigheter till detta",
|
||||
"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": {
|
||||
"body": "Huvud",
|
||||
@ -60,7 +73,8 @@
|
||||
"size": "Storlek",
|
||||
"sortByLastModified": "Sortera på senast ändrad",
|
||||
"sortByName": "Sortera på namn",
|
||||
"sortBySize": "Sortera på storlek"
|
||||
"sortBySize": "Sortera på storlek",
|
||||
"noPreview": "Preview is not available for this file."
|
||||
},
|
||||
"help": {
|
||||
"click": "välj fil eller mapp",
|
||||
@ -95,6 +109,8 @@
|
||||
"currentlyNavigating": "För närvarande navigerar du på:",
|
||||
"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",
|
||||
"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",
|
||||
"displayName": "Visningsnamn:",
|
||||
"download": "Ladda ner filer",
|
||||
@ -120,8 +136,12 @@
|
||||
"scheduleMessage": "Pick a date and time to schedule the publication of this post.",
|
||||
"show": "Visa",
|
||||
"size": "Storlek",
|
||||
"upload": "",
|
||||
"uploadMessage": ""
|
||||
"upload": "Upload",
|
||||
"uploadFiles": "Uploading {files} files...",
|
||||
"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": {
|
||||
"images": "Bilder",
|
||||
@ -150,6 +170,14 @@
|
||||
"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!",
|
||||
"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",
|
||||
"defaultUserDescription": "Detta är standard inställningar för användare.",
|
||||
"disableExternalLinks": "Inaktivera externa länkar (förutom dokumentation)",
|
||||
@ -160,7 +188,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.",
|
||||
"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",
|
||||
"hideDotfiles": "",
|
||||
"hideDotfiles": "Hide dotfiles",
|
||||
"insertPath": "Ange sökväg",
|
||||
"insertRegex": "Sätt in regex expression",
|
||||
"instanceName": "Instans namn",
|
||||
@ -171,7 +199,7 @@
|
||||
"newUser": "Ny användare",
|
||||
"password": "Lösenord",
|
||||
"passwordUpdated": "Lösenord uppdaterat",
|
||||
"path": "",
|
||||
"path": "Path",
|
||||
"perm": {
|
||||
"create": "Skapa filer och mappar",
|
||||
"delete": "Ta bort filer och mappar",
|
||||
@ -189,14 +217,17 @@
|
||||
"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",
|
||||
"scope": "Omfattning",
|
||||
"setDateFormat": "Set exact date format",
|
||||
"settingsUpdated": "Inställning uppdaterad!",
|
||||
"shareDuration": "",
|
||||
"shareManagement": "",
|
||||
"singleClick": "",
|
||||
"shareDuration": "Share Duration",
|
||||
"shareManagement": "Share Management",
|
||||
"shareDeleted": "Share deleted!",
|
||||
"singleClick": "Use single clicks to open files and directories",
|
||||
"themes": {
|
||||
"dark": "",
|
||||
"light": "",
|
||||
"title": ""
|
||||
"default": "System default",
|
||||
"dark": "Dark",
|
||||
"light": "Light",
|
||||
"title": "Theme"
|
||||
},
|
||||
"user": "Användare",
|
||||
"userCommands": "Kommandon",
|
||||
|
||||
@ -3,12 +3,17 @@
|
||||
"cancel": "Vazgeç",
|
||||
"clear": "Temizle",
|
||||
"close": "Kapat",
|
||||
"continue": "Continue",
|
||||
"copy": "Kopyala",
|
||||
"copyFile": "Dosyayı kopyala",
|
||||
"copyToClipboard": "Panoya kopyala",
|
||||
"copyDownloadLinkToClipboard": "Copy download link to clipboard",
|
||||
"create": "Oluştur",
|
||||
"delete": "Sil",
|
||||
"download": "İndir",
|
||||
"file": "File",
|
||||
"folder": "Folder",
|
||||
"fullScreen": "Toggle full screen",
|
||||
"hideDotfiles": "Nokta dosyalarını gizle",
|
||||
"info": "Bilgi",
|
||||
"more": "Daha fazla",
|
||||
@ -19,6 +24,7 @@
|
||||
"ok": "Tamam",
|
||||
"permalink": "Kalıcı Bağlantı Alın",
|
||||
"previous": "Önceki",
|
||||
"preview": "Preview",
|
||||
"publish": "Yayınla",
|
||||
"rename": "Yeniden anlandır",
|
||||
"replace": "Değiştir",
|
||||
@ -35,13 +41,17 @@
|
||||
"toggleSidebar": "Menüyü aç/kapat",
|
||||
"update": "Güncelle",
|
||||
"upload": "Yükle",
|
||||
"openFile": "Dosyayı aç"
|
||||
"openFile": "Dosyayı aç",
|
||||
"discardChanges": "Discard"
|
||||
},
|
||||
"download": {
|
||||
"downloadFile": "Dosyayı indir",
|
||||
"downloadFolder": "Klasörü indir",
|
||||
"downloadSelected": "Seçilileri indir"
|
||||
},
|
||||
"upload": {
|
||||
"abortUpload": "Are you sure you wish to abort?"
|
||||
},
|
||||
"errors": {
|
||||
"forbidden": "Buna erişim izniniz yok.",
|
||||
"internal": "Bir şeyler ters gitti.",
|
||||
@ -100,6 +110,7 @@
|
||||
"deleteMessageMultiple": "{count} dosyayı/dosyaları silmek istediğinizden emin misiniz?",
|
||||
"deleteMessageSingle": "Bu dosyayı/klasörü silmek istediğinizden emin misiniz?",
|
||||
"deleteMessageShare": "Bu paylaşımı({path}) silmek istediğinizden emin misiniz?",
|
||||
"deleteUser": "Are you sure you want to delete this user?",
|
||||
"deleteTitle": "Dosyaları sil",
|
||||
"displayName": "Görünen Ad:",
|
||||
"download": "Dosyaları indirŞ",
|
||||
@ -126,8 +137,11 @@
|
||||
"show": "Göster",
|
||||
"size": "Boyut",
|
||||
"upload": "Gönder",
|
||||
"uploadFiles": "Uploading {files} files...",
|
||||
"uploadMessage": "Yüklemek için bir seçenek belirleyin.",
|
||||
"optionalPassword": "İsteğe bağlı şifre"
|
||||
"optionalPassword": "İsteğe bağlı şifre",
|
||||
"resolution": "Resolution",
|
||||
"discardEditorChanges": "Are you sure you wish to discard the changes you've made?"
|
||||
},
|
||||
"search": {
|
||||
"images": "Görseller",
|
||||
@ -156,6 +170,14 @@
|
||||
"commandRunnerHelp": "Burada, adlandırılmış olaylarda yürütülen komutları ayarlayabilirsiniz. Her satıra bir tane yazmalısınız. {0} ve {1} ortam değişkenleri, {1}'ye göre {0} olacak şekilde kullanılabilir olacaktır. Bu özellik ve mevcut ortam değişkenleri hakkında daha fazla bilgi için lütfen {2}'yi okuyun.",
|
||||
"commandsUpdated": "Komutlar güncellendi!",
|
||||
"createUserDir": "Kullanıcı eklerken, kullanıcı ana dizinini otomatik oluştur",
|
||||
"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": "Özel CSS",
|
||||
"defaultUserDescription": "Bu, yeni kullanıcılar için varsayılan ayarlardır.",
|
||||
"disableExternalLinks": "Harici bağlantıları devre dışı bırakın (dökümantasyon hariç)",
|
||||
@ -195,12 +217,14 @@
|
||||
"rules": "Kurallar",
|
||||
"rulesHelp": "Burada, bu belirli kullanıcı için bir dizi izin verme ve izin vermeme kuralı tanımlayabilirsiniz. Engellenen dosyalar listelerde görünmeyecek ve kullanıcı bunlara erişemeyecek. Kullanıcı erişimine göre regex ifadeleri destekliyoruz.\n",
|
||||
"scope": "Kapsam",
|
||||
"setDateFormat": "Set exact date format",
|
||||
"settingsUpdated": "Ayarlar güncellendi!",
|
||||
"shareDuration": "Paylaşım süresi",
|
||||
"shareManagement": "Paylaşım yönetimi",
|
||||
"shareDeleted": "Paylaşım silindi!",
|
||||
"singleClick": "Dosyaları ve dizinleri açmak için tek tıklamayı kullanın",
|
||||
"themes": {
|
||||
"default": "System default",
|
||||
"dark": "Dark",
|
||||
"light": "Light",
|
||||
"title": "Theme"
|
||||
|
||||
@ -3,14 +3,17 @@
|
||||
"cancel": "Відмінити",
|
||||
"clear": "Очистити",
|
||||
"close": "Закрити",
|
||||
"continue": "Continue",
|
||||
"copy": "Копіювати",
|
||||
"copyFile": "Копіювати файл",
|
||||
"copyToClipboard": "Копіювати в буфер обміну",
|
||||
"copyDownloadLinkToClipboard": "Copy download link to clipboard",
|
||||
"create": "Створити",
|
||||
"delete": "Видалити",
|
||||
"download": "Завантажити",
|
||||
"file": "Файл",
|
||||
"folder": "Папка",
|
||||
"fullScreen": "Toggle full screen",
|
||||
"hideDotfiles": "Приховати точкові файли",
|
||||
"info": "Інфо",
|
||||
"more": "Більше",
|
||||
@ -21,6 +24,7 @@
|
||||
"ok": "ОК",
|
||||
"permalink": "Отримати постійне посилання",
|
||||
"previous": "Назад",
|
||||
"preview": "Preview",
|
||||
"publish": "Опублікувати",
|
||||
"rename": "Перейменувати",
|
||||
"replace": "Замінити",
|
||||
@ -37,13 +41,17 @@
|
||||
"toggleSidebar": "Бічна панель",
|
||||
"update": "Оновити",
|
||||
"upload": "Вивантажити",
|
||||
"openFile": "Відкрити файл"
|
||||
"openFile": "Відкрити файл",
|
||||
"discardChanges": "Discard"
|
||||
},
|
||||
"download": {
|
||||
"downloadFile": "Завантажити файл",
|
||||
"downloadFolder": "Завантажити папку",
|
||||
"downloadSelected": "Завантажити вибране"
|
||||
},
|
||||
"upload": {
|
||||
"abortUpload": "Are you sure you wish to abort?"
|
||||
},
|
||||
"errors": {
|
||||
"forbidden": "У вас немає прав доступу до цього.",
|
||||
"internal": "Щось пішло не так.",
|
||||
@ -102,6 +110,7 @@
|
||||
"deleteMessageMultiple": "Видалити ці файли ({count})?",
|
||||
"deleteMessageSingle": "Видалити цей файл/каталог?",
|
||||
"deleteMessageShare": "Видалити цей спільний файл/каталог ({path})?",
|
||||
"deleteUser": "Are you sure you want to delete this user?",
|
||||
"deleteTitle": "Видалити файли",
|
||||
"displayName": "Відображене ім'я:",
|
||||
"download": "Завантажити файли",
|
||||
@ -128,8 +137,11 @@
|
||||
"show": "Показати",
|
||||
"size": "Розмір",
|
||||
"upload": "Вивантажити",
|
||||
"uploadFiles": "Uploading {files} files...",
|
||||
"uploadMessage": "Виберіть варіант для вивантаження.",
|
||||
"optionalPassword": "Необов'язковий пароль"
|
||||
"optionalPassword": "Необов'язковий пароль",
|
||||
"resolution": "Resolution",
|
||||
"discardEditorChanges": "Are you sure you wish to discard the changes you've made?"
|
||||
},
|
||||
"search": {
|
||||
"images": "Зображення",
|
||||
@ -158,6 +170,14 @@
|
||||
"commandRunnerHelp": "Тут ви можете встановити команди, які будуть виконуватися у зазначених подіях. Ви повинні вказати по одній команді в кожному рядку. Змінні середовища {0} та {1} будуть доступні, будучи {0} щодо {1}. Додаткові відомості про цю функцію та доступні змінні середовища див. у {2}.",
|
||||
"commandsUpdated": "Команди оновлені!",
|
||||
"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": "Base path for user home directories",
|
||||
"userScopeGenerationPlaceholder": "The scope will be auto generated",
|
||||
"createUserHomeDirectory": "Create user home directory",
|
||||
"customStylesheet": "Свій стиль",
|
||||
"defaultUserDescription": "Це налаштування за замовчуванням для нових користувачів.",
|
||||
"disableExternalLinks": "Вимкнути зовнішні посилання (крім документації)",
|
||||
@ -204,6 +224,7 @@
|
||||
"shareDeleted": "Спільне посилання видалено!",
|
||||
"singleClick": "Відкриття файлів та каталогів одним кліком",
|
||||
"themes": {
|
||||
"default": "System default",
|
||||
"dark": "Темна",
|
||||
"light": "Світла",
|
||||
"title": "Тема"
|
||||
|
||||