mirror of
https://framagit.org/fiat-tux/hat-softwares/lutim.git
synced 2026-03-28 17:42:54 +01:00
Compare commits
280 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
438ce5050e | ||
|
|
d67d66d0fd | ||
|
|
cc03ba6d3f | ||
|
|
5b4f56b9f6 | ||
|
|
8b6766f498 | ||
|
|
68518dd85c | ||
|
|
e7d0821cff | ||
|
|
121c00167c | ||
|
|
c3c3c7a780 | ||
|
|
47a67a428d | ||
|
|
a9b514a30c | ||
|
|
680b3d7057 | ||
|
|
18888c05b3 | ||
|
|
d0e472fe95 | ||
|
|
10f1bd58c5 | ||
|
|
34be40d928 | ||
|
|
e7d87dac3c | ||
|
|
2bff3fcc51 | ||
|
|
c0da308963 | ||
|
|
8515a2b2c7 | ||
|
|
3dc46ebad5 | ||
|
|
c5a69e6128 | ||
|
|
45b8e6c3e2 | ||
|
|
8c40ae36bc | ||
|
|
6b5e52fba3 | ||
|
|
5db403f040 | ||
|
|
3a0f39761c | ||
|
|
691e0c3592 | ||
|
|
8e4f6c7b22 | ||
|
|
21b592cb51 | ||
|
|
c15f6dea68 | ||
|
|
c9a5cfdcd4 | ||
|
|
e4d78e5433 | ||
|
|
bb6b0c30a8 | ||
|
|
a46aab6ffa | ||
|
|
f610608aa1 | ||
|
|
52b436657f | ||
|
|
4486b32da5 | ||
|
|
17c862ae19 | ||
|
|
124ca306b4 | ||
|
|
7d845b9e64 | ||
|
|
3dd1fdca56 | ||
|
|
87efb615bb | ||
|
|
e17a51d8d5 | ||
|
|
c40d22427a | ||
|
|
d10ecc41fb | ||
|
|
4384bd1b9f | ||
|
|
614a561e00 | ||
|
|
09887ed01a | ||
|
|
f68353fa1b | ||
|
|
6aa0c43b55 | ||
|
|
cf3f0e0250 | ||
|
|
31df50d6c9 | ||
|
|
ab6febf2ea | ||
|
|
a6b0a9961a | ||
|
|
d939ec30c7 | ||
|
|
62519948a6 | ||
|
|
6ee0dc022c | ||
|
|
10daa1cd02 | ||
|
|
f4b5a780f6 | ||
|
|
1142006456 | ||
|
|
9d265879a5 | ||
|
|
d296fdcd2c | ||
|
|
33b81c9e40 | ||
|
|
d11a70c7f6 | ||
|
|
456b8cfc67 | ||
|
|
34a9e7b1e8 | ||
|
|
fe286c947b | ||
|
|
1bf33e5d3b | ||
|
|
72a5e2a543 | ||
|
|
2ee0d9d9d1 | ||
|
|
90fd6ee30f | ||
|
|
acc4c5849b | ||
|
|
7a14ad11e8 | ||
|
|
17f0beb7cf | ||
|
|
c12977b0c0 | ||
|
|
e5740c820f | ||
|
|
045f4ae5ea | ||
|
|
521245ce87 | ||
|
|
226cb56b6f | ||
|
|
63d7e1cbe8 | ||
|
|
5a79b4ced2 | ||
|
|
0aafa19cf7 | ||
|
|
b078707ddf | ||
|
|
f0254a9247 | ||
|
|
acf91e799f | ||
|
|
56dea43802 | ||
|
|
08d301688f | ||
|
|
79835941a5 | ||
|
|
1efae05eda | ||
|
|
3a3e42b352 | ||
|
|
dbfaab5f7e | ||
|
|
b7edbc73cd | ||
|
|
a416a8ad07 | ||
|
|
2071a84ff1 | ||
|
|
4ed87a082f | ||
|
|
fcba4f25b5 | ||
|
|
eacce37d88 | ||
|
|
e075543a0b | ||
|
|
4e9169d5f1 | ||
|
|
8d7f3d18e1 | ||
|
|
e1f62f9d46 | ||
|
|
366bd28e5d | ||
|
|
7884280a46 | ||
|
|
678eb86b27 | ||
|
|
891c0fc0c2 | ||
|
|
8701c1a99e | ||
|
|
12901f00d2 | ||
|
|
0973ca335d | ||
|
|
8c2996fb31 | ||
|
|
0ddf81573c | ||
|
|
442c2c35ed | ||
|
|
1d9c1d9d95 | ||
|
|
b701575e03 | ||
|
|
8bc6157325 | ||
|
|
ef8bdb6c83 | ||
|
|
e0feb50dec | ||
|
|
787193a1f3 | ||
|
|
453b476b6a | ||
|
|
420c726258 | ||
|
|
0f31fe9bd1 | ||
|
|
2fa9da7fa7 | ||
|
|
6ba40384bd | ||
|
|
d5d2720719 | ||
|
|
0627a3708d | ||
|
|
ce2af1df23 | ||
|
|
1ebe905e3b | ||
|
|
eed9bccd45 | ||
|
|
87e0e4e28e | ||
|
|
dc3735b31b | ||
|
|
56e0849533 | ||
|
|
a262ed325d | ||
|
|
56ffd65fe8 | ||
|
|
b65f37293b | ||
|
|
4a37e722fe | ||
|
|
55dec02d71 | ||
|
|
78da85115c | ||
|
|
d709a607af | ||
|
|
dee0101496 | ||
|
|
6cdcd9a88d | ||
|
|
8994ceb405 | ||
|
|
ffcb48ba84 | ||
|
|
285e3a0811 | ||
|
|
998db0cb90 | ||
|
|
0cfd5b2533 | ||
|
|
a03e3549a8 | ||
|
|
b8d2defe61 | ||
|
|
c030e371ae | ||
|
|
85d0aabef8 | ||
|
|
da8a0642ec | ||
|
|
9696da7c01 | ||
|
|
4585b7af8f | ||
|
|
3feeeac39d | ||
|
|
f7b81e701f | ||
|
|
8c7a2a75a1 | ||
|
|
e1533a8804 | ||
|
|
f8b28525f6 | ||
|
|
182f4ccf4e | ||
|
|
07344aa0c9 | ||
|
|
b8d74beea3 | ||
|
|
985a781a5f | ||
|
|
ee936c1f79 | ||
|
|
9ea2234f7d | ||
|
|
7c199a5c87 | ||
|
|
4d5fed4d02 | ||
|
|
b088db9c5e | ||
|
|
ea358d4a4c | ||
|
|
47b38daad5 | ||
|
|
46dcb0256f | ||
|
|
8fe738adc4 | ||
|
|
9b90119061 | ||
|
|
78bb3f37c7 | ||
|
|
f2f785e6d4 | ||
|
|
15e587464d | ||
|
|
4ef5e67f4b | ||
|
|
ef090954c3 | ||
|
|
b42bf08363 | ||
|
|
b5ea181bea | ||
|
|
b84420e6dc | ||
|
|
701a78ac94 | ||
|
|
0d1ca8aa98 | ||
|
|
fbe3c3bc13 | ||
|
|
a7f2fd051d | ||
|
|
c18e6c84af | ||
|
|
10eafcfdc3 | ||
|
|
033ff3c54f | ||
|
|
9645c8a2f3 | ||
|
|
4193f03d7a | ||
|
|
8a92ef9567 | ||
|
|
ed47431415 | ||
|
|
247cb41cc5 | ||
|
|
acf0ec75e7 | ||
|
|
83a8fbeeeb | ||
|
|
707e434d2c | ||
|
|
8a412a33c3 | ||
|
|
3eb8db123e | ||
|
|
dd9dc7bd7d | ||
|
|
c91d46bc68 | ||
|
|
8dd2ab87f9 | ||
|
|
b3ec85daf3 | ||
|
|
dc2b17c7af | ||
|
|
4c53669caa | ||
|
|
b5e73e09bf | ||
|
|
e62cb50ab1 | ||
|
|
cf9504bb30 | ||
|
|
36a007d2f7 | ||
|
|
f013359314 | ||
|
|
1fda560056 | ||
|
|
adc2d00552 | ||
|
|
95f4c372e3 | ||
|
|
4f39a86b0a | ||
|
|
09f1492486 | ||
|
|
163a1e2a66 | ||
|
|
f26e7ba5ff | ||
|
|
7d29e3d3dd | ||
|
|
a7bb73b158 | ||
|
|
dc371daf15 | ||
|
|
bb097294e2 | ||
|
|
cfab86c4b4 | ||
|
|
fb562dd9b8 | ||
|
|
0e63bf766e | ||
|
|
8ab966f83c | ||
|
|
86b3652471 | ||
|
|
c29acb8944 | ||
|
|
564a0ef69d | ||
|
|
781d1bc721 | ||
|
|
7cf9f8b6ec | ||
|
|
1405b078c0 | ||
|
|
95db024ab8 | ||
|
|
fe07945af7 | ||
|
|
a59b728aa6 | ||
|
|
f27cf293dd | ||
|
|
85c025f2c3 | ||
|
|
0295ba3666 | ||
|
|
485436aa67 | ||
|
|
0e0e6da677 | ||
|
|
781e96c073 | ||
|
|
fb610e1a80 | ||
|
|
13b7ece5e2 | ||
|
|
7446edba48 | ||
|
|
35eb60a27f | ||
|
|
0b1f21be31 | ||
|
|
b1e1e88af4 | ||
|
|
68d3ddb61a | ||
|
|
b6ac7d2818 | ||
|
|
da36aad520 | ||
|
|
d00f151a2e | ||
|
|
9c79c9a392 | ||
|
|
eb575519ed | ||
|
|
125bda1687 | ||
|
|
b5836d88bb | ||
|
|
8daef83846 | ||
|
|
883004b7b6 | ||
|
|
5a5e629e29 | ||
|
|
6daabaf054 | ||
|
|
f94d72f978 | ||
|
|
41abd109b6 | ||
|
|
91d2be631b | ||
|
|
56b87bb7c7 | ||
|
|
ab48e8976f | ||
|
|
fa5c3e465b | ||
|
|
474680e600 | ||
|
|
b19a3f6005 | ||
|
|
8e7065e714 | ||
|
|
2529234df9 | ||
|
|
5ad1caea68 | ||
|
|
ef1297be7d | ||
|
|
d6b59c45a6 | ||
|
|
59000d53d6 | ||
|
|
4e1d36ce60 | ||
|
|
bcb0710fde | ||
|
|
799124a58d | ||
|
|
c9a6fd2be4 | ||
|
|
9958a9cca9 | ||
|
|
6b012b7382 | ||
|
|
6921496a19 | ||
|
|
6ab6b76c8f | ||
|
|
8b9791b6b4 | ||
|
|
6f43566664 | ||
|
|
e7e02931ac |
8
.dockerignore
Normal file
8
.dockerignore
Normal file
@@ -0,0 +1,8 @@
|
||||
.ash_history
|
||||
.git
|
||||
.cpan
|
||||
.cpanm
|
||||
/files/
|
||||
/local/
|
||||
/lutim.conf
|
||||
/lutim.db
|
||||
1
.gitattributes
vendored
Normal file
1
.gitattributes
vendored
Normal file
@@ -0,0 +1 @@
|
||||
zanata.xml merge=ours
|
||||
12
.gitignore
vendored
12
.gitignore
vendored
@@ -7,11 +7,21 @@ script/hypnotoad.pid
|
||||
local/*
|
||||
files/*
|
||||
stop-upload
|
||||
tap.xml
|
||||
themes/*
|
||||
!themes/default
|
||||
!themes/default/*
|
||||
themes/default/templates/data.html.ep
|
||||
themes/default/templates/raw.html.ep
|
||||
themes/default/templates/stats.json.ep
|
||||
themes/default/public/packed/*
|
||||
themes/default/templates/partial/raw.js.ep
|
||||
!themes/korrigan
|
||||
!themes/korrigan/*
|
||||
tmp/*
|
||||
.zanata-cache/*
|
||||
cover_db/*
|
||||
*.passwd
|
||||
.ash_history
|
||||
.vscode/
|
||||
.DS_Store
|
||||
.cpanm/
|
||||
|
||||
257
.gitlab-ci.yml
257
.gitlab-ci.yml
@@ -1,121 +1,154 @@
|
||||
image: hatsoftwares/test-ci:latest
|
||||
image: hatsoftwares/lutim-test-ci:latest
|
||||
stages:
|
||||
- sqlite
|
||||
- postgresql
|
||||
- publish_changelog
|
||||
- pouet_it
|
||||
- podcheck
|
||||
- carton
|
||||
- carton_bdd
|
||||
- tests
|
||||
- cover
|
||||
before_script:
|
||||
- carton install
|
||||
- rm -f *db
|
||||
- rm -f *.db
|
||||
variables:
|
||||
POSTGRES_DB: lutim_db
|
||||
POSTGRES_USER: lutim
|
||||
POSTGRES_PASSWORD: lutim_pwd
|
||||
|
||||
### Jobs templates
|
||||
##
|
||||
#
|
||||
.retry: &retry
|
||||
retry: 2
|
||||
except:
|
||||
- tags
|
||||
|
||||
.carton_bdd_template: &carton_bdd_definition
|
||||
<<: *retry
|
||||
stage: carton_bdd
|
||||
artifacts:
|
||||
paths:
|
||||
- local/
|
||||
needs:
|
||||
- carton
|
||||
|
||||
.test_template: &test_definition
|
||||
<<: *retry
|
||||
stage: tests
|
||||
script:
|
||||
- MOJO_CONFIG=t/$CI_JOB_NAME.conf make test
|
||||
- MOJO_CONFIG=t/$CI_JOB_NAME.conf make watch
|
||||
- MOJO_CONFIG=t/$CI_JOB_NAME.conf make cleanbdd
|
||||
- MOJO_CONFIG=t/$CI_JOB_NAME.conf make cleanfiles
|
||||
- MOJO_CONFIG=t/$CI_JOB_NAME.conf make stats
|
||||
- MOJO_CONFIG=t/$CI_JOB_NAME.conf make test-junit-output
|
||||
artifacts:
|
||||
paths:
|
||||
- tap.xml
|
||||
- cover_db/
|
||||
|
||||
.sqlite_template: &sqlite_definition
|
||||
<<: *test_definition
|
||||
needs:
|
||||
- carton_sqlite
|
||||
|
||||
.pg_template: &pg_definition
|
||||
<<: *test_definition
|
||||
needs:
|
||||
- carton_postgresql
|
||||
services:
|
||||
- name: postgres:9.6
|
||||
alias: postgres
|
||||
|
||||
### Publish tag changelog and create a toot
|
||||
##
|
||||
#
|
||||
include:
|
||||
- 'https://framagit.org/fiat-tux/gitlabci-snippets/raw/4e4e03322e95e9b0124c714456ebf1bdc02ad43f/publish_changelog.gitlab-ci.yml'
|
||||
- 'https://framagit.org/fiat-tux/gitlabci-snippets/raw/4e4e03322e95e9b0124c714456ebf1bdc02ad43f/pouet-it-from-ci.gitlab-ci.yml'
|
||||
|
||||
### Podcheck
|
||||
##
|
||||
#
|
||||
podcheck:
|
||||
<<: *retry
|
||||
stage: podcheck
|
||||
script:
|
||||
- make podcheck
|
||||
|
||||
### Install common dependencies
|
||||
##
|
||||
#
|
||||
carton:
|
||||
<<: *retry
|
||||
stage: carton
|
||||
artifacts:
|
||||
paths:
|
||||
- local/
|
||||
dependencies: []
|
||||
script:
|
||||
- cpanm -l local Devel::Cover~1.29
|
||||
- carton install --deployment --without=sqlite --without=postgresql --without=minion --without=cache --without=memcached
|
||||
when: always
|
||||
|
||||
### Install DB related dependencies
|
||||
##
|
||||
#
|
||||
carton_sqlite:
|
||||
<<: *carton_bdd_definition
|
||||
script:
|
||||
- carton install --deployment --without=postgresql --without=minion --without=cache --without=memcached
|
||||
carton_postgresql:
|
||||
<<: *carton_bdd_definition
|
||||
script:
|
||||
- carton install --deployment --without=sqlite --without=minion --without=cache --without=memcached
|
||||
|
||||
### SQLite tests
|
||||
##
|
||||
#
|
||||
sqlite1:
|
||||
stage: sqlite
|
||||
cache:
|
||||
key: "$CI_BUILD_REF_NAME"
|
||||
untracked: true
|
||||
paths:
|
||||
- local
|
||||
script:
|
||||
- make podcheck
|
||||
- MOJO_CONFIG=t/sqlite1.conf make test-sqlite
|
||||
- MOJO_CONFIG=t/sqlite1.conf make watch
|
||||
- MOJO_CONFIG=t/sqlite1.conf make cleanbdd
|
||||
- MOJO_CONFIG=t/sqlite1.conf make cleanfiles
|
||||
- MOJO_CONFIG=t/sqlite1.conf make stats
|
||||
<<: *sqlite_definition
|
||||
before_script:
|
||||
- carton install --deployment --without=postgresql --without=minion --without=cache --without=memcached
|
||||
sqlite2:
|
||||
stage: sqlite
|
||||
cache:
|
||||
key: "$CI_BUILD_REF_NAME"
|
||||
untracked: true
|
||||
paths:
|
||||
- local
|
||||
script:
|
||||
- make podcheck
|
||||
- MOJO_CONFIG=t/sqlite2.conf make minion &
|
||||
- sleep 3
|
||||
- MOJO_CONFIG=t/sqlite2.conf make test-sqlite
|
||||
- MOJO_CONFIG=t/sqlite2.conf make watch
|
||||
- MOJO_CONFIG=t/sqlite2.conf make cleanbdd
|
||||
- MOJO_CONFIG=t/sqlite2.conf make cleanfiles
|
||||
- MOJO_CONFIG=t/sqlite2.conf make stats
|
||||
<<: *sqlite_definition
|
||||
before_script:
|
||||
- carton install --deployment --without=postgresql --without=cache --without=memcached
|
||||
sqlite3:
|
||||
stage: sqlite
|
||||
cache:
|
||||
key: "$CI_BUILD_REF_NAME"
|
||||
untracked: true
|
||||
paths:
|
||||
- local
|
||||
script:
|
||||
- make podcheck
|
||||
- service postgresql restart
|
||||
- sleep 10
|
||||
- service postgresql status
|
||||
- make create-pg-test-db
|
||||
- MOJO_CONFIG=t/sqlite3.conf make minion &
|
||||
- sleep 3
|
||||
- MOJO_CONFIG=t/sqlite3.conf make test-sqlite
|
||||
- MOJO_CONFIG=t/sqlite3.conf make watch
|
||||
- MOJO_CONFIG=t/sqlite3.conf make cleanbdd
|
||||
- MOJO_CONFIG=t/sqlite3.conf make cleanfiles
|
||||
- MOJO_CONFIG=t/sqlite3.conf make stats
|
||||
tags:
|
||||
- Debian
|
||||
- Jessie
|
||||
<<: *sqlite_definition
|
||||
services:
|
||||
- name: postgres:9.6
|
||||
alias: postgres
|
||||
before_script:
|
||||
- carton install --deployment --without=cache --without=memcached
|
||||
- export PGPASSWORD=lutim_pwd; echo 'CREATE DATABASE lutim_minion WITH OWNER lutim;' | psql -h postgres -U lutim lutim_db
|
||||
|
||||
### PostgreSQL tests
|
||||
##
|
||||
#
|
||||
postgresql1:
|
||||
stage: postgresql
|
||||
cache:
|
||||
key: "$CI_BUILD_REF_NAME"
|
||||
untracked: true
|
||||
paths:
|
||||
- local
|
||||
script:
|
||||
- make podcheck
|
||||
- service postgresql restart
|
||||
- sleep 10
|
||||
- service postgresql status
|
||||
- make create-pg-test-db
|
||||
- MOJO_CONFIG=t/postgresql1.conf make test-pg
|
||||
- MOJO_CONFIG=t/postgresql1.conf make watch
|
||||
- MOJO_CONFIG=t/postgresql1.conf make cleanbdd
|
||||
- MOJO_CONFIG=t/postgresql1.conf make cleanfiles
|
||||
- MOJO_CONFIG=t/postgresql1.conf make stats
|
||||
<<: *pg_definition
|
||||
before_script:
|
||||
- carton install --deployment --without=sqlite --without=minion --without=cache --without=memcached
|
||||
postgresql2:
|
||||
stage: postgresql
|
||||
cache:
|
||||
key: "$CI_BUILD_REF_NAME"
|
||||
untracked: true
|
||||
paths:
|
||||
- local
|
||||
script:
|
||||
- make podcheck
|
||||
- service postgresql restart
|
||||
- sleep 10
|
||||
- service postgresql status
|
||||
- make create-pg-test-db
|
||||
- MOJO_CONFIG=t/postgresql2.conf make minion &
|
||||
- sleep 3
|
||||
- MOJO_CONFIG=t/postgresql2.conf make test-pg
|
||||
- MOJO_CONFIG=t/postgresql2.conf make watch
|
||||
- MOJO_CONFIG=t/postgresql2.conf make cleanbdd
|
||||
- MOJO_CONFIG=t/postgresql2.conf make cleanfiles
|
||||
- MOJO_CONFIG=t/postgresql2.conf make stats
|
||||
<<: *pg_definition
|
||||
before_script:
|
||||
- carton install --deployment --without=cache --without=memcached
|
||||
postgresql3:
|
||||
stage: postgresql
|
||||
cache:
|
||||
key: "$CI_BUILD_REF_NAME"
|
||||
untracked: true
|
||||
paths:
|
||||
- local
|
||||
<<: *pg_definition
|
||||
before_script:
|
||||
- carton install --deployment --without=sqlite --without=cache --without=memcached
|
||||
- export PGPASSWORD=lutim_pwd; echo 'CREATE DATABASE lutim_minion WITH OWNER lutim;' | psql -h postgres -U lutim lutim_db
|
||||
|
||||
### Code coverage
|
||||
##
|
||||
#
|
||||
cover:
|
||||
stage: cover
|
||||
script:
|
||||
- make podcheck
|
||||
- service postgresql restart
|
||||
- sleep 10
|
||||
- service postgresql status
|
||||
- make create-pg-test-db
|
||||
- MOJO_CONFIG=t/postgresql3.conf make minion &
|
||||
- sleep 3
|
||||
- MOJO_CONFIG=t/postgresql3.conf make test-pg
|
||||
- MOJO_CONFIG=t/postgresql3.conf make watch
|
||||
- MOJO_CONFIG=t/postgresql3.conf make cleanbdd
|
||||
- MOJO_CONFIG=t/postgresql3.conf make cleanfiles
|
||||
- MOJO_CONFIG=t/postgresql3.conf make stats
|
||||
tags:
|
||||
- Debian
|
||||
- Jessie
|
||||
- make cover
|
||||
coverage: '/Total.* (\d+\.\d+)$/'
|
||||
artifacts:
|
||||
reports:
|
||||
junit: tap.xml
|
||||
except:
|
||||
- tags
|
||||
|
||||
7
.provision/README.md
Normal file
7
.provision/README.md
Normal file
@@ -0,0 +1,7 @@
|
||||
## ansible-role-lutim
|
||||
|
||||
An ansible role deploy the application on host machine(Ubuntu 20.04)
|
||||
|
||||
## terraform-aws-lutim
|
||||
|
||||
A terraform plan creates necessary AWS infrastructure and deploy the lutim. This terraform plan uses the `lutim_startup.sh` script to deploy lufi on AWS and also uses above ansible role `ansible-role-lutim` to configure the application on AWS.
|
||||
50
.provision/ansible-role-lutim/README.md
Normal file
50
.provision/ansible-role-lutim/README.md
Normal file
@@ -0,0 +1,50 @@
|
||||
Ansible-Role-lutim
|
||||
=========
|
||||
This role installs the and configures lutim on Debian/Ubuntu servers with nginx web server configuration.
|
||||
|
||||
Role Variables
|
||||
--------------
|
||||
| Variable name | Value | Description |
|
||||
| ------------- | ----- | ----------- |
|
||||
| `app_dir` | /var/www/lutim | Set the application directory for the best practice |
|
||||
| `lutim_owner` | www-data | Set the application user for the best practice |
|
||||
| `lutim_group` | www-data | Set the application group for the best practice |
|
||||
| `_contact` | contact.example.com | Contact option (mandatory), where you have to put some way for the users to contact you. |
|
||||
| `_secrets` | ffyg7kbkjba | Secrets option (mandotory), which is array of random string. Used by Mojolicious for encrypting session cookies |
|
||||
| `_project_version` | master | We can chose the project version either Master branch, Dev branch or tag based |
|
||||
| `_server_name` | IP address (or) CNAME/FQDN | Mention the Server Name for the Nginx configurations |
|
||||
|
||||
Sample example of use in a playbook
|
||||
--------------
|
||||
|
||||
The following code has been tested with Ubuntu 20.04
|
||||
|
||||
```yaml
|
||||
|
||||
- name: "install lutim"
|
||||
hosts: enter your hosts file
|
||||
become: yes
|
||||
role:
|
||||
- ansible-role-lutim
|
||||
vars:
|
||||
lutim_owner: "www-data"
|
||||
lutim_group: "www-data"
|
||||
contact: "contact.example.com"
|
||||
secrets: "yigavlvlivwe"
|
||||
app_dir: "/var/www/lutim"
|
||||
project_version: "master"
|
||||
servername: "IP address (or) CNAME/FQDN"
|
||||
```
|
||||
|
||||
Contributing
|
||||
------------
|
||||
Don’t hesitate to create a pull request
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
6
.provision/ansible-role-lutim/files/cronjob
Normal file
6
.provision/ansible-role-lutim/files/cronjob
Normal file
@@ -0,0 +1,6 @@
|
||||
#Path of the script
|
||||
PATH=/var/www/lutim
|
||||
|
||||
carton exec script/lutim cron cleanbdd --mode production
|
||||
carton exec script/lutim cron cleanfiles --mode production
|
||||
carton exec script/lutim cron watch --mode production
|
||||
5
.provision/ansible-role-lutim/handlers/main.yml
Normal file
5
.provision/ansible-role-lutim/handlers/main.yml
Normal file
@@ -0,0 +1,5 @@
|
||||
---
|
||||
# handlers file for ansible-role-lutim
|
||||
|
||||
- name: restart nginx
|
||||
service: name=nginx state=restarted
|
||||
23
.provision/ansible-role-lutim/tasks/apprun.yaml
Normal file
23
.provision/ansible-role-lutim/tasks/apprun.yaml
Normal file
@@ -0,0 +1,23 @@
|
||||
#apprun.yml
|
||||
---
|
||||
- name: This command will install the postgress module
|
||||
ansible.builtin.shell:
|
||||
cmd: carton install --deployment --without=test --without=sqlite
|
||||
chdir: "{{ app_dir }}"
|
||||
|
||||
- name: Upload application config file
|
||||
ansible.builtin.template:
|
||||
src: ../templates/lutim.conf.j2
|
||||
dest: "{{ app_dir }}/lutim.conf"
|
||||
|
||||
- name: App executes
|
||||
ansible.builtin.shell:
|
||||
cmd: carton exec hypnotoad script/lutim
|
||||
chdir: "{{ app_dir }}"
|
||||
|
||||
- name: Nginx configuration file add
|
||||
ansible.builtin.template:
|
||||
src: ../templates/app.conf
|
||||
dest: /etc/nginx/conf.d/
|
||||
mode: '0644'
|
||||
notify: restart nginx
|
||||
21
.provision/ansible-role-lutim/tasks/cronjob.yaml
Normal file
21
.provision/ansible-role-lutim/tasks/cronjob.yaml
Normal file
@@ -0,0 +1,21 @@
|
||||
---
|
||||
- name: Copy the cronjob file
|
||||
ansible.builtin.copy:
|
||||
src: ../files/cronjob
|
||||
dest: /etc/cron.d/lutim
|
||||
owner: www-data
|
||||
group: www-data
|
||||
|
||||
- name: "example cronjob"
|
||||
ansible.builtin.cron:
|
||||
name: "cronjob"
|
||||
state: present
|
||||
user: www-data
|
||||
minute: "0"
|
||||
hour: "0"
|
||||
day: "*"
|
||||
month: "*"
|
||||
weekday: "*"
|
||||
job: |
|
||||
carton exec script/lutim cron cleanbdd --mode production; carton exec script/lutim cron cleanfiles --mode production; carton exec script/lutim cron watch --mode production
|
||||
|
||||
23
.provision/ansible-role-lutim/tasks/dependencies.yaml
Normal file
23
.provision/ansible-role-lutim/tasks/dependencies.yaml
Normal file
@@ -0,0 +1,23 @@
|
||||
# dependencies.yaml
|
||||
---
|
||||
- name: Lutim | Update apt cache
|
||||
ansible.builtin.apt: update_cache=yes
|
||||
changed_when: no
|
||||
- name: Install Dependencies
|
||||
ansible.builtin.apt:
|
||||
name:
|
||||
- nginx
|
||||
- carton
|
||||
- build-essential
|
||||
- libssl-dev
|
||||
- libpq-dev
|
||||
- libio-socket-ssl-perl
|
||||
- zlib1g-dev
|
||||
- libmojo-sqlite-perl
|
||||
- shared-mime-info
|
||||
- perlmagick
|
||||
state: present
|
||||
|
||||
|
||||
|
||||
|
||||
18
.provision/ansible-role-lutim/tasks/gitclone.yaml
Normal file
18
.provision/ansible-role-lutim/tasks/gitclone.yaml
Normal file
@@ -0,0 +1,18 @@
|
||||
#gitclone
|
||||
---
|
||||
|
||||
- name: clone the repository
|
||||
ansible.builtin.git:
|
||||
repo: 'https://framagit.org/fiat-tux/hat-softwares/lutim.git'
|
||||
dest: "{{ app_dir }}"
|
||||
clone: yes
|
||||
update: yes
|
||||
version: "{{ project_version }}"
|
||||
|
||||
- name: Change the owner
|
||||
ansible.builtin.file:
|
||||
path: "{{ app_dir }}"
|
||||
owner: "{{ lutim_owner }}"
|
||||
group: "{{ lutim_group }}"
|
||||
state: directory
|
||||
recurse: yes
|
||||
7
.provision/ansible-role-lutim/tasks/main.yml
Normal file
7
.provision/ansible-role-lutim/tasks/main.yml
Normal file
@@ -0,0 +1,7 @@
|
||||
---
|
||||
# tasks file for ansible-role-lutim
|
||||
|
||||
- include: dependencies.yaml
|
||||
- include: gitclone.yaml
|
||||
- include: apprun.yaml
|
||||
- include: cronjob.yaml
|
||||
43
.provision/ansible-role-lutim/templates/app.conf
Normal file
43
.provision/ansible-role-lutim/templates/app.conf
Normal file
@@ -0,0 +1,43 @@
|
||||
server {
|
||||
listen 80;
|
||||
# No need to have a `root` parameter.
|
||||
server_name {{ _server_name }};
|
||||
# This is important for user's privacy !
|
||||
access_log off;
|
||||
error_log /var/log/nginx/lutim.error.log;
|
||||
# This is important ! Make it OK with your Lutim configuration
|
||||
client_max_body_size 40M;
|
||||
|
||||
location ~* ^/(img|css|font|js)/ {
|
||||
try_files $uri @lutim;
|
||||
add_header Expires "Thu, 31 Dec 2037 23:55:55 GMT";
|
||||
add_header Cache-Control "public, max-age=315360000";
|
||||
|
||||
# HTTPS only header, improves security
|
||||
#add_header Strict-Transport-Security "max-age=15768000";
|
||||
}
|
||||
|
||||
location / {
|
||||
try_files $uri @lutim;
|
||||
|
||||
# HTTPS only header, improves security
|
||||
#add_header Strict-Transport-Security "max-age=15768000";
|
||||
}
|
||||
|
||||
location @lutim {
|
||||
# Adapt this to your configuration
|
||||
proxy_pass http://127.0.0.1:8080;
|
||||
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
|
||||
# If you want to log the remote port of the image senders, you'll need that
|
||||
proxy_set_header X-Remote-Port $remote_port;
|
||||
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
|
||||
# We expect the downsteam servers to redirect to the right hostname, so don't do any rewrites here.
|
||||
proxy_redirect off;
|
||||
}
|
||||
}
|
||||
317
.provision/ansible-role-lutim/templates/lutim.conf.j2
Normal file
317
.provision/ansible-role-lutim/templates/lutim.conf.j2
Normal file
@@ -0,0 +1,317 @@
|
||||
# vim:set sw=4 ts=4 sts=4 ft=perl expandtab:
|
||||
{
|
||||
####################
|
||||
# Hypnotoad settings
|
||||
####################
|
||||
# see http://mojolicio.us/perldoc/Mojo/Server/Hypnotoad for a full list of settings
|
||||
hypnotoad => {
|
||||
# array of IP addresses and ports you want to listen to
|
||||
listen => ['http://127.0.0.1:8080'],
|
||||
# if you use Lutim behind a reverse proxy like Nginx, you want to set proxy to 1
|
||||
# if you use Lutim directly, let it commented
|
||||
#proxy => 1,
|
||||
},
|
||||
|
||||
################
|
||||
# Lutim settings
|
||||
################
|
||||
|
||||
# put a way to contact you here and uncomment it
|
||||
# mandatory
|
||||
contact => '{{ _contact }}',
|
||||
|
||||
# random string used to encrypt cookies
|
||||
# mandatory
|
||||
secrets => ['{{ _secrets }}'],
|
||||
|
||||
# choose a theme. See the available themes in `themes` directory
|
||||
# optional, default is 'default'
|
||||
#theme => 'default',
|
||||
|
||||
# length of the images random URL
|
||||
# optional, default is 8
|
||||
#length => 8,
|
||||
|
||||
# length of the encryption key
|
||||
# optional, default is 8
|
||||
#crypto_key_length => 8,
|
||||
|
||||
# how many URLs will be provisioned in a batch ?
|
||||
# optional, default is 5
|
||||
#provis_step => 5,
|
||||
|
||||
# max number of URLs to be provisioned
|
||||
# optional, default is 100
|
||||
#provisioning => 100,
|
||||
|
||||
# anti-flood protection delay, in seconds
|
||||
# users won't be able to ask Lutim to download images more than one per anti_flood_delay seconds
|
||||
# optional, default is 5
|
||||
#anti_flood_delay => 5,
|
||||
|
||||
# twitter account which will appear on twitter cards
|
||||
# see https://dev.twitter.com/docs/cards/validation/validator to register your Lutim instance on twitter
|
||||
# optional, no default
|
||||
#tweet_card_via => '@foo',
|
||||
|
||||
# max image size, in octets
|
||||
# you can write it 10*1024*1024
|
||||
# optional, default is 10485760
|
||||
#max_file_size => 10485760,
|
||||
|
||||
# if you want to have piwik statistics, provide a piwik image tracker
|
||||
# only the image tracker is allowed, no javascript
|
||||
# optional, no default
|
||||
#piwik_img => 'https://piwik.example.org/piwik.php?idsite=1&rec=1',
|
||||
|
||||
# if you want to include something in the right of the screen, put it here
|
||||
# here's an example to put the logo of your hoster
|
||||
# optional, no default
|
||||
#hosted_by => 'My super hoster <img src="http://hoster.example.com" alt="Hoster logo">',
|
||||
|
||||
# DEPRECATED DEPRECATED DEPRECATED DEPRECATED DEPRECATED DEPRECATED DEPRECATED DEPRECATED DEPRECATED DEPRECATED
|
||||
# Lutim now checks if the X-Forwarded-Proto header is present and equal to https.
|
||||
# set to 1 if you use Lutim behind a secure web server
|
||||
# optional, default is 0
|
||||
#https => 0,
|
||||
|
||||
# broadcast_message which will displayed on all pages of Lutim (but no in json response)
|
||||
# optional, no default
|
||||
#broadcast_message => 'Maintenance',
|
||||
|
||||
# array of authorized domains for API calls.
|
||||
# if you want to authorize everyone to use the API: ['*']
|
||||
# optional, no domains allowed by default
|
||||
#allowed_domains => ['http://1.example.com', 'http://2.example.com'],
|
||||
|
||||
# default time limit for files
|
||||
# valid values are 0, 1, 7, 30 and 365
|
||||
# optional, default is 0 (no limit)
|
||||
#default_delay => 0,
|
||||
|
||||
# comma-separated values proposed for delays
|
||||
# optional, default is '0,1,7,30,365'
|
||||
#proposed_delays => '0,1,7,30,365',
|
||||
|
||||
# number of days after which the images will be deleted, even if they were uploaded with "no delay" (or value superior to max_delay)
|
||||
# a warning message will be displayed on homepage
|
||||
# optional, default is 0 (no limit)
|
||||
#max_delay => 0,
|
||||
|
||||
# if set to 1, all the images will be encrypted and the encryption option will no be displayed
|
||||
# optional, default is 0
|
||||
#always_encrypt => 0,
|
||||
|
||||
# you can allow to use a watermark on the uploaded images (or enforce its use)
|
||||
# define a path to the watermark image (provide an image with alpha channel)
|
||||
# you can define the path relative to lutim directory or set an absolute path
|
||||
# to disable the usage of a watermark, leave it blank or commented
|
||||
# optional, no default
|
||||
#watermark_path => '',
|
||||
|
||||
# the watermark can be a tiling one or a single one
|
||||
# when using a small one, you can choose where to place it
|
||||
# valid values are 'Center', 'North', 'NorthEast', 'East', 'SouthEast', 'South', 'SouthWest', 'West' and 'NorthWest' (case insensitive)
|
||||
# optional, default is 'SouthEast'
|
||||
#watermark_placement => 'SouthEast',
|
||||
|
||||
# choose which watermark (tiling, single or none) should be used by default
|
||||
# valid values are 'tiling', 'single' or 'none' (case insensitive)
|
||||
# optional, default is 'none'
|
||||
#watermark_default => 'none',
|
||||
|
||||
# choose which watermark (tiling, single or none) should be enforced (users will always have a watermark and won’t be able to disable it)
|
||||
# valid values are 'tiling', 'single' or 'none' (case insensitive)
|
||||
# optional, default is 'none'
|
||||
#watermark_enforce => 'none',
|
||||
|
||||
# length of the image's delete token
|
||||
# optional, default is 24
|
||||
#token_length => 24,
|
||||
|
||||
# URL sub-directory in which you want Lutim to be accessible
|
||||
# example: you want to have Lutim under https://example.org/lutim/
|
||||
# => set prefix to '/lutim' or to '/lutim/', it doesn't matter
|
||||
# optional, defaut is /
|
||||
#prefix => '/',
|
||||
|
||||
# choose what database you want to use
|
||||
# valid choices are sqlite and postgresql (all lowercase)
|
||||
# optional, default is sqlite
|
||||
#dbtype => 'sqlite',
|
||||
|
||||
# SQLite ONLY - only used if dbtype is set to sqlite
|
||||
# define a path to the SQLite database
|
||||
# you can define it relative to lutim directory or set an absolute path
|
||||
# remember that it has to be in a directory writable by Lutim user
|
||||
# optional, default is lutim.db
|
||||
#db_path => 'lutim.db',
|
||||
|
||||
# PostgreSQL ONLY - only used if dbtype is set to postgresql
|
||||
# these are the credentials to access the PostgreSQL database
|
||||
# mandatory if you choosed postgresql as dbtype
|
||||
pgdb => {
|
||||
database => 'lutim',
|
||||
host => 'localhost',
|
||||
user => 'DBUSER',
|
||||
pwd => 'DBPASSWORD'
|
||||
},
|
||||
|
||||
# use Minion instead of directly increase counters
|
||||
# need to launch a minion worker service if enabled
|
||||
# optional, Minion is disabled by default
|
||||
minion => {
|
||||
enabled => 0,
|
||||
# # Which Minion backend to use?
|
||||
# # valid values are sqlite and postgresql (all lowercase)
|
||||
# # mandatory if Minion is enabled, default is sqlite
|
||||
# dbtype => 'sqlite',
|
||||
# # SQLite ONLY - only used if if you choose sqlite as Minion backend, define the path to the minion database
|
||||
# # you can define it relative to lutim directory or set an absolute path
|
||||
# # remember that it has to be in a directory writable by Lutim user
|
||||
# # optional, default is minion.db
|
||||
db_path => 'minion.db',
|
||||
# # PostgreSQL ONLY - only used if you choose postgresql as Minion backend
|
||||
# # these are the credentials to access the Minion's PostgreSQL database
|
||||
# # mandatory if you choosed postgresql as Minion backend, no default
|
||||
pgdb => {
|
||||
database => 'lutim_minion',
|
||||
host => 'localhost',
|
||||
user => 'DBUSER',
|
||||
pwd => 'DBPASSWORD'
|
||||
}
|
||||
},
|
||||
|
||||
# set `ldap` if you want that only authenticated users can shorten URLs
|
||||
# please note that everybody can still use shortend URLs
|
||||
# optional, no default
|
||||
#ldap => {
|
||||
# uri => 'ldaps://ldap.example.org', # server URI
|
||||
# user_tree => 'ou=users,dc=example,dc=org', # search base DN
|
||||
# bind_dn => 'uid=ldap_user,ou=users,dc=example,dc=org', # search bind DN
|
||||
# bind_pwd => 'secr3t', # search bind password
|
||||
# user_attr => 'uid', # user attribute (uid, mail, sAMAccountName, etc.)
|
||||
# user_filter => '(!(uid=ldap_user))', # user filter (to exclude some users, etc.)
|
||||
#},
|
||||
|
||||
# set `htpasswd` if you want to use an htpasswd file instead of ldap
|
||||
# create the file with `htpasswd -c lutim.passwd user`, update it with `htpasswd lutim.passwd user2`
|
||||
# make sure that lutim can read the file!
|
||||
# optional, no default
|
||||
#htpasswd => 'lutim.passwd',
|
||||
|
||||
# if you've set ldap or htpasswd above, the session will last `session_duration` seconds before
|
||||
# the user needs to reauthenticate
|
||||
# optional, default is 3600
|
||||
#session_duration => 3600,
|
||||
|
||||
# disable counters of images
|
||||
# set to 1 to disable counters
|
||||
# optional, counters are enabled by default
|
||||
#disable_img_stats => 0,
|
||||
|
||||
# define the height of the thumbnails generated at users' will
|
||||
# this is not the height of the thumbnails send after upload,
|
||||
# we're talking about thumbnails generated when someone asked for
|
||||
# https://example.org/lutim/tesrinp?thumb
|
||||
# this works only if you have ImageMagick
|
||||
# optional, default is 100 (pixels)
|
||||
#thumbnail_size => 100,
|
||||
|
||||
# maximum number of files that can be downloaded as a single zip archive
|
||||
# if too many files are asked, it results a timeout, so Lutim split the zip URL
|
||||
# in multiple URLs, each with max_file_size images.
|
||||
# timeout behavior depends heavily on your server ressources (CPU) and if images
|
||||
# are encrypted
|
||||
# optional, default is 15
|
||||
#max_files_in_zip => 15,
|
||||
|
||||
# maximum size (in MB) of memory allowed for the image cache
|
||||
# Lutim has a built-in memory-based image cache to accelerate responses to often-viewed images.
|
||||
# This setting makes the cache remove oldest viewed image if the cache size is over it.
|
||||
# WARNING: a cache is created for each hypnotoad worker, which by default is twice the number of
|
||||
# CPUs you have. See http://mojolicious.org/perldoc/Mojo/Server/Hypnotoad#workers for details
|
||||
# So, if you have 4 workers and set cache_max_size to 100, the real maximum size of RAM used for
|
||||
# cache is 400MB.
|
||||
# If set to 0, the cache is disabled
|
||||
# optional, default is 0
|
||||
#cache_max_size => 0,
|
||||
|
||||
# array of memcached servers to cache URL in order to accelerate responses to often-viewed URL.
|
||||
# If set to [], the use of memcached is disabled.
|
||||
# If you use memcached, the internal cache (see cache_max_size option above) will not be used.
|
||||
# Please see https://framagit.org/luc/lutim/wikis/memcached to know how to configure your memcached
|
||||
# servers.
|
||||
# exemple of valid value: ['127.0.0.1:11211']
|
||||
# optional, default is []
|
||||
#memcached_servers => [],
|
||||
|
||||
# enable or disable Lutim built-in logs
|
||||
# set to 1 to disable logs
|
||||
# optional, default is 0
|
||||
#quiet_logs => 0,
|
||||
|
||||
# Content-Security-Policy header that will be sent by Lstu
|
||||
# Set to '' to disable CSP header
|
||||
# https://content-security-policy.com/ provides a good documentation about CSP.
|
||||
# https://report-uri.com/home/generate provides a tool to generate a CSP header.
|
||||
# optional, default is "base-uri 'self'; connect-src 'self'; default-src 'none'; font-src 'self'; form-action 'self'; img-src 'self' data:; script-src 'self' 'unsafe-eval'; style-src 'self' 'unsafe-inline'"
|
||||
# NB: unsafe-inline for script-src and style-src are here only because morris,
|
||||
# the graph library used in the stats page requires it
|
||||
# the default value is good for `default` theme
|
||||
#csp => "base-uri 'self'; connect-src 'self'; default-src 'none'; font-src 'self'; form-action 'self'; img-src 'self' data:; script-src 'self' 'unsafe-eval'; style-src 'self' 'unsafe-inline'",
|
||||
|
||||
# X-Frame-Options header that will be sent by Lstu
|
||||
# Valid values are: 'DENY', 'SAMEORIGIN', 'ALLOW-FROM https://example.com/'
|
||||
# Set to '' to disable X-Frame-Options header
|
||||
# See https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options
|
||||
# Please note that this will add a "frame-ancestors" directive to the CSP header (see above) accordingly
|
||||
# to the chosen setting (See https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/frame-ancestors)
|
||||
# optional, default is 'DENY'
|
||||
#x_frame_options => 'DENY',
|
||||
|
||||
# X-Content-Type-Options that will be sent by Lstu
|
||||
# See https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Content-Type-Options
|
||||
# Set to '' to disable X-Content-Type-Options header
|
||||
# optional, default is 'nosniff'
|
||||
#x_content_type_options => 'nosniff',
|
||||
|
||||
# X-XSS-Protection that will be sent by Lstu
|
||||
# See https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-XSS-Protection
|
||||
# Set to '' to disable X-XSS-Protection header
|
||||
# optional, default is '1; mode=block'
|
||||
#x_xss_protection => '1; mode=block',
|
||||
|
||||
# if set, the uploaded images will use this domain
|
||||
# optional
|
||||
#fixed_domain => 'example.org',
|
||||
|
||||
##########################
|
||||
# Lutim cron jobs settings
|
||||
##########################
|
||||
|
||||
# number of days shown in /stats page (used with script/lutim cron stats)
|
||||
# optional, default is 365
|
||||
stats_day_num => 365,
|
||||
|
||||
# number of days senders' IP addresses are kept in database
|
||||
# after that delay, they will be deleted from database (used with script/lutim cron cleanbdd)
|
||||
# optional, default is 365
|
||||
keep_ip_during => 365,
|
||||
|
||||
# max size of the files directory, in octets
|
||||
# used by script/lutim cron watch to trigger an action
|
||||
# optional, no default
|
||||
max_total_size => 10*1024*1024*1024,
|
||||
|
||||
# default action when files directory is over max_total_size (used with script/lutim cron watch)
|
||||
# valid values are 'warn', 'stop-upload' and 'delete'
|
||||
# please, see readme
|
||||
# optional, default is 'warn'
|
||||
#policy_when_full => 'warn',
|
||||
|
||||
# images which are not viewed since delete_no_longer_viewed_files days will be deleted by the cron cleanfiles task
|
||||
# if delete_no_longer_viewed_files is not set, the no longer viewed files will NOT be deleted
|
||||
# optional, no default
|
||||
delete_no_longer_viewed_files => 90
|
||||
};
|
||||
16
.provision/ansible-role-lutim/vars/main.yml
Normal file
16
.provision/ansible-role-lutim/vars/main.yml
Normal file
@@ -0,0 +1,16 @@
|
||||
---
|
||||
# vars file for ansible-role-lutim
|
||||
|
||||
lutim_owner: "www-data"
|
||||
|
||||
lutim_group: "www-data"
|
||||
|
||||
app_dir: "/var/www/lutim"
|
||||
|
||||
_contact: ""
|
||||
|
||||
_secrets: ""
|
||||
|
||||
_project_version: ""
|
||||
|
||||
_servername: ""
|
||||
92
.provision/terraform-aws-lutim/README.md
Normal file
92
.provision/terraform-aws-lutim/README.md
Normal file
@@ -0,0 +1,92 @@
|
||||
# Terraform-AWS-Deploy
|
||||
|
||||
This terraform plan create the resourcess of EC2 instance
|
||||
|
||||
## Terraform Variables
|
||||
Edit the `vars.tf` file to add the variables as per your need.
|
||||
|
||||
| Variable name | Value | Description |
|
||||
| ------------- | ----- | ----------- |
|
||||
| `aws_region` | us-east-1 | Set the region |
|
||||
| `vpc_cidr` | 10.0.0.0/16 | Set the cidr value for the vpc |
|
||||
| `public_subnet_cidr` | 10.0.2.0/24 | Set the cidr value for the public subnet |
|
||||
| `user` | ubuntu | Set the EC2 instance user name |
|
||||
| `public_key` | /home/user_name/.ssh/id_rsa_pub | Set the publickey value for the ec2 instance from the host machine |
|
||||
| `private_key` | /home/user_name/.ssh/id_rsa | Set the private key value for the ec2 instance from the hostmachine |
|
||||
| `aws_access_key` | AWSACCESSKEY | Enter your aws access key |
|
||||
| `aws_secrete_key` | AWSSECRETEKEY | Enter your aws secrete key |
|
||||
| `instance_name` | lutim_app_instance | Set the name for instance |
|
||||
| `app_dir` | /var/www/lutim | Set the application directory for the best practice |
|
||||
| `lutim_owner` | www-data | Set the application user for the best practice |
|
||||
| `lutim_group` | www-data | Set the application group for the best practice |
|
||||
| `contact` | contact.example.com | Contact option (mandatory), where you have to put some way for the users to contact you. |
|
||||
| `contact_user` | name | Name of the user |
|
||||
| `secrets` | ffyg7kbkjba | Secrets option (mandotory), which is array of random string. Used by Mojolicious for encrypting session cookies |
|
||||
| `app_dir` | /var/www/lutim | Set the application directory for the best practice |
|
||||
| `lutim_owner` | www-data | Set the application user for the best practice |
|
||||
| `lutim_group` | www-data | Set the application group for the best practice |
|
||||
| `contact` | contact.example.com | Contact option (mandatory), where you have to put some way for the users to contact you. |
|
||||
| `contact_user` | name | Name of the user |
|
||||
| `secrets` | ffyg7kbkjba | Secrets option (mandotory), which is array of random string. Used by Mojolicious for encrypting session cookies |
|
||||
|
||||
## Usage of terraform plan with lufi deploy script
|
||||
|
||||
```sh
|
||||
git clone https://framagit.org/fiat-tux/hat-softwares/lutim.git
|
||||
|
||||
cd lutim/.provision/terraform-aws-lutim
|
||||
|
||||
terraform init
|
||||
terraform plan
|
||||
terraform apply
|
||||
```
|
||||
## Usage of terraform plan with ansible role
|
||||
|
||||
- Comment out the below `locals` and `user_data` source in __main.tf__ file
|
||||
|
||||
```hcl
|
||||
locals {
|
||||
user_data_vars = {
|
||||
user = var.lutim_owner
|
||||
group = var.lutim_group
|
||||
directory = var.app_dir
|
||||
contact_user = var.contact_user
|
||||
contact_lutim = var.contact
|
||||
secret_lutim = var.secret
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
```hcl
|
||||
user_data = templatefile("${path.module}/lutim_startup.sh", local.user_data_vars)
|
||||
```
|
||||
|
||||
- Add the below provisioner data in __main.tf__ file at the `aws_instance` resource
|
||||
|
||||
```sh
|
||||
connection {
|
||||
agent = false
|
||||
type = "ssh"
|
||||
host = aws_instance.ec2_instance.public_dns
|
||||
private_key = "${file(var.private_key)}"
|
||||
user = "${var.user}"
|
||||
}
|
||||
|
||||
provisioner "remote-exec" {
|
||||
inline = [
|
||||
"sudo apt update -y",
|
||||
"sudo apt install python3.9 -y",
|
||||
]
|
||||
}
|
||||
|
||||
provisioner "local-exec" {
|
||||
command = <<EOT
|
||||
sleep 120 && \
|
||||
> hosts && \
|
||||
echo "[Lutim]" | tee -a hosts && \
|
||||
echo "${aws_instance.ec2_instance.public_ip} ansible_user=${var.user} ansible_ssh_private_key_file=${var.private_key}" | tee -a hosts && \
|
||||
export ANSIBLE_HOST_KEY_CHECKING=False && \
|
||||
ansible-playbook -u ${var.user} --private-key ${var.private_key} -i hosts site.yml
|
||||
EOT
|
||||
}
|
||||
```
|
||||
66
.provision/terraform-aws-lutim/lutim_startup.sh
Normal file
66
.provision/terraform-aws-lutim/lutim_startup.sh
Normal file
@@ -0,0 +1,66 @@
|
||||
#!/bin/bash
|
||||
|
||||
echo "**********************************************************************"
|
||||
echo " *"
|
||||
echo "Install dependencies *"
|
||||
echo " *"
|
||||
echo "**********************************************************************"
|
||||
|
||||
SUDO=sudo
|
||||
$SUDO apt update
|
||||
$SUDO apt install jq -y
|
||||
$SUDO apt install wget -y
|
||||
$SUDO apt install unzip
|
||||
$SUDO apt install carton -y
|
||||
$SUDO apt install build-essential -y
|
||||
$SUDO apt install nginx -y
|
||||
$SUDO apt install libssl-dev -y
|
||||
$SUDO apt install libio-socket-ssl-perl -y
|
||||
$SUDO apt install liblwp-protocol-https-perl -y
|
||||
$SUDO apt install zlib1g-dev -y
|
||||
$SUDO apt install libmojo-sqlite-perl -y
|
||||
$SUDO apt install libpq-dev -y
|
||||
|
||||
echo "**********************************************************************"
|
||||
echo " *"
|
||||
echo "Configuring the Application *"
|
||||
echo " *"
|
||||
echo "**********************************************************************"
|
||||
|
||||
sleep 10;
|
||||
version=$(curl -s https://framagit.org/api/v4/projects/1/releases | jq '.[]' | jq -r '.name' | head -1)
|
||||
echo $version
|
||||
pushd ${directory}
|
||||
$SUDO wget https://framagit.org/fiat-tux/hat-softwares/lutim/-/archive/$version/lutim-$version.zip
|
||||
$SUDO unzip lutim-$version.zip
|
||||
$SUDO chown ${user} lutim-$version
|
||||
$SUDO chgrp ${group} lutim-$version
|
||||
pushd lutim-$version
|
||||
|
||||
echo "**********************************************************************"
|
||||
echo " *"
|
||||
echo "Install Carton Packages *"
|
||||
echo " *"
|
||||
echo "**********************************************************************"
|
||||
|
||||
$SUDO carton install --deployment --without=test --without=sqlite --without=mysql
|
||||
|
||||
sleep 10;
|
||||
|
||||
$SUDO cp lutim.conf.template lutim.conf
|
||||
|
||||
sed -i 's/127.0.0.1/0.0.0.0/' lutim.conf
|
||||
sed -i 's/#contact/contact/g' lutim.conf
|
||||
sed -i "s/John Doe/${contact_user}/g" lutim.conf
|
||||
sed -i "s/admin[at]example.com/${contact_lutim}/g" lutim.conf
|
||||
sed -i "s/fdjsofjoihrei/${secret_lutim}/g" lutim.conf
|
||||
sed -i '153 , 158 s/#/ /g' lutim.conf
|
||||
|
||||
echo "**********************************************************************"
|
||||
echo " *"
|
||||
echo "Run the Application *"
|
||||
echo " *"
|
||||
echo "**********************************************************************"
|
||||
|
||||
$SUDO carton exec hypnotoad script/lutim
|
||||
|
||||
123
.provision/terraform-aws-lutim/main.tf
Normal file
123
.provision/terraform-aws-lutim/main.tf
Normal file
@@ -0,0 +1,123 @@
|
||||
locals {
|
||||
user_data_vars = {
|
||||
user = var.lutim_owner
|
||||
group = var.lutim_group
|
||||
directory = var.app_dir
|
||||
contact_user = var.contact_user
|
||||
contact_lutim = var.contact
|
||||
secret_lutim = var.secret
|
||||
}
|
||||
}
|
||||
|
||||
#Create the VPC
|
||||
resource "aws_vpc" "vpc" {
|
||||
cidr_block = "${var.vpc_cidr}"
|
||||
enable_dns_hostnames = true
|
||||
enable_dns_support = true
|
||||
instance_tenancy = "default"
|
||||
tags = {
|
||||
Name = "lutim-master-vpc"
|
||||
}
|
||||
}
|
||||
|
||||
# Create InternetGateWay and attach to VPC
|
||||
|
||||
resource "aws_internet_gateway" "IGW" {
|
||||
vpc_id = "${aws_vpc.vpc.id}"
|
||||
tags = {
|
||||
"Name" = "lutim-master-igw"
|
||||
}
|
||||
}
|
||||
|
||||
# Create a public subnet
|
||||
|
||||
resource "aws_subnet" "publicsubnet" {
|
||||
vpc_id = "${aws_vpc.vpc.id}"
|
||||
cidr_block = "${var.public_subnet_cidr}"
|
||||
map_public_ip_on_launch = true
|
||||
tags = {
|
||||
Name = "lutim-master-us-east-1-public"
|
||||
}
|
||||
}
|
||||
|
||||
# Create routeTable
|
||||
resource "aws_route_table" "publicroute" {
|
||||
vpc_id = "${aws_vpc.vpc.id}"
|
||||
route {
|
||||
cidr_block = "0.0.0.0/0"
|
||||
gateway_id = "${aws_internet_gateway.IGW.id}"
|
||||
}
|
||||
|
||||
tags = {
|
||||
Name = "lutim-master-us-east-1-public-rt"
|
||||
}
|
||||
}
|
||||
|
||||
resource "aws_main_route_table_association" "mainRTB" {
|
||||
vpc_id = "${aws_vpc.vpc.id}"
|
||||
route_table_id = "${aws_route_table.publicroute.id}"
|
||||
}
|
||||
## Create security group
|
||||
resource "aws_security_group" "security" {
|
||||
name = "lutim-master-sg"
|
||||
description = "allow all traffic"
|
||||
vpc_id = "${aws_vpc.vpc.id}"
|
||||
|
||||
ingress {
|
||||
description = "allow all traffic"
|
||||
from_port = "0"
|
||||
to_port = "65535"
|
||||
protocol = "tcp"
|
||||
cidr_blocks = ["0.0.0.0/0"]
|
||||
}
|
||||
ingress {
|
||||
description = "allow port SSH"
|
||||
from_port = "22"
|
||||
to_port = "22"
|
||||
protocol = "tcp"
|
||||
cidr_blocks = ["0.0.0.0/0"]
|
||||
}
|
||||
egress {
|
||||
from_port = 0
|
||||
to_port = 0
|
||||
protocol = "-1"
|
||||
cidr_blocks = ["0.0.0.0/0"]
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
# Add ubuntu AMI
|
||||
data "aws_ami" "ubuntu" {
|
||||
most_recent = true
|
||||
owners = ["099720109477"]
|
||||
|
||||
filter {
|
||||
name = "name"
|
||||
values = ["ubuntu/images/hvm-ssd/ubuntu-focal-20.04-amd64-server-*"]
|
||||
}
|
||||
}
|
||||
|
||||
#Create key_pair for the instance
|
||||
|
||||
resource "aws_key_pair" "genkey" {
|
||||
key_name = "lutim.webapp"
|
||||
public_key = "${file(var.public_key)}"
|
||||
}
|
||||
|
||||
# Craete ec2 instance
|
||||
resource "aws_instance" "ec2_instance" {
|
||||
ami = "${data.aws_ami.ubuntu.id}"
|
||||
instance_type = "t2.medium"
|
||||
associate_public_ip_address = "true"
|
||||
subnet_id = "${aws_subnet.publicsubnet.id}"
|
||||
vpc_security_group_ids = ["${aws_security_group.security.id}"]
|
||||
user_data = templatefile("${path.module}/lutim_startup.sh", local.user_data_vars)
|
||||
key_name = "lutim.webapp"
|
||||
|
||||
tags = {
|
||||
Name = "${var.instance_name}"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
7
.provision/terraform-aws-lutim/output.tf
Normal file
7
.provision/terraform-aws-lutim/output.tf
Normal file
@@ -0,0 +1,7 @@
|
||||
output "public_ip" {
|
||||
value = "${aws_instance.ec2_instance.public_ip}"
|
||||
}
|
||||
|
||||
output "App_running_at" {
|
||||
value = "http://${aws_instance.ec2_instance.public_ip}:8080"
|
||||
}
|
||||
14
.provision/terraform-aws-lutim/provider.tf
Normal file
14
.provision/terraform-aws-lutim/provider.tf
Normal file
@@ -0,0 +1,14 @@
|
||||
terraform {
|
||||
required_providers {
|
||||
aws = {
|
||||
source = "hashicorp/aws"
|
||||
version = "~> 3.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
provider "aws" {
|
||||
access_key = "${var.aws_access_key}"
|
||||
secret_key = "${var.aws_secret_key}"
|
||||
region = "${var.aws_region}"
|
||||
}
|
||||
60
.provision/terraform-aws-lutim/vars.tf
Normal file
60
.provision/terraform-aws-lutim/vars.tf
Normal file
@@ -0,0 +1,60 @@
|
||||
variable "aws_region" {
|
||||
default = "aws_region"
|
||||
}
|
||||
variable "vpc_cidr" {
|
||||
default = "cidr_value"
|
||||
}
|
||||
variable "public_subnet_cidr" {
|
||||
default = "cidr_value"
|
||||
}
|
||||
variable "public_subnet1_cidr" {
|
||||
default = "cidr_value"
|
||||
}
|
||||
|
||||
variable "user" {
|
||||
default = "user_of_instance"
|
||||
}
|
||||
|
||||
variable "public_key" {
|
||||
default = "$PWD_publickey"
|
||||
}
|
||||
variable "private_key" {
|
||||
default = "$PWD_privatekey"
|
||||
}
|
||||
variable "aws_access_key" {
|
||||
default = "aws_access_key"
|
||||
}
|
||||
|
||||
variable "aws_secret_key" {
|
||||
default = "aws_secrete_key"
|
||||
}
|
||||
|
||||
variable "instance_name" {
|
||||
default = "instance_name"
|
||||
}
|
||||
|
||||
variable "lutim_owner" {
|
||||
default = ""
|
||||
}
|
||||
|
||||
variable "lutim_group" {
|
||||
default = ""
|
||||
}
|
||||
|
||||
variable "app_dir" {
|
||||
default = ""
|
||||
}
|
||||
|
||||
variable "contact_user" {
|
||||
default = ""
|
||||
}
|
||||
|
||||
variable "contact" {
|
||||
default = ""
|
||||
}
|
||||
|
||||
variable "secret" {
|
||||
default = ""
|
||||
}
|
||||
|
||||
|
||||
@@ -1,8 +0,0 @@
|
||||
[main]
|
||||
host = https://www.transifex.com
|
||||
|
||||
[lutim.enpo]
|
||||
source_file = lib/Lutim/I18N/en.po
|
||||
source_lang = en
|
||||
type = PO
|
||||
file_filter = lib/Lutim/I18N/<lang>.po
|
||||
3
.weblate
Normal file
3
.weblate
Normal file
@@ -0,0 +1,3 @@
|
||||
[weblate]
|
||||
url = https://weblate.framasoft.org/api/
|
||||
translation = lutim/development
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
## Main developers
|
||||
|
||||
* Luc Didry, aka Sky (<http://www.fiat-tux.fr>), core developer, @framasky on [Twitter](https://twitter.com/framasky) and on [Diaspora*](https://framasphere.org/public/framasky)
|
||||
* Luc Didry, aka Sky (<http://www.fiat-tux.fr>), core developer, @framasky on [Mastodon](https://framapiaf.org/@framasky) and on [Diaspora*](https://framasphere.org/public/framasky)
|
||||
* Dattaz (<http://dattaz.fr>), webapp developer, [@dat_taz](https://twitter.com/dat_taz)
|
||||
|
||||
## Contributors
|
||||
@@ -15,3 +15,7 @@
|
||||
* Thor77 (<http://thor77.org>), german translation, among other things
|
||||
* Quentin Pagès, occitan translation
|
||||
* Alexis Clairet (<https://github.com/Turboconnard>), paste image to upload ability
|
||||
* ButterflyOfFire (<https://mastodon.tetaneutral.net/@BoF>), arabic translation
|
||||
* Alexander Sapozhnikov (<http://shoorick.ru>), russian translation
|
||||
* Arnaud de Mouhy, Docker support
|
||||
* Armando Lüscher (<https://noplanman.ch/>)
|
||||
|
||||
128
CHANGELOG
128
CHANGELOG
@@ -1,5 +1,133 @@
|
||||
Revision history for Lutim
|
||||
|
||||
0.15.0 ????-??-??
|
||||
- ✨ — Add --nuke option to image command
|
||||
|
||||
0.14.0 2023-12-18
|
||||
- ⬆️ Update dependencies
|
||||
- 💥 BREAKING CHANGE: Use `?_format=json` instead of `?format=json`
|
||||
- 💥 BREAKING CHANGE: Use `?_format=json` instead of terminating the URL with `.json`
|
||||
|
||||
0.13.0 2023-04-26
|
||||
- 💄 — Add Korrigan theme (Nicolas Frandeboeuf)
|
||||
- 🔥 — Remove zanata stuff
|
||||
- ✨ — Add a config flag to disable API (@b_b)
|
||||
- 🌐 — Update translations
|
||||
|
||||
0.12.1 2020-10-08
|
||||
- ⬆️ Update jQuery
|
||||
|
||||
0.12.0 2020-04-17
|
||||
- Add watermarking feature (#112)
|
||||
|
||||
0.11.6 2019-11-16
|
||||
- Remove the "Support the author" dropdown
|
||||
- Add a "select all" checkbox on /myfiles (#105)
|
||||
- Update arabic translation
|
||||
- Group button links fixed to make the whole button a link (Armando Lüscher)
|
||||
- Docker support (Arnaud de Mouhy)
|
||||
- Bump toastify-js to version 1.4.0 (Armando Lüscher)
|
||||
|
||||
0.11.5 2019-04-19
|
||||
- Revert catching Image::Magick problems
|
||||
- In gallery, use JS to find image's width and height if not provided by image's infos
|
||||
|
||||
0.11.4 2018-11-18
|
||||
- Catch Image::Magick problems
|
||||
- Update arabic translation
|
||||
- Add italian translation
|
||||
|
||||
0.11.3 2018-07-31
|
||||
- Fix gallery bug
|
||||
|
||||
0.11.2 2018-07-31
|
||||
- Fix stats graph if no upload happens in the time range
|
||||
|
||||
0.11.1 2018-07-30
|
||||
- Add upload_enabled info to server infos endpoint
|
||||
- Add log message when failing to render an image
|
||||
|
||||
0.11.0 2018-07-29
|
||||
- Allow to install only needed deps
|
||||
- Notification when copying to clipboard or deleting images
|
||||
- Allow to use memcached as cache system
|
||||
- Use Mojolicious::Plugin::Chi
|
||||
- Gzip static assets with Mojolicious::Plugin::GzipStatic
|
||||
- Fix scroll-to-top when clicking on delete image
|
||||
- Add CSP header
|
||||
- Add X-Content-Type-Options, X-XSS-Protection, X-Frame-Options headers
|
||||
- Remove @framasky as default tweet_card_via setting
|
||||
- Add a message saying how many images there is in the gallery
|
||||
- Use ISO::639_1 for languages' native names
|
||||
- Add CLI command to print informations about images
|
||||
- Add CLI command to remove images
|
||||
- Add CLI command to search images based on the uploader's IP address
|
||||
- Add .zip file check in the tests
|
||||
- Fix stats files place when using non-default theme
|
||||
- Allow to use a fixed domain
|
||||
- Add localStorage export and import feature
|
||||
- Add link to generate random file in collection
|
||||
- Add modal to modify expiration delay from "myfiles" page
|
||||
- Add optional authentication (LDAP or htpasswd file)
|
||||
|
||||
0.10.4 2018-05-07
|
||||
- Fix bug in cache system that would allow someone to view an image with an incorrect decryption key
|
||||
|
||||
0.10.3 2018-04-26
|
||||
- Fix another bug on zip file creation
|
||||
|
||||
0.10.2 2018-04-24
|
||||
- Fix bug on zip file creation
|
||||
|
||||
0.10.1 2018-04-15
|
||||
- Fix bug on theme creation (#73)
|
||||
|
||||
0.10.0 2018-04-07
|
||||
- PostgreSQL performance improvments
|
||||
- Move some tasks to recurring instead of being in after_dispatch hook
|
||||
- Built-in image cache system \o/
|
||||
- Disable logs option
|
||||
- Disable images' counter option
|
||||
|
||||
0.9.6 2018-03-12
|
||||
- Update translations
|
||||
|
||||
0.9.5 2018-03-11
|
||||
- Add russian translation, thanks to Alexander Sapozhnikov
|
||||
|
||||
0.9.4 2018-03-11
|
||||
- Replace Twitter account URL with Mastodon one
|
||||
|
||||
0.9.3 2018-03-11
|
||||
- Use woff2 format for HennyPenny font
|
||||
|
||||
0.9.2 2018-03-09
|
||||
- Fix langage drop-down
|
||||
- Allow to use HTML in broadcast message
|
||||
- Remove old targets from Makefile
|
||||
|
||||
0.9.1 2018-03-09
|
||||
- Fix default setting bug (db_path)
|
||||
|
||||
0.9.0 2018-03-09
|
||||
- Added partial arabic translation (thx to ButterflyOfFire)
|
||||
- Default theme is now non-fluid (ie don't take all the width of the screen)
|
||||
- Use Photoswipe for the gallery instead of Unite gallery
|
||||
- Use Zanata for translations (https://trad.framasoft.org)
|
||||
- Add an option to personnalize proposed retention delays
|
||||
- Use random Initialization Vector for encryption
|
||||
- Use Mojo::SQLite instead of ORLite
|
||||
- Fix various bugs
|
||||
|
||||
0.8.8 2018-02-07
|
||||
- Fix security issues, thanks to SecuNinja
|
||||
|
||||
0.8.7 2017-12-22
|
||||
- Fix bug if dbtype not configured in lutim.conf
|
||||
|
||||
0.8.6 2017-11-18
|
||||
- Fix bug resulting in no EXIF tags deletion
|
||||
|
||||
0.8.5 2017-07-09
|
||||
- Fix Henny Penny font path in css
|
||||
|
||||
|
||||
48
Dockerfile
Normal file
48
Dockerfile
Normal file
@@ -0,0 +1,48 @@
|
||||
FROM alpine:3.15
|
||||
|
||||
ARG BUILD_DATE
|
||||
ARG VCS_REF
|
||||
ARG VERSION
|
||||
LABEL org.label-schema.build-date=$BUILD_DATE \
|
||||
org.label-schema.name="Lets Upload That Image" \
|
||||
org.label-schema.url="https://lut.im/" \
|
||||
org.label-schema.vcs-ref=$VCS_REF \
|
||||
org.label-schema.vcs-url="https://git.framasoft.org/luc/lutim" \
|
||||
org.label-schema.vendor="Luc Didry" \
|
||||
org.label-schema.version=$VERSION \
|
||||
org.label-schema.schema-version="1.0"
|
||||
|
||||
RUN adduser -D lutim \
|
||||
&& addgroup lutim root
|
||||
|
||||
COPY . /home/lutim
|
||||
RUN chmod -R g+rwX /home/lutim
|
||||
|
||||
WORKDIR /home/lutim
|
||||
RUN apk --no-cache add perl~=5 \
|
||||
libpq~=14 \
|
||||
perl-crypt-rijndael~=1 \
|
||||
perl-io-socket-ssl~=2 \
|
||||
perl-net-ssleay~=1 \
|
||||
su-exec~=0.2 \
|
||||
shared-mime-info~=2 \
|
||||
libretls~=3 \
|
||||
imagemagick~=7 \
|
||||
imagemagick-perlmagick~=7 \
|
||||
bash~=~5 \
|
||||
&& apk --no-cache add --virtual .build-deps build-base~=0.5 \
|
||||
perl-utils~=5 \
|
||||
perl-dev~=5 \
|
||||
postgresql14-dev~=14 \
|
||||
vim~=8 \
|
||||
wget~=1 \
|
||||
zlib-dev~=1 \
|
||||
&& cpan notest Carton Config::FromHash \
|
||||
&& carton install --without test \
|
||||
&& apk del .build-deps \
|
||||
&& rm -rf /var/cache/apk/* /root/.cpan*
|
||||
|
||||
USER lutim
|
||||
EXPOSE 8080
|
||||
|
||||
ENTRYPOINT ["/bin/sh", "/home/lutim/docker/entrypoint.sh"]
|
||||
49
Makefile
49
Makefile
@@ -1,45 +1,52 @@
|
||||
EXTRACTDIR=-D lib -D themes/default/templates
|
||||
EN=themes/default/lib/Lutim/I18N/en.po
|
||||
FR=themes/default/lib/Lutim/I18N/fr.po
|
||||
DE=themes/default/lib/Lutim/I18N/de.po
|
||||
ES=themes/default/lib/Lutim/I18N/es.po
|
||||
OC=themes/default/lib/Lutim/I18N/oc.po
|
||||
XGETTEXT=carton exec local/bin/xgettext.pl
|
||||
POT=themes/default/lib/Lutim/I18N/lutim.pot
|
||||
ENPO=themes/default/lib/Lutim/I18N/en.po
|
||||
XGETTEXT=carton exec local/bin/xgettext.pl -u
|
||||
CARTON=carton exec
|
||||
LUTIM=script/lutim
|
||||
REAL_LUTIM=script/application
|
||||
HARNESS_PERL_SWITCHES=-MDevel::Cover=+ignore,local
|
||||
HEAD := $(shell git rev-parse --abbrev-ref HEAD)
|
||||
|
||||
minify:
|
||||
@echo "CSS concatenation"
|
||||
@cd ./themes/default/public/css/ && cat bootstrap.min.css fontello.css hennypenny.css lutim.css toastify.css | csso > common.min.css
|
||||
@cd ./themes/default/public/css/ && cat animation.css uploader.css markdown.css | csso > not_stats.min.css
|
||||
@cd ./themes/default/public/css/ && cat photoswipe.css default-skin/default-skin.css | csso > gallery.min.css
|
||||
@cd ./themes/default/public/css/ && cat twitter.css | csso > twitter.min.css
|
||||
|
||||
locales:
|
||||
$(XGETTEXT) $(EXTRACTDIR) -o $(EN) 2>/dev/null
|
||||
$(XGETTEXT) $(EXTRACTDIR) -o $(FR) 2>/dev/null
|
||||
$(XGETTEXT) $(EXTRACTDIR) -o $(DE) 2>/dev/null
|
||||
$(XGETTEXT) $(EXTRACTDIR) -o $(ES) 2>/dev/null
|
||||
$(XGETTEXT) $(EXTRACTDIR) -o $(OC) 2>/dev/null
|
||||
$(XGETTEXT) $(EXTRACTDIR) -o $(POT) 2>/dev/null
|
||||
$(XGETTEXT) $(EXTRACTDIR) -o $(ENPO) 2>/dev/null
|
||||
|
||||
podcheck:
|
||||
podchecker lib/Lutim/DB/Image.pm
|
||||
|
||||
test-sqlite:
|
||||
$(CARTON) $(REAL_LUTIM) test
|
||||
check-syntax:
|
||||
find lib/ themes/ -name \*.pm -exec $(CARTON) perl -Ilib -c {} \;
|
||||
find t/ -name \*.t -exec $(CARTON) perl -Ilib -c {} \;
|
||||
|
||||
test-pg:
|
||||
$(CARTON) $(REAL_LUTIM) test
|
||||
cover:
|
||||
PERL5OPT='-Ilib' $(CARTON) cover --ignore_re '^local'
|
||||
|
||||
test: podcheck test-sqlite test-pg
|
||||
test:
|
||||
@PERL5OPT='-Ilib/' HARNESS_PERL_SWITCHES='$(HARNESS_PERL_SWITCHES)' $(CARTON) -- prove -l --failures
|
||||
|
||||
test-junit-output:
|
||||
@PERL5OPT='-Ilib/' HARNESS_PERL_SWITCHES='$(HARNESS_PERL_SWITCHES)' $(CARTON) -- prove -l --failures --formatter TAP::Formatter::JUnit > tap.xml
|
||||
|
||||
full-test: podcheck just-test
|
||||
|
||||
clean:
|
||||
rm -rf lutim.db files/
|
||||
|
||||
rmassets:
|
||||
rm -rf themes/default/public/packed/*
|
||||
|
||||
dev: rmassets
|
||||
dev: minify
|
||||
$(CARTON) morbo $(LUTIM) --listen http://0.0.0.0:3000 --watch lib/ --watch script/ --watch themes/ --watch lutim.conf
|
||||
|
||||
devlog:
|
||||
multitail log/development.log
|
||||
|
||||
prod: rmassets
|
||||
prod:
|
||||
$(CARTON) hypnotoad -f $(LUTIM)
|
||||
|
||||
prodlog:
|
||||
|
||||
@@ -43,7 +43,7 @@ See [AUTHORS.md](AUTHORS.md) file.
|
||||
|
||||
## Contribute!
|
||||
|
||||
Please consider contributing, either by [reporting issues](https://framagit.org/luc/lutim/issues) or by helping the [internationalization](https://pootle.framasoft.org/projects/lutim/). And of course, code contribution are welcome!
|
||||
Please consider contributing, either by [reporting issues](https://framagit.org/luc/lutim/issues) or by helping the [internationalization](https://weblate.framasoft.org/projects/lutim/). And of course, code contribution are welcome!
|
||||
|
||||
The details on how to contribute are on the [wiki](https://framagit.org/luc/lutim/wikis/contribute).
|
||||
|
||||
@@ -64,6 +64,11 @@ It uses:
|
||||
* [Moment.js](http://momentjs.com/) for displaying real dates instead of unix timestamps.
|
||||
* [Fontello](http://fontello.com/) and the [markdown font](https://github.com/dcurtis/markdown-mark/) for the icons, licenses for the fontello icons fonts are in `public/font/LICENSE.txt`
|
||||
* [Henny Penny](https://www.google.com/fonts/specimen/Henny+Penny) font designed by Olga Umpeleva for [Brownfox](http://brownfox.org)
|
||||
* [Unite gallery](http://unitegallery.net/) for the gallery
|
||||
* [PhotoSwipe](http://photoswipe.com/) for the gallery
|
||||
* [JSZip](https://stuk.github.io/jszip/) for generating a zip containing all the images in the gallery
|
||||
* [FileSaver.js](https://github.com/eligrey/FileSaver.js/) for saving the zip
|
||||
* [Toastify JS](https://apvarun.github.io/toastify-js/) for notifications
|
||||
|
||||
## Deploy lutim
|
||||
|
||||
An ansible role and a terraform plan reside under the `.provision` directory. An user could utilize the terraform plan if they chose to deploy lutim on AWS, if that's not the goal, they could simply execute the ansible role in part. Usage docs for both are present in their respective directories.
|
||||
|
||||
49
cpanfile
49
cpanfile
@@ -3,24 +3,19 @@ requires 'EV';
|
||||
requires 'IO::Socket::SSL';
|
||||
requires 'Net::SSLeay', '>= 1.81';
|
||||
requires 'Data::Validate::URI';
|
||||
requires 'Net::Domain::TLD', '>= 1.73'; # Must have the last version to handle (at least) .xyz and .link
|
||||
requires 'Mojo::Pg';
|
||||
requires 'Net::Domain::TLD', '>= 1.75'; # Must have the last version to handle (at least) .xyz and .link
|
||||
requires 'Mojolicious::Plugin::I18N';
|
||||
requires 'Mojolicious::Plugin::AssetPack', '>= 1.44';
|
||||
requires 'Mojolicious::Plugin::DebugDumperHelper';
|
||||
requires 'Mojolicious::Plugin::PgURLHelper';
|
||||
requires "Minion", "== 4.06";
|
||||
requires 'Minion::Backend::SQLite', "== 0.009";
|
||||
requires 'CSS::Minifier::XS';
|
||||
requires 'JavaScript::Minifier::XS';
|
||||
requires 'ORLite';
|
||||
requires 'Mojolicious::Plugin::StaticCache';
|
||||
requires 'Mojolicious::Plugin::GzipStatic';
|
||||
requires 'Mojolicious::Plugin::CSPHeader';
|
||||
requires 'Text::Unidecode';
|
||||
requires 'DateTime';
|
||||
requires 'Filesys::DiskUsage';
|
||||
requires 'Switch';
|
||||
requires 'Data::Validate::URI';
|
||||
requires 'Crypt::CBC';
|
||||
requires 'Crypt::Blowfish';
|
||||
requires 'Digest::MD5';
|
||||
requires 'Locale::Maketext';
|
||||
requires 'Locale::Maketext::Extract';
|
||||
requires 'File::MimeInfo';
|
||||
@@ -29,3 +24,37 @@ requires 'Image::ExifTool';
|
||||
requires 'Data::Entropy';
|
||||
requires 'List::MoreUtils', '> 0.33';
|
||||
requires 'Archive::Zip';
|
||||
requires 'ISO::639_1';
|
||||
|
||||
feature 'postgresql', 'PostgreSQL support' => sub {
|
||||
requires 'Mojo::Pg';
|
||||
requires 'Mojolicious::Plugin::PgURLHelper';
|
||||
};
|
||||
feature 'sqlite', 'SQLite support' => sub {
|
||||
requires 'Mojo::SQLite', '>= 3.000';
|
||||
requires 'Minion::Backend::SQLite', '>= 4.001';
|
||||
requires 'DBD::SQLite', '>= 1.66';
|
||||
};
|
||||
feature 'minion', 'Minion support' => sub {
|
||||
requires 'Minion';
|
||||
};
|
||||
feature 'cache', 'Cache system' => sub {
|
||||
requires 'Mojolicious::Plugin::CHI';
|
||||
requires 'Data::Serializer';
|
||||
};
|
||||
feature 'memcached', 'Cache system using Memcached' => sub {
|
||||
requires 'Mojolicious::Plugin::CHI';
|
||||
requires 'CHI::Driver::Memcached';
|
||||
requires 'Cache::Memcached';
|
||||
};
|
||||
feature 'ldap', 'LDAP authentication support' => sub {
|
||||
requires 'Net::LDAP';
|
||||
requires 'Mojolicious::Plugin::Authentication';
|
||||
};
|
||||
feature 'htpasswd', 'Htpasswd authentication support' => sub {
|
||||
requires 'Apache::Htpasswd';
|
||||
requires 'Mojolicious::Plugin::Authentication';
|
||||
};
|
||||
feature 'test' => sub {
|
||||
requires 'Devel::Cover';
|
||||
};
|
||||
|
||||
3910
cpanfile.snapshot
3910
cpanfile.snapshot
File diff suppressed because it is too large
Load Diff
22
docker-compose.dev.yml
Normal file
22
docker-compose.dev.yml
Normal file
@@ -0,0 +1,22 @@
|
||||
version: '3.3'
|
||||
|
||||
services:
|
||||
app_dev:
|
||||
build: .
|
||||
ports:
|
||||
- 8080:8080
|
||||
volumes:
|
||||
- .:/home/lutim
|
||||
command: dev
|
||||
postgres_dev:
|
||||
image: postgres:11.2-alpine
|
||||
environment:
|
||||
POSTGRES_PASSWORD: password
|
||||
POSTGRES_USER: lutim
|
||||
POSTGRES_DB: lutim
|
||||
memcached:
|
||||
image: memcached:1.5-alpine
|
||||
adminer:
|
||||
image: dehy/adminer
|
||||
ports:
|
||||
- 8081:80
|
||||
28
docker-compose.yml
Normal file
28
docker-compose.yml
Normal file
@@ -0,0 +1,28 @@
|
||||
version: '3.3'
|
||||
|
||||
services:
|
||||
app:
|
||||
build: .
|
||||
ports:
|
||||
- 8080:8080
|
||||
volumes:
|
||||
- ./lutim.conf:/home/lutim/lutim.conf:ro
|
||||
db:
|
||||
image: postgres:11.2-alpine
|
||||
environment:
|
||||
POSTGRES_PASSWORD: password
|
||||
POSTGRES_USER: lutim
|
||||
POSTGRES_DB: lutim
|
||||
cache:
|
||||
image: memcached:1.5-alpine
|
||||
minion:
|
||||
build: .
|
||||
command: minion
|
||||
volumes:
|
||||
- ./lutim.conf:/home/lutim/lutim.conf:ro
|
||||
minion_db:
|
||||
image: postgres:11.2-alpine
|
||||
environment:
|
||||
POSTGRES_PASSWORD: password
|
||||
POSTGRES_USER: lutim_minion
|
||||
POSTGRES_DB: lutim_minion
|
||||
39
docker-stack.yml
Normal file
39
docker-stack.yml
Normal file
@@ -0,0 +1,39 @@
|
||||
version: '3.3'
|
||||
|
||||
services:
|
||||
app:
|
||||
image: aquinum/lutim
|
||||
configs:
|
||||
- source: lutim.conf
|
||||
target: /home/lutim/lutim.conf
|
||||
uid: '1000'
|
||||
gid: '1000'
|
||||
mode: 0440
|
||||
deploy:
|
||||
replicas: 1
|
||||
db:
|
||||
image: postgres:11.2-alpine
|
||||
environment:
|
||||
POSTGRES_PASSWORD: <changeme>
|
||||
POSTGRES_USER: lutim
|
||||
POSTGRES_DB: lutim
|
||||
cache:
|
||||
image: memcached:1.5-alpine
|
||||
minion:
|
||||
image: aquinum/lutim
|
||||
command: minion
|
||||
configs:
|
||||
- source: lutim.conf
|
||||
target: /home/lutim/lutim.conf
|
||||
uid: '1000'
|
||||
gid: '1000'
|
||||
mode: 0440
|
||||
minion_db:
|
||||
image: mariadb:10.3
|
||||
environment:
|
||||
MYSQL_ROOT_PASSWORD: <changeme>
|
||||
MYSQL_DATABASE: lutim_minion
|
||||
|
||||
configs:
|
||||
lutim.conf:
|
||||
file: ./lutim.conf
|
||||
44
docker/entrypoint.sh
Executable file
44
docker/entrypoint.sh
Executable file
@@ -0,0 +1,44 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -eu
|
||||
|
||||
cd ~lutim
|
||||
|
||||
if [ "${1:-}" == "dev" ]
|
||||
then
|
||||
echo ""
|
||||
echo ""
|
||||
echo "Container started in dev mode. Connect to the container with the following command:"
|
||||
echo " docker-compose -f docker-compose.dev.yml exec -u root app_dev sh"
|
||||
echo ""
|
||||
echo ""
|
||||
echo "You can then install the build dependencies with this command"
|
||||
echo " sh ~lutim/docker/install-dev-env.sh"
|
||||
|
||||
tail -f /dev/null
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# If MySQL/PostgreSQL, wait for database to be up
|
||||
DB_TYPE=$(perl utilities/read_conf.pl dbtype sqlite)
|
||||
DB_HOST=
|
||||
DB_PORT=
|
||||
if [ "$DB_TYPE" == "postgresql" ]
|
||||
then
|
||||
DB_HOST=$(perl utilities/read_conf.pl pgdb/host db)
|
||||
DB_PORT=$(perl utilities/read_conf.pl pgdb/port 5432)
|
||||
fi
|
||||
if [ -n "$DB_HOST" ] && [ -n "$DB_PORT" ]
|
||||
then
|
||||
while ! nc -vz "${DB_HOST}" "${DB_PORT}"; do
|
||||
echo "Waiting for database..."
|
||||
sleep 1;
|
||||
done
|
||||
fi
|
||||
|
||||
if [ "${1:-}" == "minion" ]
|
||||
then
|
||||
exec carton exec script/application minion worker
|
||||
fi
|
||||
|
||||
exec carton exec hypnotoad -f script/lutim
|
||||
320
lib/Lutim.pm
320
lib/Lutim.pm
@@ -1,7 +1,9 @@
|
||||
# vim:set sw=4 ts=4 sts=4 ft=perl expandtab:
|
||||
package Lutim;
|
||||
use Mojo::Base 'Mojolicious';
|
||||
use Mojo::IOLoop;
|
||||
use Lutim::DB::Image;
|
||||
use Lutim::DefaultConfig qw($default_config);
|
||||
|
||||
use vars qw($im_loaded);
|
||||
BEGIN {
|
||||
@@ -22,35 +24,59 @@ sub startup {
|
||||
|
||||
$self->{wait_for_it} = {};
|
||||
|
||||
push @{$self->commands->namespaces}, 'Lutim::Command';
|
||||
|
||||
$self->plugin('DebugDumperHelper');
|
||||
$self->plugin('PgURLHelper');
|
||||
|
||||
my $config = $self->plugin('Config', {
|
||||
default => {
|
||||
provisioning => 100,
|
||||
provis_step => 5,
|
||||
length => 8,
|
||||
always_encrypt => 0,
|
||||
anti_flood_delay => 5,
|
||||
tweet_card_via => '@framasky',
|
||||
max_file_size => 10*1024*1024,
|
||||
https => 0,
|
||||
default_delay => 0,
|
||||
max_delay => 0,
|
||||
token_length => 24,
|
||||
crypto_key_length => 8,
|
||||
thumbnail_size => 100,
|
||||
theme => 'default',
|
||||
dbtype => 'sqlite',
|
||||
max_files_in_zip => 15,
|
||||
minion => {
|
||||
enabled => 0,
|
||||
dbtype => 'sqlite',
|
||||
db_path => 'minion.db'
|
||||
},
|
||||
}
|
||||
default => $default_config
|
||||
});
|
||||
|
||||
if ($config->{watermark_path}) {
|
||||
die sprintf('%s does not exist or is not readable.', $config->{watermark_path}) unless -r $config->{watermark_path};
|
||||
my $valid = {
|
||||
center => 1,
|
||||
north => 1,
|
||||
northeast => 1,
|
||||
east => 1,
|
||||
southeast => 1,
|
||||
south => 1,
|
||||
southwest => 1,
|
||||
west => 1,
|
||||
northwest => 1
|
||||
};
|
||||
die sprintf('%s is not a valid value for watermark_placement.', $config->{watermark_placement}) unless $valid->{lc($config->{watermark_placement})};
|
||||
$valid = {
|
||||
'tiling' => 1,
|
||||
'single' => 1,
|
||||
'none' => 1
|
||||
};
|
||||
die sprintf('%s is not a valid value for watermark_default.', $config->{watermark_default}) unless $valid->{lc($config->{watermark_default})};
|
||||
die sprintf('%s is not a valid value for watermark_enforce.', $config->{watermark_enforce}) unless $valid->{lc($config->{watermark_enforce})};
|
||||
}
|
||||
|
||||
if (scalar(@{$config->{memcached_servers}})) {
|
||||
$self->plugin(CHI => {
|
||||
lutim_images_cache => {
|
||||
driver => 'Memcached',
|
||||
servers => $config->{memcached_servers},
|
||||
expires_in => '1 day',
|
||||
expires_on_backend => 1,
|
||||
}
|
||||
});
|
||||
} elsif ($config->{cache_max_size} != 0) {
|
||||
my $cache_max_size = 8 * 1024 * 1024 * $config->{cache_max_size};
|
||||
$self->plugin(CHI => {
|
||||
lutim_images_cache => {
|
||||
driver => 'Memory',
|
||||
global => 1,
|
||||
is_size_aware => 1,
|
||||
max_size => $cache_max_size,
|
||||
expires_in => '1 day'
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
die "You need to provide a contact information in lutim.conf !" unless (defined($config->{contact}));
|
||||
|
||||
$ENV{MOJO_MAX_MESSAGE_SIZE} = $config->{max_file_size};
|
||||
@@ -67,24 +93,30 @@ sub startup {
|
||||
}
|
||||
push @{$self->renderer->paths}, $self->home->rel_file('themes/default/templates');
|
||||
push @{$self->static->paths}, $self->home->rel_file('themes/default/public');
|
||||
|
||||
# Internationalization
|
||||
my $lib = $self->home->rel_file('themes/'.$config->{theme}.'/lib');
|
||||
eval qq(use lib "$lib");
|
||||
$self->plugin('I18N');
|
||||
|
||||
# Compressed assets
|
||||
$self->plugin('AssetPack' => { pipes => [qw(Combine)] });
|
||||
# Static assets gzipping
|
||||
$self->plugin('GzipStatic');
|
||||
|
||||
# Headers
|
||||
$self->plugin('Lutim::Plugin::Headers');
|
||||
|
||||
# Helpers
|
||||
$self->plugin('Lutim::Plugin::Helpers');
|
||||
$self->plugin('Lutim::Plugin::Lang');
|
||||
|
||||
# Minion
|
||||
if ($config->{minion}->{enabled}) {
|
||||
$self->config->{minion}->{dbtype} = 'sqlite' unless defined $config->{minion}->{dbtype};
|
||||
if ($config->{minion}->{dbtype} eq 'sqlite') {
|
||||
$self->config('minion')->{db_path} = 'minion.db' unless defined $config->{minion}->{db_path};
|
||||
$config->{minion}->{db_path} = 'minion.db' unless defined $config->{minion}->{db_path};
|
||||
$self->plugin('Minion' => { SQLite => 'sqlite:'.$config->{minion}->{db_path} });
|
||||
} elsif ($config->{minion}->{dbtype} eq 'postgresql') {
|
||||
$self->plugin('PgURLHelper');
|
||||
$self->plugin('Minion' => { Pg => $self->pg_url($config->{minion}->{'pgdb'}) });
|
||||
}
|
||||
$self->app->minion->add_task(
|
||||
@@ -126,30 +158,116 @@ sub startup {
|
||||
}
|
||||
);
|
||||
|
||||
$self->hook(
|
||||
after_dispatch => sub {
|
||||
my $c = shift;
|
||||
$c->provisioning();
|
||||
# Recurrent tasks
|
||||
Mojo::IOLoop->recurring(5 => sub {
|
||||
my $loop = shift;
|
||||
|
||||
# Purge expired anti-flood protection
|
||||
my $wait_for_it = $c->app->{wait_for_it};
|
||||
delete @{$wait_for_it}{grep { time - $wait_for_it->{$_} > $c->config->{anti_flood_delay} } keys %{$wait_for_it}} if (defined($wait_for_it));
|
||||
}
|
||||
);
|
||||
$self->hook(after_static => sub {
|
||||
my $c = shift;
|
||||
$c->res->headers->cache_control('max-age=2592000, must-revalidate');
|
||||
$self->provisioning();
|
||||
|
||||
# Purge expired anti-flood protection
|
||||
my $wait_for_it = $self->{wait_for_it};
|
||||
delete @{$wait_for_it}{grep { time - $wait_for_it->{$_} > $self->config->{anti_flood_delay} } keys %{$wait_for_it}} if (defined($wait_for_it));
|
||||
});
|
||||
|
||||
$self->asset->store->paths($self->static->paths);
|
||||
$self->asset->process('index.css' => ('css/bootstrap.min.css', 'css/fontello-embedded.css', 'css/animation.css', 'css/uploader.css', 'css/hennypenny.css', 'css/lutim.css', 'css/markdown.css'));
|
||||
$self->asset->process('stats.css' => ('css/bootstrap.min.css', 'css/fontello-embedded.css', 'css/morris-0.4.3.min.css', 'css/hennypenny.css', 'css/lutim.css'));
|
||||
$self->asset->process('about.css' => ('css/bootstrap.min.css', 'css/fontello-embedded.css', 'css/hennypenny.css', 'css/lutim.css'));
|
||||
$self->asset->process('gallery.css' => ('/gallery/css/unite-gallery.css', '/gallery/themes/default/ug-theme-default.css'));
|
||||
# Authentication (if configured)
|
||||
if (defined($config->{ldap}) || defined($config->{htpasswd})) {
|
||||
if (defined($config->{ldap})) {
|
||||
require Net::LDAP;
|
||||
}
|
||||
if (defined($config->{htpasswd})) {
|
||||
require Apache::Htpasswd;
|
||||
}
|
||||
die sprintf('Unable to read %s', $config->{htpasswd}) if (defined($config->{htpasswd}) && !-r $config->{htpasswd});
|
||||
$self->plugin('Authentication' =>
|
||||
{
|
||||
autoload_user => 1,
|
||||
session_key => 'Lutim',
|
||||
load_user => sub {
|
||||
my ($c, $username) = @_;
|
||||
|
||||
$self->asset->process('index.js' => ('js/bootstrap.min.js', 'js/lutim.js', 'js/dmuploader.min.js'));
|
||||
$self->asset->process('stats.js' => ('js/bootstrap.min.js', 'js/lutim.js', 'js/raphael-min.js', 'js/morris-0.4.3.min.js', 'js/stats.js'));
|
||||
$self->asset->process('freeze.js' => ('js/jquery-2.1.0.min.js', 'js/freezeframe.min.js'));
|
||||
return $username;
|
||||
},
|
||||
validate_user => sub {
|
||||
my ($c, $username, $password, $extradata) = @_;
|
||||
|
||||
if (defined($c->config('ldap'))) {
|
||||
my $ldap = Net::LDAP->new($c->config->{ldap}->{uri});
|
||||
|
||||
my $mesg;
|
||||
if (defined($c->config->{ldap}->{bind_dn}) && defined($c->config->{ldap}->{bind_pwd})) {
|
||||
# connect to the ldap server using the bind credentials
|
||||
$mesg = $ldap->bind(
|
||||
$c->config->{ldap}->{bind_dn},
|
||||
password => $c->config->{ldap}->{bind_pwd}
|
||||
);
|
||||
} else {
|
||||
# anonymous bind
|
||||
$mesg = $ldap->bind
|
||||
}
|
||||
|
||||
if ($mesg->code) {
|
||||
$c->app->log->info('[LDAP INFO] Authenticated bind failed - Login: '.$c->config->{ldap}->{bind_dn}) if defined($c->config->{ldap}->{bind_dn});
|
||||
$c->app->log->error('[LDAP ERROR] Error on bind: '.$mesg->error);
|
||||
return undef;
|
||||
}
|
||||
|
||||
my $ldap_user_attr = $c->config->{ldap}->{user_attr};
|
||||
my $ldap_user_filter = $c->config->{ldap}->{user_filter};
|
||||
|
||||
# search the ldap database for the user who is trying to login
|
||||
$mesg = $ldap->search(
|
||||
base => $c->config->{ldap}->{user_tree},
|
||||
filter => "(&($ldap_user_attr=$username)$ldap_user_filter)"
|
||||
);
|
||||
|
||||
if ($mesg->code) {
|
||||
$c->app->log->error('[LDAP ERROR] Error on search: '.$mesg->error);
|
||||
return undef;
|
||||
}
|
||||
|
||||
# check to make sure that the ldap search returned at least one entry
|
||||
my @entries = $mesg->entries;
|
||||
my $entry = $entries[0];
|
||||
|
||||
unless (defined $entry) {
|
||||
$c->app->log->info("[LDAP INFO] Authentication failed - User $username filtered out, IP: ".$c->ip);
|
||||
return undef;
|
||||
}
|
||||
|
||||
# retrieve the first user returned by the search
|
||||
$c->app->log->debug("[LDAP DEBUG] Found user dn: ".$entry->dn);
|
||||
|
||||
# Now we know that the user exists
|
||||
$mesg = $ldap->bind($entry->dn,
|
||||
password => $password
|
||||
);
|
||||
|
||||
if ($mesg->code) {
|
||||
$c->app->log->info("[LDAP INFO] Authentication failed - Login: $username, IP: ".$c->ip);
|
||||
$c->app->log->error('[LDAP ERROR] Authentication failed '.$mesg->error);
|
||||
return undef;
|
||||
}
|
||||
|
||||
$c->app->log->info("[LDAP INFO] Authentication successful - Login: $username, IP: ".$c->ip);
|
||||
} elsif (defined($c->config('htpasswd'))) {
|
||||
my $htpasswd = new Apache::Htpasswd(
|
||||
{
|
||||
passwdFile => $c->config('htpasswd'),
|
||||
ReadOnly => 1
|
||||
}
|
||||
);
|
||||
if (!$htpasswd->htCheckPassword($username, $password)) {
|
||||
return undef;
|
||||
}
|
||||
$c->app->log->info("[Simple authentication successful] login: $username, IP: ".$c->ip);
|
||||
}
|
||||
|
||||
return $username;
|
||||
}
|
||||
}
|
||||
);
|
||||
$self->app->sessions->default_expiration($config->{session_duration});
|
||||
}
|
||||
|
||||
$self->defaults(layout => 'default');
|
||||
|
||||
@@ -158,6 +276,14 @@ sub startup {
|
||||
# Router
|
||||
my $r = $self->routes;
|
||||
|
||||
$r->add_condition(authorized => sub {
|
||||
my ($r, $c, $captures) = @_;
|
||||
|
||||
return 1 unless (defined($config->{ldap}) || defined($config->{htpasswd}));
|
||||
|
||||
return $c->is_user_authenticated;
|
||||
});
|
||||
|
||||
$r->options(sub {
|
||||
my $c = shift;
|
||||
$c->res->headers->allow('POST') if (defined($c->config->{allowed_domains}));
|
||||
@@ -165,22 +291,46 @@ sub startup {
|
||||
});
|
||||
|
||||
$r->get('/')->
|
||||
to('Controller#home')->
|
||||
requires('authorized')->
|
||||
to('Image#home')->
|
||||
name('index');
|
||||
$r->get('/')->
|
||||
to('Authent#index');
|
||||
|
||||
|
||||
if (defined $config->{ldap} || defined $config->{htpasswd}) {
|
||||
# Login page
|
||||
$r->get('/login')
|
||||
->to('Authent#index')
|
||||
->name('login');
|
||||
|
||||
# Authentication
|
||||
$r->post('/login')
|
||||
->to('Authent#login');
|
||||
|
||||
# Logout page
|
||||
$r->get('/logout')
|
||||
->to('Authent#log_out')
|
||||
->name('logout');
|
||||
}
|
||||
|
||||
$r->get('/about')->
|
||||
to('Controller#about')->
|
||||
to('Image#about')->
|
||||
name('about');
|
||||
|
||||
$r->get('/infos')->
|
||||
to('Controller#infos')->
|
||||
to('Image#infos')->
|
||||
name('infos');
|
||||
|
||||
$r->get('/stats')->
|
||||
to('Controller#stats')->
|
||||
to('Image#stats')->
|
||||
name('stats');
|
||||
|
||||
$r->get('/partial/:file' => sub {
|
||||
$r->get('/lang/:l')->
|
||||
to('Image#change_lang')->
|
||||
name('lang');
|
||||
|
||||
$r->get('/partial/<:file>.<:f>' => sub {
|
||||
my $c = shift;
|
||||
$c->render(
|
||||
template => 'partial/'.$c->param('file'),
|
||||
@@ -200,46 +350,76 @@ sub startup {
|
||||
);
|
||||
})->name('gallery');
|
||||
|
||||
$r->get('/myfiles' => sub {
|
||||
shift->render(
|
||||
template => 'myfiles'
|
||||
);
|
||||
})->name('myfiles');
|
||||
$r->get('/myfiles')->
|
||||
requires('authorized')->
|
||||
name('myfiles');
|
||||
$r->get('/myfiles')->
|
||||
to('Authent#index');
|
||||
|
||||
$r->get('/manifest.webapp')->
|
||||
to('Controller#webapp')->
|
||||
to('Image#webapp')->
|
||||
name('manifest.webapp');
|
||||
|
||||
$r->get('/zip')
|
||||
->to('Controller#zip')
|
||||
->to('Image#zip')
|
||||
->name('zip');
|
||||
|
||||
$r->get('/random')
|
||||
->to('Image#random')
|
||||
->name('random');
|
||||
|
||||
$r->post('/')->
|
||||
to('Controller#add')->
|
||||
requires('authorized')->
|
||||
to('Image#add')->
|
||||
name('add');
|
||||
$r->post('/')->
|
||||
to('Authent#index');
|
||||
|
||||
$r->get('/d/:short/:token')->
|
||||
to('Controller#delete')->
|
||||
requires('authorized')->
|
||||
to('Image#delete')->
|
||||
name('delete');
|
||||
$r->get('/d/:short/:token')->
|
||||
to('Authent#index');
|
||||
|
||||
$r->post('/m/:short/:token')->
|
||||
to('Controller#modify')->
|
||||
requires('authorized')->
|
||||
to('Image#modify')->
|
||||
name('modify');
|
||||
$r->post('/m/:short/:token')->
|
||||
to('Authent#index');
|
||||
|
||||
$r->post('/c')->
|
||||
to('Controller#get_counter')->
|
||||
requires('authorized')->
|
||||
to('Image#get_counter')->
|
||||
name('counter');
|
||||
$r->post('/c')->
|
||||
to('Authent#index');
|
||||
|
||||
$r->get('/(:short).(:f)')->
|
||||
to('Controller#short')->
|
||||
$r->get('/about/<:short>')->
|
||||
to('Image#about_img')->
|
||||
name('about_img');
|
||||
|
||||
$r->get('/about/<:short>.<:f>')->
|
||||
to('Image#about_img')->
|
||||
name('about_img');
|
||||
|
||||
$r->get('/about/:short/<:key>.<:f>')->
|
||||
to('Image#about_img')->
|
||||
name('about_img');
|
||||
|
||||
$r->get('/<:short>.<:f>')->
|
||||
to('Image#short')->
|
||||
name('short');
|
||||
$r->get('/:short')->
|
||||
to('Controller#short');
|
||||
|
||||
$r->get('/:short/(:key).(:f)')->
|
||||
to('Controller#short');
|
||||
$r->get('/:short')->
|
||||
to('Image#short');
|
||||
|
||||
$r->get('/:short/<:key>.<:f>')->
|
||||
to('Image#short');
|
||||
|
||||
$r->get('/:short/:key')->
|
||||
to('Controller#short');
|
||||
to('Image#short');
|
||||
}
|
||||
|
||||
1;
|
||||
|
||||
@@ -3,6 +3,7 @@ package Lutim::Command::cron::cleanbdd;
|
||||
use Mojo::Base 'Mojolicious::Command';
|
||||
use Mojo::File;
|
||||
use Lutim::DB::Image;
|
||||
use Lutim::DefaultConfig qw($default_config);
|
||||
use FindBin qw($Bin);
|
||||
use File::Spec qw(catfile);
|
||||
|
||||
@@ -21,10 +22,7 @@ sub run {
|
||||
}
|
||||
my $config = $c->app->plugin('Config', {
|
||||
file => $cfile,
|
||||
default => {
|
||||
keep_ip_during => 365,
|
||||
dbtype => 'sqlite',
|
||||
}
|
||||
default => $default_config
|
||||
});
|
||||
|
||||
my $separation = time() - $config->{keep_ip_during} * 86400;
|
||||
|
||||
@@ -3,6 +3,7 @@ package Lutim::Command::cron::cleanfiles;
|
||||
use Mojo::Base 'Mojolicious::Command';
|
||||
use Mojo::File;
|
||||
use Lutim::DB::Image;
|
||||
use Lutim::DefaultConfig qw($default_config);
|
||||
use Lutim;
|
||||
use FindBin qw($Bin);
|
||||
use File::Spec qw(catfile);
|
||||
@@ -22,9 +23,7 @@ sub run {
|
||||
}
|
||||
my $config = $c->app->plugin('Config', {
|
||||
file => $cfile,
|
||||
default => {
|
||||
dbtype => 'sqlite',
|
||||
}
|
||||
default => $default_config
|
||||
});
|
||||
|
||||
my $l = Lutim->new;
|
||||
|
||||
@@ -6,6 +6,7 @@ use Mojo::Util qw(encode);
|
||||
use Mojo::File;
|
||||
use Mojo::JSON qw(encode_json);
|
||||
use Lutim::DB::Image;
|
||||
use Lutim::DefaultConfig qw($default_config);
|
||||
use DateTime;
|
||||
use FindBin qw($Bin);
|
||||
use File::Spec qw(catfile);
|
||||
@@ -26,17 +27,12 @@ sub run {
|
||||
}
|
||||
my $config = $c->app->plugin('Config', {
|
||||
file => $cfile,
|
||||
default => {
|
||||
theme => 'default',
|
||||
stats_day_num => 365,
|
||||
dbtype => 'sqlite'
|
||||
}
|
||||
default => $default_config
|
||||
});
|
||||
|
||||
my $template = 'themes/'.$config->{theme}.'/templates/data.html.ep.template';
|
||||
unless (-e $template) {
|
||||
$config->{theme} = 'default';
|
||||
$template = 'themes/'.$config->{theme}.'/templates/data.html.ep.template';
|
||||
$template = 'themes/default/templates/data.html.ep.template';
|
||||
}
|
||||
|
||||
my $stats = {};
|
||||
@@ -72,15 +68,27 @@ sub run {
|
||||
);
|
||||
|
||||
my $total = $img->count_created_before($separation);
|
||||
for my $year (sort {$a <=> $b} keys %data) {
|
||||
for my $month (sort {$a <=> $b} keys %{$data{$year}}) {
|
||||
for my $day (sort {$a <=> $b} keys %{$data{$year}->{$month}}) {
|
||||
$thead_tr->append_content('<th>'."$day/$month/$year".'</th>'."\n");
|
||||
$tbody_tr->append_content('<td>'.$data{$year}->{$month}->{$day}.'</td>'."\n");
|
||||
$total += $data{$year}->{$month}->{$day};
|
||||
$tbody_t2->append_content('<td>'.$total.'</td>'."\n");
|
||||
if (scalar(keys %data)) {
|
||||
for my $year (sort {$a <=> $b} keys %data) {
|
||||
for my $month (sort {$a <=> $b} keys %{$data{$year}}) {
|
||||
for my $day (sort {$a <=> $b} keys %{$data{$year}->{$month}}) {
|
||||
$thead_tr->append_content(sprintf("<th>%#.2d/%#.2d/%d</th>\n", $day, $month, $year));
|
||||
$tbody_tr->append_content(sprintf("<td>%d</td>\n", $data{$year}->{$month}->{$day}));
|
||||
$total += $data{$year}->{$month}->{$day};
|
||||
$tbody_t2->append_content(sprintf("<td>%d</td>\n", $total));
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
my $dt = DateTime->from_epoch(epoch => $separation);
|
||||
$thead_tr->append_content(sprintf("<th>%#.2d/%#.2d/%d</th>\n", $dt->day(), $dt->month(), $dt->year()));
|
||||
$tbody_tr->append_content("<td>0</td>\n");
|
||||
$tbody_t2->append_content(sprintf("<td>%d</td>\n", $total));
|
||||
|
||||
$dt = DateTime->now();
|
||||
$thead_tr->append_content(sprintf("<th>%#.2d/%#.2d/%d</th>\n", $dt->day(), $dt->month(), $dt->year()));
|
||||
$tbody_tr->append_content("<td>0</td>\n");
|
||||
$tbody_t2->append_content(sprintf("<td>%d</td>\n", $total));
|
||||
}
|
||||
|
||||
my $moy = $total / $config->{stats_day_num};
|
||||
@@ -88,8 +96,7 @@ sub run {
|
||||
# Raw datas
|
||||
my $template2 = 'themes/'.$config->{theme}.'/templates/raw.html.ep.template';
|
||||
unless (-e $template2) {
|
||||
$config->{theme} = 'default';
|
||||
$template = 'themes/'.$config->{theme}.'/templates/raw.html.ep.template';
|
||||
$template2 = 'themes/default/templates/raw.html.ep.template';
|
||||
}
|
||||
my $text2 = Mojo::File->new($template2)->slurp;
|
||||
my $dom2 = Mojo::DOM->new($text2);
|
||||
@@ -128,7 +135,7 @@ sub run {
|
||||
disabled => $year_disabled
|
||||
};
|
||||
|
||||
my $year_disabled_in_month_pct = ($year_enabled != 0) ? " (".sprintf('%.2f', $year_disabled_in_month/$year_enabled)."%)" : '';
|
||||
my $year_disabled_in_month_pct = ($year_enabled != 0) ? " (".sprintf('%.2f', 100*$year_disabled_in_month/$year_enabled)."%)" : '';
|
||||
|
||||
$raw->append_content("\n<tr><td><%= \$raw[4] %></td><td>".$unlimited_enabled."</td><td>".$unlimited_disabled."</td><td>ø</td></tr>\n");
|
||||
$raw->append_content("<tr><td><%= \$raw[5] %></td><td>".$day_enabled."</td><td>".$day_disabled."</td><td>".$day_enabled." (100%)</td></tr>\n");
|
||||
@@ -151,7 +158,10 @@ sub run {
|
||||
% l('1 year'),
|
||||
% l('Total')
|
||||
% );
|
||||
<script>
|
||||
$dom2
|
||||
EOF
|
||||
|
||||
my $js = <<EOF;
|
||||
var enabled_donut = {
|
||||
element: 'raw-enabled-holder',
|
||||
data: [
|
||||
@@ -186,13 +196,13 @@ var disabled_donut = {
|
||||
'#455ac3',
|
||||
]
|
||||
};
|
||||
</script>
|
||||
$dom2
|
||||
EOF
|
||||
|
||||
Mojo::File->new('themes/'.$config->{theme}.'/templates/stats.json.ep')->spurt(encode_json($stats));
|
||||
Mojo::File->new('themes/'.$config->{theme}.'/templates/data.html.ep')->spurt($dom);
|
||||
Mojo::File->new('themes/'.$config->{theme}.'/templates/raw.html.ep')->spurt(encode('UTF-8', $dom2));
|
||||
mkdir 'themes/'.$config->{theme}.'/templates/partial/' unless -d 'themes/'.$config->{theme}.'/templates/partial/';
|
||||
Mojo::File->new('themes/'.$config->{theme}.'/templates/partial/raw.js.ep')->spurt(encode('UTF-8', $js));
|
||||
}
|
||||
|
||||
=encoding utf8
|
||||
|
||||
@@ -3,6 +3,7 @@ package Lutim::Command::cron::watch;
|
||||
use Mojo::Base 'Mojolicious::Command';
|
||||
use Filesys::DiskUsage qw/du/;
|
||||
use Lutim::DB::Image;
|
||||
use Lutim::DefaultConfig qw($default_config);
|
||||
use Lutim;
|
||||
use Mojo::File;
|
||||
use Switch;
|
||||
@@ -24,10 +25,7 @@ sub run {
|
||||
}
|
||||
my $config = $c->app->plugin('Config', {
|
||||
file => $cfile,
|
||||
default => {
|
||||
policy_when_full => 'warn',
|
||||
dbtype => 'sqlite',
|
||||
}
|
||||
default => $default_config
|
||||
});
|
||||
|
||||
if (defined($config->{max_total_size})) {
|
||||
|
||||
234
lib/Lutim/Command/image.pm
Normal file
234
lib/Lutim/Command/image.pm
Normal file
@@ -0,0 +1,234 @@
|
||||
# vim:set sw=4 ts=4 sts=4 ft=perl expandtab:
|
||||
package Lutim::Command::image;
|
||||
use Mojo::Base 'Mojolicious::Command';
|
||||
use Mojo::Util qw(getopt);
|
||||
use Mojo::Collection 'c';
|
||||
use Lutim::DB::Image;
|
||||
use Lutim::DefaultConfig qw($default_config);
|
||||
use FindBin qw($Bin);
|
||||
use File::Spec qw(catfile);
|
||||
|
||||
has description => 'Manage stored images';
|
||||
has usage => sub { shift->extract_usage };
|
||||
|
||||
my $csv_header = 0;
|
||||
|
||||
sub run {
|
||||
my $c = shift;
|
||||
my @args = @_;
|
||||
|
||||
my $cfile = Mojo::File->new($Bin, '..' , 'lutim.conf');
|
||||
if (defined $ENV{MOJO_CONFIG}) {
|
||||
$cfile = Mojo::File->new($ENV{MOJO_CONFIG});
|
||||
unless (-e $cfile->to_abs) {
|
||||
$cfile = Mojo::File->new($Bin, '..', $ENV{MOJO_CONFIG});
|
||||
}
|
||||
}
|
||||
my $config = $c->app->plugin('Config', {
|
||||
file => $cfile,
|
||||
default => $default_config
|
||||
});
|
||||
|
||||
if (scalar(@{$config->{memcached_servers}})) {
|
||||
$c->app->plugin(CHI => {
|
||||
lutim_images_cache => {
|
||||
driver => 'Memcached',
|
||||
servers => $config->{memcached_servers},
|
||||
expires_in => '1 day',
|
||||
expires_on_backend => 1,
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
getopt \@args,
|
||||
'i|info=s{1,}' => \my @info,
|
||||
'c|csv' => \my $csv,
|
||||
'r|remove=s{1,}' => \my @remove,
|
||||
'y|yes' => \my $yes,
|
||||
'q|quiet' => \my $quiet,
|
||||
's|search=s' => \my $ip,
|
||||
'n|nuke=s' => \my $nuke,
|
||||
;
|
||||
|
||||
if (scalar @info) {
|
||||
c(@info)->each(
|
||||
sub {
|
||||
my ($e, $num) = @_;
|
||||
my $i = get_short($c, $e);
|
||||
print_infos($i, $csv) if $i;
|
||||
}
|
||||
);
|
||||
}
|
||||
if (scalar @remove) {
|
||||
c(@remove)->each(
|
||||
sub {
|
||||
my ($e, $num) = @_;
|
||||
my $i = get_short($c, $e);
|
||||
if ($i) {
|
||||
if ($i->enabled) {
|
||||
print_infos($i, 0) unless $quiet;
|
||||
delete_short($c, $i, $yes);
|
||||
} else {
|
||||
say sprintf('The image %s is already disabled', $e);
|
||||
}
|
||||
}
|
||||
}
|
||||
);
|
||||
if ($config->{cache_max_size} && !scalar(@{$config->{memcached_servers}})) {
|
||||
say "\nPlease reload Lutim to be sure that the deleted images are not in the cache anymore.";
|
||||
}
|
||||
}
|
||||
if ($ip) {
|
||||
my $u = Lutim::DB::Image->new(app => $c->app)->search_created_by($ip);
|
||||
my @shorts;
|
||||
$u->each(sub {
|
||||
my ($e, $num) = @_;
|
||||
push @shorts, $e->short;
|
||||
print_infos($e, $csv);
|
||||
});
|
||||
say sprintf('%d matching images', $u->size);
|
||||
say sprintf("If you want to delete those images, please do:\n carton exec script/lutim image --remove %s", join(' ', @shorts)) if @shorts;
|
||||
}
|
||||
if ($nuke) {
|
||||
my $i = get_short($c, $nuke);
|
||||
if ($i && $i->created_by) {
|
||||
my $u = Lutim::DB::Image->new(app => $c->app)->search_exact_created_by($i->created_by);
|
||||
my @shorts;
|
||||
say sprintf('%d images created by the same IP address (%s) than image %s', $u->size, $i->created_by, $nuke);
|
||||
my $confirm = ($yes) ? 'yes' : undef;
|
||||
unless (defined $confirm) {
|
||||
printf('Are you sure you want to remove those %d images? [N/y] ', $u->size);
|
||||
$confirm = <STDIN>;
|
||||
chomp $confirm;
|
||||
}
|
||||
if ($confirm =~ m/^y(es)?$/i) {
|
||||
$u->each(sub {
|
||||
my ($e, $num) = @_;
|
||||
my $i = get_short($c, $e->short);
|
||||
if ($i) {
|
||||
print_infos($i, $csv);
|
||||
if ($i->enabled) {
|
||||
delete_short($c, $i, 1);
|
||||
} else {
|
||||
say sprintf('The image %s is already disabled', $e->short);
|
||||
}
|
||||
}
|
||||
});
|
||||
} else {
|
||||
say 'Answer was not "y" or "yes". Aborting deletion.';
|
||||
}
|
||||
} elsif (! $i->created_by) {
|
||||
say sprintf('Image %s does not contain its creator’s IP address.', $nuke);
|
||||
} else {
|
||||
say sprintf('Sorry, can’t find image %s', $nuke);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
sub get_short {
|
||||
my $c = shift;
|
||||
my $short = shift;
|
||||
|
||||
my $i = Lutim::DB::Image->new(app => $c->app, short => $short);
|
||||
if ($i->path) {
|
||||
return $i;
|
||||
} else {
|
||||
say sprintf('Sorry, unable to find an image with short = %s', $short);
|
||||
return undef;
|
||||
}
|
||||
}
|
||||
|
||||
sub print_infos {
|
||||
my $i = shift;
|
||||
my $csv = shift;
|
||||
|
||||
my $msg;
|
||||
|
||||
if ($i) {
|
||||
if ($csv) {
|
||||
if (!$csv_header) {
|
||||
say 'short,path,footprint,enabled,mediatype,filename,counter,delete_at_first_view,delete_at_day,created_at,created_by,last_access_at,width,height';
|
||||
$csv_header = 1;
|
||||
}
|
||||
$msg = '"%s","%s","%s",%d,"%s","%s",%d,"%s",%d,"%s","%s","%s",%d,%d';
|
||||
} else {
|
||||
$msg = <<EOF;
|
||||
%s
|
||||
path : %s
|
||||
footprint : %s
|
||||
enabled : %d
|
||||
mediatype : %s
|
||||
filename : %s
|
||||
counter : %d
|
||||
delete_at_first_view : %d
|
||||
delete_at_day : %d
|
||||
created_at : %s
|
||||
created_by : %s
|
||||
last_access_at : %s
|
||||
width : %d
|
||||
height : %d
|
||||
EOF
|
||||
}
|
||||
my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = gmtime($i->created_at);
|
||||
my $created_at = sprintf('%d-%d-%d %d:%d:%d GMT', $year + 1900, ++$mon, $mday, $hour, $min, $sec);
|
||||
|
||||
my $last_access_at = '';
|
||||
if ($i->last_access_at) {
|
||||
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = gmtime($i->last_access_at);
|
||||
$last_access_at = sprintf('%d-%d-%d %d:%d:%d GMT', $year + 1900, ++$mon, $mday, $hour, $min, $sec);
|
||||
}
|
||||
say sprintf($msg,
|
||||
$i->short,
|
||||
$i->path,
|
||||
$i->footprint,
|
||||
$i->enabled,
|
||||
$i->mediatype,
|
||||
$i->filename,
|
||||
$i->counter,
|
||||
$i->delete_at_first_view,
|
||||
$i->delete_at_day,
|
||||
$created_at,
|
||||
$i->created_by,
|
||||
$last_access_at,
|
||||
$i->width,
|
||||
$i->height
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
sub delete_short {
|
||||
my $c = shift;
|
||||
my $i = shift;
|
||||
my $y = shift;
|
||||
|
||||
my $confirm = ($y) ? 'yes' : undef;
|
||||
unless (defined $confirm) {
|
||||
printf('Are you sure you want to remove this image (%s)? [N/y] ', $i->short);
|
||||
$confirm = <STDIN>;
|
||||
chomp $confirm;
|
||||
}
|
||||
if ($confirm =~ m/^y(es)?$/i) {
|
||||
$c->app->delete_image($i);
|
||||
} else {
|
||||
say 'Answer was not "y" or "yes". Aborting deletion.';
|
||||
}
|
||||
}
|
||||
|
||||
=encoding utf8
|
||||
|
||||
=head1 NAME
|
||||
|
||||
Lutim::Command::image - Manage URL in Lutim's database
|
||||
|
||||
=head1 SYNOPSIS
|
||||
|
||||
Usage:
|
||||
carton exec script/lutim image --info <short> <short> [--csv] Print infos about the space-separated images (--csv creates a CSV output)
|
||||
carton exec script/lutim image --remove <short> <short> [--yes] [--quiet] Delete the space-separated images (--yes disables confirmation, --quiet disables informations printing)
|
||||
carton exec script/lutim image --search <ip> Print infos about the images uploaded by this IP (database LIKE, may include images uploaded by other IPs)
|
||||
carton exec script/lutim image --nuke <short> Delete the image and all images sent by the same IP address and print infos about the deleted images
|
||||
|
||||
=cut
|
||||
|
||||
1;
|
||||
|
||||
@@ -41,10 +41,16 @@ use Locale::Maketext::Lexicon {
|
||||
_style => 'gettext',
|
||||
'*' => [
|
||||
Gettext => dirname(__FILE__) . '/I18N/*.po',
|
||||
Gettext => dirname(__FILE__) . '/../../../default/lib/Lutim/I18N/*.po',
|
||||
Gettext => \$app_dir . 'themes/default/lib/Lutim/I18N/*.po',
|
||||
]
|
||||
};
|
||||
|
||||
use vars qw(\$app_dir);
|
||||
BEGIN {
|
||||
use Cwd;
|
||||
my \$app_dir = getcwd;
|
||||
}
|
||||
|
||||
1;
|
||||
EOF
|
||||
|
||||
@@ -58,6 +64,7 @@ FR=lib/Lutim/I18N/fr.po
|
||||
DE=lib/Lutim/I18N/de.po
|
||||
ES=lib/Lutim/I18N/es.po
|
||||
OC=lib/Lutim/I18N/oc.po
|
||||
AR=lib/Lutim/I18N/ar.po
|
||||
SEDOPTS=-e "s\@SOME DESCRIPTIVE TITLE\@Lutim language file\@" \\
|
||||
-e "s\@YEAR THE PACKAGE'S COPYRIGHT HOLDER\@2015 Luc Didry\@" \\
|
||||
-e "s\@CHARSET\@utf8\@" \\
|
||||
@@ -74,6 +81,7 @@ locales:
|
||||
\$(XGETTEXT) -D templates -D ../default/templates -o \$(DE) 2>/dev/null
|
||||
\$(XGETTEXT) -D templates -D ../default/templates -o \$(ES) 2>/dev/null
|
||||
\$(XGETTEXT) -D templates -D ../default/templates -o \$(OC) 2>/dev/null
|
||||
\$(XGETTEXT) -D templates -D ../default/templates -o \$(AR) 2>/dev/null
|
||||
sed \$(SEDOPTS) -i \$(EN)
|
||||
sed \$(SEDOPTS2) -i \$(EN)
|
||||
sed \$(SEDOPTS) -i \$(FR)
|
||||
@@ -83,7 +91,9 @@ locales:
|
||||
sed \$(SEDOPTS) -i \$(ES)
|
||||
sed \$(SEDOPTS2) -i \$(ES)
|
||||
sed \$(SEDOPTS) -i \$(OC)
|
||||
sed \$(SEDOPTS2) -i \$(OC)
|
||||
sed \$(SEDOPTS) -i \$(OC)
|
||||
sed \$(SEDOPTS2) -i \$(AR)
|
||||
sed \$(SEDOPTS2) -i \$(AR)
|
||||
EOF
|
||||
|
||||
open $f, '>', File::Spec->catfile($home, 'Makefile') or die "Unable to open $home/Makefile: $!";
|
||||
|
||||
76
lib/Lutim/Controller/Authent.pm
Normal file
76
lib/Lutim/Controller/Authent.pm
Normal file
@@ -0,0 +1,76 @@
|
||||
# vim:set sw=4 ts=4 sts=4 ft=perl expandtab:
|
||||
package Lutim::Controller::Authent;
|
||||
use Mojo::Base 'Mojolicious::Controller';
|
||||
|
||||
sub index {
|
||||
my $c = shift;
|
||||
if ($c->is_user_authenticated) {
|
||||
$c->redirect_to('index');
|
||||
} else {
|
||||
$c->render(template => 'login');
|
||||
}
|
||||
}
|
||||
|
||||
sub login {
|
||||
my $c = shift;
|
||||
my $login = $c->param('login');
|
||||
my $pwd = $c->param('password');
|
||||
my $ref = $c->req->headers->referrer;
|
||||
|
||||
if($c->authenticate($login, $pwd)) {
|
||||
$c->respond_to(
|
||||
json => sub {
|
||||
my $c = shift;
|
||||
$c->render(
|
||||
json => {
|
||||
success => Mojo::JSON->true,
|
||||
msg => $c->l('You have been successfully logged in.')
|
||||
}
|
||||
);
|
||||
},
|
||||
any => sub {
|
||||
$c->redirect_to($ref);
|
||||
}
|
||||
);
|
||||
} else {
|
||||
my $msg = $c->l('Please, check your credentials: unable to authenticate.');
|
||||
$c->respond_to(
|
||||
json => sub {
|
||||
my $c = shift;
|
||||
$c->render(
|
||||
json => {
|
||||
success => Mojo::JSON->false,
|
||||
msg => $msg
|
||||
}
|
||||
);
|
||||
},
|
||||
any => sub {
|
||||
$c->stash(msg => $msg);
|
||||
$c->render(template => 'login')
|
||||
}
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
sub log_out {
|
||||
my $c = shift;
|
||||
if ($c->is_user_authenticated) {
|
||||
$c->logout;
|
||||
}
|
||||
$c->respond_to(
|
||||
json => sub {
|
||||
my $c = shift;
|
||||
$c->render(
|
||||
json => {
|
||||
success => Mojo::JSON->true,
|
||||
msg => $c->l('You have been successfully logged out.')
|
||||
}
|
||||
);
|
||||
},
|
||||
any => sub {
|
||||
$c->render(template => 'logout');
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
1;
|
||||
@@ -1,8 +1,8 @@
|
||||
# vim:set sw=4 ts=4 sts=4 expandtab:
|
||||
package Lutim::Controller;
|
||||
package Lutim::Controller::Image;
|
||||
use Mojo::Asset::Memory;
|
||||
use Mojo::Base 'Mojolicious::Controller';
|
||||
use Mojo::Util qw(url_escape url_unescape b64_encode encode);
|
||||
use Mojo::Asset::Memory;
|
||||
use Mojo::JSON qw(true false);
|
||||
use Lutim::DB::Image;
|
||||
use DateTime;
|
||||
@@ -13,6 +13,7 @@ use File::MimeInfo::Magic qw(mimetype extensions);
|
||||
use IO::Scalar;
|
||||
use Image::ExifTool;
|
||||
use Archive::Zip qw( :ERROR_CODES :CONSTANTS );
|
||||
use Data::Entropy qw(entropy_source);
|
||||
|
||||
use vars qw($im_loaded);
|
||||
BEGIN {
|
||||
@@ -36,7 +37,7 @@ sub home {
|
||||
|
||||
$c->on(finish => sub {
|
||||
my $c = shift;
|
||||
$c->app->log->info('[HIT] someone visited site index');
|
||||
$c->app->log->info('[HIT] someone visited site index') unless $c->config('quiet_logs');
|
||||
}
|
||||
);
|
||||
}
|
||||
@@ -45,6 +46,19 @@ sub about {
|
||||
shift->render(template => 'about');
|
||||
}
|
||||
|
||||
sub change_lang {
|
||||
my $c = shift;
|
||||
my $l = $c->param('l');
|
||||
|
||||
$c->cookie(lutim_lang => $l, { path => $c->config('prefix') });
|
||||
|
||||
if ($c->req->headers->referrer) {
|
||||
return $c->redirect_to($c->req->headers->referrer);
|
||||
} else {
|
||||
return $c->redirect_to('/');
|
||||
}
|
||||
}
|
||||
|
||||
sub stats {
|
||||
my $c = shift;
|
||||
|
||||
@@ -67,10 +81,36 @@ sub infos {
|
||||
default_delay => $c->config('default_delay'),
|
||||
max_delay => $c->config('max_delay'),
|
||||
always_encrypt => ($c->config('always_encrypt')) ? true : false,
|
||||
upload_enabled => ($c->app->stop_upload()) ? false : true,
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
sub about_img {
|
||||
my $c = shift;
|
||||
my $short = $c->param('short');
|
||||
|
||||
my $image = Lutim::DB::Image->new(app => $c->app, short => $short);
|
||||
if ($image->enabled && $image->path) {
|
||||
return $c->render(
|
||||
json => {
|
||||
success => true,
|
||||
data => {
|
||||
width => $image->width,
|
||||
height => $image->height,
|
||||
}
|
||||
}
|
||||
);
|
||||
} else {
|
||||
return $c->render(
|
||||
json => {
|
||||
success => false,
|
||||
msg => $c->l('Unable to find the image %1.', $short)
|
||||
}
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
sub webapp {
|
||||
my $c = shift;
|
||||
|
||||
@@ -119,13 +159,13 @@ sub modify {
|
||||
if ($image->mod_token ne $token || $token eq '') {
|
||||
$msg = $c->l('The delete token is invalid.');
|
||||
} else {
|
||||
$c->app->log->info('[MODIFICATION] someone modify '.$image->filename.' with token method (path: '.$image->path.')');
|
||||
$c->app->log->info('[MODIFICATION] someone modify '.$image->filename.' with token method (path: '.$image->path.')') unless $c->config('quiet_logs');
|
||||
|
||||
$image->delete_at_day(($c->param('delete-day') && ($c->param('delete-day') <= $c->max_delay || $c->max_delay == 0)) ? $c->param('delete-day') : $c->max_delay);
|
||||
$image->delete_at_first_view(($c->param('first-view')) ? 1 : 0);
|
||||
$image->write;
|
||||
|
||||
$msg = $c->l('The image\'s delay has been successfully modified');
|
||||
$msg = $c->l('The image’s delay has been successfully modified');
|
||||
if (defined($c->param('format')) && $c->param('format') eq 'json') {
|
||||
return $c->render(
|
||||
json => {
|
||||
@@ -156,7 +196,7 @@ sub modify {
|
||||
return $c->redirect_to('/');
|
||||
}
|
||||
} else {
|
||||
$c->app->log->info('[UNSUCCESSFUL] someone tried to modify '.$short.' but it does\'nt exist.');
|
||||
$c->app->log->info('[UNSUCCESSFUL] someone tried to modify '.$short.' but it doesn’t exist.') unless $c->config('quiet_logs');
|
||||
|
||||
# Image never existed
|
||||
my $msg = $c->l('Unable to find the image %1.', $short);
|
||||
@@ -189,7 +229,7 @@ sub delete {
|
||||
} elsif ($image->enabled() == 0) {
|
||||
$msg = $c->l('The image %1 has already been deleted.', $image->filename);
|
||||
} else {
|
||||
$c->app->log->info('[DELETION] someone made '.$image->filename.' removed with token method (path: '.$image->path.')');
|
||||
$c->app->log->info('[DELETION] someone made '.$image->filename.' removed with token method (path: '.$image->path.')') unless $c->config('quiet_logs');
|
||||
|
||||
$c->delete_image($image);
|
||||
return $c->respond_to(
|
||||
@@ -223,7 +263,7 @@ sub delete {
|
||||
}
|
||||
);
|
||||
} else {
|
||||
$c->app->log->info('[UNSUCCESSFUL] someone tried to delete '.$short.' but it does\'nt exist.');
|
||||
$c->app->log->info('[UNSUCCESSFUL] someone tried to delete '.$short.' but it doesn’t exist.') unless $c->config('quiet_logs');
|
||||
|
||||
# Image never existed
|
||||
return $c->respond_to(
|
||||
@@ -234,7 +274,7 @@ sub delete {
|
||||
}
|
||||
},
|
||||
any => sub {
|
||||
shift->render_not_found;
|
||||
$c->helpers->reply->not_found;
|
||||
}
|
||||
);
|
||||
}
|
||||
@@ -245,7 +285,24 @@ sub add {
|
||||
my $upload = $c->param('file');
|
||||
my $file_url = $c->param('lutim-file-url');
|
||||
my $keep_exif = $c->param('keep-exif');
|
||||
my $wm = $c->param('watermark');
|
||||
|
||||
if ($c->config('disable_api')) {
|
||||
my $unauthorized_api = (!defined($c->req->headers->referrer) || Mojo::URL->new($c->req->headers->referrer)->host ne Mojo::URL->new('https://'.$c->req->headers->host)->host);
|
||||
if ($unauthorized_api) {
|
||||
my $msg = $c->l('Sorry, the API is disabled');
|
||||
$c->app->log->info('Blocked API call for '.$c->ip(1));
|
||||
return $c->respond_to(
|
||||
json => { json => { success => Mojo::JSON->false, msg => $msg } },
|
||||
any => sub {
|
||||
shift->render(
|
||||
template => 'index',
|
||||
msg => $msg,
|
||||
);
|
||||
}
|
||||
);
|
||||
}
|
||||
}
|
||||
if(!defined($c->stash('stop_upload'))) {
|
||||
if (defined($file_url) && $file_url) {
|
||||
if (is_http_uri($file_url) || is_https_uri($file_url)) {
|
||||
@@ -366,14 +423,56 @@ sub add {
|
||||
# Automatic rotation from EXIF tag
|
||||
$im->AutoOrient();
|
||||
|
||||
# Update the uploaded file with it's auto-rotated clone
|
||||
# Get dimensions
|
||||
$width = $im->Get('width');
|
||||
$height = $im->Get('height');
|
||||
|
||||
# Optionally add watermark
|
||||
if ($c->config('watermark_path') && (
|
||||
($wm && $wm ne 'none') ||
|
||||
$c->config('watermark_enforce') ne 'none'
|
||||
)) {
|
||||
my $watermarkim = Image::Magick->new;
|
||||
$watermarkim->ReadImage($c->config('watermark_path'));
|
||||
$watermarkim->Evaluate(
|
||||
operator => 'Multiply',
|
||||
value => 0.25,
|
||||
channel => 'Alpha'
|
||||
);
|
||||
if ($height <= 80) {
|
||||
$watermarkim->Resize(geometry => 'x10');
|
||||
} else {
|
||||
$watermarkim->Resize(geometry => 'x80');
|
||||
}
|
||||
|
||||
# Add one watermark or repeat it all over the image?
|
||||
my $tilingw = 1 if ($c->config('watermark_enforce') eq 'tiling' || $wm eq 'tiling');
|
||||
my $singlew = 1 if ($c->config('watermark_enforce') eq 'single' || $wm eq 'single');
|
||||
if ($tilingw) {
|
||||
$im->Composite(
|
||||
image => $watermarkim,
|
||||
compose => 'Dissolve',
|
||||
tile => 'True',
|
||||
gravity => 'Center'
|
||||
);
|
||||
} elsif ($singlew) {
|
||||
$im->Composite(
|
||||
image => $watermarkim,
|
||||
compose => 'Dissolve',
|
||||
tile => 'False',
|
||||
x => '20',
|
||||
y => '20',
|
||||
gravity => $c->config('watermark_placement')
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
# Update the uploaded file with it's auto-rotated/watermarked clone
|
||||
my $asset = Mojo::Asset::Memory->new->add_chunk($im->ImageToBlob());
|
||||
$upload->asset($asset);
|
||||
|
||||
# Create the thumbnail
|
||||
$width = $im->Get('width');
|
||||
$height = $im->Get('height');
|
||||
$im->Resize(geometry=>'x85');
|
||||
$im->Resize(geometry => 'x85');
|
||||
|
||||
$thumb = 'data:'.$mediatype.';base64,';
|
||||
if ($mediatype eq 'image/gif') {
|
||||
@@ -384,29 +483,29 @@ sub add {
|
||||
|
||||
}
|
||||
|
||||
unless ((defined($keep_exif) && $keep_exif) || $mediatype eq 'image/svg+xml' || $mediatype !~ m#image/(x-)?xcf# || $mediatype ne 'image/webp') {
|
||||
# Remove the EXIF tags
|
||||
my $data = new IO::Scalar \$upload->slurp();
|
||||
my $et = new Image::ExifTool;
|
||||
unless (defined($keep_exif) && $keep_exif) {
|
||||
if ($mediatype ne 'image/svg+xml' && $mediatype !~ m#image/(x-)?xcf# && $mediatype ne 'image/webp') {
|
||||
# Remove the EXIF tags
|
||||
my $data = new IO::Scalar \$upload->slurp();
|
||||
my $et = Image::ExifTool->new;
|
||||
|
||||
# Use $data in Image::ExifTool object
|
||||
$et->ExtractInfo($data);
|
||||
# Remove all metadata
|
||||
$et->SetNewValue('*', undef);
|
||||
# Remove all metadata
|
||||
$et->SetNewValue('*');
|
||||
|
||||
# Create a temporary IO::Scalar to write into
|
||||
my $temp;
|
||||
my $a = new IO::Scalar \$temp;
|
||||
$et->WriteInfo($data, $a);
|
||||
# Create a temporary IO::Scalar to write into
|
||||
my $temp;
|
||||
my $a = new IO::Scalar \$temp;
|
||||
$et->WriteInfo($data, $a);
|
||||
|
||||
# Update the uploaded file with it's no-tags clone
|
||||
$data = Mojo::Asset::Memory->new->add_chunk($temp);
|
||||
$upload->asset($data);
|
||||
# Update the uploaded file with it's no-tags clone
|
||||
$data = Mojo::Asset::Memory->new->add_chunk($temp);
|
||||
$upload->asset($data);
|
||||
}
|
||||
}
|
||||
|
||||
my $key;
|
||||
my ($key, $iv);
|
||||
if ($c->param('crypt') || $c->config('always_encrypt')) {
|
||||
($upload, $key) = $c->crypt($upload, $filename);
|
||||
($upload, $key, $iv) = $c->crypt($upload, $filename);
|
||||
}
|
||||
$upload->move_to($path);
|
||||
|
||||
@@ -421,10 +520,11 @@ sub add {
|
||||
->created_by($ip)
|
||||
->width($width)
|
||||
->height($height)
|
||||
->iv($iv)
|
||||
->write;
|
||||
|
||||
# Log image creation
|
||||
$c->app->log->info('[CREATION] '.$ip.' pushed '.$filename.' (path: '.$path.')');
|
||||
$c->app->log->info('[CREATION] '.$ip.' pushed '.$filename.' (path: '.$path.')') unless $c->config('quiet_logs');
|
||||
|
||||
# Give url to user
|
||||
$short = $record->short;
|
||||
@@ -512,14 +612,16 @@ sub short {
|
||||
my $short = $c->param('short');
|
||||
my $touit = $c->param('t');
|
||||
my $key = $c->param('key');
|
||||
my $thumb = $c->param('thumb');
|
||||
my $thumb;
|
||||
$thumb = '' if defined $c->param('thumb');
|
||||
$thumb = $c->param('width') if defined $c->param('width');
|
||||
my $dl = (defined($c->param('dl'))) ? 'attachment' : 'inline';
|
||||
|
||||
my $image = Lutim::DB::Image->new(app => $c->app, short => $short);
|
||||
if ($image->enabled && $image->path) {
|
||||
if($image->delete_at_day && $image->created_at + $image->delete_at_day * 86400 <= time()) {
|
||||
# Log deletion
|
||||
$c->app->log->info('[DELETION] someone tried to view '.$image->filename.' but it has been removed by expiration (path: '.$image->path.')');
|
||||
$c->app->log->info('[DELETION] someone tried to view '.$image->filename.' but it has been removed by expiration (path: '.$image->path.')') unless $c->config('quiet_logs');
|
||||
|
||||
# Delete image
|
||||
$c->delete_image($image);
|
||||
@@ -532,7 +634,7 @@ sub short {
|
||||
}
|
||||
|
||||
my $test;
|
||||
if (defined($touit)) {
|
||||
if (defined($touit) && $image->mediatype !~ m/svg/) {
|
||||
$test = 1;
|
||||
my $short = $image->short;
|
||||
$short .= '/'.$key if (defined($key));
|
||||
@@ -541,7 +643,7 @@ sub short {
|
||||
if (defined($image->width) && defined($image->height)) {
|
||||
($width, $height) = ($image->width, $image->height);
|
||||
} elsif ($im_loaded) {
|
||||
my $upload = $c->decrypt($key, $image->path);
|
||||
my $upload = $c->decrypt($key, $image->path, $image->iv);
|
||||
my $im = Image::Magick->new;
|
||||
$im->BlobToImage($upload->slurp);
|
||||
$width = $im->Get('width');
|
||||
@@ -565,7 +667,7 @@ sub short {
|
||||
# Delete image if needed
|
||||
if ($image->delete_at_first_view && $image->counter >= 1) {
|
||||
# Log deletion
|
||||
$c->app->log->info('[DELETION] someone made '.$image->filename.' removed (path: '.$image->path.')');
|
||||
$c->app->log->info('[DELETION] someone made '.$image->filename.' removed (path: '.$image->path.')') unless $c->config('quiet_logs');
|
||||
|
||||
# Delete image
|
||||
$c->delete_image($image);
|
||||
@@ -575,12 +677,7 @@ sub short {
|
||||
);
|
||||
return $c->redirect_to('/');
|
||||
} else {
|
||||
my $expires = ($image->delete_at_day) ? $image->delete_at_day : 360;
|
||||
my $dt = DateTime->from_epoch( epoch => $expires * 86400 + $image->created_at);
|
||||
$dt->set_time_zone('GMT');
|
||||
$expires = $dt->strftime("%a, %d %b %Y %H:%M:%S GMT");
|
||||
|
||||
$test = $c->render_file($im_loaded, $image->filename, $image->path, $image->mediatype, $dl, $expires, $image->delete_at_first_view, $key, $thumb);
|
||||
$test = $c->render_file($im_loaded, $image, $dl, $key, $thumb);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -588,28 +685,32 @@ sub short {
|
||||
# Update counter
|
||||
$c->on(finish => sub {
|
||||
# Log access
|
||||
$c->app->log->info('[VIEW] someone viewed '.$image->filename.' (path: '.$image->path.')');
|
||||
$c->app->log->info('[VIEW] someone viewed '.$image->filename.' (path: '.$image->path.')') unless $c->config('quiet_logs');
|
||||
|
||||
# Update record
|
||||
if ($c->config('minion')->{enabled}) {
|
||||
$c->app->minion->enqueue(accessed => [$image->short, time]);
|
||||
} else {
|
||||
$image->accessed(time);
|
||||
unless ($c->config('disable_img_stats')) {
|
||||
if ($c->config('minion')->{enabled}) {
|
||||
$c->app->minion->enqueue(accessed => [$image->short, time]);
|
||||
} else {
|
||||
$image->accessed(time);
|
||||
}
|
||||
}
|
||||
|
||||
# Delete image if needed
|
||||
if ($image->delete_at_first_view) {
|
||||
# Log deletion
|
||||
$c->app->log->info('[DELETION] someone made '.$image->filename.' removed (path: '.$image->path.')');
|
||||
$c->app->log->info('[DELETION] someone made '.$image->filename.' removed (path: '.$image->path.')') unless $c->config('quiet_logs');
|
||||
|
||||
# Delete image
|
||||
$c->delete_image($image);
|
||||
}
|
||||
});
|
||||
} else {
|
||||
$c->app->log->error('[ERROR] Can’t render '.$image->short);
|
||||
}
|
||||
} elsif ($image->path && !$image->enabled) {
|
||||
# Log access try
|
||||
$c->app->log->info('[NOT FOUND] someone tried to view '.$short.' but it does\'nt exist anymore.');
|
||||
$c->app->log->info('[NOT FOUND] someone tried to view '.$short.' but it doesn’t exist anymore.') unless $c->config('quiet_logs');
|
||||
|
||||
# Warn user
|
||||
$c->flash(
|
||||
@@ -618,7 +719,7 @@ sub short {
|
||||
return $c->redirect_to('/');
|
||||
} else {
|
||||
# Image never existed
|
||||
$c->render_not_found;
|
||||
$c->helpers->reply->not_found;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -650,7 +751,7 @@ sub zip {
|
||||
my $filename = $image->filename;
|
||||
if($image->delete_at_day && $image->created_at + $image->delete_at_day * 86400 <= time()) {
|
||||
# Log deletion
|
||||
$c->app->log->info('[DELETION] someone tried to view '.$image->filename.' but it has been removed by expiration (path: '.$image->path.')');
|
||||
$c->app->log->info('[DELETION] someone tried to view '.$image->filename.' but it has been removed by expiration (path: '.$image->path.')') unless $c->config('quiet_logs');
|
||||
|
||||
# Delete image
|
||||
$c->delete_image($image);
|
||||
@@ -663,7 +764,7 @@ sub zip {
|
||||
# Delete image if needed
|
||||
if ($image->delete_at_first_view && $image->counter >= 1) {
|
||||
# Log deletion
|
||||
$c->app->log->info('[DELETION] someone made '.$image->filename.' removed (path: '.$image->path.')');
|
||||
$c->app->log->info('[DELETION] someone made '.$image->filename.' removed (path: '.$image->path.')') unless $c->config('quiet_logs');
|
||||
|
||||
# Delete image
|
||||
$c->delete_image($image);
|
||||
@@ -684,24 +785,26 @@ sub zip {
|
||||
}
|
||||
|
||||
if ($key) {
|
||||
$zip->addString($c->decrypt($key, $path)->slurp, "images/$filename");
|
||||
$zip->addString($c->decrypt($key, $path, $image->iv), "images/$filename");
|
||||
} else {
|
||||
$zip->addFile($path, "images/$filename");
|
||||
}
|
||||
|
||||
# Log access
|
||||
$c->app->log->info('[VIEW] someone viewed '.$image->filename.' (path: '.$image->path.')');
|
||||
$c->app->log->info('[VIEW] someone viewed '.$image->filename.' (path: '.$image->path.')') unless $c->config('quiet_logs');
|
||||
|
||||
# Update counter and record
|
||||
if ($c->config('minion')->{enabled}) {
|
||||
$c->app->minion->enqueue(accessed => [$image->short, time]);
|
||||
} else {
|
||||
$image->accessed(time);
|
||||
unless ($c->config('disable_img_stats')) {
|
||||
if ($c->config('minion')->{enabled}) {
|
||||
$c->app->minion->enqueue(accessed => [$image->short, time]);
|
||||
} else {
|
||||
$image->accessed(time);
|
||||
}
|
||||
}
|
||||
}
|
||||
} elsif ($image->path && !$image->enabled) {
|
||||
# Log access try
|
||||
$c->app->log->info('[NOT FOUND] someone tried to view '.$short.' but it does\'nt exist anymore.');
|
||||
$c->app->log->info('[NOT FOUND] someone tried to view '.$short.' but it doesn’t exist anymore.') unless $c->config('quiet_logs');
|
||||
|
||||
# Warn user
|
||||
$zip->addString(encode('UTF-8', $c->l('Unable to find the image: it has been deleted.')), 'images/'.$image->filename.'.txt');
|
||||
@@ -744,4 +847,16 @@ sub zip {
|
||||
}
|
||||
}
|
||||
|
||||
sub random {
|
||||
my $c = shift;
|
||||
my $imgs = $c->every_param('i');
|
||||
|
||||
my $img_nb = scalar(@{$imgs});
|
||||
if ($img_nb) {
|
||||
$c->redirect_to($c->prefix.$imgs->[entropy_source->get_int($img_nb)]);
|
||||
} else {
|
||||
$c->render_not_found;
|
||||
}
|
||||
}
|
||||
|
||||
1;
|
||||
@@ -17,6 +17,7 @@ has 'last_access_at';
|
||||
has 'mod_token';
|
||||
has 'width';
|
||||
has 'height';
|
||||
has 'iv';
|
||||
has 'app';
|
||||
|
||||
=head1 NAME
|
||||
@@ -64,6 +65,8 @@ Have a look at Lutim::DB::Image::SQLite's code: it's simple and may be more unde
|
||||
|
||||
=item B<height> : integer
|
||||
|
||||
=item B<iv> : initialization vector for the file encryption
|
||||
|
||||
=item B<app> : a mojolicious object
|
||||
|
||||
=back
|
||||
@@ -125,7 +128,8 @@ sub to_hash {
|
||||
last_access_at => $c->last_access_at,
|
||||
mod_token => $c->mod_token,
|
||||
width => $c->width,
|
||||
height => $c->height
|
||||
height => $c->height,
|
||||
iv => $c->iv
|
||||
};
|
||||
}
|
||||
|
||||
@@ -152,7 +156,7 @@ sub to_hash {
|
||||
=item B<Arguments> : two mandatory parameters: one integer, the delete_at_day attribute, a boolean (0 or 1), the enabled attribute
|
||||
an optional parameter: an unix timestamp
|
||||
|
||||
=item B<Purpose> : count how many images there is with the given delete_at_day attribute, and enabled or disabled, depending on the given enabled attribute
|
||||
=item B<Purpose> : count how many images there are with the given delete_at_day attribute, and enabled or disabled, depending on the given enabled attribute
|
||||
if the optional parameter is given, count only images according to the given mandatory parameters that were created before the timestamp
|
||||
|
||||
=item B<Returns> : integer
|
||||
@@ -237,7 +241,7 @@ sub to_hash {
|
||||
|
||||
=item B<Arguments> : none
|
||||
|
||||
=item B<Purpose> : counts the number of record which path is null
|
||||
=item B<Purpose> : counts the number of records whose path is null
|
||||
|
||||
=item B<Returns> : integer
|
||||
|
||||
@@ -251,7 +255,7 @@ sub to_hash {
|
||||
|
||||
=item B<Arguments> : none
|
||||
|
||||
=item B<Purpose> : counts the number of record which path is not null
|
||||
=item B<Purpose> : counts the number of records whose path is not null
|
||||
|
||||
=item B<Returns> : integer
|
||||
|
||||
@@ -327,6 +331,34 @@ sub to_hash {
|
||||
|
||||
=back
|
||||
|
||||
=head2 search_created_by
|
||||
|
||||
=over 1
|
||||
|
||||
=item B<Usage> : C<$c-E<gt>search_created_by($ip)>
|
||||
|
||||
=item B<Arguments> : an IP address
|
||||
|
||||
=item B<Purpose> : get enabled images that have been uploaded by this IP address (database query: LIKE '$ip%', results may include images uploaded by similar IP addresses)
|
||||
|
||||
=item B<Returns> : a Mojo::Collection object containing the matching images as Lutim::DB::Image objects
|
||||
|
||||
=back
|
||||
|
||||
=head2 search_exact_created_by
|
||||
|
||||
=over 1
|
||||
|
||||
=item B<Usage> : C<$c-E<gt>search_exact_created_by($ip)>
|
||||
|
||||
=item B<Arguments> : an IP address
|
||||
|
||||
=item B<Purpose> : get enabled images that have been uploaded by this IP address
|
||||
|
||||
=item B<Returns> : a Mojo::Collection object containing the matching images as Lutim::DB::Image objects
|
||||
|
||||
=back
|
||||
|
||||
=cut
|
||||
|
||||
1;
|
||||
|
||||
@@ -78,12 +78,15 @@ sub select_empty {
|
||||
}
|
||||
|
||||
sub write {
|
||||
my $c = shift;
|
||||
my $c = shift;
|
||||
my $provisioning = shift;
|
||||
|
||||
if ($c->record) {
|
||||
$c->app->pg->db->query('UPDATE lutim SET counter = ?, created_at = ?, created_by = ?, delete_at_day = ?, delete_at_first_view = ?, enabled = ?, filename = ?, footprint = ?, height = ?, last_access_at = ?, mediatype = ?, mod_token = ?, path = ?, short = ?, width = ? WHERE short = ?', $c->counter, $c->created_at, $c->created_by, $c->delete_at_day, $c->delete_at_first_view, $c->enabled, $c->filename, $c->footprint, $c->height, $c->last_access_at, $c->mediatype, $c->mod_token, $c->path, $c->short, $c->width, $c->short);
|
||||
$c->app->pg->db->query('UPDATE lutim SET counter = ?, created_at = ?, created_by = ?, delete_at_day = ?, delete_at_first_view = ?, enabled = ?, filename = ?, footprint = ?, height = ?, last_access_at = ?, mediatype = ?, mod_token = ?, path = ?, short = ?, width = ?, iv = ? WHERE short = ?', $c->counter, $c->created_at, $c->created_by, $c->delete_at_day, $c->delete_at_first_view, $c->enabled, $c->filename, $c->footprint, $c->height, $c->last_access_at, $c->mediatype, $c->mod_token, $c->path, $c->short, $c->width, $c->iv, $c->short);
|
||||
} else {
|
||||
$c->app->pg->db->query('INSERT INTO lutim (counter, created_at, created_by, delete_at_day, delete_at_first_view, enabled, filename, footprint, height, last_access_at, mediatype, mod_token, path, short, width) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)', $c->counter, $c->created_at, $c->created_by, $c->delete_at_day, $c->delete_at_first_view, $c->enabled, $c->filename, $c->footprint, $c->height, $c->last_access_at, $c->mediatype, $c->mod_token, $c->path, $c->short, $c->width);
|
||||
my $query = 'INSERT INTO lutim (counter, created_at, created_by, delete_at_day, delete_at_first_view, enabled, filename, footprint, height, last_access_at, mediatype, mod_token, path, short, width, iv) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)';
|
||||
$query .= ' ON CONFLICT DO NOTHING' if $provisioning;
|
||||
$c->app->pg->db->query($query, $c->counter, $c->created_at, $c->created_by, $c->delete_at_day, $c->delete_at_first_view, $c->enabled, $c->filename, $c->footprint, $c->height, $c->last_access_at, $c->mediatype, $c->mod_token, $c->path, $c->short, $c->width, $c->iv);
|
||||
$c->record(1);
|
||||
}
|
||||
|
||||
@@ -189,6 +192,48 @@ sub disable {
|
||||
return $c;
|
||||
}
|
||||
|
||||
sub search_created_by {
|
||||
my $c = shift;
|
||||
my $ip = shift;
|
||||
|
||||
my @images;
|
||||
|
||||
my $records = $c->app->pg->db->select('lutim', undef, { enabled => 1, created_by => { -like => $ip.'%' } })->hashes;
|
||||
|
||||
$records->each(
|
||||
sub {
|
||||
my ($e, $num) = @_;
|
||||
my $i = Lutim::DB::Image->new(app => $c->app);
|
||||
$i->_slurp($e);
|
||||
|
||||
push @images, $i;
|
||||
}
|
||||
);
|
||||
|
||||
return c(@images);
|
||||
}
|
||||
|
||||
sub search_exact_created_by {
|
||||
my $c = shift;
|
||||
my $ip = shift;
|
||||
|
||||
my @images;
|
||||
|
||||
my $records = $c->app->pg->db->select('lutim', undef, { enabled => 1, created_by => $ip })->hashes;
|
||||
|
||||
$records->each(
|
||||
sub {
|
||||
my ($e, $num) = @_;
|
||||
my $i = Lutim::DB::Image->new(app => $c->app);
|
||||
$i->_slurp($e);
|
||||
|
||||
push @images, $i;
|
||||
}
|
||||
);
|
||||
|
||||
return c(@images);
|
||||
}
|
||||
|
||||
sub _slurp {
|
||||
my $c = shift;
|
||||
my $r = shift;
|
||||
@@ -220,6 +265,7 @@ sub _slurp {
|
||||
$c->mod_token($image->{mod_token});
|
||||
$c->width($image->{width});
|
||||
$c->height($image->{height});
|
||||
$c->iv($image->{iv});
|
||||
|
||||
$c->record(1);
|
||||
}
|
||||
|
||||
@@ -1,10 +1,9 @@
|
||||
# vim:set sw=4 ts=4 sts=4 ft=perl expandtab:
|
||||
package Lutim::DB::Image::SQLite;
|
||||
use Mojo::Base 'Lutim::DB::Image';
|
||||
use Lutim::DB::SQLite;
|
||||
use Mojo::Collection 'c';
|
||||
|
||||
has 'record';
|
||||
has 'record' => 0;
|
||||
|
||||
sub new {
|
||||
my $c = shift;
|
||||
@@ -19,13 +18,10 @@ sub accessed {
|
||||
my $c = shift;
|
||||
my $time = shift;
|
||||
|
||||
$c->record->update(
|
||||
counter => $c->counter + 1,
|
||||
last_access_at => $time
|
||||
);
|
||||
|
||||
$c->counter($c->record->counter);
|
||||
$c->last_access_at($c->record->last_access_at);
|
||||
$c->app->sqlite->db->query('UPDATE lutim SET counter = counter + 1, last_access_at = ? WHERE short = ?', $time, $c->short);
|
||||
my $h = $c->app->sqlite->db->query('SELECT counter, last_access_at FROM lutim WHERE short = ?', $c->short)->hashes->first;
|
||||
$c->counter($h->{counter});
|
||||
$c->last_access_at($h->{last_access_at});
|
||||
|
||||
return $c;
|
||||
}
|
||||
@@ -37,9 +33,9 @@ sub count_delete_at_day_endis {
|
||||
my $created = shift;
|
||||
|
||||
if (defined $created) {
|
||||
return Lutim::DB::SQLite::Lutim->count('WHERE path IS NOT NULL AND delete_at_day = ? AND enabled = ? AND created_at < ?', $day, $enabled, $created);
|
||||
return $c->app->sqlite->db->query('SELECT count(short) AS count FROM lutim WHERE path IS NOT NULL AND delete_at_day = ? AND enabled = ? AND created_at < ?', $day, $enabled, $created)->hashes->first->{count};
|
||||
} else {
|
||||
return Lutim::DB::SQLite::Lutim->count('WHERE path IS NOT NULL AND delete_at_day = ? AND enabled = ?', $day, $enabled);
|
||||
return $c->app->sqlite->db->query('SELECT count(short) AS count FROM lutim WHERE path IS NOT NULL AND delete_at_day = ? AND enabled = ?', $day, $enabled)->hashes->first->{count};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -47,7 +43,7 @@ sub count_created_before {
|
||||
my $c = shift;
|
||||
my $time = shift;
|
||||
|
||||
return Lutim::DB::SQLite::Lutim->count('WHERE path IS NOT NULL AND created_at < ?', $time);
|
||||
return $c->app->sqlite->db->query('SELECT count(short) AS count FROM lutim WHERE path IS NOT NULL AND created_at < ?', $time)->hashes->first->{count};
|
||||
}
|
||||
|
||||
sub select_created_after {
|
||||
@@ -56,15 +52,17 @@ sub select_created_after {
|
||||
|
||||
my @images;
|
||||
|
||||
my @records = Lutim::DB::SQLite::Lutim->select('WHERE path IS NOT NULL AND created_at >= ?', $time);
|
||||
my $records = $c->app->sqlite->db->query('SELECT * FROM lutim WHERE path IS NOT NULL AND created_at >= ?', $time)->hashes;
|
||||
|
||||
for my $e (@records) {
|
||||
my $i = Lutim::DB::Image->new(app => $c->app);
|
||||
$i->record($e);
|
||||
$i->_slurp;
|
||||
$records->each(
|
||||
sub {
|
||||
my ($e, $num) = @_;
|
||||
my $i = Lutim::DB::Image->new(app => $c->app);
|
||||
$i->_slurp($e);
|
||||
|
||||
push @images, $i;
|
||||
}
|
||||
push @images, $i;
|
||||
}
|
||||
);
|
||||
|
||||
return c(@images);
|
||||
}
|
||||
@@ -72,55 +70,25 @@ sub select_created_after {
|
||||
sub select_empty {
|
||||
my $c = shift;
|
||||
|
||||
my $record = c(Lutim::DB::SQLite::Lutim->select('WHERE path IS NULL'))->shuffle->first;
|
||||
$record->update(path => 'used');
|
||||
my $record = $c->app->sqlite->db->query('SELECT * FROM lutim WHERE path IS NULL')->hashes->shuffle->first;
|
||||
$c->app->sqlite->db->query('UPDATE lutim SET path = ? WHERE short = ?', 'used', $record->{short});
|
||||
|
||||
$c->record($record);
|
||||
$c = $c->_slurp;
|
||||
$c = $c->_slurp($record);
|
||||
|
||||
return $c;
|
||||
}
|
||||
|
||||
sub write {
|
||||
my $c = shift;
|
||||
my $c = shift;
|
||||
my $provisioning = shift;
|
||||
|
||||
if ($c->record) {
|
||||
$c->record->update(
|
||||
counter => $c->counter,
|
||||
created_at => $c->created_at,
|
||||
created_by => $c->created_by,
|
||||
delete_at_day => $c->delete_at_day,
|
||||
delete_at_first_view => $c->delete_at_first_view,
|
||||
enabled => $c->enabled,
|
||||
filename => $c->filename,
|
||||
footprint => $c->footprint,
|
||||
height => $c->height,
|
||||
last_access_at => $c->last_access_at,
|
||||
mediatype => $c->mediatype,
|
||||
mod_token => $c->mod_token,
|
||||
path => $c->path,
|
||||
short => $c->short,
|
||||
width => $c->width
|
||||
);
|
||||
$c->app->sqlite->db->query('UPDATE lutim SET counter = ?, created_at = ?, created_by = ?, delete_at_day = ?, delete_at_first_view = ?, enabled = ?, filename = ?, footprint = ?, height = ?, last_access_at = ?, mediatype = ?, mod_token = ?, path = ?, short = ?, width = ?, iv = ? WHERE short = ?', $c->counter, $c->created_at, $c->created_by, $c->delete_at_day, $c->delete_at_first_view, $c->enabled, $c->filename, $c->footprint, $c->height, $c->last_access_at, $c->mediatype, $c->mod_token, $c->path, $c->short, $c->width, $c->iv, $c->short);
|
||||
} else {
|
||||
my $record = Lutim::DB::SQLite::Lutim->create(
|
||||
counter => $c->counter,
|
||||
created_at => $c->created_at,
|
||||
created_by => $c->created_by,
|
||||
delete_at_day => $c->delete_at_day,
|
||||
delete_at_first_view => $c->delete_at_first_view,
|
||||
enabled => $c->enabled,
|
||||
filename => $c->filename,
|
||||
footprint => $c->footprint,
|
||||
height => $c->height,
|
||||
last_access_at => $c->last_access_at,
|
||||
mediatype => $c->mediatype,
|
||||
mod_token => $c->mod_token,
|
||||
path => $c->path,
|
||||
short => $c->short,
|
||||
width => $c->width
|
||||
);
|
||||
$c->record($record);
|
||||
my $query = 'INSERT INTO lutim (counter, created_at, created_by, delete_at_day, delete_at_first_view, enabled, filename, footprint, height, last_access_at, mediatype, mod_token, path, short, width, iv) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)';
|
||||
$query .= ' ON CONFLICT DO NOTHING' if $provisioning;
|
||||
$c->app->sqlite->db->query($query, $c->counter, $c->created_at, $c->created_by, $c->delete_at_day, $c->delete_at_first_view, $c->enabled, $c->filename, $c->footprint, $c->height, $c->last_access_at, $c->mediatype, $c->mod_token, $c->path, $c->short, $c->width, $c->iv);
|
||||
$c->record(1);
|
||||
}
|
||||
|
||||
return $c;
|
||||
@@ -130,30 +98,26 @@ sub count_short {
|
||||
my $c = shift;
|
||||
my $short = shift;
|
||||
|
||||
return Lutim::DB::SQLite::Lutim->count('WHERE short IS ?', $short);
|
||||
return $c->app->sqlite->db->query('SELECT count(short) AS count FROM lutim WHERE short = ?', $short)->hashes->first->{count};
|
||||
}
|
||||
|
||||
sub count_empty {
|
||||
my $c = shift;
|
||||
|
||||
return Lutim::DB::SQLite::Lutim->count('WHERE path IS NULL');
|
||||
return $c->app->sqlite->db->query('SELECT count(short) AS count FROM lutim WHERE path IS NULL')->hashes->first->{count};
|
||||
}
|
||||
|
||||
sub count_not_empty {
|
||||
my $c = shift;
|
||||
|
||||
return Lutim::DB::SQLite::Lutim->count('WHERE path IS NOT NULL');
|
||||
return $c->app->sqlite->db->query('SELECT count(short) AS count FROM lutim WHERE path IS NOT NULL')->hashes->first->{count};
|
||||
}
|
||||
|
||||
sub clean_ips_until {
|
||||
my $c = shift;
|
||||
my $time = shift;
|
||||
|
||||
Lutim::DB::SQLite->do(
|
||||
'UPDATE lutim SET created_by = "" WHERE path IS NOT NULL AND created_at < ?',
|
||||
{},
|
||||
$time
|
||||
);
|
||||
$c->app->sqlite->db->query('UPDATE lutim SET created_by = NULL WHERE path IS NOT NULL AND created_at < ?', $time);
|
||||
|
||||
return $c;
|
||||
}
|
||||
@@ -164,15 +128,18 @@ sub get_no_longer_viewed_files {
|
||||
|
||||
my @images;
|
||||
|
||||
my @records = Lutim::DB::SQLite::Lutim->select('WHERE enabled = 1 AND last_access_at < ?', $time);
|
||||
my $records = $c->app->sqlite->db->query('SELECT * FROM lutim WHERE enabled = 1 AND last_access_at < ?', $time)->{hashes};
|
||||
|
||||
for my $e (@records) {
|
||||
my $i = Lutim::DB::Image->new(app => $c->app);
|
||||
$i->record($e);
|
||||
$i->_slurp;
|
||||
$records->each(
|
||||
sub {
|
||||
my ($e, $num) = @_;
|
||||
my $i = Lutim::DB::Image->new(app => $c->app);
|
||||
$i->record(1);
|
||||
$i->_slurp($e);
|
||||
|
||||
push @images, $i;
|
||||
}
|
||||
push @images, $i;
|
||||
}
|
||||
);
|
||||
|
||||
return c(@images);
|
||||
}
|
||||
@@ -182,15 +149,17 @@ sub get_images_to_clean {
|
||||
|
||||
my @images;
|
||||
|
||||
my @records = Lutim::DB::SQLite::Lutim->select('WHERE enabled = 1 AND (delete_at_day * 86400) < (? - created_at) AND delete_at_day != 0', time());
|
||||
my $records = $c->app->sqlite->db->query('SELECT * FROM lutim WHERE enabled = 1 AND (delete_at_day * 86400) < (? - created_at) AND delete_at_day != 0', time())->hashes;
|
||||
|
||||
for my $e (@records) {
|
||||
my $i = Lutim::DB::Image->new(app => $c->app);
|
||||
$i->record($e);
|
||||
$i->_slurp;
|
||||
$records->each(
|
||||
sub {
|
||||
my ($e, $num) = @_;
|
||||
my $i = Lutim::DB::Image->new(app => $c->app);
|
||||
$i->_slurp($e);
|
||||
|
||||
push @images, $i;
|
||||
}
|
||||
push @images, $i;
|
||||
}
|
||||
);
|
||||
|
||||
return c(@images);
|
||||
}
|
||||
@@ -200,15 +169,17 @@ sub get_50_oldest {
|
||||
|
||||
my @images;
|
||||
|
||||
my @records = Lutim::DB::SQLite::Lutim->select('WHERE path IS NOT NULL AND enabled = 1 ORDER BY created_at ASC LIMIT 50');
|
||||
my $records = $c->app->sqlite->db->query('SELECT * FROM lutim WHERE path IS NOT NULL AND enabled = 1 ORDER BY created_at ASC LIMIT 50')->hashes;
|
||||
|
||||
for my $e (@records) {
|
||||
my $i = Lutim::DB::Image->new(app => $c->app);
|
||||
$i->record($e);
|
||||
$i->_slurp;
|
||||
$records->each(
|
||||
sub {
|
||||
my ($e, $num) = @_;
|
||||
my $i = Lutim::DB::Image->new(app => $c->app);
|
||||
$i->_slurp($e);
|
||||
|
||||
push @images, $i;
|
||||
}
|
||||
push @images, $i;
|
||||
}
|
||||
);
|
||||
|
||||
return c(@images);
|
||||
}
|
||||
@@ -216,42 +187,88 @@ sub get_50_oldest {
|
||||
sub disable {
|
||||
my $c = shift;
|
||||
|
||||
$c->record->update(enabled => 0);
|
||||
$c->app->sqlite->db->query('UPDATE lutim SET enabled = 0 WHERE short = ?', $c->short);
|
||||
$c->enabled(0);
|
||||
|
||||
return $c;
|
||||
}
|
||||
|
||||
sub _slurp {
|
||||
my $c = shift;
|
||||
sub search_created_by {
|
||||
my $c = shift;
|
||||
my $ip = shift;
|
||||
|
||||
my @images;
|
||||
if ($c->record) {
|
||||
@images = ($c->record);
|
||||
} elsif ($c->short) {
|
||||
@images = Lutim::DB::SQLite::Lutim->select('WHERE short = ?', $c->short);
|
||||
|
||||
my $records = $c->app->sqlite->db->select('lutim', undef, { enabled => 1, created_by => { -like => $ip.'%' } })->hashes;
|
||||
|
||||
$records->each(
|
||||
sub {
|
||||
my ($e, $num) = @_;
|
||||
my $i = Lutim::DB::Image->new(app => $c->app);
|
||||
$i->_slurp($e);
|
||||
|
||||
push @images, $i;
|
||||
}
|
||||
);
|
||||
|
||||
return c(@images);
|
||||
}
|
||||
|
||||
sub search_exact_created_by {
|
||||
my $c = shift;
|
||||
my $ip = shift;
|
||||
|
||||
my @images;
|
||||
|
||||
my $records = $c->app->sqlite->db->select('lutim', undef, { enabled => 1, created_by => $ip })->hashes;
|
||||
|
||||
$records->each(
|
||||
sub {
|
||||
my ($e, $num) = @_;
|
||||
my $i = Lutim::DB::Image->new(app => $c->app);
|
||||
$i->_slurp($e);
|
||||
|
||||
push @images, $i;
|
||||
}
|
||||
);
|
||||
|
||||
return c(@images);
|
||||
}
|
||||
|
||||
sub _slurp {
|
||||
my $c = shift;
|
||||
my $r = shift;
|
||||
|
||||
my $image;
|
||||
if (defined $r) {
|
||||
$image = $r;
|
||||
} else {
|
||||
my $images = $c->app->sqlite->db->query('SELECT * FROM lutim WHERE short = ?', $c->short)->hashes;
|
||||
|
||||
if ($images->size) {
|
||||
$image = $images->first;
|
||||
}
|
||||
}
|
||||
|
||||
if (scalar @images) {
|
||||
my $image = $images[0];
|
||||
if ($image) {
|
||||
$c->short($image->{short});
|
||||
$c->path($image->{path});
|
||||
$c->footprint($image->{footprint});
|
||||
$c->enabled($image->{enabled});
|
||||
$c->mediatype($image->{mediatype});
|
||||
$c->filename($image->{filename});
|
||||
$c->counter($image->{counter});
|
||||
$c->delete_at_first_view($image->{delete_at_first_view});
|
||||
$c->delete_at_day($image->{delete_at_day});
|
||||
$c->created_at($image->{created_at});
|
||||
$c->created_by($image->{created_by});
|
||||
$c->last_access_at($image->{last_access_at});
|
||||
$c->mod_token($image->{mod_token});
|
||||
$c->width($image->{width});
|
||||
$c->height($image->{height});
|
||||
$c->iv($image->{iv});
|
||||
|
||||
$c->short($image->short);
|
||||
$c->path($image->path);
|
||||
$c->footprint($image->footprint);
|
||||
$c->enabled($image->enabled);
|
||||
$c->mediatype($image->mediatype);
|
||||
$c->filename($image->filename);
|
||||
$c->counter($image->counter);
|
||||
$c->delete_at_first_view($image->delete_at_first_view);
|
||||
$c->delete_at_day($image->delete_at_day);
|
||||
$c->created_at($image->created_at);
|
||||
$c->created_by($image->created_by);
|
||||
$c->last_access_at($image->last_access_at);
|
||||
$c->mod_token($image->mod_token);
|
||||
$c->width($image->width);
|
||||
$c->height($image->height);
|
||||
|
||||
$c->record($image) unless $c->record;
|
||||
$c->record(1);
|
||||
}
|
||||
|
||||
return $c;
|
||||
|
||||
@@ -1,54 +0,0 @@
|
||||
# vim:set sw=4 ts=4 sts=4 ft=perl expandtab:
|
||||
package Lutim::DB::SQLite;
|
||||
use Mojolicious;
|
||||
use Mojo::File;
|
||||
use FindBin qw($Bin);
|
||||
|
||||
BEGIN {
|
||||
my $m = Mojolicious->new;
|
||||
my $cfile = Mojo::File->new($Bin, '..' , 'lutim.conf');
|
||||
if (defined $ENV{MOJO_CONFIG}) {
|
||||
$cfile = Mojo::File->new($ENV{MOJO_CONFIG});
|
||||
unless (-e $cfile->to_abs) {
|
||||
$cfile = Mojo::File->new($Bin, '..', $ENV{MOJO_CONFIG});
|
||||
}
|
||||
}
|
||||
our $config = $m->plugin('Config' =>
|
||||
{
|
||||
file => $cfile->to_abs->to_string,
|
||||
default => {
|
||||
db_path => 'lutim.db'
|
||||
}
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
# Create database
|
||||
use ORLite {
|
||||
file => $config->{db_path},
|
||||
unicode => 1,
|
||||
create => sub {
|
||||
my $dbh = shift;
|
||||
$dbh->do(
|
||||
'CREATE TABLE lutim (
|
||||
short TEXT PRIMARY KEY,
|
||||
path TEXT,
|
||||
footprint TEXT,
|
||||
enabled INTEGER,
|
||||
mediatype TEXT,
|
||||
filename TEXT,
|
||||
counter INTEGER,
|
||||
delete_at_first_view INTEGER,
|
||||
delete_at_day INTEGER,
|
||||
created_at INTEGER,
|
||||
created_by TEXT,
|
||||
last_access_at INTEGER,
|
||||
mod_token TEXT,
|
||||
width INTEGER,
|
||||
height INTEGER)'
|
||||
);
|
||||
return 1;
|
||||
}
|
||||
};
|
||||
|
||||
1;
|
||||
48
lib/Lutim/DefaultConfig.pm
Normal file
48
lib/Lutim/DefaultConfig.pm
Normal file
@@ -0,0 +1,48 @@
|
||||
# vim:set sw=4 ts=4 sts=4 ft=perl expandtab:
|
||||
package Lutim::DefaultConfig;
|
||||
require Exporter;
|
||||
@ISA = qw(Exporter);
|
||||
@EXPORT_OK = qw($default_config);
|
||||
our $default_config = {
|
||||
provisioning => 100,
|
||||
provis_step => 5,
|
||||
length => 8,
|
||||
always_encrypt => 0,
|
||||
anti_flood_delay => 5,
|
||||
max_file_size => 10*1024*1024,
|
||||
https => 0,
|
||||
proposed_delays => '0,1,7,30,365',
|
||||
default_delay => 0,
|
||||
max_delay => 0,
|
||||
token_length => 24,
|
||||
crypto_key_length => 8,
|
||||
thumbnail_size => 100,
|
||||
watermark_path => '',
|
||||
watermark_placement => 'SouthEast',
|
||||
watermark_default => 'none',
|
||||
watermark_enforce => 'none',
|
||||
theme => 'default',
|
||||
disable_api => 0,
|
||||
dbtype => 'sqlite',
|
||||
db_path => 'lutim.db',
|
||||
max_files_in_zip => 15,
|
||||
prefix => '/',
|
||||
minion => {
|
||||
enabled => 0,
|
||||
dbtype => 'sqlite',
|
||||
db_path => 'minion.db'
|
||||
},
|
||||
session_duration => 3600,
|
||||
cache_max_size => 0,
|
||||
memcached_servers => [],
|
||||
quiet_logs => 0,
|
||||
disable_img_stats => 0,
|
||||
x_frame_options => 'DENY',
|
||||
x_content_type_options => 'nosniff',
|
||||
x_xss_protection => '1; mode=block',
|
||||
stats_day_num => 365,
|
||||
keep_ip_during => 365,
|
||||
policy_when_full => 'warn',
|
||||
};
|
||||
|
||||
1;
|
||||
50
lib/Lutim/Plugin/Headers.pm
Normal file
50
lib/Lutim/Plugin/Headers.pm
Normal file
@@ -0,0 +1,50 @@
|
||||
package Lutim::Plugin::Headers;
|
||||
use Mojo::Base 'Mojolicious::Plugin';
|
||||
|
||||
sub register {
|
||||
my ($self, $app) = @_;
|
||||
|
||||
# Assets Cache headers
|
||||
$app->plugin('StaticCache' => { even_in_dev => 1 });
|
||||
|
||||
# Add CSP Header
|
||||
if (!defined($app->config('csp')) || (defined($app->config('csp')) && $app->config('csp') ne '')) {
|
||||
my $directives = {
|
||||
'default-src' => "'none'",
|
||||
'script-src' => "'self' 'unsafe-eval'",
|
||||
'style-src' => "'self' 'unsafe-inline'",
|
||||
'connect-src' => "'self'",
|
||||
'img-src' => "'self' data:",
|
||||
'font-src' => "'self'",
|
||||
'form-action' => "'self'",
|
||||
'base-uri' => "'self'",
|
||||
};
|
||||
|
||||
my $frame_ancestors = '';
|
||||
$frame_ancestors = "'none'" if $app->config('x_frame_options') eq 'DENY';
|
||||
$frame_ancestors = "'self'" if $app->config('x_frame_options') eq 'SAMEORIGIN';
|
||||
if ($app->config('x_frame_options') =~ m#^ALLOW-FROM#) {
|
||||
$frame_ancestors = $app->config('x_frame_options');
|
||||
$frame_ancestors =~ s#ALLOW-FROM +##;
|
||||
}
|
||||
$directives->{'frame-ancestors'} = $frame_ancestors if $frame_ancestors;
|
||||
|
||||
$app->plugin('CSPHeader',
|
||||
csp => $app->config('csp'),
|
||||
directives => $directives
|
||||
);
|
||||
}
|
||||
|
||||
# Add other headers
|
||||
$app->hook(
|
||||
before_dispatch => sub {
|
||||
my $c = shift;
|
||||
|
||||
$c->res->headers->header('X-Frame-Options' => $app->config('x_frame_options')) if $app->config('x_frame_options');
|
||||
$c->res->headers->header('X-Content-Type-Options' => $app->config('x_content_type_options')) if $app->config('x_content_type_options');
|
||||
$c->res->headers->header('X-XSS-Protection' => $app->config('x_xss_protection')) if $app->config('x_xss_protection');
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
1;
|
||||
@@ -2,38 +2,58 @@
|
||||
package Lutim::Plugin::Helpers;
|
||||
use Mojo::Base 'Mojolicious::Plugin';
|
||||
use Mojo::Util qw(quote);
|
||||
use Mojo::File;
|
||||
use Crypt::CBC;
|
||||
use Data::Entropy qw(entropy_source);
|
||||
use DateTime;
|
||||
use Mojo::Util qw(decode);
|
||||
use ISO::639_1;
|
||||
use Digest::MD5 'md5';
|
||||
|
||||
sub register {
|
||||
my ($self, $app) = @_;
|
||||
|
||||
$app->plugin('PgURLHelper');
|
||||
|
||||
if ($app->config('dbtype') eq 'postgresql') {
|
||||
use Mojo::Pg;
|
||||
require Mojo::Pg;
|
||||
$app->plugin('PgURLHelper');
|
||||
$app->helper(pg => \&_pg);
|
||||
|
||||
# Database migration
|
||||
my $migrations = Mojo::Pg::Migrations->new(pg => $app->pg);
|
||||
if ($app->mode eq 'development' && $ENV{LUTIM_DEBUG}) {
|
||||
$migrations->from_file('utilities/migrations.sql')->migrate(0)->migrate(1);
|
||||
$migrations->from_file('utilities/migrations/postgresql.sql')->migrate(0)->migrate(3);
|
||||
} else {
|
||||
$migrations->from_file('utilities/migrations.sql')->migrate(1);
|
||||
$migrations->from_file('utilities/migrations/postgresql.sql')->migrate(3);
|
||||
}
|
||||
} elsif ($app->config('dbtype') eq 'sqlite') {
|
||||
# SQLite database migration if needed
|
||||
require Mojo::SQLite;
|
||||
$app->helper(sqlite => \&_sqlite);
|
||||
|
||||
my $sql = Mojo::SQLite->new('sqlite:'.$app->config('db_path'));
|
||||
my $migrations = $sql->migrations;
|
||||
if ($app->mode eq 'development' && $ENV{LUTIM_DEBUG}) {
|
||||
$migrations->from_file('utilities/migrations/sqlite.sql')->migrate(0)->migrate(2);
|
||||
} else {
|
||||
$migrations->from_file('utilities/migrations/sqlite.sql')->migrate(2);
|
||||
}
|
||||
}
|
||||
|
||||
$app->helper(render_file => \&_render_file);
|
||||
$app->helper(ip => \&_ip);
|
||||
$app->helper(provisioning => \&_provisioning);
|
||||
$app->helper(shortener => \&_shortener);
|
||||
$app->helper(stop_upload => \&_stop_upload);
|
||||
$app->helper(max_delay => \&_max_delay);
|
||||
$app->helper(default_delay => \&_default_delay);
|
||||
$app->helper(is_selected => \&_is_selected);
|
||||
$app->helper(crypt => \&_crypt);
|
||||
$app->helper(decrypt => \&_decrypt);
|
||||
$app->helper(delete_image => \&_delete_image);
|
||||
$app->helper(render_file => \&_render_file);
|
||||
$app->helper(ip => \&_ip);
|
||||
$app->helper(provisioning => \&_provisioning);
|
||||
$app->helper(shortener => \&_shortener);
|
||||
$app->helper(stop_upload => \&_stop_upload);
|
||||
$app->helper(max_delay => \&_max_delay);
|
||||
$app->helper(default_delay => \&_default_delay);
|
||||
$app->helper(is_selected => \&_is_selected);
|
||||
$app->helper(is_wm_selected => \&_is_wm_selected);
|
||||
$app->helper(crypt => \&_crypt);
|
||||
$app->helper(decrypt => \&_decrypt);
|
||||
$app->helper(delete_image => \&_delete_image);
|
||||
$app->helper(iso639_native_name => \&_iso639_native_name);
|
||||
$app->helper(prefix => \&_prefix);
|
||||
}
|
||||
|
||||
sub _pg {
|
||||
@@ -43,14 +63,27 @@ sub _pg {
|
||||
return $pg;
|
||||
}
|
||||
|
||||
sub _sqlite {
|
||||
my $c = shift;
|
||||
|
||||
state $sqlite = Mojo::SQLite->new('sqlite:'.$c->app->config('db_path'));
|
||||
return $sqlite;
|
||||
}
|
||||
|
||||
sub _render_file {
|
||||
my $c = shift;
|
||||
my ($im_loaded, $filename, $path, $mediatype, $dl, $expires, $nocache, $key, $thumb) = @_;
|
||||
my ($im_loaded, $img, $dl, $key, $thumb) = @_;
|
||||
|
||||
my ($filename, $path, $iv, $mediatype, $no_cache) = ($img->filename, $img->path, $img->iv, $img->mediatype, $img->delete_at_first_view);
|
||||
|
||||
my $expires = ($img->delete_at_day) ? $img->delete_at_day : 360;
|
||||
my $dt = DateTime->from_epoch( epoch => $expires * 86400 + $img->created_at);
|
||||
$dt->set_time_zone('GMT');
|
||||
$expires = $dt->strftime("%a, %d %b %Y %H:%M:%S GMT");
|
||||
|
||||
$dl = 'attachment' if ($mediatype =~ m/svg/);
|
||||
$filename = quote($filename);
|
||||
|
||||
my $asset;
|
||||
unless (-f $path && -r $path) {
|
||||
$c->app->log->error("Cannot read file [$path]. error [$!]");
|
||||
$c->flash(
|
||||
@@ -62,7 +95,7 @@ sub _render_file {
|
||||
$mediatype =~ s/x-//;
|
||||
|
||||
my $headers = Mojo::Headers->new();
|
||||
if ($nocache) {
|
||||
if ($no_cache || defined($thumb)) {
|
||||
$headers->add('Cache-Control' => 'no-cache, no-store, max-age=0, must-revalidate');
|
||||
} else {
|
||||
$headers->add('Expires' => $expires);
|
||||
@@ -71,18 +104,56 @@ sub _render_file {
|
||||
$headers->add('Content-Disposition' => $dl.';filename='.$filename);
|
||||
$c->res->content->headers($headers);
|
||||
|
||||
if ($key) {
|
||||
$asset = $c->decrypt($key, $path);
|
||||
my $cache;
|
||||
if ($c->config('cache_max_size') != 0 || scalar(@{$c->config('memcached_servers')})) {
|
||||
$cache = $c->chi('lutim_images_cache')->compute($img->short, undef, sub {
|
||||
if ($key) {
|
||||
return {
|
||||
asset => $c->decrypt($key, $path, $iv),
|
||||
key => $key
|
||||
};
|
||||
} else {
|
||||
return {
|
||||
asset => Mojo::File->new($path)->slurp,
|
||||
};
|
||||
}
|
||||
});
|
||||
if ($key && $key ne $cache->{key}) {
|
||||
my $tmp = $c->decrypt($key, $path, $iv);
|
||||
$cache->{asset} = $tmp;
|
||||
$c->chi('lutim_images_cache')->replace(
|
||||
$img->short,
|
||||
{
|
||||
asset => $tmp,
|
||||
key => $key
|
||||
},
|
||||
);
|
||||
}
|
||||
} else {
|
||||
$asset = Mojo::Asset::File->new(path => $path);
|
||||
if ($key) {
|
||||
$cache = {
|
||||
asset => $c->decrypt($key, $path, $iv),
|
||||
};
|
||||
} else {
|
||||
$cache = {
|
||||
asset => Mojo::File->new($path)->slurp,
|
||||
};
|
||||
}
|
||||
}
|
||||
# Extend expiration time
|
||||
my $asset = Mojo::Asset::Memory->new;
|
||||
$asset->add_chunk($cache->{asset});
|
||||
|
||||
if (defined $thumb && $im_loaded && $mediatype ne 'image/svg+xml' && $mediatype !~ m#image/(x-)?xcf# && $mediatype ne 'image/webp') { # ImageMagick don't work in Debian with svg (for now?)
|
||||
my $im = Image::Magick->new;
|
||||
$im->BlobToImage($asset->slurp);
|
||||
|
||||
# Create the thumbnail
|
||||
$im->Resize(geometry=>'x'.$c->config('thumbnail_size'));
|
||||
if ($thumb eq '') {
|
||||
$im->Resize(geometry => 'x'.$c->config('thumbnail_size'));
|
||||
} else {
|
||||
$im->Resize(geometry => $thumb);
|
||||
}
|
||||
|
||||
# Replace the asset with the thumbnail
|
||||
$asset = Mojo::Asset::Memory->new->add_chunk($im->ImageToBlob());
|
||||
@@ -125,7 +196,7 @@ sub _provisioning {
|
||||
->delete_at_first_view(0)
|
||||
->delete_at_day(0)
|
||||
->mod_token($c->shortener($c->app->config('token_length')))
|
||||
->write;
|
||||
->write('provisioning');
|
||||
|
||||
$img = Lutim::DB::Image->new(app => $c->app);
|
||||
}
|
||||
@@ -181,18 +252,40 @@ sub _is_selected {
|
||||
return ($num == $c->default_delay) ? 'selected="selected"' : '';
|
||||
}
|
||||
|
||||
sub _is_wm_selected {
|
||||
my $c = shift;
|
||||
my $wm = shift;
|
||||
|
||||
return ($wm eq $c->config('watermark_default')) ? 'selected="selected"' : '';
|
||||
}
|
||||
|
||||
sub _key_from_key {
|
||||
my $key = shift;
|
||||
|
||||
# Key size for Blowfish is 56
|
||||
my $ks = 56;
|
||||
my $material = md5($key);
|
||||
while (length($material) < $ks) {
|
||||
$material .= md5($material);
|
||||
}
|
||||
return substr($material,0,$ks);
|
||||
}
|
||||
|
||||
sub _crypt {
|
||||
my $c = shift;
|
||||
my $upload = shift;
|
||||
my $filename = shift;
|
||||
|
||||
my $key = $c->shortener($c->config('crypto_key_length'));
|
||||
my $iv = $c->shortener(8);
|
||||
|
||||
my $cipher = Crypt::CBC->new(
|
||||
-key => $key,
|
||||
-cipher => 'Blowfish',
|
||||
-header => 'none',
|
||||
-iv => 'dupajasi'
|
||||
-key => _key_from_key($key),
|
||||
-cipher => 'Blowfish',
|
||||
-header => 'none',
|
||||
-literal_key => 1,
|
||||
-pbkdf => 'pbkdf2',
|
||||
-iv => $iv
|
||||
);
|
||||
|
||||
$cipher->start('encrypting');
|
||||
@@ -206,19 +299,23 @@ sub _crypt {
|
||||
$crypt_upload->filename($filename);
|
||||
$crypt_upload->asset($crypt_asset);
|
||||
|
||||
return ($crypt_upload, $key);
|
||||
return ($crypt_upload, $key, $iv);
|
||||
}
|
||||
|
||||
sub _decrypt {
|
||||
my $c = shift;
|
||||
my $key = shift;
|
||||
my $key = _key_from_key(shift);
|
||||
my $file = shift;
|
||||
my $iv = shift;
|
||||
$iv = 'dupajasi' unless $iv;
|
||||
|
||||
my $cipher = Crypt::CBC->new(
|
||||
-key => $key,
|
||||
-cipher => 'Blowfish',
|
||||
-header => 'none',
|
||||
-iv => 'dupajasi'
|
||||
-key => $key,
|
||||
-cipher => 'Blowfish',
|
||||
-header => 'none',
|
||||
-literal_key => 1,
|
||||
-pbkdf => 'pbkdf2',
|
||||
-iv => $iv
|
||||
);
|
||||
|
||||
$cipher->start('decrypting');
|
||||
@@ -227,19 +324,38 @@ sub _decrypt {
|
||||
|
||||
open(my $f, "<",$file) or die "Unable to read encrypted file: $!";
|
||||
binmode $f;
|
||||
while (read($f, my $buffer,1024)) {
|
||||
while (read($f, my $buffer, 1024)) {
|
||||
$decrypt_asset->add_chunk($cipher->crypt($buffer));
|
||||
}
|
||||
$decrypt_asset->add_chunk($cipher->finish) ;
|
||||
|
||||
return $decrypt_asset;
|
||||
return $decrypt_asset->slurp;
|
||||
}
|
||||
|
||||
sub _delete_image {
|
||||
my $c = shift;
|
||||
my $img = shift;
|
||||
if ($c->config('cache_max_size') != 0 || scalar(@{$c->config('memcached_servers')})) {
|
||||
$c->chi('lutim_images_cache')->remove($img->short);
|
||||
}
|
||||
unlink $img->path or warn "Could not unlink ".$img->path.": $!";
|
||||
$img->disable();
|
||||
}
|
||||
|
||||
sub _iso639_native_name {
|
||||
my $c = shift;
|
||||
return ucfirst(decode 'UTF-8', get_iso639_1(shift)->{nativeName});
|
||||
}
|
||||
|
||||
sub _prefix {
|
||||
my $c = shift;
|
||||
|
||||
my $prefix = $c->url_for('/')->to_abs;
|
||||
# Forced domain
|
||||
$prefix->host($c->config('fixed_domain')) if (defined($c->config('fixed_domain')) && $c->config('fixed_domain') ne '');
|
||||
# Hack for prefix (subdir) handling
|
||||
$prefix .= '/' unless ($prefix =~ m#/$#);
|
||||
return $prefix;
|
||||
}
|
||||
|
||||
1;
|
||||
|
||||
38
lib/Lutim/Plugin/Lang.pm
Normal file
38
lib/Lutim/Plugin/Lang.pm
Normal file
@@ -0,0 +1,38 @@
|
||||
# vim:set sw=4 ts=4 sts=4 ft=perl expandtab:
|
||||
package Lutim::Plugin::Lang;
|
||||
use Mojo::Base 'Mojolicious::Plugin';
|
||||
use Mojo::Collection;
|
||||
use Mojo::File;
|
||||
|
||||
sub register {
|
||||
my ($self, $app) = @_;
|
||||
|
||||
$app->helper(available_langs => \&_available_langs);
|
||||
|
||||
$app->hook(
|
||||
before_dispatch => sub {
|
||||
my $c = shift;
|
||||
$c->languages($c->cookie('lutim_lang')) if $c->cookie('lutim_lang');
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
sub _available_langs {
|
||||
my $c = shift;
|
||||
|
||||
state $langs = Mojo::Collection->new(
|
||||
glob($c->app->home->rel_file('themes/'.$c->config('theme').'/lib/Lutim/I18N/*po')),
|
||||
glob($c->app->home->rel_file('themes/default/lib/Lutim/I18N/*po'))
|
||||
)->map(
|
||||
sub {
|
||||
Mojo::File->new($_)->basename('.po');
|
||||
}
|
||||
)->uniq->sort(
|
||||
sub {
|
||||
$c->l($a) cmp $c->l($b)
|
||||
}
|
||||
)->to_array;
|
||||
}
|
||||
|
||||
1;
|
||||
|
||||
@@ -4,6 +4,7 @@ use Mojo::Base 'Mojolicious';
|
||||
use Mojo::File;
|
||||
use FindBin qw($Bin);
|
||||
use File::Spec qw(catfile);
|
||||
use Lutim::DefaultConfig qw($default_config);
|
||||
|
||||
# This method will run once at server start
|
||||
sub startup {
|
||||
@@ -18,17 +19,10 @@ sub startup {
|
||||
$cfile = Mojo::File->new($Bin, '..', $ENV{MOJO_CONFIG});
|
||||
}
|
||||
}
|
||||
my $config = $self->plugin('Config' =>
|
||||
{
|
||||
file => $cfile,
|
||||
default => {
|
||||
prefix => '/',
|
||||
theme => 'default',
|
||||
}
|
||||
}
|
||||
);
|
||||
|
||||
$self->plugin('Lutim::Plugin::Helpers');
|
||||
my $config = $self->plugin('Config', {
|
||||
file => $cfile,
|
||||
default => $default_config
|
||||
});
|
||||
|
||||
$config->{prefix} = $config->{url_sub_dir} if (defined($config->{url_sub_dir}) && $config->{prefix} eq '/');
|
||||
|
||||
@@ -42,10 +36,15 @@ sub startup {
|
||||
}
|
||||
push @{$self->static->paths}, $self->home->rel_file('themes/default/public');
|
||||
|
||||
$self->hook(after_static => sub {
|
||||
my $c = shift;
|
||||
$c->res->headers->cache_control('max-age=2592000, must-revalidate');
|
||||
});
|
||||
# Static assets gzipping
|
||||
$self->plugin('GzipStatic');
|
||||
|
||||
# Headers
|
||||
$self->plugin('Lutim::Plugin::Headers');
|
||||
|
||||
# Helpers
|
||||
$self->plugin('Lutim::Plugin::Helpers');
|
||||
|
||||
$self->plugin('Mount' => {$config->{prefix} => File::Spec->catfile($Bin, '..', 'script', 'application')});
|
||||
}
|
||||
|
||||
|
||||
@@ -51,8 +51,8 @@
|
||||
|
||||
# twitter account which will appear on twitter cards
|
||||
# see https://dev.twitter.com/docs/cards/validation/validator to register your Lutim instance on twitter
|
||||
# optional, default is @framasky
|
||||
#tweet_card_via => '@framasky',
|
||||
# optional, no default
|
||||
#tweet_card_via => '@foo',
|
||||
|
||||
# max image size, in octets
|
||||
# you can write it 10*1024*1024
|
||||
@@ -89,6 +89,10 @@
|
||||
# optional, default is 0 (no limit)
|
||||
#default_delay => 0,
|
||||
|
||||
# comma-separated values proposed for delays
|
||||
# optional, default is '0,1,7,30,365'
|
||||
#proposed_delays => '0,1,7,30,365',
|
||||
|
||||
# number of days after which the images will be deleted, even if they were uploaded with "no delay" (or value superior to max_delay)
|
||||
# a warning message will be displayed on homepage
|
||||
# optional, default is 0 (no limit)
|
||||
@@ -98,6 +102,29 @@
|
||||
# optional, default is 0
|
||||
#always_encrypt => 0,
|
||||
|
||||
# you can allow to use a watermark on the uploaded images (or enforce its use)
|
||||
# define a path to the watermark image (provide an image with alpha channel)
|
||||
# you can define the path relative to lutim directory or set an absolute path
|
||||
# to disable the usage of a watermark, leave it blank or commented
|
||||
# optional, no default
|
||||
#watermark_path => '',
|
||||
|
||||
# the watermark can be a tiling one or a single one
|
||||
# when using a small one, you can choose where to place it
|
||||
# valid values are 'Center', 'North', 'NorthEast', 'East', 'SouthEast', 'South', 'SouthWest', 'West' and 'NorthWest' (case insensitive)
|
||||
# optional, default is 'SouthEast'
|
||||
#watermark_placement => 'SouthEast',
|
||||
|
||||
# choose which watermark (tiling, single or none) should be used by default
|
||||
# valid values are 'tiling', 'single' or 'none' (case insensitive)
|
||||
# optional, default is 'none'
|
||||
#watermark_default => 'none',
|
||||
|
||||
# choose which watermark (tiling, single or none) should be enforced (users will always have a watermark and won’t be able to disable it)
|
||||
# valid values are 'tiling', 'single' or 'none' (case insensitive)
|
||||
# optional, default is 'none'
|
||||
#watermark_enforce => 'none',
|
||||
|
||||
# length of the image's delete token
|
||||
# optional, default is 24
|
||||
#token_length => 24,
|
||||
@@ -108,6 +135,10 @@
|
||||
# optional, defaut is /
|
||||
#prefix => '/',
|
||||
|
||||
# if set to 1, Lutim will try to prevent its use without using the web interface
|
||||
# optional, default is 0
|
||||
#disable_api => 0,
|
||||
|
||||
# choose what database you want to use
|
||||
# valid choices are sqlite and postgresql (all lowercase)
|
||||
# optional, default is sqlite
|
||||
@@ -155,6 +186,34 @@
|
||||
# }
|
||||
#},
|
||||
|
||||
# set `ldap` if you want that only authenticated users can shorten URLs
|
||||
# please note that everybody can still use shortend URLs
|
||||
# optional, no default
|
||||
#ldap => {
|
||||
# uri => 'ldaps://ldap.example.org', # server URI
|
||||
# user_tree => 'ou=users,dc=example,dc=org', # search base DN
|
||||
# bind_dn => 'uid=ldap_user,ou=users,dc=example,dc=org', # search bind DN
|
||||
# bind_pwd => 'secr3t', # search bind password
|
||||
# user_attr => 'uid', # user attribute (uid, mail, sAMAccountName, etc.)
|
||||
# user_filter => '(!(uid=ldap_user))', # user filter (to exclude some users, etc.)
|
||||
#},
|
||||
|
||||
# set `htpasswd` if you want to use an htpasswd file instead of ldap
|
||||
# create the file with `htpasswd -c lutim.passwd user`, update it with `htpasswd lutim.passwd user2`
|
||||
# make sure that lutim can read the file!
|
||||
# optional, no default
|
||||
#htpasswd => 'lutim.passwd',
|
||||
|
||||
# if you've set ldap or htpasswd above, the session will last `session_duration` seconds before
|
||||
# the user needs to reauthenticate
|
||||
# optional, default is 3600
|
||||
#session_duration => 3600,
|
||||
|
||||
# disable counters of images
|
||||
# set to 1 to disable counters
|
||||
# optional, counters are enabled by default
|
||||
#disable_img_stats => 0,
|
||||
|
||||
# define the height of the thumbnails generated at users' will
|
||||
# this is not the height of the thumbnails send after upload,
|
||||
# we're talking about thumbnails generated when someone asked for
|
||||
@@ -171,6 +230,66 @@
|
||||
# optional, default is 15
|
||||
#max_files_in_zip => 15,
|
||||
|
||||
# maximum size (in MB) of memory allowed for the image cache
|
||||
# Lutim has a built-in memory-based image cache to accelerate responses to often-viewed images.
|
||||
# This setting makes the cache remove oldest viewed image if the cache size is over it.
|
||||
# WARNING: a cache is created for each hypnotoad worker, which by default is twice the number of
|
||||
# CPUs you have. See http://mojolicious.org/perldoc/Mojo/Server/Hypnotoad#workers for details
|
||||
# So, if you have 4 workers and set cache_max_size to 100, the real maximum size of RAM used for
|
||||
# cache is 400MB.
|
||||
# If set to 0, the cache is disabled
|
||||
# optional, default is 0
|
||||
#cache_max_size => 0,
|
||||
|
||||
# array of memcached servers to cache URL in order to accelerate responses to often-viewed URL.
|
||||
# If set to [], the use of memcached is disabled.
|
||||
# If you use memcached, the internal cache (see cache_max_size option above) will not be used.
|
||||
# Please see https://framagit.org/luc/lutim/wikis/memcached to know how to configure your memcached
|
||||
# servers.
|
||||
# exemple of valid value: ['127.0.0.1:11211']
|
||||
# optional, default is []
|
||||
#memcached_servers => [],
|
||||
|
||||
# enable or disable Lutim built-in logs
|
||||
# set to 1 to disable logs
|
||||
# optional, default is 0
|
||||
#quiet_logs => 0,
|
||||
|
||||
# Content-Security-Policy header that will be sent by Lutim
|
||||
# Set to '' to disable CSP header
|
||||
# https://content-security-policy.com/ provides a good documentation about CSP.
|
||||
# https://report-uri.com/home/generate provides a tool to generate a CSP header.
|
||||
# optional, default is "base-uri 'self'; connect-src 'self'; default-src 'none'; font-src 'self'; form-action 'self'; img-src 'self' data:; script-src 'self' 'unsafe-eval'; style-src 'self' 'unsafe-inline'"
|
||||
# NB: unsafe-inline for script-src and style-src are here only because morris,
|
||||
# the graph library used in the stats page requires it
|
||||
# the default value is good for `default` theme
|
||||
#csp => "base-uri 'self'; connect-src 'self'; default-src 'none'; font-src 'self'; form-action 'self'; img-src 'self' data:; script-src 'self' 'unsafe-eval'; style-src 'self' 'unsafe-inline'",
|
||||
|
||||
# X-Frame-Options header that will be sent by Lutim
|
||||
# Valid values are: 'DENY', 'SAMEORIGIN', 'ALLOW-FROM https://example.com/'
|
||||
# Set to '' to disable X-Frame-Options header
|
||||
# See https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options
|
||||
# Please note that this will add a "frame-ancestors" directive to the CSP header (see above) accordingly
|
||||
# to the chosen setting (See https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/frame-ancestors)
|
||||
# optional, default is 'DENY'
|
||||
#x_frame_options => 'DENY',
|
||||
|
||||
# X-Content-Type-Options that will be sent by Lutim
|
||||
# See https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Content-Type-Options
|
||||
# Set to '' to disable X-Content-Type-Options header
|
||||
# optional, default is 'nosniff'
|
||||
#x_content_type_options => 'nosniff',
|
||||
|
||||
# X-XSS-Protection that will be sent by Lutim
|
||||
# See https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-XSS-Protection
|
||||
# Set to '' to disable X-XSS-Protection header
|
||||
# optional, default is '1; mode=block'
|
||||
#x_xss_protection => '1; mode=block',
|
||||
|
||||
# if set, the uploaded images will use this domain
|
||||
# optional
|
||||
#fixed_domain => 'example.org',
|
||||
|
||||
##########################
|
||||
# Lutim cron jobs settings
|
||||
##########################
|
||||
|
||||
@@ -89,6 +89,10 @@
|
||||
# optional, default is 0 (no limit)
|
||||
default_delay => 30,
|
||||
|
||||
# comma-separated values proposed for delays
|
||||
# optional, default is '0,1,7,30,365'
|
||||
#proposed_delays => '0,1,7,30,365',
|
||||
|
||||
# number of days after which the images will be deleted, even if they were uploaded with "no delay" (or value superior to max_delay)
|
||||
# a warning message will be displayed on homepage
|
||||
# optional, default is 0 (no limit)
|
||||
@@ -124,10 +128,10 @@
|
||||
# these are the credentials to access the PostgreSQL database
|
||||
# mandatory if you choosed postgresql as dbtype
|
||||
pgdb => {
|
||||
database => 'lutimtest',
|
||||
host => 'localhost',
|
||||
database => 'lutim_db',
|
||||
host => 'postgres',
|
||||
user => 'lutim',
|
||||
pwd => 'lutim'
|
||||
pwd => 'lutim_pwd'
|
||||
},
|
||||
|
||||
# use Minion instead of directly increase counters
|
||||
@@ -155,6 +159,11 @@
|
||||
# }
|
||||
#},
|
||||
|
||||
# disable counters of images
|
||||
# set to 1 to disable counters
|
||||
# optional, counters are enabled by default
|
||||
#disable_img_stats => 0,
|
||||
|
||||
# define the height of the thumbnails generated at users' will
|
||||
# this is not the height of the thumbnails send after upload,
|
||||
# we're talking about thumbnails generated when someone asked for
|
||||
@@ -171,6 +180,62 @@
|
||||
# optional, default is 15
|
||||
#max_files_in_zip => 15,
|
||||
|
||||
# maximum size (in MB) of memory allowed for the image cache
|
||||
# Lutim has a built-in memory-based image cache to accelerate responses to often-viewed images.
|
||||
# This setting makes the cache remove oldest viewed image if the cache size is over it.
|
||||
# WARNING: a cache is created for each hypnotoad worker, which by default is twice the number of
|
||||
# CPUs you have. See http://mojolicious.org/perldoc/Mojo/Server/Hypnotoad#workers for details
|
||||
# So, if you have 4 workers and set cache_max_size to 100, the real maximum size of RAM used for
|
||||
# cache is 400MB.
|
||||
# If set to 0, the cache is disabled
|
||||
# optional, default is 0
|
||||
#cache_max_size => 0,
|
||||
|
||||
# array of memcached servers to cache URL in order to accelerate responses to often-viewed URL.
|
||||
# If set to [], the use of memcached is disabled.
|
||||
# If you use memcached, the internal cache (see cache_max_size option above) will not be used.
|
||||
# Please see https://framagit.org/luc/lutim/wikis/memcached to know how to configure your memcached
|
||||
# servers.
|
||||
# exemple of valid value: ['127.0.0.1:11211']
|
||||
# optional, default is []
|
||||
#memcached_servers => [],
|
||||
|
||||
# enable or disable Lutim built-in logs
|
||||
# set to 1 to disable logs
|
||||
# optional, default is 0
|
||||
#quiet_logs => 0,
|
||||
|
||||
# Content-Security-Policy header that will be sent by Lstu
|
||||
# Set to '' to disable CSP header
|
||||
# https://content-security-policy.com/ provides a good documentation about CSP.
|
||||
# https://report-uri.com/home/generate provides a tool to generate a CSP header.
|
||||
# optional, default is "base-uri 'self'; connect-src 'self'; default-src 'none'; font-src 'self'; form-action 'self'; img-src 'self' data:; script-src 'self' 'unsafe-eval'; style-src 'self' 'unsafe-inline'"
|
||||
# NB: unsafe-inline for script-src and style-src are here only because morris,
|
||||
# the graph library used in the stats page requires it
|
||||
# the default value is good for `default` theme
|
||||
#csp => "base-uri 'self'; connect-src 'self'; default-src 'none'; font-src 'self'; form-action 'self'; img-src 'self' data:; script-src 'self' 'unsafe-eval'; style-src 'self' 'unsafe-inline'",
|
||||
|
||||
# X-Frame-Options header that will be sent by Lstu
|
||||
# Valid values are: 'DENY', 'SAMEORIGIN', 'ALLOW-FROM https://example.com/'
|
||||
# Set to '' to disable X-Frame-Options header
|
||||
# See https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options
|
||||
# Please note that this will add a "frame-ancestors" directive to the CSP header (see above) accordingly
|
||||
# to the chosen setting (See https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/frame-ancestors)
|
||||
# optional, default is 'DENY'
|
||||
#x_frame_options => 'DENY',
|
||||
|
||||
# X-Content-Type-Options that will be sent by Lstu
|
||||
# See https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Content-Type-Options
|
||||
# Set to '' to disable X-Content-Type-Options header
|
||||
# optional, default is 'nosniff'
|
||||
#x_content_type_options => 'nosniff',
|
||||
|
||||
# X-XSS-Protection that will be sent by Lstu
|
||||
# See https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-XSS-Protection
|
||||
# Set to '' to disable X-XSS-Protection header
|
||||
# optional, default is '1; mode=block'
|
||||
#x_xss_protection => '1; mode=block',
|
||||
|
||||
##########################
|
||||
# Lutim cron jobs settings
|
||||
##########################
|
||||
|
||||
@@ -89,6 +89,10 @@
|
||||
# optional, default is 0 (no limit)
|
||||
default_delay => 30,
|
||||
|
||||
# comma-separated values proposed for delays
|
||||
# optional, default is '0,1,7,30,365'
|
||||
#proposed_delays => '0,1,7,30,365',
|
||||
|
||||
# number of days after which the images will be deleted, even if they were uploaded with "no delay" (or value superior to max_delay)
|
||||
# a warning message will be displayed on homepage
|
||||
# optional, default is 0 (no limit)
|
||||
@@ -124,10 +128,10 @@
|
||||
# these are the credentials to access the PostgreSQL database
|
||||
# mandatory if you choosed postgresql as dbtype
|
||||
pgdb => {
|
||||
database => 'lutimtest',
|
||||
host => 'localhost',
|
||||
database => 'lutim_db',
|
||||
host => 'postgres',
|
||||
user => 'lutim',
|
||||
pwd => 'lutim'
|
||||
pwd => 'lutim_pwd'
|
||||
},
|
||||
|
||||
# use Minion instead of directly increase counters
|
||||
@@ -155,6 +159,11 @@
|
||||
# }
|
||||
},
|
||||
|
||||
# disable counters of images
|
||||
# set to 1 to disable counters
|
||||
# optional, counters are enabled by default
|
||||
#disable_img_stats => 0,
|
||||
|
||||
# define the height of the thumbnails generated at users' will
|
||||
# this is not the height of the thumbnails send after upload,
|
||||
# we're talking about thumbnails generated when someone asked for
|
||||
@@ -171,6 +180,62 @@
|
||||
# optional, default is 15
|
||||
#max_files_in_zip => 15,
|
||||
|
||||
# maximum size (in MB) of memory allowed for the image cache
|
||||
# Lutim has a built-in memory-based image cache to accelerate responses to often-viewed images.
|
||||
# This setting makes the cache remove oldest viewed image if the cache size is over it.
|
||||
# WARNING: a cache is created for each hypnotoad worker, which by default is twice the number of
|
||||
# CPUs you have. See http://mojolicious.org/perldoc/Mojo/Server/Hypnotoad#workers for details
|
||||
# So, if you have 4 workers and set cache_max_size to 100, the real maximum size of RAM used for
|
||||
# cache is 400MB.
|
||||
# If set to 0, the cache is disabled
|
||||
# optional, default is 0
|
||||
#cache_max_size => 0,
|
||||
|
||||
# array of memcached servers to cache URL in order to accelerate responses to often-viewed URL.
|
||||
# If set to [], the use of memcached is disabled.
|
||||
# If you use memcached, the internal cache (see cache_max_size option above) will not be used.
|
||||
# Please see https://framagit.org/luc/lutim/wikis/memcached to know how to configure your memcached
|
||||
# servers.
|
||||
# exemple of valid value: ['127.0.0.1:11211']
|
||||
# optional, default is []
|
||||
#memcached_servers => [],
|
||||
|
||||
# enable or disable Lutim built-in logs
|
||||
# set to 1 to disable logs
|
||||
# optional, default is 0
|
||||
#quiet_logs => 0,
|
||||
|
||||
# Content-Security-Policy header that will be sent by Lstu
|
||||
# Set to '' to disable CSP header
|
||||
# https://content-security-policy.com/ provides a good documentation about CSP.
|
||||
# https://report-uri.com/home/generate provides a tool to generate a CSP header.
|
||||
# optional, default is "base-uri 'self'; connect-src 'self'; default-src 'none'; font-src 'self'; form-action 'self'; img-src 'self' data:; script-src 'self' 'unsafe-eval'; style-src 'self' 'unsafe-inline'"
|
||||
# NB: unsafe-inline for script-src and style-src are here only because morris,
|
||||
# the graph library used in the stats page requires it
|
||||
# the default value is good for `default` theme
|
||||
#csp => "base-uri 'self'; connect-src 'self'; default-src 'none'; font-src 'self'; form-action 'self'; img-src 'self' data:; script-src 'self' 'unsafe-eval'; style-src 'self' 'unsafe-inline'",
|
||||
|
||||
# X-Frame-Options header that will be sent by Lstu
|
||||
# Valid values are: 'DENY', 'SAMEORIGIN', 'ALLOW-FROM https://example.com/'
|
||||
# Set to '' to disable X-Frame-Options header
|
||||
# See https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options
|
||||
# Please note that this will add a "frame-ancestors" directive to the CSP header (see above) accordingly
|
||||
# to the chosen setting (See https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/frame-ancestors)
|
||||
# optional, default is 'DENY'
|
||||
#x_frame_options => 'DENY',
|
||||
|
||||
# X-Content-Type-Options that will be sent by Lstu
|
||||
# See https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Content-Type-Options
|
||||
# Set to '' to disable X-Content-Type-Options header
|
||||
# optional, default is 'nosniff'
|
||||
#x_content_type_options => 'nosniff',
|
||||
|
||||
# X-XSS-Protection that will be sent by Lstu
|
||||
# See https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-XSS-Protection
|
||||
# Set to '' to disable X-XSS-Protection header
|
||||
# optional, default is '1; mode=block'
|
||||
#x_xss_protection => '1; mode=block',
|
||||
|
||||
##########################
|
||||
# Lutim cron jobs settings
|
||||
##########################
|
||||
|
||||
@@ -89,6 +89,10 @@
|
||||
# optional, default is 0 (no limit)
|
||||
default_delay => 30,
|
||||
|
||||
# comma-separated values proposed for delays
|
||||
# optional, default is '0,1,7,30,365'
|
||||
#proposed_delays => '0,1,7,30,365',
|
||||
|
||||
# number of days after which the images will be deleted, even if they were uploaded with "no delay" (or value superior to max_delay)
|
||||
# a warning message will be displayed on homepage
|
||||
# optional, default is 0 (no limit)
|
||||
@@ -124,10 +128,10 @@
|
||||
# these are the credentials to access the PostgreSQL database
|
||||
# mandatory if you choosed postgresql as dbtype
|
||||
pgdb => {
|
||||
database => 'lutimtest',
|
||||
host => 'localhost',
|
||||
database => 'lutim_db',
|
||||
host => 'postgres',
|
||||
user => 'lutim',
|
||||
pwd => 'lutim'
|
||||
pwd => 'lutim_pwd'
|
||||
},
|
||||
|
||||
# use Minion instead of directly increase counters
|
||||
@@ -148,13 +152,18 @@
|
||||
# these are the credentials to access the Minion's PostgreSQL database
|
||||
# mandatory if you choosed postgresql as Minion backend, no default
|
||||
pgdb => {
|
||||
database => 'lutim_miniontest',
|
||||
host => 'localhost',
|
||||
database => 'lutim_minion',
|
||||
host => 'postgres',
|
||||
user => 'lutim',
|
||||
pwd => 'lutim'
|
||||
pwd => 'lutim_pwd'
|
||||
}
|
||||
},
|
||||
|
||||
# disable counters of images
|
||||
# set to 1 to disable counters
|
||||
# optional, counters are enabled by default
|
||||
#disable_img_stats => 0,
|
||||
|
||||
# define the height of the thumbnails generated at users' will
|
||||
# this is not the height of the thumbnails send after upload,
|
||||
# we're talking about thumbnails generated when someone asked for
|
||||
@@ -171,6 +180,62 @@
|
||||
# optional, default is 15
|
||||
#max_files_in_zip => 15,
|
||||
|
||||
# maximum size (in MB) of memory allowed for the image cache
|
||||
# Lutim has a built-in memory-based image cache to accelerate responses to often-viewed images.
|
||||
# This setting makes the cache remove oldest viewed image if the cache size is over it.
|
||||
# WARNING: a cache is created for each hypnotoad worker, which by default is twice the number of
|
||||
# CPUs you have. See http://mojolicious.org/perldoc/Mojo/Server/Hypnotoad#workers for details
|
||||
# So, if you have 4 workers and set cache_max_size to 100, the real maximum size of RAM used for
|
||||
# cache is 400MB.
|
||||
# If set to 0, the cache is disabled
|
||||
# optional, default is 0
|
||||
#cache_max_size => 0,
|
||||
|
||||
# array of memcached servers to cache URL in order to accelerate responses to often-viewed URL.
|
||||
# If set to [], the use of memcached is disabled.
|
||||
# If you use memcached, the internal cache (see cache_max_size option above) will not be used.
|
||||
# Please see https://framagit.org/luc/lutim/wikis/memcached to know how to configure your memcached
|
||||
# servers.
|
||||
# exemple of valid value: ['127.0.0.1:11211']
|
||||
# optional, default is []
|
||||
#memcached_servers => [],
|
||||
|
||||
# enable or disable Lutim built-in logs
|
||||
# set to 1 to disable logs
|
||||
# optional, default is 0
|
||||
#quiet_logs => 0,
|
||||
|
||||
# Content-Security-Policy header that will be sent by Lstu
|
||||
# Set to '' to disable CSP header
|
||||
# https://content-security-policy.com/ provides a good documentation about CSP.
|
||||
# https://report-uri.com/home/generate provides a tool to generate a CSP header.
|
||||
# optional, default is "base-uri 'self'; connect-src 'self'; default-src 'none'; font-src 'self'; form-action 'self'; img-src 'self' data:; script-src 'self' 'unsafe-eval'; style-src 'self' 'unsafe-inline'"
|
||||
# NB: unsafe-inline for script-src and style-src are here only because morris,
|
||||
# the graph library used in the stats page requires it
|
||||
# the default value is good for `default` theme
|
||||
#csp => "base-uri 'self'; connect-src 'self'; default-src 'none'; font-src 'self'; form-action 'self'; img-src 'self' data:; script-src 'self' 'unsafe-eval'; style-src 'self' 'unsafe-inline'",
|
||||
|
||||
# X-Frame-Options header that will be sent by Lstu
|
||||
# Valid values are: 'DENY', 'SAMEORIGIN', 'ALLOW-FROM https://example.com/'
|
||||
# Set to '' to disable X-Frame-Options header
|
||||
# See https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options
|
||||
# Please note that this will add a "frame-ancestors" directive to the CSP header (see above) accordingly
|
||||
# to the chosen setting (See https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/frame-ancestors)
|
||||
# optional, default is 'DENY'
|
||||
#x_frame_options => 'DENY',
|
||||
|
||||
# X-Content-Type-Options that will be sent by Lstu
|
||||
# See https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Content-Type-Options
|
||||
# Set to '' to disable X-Content-Type-Options header
|
||||
# optional, default is 'nosniff'
|
||||
#x_content_type_options => 'nosniff',
|
||||
|
||||
# X-XSS-Protection that will be sent by Lstu
|
||||
# See https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-XSS-Protection
|
||||
# Set to '' to disable X-XSS-Protection header
|
||||
# optional, default is '1; mode=block'
|
||||
#x_xss_protection => '1; mode=block',
|
||||
|
||||
##########################
|
||||
# Lutim cron jobs settings
|
||||
##########################
|
||||
|
||||
@@ -89,6 +89,10 @@
|
||||
# optional, default is 0 (no limit)
|
||||
default_delay => 30,
|
||||
|
||||
# comma-separated values proposed for delays
|
||||
# optional, default is '0,1,7,30,365'
|
||||
#proposed_delays => '0,1,7,30,365',
|
||||
|
||||
# number of days after which the images will be deleted, even if they were uploaded with "no delay" (or value superior to max_delay)
|
||||
# a warning message will be displayed on homepage
|
||||
# optional, default is 0 (no limit)
|
||||
@@ -118,7 +122,7 @@
|
||||
# you can define it relative to lutim directory or set an absolute path
|
||||
# remember that it has to be in a directory writable by Lutim user
|
||||
# optional, default is lutim.db
|
||||
db_path => 'testdqlite1.db',
|
||||
db_path => 'testsqlite1.db',
|
||||
|
||||
# PostgreSQL ONLY - only used if dbtype is set to postgresql
|
||||
# these are the credentials to access the PostgreSQL database
|
||||
@@ -155,6 +159,11 @@
|
||||
# }
|
||||
#},
|
||||
|
||||
# disable counters of images
|
||||
# set to 1 to disable counters
|
||||
# optional, counters are enabled by default
|
||||
#disable_img_stats => 0,
|
||||
|
||||
# define the height of the thumbnails generated at users' will
|
||||
# this is not the height of the thumbnails send after upload,
|
||||
# we're talking about thumbnails generated when someone asked for
|
||||
@@ -171,6 +180,62 @@
|
||||
# optional, default is 15
|
||||
#max_files_in_zip => 15,
|
||||
|
||||
# maximum size (in MB) of memory allowed for the image cache
|
||||
# Lutim has a built-in memory-based image cache to accelerate responses to often-viewed images.
|
||||
# This setting makes the cache remove oldest viewed image if the cache size is over it.
|
||||
# WARNING: a cache is created for each hypnotoad worker, which by default is twice the number of
|
||||
# CPUs you have. See http://mojolicious.org/perldoc/Mojo/Server/Hypnotoad#workers for details
|
||||
# So, if you have 4 workers and set cache_max_size to 100, the real maximum size of RAM used for
|
||||
# cache is 400MB.
|
||||
# If set to 0, the cache is disabled
|
||||
# optional, default is 0
|
||||
#cache_max_size => 0,
|
||||
|
||||
# array of memcached servers to cache URL in order to accelerate responses to often-viewed URL.
|
||||
# If set to [], the use of memcached is disabled.
|
||||
# If you use memcached, the internal cache (see cache_max_size option above) will not be used.
|
||||
# Please see https://framagit.org/luc/lutim/wikis/memcached to know how to configure your memcached
|
||||
# servers.
|
||||
# exemple of valid value: ['127.0.0.1:11211']
|
||||
# optional, default is []
|
||||
#memcached_servers => [],
|
||||
|
||||
# enable or disable Lutim built-in logs
|
||||
# set to 1 to disable logs
|
||||
# optional, default is 0
|
||||
#quiet_logs => 0,
|
||||
|
||||
# Content-Security-Policy header that will be sent by Lstu
|
||||
# Set to '' to disable CSP header
|
||||
# https://content-security-policy.com/ provides a good documentation about CSP.
|
||||
# https://report-uri.com/home/generate provides a tool to generate a CSP header.
|
||||
# optional, default is "base-uri 'self'; connect-src 'self'; default-src 'none'; font-src 'self'; form-action 'self'; img-src 'self' data:; script-src 'self' 'unsafe-eval'; style-src 'self' 'unsafe-inline'"
|
||||
# NB: unsafe-inline for script-src and style-src are here only because morris,
|
||||
# the graph library used in the stats page requires it
|
||||
# the default value is good for `default` theme
|
||||
#csp => "base-uri 'self'; connect-src 'self'; default-src 'none'; font-src 'self'; form-action 'self'; img-src 'self' data:; script-src 'self' 'unsafe-eval'; style-src 'self' 'unsafe-inline'",
|
||||
|
||||
# X-Frame-Options header that will be sent by Lstu
|
||||
# Valid values are: 'DENY', 'SAMEORIGIN', 'ALLOW-FROM https://example.com/'
|
||||
# Set to '' to disable X-Frame-Options header
|
||||
# See https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options
|
||||
# Please note that this will add a "frame-ancestors" directive to the CSP header (see above) accordingly
|
||||
# to the chosen setting (See https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/frame-ancestors)
|
||||
# optional, default is 'DENY'
|
||||
#x_frame_options => 'DENY',
|
||||
|
||||
# X-Content-Type-Options that will be sent by Lstu
|
||||
# See https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Content-Type-Options
|
||||
# Set to '' to disable X-Content-Type-Options header
|
||||
# optional, default is 'nosniff'
|
||||
#x_content_type_options => 'nosniff',
|
||||
|
||||
# X-XSS-Protection that will be sent by Lstu
|
||||
# See https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-XSS-Protection
|
||||
# Set to '' to disable X-XSS-Protection header
|
||||
# optional, default is '1; mode=block'
|
||||
#x_xss_protection => '1; mode=block',
|
||||
|
||||
##########################
|
||||
# Lutim cron jobs settings
|
||||
##########################
|
||||
|
||||
@@ -89,6 +89,10 @@
|
||||
# optional, default is 0 (no limit)
|
||||
default_delay => 30,
|
||||
|
||||
# comma-separated values proposed for delays
|
||||
# optional, default is '0,1,7,30,365'
|
||||
#proposed_delays => '0,1,7,30,365',
|
||||
|
||||
# number of days after which the images will be deleted, even if they were uploaded with "no delay" (or value superior to max_delay)
|
||||
# a warning message will be displayed on homepage
|
||||
# optional, default is 0 (no limit)
|
||||
@@ -155,6 +159,11 @@
|
||||
# }
|
||||
},
|
||||
|
||||
# disable counters of images
|
||||
# set to 1 to disable counters
|
||||
# optional, counters are enabled by default
|
||||
#disable_img_stats => 0,
|
||||
|
||||
# define the height of the thumbnails generated at users' will
|
||||
# this is not the height of the thumbnails send after upload,
|
||||
# we're talking about thumbnails generated when someone asked for
|
||||
@@ -171,6 +180,62 @@
|
||||
# optional, default is 15
|
||||
#max_files_in_zip => 15,
|
||||
|
||||
# maximum size (in MB) of memory allowed for the image cache
|
||||
# Lutim has a built-in memory-based image cache to accelerate responses to often-viewed images.
|
||||
# This setting makes the cache remove oldest viewed image if the cache size is over it.
|
||||
# WARNING: a cache is created for each hypnotoad worker, which by default is twice the number of
|
||||
# CPUs you have. See http://mojolicious.org/perldoc/Mojo/Server/Hypnotoad#workers for details
|
||||
# So, if you have 4 workers and set cache_max_size to 100, the real maximum size of RAM used for
|
||||
# cache is 400MB.
|
||||
# If set to 0, the cache is disabled
|
||||
# optional, default is 0
|
||||
#cache_max_size => 0,
|
||||
|
||||
# array of memcached servers to cache URL in order to accelerate responses to often-viewed URL.
|
||||
# If set to [], the use of memcached is disabled.
|
||||
# If you use memcached, the internal cache (see cache_max_size option above) will not be used.
|
||||
# Please see https://framagit.org/luc/lutim/wikis/memcached to know how to configure your memcached
|
||||
# servers.
|
||||
# exemple of valid value: ['127.0.0.1:11211']
|
||||
# optional, default is []
|
||||
#memcached_servers => [],
|
||||
|
||||
# enable or disable Lutim built-in logs
|
||||
# set to 1 to disable logs
|
||||
# optional, default is 0
|
||||
#quiet_logs => 0,
|
||||
|
||||
# Content-Security-Policy header that will be sent by Lstu
|
||||
# Set to '' to disable CSP header
|
||||
# https://content-security-policy.com/ provides a good documentation about CSP.
|
||||
# https://report-uri.com/home/generate provides a tool to generate a CSP header.
|
||||
# optional, default is "base-uri 'self'; connect-src 'self'; default-src 'none'; font-src 'self'; form-action 'self'; img-src 'self' data:; script-src 'self' 'unsafe-eval'; style-src 'self' 'unsafe-inline'"
|
||||
# NB: unsafe-inline for script-src and style-src are here only because morris,
|
||||
# the graph library used in the stats page requires it
|
||||
# the default value is good for `default` theme
|
||||
#csp => "base-uri 'self'; connect-src 'self'; default-src 'none'; font-src 'self'; form-action 'self'; img-src 'self' data:; script-src 'self' 'unsafe-eval'; style-src 'self' 'unsafe-inline'",
|
||||
|
||||
# X-Frame-Options header that will be sent by Lstu
|
||||
# Valid values are: 'DENY', 'SAMEORIGIN', 'ALLOW-FROM https://example.com/'
|
||||
# Set to '' to disable X-Frame-Options header
|
||||
# See https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options
|
||||
# Please note that this will add a "frame-ancestors" directive to the CSP header (see above) accordingly
|
||||
# to the chosen setting (See https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/frame-ancestors)
|
||||
# optional, default is 'DENY'
|
||||
#x_frame_options => 'DENY',
|
||||
|
||||
# X-Content-Type-Options that will be sent by Lstu
|
||||
# See https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Content-Type-Options
|
||||
# Set to '' to disable X-Content-Type-Options header
|
||||
# optional, default is 'nosniff'
|
||||
#x_content_type_options => 'nosniff',
|
||||
|
||||
# X-XSS-Protection that will be sent by Lstu
|
||||
# See https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-XSS-Protection
|
||||
# Set to '' to disable X-XSS-Protection header
|
||||
# optional, default is '1; mode=block'
|
||||
#x_xss_protection => '1; mode=block',
|
||||
|
||||
##########################
|
||||
# Lutim cron jobs settings
|
||||
##########################
|
||||
|
||||
@@ -89,6 +89,10 @@
|
||||
# optional, default is 0 (no limit)
|
||||
default_delay => 30,
|
||||
|
||||
# comma-separated values proposed for delays
|
||||
# optional, default is '0,1,7,30,365'
|
||||
#proposed_delays => '0,1,7,30,365',
|
||||
|
||||
# number of days after which the images will be deleted, even if they were uploaded with "no delay" (or value superior to max_delay)
|
||||
# a warning message will be displayed on homepage
|
||||
# optional, default is 0 (no limit)
|
||||
@@ -148,13 +152,18 @@
|
||||
# these are the credentials to access the Minion's PostgreSQL database
|
||||
# mandatory if you choosed postgresql as Minion backend, no default
|
||||
pgdb => {
|
||||
database => 'lutim_miniontest',
|
||||
host => 'localhost',
|
||||
database => 'lutim_minion',
|
||||
host => 'postgres',
|
||||
user => 'lutim',
|
||||
pwd => 'lutim'
|
||||
pwd => 'lutim_pwd'
|
||||
}
|
||||
},
|
||||
|
||||
# disable counters of images
|
||||
# set to 1 to disable counters
|
||||
# optional, counters are enabled by default
|
||||
#disable_img_stats => 0,
|
||||
|
||||
# define the height of the thumbnails generated at users' will
|
||||
# this is not the height of the thumbnails send after upload,
|
||||
# we're talking about thumbnails generated when someone asked for
|
||||
@@ -171,6 +180,62 @@
|
||||
# optional, default is 15
|
||||
#max_files_in_zip => 15,
|
||||
|
||||
# maximum size (in MB) of memory allowed for the image cache
|
||||
# Lutim has a built-in memory-based image cache to accelerate responses to often-viewed images.
|
||||
# This setting makes the cache remove oldest viewed image if the cache size is over it.
|
||||
# WARNING: a cache is created for each hypnotoad worker, which by default is twice the number of
|
||||
# CPUs you have. See http://mojolicious.org/perldoc/Mojo/Server/Hypnotoad#workers for details
|
||||
# So, if you have 4 workers and set cache_max_size to 100, the real maximum size of RAM used for
|
||||
# cache is 400MB.
|
||||
# If set to 0, the cache is disabled
|
||||
# optional, default is 0
|
||||
#cache_max_size => 0,
|
||||
|
||||
# array of memcached servers to cache URL in order to accelerate responses to often-viewed URL.
|
||||
# If set to [], the use of memcached is disabled.
|
||||
# If you use memcached, the internal cache (see cache_max_size option above) will not be used.
|
||||
# Please see https://framagit.org/luc/lutim/wikis/memcached to know how to configure your memcached
|
||||
# servers.
|
||||
# exemple of valid value: ['127.0.0.1:11211']
|
||||
# optional, default is []
|
||||
#memcached_servers => [],
|
||||
|
||||
# enable or disable Lutim built-in logs
|
||||
# set to 1 to disable logs
|
||||
# optional, default is 0
|
||||
#quiet_logs => 0,
|
||||
|
||||
# Content-Security-Policy header that will be sent by Lstu
|
||||
# Set to '' to disable CSP header
|
||||
# https://content-security-policy.com/ provides a good documentation about CSP.
|
||||
# https://report-uri.com/home/generate provides a tool to generate a CSP header.
|
||||
# optional, default is "base-uri 'self'; connect-src 'self'; default-src 'none'; font-src 'self'; form-action 'self'; img-src 'self' data:; script-src 'self' 'unsafe-eval'; style-src 'self' 'unsafe-inline'"
|
||||
# NB: unsafe-inline for script-src and style-src are here only because morris,
|
||||
# the graph library used in the stats page requires it
|
||||
# the default value is good for `default` theme
|
||||
#csp => "base-uri 'self'; connect-src 'self'; default-src 'none'; font-src 'self'; form-action 'self'; img-src 'self' data:; script-src 'self' 'unsafe-eval'; style-src 'self' 'unsafe-inline'",
|
||||
|
||||
# X-Frame-Options header that will be sent by Lstu
|
||||
# Valid values are: 'DENY', 'SAMEORIGIN', 'ALLOW-FROM https://example.com/'
|
||||
# Set to '' to disable X-Frame-Options header
|
||||
# See https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options
|
||||
# Please note that this will add a "frame-ancestors" directive to the CSP header (see above) accordingly
|
||||
# to the chosen setting (See https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/frame-ancestors)
|
||||
# optional, default is 'DENY'
|
||||
#x_frame_options => 'DENY',
|
||||
|
||||
# X-Content-Type-Options that will be sent by Lstu
|
||||
# See https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Content-Type-Options
|
||||
# Set to '' to disable X-Content-Type-Options header
|
||||
# optional, default is 'nosniff'
|
||||
#x_content_type_options => 'nosniff',
|
||||
|
||||
# X-XSS-Protection that will be sent by Lstu
|
||||
# See https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-XSS-Protection
|
||||
# Set to '' to disable X-XSS-Protection header
|
||||
# optional, default is '1; mode=block'
|
||||
#x_xss_protection => '1; mode=block',
|
||||
|
||||
##########################
|
||||
# Lutim cron jobs settings
|
||||
##########################
|
||||
|
||||
76
t/test.t
76
t/test.t
@@ -9,6 +9,7 @@ use Test::Mojo;
|
||||
|
||||
use FindBin qw($Bin);
|
||||
use Digest::file qw(digest_file_hex);
|
||||
use IO::Uncompress::Unzip qw($UnzipError);
|
||||
|
||||
my ($m, $cfile);
|
||||
|
||||
@@ -26,38 +27,76 @@ BEGIN {
|
||||
{
|
||||
file => $cfile->to_abs->to_string,
|
||||
default => {
|
||||
dbtype => 'sqlite'
|
||||
provisioning => 100,
|
||||
provis_step => 5,
|
||||
length => 8,
|
||||
always_encrypt => 0,
|
||||
anti_flood_delay => 5,
|
||||
max_file_size => 10*1024*1024,
|
||||
https => 0,
|
||||
proposed_delays => '0,1,7,30,365',
|
||||
default_delay => 0,
|
||||
max_delay => 0,
|
||||
token_length => 24,
|
||||
crypto_key_length => 8,
|
||||
thumbnail_size => 100,
|
||||
theme => 'default',
|
||||
dbtype => 'sqlite',
|
||||
db_path => 'lutim.db',
|
||||
max_files_in_zip => 15,
|
||||
prefix => '/',
|
||||
minion => {
|
||||
enabled => 0,
|
||||
dbtype => 'sqlite',
|
||||
db_path => 'minion.db'
|
||||
},
|
||||
cache_max_size => 0,
|
||||
memcached_servers => [],
|
||||
quiet_logs => 0,
|
||||
disable_img_stats => 0,
|
||||
x_frame_options => 'DENY',
|
||||
x_content_type_options => 'nosniff',
|
||||
x_xss_protection => '1; mode=block',
|
||||
}
|
||||
}
|
||||
);
|
||||
$m->plugin('Lutim::Plugin::Helpers');
|
||||
$m->plugin('DebugDumperHelper');
|
||||
}
|
||||
|
||||
# Home page
|
||||
my $t = Test::Mojo->new('Lutim');
|
||||
$t->get_ok('/')
|
||||
->status_is(200)
|
||||
->content_like(qr/Let's Upload That IMage/i);
|
||||
->content_like(qr/Let's Upload That IMage/i)
|
||||
->header_is('Content-Security-Policy' => "base-uri 'self'; connect-src 'self'; default-src 'none'; font-src 'self'; form-action 'self'; frame-ancestors 'none'; img-src 'self' data:; script-src 'self' 'unsafe-eval'; style-src 'self' 'unsafe-inline'")
|
||||
->header_is('X-Frame-Options' => 'DENY')
|
||||
->header_is('X-XSS-Protection' => '1; mode=block')
|
||||
->header_is('X-Content-Type-Options' => 'nosniff');
|
||||
|
||||
# Gzip static assets
|
||||
$t->get_ok('/css/lutim.css')
|
||||
->status_is(200)
|
||||
->header_is(Vary => 'Accept-Encoding');
|
||||
|
||||
# Instance settings informations
|
||||
$t->get_ok('/infos')
|
||||
->status_is(200)
|
||||
->json_has('image_magick')
|
||||
->json_has('/image_magick')
|
||||
->json_is(
|
||||
'/always_encrypt' => false,
|
||||
'/broadcast_message' => 'test broadcast message',
|
||||
'/contact' => 'John Doe, admin[at]example.com',
|
||||
'/default_delay' => 30,
|
||||
'/max_delay' => 200,
|
||||
'/max_file_size' => 1048576
|
||||
'/max_file_size' => 1048576,
|
||||
'/upload_enabled' => true
|
||||
);
|
||||
|
||||
# Post image
|
||||
my $image = Mojo::File->new($Bin, '..', 'themes', 'default', 'public', 'img', 'Lutim.png')->to_string;
|
||||
$t->post_ok('/' => form => { file => { file => $image }, format => 'json' })
|
||||
->status_is(200)
|
||||
->json_has('msg', 'success')
|
||||
->json_has('/msg', '/success')
|
||||
->json_is('/success' => true, '/msg/filename' => 'Lutim.png')
|
||||
->json_like('/msg/short' => qr#[-_a-zA-Z0-9]{8}#, '/msg/real_short' => qr#[-_a-zA-Z0-9]{8}#, '/msg/token' => qr#[-_a-zA-Z0-9]{24}#);
|
||||
|
||||
@@ -71,6 +110,26 @@ $t->get_ok('/'.$short)
|
||||
$t->get_ok('/'.$short)
|
||||
->status_is(302);
|
||||
|
||||
# Get zip file and test it
|
||||
$t->get_ok('/zip?i='.$short)
|
||||
->status_is(200)
|
||||
->header_is('Content-Disposition' => 'attachment;filename=images.zip');
|
||||
|
||||
my $zip = $t->ua->get('/zip?i='.$short)->res->body;
|
||||
my $u = new IO::Uncompress::Unzip \$zip
|
||||
or die "Cannot open zip file: $UnzipError";
|
||||
|
||||
my $status;
|
||||
my @files = qw(hosted_with_lutim.png images/ images/Lutim.png.txt);
|
||||
for ($status = 1; $status > 0; $status = $u->nextStream()) {
|
||||
my $name = $u->getHeaderInfo()->{Name};
|
||||
is($name, shift(@files));
|
||||
my $buff;
|
||||
while (($status = $u->read($buff)) > 0) {
|
||||
}
|
||||
last if $status < 0;
|
||||
}
|
||||
|
||||
# Delete image with token
|
||||
$raw = $t->ua->post('/' => form => { file => { file => $image }, format => 'json' })->res;
|
||||
my $rshort = $raw->json('/msg/real_short');
|
||||
@@ -79,7 +138,7 @@ my $token = $raw->json('/msg/token');
|
||||
$t->get_ok('/'.$rshort)
|
||||
->status_is(200);
|
||||
|
||||
$t->get_ok('/d/'.$rshort.'/'.$token, form => { format => 'json' })
|
||||
$t->get_ok('/d/'.$rshort.'/'.$token, form => { _format => 'json' })
|
||||
->status_is('200')
|
||||
->json_is(
|
||||
{
|
||||
@@ -91,8 +150,7 @@ $t->get_ok('/d/'.$rshort.'/'.$token, form => { format => 'json' })
|
||||
$t->get_ok('/'.$rshort)
|
||||
->status_is(302);
|
||||
|
||||
# Needed if we use Minion with sqlite for increasing counters
|
||||
sleep 8;
|
||||
$t->app->minion->perform_jobs if $t->app->config('minion')->{enabled};
|
||||
|
||||
# Get image counter
|
||||
$t->post_ok('/c', form => { short => $rshort, token => $token })
|
||||
|
||||
659
themes/default/lib/Lutim/I18N/ar.po
Normal file
659
themes/default/lib/Lutim/I18N/ar.po
Normal file
@@ -0,0 +1,659 @@
|
||||
# Lutim language file
|
||||
# Copyright (C) 2014 Luc Didry
|
||||
# This file is distributed under the same license as the Lutim package.
|
||||
#
|
||||
# Translators:
|
||||
# ButterflyOfFire <butterflyoffire@protonmail.com>, ٢٠١٨, 2018.
|
||||
# ButterflyOfFire <butterflyoffire@protonmail.com>, 2018. #zanata
|
||||
# Luc Didry <luc@framasoft.org>, 2018. #zanata
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"PO-Revision-Date: 2020-03-09 16:23+0000\n"
|
||||
"Last-Translator: Luc Didry <luc@framasoft.org>\n"
|
||||
"Language-Team: Arabic <https://weblate.framasoft.org/projects/lutim/"
|
||||
"default-theme/ar/>\n"
|
||||
"Language: ar\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 "
|
||||
"&& n%100<=10 ? 3 : n%100>=11 ? 4 : 5;\n"
|
||||
"X-Generator: Weblate 3.11.2\n"
|
||||
"n%100<=10 ? 3: n%100>=11 ? 4 : 5);\n"
|
||||
|
||||
#. (7)
|
||||
#. (30)
|
||||
#. ($delay)
|
||||
#. (config('max_delay')
|
||||
#: lib/Lutim/Command/cron/stats.pm:159 lib/Lutim/Command/cron/stats.pm:160 lib/Lutim/Command/cron/stats.pm:173 lib/Lutim/Command/cron/stats.pm:174 lib/Lutim/Command/cron/stats.pm:190 lib/Lutim/Command/cron/stats.pm:191 themes/default/templates/myfiles.html.ep:24 themes/default/templates/myfiles.html.ep:33 themes/default/templates/myfiles.html.ep:34 themes/default/templates/partial/for_my_delay.html.ep:13 themes/default/templates/partial/for_my_delay.html.ep:14 themes/default/templates/partial/for_my_delay.html.ep:4 themes/default/templates/partial/lutim.js.ep:140 themes/default/templates/partial/lutim.js.ep:149 themes/default/templates/partial/lutim.js.ep:150 themes/default/templates/partial/raw.js.ep:23 themes/default/templates/partial/raw.js.ep:24 themes/default/templates/partial/raw.js.ep:6 themes/default/templates/partial/raw.js.ep:7 themes/default/templates/raw.html.ep:8 themes/default/templates/raw.html.ep:9
|
||||
msgid "%1 days"
|
||||
msgstr "%1 أيام"
|
||||
|
||||
#. ($total)
|
||||
#: themes/default/templates/stats.html.ep:2
|
||||
msgid "%1 sent images on this instance from beginning."
|
||||
msgstr "تم إرسال %1 صورة على مثيل الخادوم هذا منذ البداية."
|
||||
|
||||
#: themes/default/templates/index.html.ep:208
|
||||
msgid "-or-"
|
||||
msgstr "-أو-"
|
||||
|
||||
#: lib/Lutim.pm:350 lib/Lutim/Command/cron/stats.pm:161 lib/Lutim/Command/cron/stats.pm:175 lib/Lutim/Command/cron/stats.pm:192 themes/default/templates/index.html.ep:5 themes/default/templates/myfiles.html.ep:5 themes/default/templates/partial/raw.js.ep:25 themes/default/templates/partial/raw.js.ep:8 themes/default/templates/raw.html.ep:10
|
||||
msgid "1 year"
|
||||
msgstr "سنة واحدة"
|
||||
|
||||
#: lib/Lutim.pm:349 lib/Lutim/Command/cron/stats.pm:158 lib/Lutim/Command/cron/stats.pm:172 lib/Lutim/Command/cron/stats.pm:189 themes/default/templates/index.html.ep:4 themes/default/templates/myfiles.html.ep:33 themes/default/templates/myfiles.html.ep:4 themes/default/templates/partial/for_my_delay.html.ep:13 themes/default/templates/partial/lutim.js.ep:149 themes/default/templates/partial/raw.js.ep:22 themes/default/templates/partial/raw.js.ep:5 themes/default/templates/raw.html.ep:7
|
||||
msgid "24 hours"
|
||||
msgstr "24 ساعة"
|
||||
|
||||
#: themes/default/templates/partial/myfiles.js.ep:180
|
||||
msgid ": Error while trying to get the counter."
|
||||
msgstr ": طرأ هناك خطأ أثناء محاولة إستعادة العداد."
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:77
|
||||
msgid "About"
|
||||
msgstr "عن البرنامج"
|
||||
|
||||
#: lib/Lutim/Command/cron/stats.pm:154 themes/default/templates/raw.html.ep:3
|
||||
msgid "Active images"
|
||||
msgstr "الصور النشطة"
|
||||
|
||||
#: lib/Lutim/Controller/Image.pm:328
|
||||
msgid "An error occured while downloading the image."
|
||||
msgstr "طرأ هناك خطأ أثناء عملية تنزيل الصورة."
|
||||
|
||||
#: themes/default/templates/zip.html.ep:2
|
||||
msgid "Archives download"
|
||||
msgstr "تنزيل الأرشيف"
|
||||
|
||||
#: themes/default/templates/about.html.ep:44 themes/default/templates/myfiles.html.ep:135 themes/default/templates/stats.html.ep:25
|
||||
msgid "Back to homepage"
|
||||
msgstr "العودة إلى الصفحة الرئيسية"
|
||||
|
||||
#: themes/default/templates/index.html.ep:211 themes/default/templates/index.html.ep:212
|
||||
msgid "Click to open the file browser"
|
||||
msgstr "إضغط لفتح مدير الملفات"
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:51
|
||||
msgid "Close"
|
||||
msgstr "إغلاق"
|
||||
|
||||
#: themes/default/templates/gallery.html.ep:29
|
||||
msgid "Close (Esc)"
|
||||
msgstr "إغلاق (Esc)"
|
||||
|
||||
#: themes/default/templates/about.html.ep:30
|
||||
msgid "Contributors"
|
||||
msgstr "المساهمون"
|
||||
|
||||
#: themes/default/templates/partial/common.js.ep:113 themes/default/templates/partial/common.js.ep:93
|
||||
msgid "Copied to clipboard"
|
||||
msgstr "تم نسخه إلى الحافظة"
|
||||
|
||||
#: themes/default/templates/partial/lutim.js.ep:215 themes/default/templates/partial/lutim.js.ep:278 themes/default/templates/partial/lutim.js.ep:364
|
||||
msgid "Copy all view links to clipboard"
|
||||
msgstr "أنسخ كافة روابط العرض إلى الحافظة"
|
||||
|
||||
#: themes/default/templates/index.html.ep:103 themes/default/templates/index.html.ep:111 themes/default/templates/index.html.ep:18 themes/default/templates/index.html.ep:36 themes/default/templates/index.html.ep:54 themes/default/templates/index.html.ep:87 themes/default/templates/index.html.ep:95 themes/default/templates/myfiles.html.ep:104 themes/default/templates/myfiles.html.ep:68 themes/default/templates/myfiles.html.ep:86 themes/default/templates/partial/common.js.ep:186 themes/default/templates/partial/lutim.js.ep:106 themes/default/templates/partial/lutim.js.ep:121 themes/default/templates/partial/lutim.js.ep:80 themes/default/templates/partial/lutim.js.ep:92 themes/default/templates/partial/myfiles.js.ep:142
|
||||
msgid "Copy to clipboard"
|
||||
msgstr "أنسخ إلى الحافظة"
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:123
|
||||
msgid "Counter"
|
||||
msgstr "العداد"
|
||||
|
||||
#: themes/default/templates/stats.html.ep:18
|
||||
msgid "Delay repartition chart for disabled images"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/stats.html.ep:15
|
||||
msgid "Delay repartition chart for enabled images"
|
||||
msgstr "المنحنى البياني للتوزيع الزمني للصور النشطة"
|
||||
|
||||
#: themes/default/templates/index.html.ep:133 themes/default/templates/index.html.ep:165 themes/default/templates/index.html.ep:196 themes/default/templates/myfiles.html.ep:124 themes/default/templates/myfiles.html.ep:45 themes/default/templates/partial/lutim.js.ep:161
|
||||
msgid "Delete at first view?"
|
||||
msgstr "هل تود حذف الصورة مباشرة بعد أول عرض ؟"
|
||||
|
||||
#: lib/Lutim/Command/cron/stats.pm:155 themes/default/templates/raw.html.ep:4
|
||||
msgid "Deleted images"
|
||||
msgstr "الصور المحذوفة"
|
||||
|
||||
#: lib/Lutim/Command/cron/stats.pm:156 themes/default/templates/raw.html.ep:5
|
||||
msgid "Deleted images in 30 days"
|
||||
msgstr "الصور المحذوفة منذ 30 يوما"
|
||||
|
||||
#: themes/default/templates/index.html.ep:116 themes/default/templates/myfiles.html.ep:127 themes/default/templates/partial/common.js.ep:178 themes/default/templates/partial/common.js.ep:181
|
||||
msgid "Deletion link"
|
||||
msgstr "رابط الحذف"
|
||||
|
||||
#: themes/default/templates/gallery.html.ep:10
|
||||
msgid "Download all images"
|
||||
msgstr "تنزيل كافة الصور"
|
||||
|
||||
#: themes/default/templates/index.html.ep:101 themes/default/templates/index.html.ep:99 themes/default/templates/partial/lutim.js.ep:102 themes/default/templates/partial/lutim.js.ep:98
|
||||
msgid "Download link"
|
||||
msgstr "رابط التنزيل"
|
||||
|
||||
#: themes/default/templates/index.html.ep:28 themes/default/templates/index.html.ep:31 themes/default/templates/myfiles.html.ep:78 themes/default/templates/myfiles.html.ep:81
|
||||
msgid "Download zip link"
|
||||
msgstr "رابط التنزيل كحزمة مضغوطة"
|
||||
|
||||
#: themes/default/templates/index.html.ep:207
|
||||
msgid "Drag & drop images here"
|
||||
msgstr "إسحب ثم القي الصور هنا"
|
||||
|
||||
#: themes/default/templates/about.html.ep:7
|
||||
msgid ""
|
||||
"Drag and drop an image in the appropriate area or use the traditional way to "
|
||||
"send files and Lutim will provide you four URLs. One to view the image, an "
|
||||
"other to directly download it, one you can use on social networks and a last "
|
||||
"to delete the image when you want."
|
||||
msgstr ""
|
||||
"إسحب ثم القي صورة ما على المساحة المخصصة لذلك أو قم باستخدام الأسلوب المعتاد "
|
||||
"لإرسال الملفات و سيقوم لوتان بعدها بتوفير أربع روابط. رابط لعرض الصورة و آخر "
|
||||
"لتنزيل الصورة مباشرة و آخر يمكنكم إستخدامه على شبكات التواصل الإجتماعي و "
|
||||
"أخيرا رابط آخر يمكّنكم من حذف الصورة إن شئتم."
|
||||
|
||||
#: themes/default/templates/index.html.ep:168 themes/default/templates/index.html.ep:199
|
||||
msgid "Encrypt the image (Lutim does not keep the key)."
|
||||
msgstr "قم بتعمية و تشفير الصورة (لوتان Lutim لا يحتفظ بالمفتاح)."
|
||||
|
||||
#: themes/default/templates/partial/lutim.js.ep:45 themes/default/templates/partial/myfiles.js.ep:113
|
||||
msgid "Error while trying to modify the image."
|
||||
msgstr "طرأ هناك خطأ أثناء عملية تعديل الصورة."
|
||||
|
||||
#: themes/default/templates/stats.html.ep:10
|
||||
msgid "Evolution of total files"
|
||||
msgstr "تطور العدد الإجمالي للملفات"
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:126
|
||||
msgid "Expires at"
|
||||
msgstr "تنتهي مدة صلاحيتها في"
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:112
|
||||
msgid "Export localStorage data"
|
||||
msgstr "تصدير بيانات localStorage"
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:121
|
||||
msgid "File name"
|
||||
msgstr "إسم الملف"
|
||||
|
||||
#: themes/default/templates/about.html.ep:24
|
||||
msgid ""
|
||||
"For more details, see the <a href=\"https://framagit.org/luc/"
|
||||
"lutim\">homepage of the project</a>."
|
||||
msgstr ""
|
||||
"للمزيد من التفاصيل، قم بزيارة <a href=\"https://framagit.org/luc/"
|
||||
"lutim\">الصفحة الرئيسة للمشروع</a>."
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:80
|
||||
msgid "Fork me!"
|
||||
msgstr "قم بتشعيبي !"
|
||||
|
||||
#: themes/default/templates/index.html.ep:10 themes/default/templates/index.html.ep:13 themes/default/templates/myfiles.html.ep:60 themes/default/templates/myfiles.html.ep:63
|
||||
msgid "Gallery link"
|
||||
msgstr "رابط المعرض"
|
||||
|
||||
#: themes/default/templates/partial/common.js.ep:116 themes/default/templates/partial/common.js.ep:134
|
||||
msgid "Hit Ctrl+C, then Enter to copy the short link"
|
||||
msgstr "إضغط على CTRL+C ثم على مفتاح الإدخال للقيام بنسخ الرابط القصير"
|
||||
|
||||
#: themes/default/templates/layouts/default.html.ep:47
|
||||
msgid "Homepage"
|
||||
msgstr "الصفحة الرئيسية"
|
||||
|
||||
#: themes/default/templates/about.html.ep:20
|
||||
msgid "How do you pronounce Lutim?"
|
||||
msgstr "كيف يُنطق Lutim ؟"
|
||||
|
||||
#: themes/default/templates/about.html.ep:6
|
||||
msgid "How does it work?"
|
||||
msgstr "كيف يشتغل ؟"
|
||||
|
||||
#: themes/default/templates/about.html.ep:18
|
||||
msgid "How to report an image?"
|
||||
msgstr "كيف يتم الإبلاغ عن صورة ما ؟"
|
||||
|
||||
#: themes/default/templates/about.html.ep:14
|
||||
msgid ""
|
||||
"If the files are deleted if you ask it while posting it, their SHA512 "
|
||||
"footprint are retained."
|
||||
msgstr ""
|
||||
"إذا تم حذف الملفات و إن قمت بطلب ذلك أثناء الإرسال سوف نقوم بالإحتفاظ ببصمات "
|
||||
"SHA512 الخاصة بالصور."
|
||||
|
||||
#: themes/default/templates/index.html.ep:181 themes/default/templates/index.html.ep:221
|
||||
msgid "Image URL"
|
||||
msgstr "رابط الصورة"
|
||||
|
||||
#: lib/Lutim/Command/cron/stats.pm:153 themes/default/templates/raw.html.ep:2
|
||||
msgid "Image delay"
|
||||
msgstr "تأجيل الصورة"
|
||||
|
||||
#: themes/default/templates/partial/common.js.ep:157
|
||||
msgid "Image deleted"
|
||||
msgstr "تم حذف الصورة"
|
||||
|
||||
#: lib/Lutim/Controller/Image.pm:756
|
||||
msgid "Image not found."
|
||||
msgstr "الصورة غير موجودة."
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:113
|
||||
msgid "Import localStorage data"
|
||||
msgstr "استيراد بيانات localStorage"
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:69
|
||||
msgid "Informations"
|
||||
msgstr "معلومات"
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:25
|
||||
msgid "Install webapp"
|
||||
msgstr "نتصيب برنامج الويب"
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:21
|
||||
msgid "Instance's statistics"
|
||||
msgstr "إحصائيات مثيل الخادوم"
|
||||
|
||||
#: themes/default/templates/about.html.ep:11
|
||||
msgid "Is it really anonymous?"
|
||||
msgstr "هل يدعم حقا التخفي ؟"
|
||||
|
||||
#: themes/default/templates/about.html.ep:9
|
||||
msgid "Is it really free (as in free beer)?"
|
||||
msgstr "هل هو مجاني (كما في عبارة مشروب مجاني) ؟"
|
||||
|
||||
#: themes/default/templates/about.html.ep:21
|
||||
msgid ""
|
||||
"Juste like you pronounce the French word <a href=\"https://fr.wikipedia.org/"
|
||||
"wiki/Lutin\">lutin</a> (/ly.tɛ̃/)."
|
||||
msgstr ""
|
||||
"يُنطق مِثل الكلمة الفرنسية <a href=\"https://fr.wikipedia.org/wiki/"
|
||||
"Lutin\">lutin</a> (/ly.tɛ̃/)."
|
||||
|
||||
#: themes/default/templates/index.html.ep:171 themes/default/templates/index.html.ep:202
|
||||
msgid "Keep EXIF tags"
|
||||
msgstr "الإبقاء على بيانات EXIF"
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:43
|
||||
msgid "Language"
|
||||
msgstr "اللغة"
|
||||
|
||||
#: themes/default/templates/index.html.ep:136 themes/default/templates/index.html.ep:184 themes/default/templates/index.html.ep:224 themes/default/templates/partial/lutim.js.ep:165
|
||||
msgid "Let's go!"
|
||||
msgstr "هيا بنا !"
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:74
|
||||
msgid "License:"
|
||||
msgstr "الرخصة :"
|
||||
|
||||
#: themes/default/templates/index.html.ep:107 themes/default/templates/index.html.ep:109 themes/default/templates/partial/lutim.js.ep:112 themes/default/templates/partial/lutim.js.ep:116
|
||||
msgid "Link for share on social networks"
|
||||
msgstr "رابط للمشاركة على شبكات التواصل الإجتماعي"
|
||||
|
||||
#: themes/default/templates/login.html.ep:8
|
||||
msgid "Login"
|
||||
msgstr "تسجيل الدخول"
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:33
|
||||
msgid "Logout"
|
||||
msgstr "الخروج"
|
||||
|
||||
#: themes/default/templates/zip.html.ep:7
|
||||
msgid ""
|
||||
"Lutim can't zip so many images at once, so it splitted your demand in "
|
||||
"multiple URLs."
|
||||
msgstr ""
|
||||
"ليس بمقدور لوتان ضغط العديد من الصور في آن واحد، لذا قام بتقطيع طلبك على شكل "
|
||||
"عدةروابط."
|
||||
|
||||
#: themes/default/templates/about.html.ep:4
|
||||
msgid ""
|
||||
"Lutim is a free (as in free beer) and anonymous image hosting service. It's "
|
||||
"also the name of the free (as in free speech) software which provides this "
|
||||
"service."
|
||||
msgstr ""
|
||||
"لوتيم أو Lutim خدمة مجانية ومجهولة لاستضافة الصور. ويعني كذلك اسم البرنامج "
|
||||
"الحر الموفّر لهذه الخدمة."
|
||||
|
||||
#: themes/default/templates/about.html.ep:25
|
||||
msgid "Main developers"
|
||||
msgstr "المطورون الرئيسيون"
|
||||
|
||||
#: themes/default/templates/index.html.ep:91 themes/default/templates/index.html.ep:93 themes/default/templates/partial/lutim.js.ep:86 themes/default/templates/partial/lutim.js.ep:89
|
||||
msgid "Markdown syntax"
|
||||
msgstr "صيغة ماركداون"
|
||||
|
||||
#: themes/default/templates/partial/myfiles.js.ep:149
|
||||
msgid "Modify expiration delay"
|
||||
msgstr "تعديل تاريخ نهاية الصلاحية"
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:7 themes/default/templates/partial/navbar.html.ep:18
|
||||
msgid "My images"
|
||||
msgstr "صوري"
|
||||
|
||||
#: themes/default/templates/gallery.html.ep:45
|
||||
msgid "Next (arrow right)"
|
||||
msgstr "التالي (السهم إلى اليمين)"
|
||||
|
||||
#: themes/default/templates/partial/myfiles.js.ep:105 themes/default/templates/partial/myfiles.js.ep:132
|
||||
msgid "No limit"
|
||||
msgstr "غير محدود"
|
||||
|
||||
#: themes/default/templates/index.html.ep:183 themes/default/templates/index.html.ep:216
|
||||
msgid "Only images are allowed"
|
||||
msgstr "لا يُسمح إلّا بإستضافة الصور"
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:11
|
||||
msgid ""
|
||||
"Only the images sent with this browser will be listed here. The details are "
|
||||
"stored in localStorage: if you delete your localStorage data, you'll loose "
|
||||
"these details."
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/about.html.ep:16
|
||||
msgid ""
|
||||
"Only the uploader! (well, only if he's the only owner of the images' rights "
|
||||
"before the upload)"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/login.html.ep:12
|
||||
msgid "Password"
|
||||
msgstr "الكلمة السرية"
|
||||
|
||||
#: themes/default/templates/zip.html.ep:12
|
||||
msgid "Please click on each URL to download the different zip files."
|
||||
msgstr "يُرجى النقر على كل عنوان لتنزيل الملفات المضغوطة zip المختلفة."
|
||||
|
||||
#. (config('contact')
|
||||
#: themes/default/templates/about.html.ep:19
|
||||
msgid "Please contact the administrator: %1"
|
||||
msgstr "يرجى الإتصال بالمدير : %1"
|
||||
|
||||
#: lib/Lutim/Controller/Authent.pm:36
|
||||
msgid "Please, check your credentials: unable to authenticate."
|
||||
msgstr "يرجى التحقق مِن مُعرّفاتك : تعذر الإستيثاق."
|
||||
|
||||
#: themes/default/templates/gallery.html.ep:43
|
||||
msgid "Previous (arrow left)"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/index.html.ep:46 themes/default/templates/index.html.ep:49 themes/default/templates/myfiles.html.ep:96 themes/default/templates/myfiles.html.ep:99
|
||||
msgid "Random image link"
|
||||
msgstr "رابط إلى صورة عشوائية"
|
||||
|
||||
#: themes/default/templates/stats.html.ep:22
|
||||
msgid "Raw stats"
|
||||
msgstr "الإحصائيات الخامة"
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:52
|
||||
msgid "Save changes"
|
||||
msgstr "حفظ التعديلات"
|
||||
|
||||
#: themes/default/templates/index.html.ep:176
|
||||
msgid "Send an image"
|
||||
msgstr "إرسال صورة"
|
||||
|
||||
#: themes/default/templates/login.html.ep:16 themes/default/templates/logout.html.ep:5 themes/default/templates/partial/navbar.html.ep:37
|
||||
msgid "Signin"
|
||||
msgstr "انشاء حساب"
|
||||
|
||||
#: themes/default/templates/index.html.ep:151 themes/default/templates/partial/gallery.js.ep:211 themes/default/templates/partial/lutim.js.ep:176
|
||||
msgid "Something bad happened"
|
||||
msgstr "طرأ هناك خلل"
|
||||
|
||||
#. ($c->config('contact')
|
||||
#: lib/Lutim/Controller/Image.pm:763
|
||||
msgid ""
|
||||
"Something went wrong when creating the zip file. Try again later or contact "
|
||||
"the administrator (%1)."
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:55
|
||||
msgid "Support the author"
|
||||
msgstr "ساند مؤلف البرنامج"
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:63
|
||||
msgid "Support the author on Liberapay"
|
||||
msgstr "ساند المؤلف عبر ليبراباي"
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:60
|
||||
msgid "Support the author on Tipeee"
|
||||
msgstr "ساند المؤلف عبر تيبي"
|
||||
|
||||
#: themes/default/templates/about.html.ep:13
|
||||
msgid ""
|
||||
"The IP address of the image's sender is retained for a delay which depends "
|
||||
"of the administrator's choice (for the official instance, which is located "
|
||||
"in France, it's one year)."
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/about.html.ep:23
|
||||
msgid ""
|
||||
"The Lutim software is a <a href=\"http://en.wikipedia.org/wiki/"
|
||||
"Free_software\">free software</a>, which allows you to download and install "
|
||||
"it on you own server. Have a look at the <a href=\"https://www.gnu.org/"
|
||||
"licenses/agpl-3.0.html\">AGPL</a> to see what you can do."
|
||||
msgstr ""
|
||||
|
||||
#: lib/Lutim/Controller/Image.pm:347
|
||||
msgid "The URL is not valid."
|
||||
msgstr "الرابط غير صالح."
|
||||
|
||||
#: themes/default/templates/zip.html.ep:16
|
||||
msgid ""
|
||||
"The automatic download process will open a tab in your browser for each link."
|
||||
" You need to allow popups for Lutim."
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/partial/myfiles.js.ep:32
|
||||
msgid "The data has been successfully imported."
|
||||
msgstr "تم استيراد البيانات بنجاح."
|
||||
|
||||
#: lib/Lutim/Controller/Image.pm:160 lib/Lutim/Controller/Image.pm:228
|
||||
msgid "The delete token is invalid."
|
||||
msgstr "رمز الحذف غير صالح."
|
||||
|
||||
#. ($upload->filename)
|
||||
#: lib/Lutim/Controller/Image.pm:488
|
||||
msgid "The file %1 is not an image."
|
||||
msgstr "الملف %1 ليس صورة."
|
||||
|
||||
#. ($tx->res->max_message_size)
|
||||
#. ($c->req->max_message_size)
|
||||
#. (config('max_file_size')
|
||||
#: lib/Lutim/Controller/Image.pm:311 lib/Lutim/Controller/Image.pm:380 themes/default/templates/partial/lutim.js.ep:249
|
||||
msgid "The file exceed the size limit (%1)"
|
||||
msgstr "لقد تجاوز حجم الملف حد (%1)"
|
||||
|
||||
#: themes/default/templates/stats.html.ep:12
|
||||
msgid "The graph's datas are not updated in real-time."
|
||||
msgstr "المنحنيات البيانية للبيانات لا يتم تحديثها آنيا."
|
||||
|
||||
#. ($image->filename)
|
||||
#: lib/Lutim/Controller/Image.pm:230
|
||||
msgid "The image %1 has already been deleted."
|
||||
msgstr "لقد تم حذف الصورة %1 مِن قَبل."
|
||||
|
||||
#. ($image->filename)
|
||||
#: lib/Lutim/Controller/Image.pm:239 lib/Lutim/Controller/Image.pm:244
|
||||
msgid "The image %1 has been successfully deleted"
|
||||
msgstr "تم حذف الصورة %1 بنجاح"
|
||||
|
||||
#: themes/default/templates/index.html.ep:63
|
||||
msgid "The images are encrypted on the server (Lutim does not keep the key)."
|
||||
msgstr ""
|
||||
"إنّ الصور مشفّرة ومُعمّاة على الخادم (لا يقوم Lutim بالإحتفاظ بالمفتاح)."
|
||||
|
||||
#: themes/default/templates/about.html.ep:5
|
||||
msgid ""
|
||||
"The images you post on Lutim can be stored indefinitely or be deleted at "
|
||||
"first view or after a delay selected from those proposed."
|
||||
msgstr ""
|
||||
|
||||
#: lib/Lutim/Controller/Image.pm:168
|
||||
msgid "The image’s delay has been successfully modified"
|
||||
msgstr "تم تعديل مهلة الصورة بنجاح"
|
||||
|
||||
#: themes/default/templates/partial/gallery.js.ep:277
|
||||
msgid "There is XXXX image(s) in the gallery"
|
||||
msgstr ""
|
||||
|
||||
#. ($c->config->{contact})
|
||||
#: lib/Lutim/Controller/Image.pm:485
|
||||
msgid "There is no more available URL. Retry or contact the administrator. %1"
|
||||
msgstr ""
|
||||
"لم يعد هناك أي رابط متوفّر. الرجاء إعادة المحاولة أو الإتصال بالمدير. %1"
|
||||
|
||||
#: themes/default/templates/gallery.html.ep:30
|
||||
msgid "Toggle fullscreen"
|
||||
msgstr "الإنتقال إلى وضع الشاشة الكامل"
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:8
|
||||
msgid "Toggle navigation"
|
||||
msgstr "توسيع شريط التصفّح"
|
||||
|
||||
#: lib/Lutim/Command/cron/stats.pm:162 themes/default/templates/raw.html.ep:11
|
||||
msgid "Total"
|
||||
msgstr "العدد الإجمالي"
|
||||
|
||||
#: themes/default/templates/index.html.ep:78 themes/default/templates/partial/lutim.js.ep:17
|
||||
msgid "Tweet it!"
|
||||
msgstr "غرِّد الرابط!"
|
||||
|
||||
#: themes/default/templates/partial/common.js.ep:110 themes/default/templates/partial/common.js.ep:90
|
||||
msgid "Unable to copy to clipboard"
|
||||
msgstr "لم يمكن النسخ إلى الحافطة"
|
||||
|
||||
#. ($short)
|
||||
#: lib/Lutim/Controller/Image.pm:108 lib/Lutim/Controller/Image.pm:202 lib/Lutim/Controller/Image.pm:273
|
||||
msgid "Unable to find the image %1."
|
||||
msgstr "تعذر العثور على الصورة %1."
|
||||
|
||||
#: lib/Lutim/Controller/Image.pm:574 lib/Lutim/Controller/Image.pm:619 lib/Lutim/Controller/Image.pm:660 lib/Lutim/Controller/Image.pm:703 lib/Lutim/Controller/Image.pm:715 lib/Lutim/Controller/Image.pm:726 lib/Lutim/Controller/Image.pm:753 lib/Lutim/Plugin/Helpers.pm:88
|
||||
msgid "Unable to find the image: it has been deleted."
|
||||
msgstr "تعذر العثور على الصورة : لقد تم حذفها."
|
||||
|
||||
#: lib/Lutim/Controller/Image.pm:145
|
||||
msgid "Unable to get counter"
|
||||
msgstr "تعذر جلب التعداد"
|
||||
|
||||
#: themes/default/templates/about.html.ep:17
|
||||
msgid ""
|
||||
"Unlike many image sharing services, you don't give us rights on uploaded "
|
||||
"images."
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/index.html.ep:180 themes/default/templates/index.html.ep:219
|
||||
msgid "Upload an image with its URL"
|
||||
msgstr "القيام برفع صورة بواسطة رابطها"
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:125
|
||||
msgid "Uploaded at"
|
||||
msgstr "تم رفعها على"
|
||||
|
||||
#: themes/default/templates/stats.html.ep:6
|
||||
msgid "Uploaded files by days"
|
||||
msgstr "الملفات المستضافة بحسب الأيام"
|
||||
|
||||
#. ($c->app->config('contact')
|
||||
#: lib/Lutim/Plugin/Helpers.pm:221
|
||||
msgid ""
|
||||
"Uploading is currently disabled, please try later or contact the "
|
||||
"administrator (%1)."
|
||||
msgstr ""
|
||||
"لقد تمّ تعليق تحميل الصور حاليا ، يرجى إعادة المحاولة لاحقا أو الإتصال "
|
||||
"بالمدير (%1)."
|
||||
|
||||
#: themes/default/templates/index.html.ep:83 themes/default/templates/index.html.ep:85 themes/default/templates/myfiles.html.ep:122 themes/default/templates/partial/lutim.js.ep:72 themes/default/templates/partial/lutim.js.ep:76
|
||||
msgid "View link"
|
||||
msgstr "عرض الرابط"
|
||||
|
||||
#: themes/default/templates/about.html.ep:22
|
||||
msgid "What about the software which provides the service?"
|
||||
msgstr "عن البرنامج الذي يقدم هذه الخدمة؟"
|
||||
|
||||
#: themes/default/templates/about.html.ep:3
|
||||
msgid "What is Lutim?"
|
||||
msgstr "ماذا نقصد بـ Lutim؟"
|
||||
|
||||
#: themes/default/templates/about.html.ep:15
|
||||
msgid "Who owns rights on images uploaded on Lutim?"
|
||||
msgstr "من يمتلك حق ملكية الصور المستضافة على Lutim ؟"
|
||||
|
||||
#: themes/default/templates/about.html.ep:12
|
||||
msgid ""
|
||||
"Yes, it is! On the other side, for legal reasons, your IP address will be "
|
||||
"stored when you send an image. Don't panic, it is normally the case of all "
|
||||
"sites on which you send files!"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/about.html.ep:10
|
||||
msgid ""
|
||||
"Yes, it is! On the other side, if you want to support the developer, you can "
|
||||
"do it via <a href=\"https://www.tipeee.com/fiat-tux\">Tipeee</a> or via <a "
|
||||
"href=\"https://liberapay.com/sky/\">Liberapay</a>."
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/zip.html.ep:6
|
||||
msgid "You asked to download a zip archive for too much files."
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/about.html.ep:8
|
||||
msgid ""
|
||||
"You can, optionally, request that the image(s) posted on Lutim to be deleted "
|
||||
"at first view (or download) or after the delay selected from those proposed."
|
||||
msgstr ""
|
||||
|
||||
#: lib/Lutim/Controller/Authent.pm:27
|
||||
msgid "You have been successfully logged in."
|
||||
msgstr "تم تسجيل دخولك بنجاح."
|
||||
|
||||
#: lib/Lutim/Controller/Authent.pm:66 themes/default/templates/logout.html.ep:3
|
||||
msgid "You have been successfully logged out."
|
||||
msgstr "تم تسجيل خروجك بنجاح."
|
||||
|
||||
#: themes/default/templates/gallery.html.ep:31
|
||||
msgid "Zoom in/out"
|
||||
msgstr "تكبير/تصغير"
|
||||
|
||||
#: themes/default/templates/about.html.ep:27
|
||||
msgid "and on"
|
||||
msgstr "وكذا على"
|
||||
|
||||
#: themes/default/templates/about.html.ep:40
|
||||
msgid "arabic translation"
|
||||
msgstr "الترجمة إلى العربية"
|
||||
|
||||
#: themes/default/templates/about.html.ep:27
|
||||
msgid "core developer"
|
||||
msgstr "المطور الرئيسي"
|
||||
|
||||
#: lib/Lutim.pm:348 lib/Lutim/Command/cron/stats.pm:157 lib/Lutim/Command/cron/stats.pm:171 lib/Lutim/Command/cron/stats.pm:188 themes/default/templates/index.html.ep:3 themes/default/templates/myfiles.html.ep:3 themes/default/templates/partial/raw.js.ep:21 themes/default/templates/partial/raw.js.ep:4 themes/default/templates/raw.html.ep:6
|
||||
msgid "no time limit"
|
||||
msgstr "من دون قيد زمني"
|
||||
|
||||
#: themes/default/templates/about.html.ep:38
|
||||
msgid "occitan translation"
|
||||
msgstr "الترجمة إلى الأوكستانية"
|
||||
|
||||
#: themes/default/templates/about.html.ep:27
|
||||
msgid "on"
|
||||
msgstr "على"
|
||||
|
||||
#: themes/default/templates/about.html.ep:39
|
||||
msgid "paste image to upload ability"
|
||||
msgstr "إمكانية لصق الصورة قصد إرسالها"
|
||||
|
||||
#: themes/default/templates/about.html.ep:41
|
||||
msgid "russian translation"
|
||||
msgstr "الترجمة إلى الروسية"
|
||||
|
||||
#: themes/default/templates/about.html.ep:36
|
||||
msgid "spanish translation"
|
||||
msgstr "الترجمة إلى الإسبانية"
|
||||
|
||||
#: themes/default/templates/about.html.ep:28
|
||||
msgid "webapp developer"
|
||||
msgstr "مطور تطبيق الويب"
|
||||
@@ -5,24 +5,29 @@
|
||||
# Translators:
|
||||
# Translators:
|
||||
# Thor77 <thor77@thor77.org>, 2015
|
||||
# Luc Didry <luc@framasoft.org>, 2018. #zanata
|
||||
# frju365 <abld@abld.info>, 2018. #zanata
|
||||
# Luc Didry <luc@framasoft.org>, 2019. #zanata
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Lutim\n"
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"PO-Revision-Date: 2015-09-18 13:34+0000\n"
|
||||
"Last-Translator: Thor77 <thor77@thor77.org>\n"
|
||||
"Language-Team: German (http://www.transifex.com/fiat-tux/lutim/language/de/)\n"
|
||||
"PO-Revision-Date: 2022-12-24 17:38+0000\n"
|
||||
"Last-Translator: Vri <vrifox@vrifox.cc>\n"
|
||||
"Language-Team: German <https://weblate.framasoft.org/projects/lutim/"
|
||||
"default-theme/de/>\n"
|
||||
"Language: de\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: de\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
"X-Generator: Weblate 4.14.1\n"
|
||||
|
||||
#. (7)
|
||||
#. (30)
|
||||
#. ($delay)
|
||||
#. (config('max_delay')
|
||||
#: lib/Lutim/Command/cron/stats.pm:149 lib/Lutim/Command/cron/stats.pm:150 lib/Lutim/Command/cron/stats.pm:160 lib/Lutim/Command/cron/stats.pm:161 lib/Lutim/Command/cron/stats.pm:177 lib/Lutim/Command/cron/stats.pm:178 themes/default/templates/partial/for_my_delay.html.ep:12 themes/default/templates/partial/for_my_delay.html.ep:13 themes/default/templates/partial/for_my_delay.html.ep:3 themes/default/templates/partial/lutim.js.ep:138 themes/default/templates/partial/lutim.js.ep:147 themes/default/templates/partial/lutim.js.ep:148 themes/default/templates/raw.html.ep:19 themes/default/templates/raw.html.ep:20 themes/default/templates/raw.html.ep:36 themes/default/templates/raw.html.ep:37 themes/default/templates/raw.html.ep:8 themes/default/templates/raw.html.ep:9
|
||||
#: lib/Lutim/Command/cron/stats.pm:159 lib/Lutim/Command/cron/stats.pm:160 lib/Lutim/Command/cron/stats.pm:173 lib/Lutim/Command/cron/stats.pm:174 lib/Lutim/Command/cron/stats.pm:190 lib/Lutim/Command/cron/stats.pm:191 themes/default/templates/myfiles.html.ep:24 themes/default/templates/myfiles.html.ep:33 themes/default/templates/myfiles.html.ep:34 themes/default/templates/partial/for_my_delay.html.ep:13 themes/default/templates/partial/for_my_delay.html.ep:14 themes/default/templates/partial/for_my_delay.html.ep:4 themes/default/templates/partial/lutim.js.ep:140 themes/default/templates/partial/lutim.js.ep:149 themes/default/templates/partial/lutim.js.ep:150 themes/default/templates/partial/raw.js.ep:23 themes/default/templates/partial/raw.js.ep:24 themes/default/templates/partial/raw.js.ep:6 themes/default/templates/partial/raw.js.ep:7 themes/default/templates/raw.html.ep:8 themes/default/templates/raw.html.ep:9
|
||||
msgid "%1 days"
|
||||
msgstr "%1 Tage"
|
||||
|
||||
@@ -31,139 +36,170 @@ msgstr "%1 Tage"
|
||||
msgid "%1 sent images on this instance from beginning."
|
||||
msgstr "%1 Bilder wurden bisher über diese Instanz versendet."
|
||||
|
||||
#: themes/default/templates/index.html.ep:190
|
||||
#: themes/default/templates/index.html.ep:208
|
||||
msgid "-or-"
|
||||
msgstr "-oder-"
|
||||
|
||||
#: lib/Lutim.pm:192 lib/Lutim/Command/cron/stats.pm:151 lib/Lutim/Command/cron/stats.pm:162 lib/Lutim/Command/cron/stats.pm:179 themes/default/templates/index.html.ep:5 themes/default/templates/raw.html.ep:10 themes/default/templates/raw.html.ep:21 themes/default/templates/raw.html.ep:38
|
||||
#: lib/Lutim.pm:350 lib/Lutim/Command/cron/stats.pm:161 lib/Lutim/Command/cron/stats.pm:175 lib/Lutim/Command/cron/stats.pm:192 themes/default/templates/index.html.ep:5 themes/default/templates/myfiles.html.ep:5 themes/default/templates/partial/raw.js.ep:25 themes/default/templates/partial/raw.js.ep:8 themes/default/templates/raw.html.ep:10
|
||||
msgid "1 year"
|
||||
msgstr "1 Jahr"
|
||||
|
||||
#: lib/Lutim.pm:191 lib/Lutim/Command/cron/stats.pm:148 lib/Lutim/Command/cron/stats.pm:159 lib/Lutim/Command/cron/stats.pm:176 themes/default/templates/index.html.ep:4 themes/default/templates/partial/for_my_delay.html.ep:12 themes/default/templates/partial/lutim.js.ep:147 themes/default/templates/raw.html.ep:18 themes/default/templates/raw.html.ep:35 themes/default/templates/raw.html.ep:7
|
||||
#: lib/Lutim.pm:349 lib/Lutim/Command/cron/stats.pm:158 lib/Lutim/Command/cron/stats.pm:172 lib/Lutim/Command/cron/stats.pm:189 themes/default/templates/index.html.ep:4 themes/default/templates/myfiles.html.ep:33 themes/default/templates/myfiles.html.ep:4 themes/default/templates/partial/for_my_delay.html.ep:13 themes/default/templates/partial/lutim.js.ep:149 themes/default/templates/partial/raw.js.ep:22 themes/default/templates/partial/raw.js.ep:5 themes/default/templates/raw.html.ep:7
|
||||
msgid "24 hours"
|
||||
msgstr "24 Stunden"
|
||||
|
||||
#: themes/default/templates/partial/myfiles.js.ep:57
|
||||
#: themes/default/templates/partial/myfiles.js.ep:180
|
||||
msgid ": Error while trying to get the counter."
|
||||
msgstr ":Fehler beim Abrufen des Zählers."
|
||||
|
||||
#: lib/Lutim/Command/cron/stats.pm:144 themes/default/templates/raw.html.ep:3
|
||||
msgid "Active images"
|
||||
msgstr ""
|
||||
#: themes/default/templates/partial/navbar.html.ep:77
|
||||
msgid "About"
|
||||
msgstr "Über"
|
||||
|
||||
#: lib/Lutim/Controller.pm:288
|
||||
#: lib/Lutim/Command/cron/stats.pm:154 themes/default/templates/raw.html.ep:3
|
||||
msgid "Active images"
|
||||
msgstr "Aktive Bilder"
|
||||
|
||||
#: lib/Lutim/Controller/Image.pm:328
|
||||
msgid "An error occured while downloading the image."
|
||||
msgstr "Beim Herunterladen des Bildes ist ein Fehler aufgetreten."
|
||||
|
||||
#: themes/default/templates/zip.html.ep:2
|
||||
msgid "Archives download"
|
||||
msgstr ""
|
||||
msgstr "Herunterladen von Archiv"
|
||||
|
||||
#: themes/default/templates/about.html.ep:41 themes/default/templates/myfiles.html.ep:64 themes/default/templates/stats.html.ep:25
|
||||
#: themes/default/templates/about.html.ep:44 themes/default/templates/myfiles.html.ep:135 themes/default/templates/stats.html.ep:25
|
||||
msgid "Back to homepage"
|
||||
msgstr "Zurück zur Hauptseite"
|
||||
|
||||
#: themes/default/templates/index.html.ep:193 themes/default/templates/index.html.ep:194
|
||||
#: themes/default/templates/index.html.ep:211 themes/default/templates/index.html.ep:212
|
||||
msgid "Click to open the file browser"
|
||||
msgstr "Klicken um den Dateibrowser zu öffnen"
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:51
|
||||
msgid "Close"
|
||||
msgstr "Schließen"
|
||||
|
||||
#: themes/default/templates/gallery.html.ep:29
|
||||
msgid "Close (Esc)"
|
||||
msgstr "Schließen (Esc)"
|
||||
|
||||
#: themes/default/templates/about.html.ep:30
|
||||
msgid "Contributors"
|
||||
msgstr "Mitwirkende"
|
||||
|
||||
#: themes/default/templates/partial/lutim.js.ep:214 themes/default/templates/partial/lutim.js.ep:268 themes/default/templates/partial/lutim.js.ep:346
|
||||
#: themes/default/templates/partial/common.js.ep:113 themes/default/templates/partial/common.js.ep:93
|
||||
msgid "Copied to clipboard"
|
||||
msgstr "in die Zwischenablage kopiert"
|
||||
|
||||
#: themes/default/templates/partial/lutim.js.ep:215 themes/default/templates/partial/lutim.js.ep:278 themes/default/templates/partial/lutim.js.ep:364
|
||||
msgid "Copy all view links to clipboard"
|
||||
msgstr "Alle Links zum Anschauen in die Zwischenablage kopieren"
|
||||
|
||||
#: themes/default/templates/index.html.ep:18 themes/default/templates/index.html.ep:36 themes/default/templates/index.html.ep:69 themes/default/templates/index.html.ep:77 themes/default/templates/index.html.ep:85 themes/default/templates/index.html.ep:93 themes/default/templates/myfiles.html.ep:20 themes/default/templates/myfiles.html.ep:38 themes/default/templates/partial/common.js.ep:150 themes/default/templates/partial/lutim.js.ep:105 themes/default/templates/partial/lutim.js.ep:120 themes/default/templates/partial/lutim.js.ep:79 themes/default/templates/partial/lutim.js.ep:91
|
||||
#: themes/default/templates/index.html.ep:103 themes/default/templates/index.html.ep:111 themes/default/templates/index.html.ep:18 themes/default/templates/index.html.ep:36 themes/default/templates/index.html.ep:54 themes/default/templates/index.html.ep:87 themes/default/templates/index.html.ep:95 themes/default/templates/myfiles.html.ep:104 themes/default/templates/myfiles.html.ep:68 themes/default/templates/myfiles.html.ep:86 themes/default/templates/partial/common.js.ep:186 themes/default/templates/partial/lutim.js.ep:106 themes/default/templates/partial/lutim.js.ep:121 themes/default/templates/partial/lutim.js.ep:80 themes/default/templates/partial/lutim.js.ep:92 themes/default/templates/partial/myfiles.js.ep:142
|
||||
msgid "Copy to clipboard"
|
||||
msgstr "In die Zwischenablage kopieren"
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:52
|
||||
#: themes/default/templates/myfiles.html.ep:123
|
||||
msgid "Counter"
|
||||
msgstr "Zähler"
|
||||
|
||||
#: themes/default/templates/stats.html.ep:18
|
||||
msgid "Delay repartition chart for disabled images"
|
||||
msgstr ""
|
||||
msgstr "Diagramm zur Neuaufteilung der Verzögerung für deaktivierte Bilder"
|
||||
|
||||
#: themes/default/templates/stats.html.ep:15
|
||||
msgid "Delay repartition chart for enabled images"
|
||||
msgstr ""
|
||||
msgstr "Diagramm zur Neuaufteilung der Verzögerung für deaktivierte Bilder"
|
||||
|
||||
#: themes/default/templates/index.html.ep:115 themes/default/templates/index.html.ep:147 themes/default/templates/index.html.ep:178 themes/default/templates/myfiles.html.ep:53 themes/default/templates/partial/lutim.js.ep:159
|
||||
#: themes/default/templates/index.html.ep:133 themes/default/templates/index.html.ep:165 themes/default/templates/index.html.ep:196 themes/default/templates/myfiles.html.ep:124 themes/default/templates/myfiles.html.ep:45 themes/default/templates/partial/lutim.js.ep:161
|
||||
msgid "Delete at first view?"
|
||||
msgstr "Nach erstem Aufruf löschen?"
|
||||
|
||||
#: lib/Lutim/Command/cron/stats.pm:145 themes/default/templates/raw.html.ep:4
|
||||
#: lib/Lutim/Command/cron/stats.pm:155 themes/default/templates/raw.html.ep:4
|
||||
msgid "Deleted images"
|
||||
msgstr ""
|
||||
msgstr "Gelöschte Bilder"
|
||||
|
||||
#: lib/Lutim/Command/cron/stats.pm:146 themes/default/templates/raw.html.ep:5
|
||||
#: lib/Lutim/Command/cron/stats.pm:156 themes/default/templates/raw.html.ep:5
|
||||
msgid "Deleted images in 30 days"
|
||||
msgstr ""
|
||||
msgstr "Gelöschte Bilder in 30 Tagen"
|
||||
|
||||
#: themes/default/templates/index.html.ep:98 themes/default/templates/myfiles.html.ep:56 themes/default/templates/partial/common.js.ep:142 themes/default/templates/partial/common.js.ep:145
|
||||
#: themes/default/templates/index.html.ep:116 themes/default/templates/myfiles.html.ep:127 themes/default/templates/partial/common.js.ep:178 themes/default/templates/partial/common.js.ep:181
|
||||
msgid "Deletion link"
|
||||
msgstr "Link zum Löschen"
|
||||
|
||||
#: themes/default/templates/gallery.html.ep:6
|
||||
#: themes/default/templates/gallery.html.ep:10
|
||||
msgid "Download all images"
|
||||
msgstr "Laden Sie alle Bilder"
|
||||
|
||||
#: themes/default/templates/index.html.ep:81 themes/default/templates/index.html.ep:83 themes/default/templates/partial/lutim.js.ep:101 themes/default/templates/partial/lutim.js.ep:97
|
||||
#: themes/default/templates/index.html.ep:101 themes/default/templates/index.html.ep:99 themes/default/templates/partial/lutim.js.ep:102 themes/default/templates/partial/lutim.js.ep:98
|
||||
msgid "Download link"
|
||||
msgstr "Link zum Herunterladen"
|
||||
|
||||
#: themes/default/templates/index.html.ep:28 themes/default/templates/index.html.ep:31 themes/default/templates/myfiles.html.ep:30 themes/default/templates/myfiles.html.ep:33
|
||||
#: themes/default/templates/index.html.ep:28 themes/default/templates/index.html.ep:31 themes/default/templates/myfiles.html.ep:78 themes/default/templates/myfiles.html.ep:81
|
||||
msgid "Download zip link"
|
||||
msgstr "Link zum Archivbilder"
|
||||
|
||||
#: themes/default/templates/index.html.ep:189
|
||||
#: themes/default/templates/index.html.ep:207
|
||||
msgid "Drag & drop images here"
|
||||
msgstr "Bilder hierher ziehen"
|
||||
|
||||
#: themes/default/templates/about.html.ep:7
|
||||
msgid "Drag and drop an image in the appropriate area or use the traditional way to send files and Lutim will provide you four URLs. One to view the image, an other to directly download it, one you can use on social networks and a last to delete the image when you want."
|
||||
msgstr "Ziehe Bilder in den dafür vorgesehenen Bereich und Lutim wird vier URLs generieren. Eine zum Anschauen, eine zum direkten Herunterladen, eine zum Nutzen in sozialen Netzwerken und eine letzte um das Bild zu löschen."
|
||||
msgid ""
|
||||
"Drag and drop an image in the appropriate area or use the traditional way to "
|
||||
"send files and Lutim will provide you four URLs. One to view the image, an "
|
||||
"other to directly download it, one you can use on social networks and a last "
|
||||
"to delete the image when you want."
|
||||
msgstr ""
|
||||
"Ziehe Bilder in den dafür vorgesehenen Bereich und Lutim wird vier URLs "
|
||||
"generieren. Eine zum Anschauen, eine zum direkten Herunterladen, eine zum "
|
||||
"Nutzen in sozialen Netzwerken und eine letzte um das Bild zu löschen."
|
||||
|
||||
#: themes/default/templates/index.html.ep:150 themes/default/templates/index.html.ep:181
|
||||
#: themes/default/templates/index.html.ep:168 themes/default/templates/index.html.ep:199
|
||||
msgid "Encrypt the image (Lutim does not keep the key)."
|
||||
msgstr "Verschlüssle das Bild (Lutim behält den Key nicht)"
|
||||
msgstr "Verschlüssle das Bild (Lutim behält den Key nicht)."
|
||||
|
||||
#: themes/default/templates/partial/lutim.js.ep:44
|
||||
#: themes/default/templates/partial/lutim.js.ep:45 themes/default/templates/partial/myfiles.js.ep:113
|
||||
msgid "Error while trying to modify the image."
|
||||
msgstr "Beim bearbeiten des Bildes ist ein Fehler aufgetreten."
|
||||
msgstr "Beim Bearbeiten des Bildes ist ein Fehler aufgetreten."
|
||||
|
||||
#: themes/default/templates/stats.html.ep:10
|
||||
msgid "Evolution of total files"
|
||||
msgstr "Entwicklung der Anzahl an Dateien"
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:55
|
||||
#: themes/default/templates/myfiles.html.ep:126
|
||||
msgid "Expires at"
|
||||
msgstr "Läuft ab am"
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:50
|
||||
#: themes/default/templates/myfiles.html.ep:112
|
||||
msgid "Export localStorage data"
|
||||
msgstr "localStorage-Daten exportieren"
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:121
|
||||
msgid "File name"
|
||||
msgstr "Dateiname"
|
||||
|
||||
#: themes/default/templates/about.html.ep:24
|
||||
msgid "For more details, see the <a href=\"https://framagit.org/luc/lutim\">homepage of the project</a>."
|
||||
msgstr "Besuche für mehr Details die <a href=\"https://framagit.org/luc/lutim\">Homepage des Projekts</a>."
|
||||
msgid ""
|
||||
"For more details, see the <a href=\"https://framagit.org/luc/"
|
||||
"lutim\">homepage of the project</a>."
|
||||
msgstr ""
|
||||
"Besuche für mehr Details die <a href=\"https://framagit.org/luc/"
|
||||
"lutim\">Homepage des Projekts</a>."
|
||||
|
||||
#: themes/default/templates/layouts/default.html.ep:55
|
||||
#: themes/default/templates/partial/navbar.html.ep:80
|
||||
msgid "Fork me!"
|
||||
msgstr "Fork me!"
|
||||
msgstr "Fork mich!"
|
||||
|
||||
#: themes/default/templates/index.html.ep:10 themes/default/templates/index.html.ep:13 themes/default/templates/myfiles.html.ep:12 themes/default/templates/myfiles.html.ep:15
|
||||
#: themes/default/templates/index.html.ep:10 themes/default/templates/index.html.ep:13 themes/default/templates/myfiles.html.ep:60 themes/default/templates/myfiles.html.ep:63
|
||||
msgid "Gallery link"
|
||||
msgstr "Link zur Galerie"
|
||||
|
||||
#: themes/default/templates/partial/common.js.ep:104 themes/default/templates/partial/common.js.ep:87
|
||||
#: themes/default/templates/partial/common.js.ep:116 themes/default/templates/partial/common.js.ep:134
|
||||
msgid "Hit Ctrl+C, then Enter to copy the short link"
|
||||
msgstr "Drücke STRG+C und dann Enter um den Kurz-Link zu kopieren."
|
||||
msgstr "Drücke STRG+C und dann Enter um den Kurz-Link zu kopieren"
|
||||
|
||||
#: themes/default/templates/layouts/default.html.ep:50
|
||||
#: themes/default/templates/layouts/default.html.ep:47
|
||||
msgid "Homepage"
|
||||
msgstr "Webseite"
|
||||
|
||||
@@ -180,32 +216,44 @@ msgid "How to report an image?"
|
||||
msgstr "Wie kann ich ein Bild melden?"
|
||||
|
||||
#: themes/default/templates/about.html.ep:14
|
||||
msgid "If the files are deleted if you ask it while posting it, their SHA512 footprint are retained."
|
||||
msgstr "Wenn du versuchst, ein Bild während dem Hochladen zu löschen, wird die SHA512-Summe des Bildes behalten."
|
||||
msgid ""
|
||||
"If the files are deleted if you ask it while posting it, their SHA512 "
|
||||
"footprint are retained."
|
||||
msgstr ""
|
||||
"Wenn du versuchst, ein Bild während dem Hochladen zu löschen, wird die "
|
||||
"SHA512-Summe des Bildes behalten."
|
||||
|
||||
#: themes/default/templates/index.html.ep:163 themes/default/templates/index.html.ep:203
|
||||
#: themes/default/templates/index.html.ep:181 themes/default/templates/index.html.ep:221
|
||||
msgid "Image URL"
|
||||
msgstr "Bild-URL"
|
||||
|
||||
#: lib/Lutim/Command/cron/stats.pm:143 themes/default/templates/raw.html.ep:2
|
||||
#: lib/Lutim/Command/cron/stats.pm:153 themes/default/templates/raw.html.ep:2
|
||||
msgid "Image delay"
|
||||
msgstr ""
|
||||
msgstr "Bild-Verzögerung"
|
||||
|
||||
#: lib/Lutim/Controller.pm:710
|
||||
#: themes/default/templates/partial/common.js.ep:157
|
||||
msgid "Image deleted"
|
||||
msgstr "Bild gelöscht"
|
||||
|
||||
#: lib/Lutim/Controller/Image.pm:756
|
||||
msgid "Image not found."
|
||||
msgstr "Bild nicht gefunden"
|
||||
msgstr "Bild nicht gefunden."
|
||||
|
||||
#: themes/default/templates/layouts/default.html.ep:54
|
||||
#: themes/default/templates/myfiles.html.ep:113
|
||||
msgid "Import localStorage data"
|
||||
msgstr "localStorage-Daten importieren"
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:69
|
||||
msgid "Informations"
|
||||
msgstr "Informationen"
|
||||
|
||||
#: themes/default/templates/layouts/default.html.ep:62
|
||||
#: themes/default/templates/partial/navbar.html.ep:25
|
||||
msgid "Install webapp"
|
||||
msgstr "Installiere die Webapp"
|
||||
|
||||
#: themes/default/templates/layouts/default.html.ep:61
|
||||
#: themes/default/templates/partial/navbar.html.ep:21
|
||||
msgid "Instance's statistics"
|
||||
msgstr ""
|
||||
msgstr "Statistik der Instanz"
|
||||
|
||||
#: themes/default/templates/about.html.ep:11
|
||||
msgid "Is it really anonymous?"
|
||||
@@ -216,138 +264,225 @@ msgid "Is it really free (as in free beer)?"
|
||||
msgstr "Is es wirklich kostenlos?"
|
||||
|
||||
#: themes/default/templates/about.html.ep:21
|
||||
msgid "Juste like you pronounce the French word <a href=\"https://fr.wikipedia.org/wiki/Lutin\">lutin</a> (/ly.tɛ̃/)."
|
||||
msgstr "Genauso wie das französische Wort <a href=\"https://fr.wikipedia.org/wiki/Lutin\">lutin</a> (/ly.tɛ̃/)."
|
||||
msgid ""
|
||||
"Juste like you pronounce the French word <a href=\"https://fr.wikipedia.org/"
|
||||
"wiki/Lutin\">lutin</a> (/ly.tɛ̃/)."
|
||||
msgstr ""
|
||||
"Genauso wie das französische Wort <a href=\"https://fr.wikipedia.org/wiki/"
|
||||
"Lutin\">lutin</a> (/ly.tɛ̃/)."
|
||||
|
||||
#: themes/default/templates/index.html.ep:153 themes/default/templates/index.html.ep:184
|
||||
#: themes/default/templates/index.html.ep:171 themes/default/templates/index.html.ep:202
|
||||
msgid "Keep EXIF tags"
|
||||
msgstr "Behalte EXIF-Daten"
|
||||
|
||||
#: themes/default/templates/index.html.ep:118 themes/default/templates/index.html.ep:166 themes/default/templates/index.html.ep:206 themes/default/templates/partial/lutim.js.ep:163
|
||||
#: themes/default/templates/partial/navbar.html.ep:43
|
||||
msgid "Language"
|
||||
msgstr "Sprache"
|
||||
|
||||
#: themes/default/templates/index.html.ep:136 themes/default/templates/index.html.ep:184 themes/default/templates/index.html.ep:224 themes/default/templates/partial/lutim.js.ep:165
|
||||
msgid "Let's go!"
|
||||
msgstr "Los gehts!"
|
||||
|
||||
#: themes/default/templates/layouts/default.html.ep:58
|
||||
msgid "Liberapay button"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/layouts/default.html.ep:53
|
||||
#: themes/default/templates/partial/navbar.html.ep:74
|
||||
msgid "License:"
|
||||
msgstr "Lizenz:"
|
||||
|
||||
#: themes/default/templates/index.html.ep:89 themes/default/templates/index.html.ep:91 themes/default/templates/partial/lutim.js.ep:111 themes/default/templates/partial/lutim.js.ep:115
|
||||
#: themes/default/templates/index.html.ep:107 themes/default/templates/index.html.ep:109 themes/default/templates/partial/lutim.js.ep:112 themes/default/templates/partial/lutim.js.ep:116
|
||||
msgid "Link for share on social networks"
|
||||
msgstr "Links zum teilen auf sozialen Netzwerken"
|
||||
|
||||
#: themes/default/templates/login.html.ep:8
|
||||
msgid "Login"
|
||||
msgstr "Anmelden"
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:33
|
||||
msgid "Logout"
|
||||
msgstr "Abmelden"
|
||||
|
||||
#: themes/default/templates/zip.html.ep:7
|
||||
msgid "Lutim can't zip so many images at once, so it splitted your demand in multiple URLs."
|
||||
msgid ""
|
||||
"Lutim can't zip so many images at once, so it splitted your demand in "
|
||||
"multiple URLs."
|
||||
msgstr ""
|
||||
"Lutim kann nicht so viele Bilder auf einmal zippen, daher hat es Ihren "
|
||||
"Bedarf in mehrere URLs aufgeteilt."
|
||||
|
||||
#: themes/default/templates/about.html.ep:4
|
||||
msgid "Lutim is a free (as in free beer) and anonymous image hosting service. It's also the name of the free (as in free speech) software which provides this service."
|
||||
msgid ""
|
||||
"Lutim is a free (as in free beer) and anonymous image hosting service. It's "
|
||||
"also the name of the free (as in free speech) software which provides this "
|
||||
"service."
|
||||
msgstr ""
|
||||
"Lutim ist ein freier und anonymer Bilder-Upload-Service.\n"
|
||||
"Es ist auch der Name der freien Software, die diesen Service bietet."
|
||||
"Lutim ist ein freier und anonymer Bilder-Upload-Service. Es ist auch der "
|
||||
"Name der freien Software, die diesen Service bietet."
|
||||
|
||||
#: themes/default/templates/about.html.ep:25
|
||||
msgid "Main developers"
|
||||
msgstr "Haupt-Entwickler"
|
||||
|
||||
#: themes/default/templates/index.html.ep:73 themes/default/templates/index.html.ep:75 themes/default/templates/partial/lutim.js.ep:85 themes/default/templates/partial/lutim.js.ep:88
|
||||
#: themes/default/templates/index.html.ep:91 themes/default/templates/index.html.ep:93 themes/default/templates/partial/lutim.js.ep:86 themes/default/templates/partial/lutim.js.ep:89
|
||||
msgid "Markdown syntax"
|
||||
msgstr "Markdown Syntax"
|
||||
|
||||
#: themes/default/templates/layouts/default.html.ep:60 themes/default/templates/myfiles.html.ep:2
|
||||
#: themes/default/templates/partial/myfiles.js.ep:149
|
||||
msgid "Modify expiration delay"
|
||||
msgstr "Ablaufverzögerung verändern"
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:7 themes/default/templates/partial/navbar.html.ep:18
|
||||
msgid "My images"
|
||||
msgstr "Meine Bilder"
|
||||
|
||||
#: themes/default/templates/partial/myfiles.js.ep:19
|
||||
#: themes/default/templates/gallery.html.ep:45
|
||||
msgid "Next (arrow right)"
|
||||
msgstr "Nächstes (rechte Pfeiltaste)"
|
||||
|
||||
#: themes/default/templates/partial/myfiles.js.ep:105 themes/default/templates/partial/myfiles.js.ep:132
|
||||
msgid "No limit"
|
||||
msgstr "Keine Begrenzung"
|
||||
|
||||
#: themes/default/templates/index.html.ep:165 themes/default/templates/index.html.ep:198
|
||||
#: themes/default/templates/index.html.ep:183 themes/default/templates/index.html.ep:216
|
||||
msgid "Only images are allowed"
|
||||
msgstr "Es sind nur Bilder erlaubt"
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:6
|
||||
msgid "Only the images sent with this browser will be listed here. The informations are stored in localStorage: if you delete your localStorage data, you'll loose this informations."
|
||||
msgstr "Nur die Bilder, die über diesen Browser versendet wurden, werden hier angezeigt. Die Informationen werden im localStorage gespeichert, wenn du diesen leerst, sind die Informationen verloren."
|
||||
#: themes/default/templates/myfiles.html.ep:11
|
||||
msgid ""
|
||||
"Only the images sent with this browser will be listed here. The details are "
|
||||
"stored in localStorage: if you delete your localStorage data, you'll loose "
|
||||
"these details."
|
||||
msgstr ""
|
||||
"Nur die Bilder, die über diesen Browser versendet wurden, werden hier "
|
||||
"angezeigt. Die Details werden im localStorage gespeichert, wenn du diesen "
|
||||
"leerst, sind die Details verloren."
|
||||
|
||||
#: themes/default/templates/about.html.ep:16
|
||||
msgid "Only the uploader! (well, only if he's the only owner of the images' rights before the upload)"
|
||||
msgstr "Nur der Hochladende (natürlich nur, wenn er vorher auch Rechteinhaber des Bildes war)"
|
||||
msgid ""
|
||||
"Only the uploader! (well, only if he's the only owner of the images' rights "
|
||||
"before the upload)"
|
||||
msgstr ""
|
||||
"Nur der Hochladende (natürlich nur, wenn er vorher auch Rechteinhaber des "
|
||||
"Bildes war)"
|
||||
|
||||
#: themes/default/templates/login.html.ep:12
|
||||
msgid "Password"
|
||||
msgstr "Passwort"
|
||||
|
||||
#: themes/default/templates/zip.html.ep:12
|
||||
msgid "Please click on each URL to download the different zip files."
|
||||
msgstr ""
|
||||
"Bitte klicken Sie auf die jeweilige URL, um die verschiedenen Zip-Dateien "
|
||||
"herunterzuladen."
|
||||
|
||||
#. (config('contact')
|
||||
#: themes/default/templates/about.html.ep:19
|
||||
msgid "Please contact the administrator: %1"
|
||||
msgstr "Kontaktiere den Administrator: %1"
|
||||
|
||||
#: lib/Lutim/Controller/Authent.pm:36
|
||||
msgid "Please, check your credentials: unable to authenticate."
|
||||
msgstr ""
|
||||
"Bitte überprüfen Sie Ihre Anmeldeinformationen: Die Anmeldung kann nicht "
|
||||
"erfolgen."
|
||||
|
||||
#: themes/default/templates/gallery.html.ep:43
|
||||
msgid "Previous (arrow left)"
|
||||
msgstr "Vorheriges (linke Pfeiltaste)"
|
||||
|
||||
#: themes/default/templates/index.html.ep:46 themes/default/templates/index.html.ep:49 themes/default/templates/myfiles.html.ep:96 themes/default/templates/myfiles.html.ep:99
|
||||
msgid "Random image link"
|
||||
msgstr "Zufälliger Bildlink"
|
||||
|
||||
#: themes/default/templates/stats.html.ep:22
|
||||
msgid "Raw stats"
|
||||
msgstr ""
|
||||
msgstr "Rohe Statistiken"
|
||||
|
||||
#: themes/default/templates/index.html.ep:158
|
||||
#: themes/default/templates/myfiles.html.ep:52
|
||||
msgid "Save changes"
|
||||
msgstr "Änderungen speichern"
|
||||
|
||||
#: themes/default/templates/index.html.ep:176
|
||||
msgid "Send an image"
|
||||
msgstr "Sende ein Bild"
|
||||
|
||||
#: themes/default/templates/partial/lutim.js.ep:20
|
||||
msgid "Share it!"
|
||||
msgstr "Teile es!"
|
||||
#: themes/default/templates/login.html.ep:16 themes/default/templates/logout.html.ep:5 themes/default/templates/partial/navbar.html.ep:37
|
||||
msgid "Signin"
|
||||
msgstr "Anmelden"
|
||||
|
||||
#: themes/default/templates/layouts/default.html.ep:56
|
||||
msgid "Share on Twitter"
|
||||
msgstr "Teile es auf Twitter"
|
||||
|
||||
#: themes/default/templates/index.html.ep:133 themes/default/templates/partial/lutim.js.ep:174
|
||||
#: themes/default/templates/index.html.ep:151 themes/default/templates/partial/gallery.js.ep:211 themes/default/templates/partial/lutim.js.ep:176
|
||||
msgid "Something bad happened"
|
||||
msgstr "Es ist ein Fehler aufgetreten"
|
||||
|
||||
#. ($c->config('contact')
|
||||
#: lib/Lutim/Controller.pm:717
|
||||
msgid "Something went wrong when creating the zip file. Try again later or contact the administrator (%1)."
|
||||
msgstr "Es ist ein Fehler aufgetreten. Versuche es erneut oder kontaktiere den Administrator (%1)."
|
||||
#: lib/Lutim/Controller/Image.pm:763
|
||||
msgid ""
|
||||
"Something went wrong when creating the zip file. Try again later or contact "
|
||||
"the administrator (%1)."
|
||||
msgstr ""
|
||||
"Es ist ein Fehler aufgetreten. Versuche es erneut oder kontaktiere den "
|
||||
"Administrator (%1)."
|
||||
|
||||
#: themes/default/templates/layouts/default.html.ep:58
|
||||
#: themes/default/templates/partial/navbar.html.ep:55
|
||||
msgid "Support the author"
|
||||
msgstr "Unterstützen Sie den Autor"
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:63
|
||||
msgid "Support the author on Liberapay"
|
||||
msgstr ""
|
||||
msgstr "Unterstützen den Autor bei Liberapay"
|
||||
|
||||
#: themes/default/templates/layouts/default.html.ep:57
|
||||
#: themes/default/templates/partial/navbar.html.ep:60
|
||||
msgid "Support the author on Tipeee"
|
||||
msgstr ""
|
||||
msgstr "Unterstützen den Autor bei Tipeee"
|
||||
|
||||
#: themes/default/templates/about.html.ep:13
|
||||
msgid "The IP address of the image's sender is retained for a delay which depends of the administrator's choice (for the official instance, which is located in France, it's one year)."
|
||||
msgstr "Die IP-Adresse des Nutzers wird für eine bestimmte Zeit gespeichert. Diese kann der Administrator frei wählen (für die offizielle Instanz, die in Frankreich gehostet ist, liegt diese Zeit bei einem Jahr)"
|
||||
msgid ""
|
||||
"The IP address of the image's sender is retained for a delay which depends "
|
||||
"of the administrator's choice (for the official instance, which is located "
|
||||
"in France, it's one year)."
|
||||
msgstr ""
|
||||
"Die IP-Adresse des Nutzers wird für eine bestimmte Zeit gespeichert. Diese "
|
||||
"kann der Administrator frei wählen (für die offizielle Instanz, die in "
|
||||
"Frankreich gehostet ist, liegt diese Zeit bei einem Jahr)."
|
||||
|
||||
#: themes/default/templates/about.html.ep:23
|
||||
msgid "The Lutim software is a <a href=\"http://en.wikipedia.org/wiki/Free_software\">free software</a>, which allows you to download and install it on you own server. Have a look at the <a href=\"https://www.gnu.org/licenses/agpl-3.0.html\">AGPL</a> to see what you can do."
|
||||
msgstr "Lutim ist <a href=\"https://de.wikipedia.org/wiki/Freie_Software\">freie Software</a>, was dir erlaubt sie herunterzuladen und sie auf deinem eigenem Server zu installieren. Schau dir die <a href=\"https://www.gnu.org/licenses/agpl-3.0.html\">AGPL</a> an um deine Recht zu sehen."
|
||||
msgid ""
|
||||
"The Lutim software is a <a href=\"http://en.wikipedia.org/wiki/"
|
||||
"Free_software\">free software</a>, which allows you to download and install "
|
||||
"it on you own server. Have a look at the <a href=\"https://www.gnu.org/"
|
||||
"licenses/agpl-3.0.html\">AGPL</a> to see what you can do."
|
||||
msgstr ""
|
||||
"Lutim ist <a href=\"https://de.wikipedia.org/wiki/Freie_Software\">freie "
|
||||
"Software</a>, was dir erlaubt sie herunterzuladen und sie auf deinem eigenem "
|
||||
"Server zu installieren. Schau dir die <a href=\"https://www.gnu.org/licenses/"
|
||||
"agpl-3.0.html\">AGPL</a> an um deine Recht zu sehen."
|
||||
|
||||
#: lib/Lutim/Controller.pm:307
|
||||
#: lib/Lutim/Controller/Image.pm:347
|
||||
msgid "The URL is not valid."
|
||||
msgstr "Die URL ist nicht gültig."
|
||||
|
||||
#: themes/default/templates/zip.html.ep:16
|
||||
msgid "The automatic download process will open a tab in your browser for each link. You need to allow popups for Lutim."
|
||||
msgid ""
|
||||
"The automatic download process will open a tab in your browser for each link."
|
||||
" You need to allow popups for Lutim."
|
||||
msgstr ""
|
||||
"Das automatische Herunterladen wird für jeden Link einen neuen Tab in deinem "
|
||||
"Browser öffnen. Du musst Pop-Ups für Lutim erlauben."
|
||||
|
||||
#: lib/Lutim/Controller.pm:120 lib/Lutim/Controller.pm:188
|
||||
#: themes/default/templates/partial/myfiles.js.ep:32
|
||||
msgid "The data has been successfully imported."
|
||||
msgstr "Die Daten wurden erfolgreich importiert."
|
||||
|
||||
#: lib/Lutim/Controller/Image.pm:160 lib/Lutim/Controller/Image.pm:228
|
||||
msgid "The delete token is invalid."
|
||||
msgstr "Das Token zum Löschen ist ungültig."
|
||||
|
||||
#. ($upload->filename)
|
||||
#: lib/Lutim/Controller.pm:445
|
||||
#: lib/Lutim/Controller/Image.pm:488
|
||||
msgid "The file %1 is not an image."
|
||||
msgstr "Die Datei %1 ist kein Bild."
|
||||
|
||||
#. ($tx->res->max_message_size)
|
||||
#. ($c->req->max_message_size)
|
||||
#. (config('max_file_size')
|
||||
#: lib/Lutim/Controller.pm:271 lib/Lutim/Controller.pm:340 themes/default/templates/partial/lutim.js.ep:240
|
||||
#: lib/Lutim/Controller/Image.pm:311 lib/Lutim/Controller/Image.pm:380 themes/default/templates/partial/lutim.js.ep:249
|
||||
msgid "The file exceed the size limit (%1)"
|
||||
msgstr "Die Datei überschreitet die Größenbeschränkung (%1)"
|
||||
|
||||
@@ -356,66 +491,89 @@ msgid "The graph's datas are not updated in real-time."
|
||||
msgstr "Die Daten des Graphs werden nicht in Echtzeit aktualisiert."
|
||||
|
||||
#. ($image->filename)
|
||||
#: lib/Lutim/Controller.pm:190
|
||||
#: lib/Lutim/Controller/Image.pm:230
|
||||
msgid "The image %1 has already been deleted."
|
||||
msgstr "Das Bild %1 wurde schon gelöscht."
|
||||
|
||||
#. ($image->filename)
|
||||
#: lib/Lutim/Controller.pm:199 lib/Lutim/Controller.pm:204
|
||||
#: lib/Lutim/Controller/Image.pm:239 lib/Lutim/Controller/Image.pm:244
|
||||
msgid "The image %1 has been successfully deleted"
|
||||
msgstr "Das Bild %1 wurde erfolgreich gelöscht."
|
||||
msgstr "Das Bild %1 wurde erfolgreich gelöscht"
|
||||
|
||||
#: lib/Lutim/Controller.pm:128
|
||||
msgid "The image's delay has been successfully modified"
|
||||
msgstr "Die Zeit bis zum Löschen des Bildes wurde erfolgreich geändert."
|
||||
|
||||
#: themes/default/templates/index.html.ep:45
|
||||
#: themes/default/templates/index.html.ep:63
|
||||
msgid "The images are encrypted on the server (Lutim does not keep the key)."
|
||||
msgstr "Die Bilder werden auf dem Server verschlüsselt (Lutim behält den Key nicht)"
|
||||
msgstr ""
|
||||
"Die Bilder werden auf dem Server verschlüsselt (Lutim behält den Key nicht)."
|
||||
|
||||
#: themes/default/templates/about.html.ep:5
|
||||
msgid "The images you post on Lutim can be stored indefinitely or be deleted at first view or after a delay selected from those proposed."
|
||||
msgstr "Die Bilder, die du auf Lutim hochlädst, können entweder nie, nach dem ersten Aufruf oder nach einer bestimmten Zeit gelöscht werden."
|
||||
msgid ""
|
||||
"The images you post on Lutim can be stored indefinitely or be deleted at "
|
||||
"first view or after a delay selected from those proposed."
|
||||
msgstr ""
|
||||
"Die Bilder, die du auf Lutim hochlädst, können entweder nie, nach dem ersten "
|
||||
"Aufruf oder nach einer bestimmten Zeit gelöscht werden."
|
||||
|
||||
#: lib/Lutim/Controller/Image.pm:168
|
||||
msgid "The image’s delay has been successfully modified"
|
||||
msgstr "Die Zeit bis zum Löschen des Bildes wurde erfolgreich geändert"
|
||||
|
||||
#: themes/default/templates/partial/gallery.js.ep:277
|
||||
msgid "There is XXXX image(s) in the gallery"
|
||||
msgstr "Es gibt XXXX Bild(er) in der Galerie"
|
||||
|
||||
#. ($c->config->{contact})
|
||||
#: lib/Lutim/Controller.pm:442
|
||||
#: lib/Lutim/Controller/Image.pm:485
|
||||
msgid "There is no more available URL. Retry or contact the administrator. %1"
|
||||
msgstr "Es sind keine URLs mehr verfügbar. Versuche es erneut oder kontaktiere den Administrator. %1"
|
||||
|
||||
#: themes/default/templates/layouts/default.html.ep:57
|
||||
msgid "Tipeee button"
|
||||
msgstr ""
|
||||
"Es sind keine URLs mehr verfügbar. Versuche es erneut oder kontaktiere den "
|
||||
"Administrator. %1"
|
||||
|
||||
#: lib/Lutim/Command/cron/stats.pm:152 themes/default/templates/raw.html.ep:11
|
||||
#: themes/default/templates/gallery.html.ep:30
|
||||
msgid "Toggle fullscreen"
|
||||
msgstr "Vollbild umschalten"
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:8
|
||||
msgid "Toggle navigation"
|
||||
msgstr "Navigation umschalten"
|
||||
|
||||
#: lib/Lutim/Command/cron/stats.pm:162 themes/default/templates/raw.html.ep:11
|
||||
msgid "Total"
|
||||
msgstr ""
|
||||
msgstr "Gesamtzahl"
|
||||
|
||||
#: themes/default/templates/index.html.ep:60 themes/default/templates/partial/lutim.js.ep:14
|
||||
#: themes/default/templates/index.html.ep:78 themes/default/templates/partial/lutim.js.ep:17
|
||||
msgid "Tweet it!"
|
||||
msgstr "Twittere es!"
|
||||
|
||||
#: themes/default/templates/partial/common.js.ep:110 themes/default/templates/partial/common.js.ep:90
|
||||
msgid "Unable to copy to clipboard"
|
||||
msgstr "Kopieren in die Zwischenablage nicht möglich"
|
||||
|
||||
#. ($short)
|
||||
#: lib/Lutim/Controller.pm:162 lib/Lutim/Controller.pm:233
|
||||
#: lib/Lutim/Controller/Image.pm:108 lib/Lutim/Controller/Image.pm:202 lib/Lutim/Controller/Image.pm:273
|
||||
msgid "Unable to find the image %1."
|
||||
msgstr "Konnte das Bild %1 nicht finden."
|
||||
|
||||
#: lib/Lutim/Controller.pm:529 lib/Lutim/Controller.pm:574 lib/Lutim/Controller.pm:616 lib/Lutim/Controller.pm:659 lib/Lutim/Controller.pm:671 lib/Lutim/Controller.pm:682 lib/Lutim/Controller.pm:707 lib/Lutim/Plugin/Helpers.pm:57
|
||||
#: lib/Lutim/Controller/Image.pm:574 lib/Lutim/Controller/Image.pm:619 lib/Lutim/Controller/Image.pm:660 lib/Lutim/Controller/Image.pm:703 lib/Lutim/Controller/Image.pm:715 lib/Lutim/Controller/Image.pm:726 lib/Lutim/Controller/Image.pm:753 lib/Lutim/Plugin/Helpers.pm:88
|
||||
msgid "Unable to find the image: it has been deleted."
|
||||
msgstr "Dieses Bild wurde gelöscht."
|
||||
|
||||
#: lib/Lutim/Controller.pm:105
|
||||
#: lib/Lutim/Controller/Image.pm:145
|
||||
msgid "Unable to get counter"
|
||||
msgstr "Konnte den Zähler nicht abrufen"
|
||||
|
||||
#: themes/default/templates/about.html.ep:17
|
||||
msgid "Unlike many image sharing services, you don't give us rights on uploaded images."
|
||||
msgstr "Im Gegensatz zu anderen Bild-Hosting-Diensten, überträgst du uns nicht die Rechte an hochgeladenen Bildern."
|
||||
msgid ""
|
||||
"Unlike many image sharing services, you don't give us rights on uploaded "
|
||||
"images."
|
||||
msgstr ""
|
||||
"Im Gegensatz zu anderen Bild-Hosting-Diensten, überträgst du uns nicht die "
|
||||
"Rechte an hochgeladenen Bildern."
|
||||
|
||||
#: themes/default/templates/index.html.ep:162 themes/default/templates/index.html.ep:201
|
||||
#: themes/default/templates/index.html.ep:180 themes/default/templates/index.html.ep:219
|
||||
msgid "Upload an image with its URL"
|
||||
msgstr "Lade ein Bild über seine URL hoch"
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:54
|
||||
#: themes/default/templates/myfiles.html.ep:125
|
||||
msgid "Uploaded at"
|
||||
msgstr "Hochgeladen am"
|
||||
|
||||
@@ -424,11 +582,15 @@ msgid "Uploaded files by days"
|
||||
msgstr "Hochgeladene Bilder pro Tag"
|
||||
|
||||
#. ($c->app->config('contact')
|
||||
#: lib/Lutim/Plugin/Helpers.pm:152
|
||||
msgid "Uploading is currently disabled, please try later or contact the administrator (%1)."
|
||||
msgstr "Hochladen ist momentan deaktiviert. Versuche es später erneut oder kontaktiere den Administrator (%1)."
|
||||
#: lib/Lutim/Plugin/Helpers.pm:221
|
||||
msgid ""
|
||||
"Uploading is currently disabled, please try later or contact the "
|
||||
"administrator (%1)."
|
||||
msgstr ""
|
||||
"Hochladen ist momentan deaktiviert. Versuche es später erneut oder "
|
||||
"kontaktiere den Administrator (%1)."
|
||||
|
||||
#: themes/default/templates/index.html.ep:65 themes/default/templates/index.html.ep:67 themes/default/templates/myfiles.html.ep:51 themes/default/templates/partial/lutim.js.ep:71 themes/default/templates/partial/lutim.js.ep:75
|
||||
#: themes/default/templates/index.html.ep:83 themes/default/templates/index.html.ep:85 themes/default/templates/myfiles.html.ep:122 themes/default/templates/partial/lutim.js.ep:72 themes/default/templates/partial/lutim.js.ep:76
|
||||
msgid "View link"
|
||||
msgstr "Link ansehen"
|
||||
|
||||
@@ -445,30 +607,64 @@ msgid "Who owns rights on images uploaded on Lutim?"
|
||||
msgstr "Wer hat die Rechte an auf Lutim hochgeladenen Bildern?"
|
||||
|
||||
#: themes/default/templates/about.html.ep:12
|
||||
msgid "Yes, it is! On the other side, for legal reasons, your IP address will be stored when you send an image. Don't panic, it is normally the case of all sites on which you send files!"
|
||||
msgstr "Ja, ist es! Auf der anderen Seite wird deine IP-Adresse, wegen rechtlichen Gründen, beim hochladen gespeichert. Keine Panik, das ist normalerweise der Fall für alle Seiten, an die du Dateien sendest!"
|
||||
msgid ""
|
||||
"Yes, it is! On the other side, for legal reasons, your IP address will be "
|
||||
"stored when you send an image. Don't panic, it is normally the case of all "
|
||||
"sites on which you send files!"
|
||||
msgstr ""
|
||||
"Ja, ist es! Auf der anderen Seite wird deine IP-Adresse, wegen rechtlichen "
|
||||
"Gründen, beim hochladen gespeichert. Keine Panik, das ist normalerweise der "
|
||||
"Fall für alle Seiten, an die du Dateien sendest!"
|
||||
|
||||
#: themes/default/templates/about.html.ep:10
|
||||
msgid "Yes, it is! On the other side, if you want to support the developer, you can do it via <a href=\"https://www.tipeee.com/fiat-tux\">Tipeee</a> or via <a href=\"https://liberapay.com/sky/\">Liberapay</a>."
|
||||
msgstr "Ja, ist es! Auf der anderen Seite kannst du den Entwickler via <a href=\"https://www.tipeee.com/fiat-tux\">Tipeee</a> oder <a href=\"https://liberapay.com/sky/\">Liberapay</a> unterstützen."
|
||||
msgid ""
|
||||
"Yes, it is! On the other side, if you want to support the developer, you can "
|
||||
"do it via <a href=\"https://www.tipeee.com/fiat-tux\">Tipeee</a> or via <a "
|
||||
"href=\"https://liberapay.com/sky/\">Liberapay</a>."
|
||||
msgstr ""
|
||||
"Ja, ist es! Jedoch kannst du den Entwickler via <a href=\"https://www.tipeee."
|
||||
"com/fiat-tux\">Tipeee</a> oder <a href=\"https://liberapay.com/sky/\""
|
||||
">Liberapay</a> unterstützen."
|
||||
|
||||
#: themes/default/templates/zip.html.ep:6
|
||||
msgid "You asked to download a zip archive for too much files."
|
||||
msgstr ""
|
||||
"Du hast darum gebeten, ein Zip-Archiv für zu viele Dateien herunterzuladen."
|
||||
|
||||
#: themes/default/templates/about.html.ep:8
|
||||
msgid "You can, optionally, request that the image(s) posted on Lutim to be deleted at first view (or download) or after the delay selected from those proposed."
|
||||
msgstr "Du kannst Bilder, die du auf Lutim hochlädst, entweder nach dem ernsten Ansehen (oder Herunterladen) oder nach einem der vorgeschlagenen Zeiten löschen lassen."
|
||||
msgid ""
|
||||
"You can, optionally, request that the image(s) posted on Lutim to be deleted "
|
||||
"at first view (or download) or after the delay selected from those proposed."
|
||||
msgstr ""
|
||||
"Du kannst Bilder, die du auf Lutim hochlädst, entweder nach dem ernsten "
|
||||
"Ansehen (oder Herunterladen) oder nach einem der vorgeschlagenen Zeiten "
|
||||
"löschen lassen."
|
||||
|
||||
#: lib/Lutim/Controller/Authent.pm:27
|
||||
msgid "You have been successfully logged in."
|
||||
msgstr "Sie wurden erfolgreich angemeldet."
|
||||
|
||||
#: lib/Lutim/Controller/Authent.pm:66 themes/default/templates/logout.html.ep:3
|
||||
msgid "You have been successfully logged out."
|
||||
msgstr "Sie wurden erfolgreich abgemeldet."
|
||||
|
||||
#: themes/default/templates/gallery.html.ep:31
|
||||
msgid "Zoom in/out"
|
||||
msgstr "Vergrößern/verkleinern"
|
||||
|
||||
#: themes/default/templates/about.html.ep:27
|
||||
msgid "and on"
|
||||
msgstr "und auf"
|
||||
|
||||
#: themes/default/templates/about.html.ep:40
|
||||
msgid "arabic translation"
|
||||
msgstr "Arabische Übersetzung"
|
||||
|
||||
#: themes/default/templates/about.html.ep:27
|
||||
msgid "core developer"
|
||||
msgstr "Haupt-Entwickler"
|
||||
|
||||
#: lib/Lutim.pm:190 lib/Lutim/Command/cron/stats.pm:147 lib/Lutim/Command/cron/stats.pm:158 lib/Lutim/Command/cron/stats.pm:175 themes/default/templates/index.html.ep:3 themes/default/templates/raw.html.ep:17 themes/default/templates/raw.html.ep:34 themes/default/templates/raw.html.ep:6
|
||||
#: lib/Lutim.pm:348 lib/Lutim/Command/cron/stats.pm:157 lib/Lutim/Command/cron/stats.pm:171 lib/Lutim/Command/cron/stats.pm:188 themes/default/templates/index.html.ep:3 themes/default/templates/myfiles.html.ep:3 themes/default/templates/partial/raw.js.ep:21 themes/default/templates/partial/raw.js.ep:4 themes/default/templates/raw.html.ep:6
|
||||
msgid "no time limit"
|
||||
msgstr "keine Zeit-Begrenzung"
|
||||
|
||||
@@ -480,6 +676,14 @@ msgstr "okzitanisch Übersetzung"
|
||||
msgid "on"
|
||||
msgstr "auf"
|
||||
|
||||
#: themes/default/templates/about.html.ep:39
|
||||
msgid "paste image to upload ability"
|
||||
msgstr "Bild zum Hochladen einfügen-Funktion"
|
||||
|
||||
#: themes/default/templates/about.html.ep:41
|
||||
msgid "russian translation"
|
||||
msgstr "russische Übersetzung"
|
||||
|
||||
#: themes/default/templates/about.html.ep:36
|
||||
msgid "spanish translation"
|
||||
msgstr "spanische Übersetzung"
|
||||
@@ -487,3 +691,21 @@ msgstr "spanische Übersetzung"
|
||||
#: themes/default/templates/about.html.ep:28
|
||||
msgid "webapp developer"
|
||||
msgstr "Webapp-Entwickler"
|
||||
|
||||
#: themes/default/templates/about.html.ep:24
|
||||
msgid "For more details, see the <a href=\"https://framagit.org/fiat-tux/hat-softwares/lutim\">homepage of the project</a>."
|
||||
msgstr ""
|
||||
"Für weitere Details besuche die <a href=\"https://framagit.org/fiat-tux/"
|
||||
"hat-softwares/lutim\">Website des Projekts</a>."
|
||||
|
||||
#: themes/default/templates/index.html.ep:174 themes/default/templates/index.html.ep:218
|
||||
msgid "Single watermark"
|
||||
msgstr "Einzelnes Wasserzeichen"
|
||||
|
||||
#: themes/default/templates/index.html.ep:171 themes/default/templates/index.html.ep:215
|
||||
msgid "Tiling watermark"
|
||||
msgstr "Gekacheltes Wasserzeichen"
|
||||
|
||||
#: themes/default/templates/index.html.ep:177 themes/default/templates/index.html.ep:221
|
||||
msgid "No watermark"
|
||||
msgstr "Kein Wasserzeichen"
|
||||
|
||||
@@ -1,123 +1,137 @@
|
||||
# Lutim language file
|
||||
# Copyright (C) 2014 Luc Didry
|
||||
# This file is distributed under the same license as the Lutim package.
|
||||
#
|
||||
# Translators:
|
||||
# Luc Didry <luc@framasoft.org>, 2018. #zanata
|
||||
# Luc Didry <luc@framasoft.org>, 2019. #zanata
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Lutim\n"
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"PO-Revision-Date: 2015-09-10 23:28+0000\n"
|
||||
"Last-Translator: Luc Didry <luc@didry.org>\n"
|
||||
"Language-Team: English (http://www.transifex.com/fiat-tux/lutim/language/en/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"PO-Revision-Date: 2019-05-13 08:43+0000\n"
|
||||
"Last-Translator: Luc Didry <luc@framasoft.org>\n"
|
||||
"Language-Team: English\n"
|
||||
"Language: en\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Generator: Zanata 4.6.2\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
|
||||
|
||||
#. (7)
|
||||
#. (30)
|
||||
#. ($delay)
|
||||
#. (config('max_delay')
|
||||
#: lib/Lutim/Command/cron/stats.pm:149 lib/Lutim/Command/cron/stats.pm:150 lib/Lutim/Command/cron/stats.pm:160 lib/Lutim/Command/cron/stats.pm:161 lib/Lutim/Command/cron/stats.pm:177 lib/Lutim/Command/cron/stats.pm:178 themes/default/templates/partial/for_my_delay.html.ep:12 themes/default/templates/partial/for_my_delay.html.ep:13 themes/default/templates/partial/for_my_delay.html.ep:3 themes/default/templates/partial/lutim.js.ep:138 themes/default/templates/partial/lutim.js.ep:147 themes/default/templates/partial/lutim.js.ep:148 themes/default/templates/raw.html.ep:19 themes/default/templates/raw.html.ep:20 themes/default/templates/raw.html.ep:36 themes/default/templates/raw.html.ep:37 themes/default/templates/raw.html.ep:8 themes/default/templates/raw.html.ep:9
|
||||
#: lib/Lutim/Command/cron/stats.pm:156 lib/Lutim/Command/cron/stats.pm:157 lib/Lutim/Command/cron/stats.pm:170 lib/Lutim/Command/cron/stats.pm:171 lib/Lutim/Command/cron/stats.pm:187 lib/Lutim/Command/cron/stats.pm:188 themes/default/templates/myfiles.html.ep:24 themes/default/templates/myfiles.html.ep:33 themes/default/templates/myfiles.html.ep:34 themes/default/templates/partial/for_my_delay.html.ep:13 themes/default/templates/partial/for_my_delay.html.ep:14 themes/default/templates/partial/for_my_delay.html.ep:4 themes/default/templates/partial/lutim.js.ep:140 themes/default/templates/partial/lutim.js.ep:149 themes/default/templates/partial/lutim.js.ep:150 themes/default/templates/partial/raw.js.ep:23 themes/default/templates/partial/raw.js.ep:24 themes/default/templates/partial/raw.js.ep:6 themes/default/templates/partial/raw.js.ep:7 themes/default/templates/raw.html.ep:8 themes/default/templates/raw.html.ep:9
|
||||
msgid "%1 days"
|
||||
msgstr ""
|
||||
msgstr "%1 days"
|
||||
|
||||
#. ($total)
|
||||
#: themes/default/templates/stats.html.ep:2
|
||||
msgid "%1 sent images on this instance from beginning."
|
||||
msgstr "%1 sent images on this instance from beginning."
|
||||
|
||||
#: themes/default/templates/index.html.ep:190
|
||||
#: themes/default/templates/index.html.ep:228
|
||||
msgid "-or-"
|
||||
msgstr "-or-"
|
||||
|
||||
#: lib/Lutim.pm:192 lib/Lutim/Command/cron/stats.pm:151 lib/Lutim/Command/cron/stats.pm:162 lib/Lutim/Command/cron/stats.pm:179 themes/default/templates/index.html.ep:5 themes/default/templates/raw.html.ep:10 themes/default/templates/raw.html.ep:21 themes/default/templates/raw.html.ep:38
|
||||
#: lib/Lutim.pm:342 lib/Lutim/Command/cron/stats.pm:158 lib/Lutim/Command/cron/stats.pm:172 lib/Lutim/Command/cron/stats.pm:189 themes/default/templates/index.html.ep:5 themes/default/templates/myfiles.html.ep:5 themes/default/templates/partial/raw.js.ep:25 themes/default/templates/partial/raw.js.ep:8 themes/default/templates/raw.html.ep:10
|
||||
msgid "1 year"
|
||||
msgstr "1 year"
|
||||
|
||||
#: lib/Lutim.pm:191 lib/Lutim/Command/cron/stats.pm:148 lib/Lutim/Command/cron/stats.pm:159 lib/Lutim/Command/cron/stats.pm:176 themes/default/templates/index.html.ep:4 themes/default/templates/partial/for_my_delay.html.ep:12 themes/default/templates/partial/lutim.js.ep:147 themes/default/templates/raw.html.ep:18 themes/default/templates/raw.html.ep:35 themes/default/templates/raw.html.ep:7
|
||||
#: lib/Lutim.pm:341 lib/Lutim/Command/cron/stats.pm:155 lib/Lutim/Command/cron/stats.pm:169 lib/Lutim/Command/cron/stats.pm:186 themes/default/templates/index.html.ep:4 themes/default/templates/myfiles.html.ep:33 themes/default/templates/myfiles.html.ep:4 themes/default/templates/partial/for_my_delay.html.ep:13 themes/default/templates/partial/lutim.js.ep:149 themes/default/templates/partial/raw.js.ep:22 themes/default/templates/partial/raw.js.ep:5 themes/default/templates/raw.html.ep:7
|
||||
msgid "24 hours"
|
||||
msgstr "24 hours"
|
||||
|
||||
#: themes/default/templates/partial/myfiles.js.ep:57
|
||||
#: themes/default/templates/partial/myfiles.js.ep:210
|
||||
msgid ": Error while trying to get the counter."
|
||||
msgstr ""
|
||||
msgstr ": Error while trying to get the counter."
|
||||
|
||||
#: lib/Lutim/Command/cron/stats.pm:144 themes/default/templates/raw.html.ep:3
|
||||
#: themes/default/templates/partial/navbar.html.ep:63
|
||||
msgid "About"
|
||||
msgstr "About"
|
||||
|
||||
#: lib/Lutim/Command/cron/stats.pm:151 themes/default/templates/raw.html.ep:3
|
||||
msgid "Active images"
|
||||
msgstr ""
|
||||
msgstr "Active images"
|
||||
|
||||
#: lib/Lutim/Controller.pm:288
|
||||
#: lib/Lutim/Controller/Image.pm:329
|
||||
msgid "An error occured while downloading the image."
|
||||
msgstr "An error occured while downloading the image."
|
||||
|
||||
#: themes/default/templates/zip.html.ep:2
|
||||
msgid "Archives download"
|
||||
msgstr ""
|
||||
msgstr "Archives download"
|
||||
|
||||
#: themes/default/templates/about.html.ep:41 themes/default/templates/myfiles.html.ep:64 themes/default/templates/stats.html.ep:25
|
||||
#: themes/default/templates/about.html.ep:44 themes/default/templates/myfiles.html.ep:129 themes/default/templates/stats.html.ep:25
|
||||
msgid "Back to homepage"
|
||||
msgstr "Back to homepage"
|
||||
|
||||
#: themes/default/templates/index.html.ep:193 themes/default/templates/index.html.ep:194
|
||||
#: themes/default/templates/index.html.ep:231 themes/default/templates/index.html.ep:232
|
||||
msgid "Click to open the file browser"
|
||||
msgstr "Click to open the file browser"
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:51
|
||||
msgid "Close"
|
||||
msgstr "Close"
|
||||
|
||||
#: themes/default/templates/gallery.html.ep:29
|
||||
msgid "Close (Esc)"
|
||||
msgstr "Close (Esc)"
|
||||
|
||||
#: themes/default/templates/about.html.ep:30
|
||||
msgid "Contributors"
|
||||
msgstr "Contributors"
|
||||
|
||||
#: themes/default/templates/partial/lutim.js.ep:214 themes/default/templates/partial/lutim.js.ep:268 themes/default/templates/partial/lutim.js.ep:346
|
||||
msgid "Copy all view links to clipboard"
|
||||
msgstr ""
|
||||
#: themes/default/templates/partial/common.js.ep:113 themes/default/templates/partial/common.js.ep:93
|
||||
msgid "Copied to clipboard"
|
||||
msgstr "Copied to clipboard"
|
||||
|
||||
#: themes/default/templates/index.html.ep:18 themes/default/templates/index.html.ep:36 themes/default/templates/index.html.ep:69 themes/default/templates/index.html.ep:77 themes/default/templates/index.html.ep:85 themes/default/templates/index.html.ep:93 themes/default/templates/myfiles.html.ep:20 themes/default/templates/myfiles.html.ep:38 themes/default/templates/partial/common.js.ep:150 themes/default/templates/partial/lutim.js.ep:105 themes/default/templates/partial/lutim.js.ep:120 themes/default/templates/partial/lutim.js.ep:79 themes/default/templates/partial/lutim.js.ep:91
|
||||
#: themes/default/templates/partial/lutim.js.ep:215 themes/default/templates/partial/lutim.js.ep:278 themes/default/templates/partial/lutim.js.ep:364
|
||||
msgid "Copy all view links to clipboard"
|
||||
msgstr "Copy all view links to clipboard"
|
||||
|
||||
#: themes/default/templates/index.html.ep:105 themes/default/templates/index.html.ep:16 themes/default/templates/index.html.ep:32 themes/default/templates/index.html.ep:48 themes/default/templates/index.html.ep:81 themes/default/templates/index.html.ep:89 themes/default/templates/index.html.ep:97 themes/default/templates/myfiles.html.ep:66 themes/default/templates/myfiles.html.ep:82 themes/default/templates/myfiles.html.ep:98 themes/default/templates/partial/common.js.ep:186 themes/default/templates/partial/lutim.js.ep:106 themes/default/templates/partial/lutim.js.ep:121 themes/default/templates/partial/lutim.js.ep:80 themes/default/templates/partial/lutim.js.ep:92 themes/default/templates/partial/myfiles.js.ep:172
|
||||
msgid "Copy to clipboard"
|
||||
msgstr "Copy to clipboard"
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:52
|
||||
#: themes/default/templates/myfiles.html.ep:117
|
||||
msgid "Counter"
|
||||
msgstr ""
|
||||
msgstr "Counter"
|
||||
|
||||
#: themes/default/templates/stats.html.ep:18
|
||||
msgid "Delay repartition chart for disabled images"
|
||||
msgstr ""
|
||||
msgstr "Delay repartition chart for disabled images"
|
||||
|
||||
#: themes/default/templates/stats.html.ep:15
|
||||
msgid "Delay repartition chart for enabled images"
|
||||
msgstr ""
|
||||
msgstr "Delay repartition chart for enabled images"
|
||||
|
||||
#: themes/default/templates/index.html.ep:115 themes/default/templates/index.html.ep:147 themes/default/templates/index.html.ep:178 themes/default/templates/myfiles.html.ep:53 themes/default/templates/partial/lutim.js.ep:159
|
||||
#: themes/default/templates/index.html.ep:127 themes/default/templates/index.html.ep:159 themes/default/templates/index.html.ep:203 themes/default/templates/myfiles.html.ep:118 themes/default/templates/myfiles.html.ep:45 themes/default/templates/partial/lutim.js.ep:161
|
||||
msgid "Delete at first view?"
|
||||
msgstr "Delete at first view?"
|
||||
|
||||
#: lib/Lutim/Command/cron/stats.pm:145 themes/default/templates/raw.html.ep:4
|
||||
#: lib/Lutim/Command/cron/stats.pm:152 themes/default/templates/raw.html.ep:4
|
||||
msgid "Deleted images"
|
||||
msgstr ""
|
||||
msgstr "Deleted images"
|
||||
|
||||
#: lib/Lutim/Command/cron/stats.pm:146 themes/default/templates/raw.html.ep:5
|
||||
#: lib/Lutim/Command/cron/stats.pm:153 themes/default/templates/raw.html.ep:5
|
||||
msgid "Deleted images in 30 days"
|
||||
msgstr ""
|
||||
msgstr "Deleted images in 30 days"
|
||||
|
||||
#: themes/default/templates/index.html.ep:98 themes/default/templates/myfiles.html.ep:56 themes/default/templates/partial/common.js.ep:142 themes/default/templates/partial/common.js.ep:145
|
||||
#: themes/default/templates/index.html.ep:110 themes/default/templates/myfiles.html.ep:121 themes/default/templates/partial/common.js.ep:178 themes/default/templates/partial/common.js.ep:181
|
||||
msgid "Deletion link"
|
||||
msgstr "Deletion link"
|
||||
|
||||
#: themes/default/templates/gallery.html.ep:6
|
||||
#: themes/default/templates/gallery.html.ep:10
|
||||
msgid "Download all images"
|
||||
msgstr ""
|
||||
msgstr "Download all images"
|
||||
|
||||
#: themes/default/templates/index.html.ep:81 themes/default/templates/index.html.ep:83 themes/default/templates/partial/lutim.js.ep:101 themes/default/templates/partial/lutim.js.ep:97
|
||||
#: themes/default/templates/index.html.ep:93 themes/default/templates/index.html.ep:95 themes/default/templates/partial/lutim.js.ep:102 themes/default/templates/partial/lutim.js.ep:98
|
||||
msgid "Download link"
|
||||
msgstr "Download link"
|
||||
|
||||
#: themes/default/templates/index.html.ep:28 themes/default/templates/index.html.ep:31 themes/default/templates/myfiles.html.ep:30 themes/default/templates/myfiles.html.ep:33
|
||||
#: themes/default/templates/index.html.ep:26 themes/default/templates/index.html.ep:28 themes/default/templates/myfiles.html.ep:76 themes/default/templates/myfiles.html.ep:78
|
||||
msgid "Download zip link"
|
||||
msgstr ""
|
||||
msgstr "Download zip link"
|
||||
|
||||
#: themes/default/templates/index.html.ep:189
|
||||
#: themes/default/templates/index.html.ep:227
|
||||
msgid "Drag & drop images here"
|
||||
msgstr "Drag & drop images here"
|
||||
|
||||
@@ -125,43 +139,47 @@ msgstr "Drag & drop images here"
|
||||
msgid "Drag and drop an image in the appropriate area or use the traditional way to send files and Lutim will provide you four URLs. One to view the image, an other to directly download it, one you can use on social networks and a last to delete the image when you want."
|
||||
msgstr "Drag and drop an image in the appropriate area or use the traditional way to send files and Lutim will provide you four URLs. One to view the image, an other to directly download it, one you can use on social networks and a last to delete the image when you want."
|
||||
|
||||
#: themes/default/templates/index.html.ep:150 themes/default/templates/index.html.ep:181
|
||||
#: themes/default/templates/index.html.ep:162 themes/default/templates/index.html.ep:206
|
||||
msgid "Encrypt the image (Lutim does not keep the key)."
|
||||
msgstr "Encrypt the image (Lutim does not keep the key)."
|
||||
|
||||
#: themes/default/templates/partial/lutim.js.ep:44
|
||||
#: themes/default/templates/partial/lutim.js.ep:45 themes/default/templates/partial/myfiles.js.ep:128
|
||||
msgid "Error while trying to modify the image."
|
||||
msgstr ""
|
||||
msgstr "Error while trying to modify the image."
|
||||
|
||||
#: themes/default/templates/stats.html.ep:10
|
||||
msgid "Evolution of total files"
|
||||
msgstr "Evolution of total files"
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:55
|
||||
#: themes/default/templates/myfiles.html.ep:120
|
||||
msgid "Expires at"
|
||||
msgstr ""
|
||||
msgstr "Expires at"
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:50
|
||||
#: themes/default/templates/myfiles.html.ep:106
|
||||
msgid "Export localStorage data"
|
||||
msgstr "Export localStorage data"
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:115
|
||||
msgid "File name"
|
||||
msgstr ""
|
||||
msgstr "File name"
|
||||
|
||||
#: themes/default/templates/about.html.ep:24
|
||||
msgid "For more details, see the <a href=\"https://framagit.org/luc/lutim\">homepage of the project</a>."
|
||||
msgstr "For more details, see the <a href=\"https://framagit.org/luc/lutim\">homepage of the project</a>."
|
||||
msgid "For more details, see the <a href=\"https://framagit.org/fiat-tux/hat-softwares/lutim\">homepage of the project</a>."
|
||||
msgstr "For more details, see the <a href=\"https://framagit.org/fiat-tux/hat-softwares/lutim\">homepage of the project</a>."
|
||||
|
||||
#: themes/default/templates/layouts/default.html.ep:55
|
||||
#: themes/default/templates/partial/navbar.html.ep:66
|
||||
msgid "Fork me!"
|
||||
msgstr "Fork me!"
|
||||
|
||||
#: themes/default/templates/index.html.ep:10 themes/default/templates/index.html.ep:13 themes/default/templates/myfiles.html.ep:12 themes/default/templates/myfiles.html.ep:15
|
||||
#: themes/default/templates/index.html.ep:10 themes/default/templates/index.html.ep:12 themes/default/templates/myfiles.html.ep:60 themes/default/templates/myfiles.html.ep:62
|
||||
msgid "Gallery link"
|
||||
msgstr ""
|
||||
msgstr "Gallery link"
|
||||
|
||||
#: themes/default/templates/partial/common.js.ep:104 themes/default/templates/partial/common.js.ep:87
|
||||
#: themes/default/templates/partial/common.js.ep:116 themes/default/templates/partial/common.js.ep:134
|
||||
msgid "Hit Ctrl+C, then Enter to copy the short link"
|
||||
msgstr ""
|
||||
msgstr "Hit Ctrl+C, then Enter to copy the short link"
|
||||
|
||||
#: themes/default/templates/layouts/default.html.ep:50
|
||||
#: themes/default/templates/layouts/default.html.ep:47
|
||||
msgid "Homepage"
|
||||
msgstr "Homepage"
|
||||
|
||||
@@ -181,29 +199,37 @@ msgstr "How to report an image?"
|
||||
msgid "If the files are deleted if you ask it while posting it, their SHA512 footprint are retained."
|
||||
msgstr "If the files are deleted if you ask it while posting it, their SHA512 footprint are retained."
|
||||
|
||||
#: themes/default/templates/index.html.ep:163 themes/default/templates/index.html.ep:203
|
||||
#: themes/default/templates/index.html.ep:188 themes/default/templates/index.html.ep:241
|
||||
msgid "Image URL"
|
||||
msgstr "Image URL"
|
||||
|
||||
#: lib/Lutim/Command/cron/stats.pm:143 themes/default/templates/raw.html.ep:2
|
||||
#: lib/Lutim/Command/cron/stats.pm:150 themes/default/templates/raw.html.ep:2
|
||||
msgid "Image delay"
|
||||
msgstr ""
|
||||
msgstr "Image delay"
|
||||
|
||||
#: lib/Lutim/Controller.pm:710
|
||||
#: themes/default/templates/partial/common.js.ep:157
|
||||
msgid "Image deleted"
|
||||
msgstr "Image deleted"
|
||||
|
||||
#: lib/Lutim/Controller/Image.pm:799
|
||||
msgid "Image not found."
|
||||
msgstr ""
|
||||
msgstr "Image not found."
|
||||
|
||||
#: themes/default/templates/layouts/default.html.ep:54
|
||||
#: themes/default/templates/myfiles.html.ep:107
|
||||
msgid "Import localStorage data"
|
||||
msgstr "Import localStorage data"
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:55
|
||||
msgid "Informations"
|
||||
msgstr "Informations"
|
||||
|
||||
#: themes/default/templates/layouts/default.html.ep:62
|
||||
#: themes/default/templates/partial/navbar.html.ep:25
|
||||
msgid "Install webapp"
|
||||
msgstr "Install webapp"
|
||||
|
||||
#: themes/default/templates/layouts/default.html.ep:61
|
||||
#: themes/default/templates/partial/navbar.html.ep:21
|
||||
msgid "Instance's statistics"
|
||||
msgstr ""
|
||||
msgstr "Instance's statistics"
|
||||
|
||||
#: themes/default/templates/about.html.ep:11
|
||||
msgid "Is it really anonymous?"
|
||||
@@ -217,29 +243,37 @@ msgstr "Is it really free (as in free beer)?"
|
||||
msgid "Juste like you pronounce the French word <a href=\"https://fr.wikipedia.org/wiki/Lutin\">lutin</a> (/ly.tɛ̃/)."
|
||||
msgstr "Juste like you pronounce the French word <a href=\"https://fr.wikipedia.org/wiki/Lutin\">lutin</a> (/ly.tɛ̃/)."
|
||||
|
||||
#: themes/default/templates/index.html.ep:153 themes/default/templates/index.html.ep:184
|
||||
#: themes/default/templates/index.html.ep:165 themes/default/templates/index.html.ep:209
|
||||
msgid "Keep EXIF tags"
|
||||
msgstr "Keep EXIF tags"
|
||||
|
||||
#: themes/default/templates/index.html.ep:118 themes/default/templates/index.html.ep:166 themes/default/templates/index.html.ep:206 themes/default/templates/partial/lutim.js.ep:163
|
||||
#: themes/default/templates/partial/navbar.html.ep:43
|
||||
msgid "Language"
|
||||
msgstr "Language"
|
||||
|
||||
#: themes/default/templates/index.html.ep:130 themes/default/templates/index.html.ep:191 themes/default/templates/index.html.ep:244 themes/default/templates/partial/lutim.js.ep:165
|
||||
msgid "Let's go!"
|
||||
msgstr "Let's go!"
|
||||
|
||||
#: themes/default/templates/layouts/default.html.ep:58
|
||||
msgid "Liberapay button"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/layouts/default.html.ep:53
|
||||
#: themes/default/templates/partial/navbar.html.ep:60
|
||||
msgid "License:"
|
||||
msgstr "License:"
|
||||
|
||||
#: themes/default/templates/index.html.ep:89 themes/default/templates/index.html.ep:91 themes/default/templates/partial/lutim.js.ep:111 themes/default/templates/partial/lutim.js.ep:115
|
||||
#: themes/default/templates/index.html.ep:101 themes/default/templates/index.html.ep:103 themes/default/templates/partial/lutim.js.ep:112 themes/default/templates/partial/lutim.js.ep:116
|
||||
msgid "Link for share on social networks"
|
||||
msgstr "Link for share on social networks"
|
||||
|
||||
#: themes/default/templates/login.html.ep:8
|
||||
msgid "Login"
|
||||
msgstr "Login"
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:33
|
||||
msgid "Logout"
|
||||
msgstr "Logout"
|
||||
|
||||
#: themes/default/templates/zip.html.ep:7
|
||||
msgid "Lutim can't zip so many images at once, so it splitted your demand in multiple URLs."
|
||||
msgstr ""
|
||||
msgstr "Lutim can't zip so many images at once, so it splitted your demand in multiple URLs."
|
||||
|
||||
#: themes/default/templates/about.html.ep:4
|
||||
msgid "Lutim is a free (as in free beer) and anonymous image hosting service. It's also the name of the free (as in free speech) software which provides this service."
|
||||
@@ -249,71 +283,95 @@ msgstr "Lutim is a free (as in free beer) and anonymous image hosting service. I
|
||||
msgid "Main developers"
|
||||
msgstr "Main developers"
|
||||
|
||||
#: themes/default/templates/index.html.ep:73 themes/default/templates/index.html.ep:75 themes/default/templates/partial/lutim.js.ep:85 themes/default/templates/partial/lutim.js.ep:88
|
||||
#: themes/default/templates/index.html.ep:85 themes/default/templates/index.html.ep:87 themes/default/templates/partial/lutim.js.ep:86 themes/default/templates/partial/lutim.js.ep:89
|
||||
msgid "Markdown syntax"
|
||||
msgstr "Markdown syntax"
|
||||
|
||||
#: themes/default/templates/layouts/default.html.ep:60 themes/default/templates/myfiles.html.ep:2
|
||||
#: themes/default/templates/partial/myfiles.js.ep:179
|
||||
msgid "Modify expiration delay"
|
||||
msgstr "Modify expiration delay"
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:7 themes/default/templates/partial/navbar.html.ep:18
|
||||
msgid "My images"
|
||||
msgstr ""
|
||||
msgstr "My images"
|
||||
|
||||
#: themes/default/templates/partial/myfiles.js.ep:19
|
||||
#: themes/default/templates/gallery.html.ep:45
|
||||
msgid "Next (arrow right)"
|
||||
msgstr "Next (arrow right)"
|
||||
|
||||
#: themes/default/templates/partial/myfiles.js.ep:120 themes/default/templates/partial/myfiles.js.ep:162
|
||||
msgid "No limit"
|
||||
msgstr ""
|
||||
msgstr "No limit"
|
||||
|
||||
#: themes/default/templates/index.html.ep:165 themes/default/templates/index.html.ep:198
|
||||
#: themes/default/templates/index.html.ep:177 themes/default/templates/index.html.ep:221
|
||||
msgid "No watermark"
|
||||
msgstr "No watermark"
|
||||
|
||||
#: themes/default/templates/index.html.ep:190 themes/default/templates/index.html.ep:236
|
||||
msgid "Only images are allowed"
|
||||
msgstr "Only images are allowed"
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:6
|
||||
msgid "Only the images sent with this browser will be listed here. The informations are stored in localStorage: if you delete your localStorage data, you'll loose this informations."
|
||||
msgstr ""
|
||||
#: themes/default/templates/myfiles.html.ep:11
|
||||
msgid "Only the images sent with this browser will be listed here. The details are stored in localStorage: if you delete your localStorage data, you'll loose these details."
|
||||
msgstr "Only the images sent with this browser will be listed here. The details are stored in localStorage: if you delete your localStorage data, you'll loose these details."
|
||||
|
||||
#: themes/default/templates/about.html.ep:16
|
||||
msgid "Only the uploader! (well, only if he's the only owner of the images' rights before the upload)"
|
||||
msgstr "Only the uploader! (well, only if he's the only owner of the images' rights before the upload)"
|
||||
|
||||
#: themes/default/templates/login.html.ep:12
|
||||
msgid "Password"
|
||||
msgstr "Password"
|
||||
|
||||
#: themes/default/templates/zip.html.ep:12
|
||||
msgid "Please click on each URL to download the different zip files."
|
||||
msgstr ""
|
||||
msgstr "Please click on each URL to download the different zip files."
|
||||
|
||||
#. (config('contact')
|
||||
#: themes/default/templates/about.html.ep:19
|
||||
msgid "Please contact the administrator: %1"
|
||||
msgstr "Please contact the administrator: %1"
|
||||
|
||||
#: lib/Lutim/Controller/Authent.pm:36
|
||||
msgid "Please, check your credentials: unable to authenticate."
|
||||
msgstr "Please, check your credentials: unable to authenticate."
|
||||
|
||||
#: themes/default/templates/gallery.html.ep:43
|
||||
msgid "Previous (arrow left)"
|
||||
msgstr "Previous (arrow left)"
|
||||
|
||||
#: themes/default/templates/index.html.ep:42 themes/default/templates/index.html.ep:44 themes/default/templates/myfiles.html.ep:92 themes/default/templates/myfiles.html.ep:94
|
||||
msgid "Random image link"
|
||||
msgstr "Random image link"
|
||||
|
||||
#: themes/default/templates/stats.html.ep:22
|
||||
msgid "Raw stats"
|
||||
msgstr ""
|
||||
msgstr "Raw stats"
|
||||
|
||||
#: themes/default/templates/index.html.ep:158
|
||||
#: themes/default/templates/myfiles.html.ep:52
|
||||
msgid "Save changes"
|
||||
msgstr "Save changes"
|
||||
|
||||
#: themes/default/templates/index.html.ep:183
|
||||
msgid "Send an image"
|
||||
msgstr "Send an image"
|
||||
|
||||
#: themes/default/templates/partial/lutim.js.ep:20
|
||||
msgid "Share it!"
|
||||
msgstr ""
|
||||
#: themes/default/templates/login.html.ep:16 themes/default/templates/logout.html.ep:5 themes/default/templates/partial/navbar.html.ep:37
|
||||
msgid "Signin"
|
||||
msgstr "Signin"
|
||||
|
||||
#: themes/default/templates/layouts/default.html.ep:56
|
||||
msgid "Share on Twitter"
|
||||
msgstr "Share on Twitter"
|
||||
#: themes/default/templates/index.html.ep:174 themes/default/templates/index.html.ep:218
|
||||
msgid "Single watermark"
|
||||
msgstr "Single watermark"
|
||||
|
||||
#: themes/default/templates/index.html.ep:133 themes/default/templates/partial/lutim.js.ep:174
|
||||
#: themes/default/templates/index.html.ep:145 themes/default/templates/partial/gallery.js.ep:211 themes/default/templates/partial/lutim.js.ep:176
|
||||
msgid "Something bad happened"
|
||||
msgstr "Something bad happened"
|
||||
|
||||
#. ($c->config('contact')
|
||||
#: lib/Lutim/Controller.pm:717
|
||||
#: lib/Lutim/Controller/Image.pm:806
|
||||
msgid "Something went wrong when creating the zip file. Try again later or contact the administrator (%1)."
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/layouts/default.html.ep:58
|
||||
msgid "Support the author on Liberapay"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/layouts/default.html.ep:57
|
||||
msgid "Support the author on Tipeee"
|
||||
msgstr ""
|
||||
msgstr "Something went wrong when creating the zip file. Try again later or contact the administrator (%1)."
|
||||
|
||||
#: themes/default/templates/about.html.ep:13
|
||||
msgid "The IP address of the image's sender is retained for a delay which depends of the administrator's choice (for the official instance, which is located in France, it's one year)."
|
||||
@@ -323,27 +381,31 @@ msgstr "The IP address of the image's sender is retained for a delay which depen
|
||||
msgid "The Lutim software is a <a href=\"http://en.wikipedia.org/wiki/Free_software\">free software</a>, which allows you to download and install it on you own server. Have a look at the <a href=\"https://www.gnu.org/licenses/agpl-3.0.html\">AGPL</a> to see what you can do."
|
||||
msgstr "The Lutim software is a <a href=\"http://en.wikipedia.org/wiki/Free_software\">free software</a>, which allows you to download and install it on you own server. Have a look at the <a href=\"https://www.gnu.org/licenses/agpl-3.0.html\">AGPL</a> to see what you can do."
|
||||
|
||||
#: lib/Lutim/Controller.pm:307
|
||||
#: lib/Lutim/Controller/Image.pm:348
|
||||
msgid "The URL is not valid."
|
||||
msgstr "The URL is not valid."
|
||||
|
||||
#: themes/default/templates/zip.html.ep:16
|
||||
msgid "The automatic download process will open a tab in your browser for each link. You need to allow popups for Lutim."
|
||||
msgstr ""
|
||||
msgstr "The automatic download process will open a tab in your browser for each link. You need to allow popups for Lutim."
|
||||
|
||||
#: lib/Lutim/Controller.pm:120 lib/Lutim/Controller.pm:188
|
||||
#: themes/default/templates/partial/myfiles.js.ep:32
|
||||
msgid "The data has been successfully imported."
|
||||
msgstr "The data has been successfully imported."
|
||||
|
||||
#: lib/Lutim/Controller/Image.pm:160 lib/Lutim/Controller/Image.pm:228
|
||||
msgid "The delete token is invalid."
|
||||
msgstr "The delete token is invalid."
|
||||
|
||||
#. ($upload->filename)
|
||||
#: lib/Lutim/Controller.pm:445
|
||||
#: lib/Lutim/Controller/Image.pm:531
|
||||
msgid "The file %1 is not an image."
|
||||
msgstr "The file %1 is not an image."
|
||||
|
||||
#. ($tx->res->max_message_size)
|
||||
#. ($c->req->max_message_size)
|
||||
#. (config('max_file_size')
|
||||
#: lib/Lutim/Controller.pm:271 lib/Lutim/Controller.pm:340 themes/default/templates/partial/lutim.js.ep:240
|
||||
#: lib/Lutim/Controller/Image.pm:312 lib/Lutim/Controller/Image.pm:381 themes/default/templates/partial/lutim.js.ep:249
|
||||
msgid "The file exceed the size limit (%1)"
|
||||
msgstr "The file exceed the size limit (%1)"
|
||||
|
||||
@@ -352,20 +414,16 @@ msgid "The graph's datas are not updated in real-time."
|
||||
msgstr "The graph's datas are not updated in real-time."
|
||||
|
||||
#. ($image->filename)
|
||||
#: lib/Lutim/Controller.pm:190
|
||||
#: lib/Lutim/Controller/Image.pm:230
|
||||
msgid "The image %1 has already been deleted."
|
||||
msgstr "The image %1 has already been deleted."
|
||||
|
||||
#. ($image->filename)
|
||||
#: lib/Lutim/Controller.pm:199 lib/Lutim/Controller.pm:204
|
||||
#: lib/Lutim/Controller/Image.pm:239 lib/Lutim/Controller/Image.pm:244
|
||||
msgid "The image %1 has been successfully deleted"
|
||||
msgstr "The image %1 has been successfully deleted"
|
||||
|
||||
#: lib/Lutim/Controller.pm:128
|
||||
msgid "The image's delay has been successfully modified"
|
||||
msgstr "The image's delay has been successfully modified"
|
||||
|
||||
#: themes/default/templates/index.html.ep:45
|
||||
#: themes/default/templates/index.html.ep:57
|
||||
msgid "The images are encrypted on the server (Lutim does not keep the key)."
|
||||
msgstr "The images are encrypted on the server (Lutim does not keep the key)."
|
||||
|
||||
@@ -373,58 +431,78 @@ msgstr "The images are encrypted on the server (Lutim does not keep the key)."
|
||||
msgid "The images you post on Lutim can be stored indefinitely or be deleted at first view or after a delay selected from those proposed."
|
||||
msgstr "The images you post on Lutim can be stored indefinitely or be deleted at first view or after a delay selected from those proposed."
|
||||
|
||||
#: lib/Lutim/Controller/Image.pm:168
|
||||
msgid "The image’s delay has been successfully modified"
|
||||
msgstr "The image’s delay has been successfully modified"
|
||||
|
||||
#: themes/default/templates/partial/gallery.js.ep:277
|
||||
msgid "There is XXXX image(s) in the gallery"
|
||||
msgstr "There is XXXX image(s) in the gallery"
|
||||
|
||||
#. ($c->config->{contact})
|
||||
#: lib/Lutim/Controller.pm:442
|
||||
#: lib/Lutim/Controller/Image.pm:528
|
||||
msgid "There is no more available URL. Retry or contact the administrator. %1"
|
||||
msgstr "There is no more available URL. Retry or contact the administrator. %1"
|
||||
|
||||
#: themes/default/templates/layouts/default.html.ep:57
|
||||
msgid "Tipeee button"
|
||||
msgstr ""
|
||||
#: themes/default/templates/index.html.ep:171 themes/default/templates/index.html.ep:215
|
||||
msgid "Tiling watermark"
|
||||
msgstr "Tiling watermark"
|
||||
|
||||
#: lib/Lutim/Command/cron/stats.pm:152 themes/default/templates/raw.html.ep:11
|
||||
#: themes/default/templates/gallery.html.ep:30
|
||||
msgid "Toggle fullscreen"
|
||||
msgstr "Toggle fullscreen"
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:8
|
||||
msgid "Toggle navigation"
|
||||
msgstr "Toggle navigation"
|
||||
|
||||
#: lib/Lutim/Command/cron/stats.pm:159 themes/default/templates/raw.html.ep:11
|
||||
msgid "Total"
|
||||
msgstr ""
|
||||
msgstr "Total"
|
||||
|
||||
#: themes/default/templates/index.html.ep:60 themes/default/templates/partial/lutim.js.ep:14
|
||||
#: themes/default/templates/index.html.ep:72 themes/default/templates/partial/lutim.js.ep:17
|
||||
msgid "Tweet it!"
|
||||
msgstr "Tweet it!"
|
||||
|
||||
#: themes/default/templates/partial/common.js.ep:110 themes/default/templates/partial/common.js.ep:90
|
||||
msgid "Unable to copy to clipboard"
|
||||
msgstr "Unable to copy to clipboard"
|
||||
|
||||
#. ($short)
|
||||
#: lib/Lutim/Controller.pm:162 lib/Lutim/Controller.pm:233
|
||||
#: lib/Lutim/Controller/Image.pm:108 lib/Lutim/Controller/Image.pm:202 lib/Lutim/Controller/Image.pm:273
|
||||
msgid "Unable to find the image %1."
|
||||
msgstr "Unable to find the image %1."
|
||||
|
||||
#: lib/Lutim/Controller.pm:529 lib/Lutim/Controller.pm:574 lib/Lutim/Controller.pm:616 lib/Lutim/Controller.pm:659 lib/Lutim/Controller.pm:671 lib/Lutim/Controller.pm:682 lib/Lutim/Controller.pm:707 lib/Lutim/Plugin/Helpers.pm:57
|
||||
#: lib/Lutim/Controller/Image.pm:617 lib/Lutim/Controller/Image.pm:662 lib/Lutim/Controller/Image.pm:703 lib/Lutim/Controller/Image.pm:746 lib/Lutim/Controller/Image.pm:758 lib/Lutim/Controller/Image.pm:769 lib/Lutim/Controller/Image.pm:796 lib/Lutim/Plugin/Helpers.pm:89
|
||||
msgid "Unable to find the image: it has been deleted."
|
||||
msgstr "Unable to find the image: it has been deleted."
|
||||
|
||||
#: lib/Lutim/Controller.pm:105
|
||||
#: lib/Lutim/Controller/Image.pm:145
|
||||
msgid "Unable to get counter"
|
||||
msgstr ""
|
||||
msgstr "Unable to get counter"
|
||||
|
||||
#: themes/default/templates/about.html.ep:17
|
||||
msgid "Unlike many image sharing services, you don't give us rights on uploaded images."
|
||||
msgstr "Unlike many image sharing services, you don't give us rights on uploaded images."
|
||||
|
||||
#: themes/default/templates/index.html.ep:162 themes/default/templates/index.html.ep:201
|
||||
#: themes/default/templates/index.html.ep:187 themes/default/templates/index.html.ep:239
|
||||
msgid "Upload an image with its URL"
|
||||
msgstr "Upload an image with its URL"
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:54
|
||||
#: themes/default/templates/myfiles.html.ep:119
|
||||
msgid "Uploaded at"
|
||||
msgstr ""
|
||||
msgstr "Uploaded at"
|
||||
|
||||
#: themes/default/templates/stats.html.ep:6
|
||||
msgid "Uploaded files by days"
|
||||
msgstr "Uploaded files by days"
|
||||
|
||||
#. ($c->app->config('contact')
|
||||
#: lib/Lutim/Plugin/Helpers.pm:152
|
||||
#: lib/Lutim/Plugin/Helpers.pm:222
|
||||
msgid "Uploading is currently disabled, please try later or contact the administrator (%1)."
|
||||
msgstr "Uploading is currently disabled, please try later or contact the administrator (%1)."
|
||||
|
||||
#: themes/default/templates/index.html.ep:65 themes/default/templates/index.html.ep:67 themes/default/templates/myfiles.html.ep:51 themes/default/templates/partial/lutim.js.ep:71 themes/default/templates/partial/lutim.js.ep:75
|
||||
#: themes/default/templates/index.html.ep:77 themes/default/templates/index.html.ep:79 themes/default/templates/myfiles.html.ep:116 themes/default/templates/partial/lutim.js.ep:72 themes/default/templates/partial/lutim.js.ep:76
|
||||
msgid "View link"
|
||||
msgstr "View link"
|
||||
|
||||
@@ -444,42 +522,62 @@ msgstr "Who owns rights on images uploaded on Lutim?"
|
||||
msgid "Yes, it is! On the other side, for legal reasons, your IP address will be stored when you send an image. Don't panic, it is normally the case of all sites on which you send files!"
|
||||
msgstr "Yes, it is! On the other side, for legal reasons, your IP address will be stored when you send an image. Don't panic, it is normally the case of all sites on which you send files!"
|
||||
|
||||
#:
|
||||
msgid "Yes, it is! On the other side, if you want to support the developer, you can do it via <a href=\"https://flattr.com/submit/auto?user_id=_SKy_&url=%1&title=Lutim&category=software\">Flattr</a> or with <a href=\"bitcoin:1JCEtmx9pyzWfitMQj2pKAk8GNgyix7RmA?label=lutim\">BitCoin</a>."
|
||||
msgstr "Yes, it is! On the other side, if you want to support the developer, you can do it via <a href=\"https://flattr.com/submit/auto?user_id=_SKy_&url=%1&title=Lutim&category=software\">Flattr</a> or with <a href=\"bitcoin:1JCEtmx9pyzWfitMQj2pKAk8GNgyix7RmA?label=lutim\">BitCoin</a>."
|
||||
|
||||
#: themes/default/templates/about.html.ep:10
|
||||
msgid "Yes, it is! On the other side, if you want to support the developer, you can do it via <a href=\"https://www.tipeee.com/fiat-tux\">Tipeee</a> or via <a href=\"https://liberapay.com/sky/\">Liberapay</a>."
|
||||
msgstr ""
|
||||
msgstr "Yes, it is! On the other side, if you want to support the developer, you can do it via <a href=\"https://www.tipeee.com/fiat-tux\">Tipeee</a> or via <a href=\"https://liberapay.com/sky/\">Liberapay</a>."
|
||||
|
||||
#: themes/default/templates/zip.html.ep:6
|
||||
msgid "You asked to download a zip archive for too much files."
|
||||
msgstr ""
|
||||
msgstr "You asked to download a zip archive for too much files."
|
||||
|
||||
#: themes/default/templates/about.html.ep:8
|
||||
msgid "You can, optionally, request that the image(s) posted on Lutim to be deleted at first view (or download) or after the delay selected from those proposed."
|
||||
msgstr "You can, optionally, request that the image(s) posted on Lutim to be deleted at first view (or download) or after the delay selected from those proposed."
|
||||
|
||||
#: lib/Lutim/Controller/Authent.pm:27
|
||||
msgid "You have been successfully logged in."
|
||||
msgstr "You have been successfully logged in."
|
||||
|
||||
#: lib/Lutim/Controller/Authent.pm:66 themes/default/templates/logout.html.ep:3
|
||||
msgid "You have been successfully logged out."
|
||||
msgstr "You have been successfully logged out."
|
||||
|
||||
#: themes/default/templates/gallery.html.ep:31
|
||||
msgid "Zoom in/out"
|
||||
msgstr "Zoom in/out"
|
||||
|
||||
#: themes/default/templates/about.html.ep:27
|
||||
msgid "and on"
|
||||
msgstr "and on"
|
||||
|
||||
#: themes/default/templates/about.html.ep:40
|
||||
msgid "arabic translation"
|
||||
msgstr "arabic translation"
|
||||
|
||||
#: themes/default/templates/about.html.ep:27
|
||||
msgid "core developer"
|
||||
msgstr "core developer"
|
||||
|
||||
#: lib/Lutim.pm:190 lib/Lutim/Command/cron/stats.pm:147 lib/Lutim/Command/cron/stats.pm:158 lib/Lutim/Command/cron/stats.pm:175 themes/default/templates/index.html.ep:3 themes/default/templates/raw.html.ep:17 themes/default/templates/raw.html.ep:34 themes/default/templates/raw.html.ep:6
|
||||
#: lib/Lutim.pm:340 lib/Lutim/Command/cron/stats.pm:154 lib/Lutim/Command/cron/stats.pm:168 lib/Lutim/Command/cron/stats.pm:185 themes/default/templates/index.html.ep:3 themes/default/templates/myfiles.html.ep:3 themes/default/templates/partial/raw.js.ep:21 themes/default/templates/partial/raw.js.ep:4 themes/default/templates/raw.html.ep:6
|
||||
msgid "no time limit"
|
||||
msgstr "no time limit"
|
||||
|
||||
#: themes/default/templates/about.html.ep:38
|
||||
msgid "occitan translation"
|
||||
msgstr ""
|
||||
msgstr "occitan translation"
|
||||
|
||||
#: themes/default/templates/about.html.ep:27
|
||||
msgid "on"
|
||||
msgstr "on"
|
||||
|
||||
#: themes/default/templates/about.html.ep:39
|
||||
msgid "paste image to upload ability"
|
||||
msgstr "paste image to upload ability"
|
||||
|
||||
#: themes/default/templates/about.html.ep:41
|
||||
msgid "russian translation"
|
||||
msgstr "russian translation"
|
||||
|
||||
#: themes/default/templates/about.html.ep:36
|
||||
msgid "spanish translation"
|
||||
msgstr "spanish translation"
|
||||
|
||||
@@ -5,24 +5,28 @@
|
||||
# Translators:
|
||||
# Translators:
|
||||
# Luc Didry <luc@didry.org>, 2015
|
||||
# Luc Didry <luc@framasoft.org>, 2018. #zanata
|
||||
# Luc Didry <luc@framasoft.org>, 2019. #zanata
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Lutim\n"
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"PO-Revision-Date: 2015-09-17 22:00+0000\n"
|
||||
"Last-Translator: Luc Didry <luc@didry.org>\n"
|
||||
"Language-Team: Spanish (http://www.transifex.com/fiat-tux/lutim/language/es/)\n"
|
||||
"PO-Revision-Date: 2021-04-24 11:14+0000\n"
|
||||
"Last-Translator: Berto Te <ateira@3fpj.com>\n"
|
||||
"Language-Team: Spanish <https://weblate.framasoft.org/projects/lutim/"
|
||||
"default-theme/es/>\n"
|
||||
"Language: es\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: es\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
"X-Generator: Weblate 4.5.1\n"
|
||||
|
||||
#. (7)
|
||||
#. (30)
|
||||
#. ($delay)
|
||||
#. (config('max_delay')
|
||||
#: lib/Lutim/Command/cron/stats.pm:149 lib/Lutim/Command/cron/stats.pm:150 lib/Lutim/Command/cron/stats.pm:160 lib/Lutim/Command/cron/stats.pm:161 lib/Lutim/Command/cron/stats.pm:177 lib/Lutim/Command/cron/stats.pm:178 themes/default/templates/partial/for_my_delay.html.ep:12 themes/default/templates/partial/for_my_delay.html.ep:13 themes/default/templates/partial/for_my_delay.html.ep:3 themes/default/templates/partial/lutim.js.ep:138 themes/default/templates/partial/lutim.js.ep:147 themes/default/templates/partial/lutim.js.ep:148 themes/default/templates/raw.html.ep:19 themes/default/templates/raw.html.ep:20 themes/default/templates/raw.html.ep:36 themes/default/templates/raw.html.ep:37 themes/default/templates/raw.html.ep:8 themes/default/templates/raw.html.ep:9
|
||||
#: lib/Lutim/Command/cron/stats.pm:159 lib/Lutim/Command/cron/stats.pm:160 lib/Lutim/Command/cron/stats.pm:173 lib/Lutim/Command/cron/stats.pm:174 lib/Lutim/Command/cron/stats.pm:190 lib/Lutim/Command/cron/stats.pm:191 themes/default/templates/myfiles.html.ep:24 themes/default/templates/myfiles.html.ep:33 themes/default/templates/myfiles.html.ep:34 themes/default/templates/partial/for_my_delay.html.ep:13 themes/default/templates/partial/for_my_delay.html.ep:14 themes/default/templates/partial/for_my_delay.html.ep:4 themes/default/templates/partial/lutim.js.ep:140 themes/default/templates/partial/lutim.js.ep:149 themes/default/templates/partial/lutim.js.ep:150 themes/default/templates/partial/raw.js.ep:23 themes/default/templates/partial/raw.js.ep:24 themes/default/templates/partial/raw.js.ep:6 themes/default/templates/partial/raw.js.ep:7 themes/default/templates/raw.html.ep:8 themes/default/templates/raw.html.ep:9
|
||||
msgid "%1 days"
|
||||
msgstr "%1 días"
|
||||
|
||||
@@ -31,107 +35,131 @@ msgstr "%1 días"
|
||||
msgid "%1 sent images on this instance from beginning."
|
||||
msgstr "%1 imágenes enviadas a esta instancia desde el inicio."
|
||||
|
||||
#: themes/default/templates/index.html.ep:190
|
||||
#: themes/default/templates/index.html.ep:208
|
||||
msgid "-or-"
|
||||
msgstr "-o-"
|
||||
|
||||
#: lib/Lutim.pm:192 lib/Lutim/Command/cron/stats.pm:151 lib/Lutim/Command/cron/stats.pm:162 lib/Lutim/Command/cron/stats.pm:179 themes/default/templates/index.html.ep:5 themes/default/templates/raw.html.ep:10 themes/default/templates/raw.html.ep:21 themes/default/templates/raw.html.ep:38
|
||||
#: lib/Lutim.pm:350 lib/Lutim/Command/cron/stats.pm:161 lib/Lutim/Command/cron/stats.pm:175 lib/Lutim/Command/cron/stats.pm:192 themes/default/templates/index.html.ep:5 themes/default/templates/myfiles.html.ep:5 themes/default/templates/partial/raw.js.ep:25 themes/default/templates/partial/raw.js.ep:8 themes/default/templates/raw.html.ep:10
|
||||
msgid "1 year"
|
||||
msgstr "1 año"
|
||||
|
||||
#: lib/Lutim.pm:191 lib/Lutim/Command/cron/stats.pm:148 lib/Lutim/Command/cron/stats.pm:159 lib/Lutim/Command/cron/stats.pm:176 themes/default/templates/index.html.ep:4 themes/default/templates/partial/for_my_delay.html.ep:12 themes/default/templates/partial/lutim.js.ep:147 themes/default/templates/raw.html.ep:18 themes/default/templates/raw.html.ep:35 themes/default/templates/raw.html.ep:7
|
||||
#: lib/Lutim.pm:349 lib/Lutim/Command/cron/stats.pm:158 lib/Lutim/Command/cron/stats.pm:172 lib/Lutim/Command/cron/stats.pm:189 themes/default/templates/index.html.ep:4 themes/default/templates/myfiles.html.ep:33 themes/default/templates/myfiles.html.ep:4 themes/default/templates/partial/for_my_delay.html.ep:13 themes/default/templates/partial/lutim.js.ep:149 themes/default/templates/partial/raw.js.ep:22 themes/default/templates/partial/raw.js.ep:5 themes/default/templates/raw.html.ep:7
|
||||
msgid "24 hours"
|
||||
msgstr "24 horas"
|
||||
|
||||
#: themes/default/templates/partial/myfiles.js.ep:57
|
||||
#: themes/default/templates/partial/myfiles.js.ep:180
|
||||
msgid ": Error while trying to get the counter."
|
||||
msgstr ": Error al intentar obtener el contador."
|
||||
|
||||
#: lib/Lutim/Command/cron/stats.pm:144 themes/default/templates/raw.html.ep:3
|
||||
msgid "Active images"
|
||||
msgstr ""
|
||||
#: themes/default/templates/partial/navbar.html.ep:77
|
||||
msgid "About"
|
||||
msgstr "Acerca de"
|
||||
|
||||
#: lib/Lutim/Controller.pm:288
|
||||
#: lib/Lutim/Command/cron/stats.pm:154 themes/default/templates/raw.html.ep:3
|
||||
msgid "Active images"
|
||||
msgstr "Imágenes activas"
|
||||
|
||||
#: lib/Lutim/Controller/Image.pm:328
|
||||
msgid "An error occured while downloading the image."
|
||||
msgstr "Error al intentar modificar la imagen."
|
||||
|
||||
#: themes/default/templates/zip.html.ep:2
|
||||
msgid "Archives download"
|
||||
msgstr ""
|
||||
msgstr "Descarga de archivos"
|
||||
|
||||
#: themes/default/templates/about.html.ep:41 themes/default/templates/myfiles.html.ep:64 themes/default/templates/stats.html.ep:25
|
||||
#: themes/default/templates/about.html.ep:44 themes/default/templates/myfiles.html.ep:135 themes/default/templates/stats.html.ep:25
|
||||
msgid "Back to homepage"
|
||||
msgstr "Volver a la página inicial"
|
||||
|
||||
#: themes/default/templates/index.html.ep:193 themes/default/templates/index.html.ep:194
|
||||
#: themes/default/templates/index.html.ep:211 themes/default/templates/index.html.ep:212
|
||||
msgid "Click to open the file browser"
|
||||
msgstr "Clic para abrir el explorador de archivos"
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:51
|
||||
msgid "Close"
|
||||
msgstr "Cerrar"
|
||||
|
||||
#: themes/default/templates/gallery.html.ep:29
|
||||
msgid "Close (Esc)"
|
||||
msgstr "Cerrar (Esc)"
|
||||
|
||||
#: themes/default/templates/about.html.ep:30
|
||||
msgid "Contributors"
|
||||
msgstr "Contribuidores"
|
||||
|
||||
#: themes/default/templates/partial/lutim.js.ep:214 themes/default/templates/partial/lutim.js.ep:268 themes/default/templates/partial/lutim.js.ep:346
|
||||
msgid "Copy all view links to clipboard"
|
||||
msgstr "Copiar todos los enlaces de visualización al portapapeles"
|
||||
#: themes/default/templates/partial/common.js.ep:113 themes/default/templates/partial/common.js.ep:93
|
||||
msgid "Copied to clipboard"
|
||||
msgstr "Copiado al portapapeles"
|
||||
|
||||
#: themes/default/templates/index.html.ep:18 themes/default/templates/index.html.ep:36 themes/default/templates/index.html.ep:69 themes/default/templates/index.html.ep:77 themes/default/templates/index.html.ep:85 themes/default/templates/index.html.ep:93 themes/default/templates/myfiles.html.ep:20 themes/default/templates/myfiles.html.ep:38 themes/default/templates/partial/common.js.ep:150 themes/default/templates/partial/lutim.js.ep:105 themes/default/templates/partial/lutim.js.ep:120 themes/default/templates/partial/lutim.js.ep:79 themes/default/templates/partial/lutim.js.ep:91
|
||||
#: themes/default/templates/partial/lutim.js.ep:215 themes/default/templates/partial/lutim.js.ep:278 themes/default/templates/partial/lutim.js.ep:364
|
||||
msgid "Copy all view links to clipboard"
|
||||
msgstr "Copiar todos los enlaces de visualización al portapapeles"
|
||||
|
||||
#: themes/default/templates/index.html.ep:103 themes/default/templates/index.html.ep:111 themes/default/templates/index.html.ep:18 themes/default/templates/index.html.ep:36 themes/default/templates/index.html.ep:54 themes/default/templates/index.html.ep:87 themes/default/templates/index.html.ep:95 themes/default/templates/myfiles.html.ep:104 themes/default/templates/myfiles.html.ep:68 themes/default/templates/myfiles.html.ep:86 themes/default/templates/partial/common.js.ep:186 themes/default/templates/partial/lutim.js.ep:106 themes/default/templates/partial/lutim.js.ep:121 themes/default/templates/partial/lutim.js.ep:80 themes/default/templates/partial/lutim.js.ep:92 themes/default/templates/partial/myfiles.js.ep:142
|
||||
msgid "Copy to clipboard"
|
||||
msgstr "Copiar al portapapeles"
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:52
|
||||
#: themes/default/templates/myfiles.html.ep:123
|
||||
msgid "Counter"
|
||||
msgstr "Contador"
|
||||
|
||||
#: themes/default/templates/stats.html.ep:18
|
||||
msgid "Delay repartition chart for disabled images"
|
||||
msgstr ""
|
||||
msgstr "Tabla de reparto de retardos para imágenes deshabilitadas"
|
||||
|
||||
#: themes/default/templates/stats.html.ep:15
|
||||
msgid "Delay repartition chart for enabled images"
|
||||
msgstr ""
|
||||
msgstr "Tabla de reparto de retardos para imágenes habilitadas"
|
||||
|
||||
#: themes/default/templates/index.html.ep:115 themes/default/templates/index.html.ep:147 themes/default/templates/index.html.ep:178 themes/default/templates/myfiles.html.ep:53 themes/default/templates/partial/lutim.js.ep:159
|
||||
#: themes/default/templates/index.html.ep:133 themes/default/templates/index.html.ep:165 themes/default/templates/index.html.ep:196 themes/default/templates/myfiles.html.ep:124 themes/default/templates/myfiles.html.ep:45 themes/default/templates/partial/lutim.js.ep:161
|
||||
msgid "Delete at first view?"
|
||||
msgstr "¿Borrar en la primera vista?"
|
||||
|
||||
#: lib/Lutim/Command/cron/stats.pm:145 themes/default/templates/raw.html.ep:4
|
||||
#: lib/Lutim/Command/cron/stats.pm:155 themes/default/templates/raw.html.ep:4
|
||||
msgid "Deleted images"
|
||||
msgstr ""
|
||||
msgstr "Imágenes borradas"
|
||||
|
||||
#: lib/Lutim/Command/cron/stats.pm:146 themes/default/templates/raw.html.ep:5
|
||||
#: lib/Lutim/Command/cron/stats.pm:156 themes/default/templates/raw.html.ep:5
|
||||
msgid "Deleted images in 30 days"
|
||||
msgstr ""
|
||||
msgstr "Imágenes borradas en 30 días"
|
||||
|
||||
#: themes/default/templates/index.html.ep:98 themes/default/templates/myfiles.html.ep:56 themes/default/templates/partial/common.js.ep:142 themes/default/templates/partial/common.js.ep:145
|
||||
#: themes/default/templates/index.html.ep:116 themes/default/templates/myfiles.html.ep:127 themes/default/templates/partial/common.js.ep:178 themes/default/templates/partial/common.js.ep:181
|
||||
msgid "Deletion link"
|
||||
msgstr "Enlace para borrar"
|
||||
|
||||
#: themes/default/templates/gallery.html.ep:6
|
||||
#: themes/default/templates/gallery.html.ep:10
|
||||
msgid "Download all images"
|
||||
msgstr "Descargar todas las imágenes"
|
||||
|
||||
#: themes/default/templates/index.html.ep:81 themes/default/templates/index.html.ep:83 themes/default/templates/partial/lutim.js.ep:101 themes/default/templates/partial/lutim.js.ep:97
|
||||
#: themes/default/templates/index.html.ep:101 themes/default/templates/index.html.ep:99 themes/default/templates/partial/lutim.js.ep:102 themes/default/templates/partial/lutim.js.ep:98
|
||||
msgid "Download link"
|
||||
msgstr "Enlace de descarga"
|
||||
|
||||
#: themes/default/templates/index.html.ep:28 themes/default/templates/index.html.ep:31 themes/default/templates/myfiles.html.ep:30 themes/default/templates/myfiles.html.ep:33
|
||||
#: themes/default/templates/index.html.ep:28 themes/default/templates/index.html.ep:31 themes/default/templates/myfiles.html.ep:78 themes/default/templates/myfiles.html.ep:81
|
||||
msgid "Download zip link"
|
||||
msgstr "Enlace de descarga del archivo de las imágenes"
|
||||
|
||||
#: themes/default/templates/index.html.ep:189
|
||||
#: themes/default/templates/index.html.ep:207
|
||||
msgid "Drag & drop images here"
|
||||
msgstr "Arrastre y suelte imágenes aquí"
|
||||
|
||||
#: themes/default/templates/about.html.ep:7
|
||||
msgid "Drag and drop an image in the appropriate area or use the traditional way to send files and Lutim will provide you four URLs. One to view the image, an other to directly download it, one you can use on social networks and a last to delete the image when you want."
|
||||
msgstr "Arrastre y suelte una imagen en el área apropiada, o use el método tradicional para enviar ficheros, y Lutim proporcionará cuatro URLs. Una para ver la imagen, otra para descargarla directamente, una que upede usar en redes sociales, y una última para borrar la imagen cuando lo desee."
|
||||
msgid ""
|
||||
"Drag and drop an image in the appropriate area or use the traditional way to "
|
||||
"send files and Lutim will provide you four URLs. One to view the image, an "
|
||||
"other to directly download it, one you can use on social networks and a last "
|
||||
"to delete the image when you want."
|
||||
msgstr ""
|
||||
"Arrastre y suelte una imagen en el área apropiada, o use el método "
|
||||
"tradicional para enviar ficheros, y Lutim proporcionará cuatro URLs. Una "
|
||||
"para ver la imagen, otra para descargarla directamente, una que upede usar "
|
||||
"en redes sociales, y una última para borrar la imagen cuando lo desee."
|
||||
|
||||
#: themes/default/templates/index.html.ep:150 themes/default/templates/index.html.ep:181
|
||||
#: themes/default/templates/index.html.ep:168 themes/default/templates/index.html.ep:199
|
||||
msgid "Encrypt the image (Lutim does not keep the key)."
|
||||
msgstr "Las imágenes se cifran en el servidor (Lutim no guarda la clave)."
|
||||
|
||||
#: themes/default/templates/partial/lutim.js.ep:44
|
||||
#: themes/default/templates/partial/lutim.js.ep:45 themes/default/templates/partial/myfiles.js.ep:113
|
||||
msgid "Error while trying to modify the image."
|
||||
msgstr "Error al intentar modificar la imagen."
|
||||
|
||||
@@ -139,31 +167,39 @@ msgstr "Error al intentar modificar la imagen."
|
||||
msgid "Evolution of total files"
|
||||
msgstr "Evolución de archivos en total"
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:55
|
||||
#: themes/default/templates/myfiles.html.ep:126
|
||||
msgid "Expires at"
|
||||
msgstr "Expira"
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:50
|
||||
#: themes/default/templates/myfiles.html.ep:112
|
||||
msgid "Export localStorage data"
|
||||
msgstr "Exportar datos de almacenamiento local"
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:121
|
||||
msgid "File name"
|
||||
msgstr "Nombre de archivo"
|
||||
|
||||
#: themes/default/templates/about.html.ep:24
|
||||
msgid "For more details, see the <a href=\"https://framagit.org/luc/lutim\">homepage of the project</a>."
|
||||
msgstr "Para más detalles, vea la <a href=\"https://framagit.org/luc/lutim\">página del proyecto</a>."
|
||||
msgid ""
|
||||
"For more details, see the <a href=\"https://framagit.org/luc/"
|
||||
"lutim\">homepage of the project</a>."
|
||||
msgstr ""
|
||||
"Para más detalles, vea la <a href=\"https://framagit.org/luc/lutim\">página "
|
||||
"del proyecto</a>."
|
||||
|
||||
#: themes/default/templates/layouts/default.html.ep:55
|
||||
#: themes/default/templates/partial/navbar.html.ep:80
|
||||
msgid "Fork me!"
|
||||
msgstr "¡Clóname!"
|
||||
|
||||
#: themes/default/templates/index.html.ep:10 themes/default/templates/index.html.ep:13 themes/default/templates/myfiles.html.ep:12 themes/default/templates/myfiles.html.ep:15
|
||||
#: themes/default/templates/index.html.ep:10 themes/default/templates/index.html.ep:13 themes/default/templates/myfiles.html.ep:60 themes/default/templates/myfiles.html.ep:63
|
||||
msgid "Gallery link"
|
||||
msgstr "Enlace a la galería"
|
||||
|
||||
#: themes/default/templates/partial/common.js.ep:104 themes/default/templates/partial/common.js.ep:87
|
||||
#: themes/default/templates/partial/common.js.ep:116 themes/default/templates/partial/common.js.ep:134
|
||||
msgid "Hit Ctrl+C, then Enter to copy the short link"
|
||||
msgstr "Presione Ctrl + C, entonces Ingresar para copiar el enlace"
|
||||
|
||||
#: themes/default/templates/layouts/default.html.ep:50
|
||||
#: themes/default/templates/layouts/default.html.ep:47
|
||||
msgid "Homepage"
|
||||
msgstr "Página inicial"
|
||||
|
||||
@@ -180,32 +216,44 @@ msgid "How to report an image?"
|
||||
msgstr "¿Cómo informar sobre una imagen?"
|
||||
|
||||
#: themes/default/templates/about.html.ep:14
|
||||
msgid "If the files are deleted if you ask it while posting it, their SHA512 footprint are retained."
|
||||
msgstr "Si los ficheros se borran por haberlo solicitado al enviarlos, se retiene su huella digital SHA512."
|
||||
msgid ""
|
||||
"If the files are deleted if you ask it while posting it, their SHA512 "
|
||||
"footprint are retained."
|
||||
msgstr ""
|
||||
"Si los ficheros se borran por haberlo solicitado al enviarlos, se retiene su "
|
||||
"huella digital SHA512."
|
||||
|
||||
#: themes/default/templates/index.html.ep:163 themes/default/templates/index.html.ep:203
|
||||
#: themes/default/templates/index.html.ep:181 themes/default/templates/index.html.ep:221
|
||||
msgid "Image URL"
|
||||
msgstr "URL de la imagen"
|
||||
|
||||
#: lib/Lutim/Command/cron/stats.pm:143 themes/default/templates/raw.html.ep:2
|
||||
#: lib/Lutim/Command/cron/stats.pm:153 themes/default/templates/raw.html.ep:2
|
||||
msgid "Image delay"
|
||||
msgstr ""
|
||||
msgstr "Retardo de imagen"
|
||||
|
||||
#: lib/Lutim/Controller.pm:710
|
||||
#: themes/default/templates/partial/common.js.ep:157
|
||||
msgid "Image deleted"
|
||||
msgstr "Imagen eliminada"
|
||||
|
||||
#: lib/Lutim/Controller/Image.pm:756
|
||||
msgid "Image not found."
|
||||
msgstr "Imagen no encontrada."
|
||||
|
||||
#: themes/default/templates/layouts/default.html.ep:54
|
||||
#: themes/default/templates/myfiles.html.ep:113
|
||||
msgid "Import localStorage data"
|
||||
msgstr "Importar datos de almacenamiento local"
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:69
|
||||
msgid "Informations"
|
||||
msgstr "Informaciones"
|
||||
|
||||
#: themes/default/templates/layouts/default.html.ep:62
|
||||
#: themes/default/templates/partial/navbar.html.ep:25
|
||||
msgid "Install webapp"
|
||||
msgstr "Instalar webapp"
|
||||
|
||||
#: themes/default/templates/layouts/default.html.ep:61
|
||||
#: themes/default/templates/partial/navbar.html.ep:21
|
||||
msgid "Instance's statistics"
|
||||
msgstr ""
|
||||
msgstr "Estadísticas de la instancia"
|
||||
|
||||
#: themes/default/templates/about.html.ep:11
|
||||
msgid "Is it really anonymous?"
|
||||
@@ -216,136 +264,222 @@ msgid "Is it really free (as in free beer)?"
|
||||
msgstr "¿Es realmente gratis?"
|
||||
|
||||
#: themes/default/templates/about.html.ep:21
|
||||
msgid "Juste like you pronounce the French word <a href=\"https://fr.wikipedia.org/wiki/Lutin\">lutin</a> (/ly.tɛ̃/)."
|
||||
msgstr "Tal y como se pronuncia la palabra francesa <a href=\"https://fr.wikipedia.org/wiki/Lutin\">lutin</a> (/ly.tɛ̃/)."
|
||||
msgid ""
|
||||
"Juste like you pronounce the French word <a href=\"https://fr.wikipedia.org/"
|
||||
"wiki/Lutin\">lutin</a> (/ly.tɛ̃/)."
|
||||
msgstr ""
|
||||
"Tal y como se pronuncia la palabra francesa <a href=\"https://fr.wikipedia."
|
||||
"org/wiki/Lutin\">lutin</a> (/ly.tɛ̃/)."
|
||||
|
||||
#: themes/default/templates/index.html.ep:153 themes/default/templates/index.html.ep:184
|
||||
#: themes/default/templates/index.html.ep:171 themes/default/templates/index.html.ep:202
|
||||
msgid "Keep EXIF tags"
|
||||
msgstr "Mantener las etiquetas EXIF"
|
||||
|
||||
#: themes/default/templates/index.html.ep:118 themes/default/templates/index.html.ep:166 themes/default/templates/index.html.ep:206 themes/default/templates/partial/lutim.js.ep:163
|
||||
#: themes/default/templates/partial/navbar.html.ep:43
|
||||
msgid "Language"
|
||||
msgstr "Lengua"
|
||||
|
||||
#: themes/default/templates/index.html.ep:136 themes/default/templates/index.html.ep:184 themes/default/templates/index.html.ep:224 themes/default/templates/partial/lutim.js.ep:165
|
||||
msgid "Let's go!"
|
||||
msgstr "¡Vamos allá!"
|
||||
|
||||
#: themes/default/templates/layouts/default.html.ep:58
|
||||
msgid "Liberapay button"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/layouts/default.html.ep:53
|
||||
#: themes/default/templates/partial/navbar.html.ep:74
|
||||
msgid "License:"
|
||||
msgstr "Licencia:"
|
||||
|
||||
#: themes/default/templates/index.html.ep:89 themes/default/templates/index.html.ep:91 themes/default/templates/partial/lutim.js.ep:111 themes/default/templates/partial/lutim.js.ep:115
|
||||
#: themes/default/templates/index.html.ep:107 themes/default/templates/index.html.ep:109 themes/default/templates/partial/lutim.js.ep:112 themes/default/templates/partial/lutim.js.ep:116
|
||||
msgid "Link for share on social networks"
|
||||
msgstr "Enlace para compartir en redes sociales"
|
||||
|
||||
#: themes/default/templates/login.html.ep:8
|
||||
msgid "Login"
|
||||
msgstr "Login"
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:33
|
||||
msgid "Logout"
|
||||
msgstr "Salir"
|
||||
|
||||
#: themes/default/templates/zip.html.ep:7
|
||||
msgid "Lutim can't zip so many images at once, so it splitted your demand in multiple URLs."
|
||||
msgid ""
|
||||
"Lutim can't zip so many images at once, so it splitted your demand in "
|
||||
"multiple URLs."
|
||||
msgstr ""
|
||||
"Lutim no puede comprimir tantas imágenes a la vez, por lo que dividió tu "
|
||||
"solicitud en varias URL."
|
||||
|
||||
#: themes/default/templates/about.html.ep:4
|
||||
msgid "Lutim is a free (as in free beer) and anonymous image hosting service. It's also the name of the free (as in free speech) software which provides this service."
|
||||
msgstr "Lutim es un servicio de alojamiento de imágenes anónimo y gratuito. También es el nombre del software libre que proporciona este servicio."
|
||||
msgid ""
|
||||
"Lutim is a free (as in free beer) and anonymous image hosting service. It's "
|
||||
"also the name of the free (as in free speech) software which provides this "
|
||||
"service."
|
||||
msgstr ""
|
||||
"Lutim es un servicio de alojamiento de imágenes anónimo y gratuito. También "
|
||||
"es el nombre del software libre que proporciona este servicio."
|
||||
|
||||
#: themes/default/templates/about.html.ep:25
|
||||
msgid "Main developers"
|
||||
msgstr "Desarrolladores principales"
|
||||
|
||||
#: themes/default/templates/index.html.ep:73 themes/default/templates/index.html.ep:75 themes/default/templates/partial/lutim.js.ep:85 themes/default/templates/partial/lutim.js.ep:88
|
||||
#: themes/default/templates/index.html.ep:91 themes/default/templates/index.html.ep:93 themes/default/templates/partial/lutim.js.ep:86 themes/default/templates/partial/lutim.js.ep:89
|
||||
msgid "Markdown syntax"
|
||||
msgstr "Sintaxis de Markdown"
|
||||
|
||||
#: themes/default/templates/layouts/default.html.ep:60 themes/default/templates/myfiles.html.ep:2
|
||||
#: themes/default/templates/partial/myfiles.js.ep:149
|
||||
msgid "Modify expiration delay"
|
||||
msgstr "Modificar el retardo de expiración"
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:7 themes/default/templates/partial/navbar.html.ep:18
|
||||
msgid "My images"
|
||||
msgstr "Mis Imágenes"
|
||||
|
||||
#: themes/default/templates/partial/myfiles.js.ep:19
|
||||
#: themes/default/templates/gallery.html.ep:45
|
||||
msgid "Next (arrow right)"
|
||||
msgstr "Siguiente (flecha derecha)"
|
||||
|
||||
#: themes/default/templates/partial/myfiles.js.ep:105 themes/default/templates/partial/myfiles.js.ep:132
|
||||
msgid "No limit"
|
||||
msgstr "Sin fecha de caducidad"
|
||||
|
||||
#: themes/default/templates/index.html.ep:165 themes/default/templates/index.html.ep:198
|
||||
#: themes/default/templates/index.html.ep:183 themes/default/templates/index.html.ep:216
|
||||
msgid "Only images are allowed"
|
||||
msgstr "Sólo se admiten imágenes"
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:6
|
||||
msgid "Only the images sent with this browser will be listed here. The informations are stored in localStorage: if you delete your localStorage data, you'll loose this informations."
|
||||
msgstr "Sólo se enumeran aquí las imágenes enviadas con este navegador. Las informaciones se almacenan en localStorage: si elimina sus datos localStorage, perderás esta información."
|
||||
#: themes/default/templates/myfiles.html.ep:11
|
||||
msgid ""
|
||||
"Only the images sent with this browser will be listed here. The details are "
|
||||
"stored in localStorage: if you delete your localStorage data, you'll loose "
|
||||
"these details."
|
||||
msgstr ""
|
||||
"Sólo se enumeran aquí las imágenes enviadas con este navegador. Los detalles "
|
||||
"se almacenan en localStorage: si elimina sus datos localStorage, perderás "
|
||||
"estos detalles."
|
||||
|
||||
#: themes/default/templates/about.html.ep:16
|
||||
msgid "Only the uploader! (well, only if he's the only owner of the images' rights before the upload)"
|
||||
msgstr "¡Sólo el usuario! (bueno, sólo si él/ela es el único titular de los derechos de las imágenes antes de subirlas)"
|
||||
msgid ""
|
||||
"Only the uploader! (well, only if he's the only owner of the images' rights "
|
||||
"before the upload)"
|
||||
msgstr ""
|
||||
"¡Sólo el usuario! (bueno, sólo si él/ela es el único titular de los derechos "
|
||||
"de las imágenes antes de subirlas)"
|
||||
|
||||
#: themes/default/templates/login.html.ep:12
|
||||
msgid "Password"
|
||||
msgstr "Contraseña"
|
||||
|
||||
#: themes/default/templates/zip.html.ep:12
|
||||
msgid "Please click on each URL to download the different zip files."
|
||||
msgstr ""
|
||||
msgstr "Haga clic en cada URL para descargar los diferentes archivos zip."
|
||||
|
||||
#. (config('contact')
|
||||
#: themes/default/templates/about.html.ep:19
|
||||
msgid "Please contact the administrator: %1"
|
||||
msgstr "Por favor, contacte con el administrador: %1"
|
||||
|
||||
#: lib/Lutim/Controller/Authent.pm:36
|
||||
msgid "Please, check your credentials: unable to authenticate."
|
||||
msgstr "Por favor, verifique sus credenciales: no se puede autenticar."
|
||||
|
||||
#: themes/default/templates/gallery.html.ep:43
|
||||
msgid "Previous (arrow left)"
|
||||
msgstr "Anterior (flecha izquierda)"
|
||||
|
||||
#: themes/default/templates/index.html.ep:46 themes/default/templates/index.html.ep:49 themes/default/templates/myfiles.html.ep:96 themes/default/templates/myfiles.html.ep:99
|
||||
msgid "Random image link"
|
||||
msgstr "Enlace de imagen aleatoria"
|
||||
|
||||
#: themes/default/templates/stats.html.ep:22
|
||||
msgid "Raw stats"
|
||||
msgstr ""
|
||||
msgstr "Estadísticas sin procesar"
|
||||
|
||||
#: themes/default/templates/index.html.ep:158
|
||||
#: themes/default/templates/myfiles.html.ep:52
|
||||
msgid "Save changes"
|
||||
msgstr "Guardar los cambios"
|
||||
|
||||
#: themes/default/templates/index.html.ep:176
|
||||
msgid "Send an image"
|
||||
msgstr "Enviar una imagen"
|
||||
|
||||
#: themes/default/templates/partial/lutim.js.ep:20
|
||||
msgid "Share it!"
|
||||
msgstr "¡Compártelo!"
|
||||
#: themes/default/templates/login.html.ep:16 themes/default/templates/logout.html.ep:5 themes/default/templates/partial/navbar.html.ep:37
|
||||
msgid "Signin"
|
||||
msgstr "Acceder"
|
||||
|
||||
#: themes/default/templates/layouts/default.html.ep:56
|
||||
msgid "Share on Twitter"
|
||||
msgstr "Compartir en Twitter"
|
||||
|
||||
#: themes/default/templates/index.html.ep:133 themes/default/templates/partial/lutim.js.ep:174
|
||||
#: themes/default/templates/index.html.ep:151 themes/default/templates/partial/gallery.js.ep:211 themes/default/templates/partial/lutim.js.ep:176
|
||||
msgid "Something bad happened"
|
||||
msgstr "Algo malo ha pasado"
|
||||
|
||||
#. ($c->config('contact')
|
||||
#: lib/Lutim/Controller.pm:717
|
||||
msgid "Something went wrong when creating the zip file. Try again later or contact the administrator (%1)."
|
||||
msgstr "Algo malo ha pasado. Inténtelo de nuevo más tarde o contacte con el administrador (%1)."
|
||||
#: lib/Lutim/Controller/Image.pm:763
|
||||
msgid ""
|
||||
"Something went wrong when creating the zip file. Try again later or contact "
|
||||
"the administrator (%1)."
|
||||
msgstr ""
|
||||
"Algo malo ha pasado. Inténtelo de nuevo más tarde o contacte con el "
|
||||
"administrador (%1)."
|
||||
|
||||
#: themes/default/templates/layouts/default.html.ep:58
|
||||
#: themes/default/templates/partial/navbar.html.ep:55
|
||||
msgid "Support the author"
|
||||
msgstr "Apoya al autor"
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:63
|
||||
msgid "Support the author on Liberapay"
|
||||
msgstr ""
|
||||
msgstr "Apoya al autor en Liberapay"
|
||||
|
||||
#: themes/default/templates/layouts/default.html.ep:57
|
||||
#: themes/default/templates/partial/navbar.html.ep:60
|
||||
msgid "Support the author on Tipeee"
|
||||
msgstr ""
|
||||
msgstr "Apoya al autor en Tipeee"
|
||||
|
||||
#: themes/default/templates/about.html.ep:13
|
||||
msgid "The IP address of the image's sender is retained for a delay which depends of the administrator's choice (for the official instance, which is located in France, it's one year)."
|
||||
msgstr "La dirección IP del remitente de la imagen se retiene durante un tiempo, que depende de lo que elija el administrador (para la instancia oficial, que está localizada en Francia, es un año)."
|
||||
msgid ""
|
||||
"The IP address of the image's sender is retained for a delay which depends "
|
||||
"of the administrator's choice (for the official instance, which is located "
|
||||
"in France, it's one year)."
|
||||
msgstr ""
|
||||
"La dirección IP del remitente de la imagen se retiene durante un tiempo, que "
|
||||
"depende de lo que elija el administrador (para la instancia oficial, que "
|
||||
"está localizada en Francia, es un año)."
|
||||
|
||||
#: themes/default/templates/about.html.ep:23
|
||||
msgid "The Lutim software is a <a href=\"http://en.wikipedia.org/wiki/Free_software\">free software</a>, which allows you to download and install it on you own server. Have a look at the <a href=\"https://www.gnu.org/licenses/agpl-3.0.html\">AGPL</a> to see what you can do."
|
||||
msgstr "El software Lutim es <a href=\"http://es.wikipedia.org/wiki/Software_libre\">software libre</a>, lo que le permite descargarlo e instalarlo en su propio servidor. Eche un vistazo a la licencia <a href=\"https://www.gnu.org/licenses/agpl-3.0.html\">AGPL</a> para ver qué puede hacer."
|
||||
msgid ""
|
||||
"The Lutim software is a <a href=\"http://en.wikipedia.org/wiki/"
|
||||
"Free_software\">free software</a>, which allows you to download and install "
|
||||
"it on you own server. Have a look at the <a href=\"https://www.gnu.org/"
|
||||
"licenses/agpl-3.0.html\">AGPL</a> to see what you can do."
|
||||
msgstr ""
|
||||
"El software Lutim es <a href=\"http://es.wikipedia.org/wiki/"
|
||||
"Software_libre\">software libre</a>, lo que le permite descargarlo e "
|
||||
"instalarlo en su propio servidor. Eche un vistazo a la licencia <a href="
|
||||
"\"https://www.gnu.org/licenses/agpl-3.0.html\">AGPL</a> para ver qué puede "
|
||||
"hacer."
|
||||
|
||||
#: lib/Lutim/Controller.pm:307
|
||||
#: lib/Lutim/Controller/Image.pm:347
|
||||
msgid "The URL is not valid."
|
||||
msgstr "La URL no es válida."
|
||||
|
||||
#: themes/default/templates/zip.html.ep:16
|
||||
msgid "The automatic download process will open a tab in your browser for each link. You need to allow popups for Lutim."
|
||||
msgid ""
|
||||
"The automatic download process will open a tab in your browser for each link."
|
||||
" You need to allow popups for Lutim."
|
||||
msgstr ""
|
||||
"El proceso de descarga automática abrirá una pestaña en su navegador para "
|
||||
"cada enlace. Debe permitir ventanas emergentes para Lutim."
|
||||
|
||||
#: lib/Lutim/Controller.pm:120 lib/Lutim/Controller.pm:188
|
||||
#: themes/default/templates/partial/myfiles.js.ep:32
|
||||
msgid "The data has been successfully imported."
|
||||
msgstr "Los datos se han importado correctamente."
|
||||
|
||||
#: lib/Lutim/Controller/Image.pm:160 lib/Lutim/Controller/Image.pm:228
|
||||
msgid "The delete token is invalid."
|
||||
msgstr "El código de borrado no es válido."
|
||||
|
||||
#. ($upload->filename)
|
||||
#: lib/Lutim/Controller.pm:445
|
||||
#: lib/Lutim/Controller/Image.pm:488
|
||||
msgid "The file %1 is not an image."
|
||||
msgstr "El archivo %1 no es una imagen."
|
||||
|
||||
#. ($tx->res->max_message_size)
|
||||
#. ($c->req->max_message_size)
|
||||
#. (config('max_file_size')
|
||||
#: lib/Lutim/Controller.pm:271 lib/Lutim/Controller.pm:340 themes/default/templates/partial/lutim.js.ep:240
|
||||
#: lib/Lutim/Controller/Image.pm:311 lib/Lutim/Controller/Image.pm:380 themes/default/templates/partial/lutim.js.ep:249
|
||||
msgid "The file exceed the size limit (%1)"
|
||||
msgstr "El archivo supera el límite de tamaño (%1)"
|
||||
|
||||
@@ -354,66 +488,89 @@ msgid "The graph's datas are not updated in real-time."
|
||||
msgstr "Los datos del gráfico no se actualizan en tiempo real."
|
||||
|
||||
#. ($image->filename)
|
||||
#: lib/Lutim/Controller.pm:190
|
||||
#: lib/Lutim/Controller/Image.pm:230
|
||||
msgid "The image %1 has already been deleted."
|
||||
msgstr "La imagen %1 ya se ha borrado."
|
||||
|
||||
#. ($image->filename)
|
||||
#: lib/Lutim/Controller.pm:199 lib/Lutim/Controller.pm:204
|
||||
#: lib/Lutim/Controller/Image.pm:239 lib/Lutim/Controller/Image.pm:244
|
||||
msgid "The image %1 has been successfully deleted"
|
||||
msgstr "La imagen %1 se ha borrado correctamente"
|
||||
|
||||
#: lib/Lutim/Controller.pm:128
|
||||
msgid "The image's delay has been successfully modified"
|
||||
msgstr "Se ha modificado correctamente el tiempo de la imagen"
|
||||
|
||||
#: themes/default/templates/index.html.ep:45
|
||||
#: themes/default/templates/index.html.ep:63
|
||||
msgid "The images are encrypted on the server (Lutim does not keep the key)."
|
||||
msgstr "Las imágenes se cifran en el servidor (Lutim no guarda la clave)."
|
||||
|
||||
#: themes/default/templates/about.html.ep:5
|
||||
msgid "The images you post on Lutim can be stored indefinitely or be deleted at first view or after a delay selected from those proposed."
|
||||
msgstr "Puede, opcionalmente, solicitar que la imagen publicada en Lutim se elimine con la primera vista (o descarga) o tras un tiempo seleccionado de entre varios propuestos."
|
||||
msgid ""
|
||||
"The images you post on Lutim can be stored indefinitely or be deleted at "
|
||||
"first view or after a delay selected from those proposed."
|
||||
msgstr ""
|
||||
"Puede, opcionalmente, solicitar que la imagen publicada en Lutim se elimine "
|
||||
"con la primera vista (o descarga) o tras un tiempo seleccionado de entre "
|
||||
"varios propuestos."
|
||||
|
||||
#: lib/Lutim/Controller/Image.pm:168
|
||||
msgid "The image’s delay has been successfully modified"
|
||||
msgstr "Se ha modificado correctamente el tiempo de la imagen"
|
||||
|
||||
#: themes/default/templates/partial/gallery.js.ep:277
|
||||
msgid "There is XXXX image(s) in the gallery"
|
||||
msgstr "Hay imágenes XXXX en la galería"
|
||||
|
||||
#. ($c->config->{contact})
|
||||
#: lib/Lutim/Controller.pm:442
|
||||
#: lib/Lutim/Controller/Image.pm:485
|
||||
msgid "There is no more available URL. Retry or contact the administrator. %1"
|
||||
msgstr "No más URL disponibles. Inténtelo de nuevo o contacte con el administrador. %1"
|
||||
|
||||
#: themes/default/templates/layouts/default.html.ep:57
|
||||
msgid "Tipeee button"
|
||||
msgstr ""
|
||||
"No más URL disponibles. Inténtelo de nuevo o contacte con el administrador. "
|
||||
"%1"
|
||||
|
||||
#: lib/Lutim/Command/cron/stats.pm:152 themes/default/templates/raw.html.ep:11
|
||||
#: themes/default/templates/gallery.html.ep:30
|
||||
msgid "Toggle fullscreen"
|
||||
msgstr "Bascular la pantalla completa"
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:8
|
||||
msgid "Toggle navigation"
|
||||
msgstr "Extiender la barra de navegación"
|
||||
|
||||
#: lib/Lutim/Command/cron/stats.pm:162 themes/default/templates/raw.html.ep:11
|
||||
msgid "Total"
|
||||
msgstr ""
|
||||
msgstr "Total"
|
||||
|
||||
#: themes/default/templates/index.html.ep:60 themes/default/templates/partial/lutim.js.ep:14
|
||||
#: themes/default/templates/index.html.ep:78 themes/default/templates/partial/lutim.js.ep:17
|
||||
msgid "Tweet it!"
|
||||
msgstr "¡Tuitéalo!"
|
||||
|
||||
#: themes/default/templates/partial/common.js.ep:110 themes/default/templates/partial/common.js.ep:90
|
||||
msgid "Unable to copy to clipboard"
|
||||
msgstr "imposible copiar al portapapeles"
|
||||
|
||||
#. ($short)
|
||||
#: lib/Lutim/Controller.pm:162 lib/Lutim/Controller.pm:233
|
||||
#: lib/Lutim/Controller/Image.pm:108 lib/Lutim/Controller/Image.pm:202 lib/Lutim/Controller/Image.pm:273
|
||||
msgid "Unable to find the image %1."
|
||||
msgstr "No se ha podido encontrar la imagen %1."
|
||||
|
||||
#: lib/Lutim/Controller.pm:529 lib/Lutim/Controller.pm:574 lib/Lutim/Controller.pm:616 lib/Lutim/Controller.pm:659 lib/Lutim/Controller.pm:671 lib/Lutim/Controller.pm:682 lib/Lutim/Controller.pm:707 lib/Lutim/Plugin/Helpers.pm:57
|
||||
#: lib/Lutim/Controller/Image.pm:574 lib/Lutim/Controller/Image.pm:619 lib/Lutim/Controller/Image.pm:660 lib/Lutim/Controller/Image.pm:703 lib/Lutim/Controller/Image.pm:715 lib/Lutim/Controller/Image.pm:726 lib/Lutim/Controller/Image.pm:753 lib/Lutim/Plugin/Helpers.pm:88
|
||||
msgid "Unable to find the image: it has been deleted."
|
||||
msgstr "No se ha podido encontrar la imagen: ha sido borrada."
|
||||
|
||||
#: lib/Lutim/Controller.pm:105
|
||||
#: lib/Lutim/Controller/Image.pm:145
|
||||
msgid "Unable to get counter"
|
||||
msgstr "Imposible recuperar el contador"
|
||||
|
||||
#: themes/default/templates/about.html.ep:17
|
||||
msgid "Unlike many image sharing services, you don't give us rights on uploaded images."
|
||||
msgstr "A diferencia de muchos servicios de compartición de imágenes, usted no cede los derechos de las imágenes que sube."
|
||||
msgid ""
|
||||
"Unlike many image sharing services, you don't give us rights on uploaded "
|
||||
"images."
|
||||
msgstr ""
|
||||
"A diferencia de muchos servicios de compartición de imágenes, usted no cede "
|
||||
"los derechos de las imágenes que sube."
|
||||
|
||||
#: themes/default/templates/index.html.ep:162 themes/default/templates/index.html.ep:201
|
||||
#: themes/default/templates/index.html.ep:180 themes/default/templates/index.html.ep:219
|
||||
msgid "Upload an image with its URL"
|
||||
msgstr "Subir una imagen con la URL"
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:54
|
||||
#: themes/default/templates/myfiles.html.ep:125
|
||||
msgid "Uploaded at"
|
||||
msgstr "Enviado el"
|
||||
|
||||
@@ -422,11 +579,15 @@ msgid "Uploaded files by days"
|
||||
msgstr "Archivos enviados por día"
|
||||
|
||||
#. ($c->app->config('contact')
|
||||
#: lib/Lutim/Plugin/Helpers.pm:152
|
||||
msgid "Uploading is currently disabled, please try later or contact the administrator (%1)."
|
||||
msgstr "La carga está deshabilitada en estos momentos, por favor inténtelo más tarde o contacte con el administrador (%1)."
|
||||
#: lib/Lutim/Plugin/Helpers.pm:221
|
||||
msgid ""
|
||||
"Uploading is currently disabled, please try later or contact the "
|
||||
"administrator (%1)."
|
||||
msgstr ""
|
||||
"La carga está deshabilitada en estos momentos, por favor inténtelo más tarde "
|
||||
"o contacte con el administrador (%1)."
|
||||
|
||||
#: themes/default/templates/index.html.ep:65 themes/default/templates/index.html.ep:67 themes/default/templates/myfiles.html.ep:51 themes/default/templates/partial/lutim.js.ep:71 themes/default/templates/partial/lutim.js.ep:75
|
||||
#: themes/default/templates/index.html.ep:83 themes/default/templates/index.html.ep:85 themes/default/templates/myfiles.html.ep:122 themes/default/templates/partial/lutim.js.ep:72 themes/default/templates/partial/lutim.js.ep:76
|
||||
msgid "View link"
|
||||
msgstr "Enlace de visualización"
|
||||
|
||||
@@ -443,30 +604,63 @@ msgid "Who owns rights on images uploaded on Lutim?"
|
||||
msgstr "¿Quién posee los derechos de las imágenes que se suben a Lutim?"
|
||||
|
||||
#: themes/default/templates/about.html.ep:12
|
||||
msgid "Yes, it is! On the other side, for legal reasons, your IP address will be stored when you send an image. Don't panic, it is normally the case of all sites on which you send files!"
|
||||
msgstr "¡Sí, lo es! Por otro lado, por razones legales, se almacena la dirección IP cuando se envía una imagen. Que no cunda el pánico, ¡es el caso habitual para todos los sitios a los cuales se envían ficheros!"
|
||||
msgid ""
|
||||
"Yes, it is! On the other side, for legal reasons, your IP address will be "
|
||||
"stored when you send an image. Don't panic, it is normally the case of all "
|
||||
"sites on which you send files!"
|
||||
msgstr ""
|
||||
"¡Sí, lo es! Por otro lado, por razones legales, se almacena la dirección IP "
|
||||
"cuando se envía una imagen. Que no cunda el pánico, ¡es el caso habitual "
|
||||
"para todos los sitios a los cuales se envían ficheros!"
|
||||
|
||||
#: themes/default/templates/about.html.ep:10
|
||||
msgid "Yes, it is! On the other side, if you want to support the developer, you can do it via <a href=\"https://www.tipeee.com/fiat-tux\">Tipeee</a> or via <a href=\"https://liberapay.com/sky/\">Liberapay</a>."
|
||||
msgstr "¡Sí, lo es! Por otro lado, si quiere ayudar a apoyar al desarrollador, puede hacerlo vía <a href=\"https://www.tipeee.com/fiat-tux\">Tipeee</a> o con <a href=\"https://liberapay.com/sky/\">Liberapay</a>."
|
||||
msgid ""
|
||||
"Yes, it is! On the other side, if you want to support the developer, you can "
|
||||
"do it via <a href=\"https://www.tipeee.com/fiat-tux\">Tipeee</a> or via <a "
|
||||
"href=\"https://liberapay.com/sky/\">Liberapay</a>."
|
||||
msgstr ""
|
||||
"¡Sí, lo es! Por otro lado, si quiere ayudar a apoyar al desarrollador, puede "
|
||||
"hacerlo vía <a href=\"https://www.tipeee.com/fiat-tux\">Tipeee</a> o con <a "
|
||||
"href=\"https://liberapay.com/sky/\">Liberapay</a>."
|
||||
|
||||
#: themes/default/templates/zip.html.ep:6
|
||||
msgid "You asked to download a zip archive for too much files."
|
||||
msgstr ""
|
||||
msgstr "Solicitó descargar un archivo zip para demasiados archivos."
|
||||
|
||||
#: themes/default/templates/about.html.ep:8
|
||||
msgid "You can, optionally, request that the image(s) posted on Lutim to be deleted at first view (or download) or after the delay selected from those proposed."
|
||||
msgstr "Puede, opcionalmente, solicitar que la imagen publicada en Lutim se elimine con la primera vista (o descarga) o tras un tiempo seleccionado de entre varios propuestos."
|
||||
msgid ""
|
||||
"You can, optionally, request that the image(s) posted on Lutim to be deleted "
|
||||
"at first view (or download) or after the delay selected from those proposed."
|
||||
msgstr ""
|
||||
"Puede, opcionalmente, solicitar que la imagen publicada en Lutim se elimine "
|
||||
"con la primera vista (o descarga) o tras un tiempo seleccionado de entre "
|
||||
"varios propuestos."
|
||||
|
||||
#: lib/Lutim/Controller/Authent.pm:27
|
||||
msgid "You have been successfully logged in."
|
||||
msgstr "Te has identificado con éxito."
|
||||
|
||||
#: lib/Lutim/Controller/Authent.pm:66 themes/default/templates/logout.html.ep:3
|
||||
msgid "You have been successfully logged out."
|
||||
msgstr "Ha sido desconectado con éxito."
|
||||
|
||||
#: themes/default/templates/gallery.html.ep:31
|
||||
msgid "Zoom in/out"
|
||||
msgstr "Zoom aumentar / reducir"
|
||||
|
||||
#: themes/default/templates/about.html.ep:27
|
||||
msgid "and on"
|
||||
msgstr "y en"
|
||||
|
||||
#: themes/default/templates/about.html.ep:40
|
||||
msgid "arabic translation"
|
||||
msgstr "Traducción al árabe"
|
||||
|
||||
#: themes/default/templates/about.html.ep:27
|
||||
msgid "core developer"
|
||||
msgstr "desarrollador principal"
|
||||
|
||||
#: lib/Lutim.pm:190 lib/Lutim/Command/cron/stats.pm:147 lib/Lutim/Command/cron/stats.pm:158 lib/Lutim/Command/cron/stats.pm:175 themes/default/templates/index.html.ep:3 themes/default/templates/raw.html.ep:17 themes/default/templates/raw.html.ep:34 themes/default/templates/raw.html.ep:6
|
||||
#: lib/Lutim.pm:348 lib/Lutim/Command/cron/stats.pm:157 lib/Lutim/Command/cron/stats.pm:171 lib/Lutim/Command/cron/stats.pm:188 themes/default/templates/index.html.ep:3 themes/default/templates/myfiles.html.ep:3 themes/default/templates/partial/raw.js.ep:21 themes/default/templates/partial/raw.js.ep:4 themes/default/templates/raw.html.ep:6
|
||||
msgid "no time limit"
|
||||
msgstr "Sin tiempo límite"
|
||||
|
||||
@@ -478,6 +672,14 @@ msgstr "traducción al occitano"
|
||||
msgid "on"
|
||||
msgstr "en"
|
||||
|
||||
#: themes/default/templates/about.html.ep:39
|
||||
msgid "paste image to upload ability"
|
||||
msgstr "posibilidad de pegar una imagen para subirla (upload)"
|
||||
|
||||
#: themes/default/templates/about.html.ep:41
|
||||
msgid "russian translation"
|
||||
msgstr "traducción rusa"
|
||||
|
||||
#: themes/default/templates/about.html.ep:36
|
||||
msgid "spanish translation"
|
||||
msgstr "traducción al español"
|
||||
@@ -485,3 +687,21 @@ msgstr "traducción al español"
|
||||
#: themes/default/templates/about.html.ep:28
|
||||
msgid "webapp developer"
|
||||
msgstr "desarrollador de la webapp"
|
||||
|
||||
#: themes/default/templates/about.html.ep:24
|
||||
msgid "For more details, see the <a href=\"https://framagit.org/fiat-tux/hat-softwares/lutim\">homepage of the project</a>."
|
||||
msgstr ""
|
||||
"Para más detalles, vea la <a href=\"https://framagit.org/fiat-tux/"
|
||||
"hat-softwares/lutim\">página del proyecto</a>."
|
||||
|
||||
#: themes/default/templates/index.html.ep:171 themes/default/templates/index.html.ep:215
|
||||
msgid "Tiling watermark"
|
||||
msgstr "Marca de agua en mosaico"
|
||||
|
||||
#: themes/default/templates/index.html.ep:174 themes/default/templates/index.html.ep:218
|
||||
msgid "Single watermark"
|
||||
msgstr "Marca de agua única"
|
||||
|
||||
#: themes/default/templates/index.html.ep:177 themes/default/templates/index.html.ep:221
|
||||
msgid "No watermark"
|
||||
msgstr "Sin marca de agua"
|
||||
|
||||
@@ -5,24 +5,28 @@
|
||||
# Translators:
|
||||
# Translators:
|
||||
# Luc Didry <luc@didry.org>, 2015
|
||||
# Luc Didry <luc@framasoft.org>, 2018. #zanata
|
||||
# Luc Didry <luc@framasoft.org>, 2019. #zanata
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Lutim\n"
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"PO-Revision-Date: 2017-06-05 15:54+0000\n"
|
||||
"Last-Translator: Luc Didry <luc@didry.org>\n"
|
||||
"Language-Team: French (http://www.transifex.com/fiat-tux/lutim/language/fr/)\n"
|
||||
"PO-Revision-Date: 2020-04-04 10:08+0000\n"
|
||||
"Last-Translator: spf <spf@framasoft.org>\n"
|
||||
"Language-Team: French <https://weblate.framasoft.org/projects/lutim/"
|
||||
"default-theme/fr/>\n"
|
||||
"Language: fr\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: fr\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||
"Plural-Forms: nplurals=2; plural=n > 1;\n"
|
||||
"X-Generator: Weblate 3.11.2\n"
|
||||
|
||||
#. (7)
|
||||
#. (30)
|
||||
#. ($delay)
|
||||
#. (config('max_delay')
|
||||
#: lib/Lutim/Command/cron/stats.pm:149 lib/Lutim/Command/cron/stats.pm:150 lib/Lutim/Command/cron/stats.pm:160 lib/Lutim/Command/cron/stats.pm:161 lib/Lutim/Command/cron/stats.pm:177 lib/Lutim/Command/cron/stats.pm:178 themes/default/templates/partial/for_my_delay.html.ep:12 themes/default/templates/partial/for_my_delay.html.ep:13 themes/default/templates/partial/for_my_delay.html.ep:3 themes/default/templates/partial/lutim.js.ep:138 themes/default/templates/partial/lutim.js.ep:147 themes/default/templates/partial/lutim.js.ep:148 themes/default/templates/raw.html.ep:19 themes/default/templates/raw.html.ep:20 themes/default/templates/raw.html.ep:36 themes/default/templates/raw.html.ep:37 themes/default/templates/raw.html.ep:8 themes/default/templates/raw.html.ep:9
|
||||
#: lib/Lutim/Command/cron/stats.pm:159 lib/Lutim/Command/cron/stats.pm:160 lib/Lutim/Command/cron/stats.pm:173 lib/Lutim/Command/cron/stats.pm:174 lib/Lutim/Command/cron/stats.pm:190 lib/Lutim/Command/cron/stats.pm:191 themes/default/templates/myfiles.html.ep:24 themes/default/templates/myfiles.html.ep:33 themes/default/templates/myfiles.html.ep:34 themes/default/templates/partial/for_my_delay.html.ep:13 themes/default/templates/partial/for_my_delay.html.ep:14 themes/default/templates/partial/for_my_delay.html.ep:4 themes/default/templates/partial/lutim.js.ep:140 themes/default/templates/partial/lutim.js.ep:149 themes/default/templates/partial/lutim.js.ep:150 themes/default/templates/partial/raw.js.ep:23 themes/default/templates/partial/raw.js.ep:24 themes/default/templates/partial/raw.js.ep:6 themes/default/templates/partial/raw.js.ep:7 themes/default/templates/raw.html.ep:8 themes/default/templates/raw.html.ep:9
|
||||
msgid "%1 days"
|
||||
msgstr "%1 jours"
|
||||
|
||||
@@ -31,27 +35,31 @@ msgstr "%1 jours"
|
||||
msgid "%1 sent images on this instance from beginning."
|
||||
msgstr "%1 images envoyées sur cette instance depuis le début."
|
||||
|
||||
#: themes/default/templates/index.html.ep:190
|
||||
#: themes/default/templates/index.html.ep:208
|
||||
msgid "-or-"
|
||||
msgstr "-ou-"
|
||||
|
||||
#: lib/Lutim.pm:192 lib/Lutim/Command/cron/stats.pm:151 lib/Lutim/Command/cron/stats.pm:162 lib/Lutim/Command/cron/stats.pm:179 themes/default/templates/index.html.ep:5 themes/default/templates/raw.html.ep:10 themes/default/templates/raw.html.ep:21 themes/default/templates/raw.html.ep:38
|
||||
#: lib/Lutim.pm:350 lib/Lutim/Command/cron/stats.pm:161 lib/Lutim/Command/cron/stats.pm:175 lib/Lutim/Command/cron/stats.pm:192 themes/default/templates/index.html.ep:5 themes/default/templates/myfiles.html.ep:5 themes/default/templates/partial/raw.js.ep:25 themes/default/templates/partial/raw.js.ep:8 themes/default/templates/raw.html.ep:10
|
||||
msgid "1 year"
|
||||
msgstr "1 an"
|
||||
|
||||
#: lib/Lutim.pm:191 lib/Lutim/Command/cron/stats.pm:148 lib/Lutim/Command/cron/stats.pm:159 lib/Lutim/Command/cron/stats.pm:176 themes/default/templates/index.html.ep:4 themes/default/templates/partial/for_my_delay.html.ep:12 themes/default/templates/partial/lutim.js.ep:147 themes/default/templates/raw.html.ep:18 themes/default/templates/raw.html.ep:35 themes/default/templates/raw.html.ep:7
|
||||
#: lib/Lutim.pm:349 lib/Lutim/Command/cron/stats.pm:158 lib/Lutim/Command/cron/stats.pm:172 lib/Lutim/Command/cron/stats.pm:189 themes/default/templates/index.html.ep:4 themes/default/templates/myfiles.html.ep:33 themes/default/templates/myfiles.html.ep:4 themes/default/templates/partial/for_my_delay.html.ep:13 themes/default/templates/partial/lutim.js.ep:149 themes/default/templates/partial/raw.js.ep:22 themes/default/templates/partial/raw.js.ep:5 themes/default/templates/raw.html.ep:7
|
||||
msgid "24 hours"
|
||||
msgstr "24 heures"
|
||||
|
||||
#: themes/default/templates/partial/myfiles.js.ep:57
|
||||
#: themes/default/templates/partial/myfiles.js.ep:180
|
||||
msgid ": Error while trying to get the counter."
|
||||
msgstr " : Erreur en essayant de récupérer le compteur."
|
||||
|
||||
#: lib/Lutim/Command/cron/stats.pm:144 themes/default/templates/raw.html.ep:3
|
||||
#: themes/default/templates/partial/navbar.html.ep:77
|
||||
msgid "About"
|
||||
msgstr "À propos"
|
||||
|
||||
#: lib/Lutim/Command/cron/stats.pm:154 themes/default/templates/raw.html.ep:3
|
||||
msgid "Active images"
|
||||
msgstr "Images actives"
|
||||
|
||||
#: lib/Lutim/Controller.pm:288
|
||||
#: lib/Lutim/Controller/Image.pm:328
|
||||
msgid "An error occured while downloading the image."
|
||||
msgstr "Une erreur est survenue lors du téléchargement de l’image."
|
||||
|
||||
@@ -59,27 +67,39 @@ msgstr "Une erreur est survenue lors du téléchargement de l’image."
|
||||
msgid "Archives download"
|
||||
msgstr "Téléchargement d’archives"
|
||||
|
||||
#: themes/default/templates/about.html.ep:41 themes/default/templates/myfiles.html.ep:64 themes/default/templates/stats.html.ep:25
|
||||
#: themes/default/templates/about.html.ep:44 themes/default/templates/myfiles.html.ep:135 themes/default/templates/stats.html.ep:25
|
||||
msgid "Back to homepage"
|
||||
msgstr "Retour à la page d’accueil"
|
||||
|
||||
#: themes/default/templates/index.html.ep:193 themes/default/templates/index.html.ep:194
|
||||
#: themes/default/templates/index.html.ep:211 themes/default/templates/index.html.ep:212
|
||||
msgid "Click to open the file browser"
|
||||
msgstr "Cliquez pour utiliser le navigateur de fichier"
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:51
|
||||
msgid "Close"
|
||||
msgstr "Fermer"
|
||||
|
||||
#: themes/default/templates/gallery.html.ep:29
|
||||
msgid "Close (Esc)"
|
||||
msgstr "Fermer (Esc)"
|
||||
|
||||
#: themes/default/templates/about.html.ep:30
|
||||
msgid "Contributors"
|
||||
msgstr "Contributeurs"
|
||||
|
||||
#: themes/default/templates/partial/lutim.js.ep:214 themes/default/templates/partial/lutim.js.ep:268 themes/default/templates/partial/lutim.js.ep:346
|
||||
#: themes/default/templates/partial/common.js.ep:113 themes/default/templates/partial/common.js.ep:93
|
||||
msgid "Copied to clipboard"
|
||||
msgstr "Copié dans le presse-papier"
|
||||
|
||||
#: themes/default/templates/partial/lutim.js.ep:215 themes/default/templates/partial/lutim.js.ep:278 themes/default/templates/partial/lutim.js.ep:364
|
||||
msgid "Copy all view links to clipboard"
|
||||
msgstr "Copier tous les liens de visualisation dans le presse-papier"
|
||||
|
||||
#: themes/default/templates/index.html.ep:18 themes/default/templates/index.html.ep:36 themes/default/templates/index.html.ep:69 themes/default/templates/index.html.ep:77 themes/default/templates/index.html.ep:85 themes/default/templates/index.html.ep:93 themes/default/templates/myfiles.html.ep:20 themes/default/templates/myfiles.html.ep:38 themes/default/templates/partial/common.js.ep:150 themes/default/templates/partial/lutim.js.ep:105 themes/default/templates/partial/lutim.js.ep:120 themes/default/templates/partial/lutim.js.ep:79 themes/default/templates/partial/lutim.js.ep:91
|
||||
#: themes/default/templates/index.html.ep:103 themes/default/templates/index.html.ep:111 themes/default/templates/index.html.ep:18 themes/default/templates/index.html.ep:36 themes/default/templates/index.html.ep:54 themes/default/templates/index.html.ep:87 themes/default/templates/index.html.ep:95 themes/default/templates/myfiles.html.ep:104 themes/default/templates/myfiles.html.ep:68 themes/default/templates/myfiles.html.ep:86 themes/default/templates/partial/common.js.ep:186 themes/default/templates/partial/lutim.js.ep:106 themes/default/templates/partial/lutim.js.ep:121 themes/default/templates/partial/lutim.js.ep:80 themes/default/templates/partial/lutim.js.ep:92 themes/default/templates/partial/myfiles.js.ep:142
|
||||
msgid "Copy to clipboard"
|
||||
msgstr "Copier dans le presse-papier"
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:52
|
||||
#: themes/default/templates/myfiles.html.ep:123
|
||||
msgid "Counter"
|
||||
msgstr "Compteur"
|
||||
|
||||
@@ -91,47 +111,56 @@ msgstr "Graphe de répartition des délais pour les images supprimées"
|
||||
msgid "Delay repartition chart for enabled images"
|
||||
msgstr "Graphe de répartition des délais pour les images actives"
|
||||
|
||||
#: themes/default/templates/index.html.ep:115 themes/default/templates/index.html.ep:147 themes/default/templates/index.html.ep:178 themes/default/templates/myfiles.html.ep:53 themes/default/templates/partial/lutim.js.ep:159
|
||||
#: themes/default/templates/index.html.ep:133 themes/default/templates/index.html.ep:165 themes/default/templates/index.html.ep:196 themes/default/templates/myfiles.html.ep:124 themes/default/templates/myfiles.html.ep:45 themes/default/templates/partial/lutim.js.ep:161
|
||||
msgid "Delete at first view?"
|
||||
msgstr "Supprimer au premier accès ?"
|
||||
|
||||
#: lib/Lutim/Command/cron/stats.pm:145 themes/default/templates/raw.html.ep:4
|
||||
#: lib/Lutim/Command/cron/stats.pm:155 themes/default/templates/raw.html.ep:4
|
||||
msgid "Deleted images"
|
||||
msgstr "Images supprimées"
|
||||
|
||||
#: lib/Lutim/Command/cron/stats.pm:146 themes/default/templates/raw.html.ep:5
|
||||
#: lib/Lutim/Command/cron/stats.pm:156 themes/default/templates/raw.html.ep:5
|
||||
msgid "Deleted images in 30 days"
|
||||
msgstr "Images supprimées dans 30 jours"
|
||||
|
||||
#: themes/default/templates/index.html.ep:98 themes/default/templates/myfiles.html.ep:56 themes/default/templates/partial/common.js.ep:142 themes/default/templates/partial/common.js.ep:145
|
||||
#: themes/default/templates/index.html.ep:116 themes/default/templates/myfiles.html.ep:127 themes/default/templates/partial/common.js.ep:178 themes/default/templates/partial/common.js.ep:181
|
||||
msgid "Deletion link"
|
||||
msgstr "Lien de suppression"
|
||||
|
||||
#: themes/default/templates/gallery.html.ep:6
|
||||
#: themes/default/templates/gallery.html.ep:10
|
||||
msgid "Download all images"
|
||||
msgstr "Télécharger toutes les images"
|
||||
|
||||
#: themes/default/templates/index.html.ep:81 themes/default/templates/index.html.ep:83 themes/default/templates/partial/lutim.js.ep:101 themes/default/templates/partial/lutim.js.ep:97
|
||||
#: themes/default/templates/index.html.ep:101 themes/default/templates/index.html.ep:99 themes/default/templates/partial/lutim.js.ep:102 themes/default/templates/partial/lutim.js.ep:98
|
||||
msgid "Download link"
|
||||
msgstr "Lien de téléchargement"
|
||||
|
||||
#: themes/default/templates/index.html.ep:28 themes/default/templates/index.html.ep:31 themes/default/templates/myfiles.html.ep:30 themes/default/templates/myfiles.html.ep:33
|
||||
#: themes/default/templates/index.html.ep:28 themes/default/templates/index.html.ep:31 themes/default/templates/myfiles.html.ep:78 themes/default/templates/myfiles.html.ep:81
|
||||
msgid "Download zip link"
|
||||
msgstr "Lien de téléchargement de l’archive des images"
|
||||
|
||||
#: themes/default/templates/index.html.ep:189
|
||||
#: themes/default/templates/index.html.ep:207
|
||||
msgid "Drag & drop images here"
|
||||
msgstr "Déposez vos images ici"
|
||||
|
||||
#: themes/default/templates/about.html.ep:7
|
||||
msgid "Drag and drop an image in the appropriate area or use the traditional way to send files and Lutim will provide you four URLs. One to view the image, an other to directly download it, one you can use on social networks and a last to delete the image when you want."
|
||||
msgstr "Faites glisser des images dans la zone prévue à cet effet ou sélectionnez un fichier de façon classique et Lutim vous fournira quatre URLs en retour. Une pour afficher l’image, une autre pour la télécharger directement, une pour l’utiliser sur les réseaux sociaux et une dernière pour supprimer votre image quand vous le souhaitez"
|
||||
msgid ""
|
||||
"Drag and drop an image in the appropriate area or use the traditional way to "
|
||||
"send files and Lutim will provide you four URLs. One to view the image, an "
|
||||
"other to directly download it, one you can use on social networks and a last "
|
||||
"to delete the image when you want."
|
||||
msgstr ""
|
||||
"Faites glisser des images dans la zone prévue à cet effet ou sélectionnez un "
|
||||
"fichier de façon classique et Lutim vous fournira quatre URLs en retour. Une "
|
||||
"pour afficher l’image, une autre pour la télécharger directement, une pour l’"
|
||||
"utiliser sur les réseaux sociaux et une dernière pour supprimer votre image "
|
||||
"quand vous le souhaitez."
|
||||
|
||||
#: themes/default/templates/index.html.ep:150 themes/default/templates/index.html.ep:181
|
||||
#: themes/default/templates/index.html.ep:168 themes/default/templates/index.html.ep:199
|
||||
msgid "Encrypt the image (Lutim does not keep the key)."
|
||||
msgstr "Chiffrer l’image (Lutim ne stocke pas la clé)."
|
||||
|
||||
#: themes/default/templates/partial/lutim.js.ep:44
|
||||
#: themes/default/templates/partial/lutim.js.ep:45 themes/default/templates/partial/myfiles.js.ep:113
|
||||
msgid "Error while trying to modify the image."
|
||||
msgstr "Une erreur est survenue en essayant de modifier l’image."
|
||||
|
||||
@@ -139,31 +168,39 @@ msgstr "Une erreur est survenue en essayant de modifier l’image."
|
||||
msgid "Evolution of total files"
|
||||
msgstr "Évolution du nombre total de fichiers"
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:55
|
||||
#: themes/default/templates/myfiles.html.ep:126
|
||||
msgid "Expires at"
|
||||
msgstr "Expire le"
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:50
|
||||
#: themes/default/templates/myfiles.html.ep:112
|
||||
msgid "Export localStorage data"
|
||||
msgstr "Exporter les données localStorage"
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:121
|
||||
msgid "File name"
|
||||
msgstr "Nom du fichier"
|
||||
|
||||
#: themes/default/templates/about.html.ep:24
|
||||
msgid "For more details, see the <a href=\"https://framagit.org/luc/lutim\">homepage of the project</a>."
|
||||
msgstr "Pour plus de détails, consultez la page <a href=\"https://framagit.org/luc/lutim\">Github</a> du projet."
|
||||
msgid ""
|
||||
"For more details, see the <a href=\"https://framagit.org/luc/"
|
||||
"lutim\">homepage of the project</a>."
|
||||
msgstr ""
|
||||
"Pour plus de détails, consultez la page <a href=\"https://framagit.org/luc/"
|
||||
"lutim\">Github</a> du projet."
|
||||
|
||||
#: themes/default/templates/layouts/default.html.ep:55
|
||||
#: themes/default/templates/partial/navbar.html.ep:80
|
||||
msgid "Fork me!"
|
||||
msgstr "Créez un fork !"
|
||||
|
||||
#: themes/default/templates/index.html.ep:10 themes/default/templates/index.html.ep:13 themes/default/templates/myfiles.html.ep:12 themes/default/templates/myfiles.html.ep:15
|
||||
#: themes/default/templates/index.html.ep:10 themes/default/templates/index.html.ep:13 themes/default/templates/myfiles.html.ep:60 themes/default/templates/myfiles.html.ep:63
|
||||
msgid "Gallery link"
|
||||
msgstr "Lien vers la galerie"
|
||||
|
||||
#: themes/default/templates/partial/common.js.ep:104 themes/default/templates/partial/common.js.ep:87
|
||||
#: themes/default/templates/partial/common.js.ep:116 themes/default/templates/partial/common.js.ep:134
|
||||
msgid "Hit Ctrl+C, then Enter to copy the short link"
|
||||
msgstr "Faites Ctrl+C puis appuyez sur la touche Entrée pour copier le lien"
|
||||
|
||||
#: themes/default/templates/layouts/default.html.ep:50
|
||||
#: themes/default/templates/layouts/default.html.ep:47
|
||||
msgid "Homepage"
|
||||
msgstr "Accueil"
|
||||
|
||||
@@ -180,30 +217,42 @@ msgid "How to report an image?"
|
||||
msgstr "Comment peut-on faire pour signaler une image ?"
|
||||
|
||||
#: themes/default/templates/about.html.ep:14
|
||||
msgid "If the files are deleted if you ask it while posting it, their SHA512 footprint are retained."
|
||||
msgstr "Si les fichiers sont bien supprimés si vous en avez exprimé le choix, leur empreinte SHA512 est toutefois conservée."
|
||||
msgid ""
|
||||
"If the files are deleted if you ask it while posting it, their SHA512 "
|
||||
"footprint are retained."
|
||||
msgstr ""
|
||||
"Si les fichiers sont bien supprimés si vous en avez exprimé le choix, leur "
|
||||
"empreinte SHA512 est toutefois conservée."
|
||||
|
||||
#: themes/default/templates/index.html.ep:163 themes/default/templates/index.html.ep:203
|
||||
#: themes/default/templates/index.html.ep:181 themes/default/templates/index.html.ep:221
|
||||
msgid "Image URL"
|
||||
msgstr "URL de l’image"
|
||||
|
||||
#: lib/Lutim/Command/cron/stats.pm:143 themes/default/templates/raw.html.ep:2
|
||||
#: lib/Lutim/Command/cron/stats.pm:153 themes/default/templates/raw.html.ep:2
|
||||
msgid "Image delay"
|
||||
msgstr "Durée de rétention de l’image"
|
||||
|
||||
#: lib/Lutim/Controller.pm:710
|
||||
#: themes/default/templates/partial/common.js.ep:157
|
||||
msgid "Image deleted"
|
||||
msgstr "Image supprimée"
|
||||
|
||||
#: lib/Lutim/Controller/Image.pm:756
|
||||
msgid "Image not found."
|
||||
msgstr "Image non trouvée."
|
||||
|
||||
#: themes/default/templates/layouts/default.html.ep:54
|
||||
#: themes/default/templates/myfiles.html.ep:113
|
||||
msgid "Import localStorage data"
|
||||
msgstr "Importer des données localStorage"
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:69
|
||||
msgid "Informations"
|
||||
msgstr "Informations"
|
||||
|
||||
#: themes/default/templates/layouts/default.html.ep:62
|
||||
#: themes/default/templates/partial/navbar.html.ep:25
|
||||
msgid "Install webapp"
|
||||
msgstr "Installer la webapp"
|
||||
|
||||
#: themes/default/templates/layouts/default.html.ep:61
|
||||
#: themes/default/templates/partial/navbar.html.ep:21
|
||||
msgid "Instance's statistics"
|
||||
msgstr "Statistiques de l’instance"
|
||||
|
||||
@@ -216,138 +265,225 @@ msgid "Is it really free (as in free beer)?"
|
||||
msgstr "C’est vraiment gratuit ?"
|
||||
|
||||
#: themes/default/templates/about.html.ep:21
|
||||
msgid "Juste like you pronounce the French word <a href=\"https://fr.wikipedia.org/wiki/Lutin\">lutin</a> (/ly.tɛ̃/)."
|
||||
msgstr "Comme on prononce <a href=\"https://fr.wikipedia.org/wiki/Lutin\">lutin</a> (/ly.tɛ̃/)."
|
||||
msgid ""
|
||||
"Juste like you pronounce the French word <a href=\"https://fr.wikipedia.org/"
|
||||
"wiki/Lutin\">lutin</a> (/ly.tɛ̃/)."
|
||||
msgstr ""
|
||||
"Comme on prononce <a href=\"https://fr.wikipedia.org/wiki/Lutin\">lutin</a> "
|
||||
"(/ly.tɛ̃/)."
|
||||
|
||||
#: themes/default/templates/index.html.ep:153 themes/default/templates/index.html.ep:184
|
||||
#: themes/default/templates/index.html.ep:171 themes/default/templates/index.html.ep:202
|
||||
msgid "Keep EXIF tags"
|
||||
msgstr "Conserver les données EXIF"
|
||||
|
||||
#: themes/default/templates/index.html.ep:118 themes/default/templates/index.html.ep:166 themes/default/templates/index.html.ep:206 themes/default/templates/partial/lutim.js.ep:163
|
||||
#: themes/default/templates/partial/navbar.html.ep:43
|
||||
msgid "Language"
|
||||
msgstr "Langue"
|
||||
|
||||
#: themes/default/templates/index.html.ep:136 themes/default/templates/index.html.ep:184 themes/default/templates/index.html.ep:224 themes/default/templates/partial/lutim.js.ep:165
|
||||
msgid "Let's go!"
|
||||
msgstr "Allons-y !"
|
||||
|
||||
#: themes/default/templates/layouts/default.html.ep:58
|
||||
msgid "Liberapay button"
|
||||
msgstr "Bouton Liberapay"
|
||||
|
||||
#: themes/default/templates/layouts/default.html.ep:53
|
||||
#: themes/default/templates/partial/navbar.html.ep:74
|
||||
msgid "License:"
|
||||
msgstr "Licence :"
|
||||
|
||||
#: themes/default/templates/index.html.ep:89 themes/default/templates/index.html.ep:91 themes/default/templates/partial/lutim.js.ep:111 themes/default/templates/partial/lutim.js.ep:115
|
||||
#: themes/default/templates/index.html.ep:107 themes/default/templates/index.html.ep:109 themes/default/templates/partial/lutim.js.ep:112 themes/default/templates/partial/lutim.js.ep:116
|
||||
msgid "Link for share on social networks"
|
||||
msgstr "Lien pour partager sur les réseaux sociaux"
|
||||
|
||||
#: themes/default/templates/login.html.ep:8
|
||||
msgid "Login"
|
||||
msgstr "Connexion"
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:33
|
||||
msgid "Logout"
|
||||
msgstr "Déconnexion"
|
||||
|
||||
#: themes/default/templates/zip.html.ep:7
|
||||
msgid "Lutim can't zip so many images at once, so it splitted your demand in multiple URLs."
|
||||
msgstr "Lutim ne peut zipper autant d’images à la fois, votre demande a donc été découpée en plusieurs URL."
|
||||
msgid ""
|
||||
"Lutim can't zip so many images at once, so it splitted your demand in "
|
||||
"multiple URLs."
|
||||
msgstr ""
|
||||
"Lutim ne peut zipper autant d’images à la fois, votre demande a donc été "
|
||||
"découpée en plusieurs URL."
|
||||
|
||||
#: themes/default/templates/about.html.ep:4
|
||||
msgid "Lutim is a free (as in free beer) and anonymous image hosting service. It's also the name of the free (as in free speech) software which provides this service."
|
||||
msgstr "Lutim est un service gratuit et anonyme d’hébergement d’images. Il s’agit aussi du nom du logiciel (libre) qui fournit ce service."
|
||||
msgid ""
|
||||
"Lutim is a free (as in free beer) and anonymous image hosting service. It's "
|
||||
"also the name of the free (as in free speech) software which provides this "
|
||||
"service."
|
||||
msgstr ""
|
||||
"Lutim est un service gratuit et anonyme d’hébergement d’images. Il s’agit "
|
||||
"aussi du nom du logiciel (libre) qui fournit ce service."
|
||||
|
||||
#: themes/default/templates/about.html.ep:25
|
||||
msgid "Main developers"
|
||||
msgstr "Développeurs de l’application"
|
||||
|
||||
#: themes/default/templates/index.html.ep:73 themes/default/templates/index.html.ep:75 themes/default/templates/partial/lutim.js.ep:85 themes/default/templates/partial/lutim.js.ep:88
|
||||
#: themes/default/templates/index.html.ep:91 themes/default/templates/index.html.ep:93 themes/default/templates/partial/lutim.js.ep:86 themes/default/templates/partial/lutim.js.ep:89
|
||||
msgid "Markdown syntax"
|
||||
msgstr "Syntaxe Markdown"
|
||||
|
||||
#: themes/default/templates/layouts/default.html.ep:60 themes/default/templates/myfiles.html.ep:2
|
||||
#: themes/default/templates/partial/myfiles.js.ep:149
|
||||
msgid "Modify expiration delay"
|
||||
msgstr "Modifier le délai d’expiration"
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:7 themes/default/templates/partial/navbar.html.ep:18
|
||||
msgid "My images"
|
||||
msgstr "Mes images"
|
||||
|
||||
#: themes/default/templates/partial/myfiles.js.ep:19
|
||||
#: themes/default/templates/gallery.html.ep:45
|
||||
msgid "Next (arrow right)"
|
||||
msgstr "Suivant (flêche droite)"
|
||||
|
||||
#: themes/default/templates/partial/myfiles.js.ep:105 themes/default/templates/partial/myfiles.js.ep:132
|
||||
msgid "No limit"
|
||||
msgstr "Pas de date d’expiration"
|
||||
|
||||
#: themes/default/templates/index.html.ep:165 themes/default/templates/index.html.ep:198
|
||||
#: themes/default/templates/index.html.ep:183 themes/default/templates/index.html.ep:216
|
||||
msgid "Only images are allowed"
|
||||
msgstr "Seules les images sont acceptées"
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:6
|
||||
msgid "Only the images sent with this browser will be listed here. The informations are stored in localStorage: if you delete your localStorage data, you'll loose this informations."
|
||||
msgstr "Seules les images envoyées avec ce navigateur seront listées ici. Les informations sont stockées en localStorage : si vous supprimez vos données localStorage, vous perdrez ces informations."
|
||||
#: themes/default/templates/myfiles.html.ep:11
|
||||
msgid ""
|
||||
"Only the images sent with this browser will be listed here. The details are "
|
||||
"stored in localStorage: if you delete your localStorage data, you'll loose "
|
||||
"these details."
|
||||
msgstr ""
|
||||
"Seules les images envoyées avec ce navigateur seront listées ici. Les "
|
||||
"détails sont stockés en localStorage : si vous supprimez vos données "
|
||||
"localStorage, vous perdrez ces détails."
|
||||
|
||||
#: themes/default/templates/about.html.ep:16
|
||||
msgid "Only the uploader! (well, only if he's the only owner of the images' rights before the upload)"
|
||||
msgstr "Seulement l’envoyeur ! (enfin, seulement s’il possède des droits exclusifs sur les images avant de les envoyer)"
|
||||
msgid ""
|
||||
"Only the uploader! (well, only if he's the only owner of the images' rights "
|
||||
"before the upload)"
|
||||
msgstr ""
|
||||
"Seulement l’envoyeur ! (enfin, seulement s’il possède des droits exclusifs "
|
||||
"sur les images avant de les envoyer)"
|
||||
|
||||
#: themes/default/templates/login.html.ep:12
|
||||
msgid "Password"
|
||||
msgstr "Mot de passe"
|
||||
|
||||
#: themes/default/templates/zip.html.ep:12
|
||||
msgid "Please click on each URL to download the different zip files."
|
||||
msgstr "Veuillez cliquer sur chaque URL pour télécharger les différents fichiers zip."
|
||||
msgstr ""
|
||||
"Veuillez cliquer sur chaque URL pour télécharger les différents fichiers zip."
|
||||
""
|
||||
|
||||
#. (config('contact')
|
||||
#: themes/default/templates/about.html.ep:19
|
||||
msgid "Please contact the administrator: %1"
|
||||
msgstr "Veuillez contacter l’administrateur : %1"
|
||||
|
||||
#: lib/Lutim/Controller/Authent.pm:36
|
||||
msgid "Please, check your credentials: unable to authenticate."
|
||||
msgstr "Veuillez vérifier vos identifiants : impossible de vous authentifier."
|
||||
|
||||
#: themes/default/templates/gallery.html.ep:43
|
||||
msgid "Previous (arrow left)"
|
||||
msgstr "Précédent (flêche gauche)"
|
||||
|
||||
#: themes/default/templates/index.html.ep:46 themes/default/templates/index.html.ep:49 themes/default/templates/myfiles.html.ep:96 themes/default/templates/myfiles.html.ep:99
|
||||
msgid "Random image link"
|
||||
msgstr "Lien vers une image aléatoire"
|
||||
|
||||
#: themes/default/templates/stats.html.ep:22
|
||||
msgid "Raw stats"
|
||||
msgstr "Statistiques brutes"
|
||||
|
||||
#: themes/default/templates/index.html.ep:158
|
||||
#: themes/default/templates/myfiles.html.ep:52
|
||||
msgid "Save changes"
|
||||
msgstr "Enregistrer les modifications"
|
||||
|
||||
#: themes/default/templates/index.html.ep:176
|
||||
msgid "Send an image"
|
||||
msgstr "Envoyer une image"
|
||||
|
||||
#: themes/default/templates/partial/lutim.js.ep:20
|
||||
msgid "Share it!"
|
||||
msgstr "Partagez !"
|
||||
#: themes/default/templates/login.html.ep:16 themes/default/templates/logout.html.ep:5 themes/default/templates/partial/navbar.html.ep:37
|
||||
msgid "Signin"
|
||||
msgstr "Connexion"
|
||||
|
||||
#: themes/default/templates/layouts/default.html.ep:56
|
||||
msgid "Share on Twitter"
|
||||
msgstr "Partager sur Twitter"
|
||||
|
||||
#: themes/default/templates/index.html.ep:133 themes/default/templates/partial/lutim.js.ep:174
|
||||
#: themes/default/templates/index.html.ep:151 themes/default/templates/partial/gallery.js.ep:211 themes/default/templates/partial/lutim.js.ep:176
|
||||
msgid "Something bad happened"
|
||||
msgstr "Un problème est survenu"
|
||||
|
||||
#. ($c->config('contact')
|
||||
#: lib/Lutim/Controller.pm:717
|
||||
msgid "Something went wrong when creating the zip file. Try again later or contact the administrator (%1)."
|
||||
msgstr "Quelque chose s’est mal passé lors de la création de l’archive. Veuillez réessayer plus tard ou contactez l’administrateur (%1)."
|
||||
#: lib/Lutim/Controller/Image.pm:763
|
||||
msgid ""
|
||||
"Something went wrong when creating the zip file. Try again later or contact "
|
||||
"the administrator (%1)."
|
||||
msgstr ""
|
||||
"Quelque chose s’est mal passé lors de la création de l’archive. Veuillez "
|
||||
"réessayer plus tard ou contactez l’administrateur (%1)."
|
||||
|
||||
#: themes/default/templates/layouts/default.html.ep:58
|
||||
#: themes/default/templates/partial/navbar.html.ep:55
|
||||
msgid "Support the author"
|
||||
msgstr "Supportez l’auteur"
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:63
|
||||
msgid "Support the author on Liberapay"
|
||||
msgstr "Supporter l’auteur sur Liberapay"
|
||||
|
||||
#: themes/default/templates/layouts/default.html.ep:57
|
||||
#: themes/default/templates/partial/navbar.html.ep:60
|
||||
msgid "Support the author on Tipeee"
|
||||
msgstr "Supporter l’auteur sur Tipeee"
|
||||
|
||||
#: themes/default/templates/about.html.ep:13
|
||||
msgid "The IP address of the image's sender is retained for a delay which depends of the administrator's choice (for the official instance, which is located in France, it's one year)."
|
||||
msgid ""
|
||||
"The IP address of the image's sender is retained for a delay which depends "
|
||||
"of the administrator's choice (for the official instance, which is located "
|
||||
"in France, it's one year)."
|
||||
msgstr ""
|
||||
"L’IP de la personne ayant déposé l’image est stockée pendant un délai dépendant de l’administrateur de l’instance (pour l’instance officielle, dont le serveur est en France, c’est un délai\n"
|
||||
" d’un an)."
|
||||
"L’IP de la personne ayant déposé l’image est stockée pendant un délai "
|
||||
"dépendant de l’administrateur de l’instance (pour l’instance officielle, "
|
||||
"dont le serveur est en France, c’est un délai d’un an)."
|
||||
|
||||
#: themes/default/templates/about.html.ep:23
|
||||
msgid "The Lutim software is a <a href=\"http://en.wikipedia.org/wiki/Free_software\">free software</a>, which allows you to download and install it on you own server. Have a look at the <a href=\"https://www.gnu.org/licenses/agpl-3.0.html\">AGPL</a> to see what you can do."
|
||||
msgstr "Le logiciel Lutim est un <a href=\"https://fr.wikipedia.org/wiki/Logiciel_libre\">logiciel libre</a>, ce qui vous permet de le télécharger et de l’installer sur votre propre serveur. Jetez un coup d’œil à l’<a href=\"https://www.gnu.org/licenses/agpl-3.0.html\">AGPL</a> pour voir quels sont vos droits"
|
||||
msgid ""
|
||||
"The Lutim software is a <a href=\"http://en.wikipedia.org/wiki/"
|
||||
"Free_software\">free software</a>, which allows you to download and install "
|
||||
"it on you own server. Have a look at the <a href=\"https://www.gnu.org/"
|
||||
"licenses/agpl-3.0.html\">AGPL</a> to see what you can do."
|
||||
msgstr ""
|
||||
"Le logiciel Lutim est un <a href=\"https://fr.wikipedia.org/wiki/"
|
||||
"Logiciel_libre\">logiciel libre</a>, ce qui vous permet de le télécharger et "
|
||||
"de l’installer sur votre propre serveur. Jetez un coup d’œil à l’<a href=\""
|
||||
"https://www.gnu.org/licenses/agpl-3.0.html\">AGPL</a> pour voir quels sont "
|
||||
"vos droits."
|
||||
|
||||
#: lib/Lutim/Controller.pm:307
|
||||
#: lib/Lutim/Controller/Image.pm:347
|
||||
msgid "The URL is not valid."
|
||||
msgstr "L’URL n’est pas valide."
|
||||
|
||||
#: themes/default/templates/zip.html.ep:16
|
||||
msgid "The automatic download process will open a tab in your browser for each link. You need to allow popups for Lutim."
|
||||
msgstr "Le processus de téléchargement automatique va ouvrir un onglet dans votre navigateur pour chaque lien. Vous devez autoriser les fenêtres popup pour Lutim."
|
||||
msgid ""
|
||||
"The automatic download process will open a tab in your browser for each link."
|
||||
" You need to allow popups for Lutim."
|
||||
msgstr ""
|
||||
"Le processus de téléchargement automatique va ouvrir un onglet dans votre "
|
||||
"navigateur pour chaque lien. Vous devez autoriser les fenêtres popup pour "
|
||||
"Lutim."
|
||||
|
||||
#: lib/Lutim/Controller.pm:120 lib/Lutim/Controller.pm:188
|
||||
#: themes/default/templates/partial/myfiles.js.ep:32
|
||||
msgid "The data has been successfully imported."
|
||||
msgstr "Les données ont été importées avec succès."
|
||||
|
||||
#: lib/Lutim/Controller/Image.pm:160 lib/Lutim/Controller/Image.pm:228
|
||||
msgid "The delete token is invalid."
|
||||
msgstr "Le jeton de suppression est invalide."
|
||||
|
||||
#. ($upload->filename)
|
||||
#: lib/Lutim/Controller.pm:445
|
||||
#: lib/Lutim/Controller/Image.pm:488
|
||||
msgid "The file %1 is not an image."
|
||||
msgstr "Le fichier %1 n’est pas une image."
|
||||
|
||||
#. ($tx->res->max_message_size)
|
||||
#. ($c->req->max_message_size)
|
||||
#. (config('max_file_size')
|
||||
#: lib/Lutim/Controller.pm:271 lib/Lutim/Controller.pm:340 themes/default/templates/partial/lutim.js.ep:240
|
||||
#: lib/Lutim/Controller/Image.pm:311 lib/Lutim/Controller/Image.pm:380 themes/default/templates/partial/lutim.js.ep:249
|
||||
msgid "The file exceed the size limit (%1)"
|
||||
msgstr "Le fichier dépasse la limite de taille (%1)"
|
||||
|
||||
@@ -356,66 +492,90 @@ msgid "The graph's datas are not updated in real-time."
|
||||
msgstr "Les données du graphique ne sont pas mises à jour en temps réél."
|
||||
|
||||
#. ($image->filename)
|
||||
#: lib/Lutim/Controller.pm:190
|
||||
#: lib/Lutim/Controller/Image.pm:230
|
||||
msgid "The image %1 has already been deleted."
|
||||
msgstr "L’image %1 a déjà été supprimée."
|
||||
|
||||
#. ($image->filename)
|
||||
#: lib/Lutim/Controller.pm:199 lib/Lutim/Controller.pm:204
|
||||
#: lib/Lutim/Controller/Image.pm:239 lib/Lutim/Controller/Image.pm:244
|
||||
msgid "The image %1 has been successfully deleted"
|
||||
msgstr "L’image %1 a été supprimée avec succès."
|
||||
msgstr "L’image %1 a été supprimée avec succès"
|
||||
|
||||
#: lib/Lutim/Controller.pm:128
|
||||
msgid "The image's delay has been successfully modified"
|
||||
msgstr "Le délai de l’image a été modifié avec succès."
|
||||
|
||||
#: themes/default/templates/index.html.ep:45
|
||||
#: themes/default/templates/index.html.ep:63
|
||||
msgid "The images are encrypted on the server (Lutim does not keep the key)."
|
||||
msgstr "Les images sont chiffrées sur le serveur (Lutim ne stocke pas la clé)."
|
||||
msgstr ""
|
||||
"Les images sont chiffrées sur le serveur (Lutim ne stocke pas la clé)."
|
||||
|
||||
#: themes/default/templates/about.html.ep:5
|
||||
msgid "The images you post on Lutim can be stored indefinitely or be deleted at first view or after a delay selected from those proposed."
|
||||
msgstr "Les images déposées sur Lutim peuvent être stockées indéfiniment, ou s’effacer dès le premier affichage ou au bout du délai choisi parmi ceux proposés."
|
||||
msgid ""
|
||||
"The images you post on Lutim can be stored indefinitely or be deleted at "
|
||||
"first view or after a delay selected from those proposed."
|
||||
msgstr ""
|
||||
"Les images déposées sur Lutim peuvent être stockées indéfiniment, ou "
|
||||
"s’effacer dès le premier affichage ou au bout du délai choisi parmi ceux "
|
||||
"proposés."
|
||||
|
||||
#: lib/Lutim/Controller/Image.pm:168
|
||||
msgid "The image’s delay has been successfully modified"
|
||||
msgstr "Le délai de l’image a été modifié avec succès"
|
||||
|
||||
#: themes/default/templates/partial/gallery.js.ep:277
|
||||
msgid "There is XXXX image(s) in the gallery"
|
||||
msgstr "Il y a XXXX image(s) dans la galerie"
|
||||
|
||||
#. ($c->config->{contact})
|
||||
#: lib/Lutim/Controller.pm:442
|
||||
#: lib/Lutim/Controller/Image.pm:485
|
||||
msgid "There is no more available URL. Retry or contact the administrator. %1"
|
||||
msgstr "Il n’y a plus d’URL disponible. Veuillez réessayer ou contacter l’administrateur. %1."
|
||||
msgstr ""
|
||||
"Il n’y a plus d’URL disponible. Veuillez réessayer ou contacter l’"
|
||||
"administrateur. %1"
|
||||
|
||||
#: themes/default/templates/layouts/default.html.ep:57
|
||||
msgid "Tipeee button"
|
||||
msgstr "Bouton Tipeee"
|
||||
#: themes/default/templates/gallery.html.ep:30
|
||||
msgid "Toggle fullscreen"
|
||||
msgstr "Basculer le plein écran"
|
||||
|
||||
#: lib/Lutim/Command/cron/stats.pm:152 themes/default/templates/raw.html.ep:11
|
||||
#: themes/default/templates/partial/navbar.html.ep:8
|
||||
msgid "Toggle navigation"
|
||||
msgstr "Étendre la barre de navigation"
|
||||
|
||||
#: lib/Lutim/Command/cron/stats.pm:162 themes/default/templates/raw.html.ep:11
|
||||
msgid "Total"
|
||||
msgstr "Total"
|
||||
|
||||
#: themes/default/templates/index.html.ep:60 themes/default/templates/partial/lutim.js.ep:14
|
||||
#: themes/default/templates/index.html.ep:78 themes/default/templates/partial/lutim.js.ep:17
|
||||
msgid "Tweet it!"
|
||||
msgstr "Tweetez !"
|
||||
|
||||
#: themes/default/templates/partial/common.js.ep:110 themes/default/templates/partial/common.js.ep:90
|
||||
msgid "Unable to copy to clipboard"
|
||||
msgstr "Impossible de copier dans le presse-papier"
|
||||
|
||||
#. ($short)
|
||||
#: lib/Lutim/Controller.pm:162 lib/Lutim/Controller.pm:233
|
||||
#: lib/Lutim/Controller/Image.pm:108 lib/Lutim/Controller/Image.pm:202 lib/Lutim/Controller/Image.pm:273
|
||||
msgid "Unable to find the image %1."
|
||||
msgstr "Impossible de trouver l’image %1."
|
||||
|
||||
#: lib/Lutim/Controller.pm:529 lib/Lutim/Controller.pm:574 lib/Lutim/Controller.pm:616 lib/Lutim/Controller.pm:659 lib/Lutim/Controller.pm:671 lib/Lutim/Controller.pm:682 lib/Lutim/Controller.pm:707 lib/Lutim/Plugin/Helpers.pm:57
|
||||
#: lib/Lutim/Controller/Image.pm:574 lib/Lutim/Controller/Image.pm:619 lib/Lutim/Controller/Image.pm:660 lib/Lutim/Controller/Image.pm:703 lib/Lutim/Controller/Image.pm:715 lib/Lutim/Controller/Image.pm:726 lib/Lutim/Controller/Image.pm:753 lib/Lutim/Plugin/Helpers.pm:88
|
||||
msgid "Unable to find the image: it has been deleted."
|
||||
msgstr "Impossible de trouver l’image : elle a été supprimée."
|
||||
|
||||
#: lib/Lutim/Controller.pm:105
|
||||
#: lib/Lutim/Controller/Image.pm:145
|
||||
msgid "Unable to get counter"
|
||||
msgstr "Impossible de récupérer le compteur"
|
||||
|
||||
#: themes/default/templates/about.html.ep:17
|
||||
msgid "Unlike many image sharing services, you don't give us rights on uploaded images."
|
||||
msgstr "Au contraire de la majorité des services de partages d’image, vous ne nous cédez aucun droit sur les images envoyées."
|
||||
msgid ""
|
||||
"Unlike many image sharing services, you don't give us rights on uploaded "
|
||||
"images."
|
||||
msgstr ""
|
||||
"Au contraire de la majorité des services de partages d’image, vous ne nous "
|
||||
"cédez aucun droit sur les images envoyées."
|
||||
|
||||
#: themes/default/templates/index.html.ep:162 themes/default/templates/index.html.ep:201
|
||||
#: themes/default/templates/index.html.ep:180 themes/default/templates/index.html.ep:219
|
||||
msgid "Upload an image with its URL"
|
||||
msgstr "Déposer une image par son URL"
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:54
|
||||
#: themes/default/templates/myfiles.html.ep:125
|
||||
msgid "Uploaded at"
|
||||
msgstr "Envoyé le"
|
||||
|
||||
@@ -424,11 +584,15 @@ msgid "Uploaded files by days"
|
||||
msgstr "Fichiers envoyés, par jour"
|
||||
|
||||
#. ($c->app->config('contact')
|
||||
#: lib/Lutim/Plugin/Helpers.pm:152
|
||||
msgid "Uploading is currently disabled, please try later or contact the administrator (%1)."
|
||||
msgstr "L’envoi d’images est actuellement désactivé, veuillez réessayer plus tard ou contacter l’administrateur (%1)."
|
||||
#: lib/Lutim/Plugin/Helpers.pm:221
|
||||
msgid ""
|
||||
"Uploading is currently disabled, please try later or contact the "
|
||||
"administrator (%1)."
|
||||
msgstr ""
|
||||
"L’envoi d’images est actuellement désactivé, veuillez réessayer plus tard ou "
|
||||
"contacter l’administrateur (%1)."
|
||||
|
||||
#: themes/default/templates/index.html.ep:65 themes/default/templates/index.html.ep:67 themes/default/templates/myfiles.html.ep:51 themes/default/templates/partial/lutim.js.ep:71 themes/default/templates/partial/lutim.js.ep:75
|
||||
#: themes/default/templates/index.html.ep:83 themes/default/templates/index.html.ep:85 themes/default/templates/myfiles.html.ep:122 themes/default/templates/partial/lutim.js.ep:72 themes/default/templates/partial/lutim.js.ep:76
|
||||
msgid "View link"
|
||||
msgstr "Lien d’affichage"
|
||||
|
||||
@@ -445,30 +609,66 @@ msgid "Who owns rights on images uploaded on Lutim?"
|
||||
msgstr "Qui possède des droits sur les images envoyées sur Lutim ?"
|
||||
|
||||
#: themes/default/templates/about.html.ep:12
|
||||
msgid "Yes, it is! On the other side, for legal reasons, your IP address will be stored when you send an image. Don't panic, it is normally the case of all sites on which you send files!"
|
||||
msgstr "Oui, ça l’est ! Par contre, pour des raisons légales, votre adresse IP sera enregistrée lorsque vous enverrez une image. Ne vous affolez pas, c’est de toute façon normalement le cas de tous les sites sur lesquels vous envoyez des fichiers !"
|
||||
msgid ""
|
||||
"Yes, it is! On the other side, for legal reasons, your IP address will be "
|
||||
"stored when you send an image. Don't panic, it is normally the case of all "
|
||||
"sites on which you send files!"
|
||||
msgstr ""
|
||||
"Oui, ça l’est ! Par contre, pour des raisons légales, votre adresse IP sera "
|
||||
"enregistrée lorsque vous enverrez une image. Ne vous affolez pas, c’est de "
|
||||
"toute façon normalement le cas de tous les sites sur lesquels vous envoyez "
|
||||
"des fichiers !"
|
||||
|
||||
#: themes/default/templates/about.html.ep:10
|
||||
msgid "Yes, it is! On the other side, if you want to support the developer, you can do it via <a href=\"https://www.tipeee.com/fiat-tux\">Tipeee</a> or via <a href=\"https://liberapay.com/sky/\">Liberapay</a>."
|
||||
msgstr "Oui, ça l’est ! Par contre, si vous avez envie de soutenir le développeur, vous pouvez faire un microdon avec <a href=\"https://www.tipeee.com/fiat-tux\">Tipeee</a> ou via <a href=\"https://liberapay.com/sky/\">Liberapay</a>."
|
||||
msgid ""
|
||||
"Yes, it is! On the other side, if you want to support the developer, you can "
|
||||
"do it via <a href=\"https://www.tipeee.com/fiat-tux\">Tipeee</a> or via <a "
|
||||
"href=\"https://liberapay.com/sky/\">Liberapay</a>."
|
||||
msgstr ""
|
||||
"Oui, ça l’est ! Par contre, si vous avez envie de soutenir le développeur, "
|
||||
"vous pouvez faire un microdon avec <a href=\"https://www.tipeee.com/fiat-"
|
||||
"tux\">Tipeee</a> ou via <a href=\"https://liberapay.com/sky/\">Liberapay</a>."
|
||||
""
|
||||
|
||||
#: themes/default/templates/zip.html.ep:6
|
||||
msgid "You asked to download a zip archive for too much files."
|
||||
msgstr "Vous avez demandé de télécharger une archive zip pour trop de fichiers."
|
||||
msgstr ""
|
||||
"Vous avez demandé de télécharger une archive zip pour trop de fichiers."
|
||||
|
||||
#: themes/default/templates/about.html.ep:8
|
||||
msgid "You can, optionally, request that the image(s) posted on Lutim to be deleted at first view (or download) or after the delay selected from those proposed."
|
||||
msgstr "Vous pouvez, de façon facultative, demander à ce que la ou les images déposées sur Lutim soient supprimées après leur premier affichage (ou téléchargement) ou au bout d’un délai choisi parmi ceux proposés."
|
||||
msgid ""
|
||||
"You can, optionally, request that the image(s) posted on Lutim to be deleted "
|
||||
"at first view (or download) or after the delay selected from those proposed."
|
||||
msgstr ""
|
||||
"Vous pouvez, de façon facultative, demander à ce que la ou les images "
|
||||
"déposées sur Lutim soient supprimées après leur premier affichage (ou "
|
||||
"téléchargement) ou au bout d’un délai choisi parmi ceux proposés."
|
||||
|
||||
#: lib/Lutim/Controller/Authent.pm:27
|
||||
msgid "You have been successfully logged in."
|
||||
msgstr "Vous avez été connecté·e avec succès."
|
||||
|
||||
#: lib/Lutim/Controller/Authent.pm:66 themes/default/templates/logout.html.ep:3
|
||||
msgid "You have been successfully logged out."
|
||||
msgstr "Vous avez été déconnecté·e avec succès."
|
||||
|
||||
#: themes/default/templates/gallery.html.ep:31
|
||||
msgid "Zoom in/out"
|
||||
msgstr "Zoomer / dézoomer"
|
||||
|
||||
#: themes/default/templates/about.html.ep:27
|
||||
msgid "and on"
|
||||
msgstr "et sur"
|
||||
|
||||
#: themes/default/templates/about.html.ep:40
|
||||
msgid "arabic translation"
|
||||
msgstr "traduction en arabe"
|
||||
|
||||
#: themes/default/templates/about.html.ep:27
|
||||
msgid "core developer"
|
||||
msgstr "développeur principal"
|
||||
|
||||
#: lib/Lutim.pm:190 lib/Lutim/Command/cron/stats.pm:147 lib/Lutim/Command/cron/stats.pm:158 lib/Lutim/Command/cron/stats.pm:175 themes/default/templates/index.html.ep:3 themes/default/templates/raw.html.ep:17 themes/default/templates/raw.html.ep:34 themes/default/templates/raw.html.ep:6
|
||||
#: lib/Lutim.pm:348 lib/Lutim/Command/cron/stats.pm:157 lib/Lutim/Command/cron/stats.pm:171 lib/Lutim/Command/cron/stats.pm:188 themes/default/templates/index.html.ep:3 themes/default/templates/myfiles.html.ep:3 themes/default/templates/partial/raw.js.ep:21 themes/default/templates/partial/raw.js.ep:4 themes/default/templates/raw.html.ep:6
|
||||
msgid "no time limit"
|
||||
msgstr "Pas de limitation de durée"
|
||||
|
||||
@@ -480,6 +680,14 @@ msgstr "traduction occitane"
|
||||
msgid "on"
|
||||
msgstr "sur"
|
||||
|
||||
#: themes/default/templates/about.html.ep:39
|
||||
msgid "paste image to upload ability"
|
||||
msgstr "possibilité de coller une image pour l’envoyer"
|
||||
|
||||
#: themes/default/templates/about.html.ep:41
|
||||
msgid "russian translation"
|
||||
msgstr "traduction russe"
|
||||
|
||||
#: themes/default/templates/about.html.ep:36
|
||||
msgid "spanish translation"
|
||||
msgstr "traduction espagnole"
|
||||
@@ -487,3 +695,21 @@ msgstr "traduction espagnole"
|
||||
#: themes/default/templates/about.html.ep:28
|
||||
msgid "webapp developer"
|
||||
msgstr "développeur de la webapp"
|
||||
|
||||
#: themes/default/templates/index.html.ep:171 themes/default/templates/index.html.ep:215
|
||||
msgid "Tiling watermark"
|
||||
msgstr "Filigrane en tuile"
|
||||
|
||||
#: themes/default/templates/index.html.ep:174 themes/default/templates/index.html.ep:218
|
||||
msgid "Single watermark"
|
||||
msgstr "Filigrane simple"
|
||||
|
||||
#: themes/default/templates/index.html.ep:177 themes/default/templates/index.html.ep:221
|
||||
msgid "No watermark"
|
||||
msgstr "Pas de filigrane"
|
||||
|
||||
#: themes/default/templates/about.html.ep:24
|
||||
msgid "For more details, see the <a href=\"https://framagit.org/fiat-tux/hat-softwares/lutim\">homepage of the project</a>."
|
||||
msgstr ""
|
||||
"Pour plus de détails, consultez la <a href=\"https://framagit.org/fiat-tux/"
|
||||
"hat-softwares/lutim\">page du projet</a>."
|
||||
|
||||
715
themes/default/lib/Lutim/I18N/fr_FR.po
Normal file
715
themes/default/lib/Lutim/I18N/fr_FR.po
Normal file
@@ -0,0 +1,715 @@
|
||||
# Lutim language file
|
||||
# Copyright (C) 2014 Luc Didry
|
||||
# This file is distributed under the same license as the Lutim package.
|
||||
#
|
||||
# Translators:
|
||||
# Translators:
|
||||
# Luc Didry <luc@didry.org>, 2015
|
||||
# Luc Didry <luc@framasoft.org>, 2018. #zanata
|
||||
# Luc Didry <luc@framasoft.org>, 2019. #zanata
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"PO-Revision-Date: 2020-03-09 16:23+0000\n"
|
||||
"Last-Translator: Luc Didry <luc@framasoft.org>\n"
|
||||
"Language-Team: French (France) <https://weblate.framasoft.org/projects/lutim/"
|
||||
"default-theme/fr_FR/>\n"
|
||||
"Language: fr_FR\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=n > 1;\n"
|
||||
"X-Generator: Weblate 3.11.2\n"
|
||||
|
||||
#. (7)
|
||||
#. (30)
|
||||
#. ($delay)
|
||||
#. (config('max_delay')
|
||||
#: lib/Lutim/Command/cron/stats.pm:159 lib/Lutim/Command/cron/stats.pm:160 lib/Lutim/Command/cron/stats.pm:173 lib/Lutim/Command/cron/stats.pm:174 lib/Lutim/Command/cron/stats.pm:190 lib/Lutim/Command/cron/stats.pm:191 themes/default/templates/myfiles.html.ep:24 themes/default/templates/myfiles.html.ep:33 themes/default/templates/myfiles.html.ep:34 themes/default/templates/partial/for_my_delay.html.ep:13 themes/default/templates/partial/for_my_delay.html.ep:14 themes/default/templates/partial/for_my_delay.html.ep:4 themes/default/templates/partial/lutim.js.ep:140 themes/default/templates/partial/lutim.js.ep:149 themes/default/templates/partial/lutim.js.ep:150 themes/default/templates/partial/raw.js.ep:23 themes/default/templates/partial/raw.js.ep:24 themes/default/templates/partial/raw.js.ep:6 themes/default/templates/partial/raw.js.ep:7 themes/default/templates/raw.html.ep:8 themes/default/templates/raw.html.ep:9
|
||||
msgid "%1 days"
|
||||
msgstr "%1 jours"
|
||||
|
||||
#. ($total)
|
||||
#: themes/default/templates/stats.html.ep:2
|
||||
msgid "%1 sent images on this instance from beginning."
|
||||
msgstr "%1 images envoyées sur cette instance depuis le début."
|
||||
|
||||
#: themes/default/templates/index.html.ep:208
|
||||
msgid "-or-"
|
||||
msgstr "-ou-"
|
||||
|
||||
#: lib/Lutim.pm:350 lib/Lutim/Command/cron/stats.pm:161 lib/Lutim/Command/cron/stats.pm:175 lib/Lutim/Command/cron/stats.pm:192 themes/default/templates/index.html.ep:5 themes/default/templates/myfiles.html.ep:5 themes/default/templates/partial/raw.js.ep:25 themes/default/templates/partial/raw.js.ep:8 themes/default/templates/raw.html.ep:10
|
||||
msgid "1 year"
|
||||
msgstr "1 an"
|
||||
|
||||
#: lib/Lutim.pm:349 lib/Lutim/Command/cron/stats.pm:158 lib/Lutim/Command/cron/stats.pm:172 lib/Lutim/Command/cron/stats.pm:189 themes/default/templates/index.html.ep:4 themes/default/templates/myfiles.html.ep:33 themes/default/templates/myfiles.html.ep:4 themes/default/templates/partial/for_my_delay.html.ep:13 themes/default/templates/partial/lutim.js.ep:149 themes/default/templates/partial/raw.js.ep:22 themes/default/templates/partial/raw.js.ep:5 themes/default/templates/raw.html.ep:7
|
||||
msgid "24 hours"
|
||||
msgstr "24 heures"
|
||||
|
||||
#: themes/default/templates/partial/myfiles.js.ep:180
|
||||
msgid ": Error while trying to get the counter."
|
||||
msgstr " : Erreur en essayant de récupérer le compteur."
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:77
|
||||
msgid "About"
|
||||
msgstr "À propos"
|
||||
|
||||
#: lib/Lutim/Command/cron/stats.pm:154 themes/default/templates/raw.html.ep:3
|
||||
msgid "Active images"
|
||||
msgstr "Images actives"
|
||||
|
||||
#: lib/Lutim/Controller/Image.pm:328
|
||||
msgid "An error occured while downloading the image."
|
||||
msgstr "Une erreur est survenue lors du téléchargement de l’image."
|
||||
|
||||
#: themes/default/templates/zip.html.ep:2
|
||||
msgid "Archives download"
|
||||
msgstr "Téléchargement d’archives"
|
||||
|
||||
#: themes/default/templates/about.html.ep:44 themes/default/templates/myfiles.html.ep:135 themes/default/templates/stats.html.ep:25
|
||||
msgid "Back to homepage"
|
||||
msgstr "Retour à la page d’accueil"
|
||||
|
||||
#: themes/default/templates/index.html.ep:211 themes/default/templates/index.html.ep:212
|
||||
msgid "Click to open the file browser"
|
||||
msgstr "Cliquez pour utiliser le navigateur de fichier"
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:51
|
||||
msgid "Close"
|
||||
msgstr "Fermer"
|
||||
|
||||
#: themes/default/templates/gallery.html.ep:29
|
||||
msgid "Close (Esc)"
|
||||
msgstr "Fermer (Esc)"
|
||||
|
||||
#: themes/default/templates/about.html.ep:30
|
||||
msgid "Contributors"
|
||||
msgstr "Contributeurs"
|
||||
|
||||
#: themes/default/templates/partial/common.js.ep:113 themes/default/templates/partial/common.js.ep:93
|
||||
msgid "Copied to clipboard"
|
||||
msgstr "Copié dans le presse-papier"
|
||||
|
||||
#: themes/default/templates/partial/lutim.js.ep:215 themes/default/templates/partial/lutim.js.ep:278 themes/default/templates/partial/lutim.js.ep:364
|
||||
msgid "Copy all view links to clipboard"
|
||||
msgstr "Copier tous les liens de visualisation dans le presse-papier"
|
||||
|
||||
#: themes/default/templates/index.html.ep:103 themes/default/templates/index.html.ep:111 themes/default/templates/index.html.ep:18 themes/default/templates/index.html.ep:36 themes/default/templates/index.html.ep:54 themes/default/templates/index.html.ep:87 themes/default/templates/index.html.ep:95 themes/default/templates/myfiles.html.ep:104 themes/default/templates/myfiles.html.ep:68 themes/default/templates/myfiles.html.ep:86 themes/default/templates/partial/common.js.ep:186 themes/default/templates/partial/lutim.js.ep:106 themes/default/templates/partial/lutim.js.ep:121 themes/default/templates/partial/lutim.js.ep:80 themes/default/templates/partial/lutim.js.ep:92 themes/default/templates/partial/myfiles.js.ep:142
|
||||
msgid "Copy to clipboard"
|
||||
msgstr "Copier dans le presse-papier"
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:123
|
||||
msgid "Counter"
|
||||
msgstr "Compteur"
|
||||
|
||||
#: themes/default/templates/stats.html.ep:18
|
||||
msgid "Delay repartition chart for disabled images"
|
||||
msgstr "Graphe de répartition des délais pour les images supprimées"
|
||||
|
||||
#: themes/default/templates/stats.html.ep:15
|
||||
msgid "Delay repartition chart for enabled images"
|
||||
msgstr "Graphe de répartition des délais pour les images actives"
|
||||
|
||||
#: themes/default/templates/index.html.ep:133 themes/default/templates/index.html.ep:165 themes/default/templates/index.html.ep:196 themes/default/templates/myfiles.html.ep:124 themes/default/templates/myfiles.html.ep:45 themes/default/templates/partial/lutim.js.ep:161
|
||||
msgid "Delete at first view?"
|
||||
msgstr "Supprimer au premier accès ?"
|
||||
|
||||
#: lib/Lutim/Command/cron/stats.pm:155 themes/default/templates/raw.html.ep:4
|
||||
msgid "Deleted images"
|
||||
msgstr "Images supprimées"
|
||||
|
||||
#: lib/Lutim/Command/cron/stats.pm:156 themes/default/templates/raw.html.ep:5
|
||||
msgid "Deleted images in 30 days"
|
||||
msgstr "Images supprimées dans 30 jours"
|
||||
|
||||
#: themes/default/templates/index.html.ep:116 themes/default/templates/myfiles.html.ep:127 themes/default/templates/partial/common.js.ep:178 themes/default/templates/partial/common.js.ep:181
|
||||
msgid "Deletion link"
|
||||
msgstr "Lien de suppression"
|
||||
|
||||
#: themes/default/templates/gallery.html.ep:10
|
||||
msgid "Download all images"
|
||||
msgstr "Télécharger toutes les images"
|
||||
|
||||
#: themes/default/templates/index.html.ep:101 themes/default/templates/index.html.ep:99 themes/default/templates/partial/lutim.js.ep:102 themes/default/templates/partial/lutim.js.ep:98
|
||||
msgid "Download link"
|
||||
msgstr "Lien de téléchargement"
|
||||
|
||||
#: themes/default/templates/index.html.ep:28 themes/default/templates/index.html.ep:31 themes/default/templates/myfiles.html.ep:78 themes/default/templates/myfiles.html.ep:81
|
||||
msgid "Download zip link"
|
||||
msgstr "Lien de téléchargement de l’archive des images"
|
||||
|
||||
#: themes/default/templates/index.html.ep:207
|
||||
msgid "Drag & drop images here"
|
||||
msgstr "Déposez vos images ici"
|
||||
|
||||
#: themes/default/templates/about.html.ep:7
|
||||
msgid ""
|
||||
"Drag and drop an image in the appropriate area or use the traditional way to "
|
||||
"send files and Lutim will provide you four URLs. One to view the image, an "
|
||||
"other to directly download it, one you can use on social networks and a last "
|
||||
"to delete the image when you want."
|
||||
msgstr ""
|
||||
"Faites glisser des images dans la zone prévue à cet effet ou sélectionnez un "
|
||||
"fichier de façon classique et Lutim vous fournira quatre URLs en retour. Une "
|
||||
"pour afficher l’image, une autre pour la télécharger directement, une pour l’"
|
||||
"utiliser sur les réseaux sociaux et une dernière pour supprimer votre image "
|
||||
"quand vous le souhaitez."
|
||||
|
||||
#: themes/default/templates/index.html.ep:168 themes/default/templates/index.html.ep:199
|
||||
msgid "Encrypt the image (Lutim does not keep the key)."
|
||||
msgstr "Chiffrer l’image (Lutim ne stocke pas la clé)."
|
||||
|
||||
#: themes/default/templates/partial/lutim.js.ep:45 themes/default/templates/partial/myfiles.js.ep:113
|
||||
msgid "Error while trying to modify the image."
|
||||
msgstr "Une erreur est survenue en essayant de modifier l’image."
|
||||
|
||||
#: themes/default/templates/stats.html.ep:10
|
||||
msgid "Evolution of total files"
|
||||
msgstr "Évolution du nombre total de fichiers"
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:126
|
||||
msgid "Expires at"
|
||||
msgstr "Expire le"
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:112
|
||||
msgid "Export localStorage data"
|
||||
msgstr "Exporter les données localStorage"
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:121
|
||||
msgid "File name"
|
||||
msgstr "Nom du fichier"
|
||||
|
||||
#: themes/default/templates/about.html.ep:24
|
||||
msgid ""
|
||||
"For more details, see the <a href=\"https://framagit.org/luc/"
|
||||
"lutim\">homepage of the project</a>."
|
||||
msgstr ""
|
||||
"Pour plus de détails, consultez la page <a href=\"https://framagit.org/luc/"
|
||||
"lutim\">Github</a> du projet."
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:80
|
||||
msgid "Fork me!"
|
||||
msgstr "Créez un fork !"
|
||||
|
||||
#: themes/default/templates/index.html.ep:10 themes/default/templates/index.html.ep:13 themes/default/templates/myfiles.html.ep:60 themes/default/templates/myfiles.html.ep:63
|
||||
msgid "Gallery link"
|
||||
msgstr "Lien vers la galerie"
|
||||
|
||||
#: themes/default/templates/partial/common.js.ep:116 themes/default/templates/partial/common.js.ep:134
|
||||
msgid "Hit Ctrl+C, then Enter to copy the short link"
|
||||
msgstr "Faites Ctrl+C puis appuyez sur la touche Entrée pour copier le lien"
|
||||
|
||||
#: themes/default/templates/layouts/default.html.ep:47
|
||||
msgid "Homepage"
|
||||
msgstr "Accueil"
|
||||
|
||||
#: themes/default/templates/about.html.ep:20
|
||||
msgid "How do you pronounce Lutim?"
|
||||
msgstr "Comment doit-on prononcer Lutim ?"
|
||||
|
||||
#: themes/default/templates/about.html.ep:6
|
||||
msgid "How does it work?"
|
||||
msgstr "Comment ça marche ?"
|
||||
|
||||
#: themes/default/templates/about.html.ep:18
|
||||
msgid "How to report an image?"
|
||||
msgstr "Comment peut-on faire pour signaler une image ?"
|
||||
|
||||
#: themes/default/templates/about.html.ep:14
|
||||
msgid ""
|
||||
"If the files are deleted if you ask it while posting it, their SHA512 "
|
||||
"footprint are retained."
|
||||
msgstr ""
|
||||
"Si les fichiers sont bien supprimés si vous en avez exprimé le choix, leur "
|
||||
"empreinte SHA512 est toutefois conservée."
|
||||
|
||||
#: themes/default/templates/index.html.ep:181 themes/default/templates/index.html.ep:221
|
||||
msgid "Image URL"
|
||||
msgstr "URL de l’image"
|
||||
|
||||
#: lib/Lutim/Command/cron/stats.pm:153 themes/default/templates/raw.html.ep:2
|
||||
msgid "Image delay"
|
||||
msgstr "Durée de rétention de l’image"
|
||||
|
||||
#: themes/default/templates/partial/common.js.ep:157
|
||||
msgid "Image deleted"
|
||||
msgstr "Image supprimée"
|
||||
|
||||
#: lib/Lutim/Controller/Image.pm:756
|
||||
msgid "Image not found."
|
||||
msgstr "Image non trouvée."
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:113
|
||||
msgid "Import localStorage data"
|
||||
msgstr "Importer des données localStorage"
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:69
|
||||
msgid "Informations"
|
||||
msgstr "Informations"
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:25
|
||||
msgid "Install webapp"
|
||||
msgstr "Installer la webapp"
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:21
|
||||
msgid "Instance's statistics"
|
||||
msgstr "Statistiques de l’instance"
|
||||
|
||||
#: themes/default/templates/about.html.ep:11
|
||||
msgid "Is it really anonymous?"
|
||||
msgstr "C’est vraiment anonyme ?"
|
||||
|
||||
#: themes/default/templates/about.html.ep:9
|
||||
msgid "Is it really free (as in free beer)?"
|
||||
msgstr "C’est vraiment gratuit ?"
|
||||
|
||||
#: themes/default/templates/about.html.ep:21
|
||||
msgid ""
|
||||
"Juste like you pronounce the French word <a href=\"https://fr.wikipedia.org/"
|
||||
"wiki/Lutin\">lutin</a> (/ly.tɛ̃/)."
|
||||
msgstr ""
|
||||
"Comme on prononce <a href=\"https://fr.wikipedia.org/wiki/Lutin\">lutin</a> "
|
||||
"(/ly.tɛ̃/)."
|
||||
|
||||
#: themes/default/templates/index.html.ep:171 themes/default/templates/index.html.ep:202
|
||||
msgid "Keep EXIF tags"
|
||||
msgstr "Conserver les données EXIF"
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:43
|
||||
msgid "Language"
|
||||
msgstr "Langue"
|
||||
|
||||
#: themes/default/templates/index.html.ep:136 themes/default/templates/index.html.ep:184 themes/default/templates/index.html.ep:224 themes/default/templates/partial/lutim.js.ep:165
|
||||
msgid "Let's go!"
|
||||
msgstr "Allons-y !"
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:74
|
||||
msgid "License:"
|
||||
msgstr "Licence :"
|
||||
|
||||
#: themes/default/templates/index.html.ep:107 themes/default/templates/index.html.ep:109 themes/default/templates/partial/lutim.js.ep:112 themes/default/templates/partial/lutim.js.ep:116
|
||||
msgid "Link for share on social networks"
|
||||
msgstr "Lien pour partager sur les réseaux sociaux"
|
||||
|
||||
#: themes/default/templates/login.html.ep:8
|
||||
msgid "Login"
|
||||
msgstr "Connexion"
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:33
|
||||
msgid "Logout"
|
||||
msgstr "Déconnexion"
|
||||
|
||||
#: themes/default/templates/zip.html.ep:7
|
||||
msgid ""
|
||||
"Lutim can't zip so many images at once, so it splitted your demand in "
|
||||
"multiple URLs."
|
||||
msgstr ""
|
||||
"Lutim ne peut zipper autant d’images à la fois, votre demande a donc été "
|
||||
"découpée en plusieurs URL."
|
||||
|
||||
#: themes/default/templates/about.html.ep:4
|
||||
msgid ""
|
||||
"Lutim is a free (as in free beer) and anonymous image hosting service. It's "
|
||||
"also the name of the free (as in free speech) software which provides this "
|
||||
"service."
|
||||
msgstr ""
|
||||
"Lutim est un service gratuit et anonyme d’hébergement d’images. Il s’agit "
|
||||
"aussi du nom du logiciel (libre) qui fournit ce service."
|
||||
|
||||
#: themes/default/templates/about.html.ep:25
|
||||
msgid "Main developers"
|
||||
msgstr "Développeurs de l’application"
|
||||
|
||||
#: themes/default/templates/index.html.ep:91 themes/default/templates/index.html.ep:93 themes/default/templates/partial/lutim.js.ep:86 themes/default/templates/partial/lutim.js.ep:89
|
||||
msgid "Markdown syntax"
|
||||
msgstr "Syntaxe Markdown"
|
||||
|
||||
#: themes/default/templates/partial/myfiles.js.ep:149
|
||||
msgid "Modify expiration delay"
|
||||
msgstr "Modifier le délai d’expiration"
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:7 themes/default/templates/partial/navbar.html.ep:18
|
||||
msgid "My images"
|
||||
msgstr "Mes images"
|
||||
|
||||
#: themes/default/templates/gallery.html.ep:45
|
||||
msgid "Next (arrow right)"
|
||||
msgstr "Suivant (flêche droite)"
|
||||
|
||||
#: themes/default/templates/partial/myfiles.js.ep:105 themes/default/templates/partial/myfiles.js.ep:132
|
||||
msgid "No limit"
|
||||
msgstr "Pas de date d’expiration"
|
||||
|
||||
#: themes/default/templates/index.html.ep:183 themes/default/templates/index.html.ep:216
|
||||
msgid "Only images are allowed"
|
||||
msgstr "Seules les images sont acceptées"
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:11
|
||||
msgid ""
|
||||
"Only the images sent with this browser will be listed here. The details are "
|
||||
"stored in localStorage: if you delete your localStorage data, you'll loose "
|
||||
"these details."
|
||||
msgstr ""
|
||||
"Seules les images envoyées avec ce navigateur seront listées ici. Les "
|
||||
"détails sont stockées en localStorage : si vous supprimez vos données "
|
||||
"localStorage, vous perdrez ces détails."
|
||||
|
||||
#: themes/default/templates/about.html.ep:16
|
||||
msgid ""
|
||||
"Only the uploader! (well, only if he's the only owner of the images' rights "
|
||||
"before the upload)"
|
||||
msgstr ""
|
||||
"Seulement l’envoyeur ! (enfin, seulement s’il possède des droits exclusifs "
|
||||
"sur les images avant de les envoyer)"
|
||||
|
||||
#: themes/default/templates/login.html.ep:12
|
||||
msgid "Password"
|
||||
msgstr "Mot de passe"
|
||||
|
||||
#: themes/default/templates/zip.html.ep:12
|
||||
msgid "Please click on each URL to download the different zip files."
|
||||
msgstr ""
|
||||
"Veuillez cliquer sur chaque URL pour télécharger les différents fichiers zip."
|
||||
""
|
||||
|
||||
#. (config('contact')
|
||||
#: themes/default/templates/about.html.ep:19
|
||||
msgid "Please contact the administrator: %1"
|
||||
msgstr "Veuillez contacter l’administrateur : %1"
|
||||
|
||||
#: lib/Lutim/Controller/Authent.pm:36
|
||||
msgid "Please, check your credentials: unable to authenticate."
|
||||
msgstr "Veuillez vérifier vos identifiants : impossible de vous authentifier."
|
||||
|
||||
#: themes/default/templates/gallery.html.ep:43
|
||||
msgid "Previous (arrow left)"
|
||||
msgstr "Précédent (flêche gauche)"
|
||||
|
||||
#: themes/default/templates/index.html.ep:46 themes/default/templates/index.html.ep:49 themes/default/templates/myfiles.html.ep:96 themes/default/templates/myfiles.html.ep:99
|
||||
msgid "Random image link"
|
||||
msgstr "Lien vers une image aléatoire"
|
||||
|
||||
#: themes/default/templates/stats.html.ep:22
|
||||
msgid "Raw stats"
|
||||
msgstr "Statistiques brutes"
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:52
|
||||
msgid "Save changes"
|
||||
msgstr "Enregistrer les modifications"
|
||||
|
||||
#: themes/default/templates/index.html.ep:176
|
||||
msgid "Send an image"
|
||||
msgstr "Envoyer une image"
|
||||
|
||||
#: themes/default/templates/login.html.ep:16 themes/default/templates/logout.html.ep:5 themes/default/templates/partial/navbar.html.ep:37
|
||||
msgid "Signin"
|
||||
msgstr "Connexion"
|
||||
|
||||
#: themes/default/templates/index.html.ep:151 themes/default/templates/partial/gallery.js.ep:211 themes/default/templates/partial/lutim.js.ep:176
|
||||
msgid "Something bad happened"
|
||||
msgstr "Un problème est survenu"
|
||||
|
||||
#. ($c->config('contact')
|
||||
#: lib/Lutim/Controller/Image.pm:763
|
||||
msgid ""
|
||||
"Something went wrong when creating the zip file. Try again later or contact "
|
||||
"the administrator (%1)."
|
||||
msgstr ""
|
||||
"Quelque chose s’est mal passé lors de la création de l’archive. Veuillez "
|
||||
"réessayer plus tard ou contactez l’administrateur (%1)."
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:55
|
||||
msgid "Support the author"
|
||||
msgstr "Supportez l’auteur"
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:63
|
||||
msgid "Support the author on Liberapay"
|
||||
msgstr "Supporter l’auteur sur Liberapay"
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:60
|
||||
msgid "Support the author on Tipeee"
|
||||
msgstr "Supporter l’auteur sur Tipeee"
|
||||
|
||||
#: themes/default/templates/about.html.ep:13
|
||||
msgid ""
|
||||
"The IP address of the image's sender is retained for a delay which depends "
|
||||
"of the administrator's choice (for the official instance, which is located "
|
||||
"in France, it's one year)."
|
||||
msgstr ""
|
||||
"L’IP de la personne ayant déposé l’image est stockée pendant un délai "
|
||||
"dépendant de l’administrateur de l’instance (pour l’instance officielle, "
|
||||
"dont le serveur est en France, c’est un délai d’un an)."
|
||||
|
||||
#: themes/default/templates/about.html.ep:23
|
||||
msgid ""
|
||||
"The Lutim software is a <a href=\"http://en.wikipedia.org/wiki/"
|
||||
"Free_software\">free software</a>, which allows you to download and install "
|
||||
"it on you own server. Have a look at the <a href=\"https://www.gnu.org/"
|
||||
"licenses/agpl-3.0.html\">AGPL</a> to see what you can do."
|
||||
msgstr ""
|
||||
"Le logiciel Lutim est un <a href=\"https://fr.wikipedia.org/wiki/"
|
||||
"Logiciel_libre\">logiciel libre</a>, ce qui vous permet de le télécharger et "
|
||||
"de l’installer sur votre propre serveur. Jetez un coup d’œil à l’<a href=\""
|
||||
"https://www.gnu.org/licenses/agpl-3.0.html\">AGPL</a> pour voir quels sont "
|
||||
"vos droits."
|
||||
|
||||
#: lib/Lutim/Controller/Image.pm:347
|
||||
msgid "The URL is not valid."
|
||||
msgstr "L’URL n’est pas valide."
|
||||
|
||||
#: themes/default/templates/zip.html.ep:16
|
||||
msgid ""
|
||||
"The automatic download process will open a tab in your browser for each link."
|
||||
" You need to allow popups for Lutim."
|
||||
msgstr ""
|
||||
"Le processus de téléchargement automatique va ouvrir un onglet dans votre "
|
||||
"navigateur pour chaque lien. Vous devez autoriser les fenêtres popup pour "
|
||||
"Lutim."
|
||||
|
||||
#: themes/default/templates/partial/myfiles.js.ep:32
|
||||
msgid "The data has been successfully imported."
|
||||
msgstr "Les données ont été importées avec succès."
|
||||
|
||||
#: lib/Lutim/Controller/Image.pm:160 lib/Lutim/Controller/Image.pm:228
|
||||
msgid "The delete token is invalid."
|
||||
msgstr "Le jeton de suppression est invalide."
|
||||
|
||||
#. ($upload->filename)
|
||||
#: lib/Lutim/Controller/Image.pm:488
|
||||
msgid "The file %1 is not an image."
|
||||
msgstr "Le fichier %1 n’est pas une image."
|
||||
|
||||
#. ($tx->res->max_message_size)
|
||||
#. ($c->req->max_message_size)
|
||||
#. (config('max_file_size')
|
||||
#: lib/Lutim/Controller/Image.pm:311 lib/Lutim/Controller/Image.pm:380 themes/default/templates/partial/lutim.js.ep:249
|
||||
msgid "The file exceed the size limit (%1)"
|
||||
msgstr "Le fichier dépasse la limite de taille (%1)"
|
||||
|
||||
#: themes/default/templates/stats.html.ep:12
|
||||
msgid "The graph's datas are not updated in real-time."
|
||||
msgstr "Les données du graphique ne sont pas mises à jour en temps réél."
|
||||
|
||||
#. ($image->filename)
|
||||
#: lib/Lutim/Controller/Image.pm:230
|
||||
msgid "The image %1 has already been deleted."
|
||||
msgstr "L’image %1 a déjà été supprimée."
|
||||
|
||||
#. ($image->filename)
|
||||
#: lib/Lutim/Controller/Image.pm:239 lib/Lutim/Controller/Image.pm:244
|
||||
msgid "The image %1 has been successfully deleted"
|
||||
msgstr "L’image %1 a été supprimée avec succès"
|
||||
|
||||
#: themes/default/templates/index.html.ep:63
|
||||
msgid "The images are encrypted on the server (Lutim does not keep the key)."
|
||||
msgstr ""
|
||||
"Les images sont chiffrées sur le serveur (Lutim ne stocke pas la clé)."
|
||||
|
||||
#: themes/default/templates/about.html.ep:5
|
||||
msgid ""
|
||||
"The images you post on Lutim can be stored indefinitely or be deleted at "
|
||||
"first view or after a delay selected from those proposed."
|
||||
msgstr ""
|
||||
"Les images déposées sur Lutim peuvent être stockées indéfiniment, ou "
|
||||
"s’effacer dès le premier affichage ou au bout du délai choisi parmi ceux "
|
||||
"proposés."
|
||||
|
||||
#: lib/Lutim/Controller/Image.pm:168
|
||||
msgid "The image’s delay has been successfully modified"
|
||||
msgstr "Le délai de l’image a été modifié avec succès"
|
||||
|
||||
#: themes/default/templates/partial/gallery.js.ep:277
|
||||
msgid "There is XXXX image(s) in the gallery"
|
||||
msgstr "Il y a XXXX image(s) dans la galerie"
|
||||
|
||||
#. ($c->config->{contact})
|
||||
#: lib/Lutim/Controller/Image.pm:485
|
||||
msgid "There is no more available URL. Retry or contact the administrator. %1"
|
||||
msgstr ""
|
||||
"Il n’y a plus d’URL disponible. Veuillez réessayer ou contacter l’"
|
||||
"administrateur. %1"
|
||||
|
||||
#: themes/default/templates/gallery.html.ep:30
|
||||
msgid "Toggle fullscreen"
|
||||
msgstr "Basculer le plein écran"
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:8
|
||||
msgid "Toggle navigation"
|
||||
msgstr "Étendre la barre de navigation"
|
||||
|
||||
#: lib/Lutim/Command/cron/stats.pm:162 themes/default/templates/raw.html.ep:11
|
||||
msgid "Total"
|
||||
msgstr "Total"
|
||||
|
||||
#: themes/default/templates/index.html.ep:78 themes/default/templates/partial/lutim.js.ep:17
|
||||
msgid "Tweet it!"
|
||||
msgstr "Tweetez !"
|
||||
|
||||
#: themes/default/templates/partial/common.js.ep:110 themes/default/templates/partial/common.js.ep:90
|
||||
msgid "Unable to copy to clipboard"
|
||||
msgstr "Impossible de copier dans le presse-papier"
|
||||
|
||||
#. ($short)
|
||||
#: lib/Lutim/Controller/Image.pm:108 lib/Lutim/Controller/Image.pm:202 lib/Lutim/Controller/Image.pm:273
|
||||
msgid "Unable to find the image %1."
|
||||
msgstr "Impossible de trouver l’image %1."
|
||||
|
||||
#: lib/Lutim/Controller/Image.pm:574 lib/Lutim/Controller/Image.pm:619 lib/Lutim/Controller/Image.pm:660 lib/Lutim/Controller/Image.pm:703 lib/Lutim/Controller/Image.pm:715 lib/Lutim/Controller/Image.pm:726 lib/Lutim/Controller/Image.pm:753 lib/Lutim/Plugin/Helpers.pm:88
|
||||
msgid "Unable to find the image: it has been deleted."
|
||||
msgstr "Impossible de trouver l’image : elle a été supprimée."
|
||||
|
||||
#: lib/Lutim/Controller/Image.pm:145
|
||||
msgid "Unable to get counter"
|
||||
msgstr "Impossible de récupérer le compteur"
|
||||
|
||||
#: themes/default/templates/about.html.ep:17
|
||||
msgid ""
|
||||
"Unlike many image sharing services, you don't give us rights on uploaded "
|
||||
"images."
|
||||
msgstr ""
|
||||
"Au contraire de la majorité des services de partages d’image, vous ne nous "
|
||||
"cédez aucun droit sur les images envoyées."
|
||||
|
||||
#: themes/default/templates/index.html.ep:180 themes/default/templates/index.html.ep:219
|
||||
msgid "Upload an image with its URL"
|
||||
msgstr "Déposer une image par son URL"
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:125
|
||||
msgid "Uploaded at"
|
||||
msgstr "Envoyé le"
|
||||
|
||||
#: themes/default/templates/stats.html.ep:6
|
||||
msgid "Uploaded files by days"
|
||||
msgstr "Fichiers envoyés, par jour"
|
||||
|
||||
#. ($c->app->config('contact')
|
||||
#: lib/Lutim/Plugin/Helpers.pm:221
|
||||
msgid ""
|
||||
"Uploading is currently disabled, please try later or contact the "
|
||||
"administrator (%1)."
|
||||
msgstr ""
|
||||
"L’envoi d’images est actuellement désactivé, veuillez réessayer plus tard ou "
|
||||
"contacter l’administrateur (%1)."
|
||||
|
||||
#: themes/default/templates/index.html.ep:83 themes/default/templates/index.html.ep:85 themes/default/templates/myfiles.html.ep:122 themes/default/templates/partial/lutim.js.ep:72 themes/default/templates/partial/lutim.js.ep:76
|
||||
msgid "View link"
|
||||
msgstr "Lien d’affichage"
|
||||
|
||||
#: themes/default/templates/about.html.ep:22
|
||||
msgid "What about the software which provides the service?"
|
||||
msgstr "Et à propos du logiciel qui fournit le service ?"
|
||||
|
||||
#: themes/default/templates/about.html.ep:3
|
||||
msgid "What is Lutim?"
|
||||
msgstr "Qu’est-ce que Lutim ?"
|
||||
|
||||
#: themes/default/templates/about.html.ep:15
|
||||
msgid "Who owns rights on images uploaded on Lutim?"
|
||||
msgstr "Qui possède des droits sur les images envoyées sur Lutim ?"
|
||||
|
||||
#: themes/default/templates/about.html.ep:12
|
||||
msgid ""
|
||||
"Yes, it is! On the other side, for legal reasons, your IP address will be "
|
||||
"stored when you send an image. Don't panic, it is normally the case of all "
|
||||
"sites on which you send files!"
|
||||
msgstr ""
|
||||
"Oui, ça l’est ! Par contre, pour des raisons légales, votre adresse IP sera "
|
||||
"enregistrée lorsque vous enverrez une image. Ne vous affolez pas, c’est de "
|
||||
"toute façon normalement le cas de tous les sites sur lesquels vous envoyez "
|
||||
"des fichiers !"
|
||||
|
||||
#: themes/default/templates/about.html.ep:10
|
||||
msgid ""
|
||||
"Yes, it is! On the other side, if you want to support the developer, you can "
|
||||
"do it via <a href=\"https://www.tipeee.com/fiat-tux\">Tipeee</a> or via <a "
|
||||
"href=\"https://liberapay.com/sky/\">Liberapay</a>."
|
||||
msgstr ""
|
||||
"Oui, ça l’est ! Par contre, si vous avez envie de soutenir le développeur, "
|
||||
"vous pouvez faire un microdon avec <a href=\"https://www.tipeee.com/fiat-"
|
||||
"tux\">Tipeee</a> ou via <a href=\"https://liberapay.com/sky/\">Liberapay</a>."
|
||||
""
|
||||
|
||||
#: themes/default/templates/zip.html.ep:6
|
||||
msgid "You asked to download a zip archive for too much files."
|
||||
msgstr ""
|
||||
"Vous avez demandé de télécharger une archive zip pour trop de fichiers."
|
||||
|
||||
#: themes/default/templates/about.html.ep:8
|
||||
msgid ""
|
||||
"You can, optionally, request that the image(s) posted on Lutim to be deleted "
|
||||
"at first view (or download) or after the delay selected from those proposed."
|
||||
msgstr ""
|
||||
"Vous pouvez, de façon facultative, demander à ce que la ou les images "
|
||||
"déposées sur Lutim soient supprimées après leur premier affichage (ou "
|
||||
"téléchargement) ou au bout d’un délai choisi parmi ceux proposés."
|
||||
|
||||
#: lib/Lutim/Controller/Authent.pm:27
|
||||
msgid "You have been successfully logged in."
|
||||
msgstr "Vous avez été connecté·e avec succès."
|
||||
|
||||
#: lib/Lutim/Controller/Authent.pm:66 themes/default/templates/logout.html.ep:3
|
||||
msgid "You have been successfully logged out."
|
||||
msgstr "Vous avez été déconnecté·e avec succès."
|
||||
|
||||
#: themes/default/templates/gallery.html.ep:31
|
||||
msgid "Zoom in/out"
|
||||
msgstr "Zoomer / dézoomer"
|
||||
|
||||
#: themes/default/templates/about.html.ep:27
|
||||
msgid "and on"
|
||||
msgstr "et sur"
|
||||
|
||||
#: themes/default/templates/about.html.ep:40
|
||||
msgid "arabic translation"
|
||||
msgstr "traduction en arabe"
|
||||
|
||||
#: themes/default/templates/about.html.ep:27
|
||||
msgid "core developer"
|
||||
msgstr "développeur principal"
|
||||
|
||||
#: lib/Lutim.pm:348 lib/Lutim/Command/cron/stats.pm:157 lib/Lutim/Command/cron/stats.pm:171 lib/Lutim/Command/cron/stats.pm:188 themes/default/templates/index.html.ep:3 themes/default/templates/myfiles.html.ep:3 themes/default/templates/partial/raw.js.ep:21 themes/default/templates/partial/raw.js.ep:4 themes/default/templates/raw.html.ep:6
|
||||
msgid "no time limit"
|
||||
msgstr "Pas de limitation de durée"
|
||||
|
||||
#: themes/default/templates/about.html.ep:38
|
||||
msgid "occitan translation"
|
||||
msgstr "traduction occitane"
|
||||
|
||||
#: themes/default/templates/about.html.ep:27
|
||||
msgid "on"
|
||||
msgstr "sur"
|
||||
|
||||
#: themes/default/templates/about.html.ep:39
|
||||
msgid "paste image to upload ability"
|
||||
msgstr "possibilité de coller une image pour l’envoyer"
|
||||
|
||||
#: themes/default/templates/about.html.ep:41
|
||||
msgid "russian translation"
|
||||
msgstr "traduction russe"
|
||||
|
||||
#: themes/default/templates/about.html.ep:36
|
||||
msgid "spanish translation"
|
||||
msgstr "traduction espagnole"
|
||||
|
||||
#: themes/default/templates/about.html.ep:28
|
||||
msgid "webapp developer"
|
||||
msgstr "développeur de la webapp"
|
||||
|
||||
#: themes/default/templates/index.html.ep:171 themes/default/templates/index.html.ep:215
|
||||
msgid "Tiling watermark"
|
||||
msgstr "Filigrane en tuile"
|
||||
|
||||
#: themes/default/templates/index.html.ep:174 themes/default/templates/index.html.ep:218
|
||||
msgid "Single watermark"
|
||||
msgstr "Filigrane simple"
|
||||
|
||||
#: themes/default/templates/index.html.ep:177 themes/default/templates/index.html.ep:221
|
||||
msgid "No watermark"
|
||||
msgstr "Pas de filigrane"
|
||||
|
||||
#: themes/default/templates/about.html.ep:24
|
||||
msgid "For more details, see the <a href=\"https://framagit.org/fiat-tux/hat-softwares/lutim\">homepage of the project</a>."
|
||||
msgstr ""
|
||||
"Pour plus de détails, consultez la <a href=\"https://framagit.org/fiat-tux/"
|
||||
"hat-softwares/lutim\">page du projet</a>."
|
||||
637
themes/default/lib/Lutim/I18N/hr.po
Normal file
637
themes/default/lib/Lutim/I18N/hr.po
Normal file
@@ -0,0 +1,637 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"PO-Revision-Date: 2022-07-24 18:36+0000\n"
|
||||
"Last-Translator: Milo Ivir <mail@milotype.de>\n"
|
||||
"Language-Team: Croatian <https://weblate.framasoft.org/projects/lutim/"
|
||||
"default-theme/hr/>\n"
|
||||
"Language: hr\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
|
||||
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
|
||||
"X-Generator: Weblate 4.13.1\n"
|
||||
|
||||
#. (7)
|
||||
#. (30)
|
||||
#. ($delay)
|
||||
#. (config('max_delay')
|
||||
#: lib/Lutim/Command/cron/stats.pm:156 lib/Lutim/Command/cron/stats.pm:157 lib/Lutim/Command/cron/stats.pm:170 lib/Lutim/Command/cron/stats.pm:171 lib/Lutim/Command/cron/stats.pm:187 lib/Lutim/Command/cron/stats.pm:188 themes/default/templates/myfiles.html.ep:24 themes/default/templates/myfiles.html.ep:33 themes/default/templates/myfiles.html.ep:34 themes/default/templates/partial/for_my_delay.html.ep:13 themes/default/templates/partial/for_my_delay.html.ep:14 themes/default/templates/partial/for_my_delay.html.ep:4 themes/default/templates/partial/lutim.js.ep:140 themes/default/templates/partial/lutim.js.ep:149 themes/default/templates/partial/lutim.js.ep:150 themes/default/templates/partial/raw.js.ep:23 themes/default/templates/partial/raw.js.ep:24 themes/default/templates/partial/raw.js.ep:6 themes/default/templates/partial/raw.js.ep:7 themes/default/templates/raw.html.ep:8 themes/default/templates/raw.html.ep:9
|
||||
msgid "%1 days"
|
||||
msgstr "%1 dana"
|
||||
|
||||
#. ($total)
|
||||
#: themes/default/templates/stats.html.ep:2
|
||||
msgid "%1 sent images on this instance from beginning."
|
||||
msgstr "Broj poslanih slika u ovoj instanci od početka: %1."
|
||||
|
||||
#: themes/default/templates/index.html.ep:228
|
||||
msgid "-or-"
|
||||
msgstr "-ili-"
|
||||
|
||||
#: lib/Lutim.pm:342 lib/Lutim/Command/cron/stats.pm:158 lib/Lutim/Command/cron/stats.pm:172 lib/Lutim/Command/cron/stats.pm:189 themes/default/templates/index.html.ep:5 themes/default/templates/myfiles.html.ep:5 themes/default/templates/partial/raw.js.ep:25 themes/default/templates/partial/raw.js.ep:8 themes/default/templates/raw.html.ep:10
|
||||
msgid "1 year"
|
||||
msgstr "1 godina"
|
||||
|
||||
#: lib/Lutim.pm:341 lib/Lutim/Command/cron/stats.pm:155 lib/Lutim/Command/cron/stats.pm:169 lib/Lutim/Command/cron/stats.pm:186 themes/default/templates/index.html.ep:4 themes/default/templates/myfiles.html.ep:33 themes/default/templates/myfiles.html.ep:4 themes/default/templates/partial/for_my_delay.html.ep:13 themes/default/templates/partial/lutim.js.ep:149 themes/default/templates/partial/raw.js.ep:22 themes/default/templates/partial/raw.js.ep:5 themes/default/templates/raw.html.ep:7
|
||||
msgid "24 hours"
|
||||
msgstr "24 sata"
|
||||
|
||||
#: themes/default/templates/partial/myfiles.js.ep:210
|
||||
msgid ": Error while trying to get the counter."
|
||||
msgstr ": Greška u dohvaćanju brojača."
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:63
|
||||
msgid "About"
|
||||
msgstr "O programu"
|
||||
|
||||
#: lib/Lutim/Command/cron/stats.pm:151 themes/default/templates/raw.html.ep:3
|
||||
msgid "Active images"
|
||||
msgstr "Aktivne slike"
|
||||
|
||||
#: lib/Lutim/Controller/Image.pm:329
|
||||
msgid "An error occured while downloading the image."
|
||||
msgstr "Dogodila se greška prilikom preuzimanja slike."
|
||||
|
||||
#: themes/default/templates/zip.html.ep:2
|
||||
msgid "Archives download"
|
||||
msgstr "Preuzimanje arhiva"
|
||||
|
||||
#: themes/default/templates/about.html.ep:44 themes/default/templates/myfiles.html.ep:129 themes/default/templates/stats.html.ep:25
|
||||
msgid "Back to homepage"
|
||||
msgstr "Natrag na web-stranicu"
|
||||
|
||||
#: themes/default/templates/index.html.ep:231 themes/default/templates/index.html.ep:232
|
||||
msgid "Click to open the file browser"
|
||||
msgstr "Pritisni za otvaranje preglednika datoteka"
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:51
|
||||
msgid "Close"
|
||||
msgstr "Zatvori"
|
||||
|
||||
#: themes/default/templates/gallery.html.ep:29
|
||||
msgid "Close (Esc)"
|
||||
msgstr "Zatvori (Esc)"
|
||||
|
||||
#: themes/default/templates/about.html.ep:30
|
||||
msgid "Contributors"
|
||||
msgstr "Doprinositelji"
|
||||
|
||||
#: themes/default/templates/partial/common.js.ep:113 themes/default/templates/partial/common.js.ep:93
|
||||
msgid "Copied to clipboard"
|
||||
msgstr "Kopirano u međuspremnik"
|
||||
|
||||
#: themes/default/templates/partial/lutim.js.ep:215 themes/default/templates/partial/lutim.js.ep:278 themes/default/templates/partial/lutim.js.ep:364
|
||||
msgid "Copy all view links to clipboard"
|
||||
msgstr "Kopiraj sve poveznice prikaza u međuspremnik"
|
||||
|
||||
#: themes/default/templates/index.html.ep:105 themes/default/templates/index.html.ep:16 themes/default/templates/index.html.ep:32 themes/default/templates/index.html.ep:48 themes/default/templates/index.html.ep:81 themes/default/templates/index.html.ep:89 themes/default/templates/index.html.ep:97 themes/default/templates/myfiles.html.ep:66 themes/default/templates/myfiles.html.ep:82 themes/default/templates/myfiles.html.ep:98 themes/default/templates/partial/common.js.ep:186 themes/default/templates/partial/lutim.js.ep:106 themes/default/templates/partial/lutim.js.ep:121 themes/default/templates/partial/lutim.js.ep:80 themes/default/templates/partial/lutim.js.ep:92 themes/default/templates/partial/myfiles.js.ep:172
|
||||
msgid "Copy to clipboard"
|
||||
msgstr "Kopiraj u međuspremnik"
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:117
|
||||
msgid "Counter"
|
||||
msgstr "Brojač"
|
||||
|
||||
#: themes/default/templates/stats.html.ep:18
|
||||
msgid "Delay repartition chart for disabled images"
|
||||
msgstr "Dijagram odgode raspodjele za isključene slike"
|
||||
|
||||
#: themes/default/templates/stats.html.ep:15
|
||||
msgid "Delay repartition chart for enabled images"
|
||||
msgstr "Dijagram odgode raspodjele za uključene slike"
|
||||
|
||||
#: themes/default/templates/index.html.ep:127 themes/default/templates/index.html.ep:159 themes/default/templates/index.html.ep:203 themes/default/templates/myfiles.html.ep:118 themes/default/templates/myfiles.html.ep:45 themes/default/templates/partial/lutim.js.ep:161
|
||||
msgid "Delete at first view?"
|
||||
msgstr "Izbrisati pri prvom prikazu?"
|
||||
|
||||
#: lib/Lutim/Command/cron/stats.pm:152 themes/default/templates/raw.html.ep:4
|
||||
msgid "Deleted images"
|
||||
msgstr "Izbrisane slike"
|
||||
|
||||
#: lib/Lutim/Command/cron/stats.pm:153 themes/default/templates/raw.html.ep:5
|
||||
msgid "Deleted images in 30 days"
|
||||
msgstr "Izbrisane slike u 30 dana"
|
||||
|
||||
#: themes/default/templates/index.html.ep:110 themes/default/templates/myfiles.html.ep:121 themes/default/templates/partial/common.js.ep:178 themes/default/templates/partial/common.js.ep:181
|
||||
msgid "Deletion link"
|
||||
msgstr "Poveznica za brisanje"
|
||||
|
||||
#: themes/default/templates/gallery.html.ep:10
|
||||
msgid "Download all images"
|
||||
msgstr "Preuzmi sve slike"
|
||||
|
||||
#: themes/default/templates/index.html.ep:93 themes/default/templates/index.html.ep:95 themes/default/templates/partial/lutim.js.ep:102 themes/default/templates/partial/lutim.js.ep:98
|
||||
msgid "Download link"
|
||||
msgstr "Poveznica za preuzimanje"
|
||||
|
||||
#: themes/default/templates/index.html.ep:26 themes/default/templates/index.html.ep:28 themes/default/templates/myfiles.html.ep:76 themes/default/templates/myfiles.html.ep:78
|
||||
msgid "Download zip link"
|
||||
msgstr "Poveznica za preuzimanje zip-a"
|
||||
|
||||
#: themes/default/templates/index.html.ep:227
|
||||
msgid "Drag & drop images here"
|
||||
msgstr "Povuci i ispusti slike ovamo"
|
||||
|
||||
#: themes/default/templates/about.html.ep:7
|
||||
msgid "Drag and drop an image in the appropriate area or use the traditional way to send files and Lutim will provide you four URLs. One to view the image, an other to directly download it, one you can use on social networks and a last to delete the image when you want."
|
||||
msgstr ""
|
||||
"Povuci i ispusti sliku u odgovarajuće područje ili koristi tradicionalni "
|
||||
"način slanja datoteka i Lutim će ti dati četiri URL-a. Jedan za pregled "
|
||||
"slike, drugi za izravno preuzimanje, jedan koji možeš koristiti na "
|
||||
"društvenim mrežama i zadnji za brisanje slike kada želiš."
|
||||
|
||||
#: themes/default/templates/index.html.ep:162 themes/default/templates/index.html.ep:206
|
||||
msgid "Encrypt the image (Lutim does not keep the key)."
|
||||
msgstr "Šifriraj sliku (Lutim ne čuva ključ)."
|
||||
|
||||
#: themes/default/templates/partial/lutim.js.ep:45 themes/default/templates/partial/myfiles.js.ep:128
|
||||
msgid "Error while trying to modify the image."
|
||||
msgstr "Greška prilikom pokušaja stvaranja promjena u slici."
|
||||
|
||||
#: themes/default/templates/stats.html.ep:10
|
||||
msgid "Evolution of total files"
|
||||
msgstr "Razvoj ukupnog broja datoteka"
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:120
|
||||
msgid "Expires at"
|
||||
msgstr "Isteče"
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:106
|
||||
msgid "Export localStorage data"
|
||||
msgstr "Izvezi podatke lokalnog spremišta"
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:115
|
||||
msgid "File name"
|
||||
msgstr "Ime datoteke"
|
||||
|
||||
#: themes/default/templates/about.html.ep:24
|
||||
msgid "For more details, see the <a href=\"https://framagit.org/fiat-tux/hat-softwares/lutim\">homepage of the project</a>."
|
||||
msgstr ""
|
||||
"Pogledaj detalje na <a href=\"https://framagit.org/fiat-tux/hat-softwares/"
|
||||
"lutim\">web-stranici projekta</a>."
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:66
|
||||
msgid "Fork me!"
|
||||
msgstr "Kopiraj granu!"
|
||||
|
||||
#: themes/default/templates/index.html.ep:10 themes/default/templates/index.html.ep:12 themes/default/templates/myfiles.html.ep:60 themes/default/templates/myfiles.html.ep:62
|
||||
msgid "Gallery link"
|
||||
msgstr "Poveznica galerije"
|
||||
|
||||
#: themes/default/templates/partial/common.js.ep:116 themes/default/templates/partial/common.js.ep:134
|
||||
msgid "Hit Ctrl+C, then Enter to copy the short link"
|
||||
msgstr "Pritisni Ctrl+C, zatim Enter za kopiranje kratke poveznice"
|
||||
|
||||
#: themes/default/templates/layouts/default.html.ep:47
|
||||
msgid "Homepage"
|
||||
msgstr "Web-stranica"
|
||||
|
||||
#: themes/default/templates/about.html.ep:20
|
||||
msgid "How do you pronounce Lutim?"
|
||||
msgstr "Kako se izgovara Lutim?"
|
||||
|
||||
#: themes/default/templates/about.html.ep:6
|
||||
msgid "How does it work?"
|
||||
msgstr "Kako radi?"
|
||||
|
||||
#: themes/default/templates/about.html.ep:18
|
||||
msgid "How to report an image?"
|
||||
msgstr "Kako prijaviti sliku?"
|
||||
|
||||
#: themes/default/templates/about.html.ep:14
|
||||
msgid "If the files are deleted if you ask it while posting it, their SHA512 footprint are retained."
|
||||
msgstr ""
|
||||
"Ako se datoteke izbrišu ako to zatražiš dok ih objavljuješ, njihov SHA512 "
|
||||
"otisak se zadržava."
|
||||
|
||||
#: themes/default/templates/index.html.ep:188 themes/default/templates/index.html.ep:241
|
||||
msgid "Image URL"
|
||||
msgstr "URL adresa slike"
|
||||
|
||||
#: lib/Lutim/Command/cron/stats.pm:150 themes/default/templates/raw.html.ep:2
|
||||
msgid "Image delay"
|
||||
msgstr "Kašnjenje slike"
|
||||
|
||||
#: themes/default/templates/partial/common.js.ep:157
|
||||
msgid "Image deleted"
|
||||
msgstr "Slika izbrisana"
|
||||
|
||||
#: lib/Lutim/Controller/Image.pm:799
|
||||
msgid "Image not found."
|
||||
msgstr "Slika nije pronađena."
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:107
|
||||
msgid "Import localStorage data"
|
||||
msgstr "Uvezi podatke lokalnog spremišta"
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:55
|
||||
msgid "Informations"
|
||||
msgstr "Informacije"
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:25
|
||||
msgid "Install webapp"
|
||||
msgstr "Instaliraj web-aplikaciju"
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:21
|
||||
msgid "Instance's statistics"
|
||||
msgstr "Statistika instance"
|
||||
|
||||
#: themes/default/templates/about.html.ep:11
|
||||
msgid "Is it really anonymous?"
|
||||
msgstr "Je li stvarno anonimno?"
|
||||
|
||||
#: themes/default/templates/about.html.ep:9
|
||||
msgid "Is it really free (as in free beer)?"
|
||||
msgstr "Je li se stvarno može besplatno koristiti?"
|
||||
|
||||
#: themes/default/templates/about.html.ep:21
|
||||
msgid "Juste like you pronounce the French word <a href=\"https://fr.wikipedia.org/wiki/Lutin\">lutin</a> (/ly.tɛ̃/)."
|
||||
msgstr ""
|
||||
"Isto kao izgovaranje francuske riječi <a href=\"https://fr.wikipedia.org/"
|
||||
"wiki/Lutin\">lutin</a> (/ly.tɛ̃/)."
|
||||
|
||||
#: themes/default/templates/index.html.ep:165 themes/default/templates/index.html.ep:209
|
||||
msgid "Keep EXIF tags"
|
||||
msgstr "Zadrži EXIF oznake"
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:43
|
||||
msgid "Language"
|
||||
msgstr "Jezik"
|
||||
|
||||
#: themes/default/templates/index.html.ep:130 themes/default/templates/index.html.ep:191 themes/default/templates/index.html.ep:244 themes/default/templates/partial/lutim.js.ep:165
|
||||
msgid "Let's go!"
|
||||
msgstr "Kreni!"
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:60
|
||||
msgid "License:"
|
||||
msgstr "Licenca:"
|
||||
|
||||
#: themes/default/templates/index.html.ep:101 themes/default/templates/index.html.ep:103 themes/default/templates/partial/lutim.js.ep:112 themes/default/templates/partial/lutim.js.ep:116
|
||||
msgid "Link for share on social networks"
|
||||
msgstr "Poveznica za dijeljenje na društvenim mrežama"
|
||||
|
||||
#: themes/default/templates/login.html.ep:8
|
||||
msgid "Login"
|
||||
msgstr "Prijava"
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:33
|
||||
msgid "Logout"
|
||||
msgstr "Odjava"
|
||||
|
||||
#: themes/default/templates/zip.html.ep:7
|
||||
msgid "Lutim can't zip so many images at once, so it splitted your demand in multiple URLs."
|
||||
msgstr ""
|
||||
"Lutim ne može komprimirati toliko slika odjednom. Tvoj zahtjev je stoga "
|
||||
"podijeljen na više URL-ova."
|
||||
|
||||
#: themes/default/templates/about.html.ep:4
|
||||
msgid "Lutim is a free (as in free beer) and anonymous image hosting service. It's also the name of the free (as in free speech) software which provides this service."
|
||||
msgstr ""
|
||||
"Lutim je besplatna i anonimna hosting usluga za slike. To je također ime "
|
||||
"slobodnog softvera koji pruža ovu uslugu."
|
||||
|
||||
#: themes/default/templates/about.html.ep:25
|
||||
msgid "Main developers"
|
||||
msgstr "Glavni programeri"
|
||||
|
||||
#: themes/default/templates/index.html.ep:85 themes/default/templates/index.html.ep:87 themes/default/templates/partial/lutim.js.ep:86 themes/default/templates/partial/lutim.js.ep:89
|
||||
msgid "Markdown syntax"
|
||||
msgstr "Markdown sintaksa"
|
||||
|
||||
#: themes/default/templates/partial/myfiles.js.ep:179
|
||||
msgid "Modify expiration delay"
|
||||
msgstr "Promijeni odgodu isteka"
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:7 themes/default/templates/partial/navbar.html.ep:18
|
||||
msgid "My images"
|
||||
msgstr "Moje slike"
|
||||
|
||||
#: themes/default/templates/gallery.html.ep:45
|
||||
msgid "Next (arrow right)"
|
||||
msgstr "Sljedeće (desna strelica)"
|
||||
|
||||
#: themes/default/templates/partial/myfiles.js.ep:120 themes/default/templates/partial/myfiles.js.ep:162
|
||||
msgid "No limit"
|
||||
msgstr "Bez ograničenja"
|
||||
|
||||
#: themes/default/templates/index.html.ep:177 themes/default/templates/index.html.ep:221
|
||||
msgid "No watermark"
|
||||
msgstr "Bez vodenog žiga"
|
||||
|
||||
#: themes/default/templates/index.html.ep:190 themes/default/templates/index.html.ep:236
|
||||
msgid "Only images are allowed"
|
||||
msgstr "Dozvoljene su samo slike"
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:11
|
||||
msgid "Only the images sent with this browser will be listed here. The details are stored in localStorage: if you delete your localStorage data, you'll loose these details."
|
||||
msgstr ""
|
||||
"Ovdje će biti navedene samo slike poslane ovim preglednikom. Detalji se "
|
||||
"spremaju u lokalno spremište: ako izbrišeš svoje podatke lokalnog spremišta, "
|
||||
"izgubit ćeš te detalje."
|
||||
|
||||
#: themes/default/templates/about.html.ep:16
|
||||
msgid "Only the uploader! (well, only if he's the only owner of the images' rights before the upload)"
|
||||
msgstr ""
|
||||
"Samo prenositelj! (zapravo, samo ako je on jedini vlasnik prava na slike "
|
||||
"prije prijenosa)"
|
||||
|
||||
#: themes/default/templates/login.html.ep:12
|
||||
msgid "Password"
|
||||
msgstr "Lozinka"
|
||||
|
||||
#: themes/default/templates/zip.html.ep:12
|
||||
msgid "Please click on each URL to download the different zip files."
|
||||
msgstr "Pritisni svaki URL za preuzimanje zip datoteka."
|
||||
|
||||
#. (config('contact')
|
||||
#: themes/default/templates/about.html.ep:19
|
||||
msgid "Please contact the administrator: %1"
|
||||
msgstr "Kontaktiraj administratora: %1"
|
||||
|
||||
#: lib/Lutim/Controller/Authent.pm:36
|
||||
msgid "Please, check your credentials: unable to authenticate."
|
||||
msgstr "Provjeri svoje podatke autentifikacije: autentifikacija je neuspjela."
|
||||
|
||||
#: themes/default/templates/gallery.html.ep:43
|
||||
msgid "Previous (arrow left)"
|
||||
msgstr "Prethodno (lijeva strelica)"
|
||||
|
||||
#: themes/default/templates/index.html.ep:42 themes/default/templates/index.html.ep:44 themes/default/templates/myfiles.html.ep:92 themes/default/templates/myfiles.html.ep:94
|
||||
msgid "Random image link"
|
||||
msgstr "Poveznica slučajne slike"
|
||||
|
||||
#: themes/default/templates/stats.html.ep:22
|
||||
msgid "Raw stats"
|
||||
msgstr "Neobrađena statistika"
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:52
|
||||
msgid "Save changes"
|
||||
msgstr "Spremi promjene"
|
||||
|
||||
#: themes/default/templates/index.html.ep:183
|
||||
msgid "Send an image"
|
||||
msgstr "Pošalji sliku"
|
||||
|
||||
#: themes/default/templates/login.html.ep:16 themes/default/templates/logout.html.ep:5 themes/default/templates/partial/navbar.html.ep:37
|
||||
msgid "Signin"
|
||||
msgstr "Prijava"
|
||||
|
||||
#: themes/default/templates/index.html.ep:174 themes/default/templates/index.html.ep:218
|
||||
msgid "Single watermark"
|
||||
msgstr "Jedan vodeni žig"
|
||||
|
||||
#: themes/default/templates/index.html.ep:145 themes/default/templates/partial/gallery.js.ep:211 themes/default/templates/partial/lutim.js.ep:176
|
||||
msgid "Something bad happened"
|
||||
msgstr "Dogodila se greška"
|
||||
|
||||
#. ($c->config('contact')
|
||||
#: lib/Lutim/Controller/Image.pm:806
|
||||
msgid "Something went wrong when creating the zip file. Try again later or contact the administrator (%1)."
|
||||
msgstr ""
|
||||
"Dogodila se greška prilikom izrade zip datoteke. Pokušaj ponovo kasnije ili "
|
||||
"kontaktiraj administratora (%1)."
|
||||
|
||||
#: themes/default/templates/about.html.ep:13
|
||||
msgid "The IP address of the image's sender is retained for a delay which depends of the administrator's choice (for the official instance, which is located in France, it's one year)."
|
||||
msgstr ""
|
||||
"IP adresa pošiljatelja slike zadržava se odgodom koja ovisi o izboru "
|
||||
"administratora (za službenu instancu, koja se nalazi u Francuskoj, to je "
|
||||
"godinu dana)."
|
||||
|
||||
#: themes/default/templates/about.html.ep:23
|
||||
msgid "The Lutim software is a <a href=\"http://en.wikipedia.org/wiki/Free_software\">free software</a>, which allows you to download and install it on you own server. Have a look at the <a href=\"https://www.gnu.org/licenses/agpl-3.0.html\">AGPL</a> to see what you can do."
|
||||
msgstr ""
|
||||
"Softver Lutim je <a href=\"http://en.wikipedia.org/wiki/Free_software\""
|
||||
">slobodan softver</a> koji omogućuje preuzmanje i instaliranje softvera na "
|
||||
"vlastiti poslužitelj. Pogledaj <a href=\"https://www.gnu.org/licenses/agpl-3."
|
||||
"0.html\">AGPL</a> za prikaz mogućnosti."
|
||||
|
||||
#: lib/Lutim/Controller/Image.pm:348
|
||||
msgid "The URL is not valid."
|
||||
msgstr "URL nije ispravan."
|
||||
|
||||
#: themes/default/templates/zip.html.ep:16
|
||||
msgid "The automatic download process will open a tab in your browser for each link. You need to allow popups for Lutim."
|
||||
msgstr ""
|
||||
"Automatski postupak preuzimanja otvorit će karticu u tvom pregledniku za "
|
||||
"svaku poveznicu. Moraš dozvoliti skočne prozore za Lutim."
|
||||
|
||||
#: themes/default/templates/partial/myfiles.js.ep:32
|
||||
msgid "The data has been successfully imported."
|
||||
msgstr "Podaci su uspješno uvezeni."
|
||||
|
||||
#: lib/Lutim/Controller/Image.pm:160 lib/Lutim/Controller/Image.pm:228
|
||||
msgid "The delete token is invalid."
|
||||
msgstr "Token brisanja je neispravan."
|
||||
|
||||
#. ($upload->filename)
|
||||
#: lib/Lutim/Controller/Image.pm:531
|
||||
msgid "The file %1 is not an image."
|
||||
msgstr "Datoteka %1 nije slika."
|
||||
|
||||
#. ($tx->res->max_message_size)
|
||||
#. ($c->req->max_message_size)
|
||||
#. (config('max_file_size')
|
||||
#: lib/Lutim/Controller/Image.pm:312 lib/Lutim/Controller/Image.pm:381 themes/default/templates/partial/lutim.js.ep:249
|
||||
msgid "The file exceed the size limit (%1)"
|
||||
msgstr "Datoteka je prekoračila granicu (%1)"
|
||||
|
||||
#: themes/default/templates/stats.html.ep:12
|
||||
msgid "The graph's datas are not updated in real-time."
|
||||
msgstr "Podaci dijagrama se ne aktualiziraju se u stvarnom vremenu."
|
||||
|
||||
#. ($image->filename)
|
||||
#: lib/Lutim/Controller/Image.pm:230
|
||||
msgid "The image %1 has already been deleted."
|
||||
msgstr "Slika %1 je već izbrisana."
|
||||
|
||||
#. ($image->filename)
|
||||
#: lib/Lutim/Controller/Image.pm:239 lib/Lutim/Controller/Image.pm:244
|
||||
msgid "The image %1 has been successfully deleted"
|
||||
msgstr "Slika %1 je uspješno izbrisana"
|
||||
|
||||
#: themes/default/templates/index.html.ep:57
|
||||
msgid "The images are encrypted on the server (Lutim does not keep the key)."
|
||||
msgstr "Slike su šifrirane na poslužitelju (Lutim ne čuva ključ)."
|
||||
|
||||
#: themes/default/templates/about.html.ep:5
|
||||
msgid "The images you post on Lutim can be stored indefinitely or be deleted at first view or after a delay selected from those proposed."
|
||||
msgstr ""
|
||||
"Slike koje objeviš na Lutimu mogu se spremiti na neodređeno vrijeme ili se "
|
||||
"mogu izbrisati pri prvom pregledu ili nakon odabrane odgode od predloženih."
|
||||
|
||||
#: lib/Lutim/Controller/Image.pm:168
|
||||
msgid "The image’s delay has been successfully modified"
|
||||
msgstr "Kašnjenje slike je uspješno promijenjeno"
|
||||
|
||||
#: themes/default/templates/partial/gallery.js.ep:277
|
||||
msgid "There is XXXX image(s) in the gallery"
|
||||
msgstr "Galerija sadrži XXXX slika"
|
||||
|
||||
#. ($c->config->{contact})
|
||||
#: lib/Lutim/Controller/Image.pm:528
|
||||
msgid "There is no more available URL. Retry or contact the administrator. %1"
|
||||
msgstr ""
|
||||
"Nema više dostupnog URL-a. Pokušaj ponovo ili kontaktiraj administratora. %1"
|
||||
|
||||
#: themes/default/templates/index.html.ep:171 themes/default/templates/index.html.ep:215
|
||||
msgid "Tiling watermark"
|
||||
msgstr "Pločasti vodeni žig"
|
||||
|
||||
#: themes/default/templates/gallery.html.ep:30
|
||||
msgid "Toggle fullscreen"
|
||||
msgstr "Uključi/isključi cjeloekranski prikaz"
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:8
|
||||
msgid "Toggle navigation"
|
||||
msgstr "Uključi/isključi navigaciju"
|
||||
|
||||
#: lib/Lutim/Command/cron/stats.pm:159 themes/default/templates/raw.html.ep:11
|
||||
msgid "Total"
|
||||
msgstr "Ukupno"
|
||||
|
||||
#: themes/default/templates/index.html.ep:72 themes/default/templates/partial/lutim.js.ep:17
|
||||
msgid "Tweet it!"
|
||||
msgstr "Pošalji tweet!"
|
||||
|
||||
#: themes/default/templates/partial/common.js.ep:110 themes/default/templates/partial/common.js.ep:90
|
||||
msgid "Unable to copy to clipboard"
|
||||
msgstr "Neuspjelo kopiranje u međuspremink"
|
||||
|
||||
#. ($short)
|
||||
#: lib/Lutim/Controller/Image.pm:108 lib/Lutim/Controller/Image.pm:202 lib/Lutim/Controller/Image.pm:273
|
||||
msgid "Unable to find the image %1."
|
||||
msgstr "Neuspjelo pronalaženje slike %1."
|
||||
|
||||
#: lib/Lutim/Controller/Image.pm:617 lib/Lutim/Controller/Image.pm:662 lib/Lutim/Controller/Image.pm:703 lib/Lutim/Controller/Image.pm:746 lib/Lutim/Controller/Image.pm:758 lib/Lutim/Controller/Image.pm:769 lib/Lutim/Controller/Image.pm:796 lib/Lutim/Plugin/Helpers.pm:89
|
||||
msgid "Unable to find the image: it has been deleted."
|
||||
msgstr "Neuspjelo pronalaženje slike: slika je izbrisana."
|
||||
|
||||
#: lib/Lutim/Controller/Image.pm:145
|
||||
msgid "Unable to get counter"
|
||||
msgstr "Neuspjelo dohvaćanje brojača"
|
||||
|
||||
#: themes/default/templates/about.html.ep:17
|
||||
msgid "Unlike many image sharing services, you don't give us rights on uploaded images."
|
||||
msgstr ""
|
||||
"Za razliku od mnogih usluga za dijeljenje slika, ne daješ nam prava za "
|
||||
"prenesene slike."
|
||||
|
||||
#: themes/default/templates/index.html.ep:187 themes/default/templates/index.html.ep:239
|
||||
msgid "Upload an image with its URL"
|
||||
msgstr "Prenesi sliku s ovim URL-om"
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:119
|
||||
msgid "Uploaded at"
|
||||
msgstr "Preneseno"
|
||||
|
||||
#: themes/default/templates/stats.html.ep:6
|
||||
msgid "Uploaded files by days"
|
||||
msgstr "Prenesene datoteke po danima"
|
||||
|
||||
#. ($c->app->config('contact')
|
||||
#: lib/Lutim/Plugin/Helpers.pm:222
|
||||
msgid "Uploading is currently disabled, please try later or contact the administrator (%1)."
|
||||
msgstr ""
|
||||
"Prijenos je trenutačno onemogućen, pokušaj kasnije ili kontaktiraj "
|
||||
"administratora (%1)."
|
||||
|
||||
#: themes/default/templates/index.html.ep:77 themes/default/templates/index.html.ep:79 themes/default/templates/myfiles.html.ep:116 themes/default/templates/partial/lutim.js.ep:72 themes/default/templates/partial/lutim.js.ep:76
|
||||
msgid "View link"
|
||||
msgstr "Pogledaj poveznicu"
|
||||
|
||||
#: themes/default/templates/about.html.ep:22
|
||||
msgid "What about the software which provides the service?"
|
||||
msgstr "Što je sa softverom koji pruža uslugu?"
|
||||
|
||||
#: themes/default/templates/about.html.ep:3
|
||||
msgid "What is Lutim?"
|
||||
msgstr "Što je Lutim?"
|
||||
|
||||
#: themes/default/templates/about.html.ep:15
|
||||
msgid "Who owns rights on images uploaded on Lutim?"
|
||||
msgstr "Tko posjeduje prava nad slikama postavljene na Lutimu?"
|
||||
|
||||
#: themes/default/templates/about.html.ep:12
|
||||
msgid "Yes, it is! On the other side, for legal reasons, your IP address will be stored when you send an image. Don't panic, it is normally the case of all sites on which you send files!"
|
||||
msgstr ""
|
||||
"Da, je! Međutim, iz pravnih razloga, tvoja IP adresa će se spremiti kada "
|
||||
"pošalješ sliku. Bez panike, to je normalno za sve stranice na koje šalješ "
|
||||
"datoteke!"
|
||||
|
||||
#: themes/default/templates/about.html.ep:10
|
||||
msgid "Yes, it is! On the other side, if you want to support the developer, you can do it via <a href=\"https://www.tipeee.com/fiat-tux\">Tipeee</a> or via <a href=\"https://liberapay.com/sky/\">Liberapay</a>."
|
||||
msgstr ""
|
||||
"Da, je! Međutim, ako želiš podržati programera, to možete učiniti putem "
|
||||
"usluge <a href=\"https://www.tipeee.com/fiat-tux\">Tipeee</a> ili <a href=\" "
|
||||
"https://liberapay.com/sky/\">Liberapay</a>."
|
||||
|
||||
#: themes/default/templates/zip.html.ep:6
|
||||
msgid "You asked to download a zip archive for too much files."
|
||||
msgstr "Zatražio/la si preuzimanje zip arhive za previše datoteka."
|
||||
|
||||
#: themes/default/templates/about.html.ep:8
|
||||
msgid "You can, optionally, request that the image(s) posted on Lutim to be deleted at first view (or download) or after the delay selected from those proposed."
|
||||
msgstr ""
|
||||
"Opcionalno možeš zatražiti da se objavljene slike na Lutimu izbrišu pri "
|
||||
"prvom pregledu (ili preuzimanju) ili nakon odabrane odgode od predloženih."
|
||||
|
||||
#: lib/Lutim/Controller/Authent.pm:27
|
||||
msgid "You have been successfully logged in."
|
||||
msgstr "Uspješno si prijavljan/a."
|
||||
|
||||
#: lib/Lutim/Controller/Authent.pm:66 themes/default/templates/logout.html.ep:3
|
||||
msgid "You have been successfully logged out."
|
||||
msgstr "Uspješno si odjevljen/a."
|
||||
|
||||
#: themes/default/templates/gallery.html.ep:31
|
||||
msgid "Zoom in/out"
|
||||
msgstr "Uvećaj/Umanji prikaz"
|
||||
|
||||
#: themes/default/templates/about.html.ep:27
|
||||
msgid "and on"
|
||||
msgstr "i na"
|
||||
|
||||
#: themes/default/templates/about.html.ep:40
|
||||
msgid "arabic translation"
|
||||
msgstr "prijevod na arapski"
|
||||
|
||||
#: themes/default/templates/about.html.ep:27
|
||||
msgid "core developer"
|
||||
msgstr "izvorni programer"
|
||||
|
||||
#: lib/Lutim.pm:340 lib/Lutim/Command/cron/stats.pm:154 lib/Lutim/Command/cron/stats.pm:168 lib/Lutim/Command/cron/stats.pm:185 themes/default/templates/index.html.ep:3 themes/default/templates/myfiles.html.ep:3 themes/default/templates/partial/raw.js.ep:21 themes/default/templates/partial/raw.js.ep:4 themes/default/templates/raw.html.ep:6
|
||||
msgid "no time limit"
|
||||
msgstr "bez vremenskog ograničenja"
|
||||
|
||||
#: themes/default/templates/about.html.ep:38
|
||||
msgid "occitan translation"
|
||||
msgstr "prijevod na okcitanski"
|
||||
|
||||
#: themes/default/templates/about.html.ep:27
|
||||
msgid "on"
|
||||
msgstr "na"
|
||||
|
||||
#: themes/default/templates/about.html.ep:39
|
||||
msgid "paste image to upload ability"
|
||||
msgstr "umetni sliku za mogućnost prijenosa"
|
||||
|
||||
#: themes/default/templates/about.html.ep:41
|
||||
msgid "russian translation"
|
||||
msgstr "prijevod na ruski"
|
||||
|
||||
#: themes/default/templates/about.html.ep:36
|
||||
msgid "spanish translation"
|
||||
msgstr "prijevod na španjolski"
|
||||
|
||||
#: themes/default/templates/about.html.ep:28
|
||||
msgid "webapp developer"
|
||||
msgstr "programer web-aplikacije"
|
||||
700
themes/default/lib/Lutim/I18N/hu.po
Normal file
700
themes/default/lib/Lutim/I18N/hu.po
Normal file
@@ -0,0 +1,700 @@
|
||||
# Meskó Balázs <mesko.balazs@fsf.hu>, 2018. #zanata
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"PO-Revision-Date: 2020-04-10 17:08+0000\n"
|
||||
"Last-Translator: Balázs Meskó <mesko.balazs@fsf.hu>\n"
|
||||
"Language-Team: Hungarian <https://weblate.framasoft.org/projects/lutim/"
|
||||
"default-theme/hu/>\n"
|
||||
"Language: hu\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
"X-Generator: Weblate 3.11.2\n"
|
||||
|
||||
#. (7)
|
||||
#. (30)
|
||||
#. ($delay)
|
||||
#. (config('max_delay')
|
||||
#: lib/Lutim/Command/cron/stats.pm:147 lib/Lutim/Command/cron/stats.pm:148 lib/Lutim/Command/cron/stats.pm:161 lib/Lutim/Command/cron/stats.pm:162 lib/Lutim/Command/cron/stats.pm:178 lib/Lutim/Command/cron/stats.pm:179 themes/default/templates/myfiles.html.ep:24 themes/default/templates/myfiles.html.ep:33 themes/default/templates/myfiles.html.ep:34 themes/default/templates/partial/for_my_delay.html.ep:13 themes/default/templates/partial/for_my_delay.html.ep:14 themes/default/templates/partial/for_my_delay.html.ep:4 themes/default/templates/partial/lutim.js.ep:140 themes/default/templates/partial/lutim.js.ep:149 themes/default/templates/partial/lutim.js.ep:150 themes/default/templates/partial/raw.js.ep:23 themes/default/templates/partial/raw.js.ep:24 themes/default/templates/partial/raw.js.ep:6 themes/default/templates/partial/raw.js.ep:7 themes/default/templates/raw.html.ep:8 themes/default/templates/raw.html.ep:9
|
||||
msgid "%1 days"
|
||||
msgstr "%1 nap"
|
||||
|
||||
#. ($total)
|
||||
#: themes/default/templates/stats.html.ep:2
|
||||
msgid "%1 sent images on this instance from beginning."
|
||||
msgstr "%1 kép elküldve ezen a példányon a kezdetek óta."
|
||||
|
||||
#: themes/default/templates/index.html.ep:208
|
||||
msgid "-or-"
|
||||
msgstr "-vagy-"
|
||||
|
||||
#: lib/Lutim.pm:350 lib/Lutim/Command/cron/stats.pm:149 lib/Lutim/Command/cron/stats.pm:163 lib/Lutim/Command/cron/stats.pm:180 themes/default/templates/index.html.ep:5 themes/default/templates/myfiles.html.ep:5 themes/default/templates/partial/raw.js.ep:25 themes/default/templates/partial/raw.js.ep:8 themes/default/templates/raw.html.ep:10
|
||||
msgid "1 year"
|
||||
msgstr "1 év"
|
||||
|
||||
#: lib/Lutim.pm:349 lib/Lutim/Command/cron/stats.pm:146 lib/Lutim/Command/cron/stats.pm:160 lib/Lutim/Command/cron/stats.pm:177 themes/default/templates/index.html.ep:4 themes/default/templates/myfiles.html.ep:33 themes/default/templates/myfiles.html.ep:4 themes/default/templates/partial/for_my_delay.html.ep:13 themes/default/templates/partial/lutim.js.ep:149 themes/default/templates/partial/raw.js.ep:22 themes/default/templates/partial/raw.js.ep:5 themes/default/templates/raw.html.ep:7
|
||||
msgid "24 hours"
|
||||
msgstr "24 óra"
|
||||
|
||||
#: themes/default/templates/partial/myfiles.js.ep:180
|
||||
msgid ": Error while trying to get the counter."
|
||||
msgstr ": Hiba a számláló lekérésekor."
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:77
|
||||
msgid "About"
|
||||
msgstr "Névjegy"
|
||||
|
||||
#: lib/Lutim/Command/cron/stats.pm:142 themes/default/templates/raw.html.ep:3
|
||||
msgid "Active images"
|
||||
msgstr "Aktív képek"
|
||||
|
||||
#: lib/Lutim/Controller/Image.pm:327
|
||||
msgid "An error occured while downloading the image."
|
||||
msgstr "Hiba történt a kép letöltése közben."
|
||||
|
||||
#: themes/default/templates/zip.html.ep:2
|
||||
msgid "Archives download"
|
||||
msgstr "Archívum letöltése"
|
||||
|
||||
#: themes/default/templates/about.html.ep:44 themes/default/templates/myfiles.html.ep:135 themes/default/templates/stats.html.ep:25
|
||||
msgid "Back to homepage"
|
||||
msgstr "Vissza a kezdőoldalra"
|
||||
|
||||
#: themes/default/templates/index.html.ep:211 themes/default/templates/index.html.ep:212
|
||||
msgid "Click to open the file browser"
|
||||
msgstr "Kattints a fájlböngésző megnyitásához"
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:51
|
||||
msgid "Close"
|
||||
msgstr "Bezárás"
|
||||
|
||||
#: themes/default/templates/gallery.html.ep:29
|
||||
msgid "Close (Esc)"
|
||||
msgstr "Bezárás (Esc)"
|
||||
|
||||
#: themes/default/templates/about.html.ep:30
|
||||
msgid "Contributors"
|
||||
msgstr "Közreműködők"
|
||||
|
||||
#: themes/default/templates/partial/common.js.ep:113 themes/default/templates/partial/common.js.ep:93
|
||||
msgid "Copied to clipboard"
|
||||
msgstr "Vágólapra másolva"
|
||||
|
||||
#: themes/default/templates/partial/lutim.js.ep:215 themes/default/templates/partial/lutim.js.ep:278 themes/default/templates/partial/lutim.js.ep:364
|
||||
msgid "Copy all view links to clipboard"
|
||||
msgstr "Összes megtekintési hivatkozás másolása a vágólapra"
|
||||
|
||||
#: themes/default/templates/index.html.ep:103 themes/default/templates/index.html.ep:111 themes/default/templates/index.html.ep:18 themes/default/templates/index.html.ep:36 themes/default/templates/index.html.ep:54 themes/default/templates/index.html.ep:87 themes/default/templates/index.html.ep:95 themes/default/templates/myfiles.html.ep:104 themes/default/templates/myfiles.html.ep:68 themes/default/templates/myfiles.html.ep:86 themes/default/templates/partial/common.js.ep:186 themes/default/templates/partial/lutim.js.ep:106 themes/default/templates/partial/lutim.js.ep:121 themes/default/templates/partial/lutim.js.ep:80 themes/default/templates/partial/lutim.js.ep:92 themes/default/templates/partial/myfiles.js.ep:142
|
||||
msgid "Copy to clipboard"
|
||||
msgstr "Másolás a vágólapra"
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:123
|
||||
msgid "Counter"
|
||||
msgstr "Számláló"
|
||||
|
||||
#: themes/default/templates/stats.html.ep:18
|
||||
msgid "Delay repartition chart for disabled images"
|
||||
msgstr "Lejárat felosztási diagramja a letiltott képekhez"
|
||||
|
||||
#: themes/default/templates/stats.html.ep:15
|
||||
msgid "Delay repartition chart for enabled images"
|
||||
msgstr "Lejárat felosztási diagramja az engedélyezett képekhez"
|
||||
|
||||
#: themes/default/templates/index.html.ep:133 themes/default/templates/index.html.ep:165 themes/default/templates/index.html.ep:196 themes/default/templates/myfiles.html.ep:124 themes/default/templates/myfiles.html.ep:45 themes/default/templates/partial/lutim.js.ep:161
|
||||
msgid "Delete at first view?"
|
||||
msgstr "Törlés az első megtekintés után?"
|
||||
|
||||
#: lib/Lutim/Command/cron/stats.pm:143 themes/default/templates/raw.html.ep:4
|
||||
msgid "Deleted images"
|
||||
msgstr "Törölt képek"
|
||||
|
||||
#: lib/Lutim/Command/cron/stats.pm:144 themes/default/templates/raw.html.ep:5
|
||||
msgid "Deleted images in 30 days"
|
||||
msgstr "Törölt képek 30 napban"
|
||||
|
||||
#: themes/default/templates/index.html.ep:116 themes/default/templates/myfiles.html.ep:127 themes/default/templates/partial/common.js.ep:178 themes/default/templates/partial/common.js.ep:181
|
||||
msgid "Deletion link"
|
||||
msgstr "Törlési hivatkozás"
|
||||
|
||||
#: themes/default/templates/gallery.html.ep:10
|
||||
msgid "Download all images"
|
||||
msgstr "Összes kép letöltése"
|
||||
|
||||
#: themes/default/templates/index.html.ep:101 themes/default/templates/index.html.ep:99 themes/default/templates/partial/lutim.js.ep:102 themes/default/templates/partial/lutim.js.ep:98
|
||||
msgid "Download link"
|
||||
msgstr "Letöltési hivatkozás"
|
||||
|
||||
#: themes/default/templates/index.html.ep:28 themes/default/templates/index.html.ep:31 themes/default/templates/myfiles.html.ep:78 themes/default/templates/myfiles.html.ep:81
|
||||
msgid "Download zip link"
|
||||
msgstr "Zip letöltési hivatkozás"
|
||||
|
||||
#: themes/default/templates/index.html.ep:207
|
||||
msgid "Drag & drop images here"
|
||||
msgstr "Húzza és ejtse ide a képeket"
|
||||
|
||||
#: themes/default/templates/about.html.ep:7
|
||||
msgid ""
|
||||
"Drag and drop an image in the appropriate area or use the traditional way to "
|
||||
"send files and Lutim will provide you four URLs. One to view the image, an "
|
||||
"other to directly download it, one you can use on social networks and a last "
|
||||
"to delete the image when you want."
|
||||
msgstr ""
|
||||
"Húzza és ejtse a képet a megfelelő területre, vagy küldje el a fájlokat a "
|
||||
"hagyományos módon, és a Lutim négy URL-t fog biztosítani. Egyet a kép "
|
||||
"megtekintéséhez, egyet a közvetlen letöltéséhez, egyet amelyet a közösségi "
|
||||
"hálózatokon használhat, illetve egyet, amellyel ha akarja, törölheti a képet."
|
||||
|
||||
#: themes/default/templates/index.html.ep:168 themes/default/templates/index.html.ep:199
|
||||
msgid "Encrypt the image (Lutim does not keep the key)."
|
||||
msgstr "Kép titkosítása (A Lutim nem tartja meg a kulcsot)."
|
||||
|
||||
#: themes/default/templates/partial/lutim.js.ep:45 themes/default/templates/partial/myfiles.js.ep:113
|
||||
msgid "Error while trying to modify the image."
|
||||
msgstr "Hiba történt a kép módosításakor."
|
||||
|
||||
#: themes/default/templates/stats.html.ep:10
|
||||
msgid "Evolution of total files"
|
||||
msgstr "Az összes fájl evolúciója"
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:126
|
||||
msgid "Expires at"
|
||||
msgstr "Lejárat:"
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:112
|
||||
msgid "Export localStorage data"
|
||||
msgstr "A helyi tárolóban lévő adatok exportálása"
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:121
|
||||
msgid "File name"
|
||||
msgstr "Fájlnév"
|
||||
|
||||
#: themes/default/templates/about.html.ep:24
|
||||
msgid ""
|
||||
"For more details, see the <a href=\"https://framagit.org/luc/"
|
||||
"lutim\">homepage of the project</a>."
|
||||
msgstr ""
|
||||
"További részletekért lásd a <a href=\"https://framagit.org/luc/"
|
||||
"lutim\">projekt weboldalát</a>."
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:80
|
||||
msgid "Fork me!"
|
||||
msgstr "Forkolja le!"
|
||||
|
||||
#: themes/default/templates/index.html.ep:10 themes/default/templates/index.html.ep:13 themes/default/templates/myfiles.html.ep:60 themes/default/templates/myfiles.html.ep:63
|
||||
msgid "Gallery link"
|
||||
msgstr "Galériahivatkozás"
|
||||
|
||||
#: themes/default/templates/partial/common.js.ep:116 themes/default/templates/partial/common.js.ep:134
|
||||
msgid "Hit Ctrl+C, then Enter to copy the short link"
|
||||
msgstr "Nyomjon Ctrl+C-t, majd Entert a rövid hivatkozás másolásához"
|
||||
|
||||
#: themes/default/templates/layouts/default.html.ep:47
|
||||
msgid "Homepage"
|
||||
msgstr "Kezdőlap"
|
||||
|
||||
#: themes/default/templates/about.html.ep:20
|
||||
msgid "How do you pronounce Lutim?"
|
||||
msgstr "Hogyan ejtem ki, hogy Lutim?"
|
||||
|
||||
#: themes/default/templates/about.html.ep:6
|
||||
msgid "How does it work?"
|
||||
msgstr "Hogyan működik?"
|
||||
|
||||
#: themes/default/templates/about.html.ep:18
|
||||
msgid "How to report an image?"
|
||||
msgstr "Hogyan jelentsek egy képet?"
|
||||
|
||||
#: themes/default/templates/about.html.ep:14
|
||||
msgid ""
|
||||
"If the files are deleted if you ask it while posting it, their SHA512 "
|
||||
"footprint are retained."
|
||||
msgstr ""
|
||||
"Ha a fájlok törlésre fognak kerülni, mert így kérte feltöltéskor, akkor az "
|
||||
"SHA512-ujjlenyomat megmarad."
|
||||
|
||||
#: themes/default/templates/index.html.ep:181 themes/default/templates/index.html.ep:221
|
||||
msgid "Image URL"
|
||||
msgstr "Kép URL"
|
||||
|
||||
#: lib/Lutim/Command/cron/stats.pm:141 themes/default/templates/raw.html.ep:2
|
||||
msgid "Image delay"
|
||||
msgstr "Kép lejárata"
|
||||
|
||||
#: themes/default/templates/partial/common.js.ep:157
|
||||
msgid "Image deleted"
|
||||
msgstr "Kép törölve"
|
||||
|
||||
#: lib/Lutim/Controller/Image.pm:753
|
||||
msgid "Image not found."
|
||||
msgstr "A kép nem található."
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:113
|
||||
msgid "Import localStorage data"
|
||||
msgstr "Helyi tároló adatainak importálása"
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:69
|
||||
msgid "Informations"
|
||||
msgstr "Információk"
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:25
|
||||
msgid "Install webapp"
|
||||
msgstr "Webalkalmazás telepítése"
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:21
|
||||
msgid "Instance's statistics"
|
||||
msgstr "Példány statisztikái"
|
||||
|
||||
#: themes/default/templates/about.html.ep:11
|
||||
msgid "Is it really anonymous?"
|
||||
msgstr "Tényleg anonim?"
|
||||
|
||||
#: themes/default/templates/about.html.ep:9
|
||||
msgid "Is it really free (as in free beer)?"
|
||||
msgstr "Tényleg ingyenes?"
|
||||
|
||||
#: themes/default/templates/about.html.ep:21
|
||||
msgid ""
|
||||
"Juste like you pronounce the French word <a href=\"https://fr.wikipedia.org/"
|
||||
"wiki/Lutin\">lutin</a> (/ly.tɛ̃/)."
|
||||
msgstr ""
|
||||
"Pont úgy, ahogy a francia <a href=\"https://fr.wikipedia.org/wiki/"
|
||||
"Lutin\">lutin</a> szót (/ly.tɛ̃/)."
|
||||
|
||||
#: themes/default/templates/index.html.ep:171 themes/default/templates/index.html.ep:202
|
||||
msgid "Keep EXIF tags"
|
||||
msgstr "EXIF címkék megtartása"
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:43
|
||||
msgid "Language"
|
||||
msgstr "Nyelv"
|
||||
|
||||
#: themes/default/templates/index.html.ep:136 themes/default/templates/index.html.ep:184 themes/default/templates/index.html.ep:224 themes/default/templates/partial/lutim.js.ep:165
|
||||
msgid "Let's go!"
|
||||
msgstr "Gyerünk!"
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:74
|
||||
msgid "License:"
|
||||
msgstr "Licenc:"
|
||||
|
||||
#: themes/default/templates/index.html.ep:107 themes/default/templates/index.html.ep:109 themes/default/templates/partial/lutim.js.ep:112 themes/default/templates/partial/lutim.js.ep:116
|
||||
msgid "Link for share on social networks"
|
||||
msgstr "Közösségi média megosztási hivatkozások"
|
||||
|
||||
#: themes/default/templates/login.html.ep:8
|
||||
msgid "Login"
|
||||
msgstr "Bejelentkezés"
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:33
|
||||
msgid "Logout"
|
||||
msgstr "Kijelentkezés"
|
||||
|
||||
#: themes/default/templates/zip.html.ep:7
|
||||
msgid ""
|
||||
"Lutim can't zip so many images at once, so it splitted your demand in "
|
||||
"multiple URLs."
|
||||
msgstr ""
|
||||
"A Lutim nem tud ennyi fájlt összecsomagolni, így felosztotta a kérését több "
|
||||
"URL-re."
|
||||
|
||||
#: themes/default/templates/about.html.ep:4
|
||||
msgid ""
|
||||
"Lutim is a free (as in free beer) and anonymous image hosting service. It's "
|
||||
"also the name of the free (as in free speech) software which provides this "
|
||||
"service."
|
||||
msgstr ""
|
||||
"A Lutim egy ingyenes és anonim képmegosztó-szolgáltatás. Ez a szolgáltatás "
|
||||
"mögött álló szabad szoftver neve is."
|
||||
|
||||
#: themes/default/templates/about.html.ep:25
|
||||
msgid "Main developers"
|
||||
msgstr "Fő fejlesztők"
|
||||
|
||||
#: themes/default/templates/index.html.ep:91 themes/default/templates/index.html.ep:93 themes/default/templates/partial/lutim.js.ep:86 themes/default/templates/partial/lutim.js.ep:89
|
||||
msgid "Markdown syntax"
|
||||
msgstr "Markdown szintaxis"
|
||||
|
||||
#: themes/default/templates/partial/myfiles.js.ep:149
|
||||
msgid "Modify expiration delay"
|
||||
msgstr "Lejárati dátum módosítása"
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:7 themes/default/templates/partial/navbar.html.ep:18
|
||||
msgid "My images"
|
||||
msgstr "Saját képek"
|
||||
|
||||
#: themes/default/templates/gallery.html.ep:45
|
||||
msgid "Next (arrow right)"
|
||||
msgstr "Következő (jobbra nyíl)"
|
||||
|
||||
#: themes/default/templates/partial/myfiles.js.ep:105 themes/default/templates/partial/myfiles.js.ep:132
|
||||
msgid "No limit"
|
||||
msgstr "Nincs korlát"
|
||||
|
||||
#: themes/default/templates/index.html.ep:183 themes/default/templates/index.html.ep:216
|
||||
msgid "Only images are allowed"
|
||||
msgstr "Csak képek engedélyezettek"
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:11
|
||||
msgid ""
|
||||
"Only the images sent with this browser will be listed here. The details are "
|
||||
"stored in localStorage: if you delete your localStorage data, you'll loose "
|
||||
"these details."
|
||||
msgstr ""
|
||||
"Csak az ezzel a böngészővel elküldött képek fognak itt megjelenni. A "
|
||||
"részletek a helyi tárolóban tároltak: ha törli a helyi tároló adatait, akkor "
|
||||
"elveszíti ezeket a részleteket."
|
||||
|
||||
#: themes/default/templates/about.html.ep:16
|
||||
msgid ""
|
||||
"Only the uploader! (well, only if he's the only owner of the images' rights "
|
||||
"before the upload)"
|
||||
msgstr ""
|
||||
"Csak a feltöltő! (persze csak akkor, ha az övé a két összes joga a "
|
||||
"feltöltéskor)"
|
||||
|
||||
#: themes/default/templates/login.html.ep:12
|
||||
msgid "Password"
|
||||
msgstr "Jelszó"
|
||||
|
||||
#: themes/default/templates/zip.html.ep:12
|
||||
msgid "Please click on each URL to download the different zip files."
|
||||
msgstr "Kattintson az egyes URL-ekre, hogy letöltse a különböző ZIP-fájlokat."
|
||||
|
||||
#. (config('contact')
|
||||
#: themes/default/templates/about.html.ep:19
|
||||
msgid "Please contact the administrator: %1"
|
||||
msgstr "Vegye fel a kapcsolatot a rendszergazdával: %1"
|
||||
|
||||
#: lib/Lutim/Controller/Authent.pm:36
|
||||
msgid "Please, check your credentials: unable to authenticate."
|
||||
msgstr "Ellenőrizze a hitelesítő adatait: a hitelesítés sikertelen."
|
||||
|
||||
#: themes/default/templates/gallery.html.ep:43
|
||||
msgid "Previous (arrow left)"
|
||||
msgstr "Előző (balra nyíl)"
|
||||
|
||||
#: themes/default/templates/index.html.ep:46 themes/default/templates/index.html.ep:49 themes/default/templates/myfiles.html.ep:96 themes/default/templates/myfiles.html.ep:99
|
||||
msgid "Random image link"
|
||||
msgstr "Előző képhivatkozás"
|
||||
|
||||
#: themes/default/templates/stats.html.ep:22
|
||||
msgid "Raw stats"
|
||||
msgstr "Nyers statisztikák"
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:52
|
||||
msgid "Save changes"
|
||||
msgstr "Változtatások mentése"
|
||||
|
||||
#: themes/default/templates/index.html.ep:176
|
||||
msgid "Send an image"
|
||||
msgstr "Kép küldése"
|
||||
|
||||
#: themes/default/templates/login.html.ep:16 themes/default/templates/logout.html.ep:5 themes/default/templates/partial/navbar.html.ep:37
|
||||
msgid "Signin"
|
||||
msgstr "Bejelentkezés"
|
||||
|
||||
#: themes/default/templates/index.html.ep:151 themes/default/templates/partial/gallery.js.ep:211 themes/default/templates/partial/lutim.js.ep:176
|
||||
msgid "Something bad happened"
|
||||
msgstr "Valami elromlott"
|
||||
|
||||
#. ($c->config('contact')
|
||||
#: lib/Lutim/Controller/Image.pm:760
|
||||
msgid ""
|
||||
"Something went wrong when creating the zip file. Try again later or contact "
|
||||
"the administrator (%1)."
|
||||
msgstr ""
|
||||
"Valami elromlott a ZIP-fájl létrehozásakor. Próbálja újra később, vagy "
|
||||
"lépjen kapcsolatba a rendszergazdával (%1)."
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:55
|
||||
msgid "Support the author"
|
||||
msgstr "A szerző támogatása"
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:63
|
||||
msgid "Support the author on Liberapay"
|
||||
msgstr "A szerző támogatása a Liberapayen"
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:60
|
||||
msgid "Support the author on Tipeee"
|
||||
msgstr "A szerző támogatása a Tipeee-n"
|
||||
|
||||
#: themes/default/templates/about.html.ep:13
|
||||
msgid ""
|
||||
"The IP address of the image's sender is retained for a delay which depends "
|
||||
"of the administrator's choice (for the official instance, which is located "
|
||||
"in France, it's one year)."
|
||||
msgstr ""
|
||||
"A képküldő IP-címének tárolási ideje a rendszergazda által megadott "
|
||||
"beállítástól függ (a Franciaországban található hivatalos példánynál ez egy "
|
||||
"év)."
|
||||
|
||||
#: themes/default/templates/about.html.ep:23
|
||||
msgid ""
|
||||
"The Lutim software is a <a href=\"http://en.wikipedia.org/wiki/"
|
||||
"Free_software\">free software</a>, which allows you to download and install "
|
||||
"it on you own server. Have a look at the <a href=\"https://www.gnu.org/"
|
||||
"licenses/agpl-3.0.html\">AGPL</a> to see what you can do."
|
||||
msgstr ""
|
||||
"A Lutim szoftver <a href=\"http://en.wikipedia.org/wiki/"
|
||||
"Free_software\">szabad szoftver</a>, így letöltheted és telepítheted a saját "
|
||||
"kiszolgálódra. Nézd meg az <a href=\"https://www.gnu.org/licenses/agpl-3.0."
|
||||
"html\">AGPL-t</a>, hogy megtudd mit tehetsz."
|
||||
|
||||
#: lib/Lutim/Controller/Image.pm:346
|
||||
msgid "The URL is not valid."
|
||||
msgstr "Az URL érvénytelen."
|
||||
|
||||
#: themes/default/templates/zip.html.ep:16
|
||||
msgid ""
|
||||
"The automatic download process will open a tab in your browser for each link."
|
||||
" You need to allow popups for Lutim."
|
||||
msgstr ""
|
||||
"Az automatikus letöltési folyamat új böngészőlapot fog megnyitni minden "
|
||||
"hivatkozáshoz. Engedélyeznie kell a felugró ablakokat a Lutim számára."
|
||||
|
||||
#: themes/default/templates/partial/myfiles.js.ep:32
|
||||
msgid "The data has been successfully imported."
|
||||
msgstr "Az adatok sikeresen importálva lettek."
|
||||
|
||||
#: lib/Lutim/Controller/Image.pm:159 lib/Lutim/Controller/Image.pm:227
|
||||
msgid "The delete token is invalid."
|
||||
msgstr "A törlési token érvénytelen."
|
||||
|
||||
#. ($upload->filename)
|
||||
#: lib/Lutim/Controller/Image.pm:487
|
||||
msgid "The file %1 is not an image."
|
||||
msgstr "A(z) %1 fájl nem kép."
|
||||
|
||||
#. ($tx->res->max_message_size)
|
||||
#. ($c->req->max_message_size)
|
||||
#. (config('max_file_size')
|
||||
#: lib/Lutim/Controller/Image.pm:310 lib/Lutim/Controller/Image.pm:379 themes/default/templates/partial/lutim.js.ep:249
|
||||
msgid "The file exceed the size limit (%1)"
|
||||
msgstr "A fájl meghaladja a méretkorlátot (%1)"
|
||||
|
||||
#: themes/default/templates/stats.html.ep:12
|
||||
msgid "The graph's datas are not updated in real-time."
|
||||
msgstr "A grafikon adatai nem frissülnek valós időben."
|
||||
|
||||
#. ($image->filename)
|
||||
#: lib/Lutim/Controller/Image.pm:229
|
||||
msgid "The image %1 has already been deleted."
|
||||
msgstr "A(z) %1 kép már törölve lett."
|
||||
|
||||
#. ($image->filename)
|
||||
#: lib/Lutim/Controller/Image.pm:238 lib/Lutim/Controller/Image.pm:243
|
||||
msgid "The image %1 has been successfully deleted"
|
||||
msgstr "A(z) %1 kép sikeresen törölve lett"
|
||||
|
||||
#: lib/Lutim/Controller/Image.pm:167
|
||||
msgid "The image's delay has been successfully modified"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/index.html.ep:63
|
||||
msgid "The images are encrypted on the server (Lutim does not keep the key)."
|
||||
msgstr "A képek a kiszolgálón titkosítottak (a Lutim nem tárolja a kulcsot)."
|
||||
|
||||
#: themes/default/templates/about.html.ep:5
|
||||
msgid ""
|
||||
"The images you post on Lutim can be stored indefinitely or be deleted at "
|
||||
"first view or after a delay selected from those proposed."
|
||||
msgstr ""
|
||||
"A Lutimra feltöltött képek korlátlan ideig tárolhatók, illetve első "
|
||||
"megtekintés vagy bizonyos késleltetés után törölhetők."
|
||||
|
||||
#: themes/default/templates/partial/gallery.js.ep:257
|
||||
msgid "There is XXXX image(s) in the gallery"
|
||||
msgstr "XXXX kép szerepel a galériában"
|
||||
|
||||
#. ($c->config->{contact})
|
||||
#: lib/Lutim/Controller/Image.pm:484
|
||||
msgid "There is no more available URL. Retry or contact the administrator. %1"
|
||||
msgstr ""
|
||||
"Nincs több elérhető URL. Próbálja újra, vagy lépjen kapcsolatba a "
|
||||
"rendszergazdával. %1"
|
||||
|
||||
#: themes/default/templates/gallery.html.ep:30
|
||||
msgid "Toggle fullscreen"
|
||||
msgstr "Teljes képernyő be/ki"
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:8
|
||||
msgid "Toggle navigation"
|
||||
msgstr "Navigációs panel be/ki"
|
||||
|
||||
#: lib/Lutim/Command/cron/stats.pm:150 themes/default/templates/raw.html.ep:11
|
||||
msgid "Total"
|
||||
msgstr "Összesen"
|
||||
|
||||
#: themes/default/templates/index.html.ep:78 themes/default/templates/partial/lutim.js.ep:17
|
||||
msgid "Tweet it!"
|
||||
msgstr "Tweet közzététele!"
|
||||
|
||||
#: themes/default/templates/partial/common.js.ep:110 themes/default/templates/partial/common.js.ep:90
|
||||
msgid "Unable to copy to clipboard"
|
||||
msgstr "Nem másolható a vágólapra"
|
||||
|
||||
#. ($short)
|
||||
#: lib/Lutim/Controller/Image.pm:107 lib/Lutim/Controller/Image.pm:201 lib/Lutim/Controller/Image.pm:272
|
||||
msgid "Unable to find the image %1."
|
||||
msgstr "A(z) %1 kép nem található."
|
||||
|
||||
#: lib/Lutim/Controller/Image.pm:573 lib/Lutim/Controller/Image.pm:618 lib/Lutim/Controller/Image.pm:657 lib/Lutim/Controller/Image.pm:700 lib/Lutim/Controller/Image.pm:712 lib/Lutim/Controller/Image.pm:723 lib/Lutim/Controller/Image.pm:750 lib/Lutim/Plugin/Helpers.pm:88
|
||||
msgid "Unable to find the image: it has been deleted."
|
||||
msgstr "A kép nem található: törölték."
|
||||
|
||||
#: lib/Lutim/Controller/Image.pm:144
|
||||
msgid "Unable to get counter"
|
||||
msgstr "A számláló nem kérhető le"
|
||||
|
||||
#: themes/default/templates/about.html.ep:17
|
||||
msgid ""
|
||||
"Unlike many image sharing services, you don't give us rights on uploaded "
|
||||
"images."
|
||||
msgstr ""
|
||||
"Számos más képmegosztó-szolgáltatással ellentétben, Ön nem ad nekünk jogokat "
|
||||
"a feltöltött képekhez."
|
||||
|
||||
#: themes/default/templates/index.html.ep:180 themes/default/templates/index.html.ep:219
|
||||
msgid "Upload an image with its URL"
|
||||
msgstr "Képek feltöltése URL alapján"
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:125
|
||||
msgid "Uploaded at"
|
||||
msgstr "Feltöltés ideje:"
|
||||
|
||||
#: themes/default/templates/stats.html.ep:6
|
||||
msgid "Uploaded files by days"
|
||||
msgstr "Feltöltött fájlok napok szerint"
|
||||
|
||||
#. ($c->app->config('contact')
|
||||
#: lib/Lutim/Plugin/Helpers.pm:221
|
||||
msgid ""
|
||||
"Uploading is currently disabled, please try later or contact the "
|
||||
"administrator (%1)."
|
||||
msgstr ""
|
||||
"A feltöltés jelenleg ki van kapcsolva, próbálja újra később, vagy lépjen "
|
||||
"kapcsolatba a rendszergazdával (%1)."
|
||||
|
||||
#: themes/default/templates/index.html.ep:83 themes/default/templates/index.html.ep:85 themes/default/templates/myfiles.html.ep:122 themes/default/templates/partial/lutim.js.ep:72 themes/default/templates/partial/lutim.js.ep:76
|
||||
msgid "View link"
|
||||
msgstr "Hivatkozás megtekintése"
|
||||
|
||||
#: themes/default/templates/about.html.ep:22
|
||||
msgid "What about the software which provides the service?"
|
||||
msgstr "Mi a helyzet a szolgáltatást biztosító szoftverrel?"
|
||||
|
||||
#: themes/default/templates/about.html.ep:3
|
||||
msgid "What is Lutim?"
|
||||
msgstr "Mi a Lutim?"
|
||||
|
||||
#: themes/default/templates/about.html.ep:15
|
||||
msgid "Who owns rights on images uploaded on Lutim?"
|
||||
msgstr "Ki a feltöltött képek jogtulajdonosa a Lutimon?"
|
||||
|
||||
#: themes/default/templates/about.html.ep:12
|
||||
msgid ""
|
||||
"Yes, it is! On the other side, for legal reasons, your IP address will be "
|
||||
"stored when you send an image. Don't panic, it is normally the case of all "
|
||||
"sites on which you send files!"
|
||||
msgstr ""
|
||||
"Igen, tényleg. Viszont jogi okokból az IP-címét tároljuk, ha képet küld. Ne "
|
||||
"aggódjon, általában ez a helyzet az oldalakon, ahová képeket küld."
|
||||
|
||||
#: themes/default/templates/about.html.ep:10
|
||||
msgid ""
|
||||
"Yes, it is! On the other side, if you want to support the developer, you can "
|
||||
"do it via <a href=\"https://www.tipeee.com/fiat-tux\">Tipeee</a> or via <a "
|
||||
"href=\"https://liberapay.com/sky/\">Liberapay</a>."
|
||||
msgstr ""
|
||||
"Igen, tényleg. Viszont ha szeretné támogatni a fejlesztőt, akkor megteheti a "
|
||||
"<a href=\"https://www.tipeee.com/fiat-tux\">Tipeee</a> vagy a <a href=\""
|
||||
"https://liberapay.com/sky/\">Liberapay</a> segítségével."
|
||||
|
||||
#: themes/default/templates/zip.html.ep:6
|
||||
msgid "You asked to download a zip archive for too much files."
|
||||
msgstr "Túl sok fájl letöltését kérte ZIP-archívumként."
|
||||
|
||||
#: themes/default/templates/about.html.ep:8
|
||||
msgid ""
|
||||
"You can, optionally, request that the image(s) posted on Lutim to be deleted "
|
||||
"at first view (or download) or after the delay selected from those proposed."
|
||||
msgstr ""
|
||||
"Azt is kérheti, hogy a közzétett képek az első megtekintéskor (vagy "
|
||||
"letöltéskor) vagy a felajánlottak közül kiválasztott idő múlva törölve "
|
||||
"legyenek."
|
||||
|
||||
#: lib/Lutim/Controller/Authent.pm:27
|
||||
msgid "You have been successfully logged in."
|
||||
msgstr "Sikeresen bejelentkezett."
|
||||
|
||||
#: lib/Lutim/Controller/Authent.pm:66 themes/default/templates/logout.html.ep:3
|
||||
msgid "You have been successfully logged out."
|
||||
msgstr "Sikeresen kijelentkezett."
|
||||
|
||||
#: themes/default/templates/gallery.html.ep:31
|
||||
msgid "Zoom in/out"
|
||||
msgstr "Nagyítás/kicsinyítés"
|
||||
|
||||
#: themes/default/templates/about.html.ep:27
|
||||
msgid "and on"
|
||||
msgstr "és"
|
||||
|
||||
#: themes/default/templates/about.html.ep:40
|
||||
msgid "arabic translation"
|
||||
msgstr "arab fordítás"
|
||||
|
||||
#: themes/default/templates/about.html.ep:27
|
||||
msgid "core developer"
|
||||
msgstr "fő fejlesztő"
|
||||
|
||||
#: lib/Lutim.pm:348 lib/Lutim/Command/cron/stats.pm:145 lib/Lutim/Command/cron/stats.pm:159 lib/Lutim/Command/cron/stats.pm:176 themes/default/templates/index.html.ep:3 themes/default/templates/myfiles.html.ep:3 themes/default/templates/partial/raw.js.ep:21 themes/default/templates/partial/raw.js.ep:4 themes/default/templates/raw.html.ep:6
|
||||
msgid "no time limit"
|
||||
msgstr "nincs időkorlát"
|
||||
|
||||
#: themes/default/templates/about.html.ep:38
|
||||
msgid "occitan translation"
|
||||
msgstr "okcitán fordítás"
|
||||
|
||||
#: themes/default/templates/about.html.ep:27
|
||||
msgid "on"
|
||||
msgstr "be"
|
||||
|
||||
#: themes/default/templates/about.html.ep:39
|
||||
msgid "paste image to upload ability"
|
||||
msgstr "kép beillesztése a feltöltéshez"
|
||||
|
||||
#: themes/default/templates/about.html.ep:41
|
||||
msgid "russian translation"
|
||||
msgstr "orosz fordítás"
|
||||
|
||||
#: themes/default/templates/about.html.ep:36
|
||||
msgid "spanish translation"
|
||||
msgstr "spanyol fordítás"
|
||||
|
||||
#: themes/default/templates/about.html.ep:28
|
||||
msgid "webapp developer"
|
||||
msgstr "webalkalmazás-fejlesztő"
|
||||
|
||||
#: themes/default/templates/about.html.ep:24
|
||||
msgid "For more details, see the <a href=\"https://framagit.org/fiat-tux/hat-softwares/lutim\">homepage of the project</a>."
|
||||
msgstr ""
|
||||
"További részletekért lásd a <a href=\"https://framagit.org/fiat-tux/"
|
||||
"hat-softwares/lutim\">projekt weboldalát</a>."
|
||||
|
||||
#: themes/default/templates/index.html.ep:171 themes/default/templates/index.html.ep:215
|
||||
msgid "Tiling watermark"
|
||||
msgstr "Mozaikos vízjel"
|
||||
|
||||
#: lib/Lutim/Controller/Image.pm:168
|
||||
msgid "The image’s delay has been successfully modified"
|
||||
msgstr "A kép lejárata sikeresen módosítva"
|
||||
|
||||
#: themes/default/templates/index.html.ep:174 themes/default/templates/index.html.ep:218
|
||||
msgid "Single watermark"
|
||||
msgstr "Egy vízjel"
|
||||
|
||||
#: themes/default/templates/index.html.ep:177 themes/default/templates/index.html.ep:221
|
||||
msgid "No watermark"
|
||||
msgstr "Nincs vízjel"
|
||||
705
themes/default/lib/Lutim/I18N/it.po
Normal file
705
themes/default/lib/Lutim/I18N/it.po
Normal file
@@ -0,0 +1,705 @@
|
||||
# Paolo Mauri <paolo@paolomauri.it>, 2018. #zanata
|
||||
# roberto marcolin <nilogadda@gmail.com>, 2018. #zanata
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"PO-Revision-Date: 2020-06-09 19:24+0000\n"
|
||||
"Last-Translator: roberto marcolin <nilogadda@gmail.com>\n"
|
||||
"Language-Team: Italian <https://weblate.framasoft.org/projects/lutim/"
|
||||
"default-theme/it/>\n"
|
||||
"Language: it\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
"X-Generator: Weblate 3.11.2\n"
|
||||
|
||||
#. (7)
|
||||
#. (30)
|
||||
#. ($delay)
|
||||
#. (config('max_delay')
|
||||
#: lib/Lutim/Command/cron/stats.pm:147 lib/Lutim/Command/cron/stats.pm:148 lib/Lutim/Command/cron/stats.pm:161 lib/Lutim/Command/cron/stats.pm:162 lib/Lutim/Command/cron/stats.pm:178 lib/Lutim/Command/cron/stats.pm:179 themes/default/templates/myfiles.html.ep:24 themes/default/templates/myfiles.html.ep:33 themes/default/templates/myfiles.html.ep:34 themes/default/templates/partial/for_my_delay.html.ep:13 themes/default/templates/partial/for_my_delay.html.ep:14 themes/default/templates/partial/for_my_delay.html.ep:4 themes/default/templates/partial/lutim.js.ep:140 themes/default/templates/partial/lutim.js.ep:149 themes/default/templates/partial/lutim.js.ep:150 themes/default/templates/partial/raw.js.ep:23 themes/default/templates/partial/raw.js.ep:24 themes/default/templates/partial/raw.js.ep:6 themes/default/templates/partial/raw.js.ep:7 themes/default/templates/raw.html.ep:8 themes/default/templates/raw.html.ep:9
|
||||
msgid "%1 days"
|
||||
msgstr "%1 giorni"
|
||||
|
||||
#. ($total)
|
||||
#: themes/default/templates/stats.html.ep:2
|
||||
msgid "%1 sent images on this instance from beginning."
|
||||
msgstr "%1 immagini inviate su questa istanza dall'inizio."
|
||||
|
||||
#: themes/default/templates/index.html.ep:208
|
||||
msgid "-or-"
|
||||
msgstr "o"
|
||||
|
||||
#: lib/Lutim.pm:350 lib/Lutim/Command/cron/stats.pm:149 lib/Lutim/Command/cron/stats.pm:163 lib/Lutim/Command/cron/stats.pm:180 themes/default/templates/index.html.ep:5 themes/default/templates/myfiles.html.ep:5 themes/default/templates/partial/raw.js.ep:25 themes/default/templates/partial/raw.js.ep:8 themes/default/templates/raw.html.ep:10
|
||||
msgid "1 year"
|
||||
msgstr "1 anno"
|
||||
|
||||
#: lib/Lutim.pm:349 lib/Lutim/Command/cron/stats.pm:146 lib/Lutim/Command/cron/stats.pm:160 lib/Lutim/Command/cron/stats.pm:177 themes/default/templates/index.html.ep:4 themes/default/templates/myfiles.html.ep:33 themes/default/templates/myfiles.html.ep:4 themes/default/templates/partial/for_my_delay.html.ep:13 themes/default/templates/partial/lutim.js.ep:149 themes/default/templates/partial/raw.js.ep:22 themes/default/templates/partial/raw.js.ep:5 themes/default/templates/raw.html.ep:7
|
||||
msgid "24 hours"
|
||||
msgstr "24 ore"
|
||||
|
||||
#: themes/default/templates/partial/myfiles.js.ep:180
|
||||
msgid ": Error while trying to get the counter."
|
||||
msgstr ": Errore durante il tentativo di ottenere il conteggio."
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:77
|
||||
msgid "About"
|
||||
msgstr "Info"
|
||||
|
||||
#: lib/Lutim/Command/cron/stats.pm:142 themes/default/templates/raw.html.ep:3
|
||||
msgid "Active images"
|
||||
msgstr "Immagini attive"
|
||||
|
||||
#: lib/Lutim/Controller/Image.pm:327
|
||||
msgid "An error occured while downloading the image."
|
||||
msgstr "È avvenuto un errore durante il download dell'immagine."
|
||||
|
||||
#: themes/default/templates/zip.html.ep:2
|
||||
msgid "Archives download"
|
||||
msgstr "Download archivi"
|
||||
|
||||
#: themes/default/templates/about.html.ep:44 themes/default/templates/myfiles.html.ep:135 themes/default/templates/stats.html.ep:25
|
||||
msgid "Back to homepage"
|
||||
msgstr "Torna alla home page"
|
||||
|
||||
#: themes/default/templates/index.html.ep:211 themes/default/templates/index.html.ep:212
|
||||
msgid "Click to open the file browser"
|
||||
msgstr "Clicca per aprire il browser dei file"
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:51
|
||||
msgid "Close"
|
||||
msgstr "Chiudi"
|
||||
|
||||
#: themes/default/templates/gallery.html.ep:29
|
||||
msgid "Close (Esc)"
|
||||
msgstr "Chiudi (Esc)"
|
||||
|
||||
#: themes/default/templates/about.html.ep:30
|
||||
msgid "Contributors"
|
||||
msgstr "Collaboratori"
|
||||
|
||||
#: themes/default/templates/partial/common.js.ep:113 themes/default/templates/partial/common.js.ep:93
|
||||
msgid "Copied to clipboard"
|
||||
msgstr "Copia in appunti"
|
||||
|
||||
#: themes/default/templates/partial/lutim.js.ep:215 themes/default/templates/partial/lutim.js.ep:278 themes/default/templates/partial/lutim.js.ep:364
|
||||
msgid "Copy all view links to clipboard"
|
||||
msgstr "Copia in appunti tutti i link di visualizzazione"
|
||||
|
||||
#: themes/default/templates/index.html.ep:103 themes/default/templates/index.html.ep:111 themes/default/templates/index.html.ep:18 themes/default/templates/index.html.ep:36 themes/default/templates/index.html.ep:54 themes/default/templates/index.html.ep:87 themes/default/templates/index.html.ep:95 themes/default/templates/myfiles.html.ep:104 themes/default/templates/myfiles.html.ep:68 themes/default/templates/myfiles.html.ep:86 themes/default/templates/partial/common.js.ep:186 themes/default/templates/partial/lutim.js.ep:106 themes/default/templates/partial/lutim.js.ep:121 themes/default/templates/partial/lutim.js.ep:80 themes/default/templates/partial/lutim.js.ep:92 themes/default/templates/partial/myfiles.js.ep:142
|
||||
msgid "Copy to clipboard"
|
||||
msgstr "Copia in appunti"
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:123
|
||||
msgid "Counter"
|
||||
msgstr "Contatore"
|
||||
|
||||
#: themes/default/templates/stats.html.ep:18
|
||||
msgid "Delay repartition chart for disabled images"
|
||||
msgstr "Grafico di ripartizione dei periodi per le immagini disabilitate"
|
||||
|
||||
#: themes/default/templates/stats.html.ep:15
|
||||
msgid "Delay repartition chart for enabled images"
|
||||
msgstr "Grafico di ripartizione dei periodi per le immagini abilitate"
|
||||
|
||||
#: themes/default/templates/index.html.ep:133 themes/default/templates/index.html.ep:165 themes/default/templates/index.html.ep:196 themes/default/templates/myfiles.html.ep:124 themes/default/templates/myfiles.html.ep:45 themes/default/templates/partial/lutim.js.ep:161
|
||||
msgid "Delete at first view?"
|
||||
msgstr "Cancella alla prima visualizzazione?"
|
||||
|
||||
#: lib/Lutim/Command/cron/stats.pm:143 themes/default/templates/raw.html.ep:4
|
||||
msgid "Deleted images"
|
||||
msgstr "Immagini cancellate"
|
||||
|
||||
#: lib/Lutim/Command/cron/stats.pm:144 themes/default/templates/raw.html.ep:5
|
||||
msgid "Deleted images in 30 days"
|
||||
msgstr "Immagini cancellate entro 30 giorni"
|
||||
|
||||
#: themes/default/templates/index.html.ep:116 themes/default/templates/myfiles.html.ep:127 themes/default/templates/partial/common.js.ep:178 themes/default/templates/partial/common.js.ep:181
|
||||
msgid "Deletion link"
|
||||
msgstr "Link per la cancellazione"
|
||||
|
||||
#: themes/default/templates/gallery.html.ep:10
|
||||
msgid "Download all images"
|
||||
msgstr "Fai il download di tutte le immagini"
|
||||
|
||||
#: themes/default/templates/index.html.ep:101 themes/default/templates/index.html.ep:99 themes/default/templates/partial/lutim.js.ep:102 themes/default/templates/partial/lutim.js.ep:98
|
||||
msgid "Download link"
|
||||
msgstr "Link per il download"
|
||||
|
||||
#: themes/default/templates/index.html.ep:28 themes/default/templates/index.html.ep:31 themes/default/templates/myfiles.html.ep:78 themes/default/templates/myfiles.html.ep:81
|
||||
msgid "Download zip link"
|
||||
msgstr "Link all'archivio delle immagini in formato zip"
|
||||
|
||||
#: themes/default/templates/index.html.ep:207
|
||||
msgid "Drag & drop images here"
|
||||
msgstr "Rilascia qui le immagini"
|
||||
|
||||
#: themes/default/templates/about.html.ep:7
|
||||
msgid ""
|
||||
"Drag and drop an image in the appropriate area or use the traditional way to "
|
||||
"send files and Lutim will provide you four URLs. One to view the image, an "
|
||||
"other to directly download it, one you can use on social networks and a last "
|
||||
"to delete the image when you want."
|
||||
msgstr ""
|
||||
"Trascina e rilascia l'immagine nell'area prevista o seleziona i file nel "
|
||||
"modo classico per inviare i file e Lutim provvederà a creare quattro URL. "
|
||||
"Una per visualizzare l'immagine, un'altra per il download diretto, una per "
|
||||
"poterla utilizzare nei social network e l'ultima per eliminare l'immagine "
|
||||
"quando vorrai."
|
||||
|
||||
#: themes/default/templates/index.html.ep:168 themes/default/templates/index.html.ep:199
|
||||
msgid "Encrypt the image (Lutim does not keep the key)."
|
||||
msgstr "Crittografare l'immagine (Lutim non memorizza la chiave)."
|
||||
|
||||
#: themes/default/templates/partial/lutim.js.ep:45 themes/default/templates/partial/myfiles.js.ep:113
|
||||
msgid "Error while trying to modify the image."
|
||||
msgstr "Errore durante la modifica dell'immagine."
|
||||
|
||||
#: themes/default/templates/stats.html.ep:10
|
||||
msgid "Evolution of total files"
|
||||
msgstr "Evoluzione del numero totale di file"
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:126
|
||||
msgid "Expires at"
|
||||
msgstr "Scade il"
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:112
|
||||
msgid "Export localStorage data"
|
||||
msgstr "Esportare i dati del localStorage"
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:121
|
||||
msgid "File name"
|
||||
msgstr "Nome file"
|
||||
|
||||
#: themes/default/templates/about.html.ep:24
|
||||
msgid ""
|
||||
"For more details, see the <a href=\"https://framagit.org/luc/"
|
||||
"lutim\">homepage of the project</a>."
|
||||
msgstr ""
|
||||
"Per altre informazioni, vedi la <a href=\"https://framagit.org/luc/"
|
||||
"lutim\">homepage del progetto</a>."
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:80
|
||||
msgid "Fork me!"
|
||||
msgstr "Crea un fork del progetto !"
|
||||
|
||||
#: themes/default/templates/index.html.ep:10 themes/default/templates/index.html.ep:13 themes/default/templates/myfiles.html.ep:60 themes/default/templates/myfiles.html.ep:63
|
||||
msgid "Gallery link"
|
||||
msgstr "Link alla galleria"
|
||||
|
||||
#: themes/default/templates/partial/common.js.ep:116 themes/default/templates/partial/common.js.ep:134
|
||||
msgid "Hit Ctrl+C, then Enter to copy the short link"
|
||||
msgstr "Premi Ctrl+C, poi Invio per copiare lo short link"
|
||||
|
||||
#: themes/default/templates/layouts/default.html.ep:47
|
||||
msgid "Homepage"
|
||||
msgstr "Home page"
|
||||
|
||||
#: themes/default/templates/about.html.ep:20
|
||||
msgid "How do you pronounce Lutim?"
|
||||
msgstr "Come si pronuncia Lutim?"
|
||||
|
||||
#: themes/default/templates/about.html.ep:6
|
||||
msgid "How does it work?"
|
||||
msgstr "Come funziona?"
|
||||
|
||||
#: themes/default/templates/about.html.ep:18
|
||||
msgid "How to report an image?"
|
||||
msgstr "Come segnalare un'immagine?"
|
||||
|
||||
#: themes/default/templates/about.html.ep:14
|
||||
msgid ""
|
||||
"If the files are deleted if you ask it while posting it, their SHA512 "
|
||||
"footprint are retained."
|
||||
msgstr ""
|
||||
"Se i file vengono eliminati, se lo hai richiesto, la loro impronta SHA512 "
|
||||
"viene conservata."
|
||||
|
||||
#: themes/default/templates/index.html.ep:181 themes/default/templates/index.html.ep:221
|
||||
msgid "Image URL"
|
||||
msgstr "URL immagine"
|
||||
|
||||
#: lib/Lutim/Command/cron/stats.pm:141 themes/default/templates/raw.html.ep:2
|
||||
msgid "Image delay"
|
||||
msgstr "Durata dell' immagine"
|
||||
|
||||
#: themes/default/templates/partial/common.js.ep:157
|
||||
msgid "Image deleted"
|
||||
msgstr "Immagine cancellata"
|
||||
|
||||
#: lib/Lutim/Controller/Image.pm:753
|
||||
msgid "Image not found."
|
||||
msgstr "Immagine non trovata."
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:113
|
||||
msgid "Import localStorage data"
|
||||
msgstr "Importa i dati di localStorage"
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:69
|
||||
msgid "Informations"
|
||||
msgstr "Informazioni"
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:25
|
||||
msgid "Install webapp"
|
||||
msgstr "Installa webapp"
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:21
|
||||
msgid "Instance's statistics"
|
||||
msgstr "Statistiche dell'istanza"
|
||||
|
||||
#: themes/default/templates/about.html.ep:11
|
||||
msgid "Is it really anonymous?"
|
||||
msgstr "È veramente anonimo?"
|
||||
|
||||
#: themes/default/templates/about.html.ep:9
|
||||
msgid "Is it really free (as in free beer)?"
|
||||
msgstr "È veramente gratuita (come in birra gratis)?"
|
||||
|
||||
#: themes/default/templates/about.html.ep:21
|
||||
msgid ""
|
||||
"Juste like you pronounce the French word <a href=\"https://fr.wikipedia.org/"
|
||||
"wiki/Lutin\">lutin</a> (/ly.tɛ̃/)."
|
||||
msgstr ""
|
||||
"Come si pronuncia la parola francese <a href=\"https://fr.wikipedia.org/wiki/"
|
||||
"Lutin\">lutin</a> (/ly.tɛ̃/)."
|
||||
|
||||
#: themes/default/templates/index.html.ep:171 themes/default/templates/index.html.ep:202
|
||||
msgid "Keep EXIF tags"
|
||||
msgstr "Mantieni i tag EXIF"
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:43
|
||||
msgid "Language"
|
||||
msgstr "Lingua"
|
||||
|
||||
#: themes/default/templates/index.html.ep:136 themes/default/templates/index.html.ep:184 themes/default/templates/index.html.ep:224 themes/default/templates/partial/lutim.js.ep:165
|
||||
msgid "Let's go!"
|
||||
msgstr "Si parte!"
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:74
|
||||
msgid "License:"
|
||||
msgstr "Licenza :"
|
||||
|
||||
#: themes/default/templates/index.html.ep:107 themes/default/templates/index.html.ep:109 themes/default/templates/partial/lutim.js.ep:112 themes/default/templates/partial/lutim.js.ep:116
|
||||
msgid "Link for share on social networks"
|
||||
msgstr "Link da condividere nei social network"
|
||||
|
||||
#: themes/default/templates/login.html.ep:8
|
||||
msgid "Login"
|
||||
msgstr "Connetti"
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:33
|
||||
msgid "Logout"
|
||||
msgstr "Disconnetti"
|
||||
|
||||
#: themes/default/templates/zip.html.ep:7
|
||||
msgid ""
|
||||
"Lutim can't zip so many images at once, so it splitted your demand in "
|
||||
"multiple URLs."
|
||||
msgstr ""
|
||||
"Lutin non può zippare così tante immagini in una volta sola, così la tua "
|
||||
"richiesta è stata suddivida in diverse URL."
|
||||
|
||||
#: themes/default/templates/about.html.ep:4
|
||||
msgid ""
|
||||
"Lutim is a free (as in free beer) and anonymous image hosting service. It's "
|
||||
"also the name of the free (as in free speech) software which provides this "
|
||||
"service."
|
||||
msgstr ""
|
||||
"Lutim è un servizio di host per immagini gratuito (come in birra gratis) e "
|
||||
"anonimo.È anche il nome del software libero (come in libertà di parola) che "
|
||||
"fornisce questo servizio."
|
||||
|
||||
#: themes/default/templates/about.html.ep:25
|
||||
msgid "Main developers"
|
||||
msgstr "Principali sviluppatori"
|
||||
|
||||
#: themes/default/templates/index.html.ep:91 themes/default/templates/index.html.ep:93 themes/default/templates/partial/lutim.js.ep:86 themes/default/templates/partial/lutim.js.ep:89
|
||||
msgid "Markdown syntax"
|
||||
msgstr "Sintassi Markdown"
|
||||
|
||||
#: themes/default/templates/partial/myfiles.js.ep:149
|
||||
msgid "Modify expiration delay"
|
||||
msgstr "Modifica periodo di scadenza"
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:7 themes/default/templates/partial/navbar.html.ep:18
|
||||
msgid "My images"
|
||||
msgstr "Le mie immagini"
|
||||
|
||||
#: themes/default/templates/gallery.html.ep:45
|
||||
msgid "Next (arrow right)"
|
||||
msgstr "Prossima (freccia destra)"
|
||||
|
||||
#: themes/default/templates/partial/myfiles.js.ep:105 themes/default/templates/partial/myfiles.js.ep:132
|
||||
msgid "No limit"
|
||||
msgstr "Nessun limite"
|
||||
|
||||
#: themes/default/templates/index.html.ep:183 themes/default/templates/index.html.ep:216
|
||||
msgid "Only images are allowed"
|
||||
msgstr "Sono accettate solo immagini"
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:11
|
||||
msgid ""
|
||||
"Only the images sent with this browser will be listed here. The details are "
|
||||
"stored in localStorage: if you delete your localStorage data, you'll loose "
|
||||
"these details."
|
||||
msgstr ""
|
||||
"Solo le immagini inviate con questo browser saranno elencate qui. I dettagli "
|
||||
"sono salvati in localStorage: se cancelli i tuoi dati localStorage perderai "
|
||||
"questi dettagli."
|
||||
|
||||
#: themes/default/templates/about.html.ep:16
|
||||
msgid ""
|
||||
"Only the uploader! (well, only if he's the only owner of the images' rights "
|
||||
"before the upload)"
|
||||
msgstr ""
|
||||
"Solo chi ha caricato le immagini! ( cioè solo se è l'unico proprietario dei "
|
||||
"diritti delle immagini prima dell'upload)"
|
||||
|
||||
#: themes/default/templates/login.html.ep:12
|
||||
msgid "Password"
|
||||
msgstr "Password"
|
||||
|
||||
#: themes/default/templates/zip.html.ep:12
|
||||
msgid "Please click on each URL to download the different zip files."
|
||||
msgstr "Clicca su ciascuna URL per scaricare i diversi file zip."
|
||||
|
||||
#. (config('contact')
|
||||
#: themes/default/templates/about.html.ep:19
|
||||
msgid "Please contact the administrator: %1"
|
||||
msgstr "Contatta l'amministratore: %1"
|
||||
|
||||
#: lib/Lutim/Controller/Authent.pm:36
|
||||
msgid "Please, check your credentials: unable to authenticate."
|
||||
msgstr "Controlla le tue credenziali: impossibile autenticarti."
|
||||
|
||||
#: themes/default/templates/gallery.html.ep:43
|
||||
msgid "Previous (arrow left)"
|
||||
msgstr "Precedente (freccia sinistra)"
|
||||
|
||||
#: themes/default/templates/index.html.ep:46 themes/default/templates/index.html.ep:49 themes/default/templates/myfiles.html.ep:96 themes/default/templates/myfiles.html.ep:99
|
||||
msgid "Random image link"
|
||||
msgstr "Link a un'immagine random"
|
||||
|
||||
#: themes/default/templates/stats.html.ep:22
|
||||
msgid "Raw stats"
|
||||
msgstr "Statistiche grezze"
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:52
|
||||
msgid "Save changes"
|
||||
msgstr "Salva modifiche"
|
||||
|
||||
#: themes/default/templates/index.html.ep:176
|
||||
msgid "Send an image"
|
||||
msgstr "Invia un'immagine"
|
||||
|
||||
#: themes/default/templates/login.html.ep:16 themes/default/templates/logout.html.ep:5 themes/default/templates/partial/navbar.html.ep:37
|
||||
msgid "Signin"
|
||||
msgstr "Connessione"
|
||||
|
||||
#: themes/default/templates/index.html.ep:151 themes/default/templates/partial/gallery.js.ep:211 themes/default/templates/partial/lutim.js.ep:176
|
||||
msgid "Something bad happened"
|
||||
msgstr "Si è verificato un problema"
|
||||
|
||||
#. ($c->config('contact')
|
||||
#: lib/Lutim/Controller/Image.pm:760
|
||||
msgid ""
|
||||
"Something went wrong when creating the zip file. Try again later or contact "
|
||||
"the administrator (%1)."
|
||||
msgstr ""
|
||||
"Si è verificato un problema durante la creazione del file zip. Riprova più "
|
||||
"tardi o contatta l'amministratore (%1)."
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:55
|
||||
msgid "Support the author"
|
||||
msgstr "Sostieni l'autore"
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:63
|
||||
msgid "Support the author on Liberapay"
|
||||
msgstr "Sostieni l'autore su Liberapay"
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:60
|
||||
msgid "Support the author on Tipeee"
|
||||
msgstr "Sostieni l'autore su Tipeee"
|
||||
|
||||
#: themes/default/templates/about.html.ep:13
|
||||
msgid ""
|
||||
"The IP address of the image's sender is retained for a delay which depends "
|
||||
"of the administrator's choice (for the official instance, which is located "
|
||||
"in France, it's one year)."
|
||||
msgstr ""
|
||||
"L'indirizzo IP di chi ha inviato l'immagine viene conservata per un periodo "
|
||||
"che dipende dalla scelta dell'amministratore (per l'istanza ufficiale che si "
|
||||
"trova in Francia, il periodo è di un anno)."
|
||||
|
||||
#: themes/default/templates/about.html.ep:23
|
||||
msgid ""
|
||||
"The Lutim software is a <a href=\"http://en.wikipedia.org/wiki/"
|
||||
"Free_software\">free software</a>, which allows you to download and install "
|
||||
"it on you own server. Have a look at the <a href=\"https://www.gnu.org/"
|
||||
"licenses/agpl-3.0.html\">AGPL</a> to see what you can do."
|
||||
msgstr ""
|
||||
"Il software Lutim è un <a href=\"http://en.wikipedia.org/wiki/Free_software\""
|
||||
"> software libero</a>, che ti permette di scaricarlo e installarlo sul tuo "
|
||||
"server. Dai un'occhiata a <a href=\"https://www.gnu.org/licenses/agpl-3.0."
|
||||
"html\">AGPL</a> per vedere cosa puoi fare."
|
||||
|
||||
#: lib/Lutim/Controller/Image.pm:346
|
||||
msgid "The URL is not valid."
|
||||
msgstr "L'URL non è valida."
|
||||
|
||||
#: themes/default/templates/zip.html.ep:16
|
||||
msgid ""
|
||||
"The automatic download process will open a tab in your browser for each link."
|
||||
" You need to allow popups for Lutim."
|
||||
msgstr ""
|
||||
"Il procedimento di download automatico aprirà sul tuo browser una scheda per "
|
||||
"ciascun link. Devi acconsentire all'apertura di finestre popup per Lutim."
|
||||
|
||||
#: themes/default/templates/partial/myfiles.js.ep:32
|
||||
msgid "The data has been successfully imported."
|
||||
msgstr "I dati sono stati importati con successo."
|
||||
|
||||
#: lib/Lutim/Controller/Image.pm:159 lib/Lutim/Controller/Image.pm:227
|
||||
msgid "The delete token is invalid."
|
||||
msgstr "Il token cancellato non è valido."
|
||||
|
||||
#. ($upload->filename)
|
||||
#: lib/Lutim/Controller/Image.pm:487
|
||||
msgid "The file %1 is not an image."
|
||||
msgstr "Il file %1 non è un'immagine."
|
||||
|
||||
#. ($tx->res->max_message_size)
|
||||
#. ($c->req->max_message_size)
|
||||
#. (config('max_file_size')
|
||||
#: lib/Lutim/Controller/Image.pm:310 lib/Lutim/Controller/Image.pm:379 themes/default/templates/partial/lutim.js.ep:249
|
||||
msgid "The file exceed the size limit (%1)"
|
||||
msgstr "Il file supera il limite delle dimensioni (%1)"
|
||||
|
||||
#: themes/default/templates/stats.html.ep:12
|
||||
msgid "The graph's datas are not updated in real-time."
|
||||
msgstr "I dati del grafico non sono aggiornati in tempo reale."
|
||||
|
||||
#. ($image->filename)
|
||||
#: lib/Lutim/Controller/Image.pm:229
|
||||
msgid "The image %1 has already been deleted."
|
||||
msgstr "L'immagine %1 è già stata cancellata."
|
||||
|
||||
#. ($image->filename)
|
||||
#: lib/Lutim/Controller/Image.pm:238 lib/Lutim/Controller/Image.pm:243
|
||||
msgid "The image %1 has been successfully deleted"
|
||||
msgstr "L'immagine %1 è stata cancellata con successo"
|
||||
|
||||
#: lib/Lutim/Controller/Image.pm:167
|
||||
msgid "The image's delay has been successfully modified"
|
||||
msgstr "La durata dell'immagine è stata modificata con successo"
|
||||
|
||||
#: themes/default/templates/index.html.ep:63
|
||||
msgid "The images are encrypted on the server (Lutim does not keep the key)."
|
||||
msgstr "Le immagini sono criptate sul server (Lutim non possiede la chiave)."
|
||||
|
||||
#: themes/default/templates/about.html.ep:5
|
||||
msgid ""
|
||||
"The images you post on Lutim can be stored indefinitely or be deleted at "
|
||||
"first view or after a delay selected from those proposed."
|
||||
msgstr ""
|
||||
"Le immagini che tu invii su Lutim possono essere conservate a tempo "
|
||||
"indefinito oppure essere cancellate dopo la prima visualizzazione oppure "
|
||||
"dopo un periodo scelto tra quelli proposti."
|
||||
|
||||
#: themes/default/templates/partial/gallery.js.ep:257
|
||||
msgid "There is XXXX image(s) in the gallery"
|
||||
msgstr "Ci sono XXXX immagini nella gallery"
|
||||
|
||||
#. ($c->config->{contact})
|
||||
#: lib/Lutim/Controller/Image.pm:484
|
||||
msgid "There is no more available URL. Retry or contact the administrator. %1"
|
||||
msgstr ""
|
||||
"Non c'è più una URL disponibile. Riprova o contatta l'amministratore. %1"
|
||||
|
||||
#: themes/default/templates/gallery.html.ep:30
|
||||
msgid "Toggle fullscreen"
|
||||
msgstr "Passa a schermo intero"
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:8
|
||||
msgid "Toggle navigation"
|
||||
msgstr "Passa a barra di navigazione"
|
||||
|
||||
#: lib/Lutim/Command/cron/stats.pm:150 themes/default/templates/raw.html.ep:11
|
||||
msgid "Total"
|
||||
msgstr "Totale"
|
||||
|
||||
#: themes/default/templates/index.html.ep:78 themes/default/templates/partial/lutim.js.ep:17
|
||||
msgid "Tweet it!"
|
||||
msgstr "Twitta!"
|
||||
|
||||
#: themes/default/templates/partial/common.js.ep:110 themes/default/templates/partial/common.js.ep:90
|
||||
msgid "Unable to copy to clipboard"
|
||||
msgstr "Impossibile copiare negli appunti"
|
||||
|
||||
#. ($short)
|
||||
#: lib/Lutim/Controller/Image.pm:107 lib/Lutim/Controller/Image.pm:201 lib/Lutim/Controller/Image.pm:272
|
||||
msgid "Unable to find the image %1."
|
||||
msgstr "Impossibile trovare l'immagine %1."
|
||||
|
||||
#: lib/Lutim/Controller/Image.pm:573 lib/Lutim/Controller/Image.pm:618 lib/Lutim/Controller/Image.pm:657 lib/Lutim/Controller/Image.pm:700 lib/Lutim/Controller/Image.pm:712 lib/Lutim/Controller/Image.pm:723 lib/Lutim/Controller/Image.pm:750 lib/Lutim/Plugin/Helpers.pm:88
|
||||
msgid "Unable to find the image: it has been deleted."
|
||||
msgstr "Impossibile trovare l'immagine: è già stata cancellata."
|
||||
|
||||
#: lib/Lutim/Controller/Image.pm:144
|
||||
msgid "Unable to get counter"
|
||||
msgstr "Impossibile recuperare il contatore"
|
||||
|
||||
#: themes/default/templates/about.html.ep:17
|
||||
msgid ""
|
||||
"Unlike many image sharing services, you don't give us rights on uploaded "
|
||||
"images."
|
||||
msgstr ""
|
||||
"A differenza di molti servizi di condivisione di immagini, non ci cedi i "
|
||||
"diritti sulle immagini che carichi."
|
||||
|
||||
#: themes/default/templates/index.html.ep:180 themes/default/templates/index.html.ep:219
|
||||
msgid "Upload an image with its URL"
|
||||
msgstr "Carica un'immagine con la sua URL"
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:125
|
||||
msgid "Uploaded at"
|
||||
msgstr "Caricato il"
|
||||
|
||||
#: themes/default/templates/stats.html.ep:6
|
||||
msgid "Uploaded files by days"
|
||||
msgstr "File inviati per giorno"
|
||||
|
||||
#. ($c->app->config('contact')
|
||||
#: lib/Lutim/Plugin/Helpers.pm:221
|
||||
msgid ""
|
||||
"Uploading is currently disabled, please try later or contact the "
|
||||
"administrator (%1)."
|
||||
msgstr ""
|
||||
"Il caricamento (upload) è al momento disabilitato, prova più tardi o "
|
||||
"contatta l'amministratore (%1)."
|
||||
|
||||
#: themes/default/templates/index.html.ep:83 themes/default/templates/index.html.ep:85 themes/default/templates/myfiles.html.ep:122 themes/default/templates/partial/lutim.js.ep:72 themes/default/templates/partial/lutim.js.ep:76
|
||||
msgid "View link"
|
||||
msgstr "Visualizza link"
|
||||
|
||||
#: themes/default/templates/about.html.ep:22
|
||||
msgid "What about the software which provides the service?"
|
||||
msgstr "E a proposito del software che fornisce il servizio?"
|
||||
|
||||
#: themes/default/templates/about.html.ep:3
|
||||
msgid "What is Lutim?"
|
||||
msgstr "Che cos'è Lutim?"
|
||||
|
||||
#: themes/default/templates/about.html.ep:15
|
||||
msgid "Who owns rights on images uploaded on Lutim?"
|
||||
msgstr "Chi possiede i diritti sulle immagini caricate su Lutim?"
|
||||
|
||||
#: themes/default/templates/about.html.ep:12
|
||||
msgid ""
|
||||
"Yes, it is! On the other side, for legal reasons, your IP address will be "
|
||||
"stored when you send an image. Don't panic, it is normally the case of all "
|
||||
"sites on which you send files!"
|
||||
msgstr ""
|
||||
"Sì, è così. D'altra parte, per motivi legali, il tuo indirizzo IP viene "
|
||||
"registrato quando invii un'immagine. Niente paura, è la procedura usata da "
|
||||
"tutti i siti in cui puoi inviare dei file !"
|
||||
|
||||
#: themes/default/templates/about.html.ep:10
|
||||
msgid ""
|
||||
"Yes, it is! On the other side, if you want to support the developer, you can "
|
||||
"do it via <a href=\"https://www.tipeee.com/fiat-tux\">Tipeee</a> or via <a "
|
||||
"href=\"https://liberapay.com/sky/\">Liberapay</a>."
|
||||
msgstr ""
|
||||
"Sì, è così. D'altra parte se vuoi sostenere lo sviluppatore, puoi farlo con "
|
||||
"<a href=\"https://www.tipeee.com/fiat-tux\">Tipeee</a> o con <a href=\"https:"
|
||||
"//liberapay.com/sky/\">Liberapay</a>."
|
||||
|
||||
#: themes/default/templates/zip.html.ep:6
|
||||
msgid "You asked to download a zip archive for too much files."
|
||||
msgstr ""
|
||||
"Hai chiesto di fare il download di un archivio zip che contiene troppi file."
|
||||
|
||||
#: themes/default/templates/about.html.ep:8
|
||||
msgid ""
|
||||
"You can, optionally, request that the image(s) posted on Lutim to be deleted "
|
||||
"at first view (or download) or after the delay selected from those proposed."
|
||||
msgstr ""
|
||||
"Come opzione, puoi richiedere che le immagini inviate a Lutim siano "
|
||||
"cancellate alla prima visualizzazione (o download) o dopo il periodo scelto "
|
||||
"tra quelli proposti."
|
||||
|
||||
#: lib/Lutim/Controller/Authent.pm:27
|
||||
msgid "You have been successfully logged in."
|
||||
msgstr "Ti sei connesso con successo."
|
||||
|
||||
#: lib/Lutim/Controller/Authent.pm:66 themes/default/templates/logout.html.ep:3
|
||||
msgid "You have been successfully logged out."
|
||||
msgstr "Ti sei disconnesso con successo."
|
||||
|
||||
#: themes/default/templates/gallery.html.ep:31
|
||||
msgid "Zoom in/out"
|
||||
msgstr "Aumenta lozoom/diminuisci lo zoom"
|
||||
|
||||
#: themes/default/templates/about.html.ep:27
|
||||
msgid "and on"
|
||||
msgstr "e su"
|
||||
|
||||
#: themes/default/templates/about.html.ep:40
|
||||
msgid "arabic translation"
|
||||
msgstr "traduzione in arabo"
|
||||
|
||||
#: themes/default/templates/about.html.ep:27
|
||||
msgid "core developer"
|
||||
msgstr "sviluppatore principale"
|
||||
|
||||
#: lib/Lutim.pm:348 lib/Lutim/Command/cron/stats.pm:145 lib/Lutim/Command/cron/stats.pm:159 lib/Lutim/Command/cron/stats.pm:176 themes/default/templates/index.html.ep:3 themes/default/templates/myfiles.html.ep:3 themes/default/templates/partial/raw.js.ep:21 themes/default/templates/partial/raw.js.ep:4 themes/default/templates/raw.html.ep:6
|
||||
msgid "no time limit"
|
||||
msgstr "nessun limite di tempo"
|
||||
|
||||
#: themes/default/templates/about.html.ep:38
|
||||
msgid "occitan translation"
|
||||
msgstr "traduzione in occitano"
|
||||
|
||||
#: themes/default/templates/about.html.ep:27
|
||||
msgid "on"
|
||||
msgstr "su"
|
||||
|
||||
#: themes/default/templates/about.html.ep:39
|
||||
msgid "paste image to upload ability"
|
||||
msgstr "possibilità di incollare l'immagine per caricarla"
|
||||
|
||||
#: themes/default/templates/about.html.ep:41
|
||||
msgid "russian translation"
|
||||
msgstr "traduzione in russo"
|
||||
|
||||
#: themes/default/templates/about.html.ep:36
|
||||
msgid "spanish translation"
|
||||
msgstr "traduzione in spagnolo"
|
||||
|
||||
#: themes/default/templates/about.html.ep:28
|
||||
msgid "webapp developer"
|
||||
msgstr "sviluppatore della webapp"
|
||||
|
||||
#: lib/Lutim/Controller/Image.pm:168
|
||||
msgid "The image’s delay has been successfully modified"
|
||||
msgstr "La durata dell’immagine è stata modificata con successo"
|
||||
|
||||
#: themes/default/templates/about.html.ep:24
|
||||
msgid "For more details, see the <a href=\"https://framagit.org/fiat-tux/hat-softwares/lutim\">homepage of the project</a>."
|
||||
msgstr ""
|
||||
"Per altre informazioni, vedi la <a href=\"https://framagit.org/fiat-tux/"
|
||||
"hat-softwares/lutim\">homepage del progetto</a>."
|
||||
|
||||
#: themes/default/templates/index.html.ep:171 themes/default/templates/index.html.ep:215
|
||||
msgid "Tiling watermark"
|
||||
msgstr "Filigrana ripetuta"
|
||||
|
||||
#: themes/default/templates/index.html.ep:174 themes/default/templates/index.html.ep:218
|
||||
msgid "Single watermark"
|
||||
msgstr "Filigrana semplice"
|
||||
|
||||
#: themes/default/templates/index.html.ep:177 themes/default/templates/index.html.ep:221
|
||||
msgid "No watermark"
|
||||
msgstr "Nessuna filigrana"
|
||||
588
themes/default/lib/Lutim/I18N/lutim.pot
Normal file
588
themes/default/lib/Lutim/I18N/lutim.pot
Normal file
@@ -0,0 +1,588 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=CHARSET\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
||||
#. (7)
|
||||
#. (30)
|
||||
#. ($delay)
|
||||
#. (config('max_delay')
|
||||
#: lib/Lutim/Command/cron/stats.pm:156 lib/Lutim/Command/cron/stats.pm:157 lib/Lutim/Command/cron/stats.pm:170 lib/Lutim/Command/cron/stats.pm:171 lib/Lutim/Command/cron/stats.pm:187 lib/Lutim/Command/cron/stats.pm:188 themes/default/templates/myfiles.html.ep:24 themes/default/templates/myfiles.html.ep:33 themes/default/templates/myfiles.html.ep:34 themes/default/templates/partial/for_my_delay.html.ep:13 themes/default/templates/partial/for_my_delay.html.ep:14 themes/default/templates/partial/for_my_delay.html.ep:4 themes/default/templates/partial/lutim.js.ep:140 themes/default/templates/partial/lutim.js.ep:149 themes/default/templates/partial/lutim.js.ep:150 themes/default/templates/partial/raw.js.ep:23 themes/default/templates/partial/raw.js.ep:24 themes/default/templates/partial/raw.js.ep:6 themes/default/templates/partial/raw.js.ep:7 themes/default/templates/raw.html.ep:8 themes/default/templates/raw.html.ep:9
|
||||
msgid "%1 days"
|
||||
msgstr ""
|
||||
|
||||
#. ($total)
|
||||
#: themes/default/templates/stats.html.ep:2
|
||||
msgid "%1 sent images on this instance from beginning."
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/index.html.ep:228
|
||||
msgid "-or-"
|
||||
msgstr ""
|
||||
|
||||
#: lib/Lutim.pm:342 lib/Lutim/Command/cron/stats.pm:158 lib/Lutim/Command/cron/stats.pm:172 lib/Lutim/Command/cron/stats.pm:189 themes/default/templates/index.html.ep:5 themes/default/templates/myfiles.html.ep:5 themes/default/templates/partial/raw.js.ep:25 themes/default/templates/partial/raw.js.ep:8 themes/default/templates/raw.html.ep:10
|
||||
msgid "1 year"
|
||||
msgstr ""
|
||||
|
||||
#: lib/Lutim.pm:341 lib/Lutim/Command/cron/stats.pm:155 lib/Lutim/Command/cron/stats.pm:169 lib/Lutim/Command/cron/stats.pm:186 themes/default/templates/index.html.ep:4 themes/default/templates/myfiles.html.ep:33 themes/default/templates/myfiles.html.ep:4 themes/default/templates/partial/for_my_delay.html.ep:13 themes/default/templates/partial/lutim.js.ep:149 themes/default/templates/partial/raw.js.ep:22 themes/default/templates/partial/raw.js.ep:5 themes/default/templates/raw.html.ep:7
|
||||
msgid "24 hours"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/partial/myfiles.js.ep:210
|
||||
msgid ": Error while trying to get the counter."
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:63
|
||||
msgid "About"
|
||||
msgstr ""
|
||||
|
||||
#: lib/Lutim/Command/cron/stats.pm:151 themes/default/templates/raw.html.ep:3
|
||||
msgid "Active images"
|
||||
msgstr ""
|
||||
|
||||
#: lib/Lutim/Controller/Image.pm:329
|
||||
msgid "An error occured while downloading the image."
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/zip.html.ep:2
|
||||
msgid "Archives download"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/about.html.ep:44 themes/default/templates/myfiles.html.ep:129 themes/default/templates/stats.html.ep:25
|
||||
msgid "Back to homepage"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/index.html.ep:231 themes/default/templates/index.html.ep:232
|
||||
msgid "Click to open the file browser"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:51
|
||||
msgid "Close"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/gallery.html.ep:29
|
||||
msgid "Close (Esc)"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/about.html.ep:30
|
||||
msgid "Contributors"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/partial/common.js.ep:113 themes/default/templates/partial/common.js.ep:93
|
||||
msgid "Copied to clipboard"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/partial/lutim.js.ep:215 themes/default/templates/partial/lutim.js.ep:278 themes/default/templates/partial/lutim.js.ep:364
|
||||
msgid "Copy all view links to clipboard"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/index.html.ep:105 themes/default/templates/index.html.ep:16 themes/default/templates/index.html.ep:32 themes/default/templates/index.html.ep:48 themes/default/templates/index.html.ep:81 themes/default/templates/index.html.ep:89 themes/default/templates/index.html.ep:97 themes/default/templates/myfiles.html.ep:66 themes/default/templates/myfiles.html.ep:82 themes/default/templates/myfiles.html.ep:98 themes/default/templates/partial/common.js.ep:186 themes/default/templates/partial/lutim.js.ep:106 themes/default/templates/partial/lutim.js.ep:121 themes/default/templates/partial/lutim.js.ep:80 themes/default/templates/partial/lutim.js.ep:92 themes/default/templates/partial/myfiles.js.ep:172
|
||||
msgid "Copy to clipboard"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:117
|
||||
msgid "Counter"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/stats.html.ep:18
|
||||
msgid "Delay repartition chart for disabled images"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/stats.html.ep:15
|
||||
msgid "Delay repartition chart for enabled images"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/index.html.ep:127 themes/default/templates/index.html.ep:159 themes/default/templates/index.html.ep:203 themes/default/templates/myfiles.html.ep:118 themes/default/templates/myfiles.html.ep:45 themes/default/templates/partial/lutim.js.ep:161
|
||||
msgid "Delete at first view?"
|
||||
msgstr ""
|
||||
|
||||
#: lib/Lutim/Command/cron/stats.pm:152 themes/default/templates/raw.html.ep:4
|
||||
msgid "Deleted images"
|
||||
msgstr ""
|
||||
|
||||
#: lib/Lutim/Command/cron/stats.pm:153 themes/default/templates/raw.html.ep:5
|
||||
msgid "Deleted images in 30 days"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/index.html.ep:110 themes/default/templates/myfiles.html.ep:121 themes/default/templates/partial/common.js.ep:178 themes/default/templates/partial/common.js.ep:181
|
||||
msgid "Deletion link"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/gallery.html.ep:10
|
||||
msgid "Download all images"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/index.html.ep:93 themes/default/templates/index.html.ep:95 themes/default/templates/partial/lutim.js.ep:102 themes/default/templates/partial/lutim.js.ep:98
|
||||
msgid "Download link"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/index.html.ep:26 themes/default/templates/index.html.ep:28 themes/default/templates/myfiles.html.ep:76 themes/default/templates/myfiles.html.ep:78
|
||||
msgid "Download zip link"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/index.html.ep:227
|
||||
msgid "Drag & drop images here"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/about.html.ep:7
|
||||
msgid "Drag and drop an image in the appropriate area or use the traditional way to send files and Lutim will provide you four URLs. One to view the image, an other to directly download it, one you can use on social networks and a last to delete the image when you want."
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/index.html.ep:162 themes/default/templates/index.html.ep:206
|
||||
msgid "Encrypt the image (Lutim does not keep the key)."
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/partial/lutim.js.ep:45 themes/default/templates/partial/myfiles.js.ep:128
|
||||
msgid "Error while trying to modify the image."
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/stats.html.ep:10
|
||||
msgid "Evolution of total files"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:120
|
||||
msgid "Expires at"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:106
|
||||
msgid "Export localStorage data"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:115
|
||||
msgid "File name"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/about.html.ep:24
|
||||
msgid "For more details, see the <a href=\"https://framagit.org/fiat-tux/hat-softwares/lutim\">homepage of the project</a>."
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:66
|
||||
msgid "Fork me!"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/index.html.ep:10 themes/default/templates/index.html.ep:12 themes/default/templates/myfiles.html.ep:60 themes/default/templates/myfiles.html.ep:62
|
||||
msgid "Gallery link"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/partial/common.js.ep:116 themes/default/templates/partial/common.js.ep:134
|
||||
msgid "Hit Ctrl+C, then Enter to copy the short link"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/layouts/default.html.ep:47
|
||||
msgid "Homepage"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/about.html.ep:20
|
||||
msgid "How do you pronounce Lutim?"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/about.html.ep:6
|
||||
msgid "How does it work?"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/about.html.ep:18
|
||||
msgid "How to report an image?"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/about.html.ep:14
|
||||
msgid "If the files are deleted if you ask it while posting it, their SHA512 footprint are retained."
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/index.html.ep:188 themes/default/templates/index.html.ep:241
|
||||
msgid "Image URL"
|
||||
msgstr ""
|
||||
|
||||
#: lib/Lutim/Command/cron/stats.pm:150 themes/default/templates/raw.html.ep:2
|
||||
msgid "Image delay"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/partial/common.js.ep:157
|
||||
msgid "Image deleted"
|
||||
msgstr ""
|
||||
|
||||
#: lib/Lutim/Controller/Image.pm:799
|
||||
msgid "Image not found."
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:107
|
||||
msgid "Import localStorage data"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:55
|
||||
msgid "Informations"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:25
|
||||
msgid "Install webapp"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:21
|
||||
msgid "Instance's statistics"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/about.html.ep:11
|
||||
msgid "Is it really anonymous?"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/about.html.ep:9
|
||||
msgid "Is it really free (as in free beer)?"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/about.html.ep:21
|
||||
msgid "Juste like you pronounce the French word <a href=\"https://fr.wikipedia.org/wiki/Lutin\">lutin</a> (/ly.tɛ̃/)."
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/index.html.ep:165 themes/default/templates/index.html.ep:209
|
||||
msgid "Keep EXIF tags"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:43
|
||||
msgid "Language"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/index.html.ep:130 themes/default/templates/index.html.ep:191 themes/default/templates/index.html.ep:244 themes/default/templates/partial/lutim.js.ep:165
|
||||
msgid "Let's go!"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:60
|
||||
msgid "License:"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/index.html.ep:101 themes/default/templates/index.html.ep:103 themes/default/templates/partial/lutim.js.ep:112 themes/default/templates/partial/lutim.js.ep:116
|
||||
msgid "Link for share on social networks"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/login.html.ep:8
|
||||
msgid "Login"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:33
|
||||
msgid "Logout"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/zip.html.ep:7
|
||||
msgid "Lutim can't zip so many images at once, so it splitted your demand in multiple URLs."
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/about.html.ep:4
|
||||
msgid "Lutim is a free (as in free beer) and anonymous image hosting service. It's also the name of the free (as in free speech) software which provides this service."
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/about.html.ep:25
|
||||
msgid "Main developers"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/index.html.ep:85 themes/default/templates/index.html.ep:87 themes/default/templates/partial/lutim.js.ep:86 themes/default/templates/partial/lutim.js.ep:89
|
||||
msgid "Markdown syntax"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/partial/myfiles.js.ep:179
|
||||
msgid "Modify expiration delay"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:7 themes/default/templates/partial/navbar.html.ep:18
|
||||
msgid "My images"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/gallery.html.ep:45
|
||||
msgid "Next (arrow right)"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/partial/myfiles.js.ep:120 themes/default/templates/partial/myfiles.js.ep:162
|
||||
msgid "No limit"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/index.html.ep:177 themes/default/templates/index.html.ep:221
|
||||
msgid "No watermark"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/index.html.ep:190 themes/default/templates/index.html.ep:236
|
||||
msgid "Only images are allowed"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:11
|
||||
msgid "Only the images sent with this browser will be listed here. The details are stored in localStorage: if you delete your localStorage data, you'll loose these details."
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/about.html.ep:16
|
||||
msgid "Only the uploader! (well, only if he's the only owner of the images' rights before the upload)"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/login.html.ep:12
|
||||
msgid "Password"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/zip.html.ep:12
|
||||
msgid "Please click on each URL to download the different zip files."
|
||||
msgstr ""
|
||||
|
||||
#. (config('contact')
|
||||
#: themes/default/templates/about.html.ep:19
|
||||
msgid "Please contact the administrator: %1"
|
||||
msgstr ""
|
||||
|
||||
#: lib/Lutim/Controller/Authent.pm:36
|
||||
msgid "Please, check your credentials: unable to authenticate."
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/gallery.html.ep:43
|
||||
msgid "Previous (arrow left)"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/index.html.ep:42 themes/default/templates/index.html.ep:44 themes/default/templates/myfiles.html.ep:92 themes/default/templates/myfiles.html.ep:94
|
||||
msgid "Random image link"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/stats.html.ep:22
|
||||
msgid "Raw stats"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:52
|
||||
msgid "Save changes"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/index.html.ep:183
|
||||
msgid "Send an image"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/login.html.ep:16 themes/default/templates/logout.html.ep:5 themes/default/templates/partial/navbar.html.ep:37
|
||||
msgid "Signin"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/index.html.ep:174 themes/default/templates/index.html.ep:218
|
||||
msgid "Single watermark"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/index.html.ep:145 themes/default/templates/partial/gallery.js.ep:211 themes/default/templates/partial/lutim.js.ep:176
|
||||
msgid "Something bad happened"
|
||||
msgstr ""
|
||||
|
||||
#. ($c->config('contact')
|
||||
#: lib/Lutim/Controller/Image.pm:806
|
||||
msgid "Something went wrong when creating the zip file. Try again later or contact the administrator (%1)."
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/about.html.ep:13
|
||||
msgid "The IP address of the image's sender is retained for a delay which depends of the administrator's choice (for the official instance, which is located in France, it's one year)."
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/about.html.ep:23
|
||||
msgid "The Lutim software is a <a href=\"http://en.wikipedia.org/wiki/Free_software\">free software</a>, which allows you to download and install it on you own server. Have a look at the <a href=\"https://www.gnu.org/licenses/agpl-3.0.html\">AGPL</a> to see what you can do."
|
||||
msgstr ""
|
||||
|
||||
#: lib/Lutim/Controller/Image.pm:348
|
||||
msgid "The URL is not valid."
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/zip.html.ep:16
|
||||
msgid "The automatic download process will open a tab in your browser for each link. You need to allow popups for Lutim."
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/partial/myfiles.js.ep:32
|
||||
msgid "The data has been successfully imported."
|
||||
msgstr ""
|
||||
|
||||
#: lib/Lutim/Controller/Image.pm:160 lib/Lutim/Controller/Image.pm:228
|
||||
msgid "The delete token is invalid."
|
||||
msgstr ""
|
||||
|
||||
#. ($upload->filename)
|
||||
#: lib/Lutim/Controller/Image.pm:531
|
||||
msgid "The file %1 is not an image."
|
||||
msgstr ""
|
||||
|
||||
#. ($tx->res->max_message_size)
|
||||
#. ($c->req->max_message_size)
|
||||
#. (config('max_file_size')
|
||||
#: lib/Lutim/Controller/Image.pm:312 lib/Lutim/Controller/Image.pm:381 themes/default/templates/partial/lutim.js.ep:249
|
||||
msgid "The file exceed the size limit (%1)"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/stats.html.ep:12
|
||||
msgid "The graph's datas are not updated in real-time."
|
||||
msgstr ""
|
||||
|
||||
#. ($image->filename)
|
||||
#: lib/Lutim/Controller/Image.pm:230
|
||||
msgid "The image %1 has already been deleted."
|
||||
msgstr ""
|
||||
|
||||
#. ($image->filename)
|
||||
#: lib/Lutim/Controller/Image.pm:239 lib/Lutim/Controller/Image.pm:244
|
||||
msgid "The image %1 has been successfully deleted"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/index.html.ep:57
|
||||
msgid "The images are encrypted on the server (Lutim does not keep the key)."
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/about.html.ep:5
|
||||
msgid "The images you post on Lutim can be stored indefinitely or be deleted at first view or after a delay selected from those proposed."
|
||||
msgstr ""
|
||||
|
||||
#: lib/Lutim/Controller/Image.pm:168
|
||||
msgid "The image’s delay has been successfully modified"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/partial/gallery.js.ep:277
|
||||
msgid "There is XXXX image(s) in the gallery"
|
||||
msgstr ""
|
||||
|
||||
#. ($c->config->{contact})
|
||||
#: lib/Lutim/Controller/Image.pm:528
|
||||
msgid "There is no more available URL. Retry or contact the administrator. %1"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/index.html.ep:171 themes/default/templates/index.html.ep:215
|
||||
msgid "Tiling watermark"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/gallery.html.ep:30
|
||||
msgid "Toggle fullscreen"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:8
|
||||
msgid "Toggle navigation"
|
||||
msgstr ""
|
||||
|
||||
#: lib/Lutim/Command/cron/stats.pm:159 themes/default/templates/raw.html.ep:11
|
||||
msgid "Total"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/index.html.ep:72 themes/default/templates/partial/lutim.js.ep:17
|
||||
msgid "Tweet it!"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/partial/common.js.ep:110 themes/default/templates/partial/common.js.ep:90
|
||||
msgid "Unable to copy to clipboard"
|
||||
msgstr ""
|
||||
|
||||
#. ($short)
|
||||
#: lib/Lutim/Controller/Image.pm:108 lib/Lutim/Controller/Image.pm:202 lib/Lutim/Controller/Image.pm:273
|
||||
msgid "Unable to find the image %1."
|
||||
msgstr ""
|
||||
|
||||
#: lib/Lutim/Controller/Image.pm:617 lib/Lutim/Controller/Image.pm:662 lib/Lutim/Controller/Image.pm:703 lib/Lutim/Controller/Image.pm:746 lib/Lutim/Controller/Image.pm:758 lib/Lutim/Controller/Image.pm:769 lib/Lutim/Controller/Image.pm:796 lib/Lutim/Plugin/Helpers.pm:89
|
||||
msgid "Unable to find the image: it has been deleted."
|
||||
msgstr ""
|
||||
|
||||
#: lib/Lutim/Controller/Image.pm:145
|
||||
msgid "Unable to get counter"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/about.html.ep:17
|
||||
msgid "Unlike many image sharing services, you don't give us rights on uploaded images."
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/index.html.ep:187 themes/default/templates/index.html.ep:239
|
||||
msgid "Upload an image with its URL"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:119
|
||||
msgid "Uploaded at"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/stats.html.ep:6
|
||||
msgid "Uploaded files by days"
|
||||
msgstr ""
|
||||
|
||||
#. ($c->app->config('contact')
|
||||
#: lib/Lutim/Plugin/Helpers.pm:222
|
||||
msgid "Uploading is currently disabled, please try later or contact the administrator (%1)."
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/index.html.ep:77 themes/default/templates/index.html.ep:79 themes/default/templates/myfiles.html.ep:116 themes/default/templates/partial/lutim.js.ep:72 themes/default/templates/partial/lutim.js.ep:76
|
||||
msgid "View link"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/about.html.ep:22
|
||||
msgid "What about the software which provides the service?"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/about.html.ep:3
|
||||
msgid "What is Lutim?"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/about.html.ep:15
|
||||
msgid "Who owns rights on images uploaded on Lutim?"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/about.html.ep:12
|
||||
msgid "Yes, it is! On the other side, for legal reasons, your IP address will be stored when you send an image. Don't panic, it is normally the case of all sites on which you send files!"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/about.html.ep:10
|
||||
msgid "Yes, it is! On the other side, if you want to support the developer, you can do it via <a href=\"https://www.tipeee.com/fiat-tux\">Tipeee</a> or via <a href=\"https://liberapay.com/sky/\">Liberapay</a>."
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/zip.html.ep:6
|
||||
msgid "You asked to download a zip archive for too much files."
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/about.html.ep:8
|
||||
msgid "You can, optionally, request that the image(s) posted on Lutim to be deleted at first view (or download) or after the delay selected from those proposed."
|
||||
msgstr ""
|
||||
|
||||
#: lib/Lutim/Controller/Authent.pm:27
|
||||
msgid "You have been successfully logged in."
|
||||
msgstr ""
|
||||
|
||||
#: lib/Lutim/Controller/Authent.pm:66 themes/default/templates/logout.html.ep:3
|
||||
msgid "You have been successfully logged out."
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/gallery.html.ep:31
|
||||
msgid "Zoom in/out"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/about.html.ep:27
|
||||
msgid "and on"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/about.html.ep:40
|
||||
msgid "arabic translation"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/about.html.ep:27
|
||||
msgid "core developer"
|
||||
msgstr ""
|
||||
|
||||
#: lib/Lutim.pm:340 lib/Lutim/Command/cron/stats.pm:154 lib/Lutim/Command/cron/stats.pm:168 lib/Lutim/Command/cron/stats.pm:185 themes/default/templates/index.html.ep:3 themes/default/templates/myfiles.html.ep:3 themes/default/templates/partial/raw.js.ep:21 themes/default/templates/partial/raw.js.ep:4 themes/default/templates/raw.html.ep:6
|
||||
msgid "no time limit"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/about.html.ep:38
|
||||
msgid "occitan translation"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/about.html.ep:27
|
||||
msgid "on"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/about.html.ep:39
|
||||
msgid "paste image to upload ability"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/about.html.ep:41
|
||||
msgid "russian translation"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/about.html.ep:36
|
||||
msgid "spanish translation"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/about.html.ep:28
|
||||
msgid "webapp developer"
|
||||
msgstr ""
|
||||
@@ -2,26 +2,29 @@
|
||||
# Copyright (C) 2014 Luc Didry
|
||||
# This file is distributed under the same license as the Lutim package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||
#
|
||||
#, fuzzy
|
||||
# Luc Didry <luc@framasoft.org>, 2018. #zanata
|
||||
# Quentí, 2018. #zanata
|
||||
# Luc Didry <luc@framasoft.org>, 2019. #zanata
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Lutim\n"
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: Quentin Pagès\n"
|
||||
"Language-Team: Occitan (http://www.transifex.com/fiat-tux/lutim/language/oc/)\n"
|
||||
"PO-Revision-Date: 2020-03-09 16:30+0000\n"
|
||||
"Last-Translator: Quentin PAGÈS <quentinantonin@free.fr>\n"
|
||||
"Language-Team: Occitan <https://weblate.framasoft.org/projects/lutim/"
|
||||
"default-theme/oc/>\n"
|
||||
"Language: oc\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: oc\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||
"Plural-Forms: nplurals=2; plural=n > 1;\n"
|
||||
"X-Generator: Weblate 3.11.2\n"
|
||||
|
||||
#. (7)
|
||||
#. (30)
|
||||
#. ($delay)
|
||||
#. (config('max_delay')
|
||||
#: lib/Lutim/Command/cron/stats.pm:149 lib/Lutim/Command/cron/stats.pm:150 lib/Lutim/Command/cron/stats.pm:160 lib/Lutim/Command/cron/stats.pm:161 lib/Lutim/Command/cron/stats.pm:177 lib/Lutim/Command/cron/stats.pm:178 themes/default/templates/partial/for_my_delay.html.ep:12 themes/default/templates/partial/for_my_delay.html.ep:13 themes/default/templates/partial/for_my_delay.html.ep:3 themes/default/templates/partial/lutim.js.ep:138 themes/default/templates/partial/lutim.js.ep:147 themes/default/templates/partial/lutim.js.ep:148 themes/default/templates/raw.html.ep:19 themes/default/templates/raw.html.ep:20 themes/default/templates/raw.html.ep:36 themes/default/templates/raw.html.ep:37 themes/default/templates/raw.html.ep:8 themes/default/templates/raw.html.ep:9
|
||||
#: lib/Lutim/Command/cron/stats.pm:159 lib/Lutim/Command/cron/stats.pm:160 lib/Lutim/Command/cron/stats.pm:173 lib/Lutim/Command/cron/stats.pm:174 lib/Lutim/Command/cron/stats.pm:190 lib/Lutim/Command/cron/stats.pm:191 themes/default/templates/myfiles.html.ep:24 themes/default/templates/myfiles.html.ep:33 themes/default/templates/myfiles.html.ep:34 themes/default/templates/partial/for_my_delay.html.ep:13 themes/default/templates/partial/for_my_delay.html.ep:14 themes/default/templates/partial/for_my_delay.html.ep:4 themes/default/templates/partial/lutim.js.ep:140 themes/default/templates/partial/lutim.js.ep:149 themes/default/templates/partial/lutim.js.ep:150 themes/default/templates/partial/raw.js.ep:23 themes/default/templates/partial/raw.js.ep:24 themes/default/templates/partial/raw.js.ep:6 themes/default/templates/partial/raw.js.ep:7 themes/default/templates/raw.html.ep:8 themes/default/templates/raw.html.ep:9
|
||||
msgid "%1 days"
|
||||
msgstr "%1 jorns"
|
||||
|
||||
@@ -30,27 +33,31 @@ msgstr "%1 jorns"
|
||||
msgid "%1 sent images on this instance from beginning."
|
||||
msgstr "%1 imatges mandats sus aquesta instància dempuèi lo començament."
|
||||
|
||||
#: themes/default/templates/index.html.ep:190
|
||||
#: themes/default/templates/index.html.ep:208
|
||||
msgid "-or-"
|
||||
msgstr "-o-"
|
||||
|
||||
#: lib/Lutim.pm:192 lib/Lutim/Command/cron/stats.pm:151 lib/Lutim/Command/cron/stats.pm:162 lib/Lutim/Command/cron/stats.pm:179 themes/default/templates/index.html.ep:5 themes/default/templates/raw.html.ep:10 themes/default/templates/raw.html.ep:21 themes/default/templates/raw.html.ep:38
|
||||
#: lib/Lutim.pm:350 lib/Lutim/Command/cron/stats.pm:161 lib/Lutim/Command/cron/stats.pm:175 lib/Lutim/Command/cron/stats.pm:192 themes/default/templates/index.html.ep:5 themes/default/templates/myfiles.html.ep:5 themes/default/templates/partial/raw.js.ep:25 themes/default/templates/partial/raw.js.ep:8 themes/default/templates/raw.html.ep:10
|
||||
msgid "1 year"
|
||||
msgstr "1 an"
|
||||
|
||||
#: lib/Lutim.pm:191 lib/Lutim/Command/cron/stats.pm:148 lib/Lutim/Command/cron/stats.pm:159 lib/Lutim/Command/cron/stats.pm:176 themes/default/templates/index.html.ep:4 themes/default/templates/partial/for_my_delay.html.ep:12 themes/default/templates/partial/lutim.js.ep:147 themes/default/templates/raw.html.ep:18 themes/default/templates/raw.html.ep:35 themes/default/templates/raw.html.ep:7
|
||||
#: lib/Lutim.pm:349 lib/Lutim/Command/cron/stats.pm:158 lib/Lutim/Command/cron/stats.pm:172 lib/Lutim/Command/cron/stats.pm:189 themes/default/templates/index.html.ep:4 themes/default/templates/myfiles.html.ep:33 themes/default/templates/myfiles.html.ep:4 themes/default/templates/partial/for_my_delay.html.ep:13 themes/default/templates/partial/lutim.js.ep:149 themes/default/templates/partial/raw.js.ep:22 themes/default/templates/partial/raw.js.ep:5 themes/default/templates/raw.html.ep:7
|
||||
msgid "24 hours"
|
||||
msgstr "24 oras"
|
||||
|
||||
#: themes/default/templates/partial/myfiles.js.ep:57
|
||||
#: themes/default/templates/partial/myfiles.js.ep:180
|
||||
msgid ": Error while trying to get the counter."
|
||||
msgstr " : Error al moment de recuperar lo comptador."
|
||||
msgstr ": Error al moment de recuperar lo comptador."
|
||||
|
||||
#: lib/Lutim/Command/cron/stats.pm:144 themes/default/templates/raw.html.ep:3
|
||||
#: themes/default/templates/partial/navbar.html.ep:77
|
||||
msgid "About"
|
||||
msgstr "A prepaus"
|
||||
|
||||
#: lib/Lutim/Command/cron/stats.pm:154 themes/default/templates/raw.html.ep:3
|
||||
msgid "Active images"
|
||||
msgstr "Imatges actius"
|
||||
|
||||
#: lib/Lutim/Controller.pm:288
|
||||
#: lib/Lutim/Controller/Image.pm:328
|
||||
msgid "An error occured while downloading the image."
|
||||
msgstr "Una error es apareguda pendent lo telecargament de l'imatge."
|
||||
|
||||
@@ -58,27 +65,39 @@ msgstr "Una error es apareguda pendent lo telecargament de l'imatge."
|
||||
msgid "Archives download"
|
||||
msgstr "Telecargar los archius"
|
||||
|
||||
#: themes/default/templates/about.html.ep:41 themes/default/templates/myfiles.html.ep:64 themes/default/templates/stats.html.ep:25
|
||||
#: themes/default/templates/about.html.ep:44 themes/default/templates/myfiles.html.ep:135 themes/default/templates/stats.html.ep:25
|
||||
msgid "Back to homepage"
|
||||
msgstr "Tornar a la pagina d'acuèlh"
|
||||
|
||||
#: themes/default/templates/index.html.ep:193 themes/default/templates/index.html.ep:194
|
||||
#: themes/default/templates/index.html.ep:211 themes/default/templates/index.html.ep:212
|
||||
msgid "Click to open the file browser"
|
||||
msgstr "Clicatz per utilizar lo navigator de fichièr"
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:51
|
||||
msgid "Close"
|
||||
msgstr "Tampar"
|
||||
|
||||
#: themes/default/templates/gallery.html.ep:29
|
||||
msgid "Close (Esc)"
|
||||
msgstr "Tampar (Esc)"
|
||||
|
||||
#: themes/default/templates/about.html.ep:30
|
||||
msgid "Contributors"
|
||||
msgstr "Contribudors"
|
||||
msgstr "Contributors"
|
||||
|
||||
#: themes/default/templates/partial/lutim.js.ep:214 themes/default/templates/partial/lutim.js.ep:268 themes/default/templates/partial/lutim.js.ep:346
|
||||
#: themes/default/templates/partial/common.js.ep:113 themes/default/templates/partial/common.js.ep:93
|
||||
msgid "Copied to clipboard"
|
||||
msgstr "Copiat al quichapapièrs"
|
||||
|
||||
#: themes/default/templates/partial/lutim.js.ep:215 themes/default/templates/partial/lutim.js.ep:278 themes/default/templates/partial/lutim.js.ep:364
|
||||
msgid "Copy all view links to clipboard"
|
||||
msgstr "Copiar totes los ligams de visualizacion dins lo quichapapièrs"
|
||||
|
||||
#: themes/default/templates/index.html.ep:18 themes/default/templates/index.html.ep:36 themes/default/templates/index.html.ep:69 themes/default/templates/index.html.ep:77 themes/default/templates/index.html.ep:85 themes/default/templates/index.html.ep:93 themes/default/templates/myfiles.html.ep:20 themes/default/templates/myfiles.html.ep:38 themes/default/templates/partial/common.js.ep:150 themes/default/templates/partial/lutim.js.ep:105 themes/default/templates/partial/lutim.js.ep:120 themes/default/templates/partial/lutim.js.ep:79 themes/default/templates/partial/lutim.js.ep:91
|
||||
#: themes/default/templates/index.html.ep:103 themes/default/templates/index.html.ep:111 themes/default/templates/index.html.ep:18 themes/default/templates/index.html.ep:36 themes/default/templates/index.html.ep:54 themes/default/templates/index.html.ep:87 themes/default/templates/index.html.ep:95 themes/default/templates/myfiles.html.ep:104 themes/default/templates/myfiles.html.ep:68 themes/default/templates/myfiles.html.ep:86 themes/default/templates/partial/common.js.ep:186 themes/default/templates/partial/lutim.js.ep:106 themes/default/templates/partial/lutim.js.ep:121 themes/default/templates/partial/lutim.js.ep:80 themes/default/templates/partial/lutim.js.ep:92 themes/default/templates/partial/myfiles.js.ep:142
|
||||
msgid "Copy to clipboard"
|
||||
msgstr "Copiar dins lo quichapapièrs"
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:52
|
||||
#: themes/default/templates/myfiles.html.ep:123
|
||||
msgid "Counter"
|
||||
msgstr "Comptador"
|
||||
|
||||
@@ -90,47 +109,56 @@ msgstr "Grafic de despartiment dels delais pels imatges desactivats"
|
||||
msgid "Delay repartition chart for enabled images"
|
||||
msgstr "Grafic de despartiment dels delais pels imatges activats"
|
||||
|
||||
#: themes/default/templates/index.html.ep:115 themes/default/templates/index.html.ep:147 themes/default/templates/index.html.ep:178 themes/default/templates/myfiles.html.ep:53 themes/default/templates/partial/lutim.js.ep:159
|
||||
#: themes/default/templates/index.html.ep:133 themes/default/templates/index.html.ep:165 themes/default/templates/index.html.ep:196 themes/default/templates/myfiles.html.ep:124 themes/default/templates/myfiles.html.ep:45 themes/default/templates/partial/lutim.js.ep:161
|
||||
msgid "Delete at first view?"
|
||||
msgstr "Suprimir al primièr accès ?"
|
||||
|
||||
#: lib/Lutim/Command/cron/stats.pm:145 themes/default/templates/raw.html.ep:4
|
||||
#: lib/Lutim/Command/cron/stats.pm:155 themes/default/templates/raw.html.ep:4
|
||||
msgid "Deleted images"
|
||||
msgstr "Imatges suprimits"
|
||||
|
||||
#: lib/Lutim/Command/cron/stats.pm:146 themes/default/templates/raw.html.ep:5
|
||||
#: lib/Lutim/Command/cron/stats.pm:156 themes/default/templates/raw.html.ep:5
|
||||
msgid "Deleted images in 30 days"
|
||||
msgstr "Imatges per èsser suprimits dins 30 jorns"
|
||||
|
||||
#: themes/default/templates/index.html.ep:98 themes/default/templates/myfiles.html.ep:56 themes/default/templates/partial/common.js.ep:142 themes/default/templates/partial/common.js.ep:145
|
||||
#: themes/default/templates/index.html.ep:116 themes/default/templates/myfiles.html.ep:127 themes/default/templates/partial/common.js.ep:178 themes/default/templates/partial/common.js.ep:181
|
||||
msgid "Deletion link"
|
||||
msgstr "Ligam de supression"
|
||||
|
||||
#: themes/default/templates/gallery.html.ep:6
|
||||
#: themes/default/templates/gallery.html.ep:10
|
||||
msgid "Download all images"
|
||||
msgstr "Telecargar totes los imatges"
|
||||
|
||||
#: themes/default/templates/index.html.ep:81 themes/default/templates/index.html.ep:83 themes/default/templates/partial/lutim.js.ep:101 themes/default/templates/partial/lutim.js.ep:97
|
||||
#: themes/default/templates/index.html.ep:101 themes/default/templates/index.html.ep:99 themes/default/templates/partial/lutim.js.ep:102 themes/default/templates/partial/lutim.js.ep:98
|
||||
msgid "Download link"
|
||||
msgstr "Ligam de telecargament"
|
||||
|
||||
#: themes/default/templates/index.html.ep:28 themes/default/templates/index.html.ep:31 themes/default/templates/myfiles.html.ep:30 themes/default/templates/myfiles.html.ep:33
|
||||
#: themes/default/templates/index.html.ep:28 themes/default/templates/index.html.ep:31 themes/default/templates/myfiles.html.ep:78 themes/default/templates/myfiles.html.ep:81
|
||||
msgid "Download zip link"
|
||||
msgstr "Ligam de telecargament de l'archiu dels imatges"
|
||||
|
||||
#: themes/default/templates/index.html.ep:189
|
||||
#: themes/default/templates/index.html.ep:207
|
||||
msgid "Drag & drop images here"
|
||||
msgstr "Lisatz e depausatz vòstres imatges aquí"
|
||||
|
||||
#: themes/default/templates/about.html.ep:7
|
||||
msgid "Drag and drop an image in the appropriate area or use the traditional way to send files and Lutim will provide you four URLs. One to view the image, an other to directly download it, one you can use on social networks and a last to delete the image when you want."
|
||||
msgstr "Depausatz vòstres imatges dins la zòna prevista per aquò o seleccionatz un fichièr d'un biais classic e Lutim vos donarà quatre URLs en torna. Una per afichar l'imatge, una mai per lo telecargar dirèctament, una per l'utilizar suls malhums socials e una darrièra per suprimir vòstre imatge quand volguèssetz."
|
||||
msgid ""
|
||||
"Drag and drop an image in the appropriate area or use the traditional way to "
|
||||
"send files and Lutim will provide you four URLs. One to view the image, an "
|
||||
"other to directly download it, one you can use on social networks and a last "
|
||||
"to delete the image when you want."
|
||||
msgstr ""
|
||||
"Depausatz vòstres imatges dins la zòna prevista per aquò o seleccionatz un "
|
||||
"fichièr d'un biais classic e Lutim vos donarà quatre URLs en torna. Una per "
|
||||
"afichar l'imatge, una mai per lo telecargar dirèctament, una per l'utilizar "
|
||||
"suls malhums socials e una darrièra per suprimir vòstre imatge quand "
|
||||
"volguèssetz."
|
||||
|
||||
#: themes/default/templates/index.html.ep:150 themes/default/templates/index.html.ep:181
|
||||
#: themes/default/templates/index.html.ep:168 themes/default/templates/index.html.ep:199
|
||||
msgid "Encrypt the image (Lutim does not keep the key)."
|
||||
msgstr "Chifrar l'imatge (Lutim garda pas la clau)."
|
||||
|
||||
#: themes/default/templates/partial/lutim.js.ep:44
|
||||
#: themes/default/templates/partial/lutim.js.ep:45 themes/default/templates/partial/myfiles.js.ep:113
|
||||
msgid "Error while trying to modify the image."
|
||||
msgstr "Una error es apareguda al moment de modificar l'imatge."
|
||||
|
||||
@@ -138,31 +166,39 @@ msgstr "Una error es apareguda al moment de modificar l'imatge."
|
||||
msgid "Evolution of total files"
|
||||
msgstr "Evolucion del nombre total de fichièrs"
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:55
|
||||
#: themes/default/templates/myfiles.html.ep:126
|
||||
msgid "Expires at"
|
||||
msgstr "S'acaba lo"
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:50
|
||||
#: themes/default/templates/myfiles.html.ep:112
|
||||
msgid "Export localStorage data"
|
||||
msgstr "Exportar las donadas localStorage"
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:121
|
||||
msgid "File name"
|
||||
msgstr "Nom del fichièr"
|
||||
|
||||
#: themes/default/templates/about.html.ep:24
|
||||
msgid "For more details, see the <a href=\"https://framagit.org/luc/lutim\">homepage of the project</a>."
|
||||
msgstr "Per mai de detalhs, consultatz la pagina <a href=\"https://framagit.org/luc/lutim\">Github</a> del projècte."
|
||||
msgid ""
|
||||
"For more details, see the <a href=\"https://framagit.org/luc/"
|
||||
"lutim\">homepage of the project</a>."
|
||||
msgstr ""
|
||||
"Per mai de detalhs, consultatz la <a href=\"https://framagit.org/luc/"
|
||||
"lutim\">pagina</a> del projècte."
|
||||
|
||||
#: themes/default/templates/layouts/default.html.ep:55
|
||||
#: themes/default/templates/partial/navbar.html.ep:80
|
||||
msgid "Fork me!"
|
||||
msgstr "Tustatz-me !"
|
||||
|
||||
#: themes/default/templates/index.html.ep:10 themes/default/templates/index.html.ep:13 themes/default/templates/myfiles.html.ep:12 themes/default/templates/myfiles.html.ep:15
|
||||
#: themes/default/templates/index.html.ep:10 themes/default/templates/index.html.ep:13 themes/default/templates/myfiles.html.ep:60 themes/default/templates/myfiles.html.ep:63
|
||||
msgid "Gallery link"
|
||||
msgstr "Ligam cap a la galariá"
|
||||
msgstr "Ligam cap a la galariá"
|
||||
|
||||
#: themes/default/templates/partial/common.js.ep:104 themes/default/templates/partial/common.js.ep:87
|
||||
#: themes/default/templates/partial/common.js.ep:116 themes/default/templates/partial/common.js.ep:134
|
||||
msgid "Hit Ctrl+C, then Enter to copy the short link"
|
||||
msgstr "Fasètz Ctrl+C puèi picatz Entrada per copiar lo ligam"
|
||||
|
||||
#: themes/default/templates/layouts/default.html.ep:50
|
||||
#: themes/default/templates/layouts/default.html.ep:47
|
||||
msgid "Homepage"
|
||||
msgstr "Acuèlh"
|
||||
|
||||
@@ -172,37 +208,49 @@ msgstr "Cossí cal prononciar Lutim ?"
|
||||
|
||||
#: themes/default/templates/about.html.ep:6
|
||||
msgid "How does it work?"
|
||||
msgstr "Cossí aquò marcha ?"
|
||||
msgstr "Cossí aquò fonciona ?"
|
||||
|
||||
#: themes/default/templates/about.html.ep:18
|
||||
msgid "How to report an image?"
|
||||
msgstr "Qué far per senhalar un imatge ?"
|
||||
|
||||
#: themes/default/templates/about.html.ep:14
|
||||
msgid "If the files are deleted if you ask it while posting it, their SHA512 footprint are retained."
|
||||
msgstr "Se los fichièrs son ben estats suprimits se o avètz demandat, lors signaturas SHA512 son gardadas."
|
||||
msgid ""
|
||||
"If the files are deleted if you ask it while posting it, their SHA512 "
|
||||
"footprint are retained."
|
||||
msgstr ""
|
||||
"Se los fichièrs son ben estats suprimits se o avètz demandat, lors "
|
||||
"signaturas SHA512 son gardadas."
|
||||
|
||||
#: themes/default/templates/index.html.ep:163 themes/default/templates/index.html.ep:203
|
||||
#: themes/default/templates/index.html.ep:181 themes/default/templates/index.html.ep:221
|
||||
msgid "Image URL"
|
||||
msgstr "URL de l'imatge"
|
||||
|
||||
#: lib/Lutim/Command/cron/stats.pm:143 themes/default/templates/raw.html.ep:2
|
||||
#: lib/Lutim/Command/cron/stats.pm:153 themes/default/templates/raw.html.ep:2
|
||||
msgid "Image delay"
|
||||
msgstr "Delai de l'imatge"
|
||||
|
||||
#: lib/Lutim/Controller.pm:710
|
||||
#: themes/default/templates/partial/common.js.ep:157
|
||||
msgid "Image deleted"
|
||||
msgstr "Imatge suprimit"
|
||||
|
||||
#: lib/Lutim/Controller/Image.pm:756
|
||||
msgid "Image not found."
|
||||
msgstr "Imatge pas trobat."
|
||||
|
||||
#: themes/default/templates/layouts/default.html.ep:54
|
||||
#: themes/default/templates/myfiles.html.ep:113
|
||||
msgid "Import localStorage data"
|
||||
msgstr "Importar las donadas localStorage"
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:69
|
||||
msgid "Informations"
|
||||
msgstr "Informacions"
|
||||
|
||||
#: themes/default/templates/layouts/default.html.ep:62
|
||||
#: themes/default/templates/partial/navbar.html.ep:25
|
||||
msgid "Install webapp"
|
||||
msgstr "Installar la webapp"
|
||||
|
||||
#: themes/default/templates/layouts/default.html.ep:61
|
||||
#: themes/default/templates/partial/navbar.html.ep:21
|
||||
msgid "Instance's statistics"
|
||||
msgstr "Estatisticas de l'instància"
|
||||
|
||||
@@ -215,136 +263,224 @@ msgid "Is it really free (as in free beer)?"
|
||||
msgstr "Es vertadièrament gratuit ?"
|
||||
|
||||
#: themes/default/templates/about.html.ep:21
|
||||
msgid "Juste like you pronounce the French word <a href=\"https://fr.wikipedia.org/wiki/Lutin\">lutin</a> (/ly.tɛ̃/)."
|
||||
msgstr "Òm pronóncia coma en occitan lengadocian, LU-TI-N, amb una M finala que sona N, o coma la paraula francesa lutin (/ly.tɛ̃/)."
|
||||
msgid ""
|
||||
"Juste like you pronounce the French word <a href=\"https://fr.wikipedia.org/"
|
||||
"wiki/Lutin\">lutin</a> (/ly.tɛ̃/)."
|
||||
msgstr ""
|
||||
"Òm pronóncia coma en occitan lengadocian, LU-TI-N, amb una M finala que sona "
|
||||
"N, o coma la paraula francesa <a href=\"https://fr.wikipedia.org/wiki/"
|
||||
"Lutin\">lutin</a> (/ly.tɛ̃/)."
|
||||
|
||||
#: themes/default/templates/index.html.ep:153 themes/default/templates/index.html.ep:184
|
||||
#: themes/default/templates/index.html.ep:171 themes/default/templates/index.html.ep:202
|
||||
msgid "Keep EXIF tags"
|
||||
msgstr "Conservar las donadas EXIF"
|
||||
|
||||
#: themes/default/templates/index.html.ep:118 themes/default/templates/index.html.ep:166 themes/default/templates/index.html.ep:206 themes/default/templates/partial/lutim.js.ep:163
|
||||
#: themes/default/templates/partial/navbar.html.ep:43
|
||||
msgid "Language"
|
||||
msgstr "Lenga"
|
||||
|
||||
#: themes/default/templates/index.html.ep:136 themes/default/templates/index.html.ep:184 themes/default/templates/index.html.ep:224 themes/default/templates/partial/lutim.js.ep:165
|
||||
msgid "Let's go!"
|
||||
msgstr "Zo !"
|
||||
|
||||
#: themes/default/templates/layouts/default.html.ep:58
|
||||
msgid "Liberapay button"
|
||||
msgstr "Boton Liberapay"
|
||||
|
||||
#: themes/default/templates/layouts/default.html.ep:53
|
||||
#: themes/default/templates/partial/navbar.html.ep:74
|
||||
msgid "License:"
|
||||
msgstr "Licéncia :"
|
||||
|
||||
#: themes/default/templates/index.html.ep:89 themes/default/templates/index.html.ep:91 themes/default/templates/partial/lutim.js.ep:111 themes/default/templates/partial/lutim.js.ep:115
|
||||
#: themes/default/templates/index.html.ep:107 themes/default/templates/index.html.ep:109 themes/default/templates/partial/lutim.js.ep:112 themes/default/templates/partial/lutim.js.ep:116
|
||||
msgid "Link for share on social networks"
|
||||
msgstr "Ligam per partejar suls malhums socials"
|
||||
|
||||
#: themes/default/templates/login.html.ep:8
|
||||
msgid "Login"
|
||||
msgstr "Connexion"
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:33
|
||||
msgid "Logout"
|
||||
msgstr "Desconnexion"
|
||||
|
||||
#: themes/default/templates/zip.html.ep:7
|
||||
msgid "Lutim can't zip so many images at once, so it splitted your demand in multiple URLs."
|
||||
msgstr "Lutim pòt pas comprimir tan d'imatge d'un còp, a doncas trocejat vòstra demanda en multiplas URLs"
|
||||
msgid ""
|
||||
"Lutim can't zip so many images at once, so it splitted your demand in "
|
||||
"multiple URLs."
|
||||
msgstr ""
|
||||
"Lutim pòt pas comprimir tan d'imatge d'un còp, a doncas trocejat vòstra "
|
||||
"demanda en multiplas URLs."
|
||||
|
||||
#: themes/default/templates/about.html.ep:4
|
||||
msgid "Lutim is a free (as in free beer) and anonymous image hosting service. It's also the name of the free (as in free speech) software which provides this service."
|
||||
msgstr "Lutim es un servici gratuit e anonim d’albergament d’imatges. S’agís tanben del nom del logicial (liure) que fornís aqueste servici."
|
||||
msgid ""
|
||||
"Lutim is a free (as in free beer) and anonymous image hosting service. It's "
|
||||
"also the name of the free (as in free speech) software which provides this "
|
||||
"service."
|
||||
msgstr ""
|
||||
"Lutim es un servici gratuit e anonim d’albergament d’imatges. S’agís tanben "
|
||||
"del nom del logicial (liure) que fornís aqueste servici."
|
||||
|
||||
#: themes/default/templates/about.html.ep:25
|
||||
msgid "Main developers"
|
||||
msgstr "Desvolopaires de l'aplicacion"
|
||||
|
||||
#: themes/default/templates/index.html.ep:73 themes/default/templates/index.html.ep:75 themes/default/templates/partial/lutim.js.ep:85 themes/default/templates/partial/lutim.js.ep:88
|
||||
#: themes/default/templates/index.html.ep:91 themes/default/templates/index.html.ep:93 themes/default/templates/partial/lutim.js.ep:86 themes/default/templates/partial/lutim.js.ep:89
|
||||
msgid "Markdown syntax"
|
||||
msgstr "Sintaxi Markdown"
|
||||
|
||||
#: themes/default/templates/layouts/default.html.ep:60 themes/default/templates/myfiles.html.ep:2
|
||||
#: themes/default/templates/partial/myfiles.js.ep:149
|
||||
msgid "Modify expiration delay"
|
||||
msgstr "Modificar lo delai d'expiracion"
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:7 themes/default/templates/partial/navbar.html.ep:18
|
||||
msgid "My images"
|
||||
msgstr "Mos imatges"
|
||||
|
||||
#: themes/default/templates/partial/myfiles.js.ep:19
|
||||
#: themes/default/templates/gallery.html.ep:45
|
||||
msgid "Next (arrow right)"
|
||||
msgstr "Seguent (sageta dreita)"
|
||||
|
||||
#: themes/default/templates/partial/myfiles.js.ep:105 themes/default/templates/partial/myfiles.js.ep:132
|
||||
msgid "No limit"
|
||||
msgstr "Pas cap de data d'expiracion"
|
||||
|
||||
#: themes/default/templates/index.html.ep:165 themes/default/templates/index.html.ep:198
|
||||
#: themes/default/templates/index.html.ep:183 themes/default/templates/index.html.ep:216
|
||||
msgid "Only images are allowed"
|
||||
msgstr "Solament son acceptats los imatges"
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:6
|
||||
msgid "Only the images sent with this browser will be listed here. The informations are stored in localStorage: if you delete your localStorage data, you'll loose this informations."
|
||||
msgstr "Solament los imatges mandats amb aqueste navigador seràn listats aquí. Las informacions son gardadas en localStorage : se escafatz vòstras donadas localStorage, perdretz aquelas informacions."
|
||||
#: themes/default/templates/myfiles.html.ep:11
|
||||
msgid ""
|
||||
"Only the images sent with this browser will be listed here. The details are "
|
||||
"stored in localStorage: if you delete your localStorage data, you'll loose "
|
||||
"these details."
|
||||
msgstr ""
|
||||
"Solament los imatges mandats amb aqueste navigador seràn listats aquí. Las "
|
||||
"menudalhas son gardadas en localStorage : se escafatz vòstras donadas "
|
||||
"localStorage, perdretz aquelas menudalhas."
|
||||
|
||||
#: themes/default/templates/about.html.ep:16
|
||||
msgid "Only the uploader! (well, only if he's the only owner of the images' rights before the upload)"
|
||||
msgstr "Solament lo qu'a mandat ! (ben, solament se ten los dreits exclusius dels imatges abans de los mandar)"
|
||||
msgid ""
|
||||
"Only the uploader! (well, only if he's the only owner of the images' rights "
|
||||
"before the upload)"
|
||||
msgstr ""
|
||||
"Solament lo qu'a mandat ! (ben, solament se ten los dreits exclusius dels "
|
||||
"imatges abans de los mandar)"
|
||||
|
||||
#: themes/default/templates/login.html.ep:12
|
||||
msgid "Password"
|
||||
msgstr "Senhal"
|
||||
|
||||
#: themes/default/templates/zip.html.ep:12
|
||||
msgid "Please click on each URL to download the different zip files."
|
||||
msgstr "Mercés de clicar sus cada URL per telecargar los diferents archius ZIP."
|
||||
msgstr ""
|
||||
"Mercés de clicar sus cada URL per telecargar los diferents archius ZIP."
|
||||
|
||||
#. (config('contact')
|
||||
#: themes/default/templates/about.html.ep:19
|
||||
msgid "Please contact the administrator: %1"
|
||||
msgstr "Mercés de contactar l'administrator : %1"
|
||||
|
||||
#: lib/Lutim/Controller/Authent.pm:36
|
||||
msgid "Please, check your credentials: unable to authenticate."
|
||||
msgstr ""
|
||||
"Mercés de verificar vòstres identificants : impossible de vos autentificar."
|
||||
|
||||
#: themes/default/templates/gallery.html.ep:43
|
||||
msgid "Previous (arrow left)"
|
||||
msgstr "Precedent (sageta esquèrra)"
|
||||
|
||||
#: themes/default/templates/index.html.ep:46 themes/default/templates/index.html.ep:49 themes/default/templates/myfiles.html.ep:96 themes/default/templates/myfiles.html.ep:99
|
||||
msgid "Random image link"
|
||||
msgstr "Ligam cap a un imatge aleatòri"
|
||||
|
||||
#: themes/default/templates/stats.html.ep:22
|
||||
msgid "Raw stats"
|
||||
msgstr "Estatisticas brutas"
|
||||
|
||||
#: themes/default/templates/index.html.ep:158
|
||||
#: themes/default/templates/myfiles.html.ep:52
|
||||
msgid "Save changes"
|
||||
msgstr "Enregistrar las causidas"
|
||||
|
||||
#: themes/default/templates/index.html.ep:176
|
||||
msgid "Send an image"
|
||||
msgstr "Mandar un imatge"
|
||||
|
||||
#: themes/default/templates/partial/lutim.js.ep:20
|
||||
msgid "Share it!"
|
||||
msgstr "Partejatz-lo !"
|
||||
#: themes/default/templates/login.html.ep:16 themes/default/templates/logout.html.ep:5 themes/default/templates/partial/navbar.html.ep:37
|
||||
msgid "Signin"
|
||||
msgstr "Connexion"
|
||||
|
||||
#: themes/default/templates/layouts/default.html.ep:56
|
||||
msgid "Share on Twitter"
|
||||
msgstr "Partejar sus Twitter"
|
||||
|
||||
#: themes/default/templates/index.html.ep:133 themes/default/templates/partial/lutim.js.ep:174
|
||||
#: themes/default/templates/index.html.ep:151 themes/default/templates/partial/gallery.js.ep:211 themes/default/templates/partial/lutim.js.ep:176
|
||||
msgid "Something bad happened"
|
||||
msgstr "Un problèma es aparegut"
|
||||
|
||||
#. ($c->config('contact')
|
||||
#: lib/Lutim/Controller.pm:717
|
||||
msgid "Something went wrong when creating the zip file. Try again later or contact the administrator (%1)."
|
||||
msgstr "Quicòm a trucat pendent la creacion de l'archiu. Mercés de tornar ensajar pus tard o de contactar l'administrator (%1)."
|
||||
#: lib/Lutim/Controller/Image.pm:763
|
||||
msgid ""
|
||||
"Something went wrong when creating the zip file. Try again later or contact "
|
||||
"the administrator (%1)."
|
||||
msgstr ""
|
||||
"Quicòm a trucat pendent la creacion de l'archiu. Mercés de tornar ensajar "
|
||||
"pus tard o de contactar l'administrator (%1)."
|
||||
|
||||
#: themes/default/templates/layouts/default.html.ep:58
|
||||
#: themes/default/templates/partial/navbar.html.ep:55
|
||||
msgid "Support the author"
|
||||
msgstr "Sostenir l’autor"
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:63
|
||||
msgid "Support the author on Liberapay"
|
||||
msgstr "Sostenir l'autor sus Liberapay"
|
||||
|
||||
#: themes/default/templates/layouts/default.html.ep:57
|
||||
#: themes/default/templates/partial/navbar.html.ep:60
|
||||
msgid "Support the author on Tipeee"
|
||||
msgstr "Sostenir l'autor sus Tipeee"
|
||||
|
||||
#: themes/default/templates/about.html.ep:13
|
||||
msgid "The IP address of the image's sender is retained for a delay which depends of the administrator's choice (for the official instance, which is located in France, it's one year)."
|
||||
msgstr "L’IP de la persona que mandèt l'imatge es gardada pendent un delai que depend de l'administrator de l'instància (per l'instància oficiala que lo servidor es en França, es un delai d'un an)."
|
||||
msgid ""
|
||||
"The IP address of the image's sender is retained for a delay which depends "
|
||||
"of the administrator's choice (for the official instance, which is located "
|
||||
"in France, it's one year)."
|
||||
msgstr ""
|
||||
"L’IP de la persona que mandèt l'imatge es gardada pendent un delai que "
|
||||
"depend de l'administrator de l'instància (per l'instància oficiala que lo "
|
||||
"servidor es en França, es un delai d'un an)."
|
||||
|
||||
#: themes/default/templates/about.html.ep:23
|
||||
msgid "The Lutim software is a <a href=\"http://en.wikipedia.org/wiki/Free_software\">free software</a>, which allows you to download and install it on you own server. Have a look at the <a href=\"https://www.gnu.org/licenses/agpl-3.0.html\">AGPL</a> to see what you can do."
|
||||
msgstr "Lo logicial Lutim es un <a href=\"https://oc.wikipedia.org/wiki/Logicial_liure\">logicial liure</a>, que permet de lo telecargar e de l’installar sus vòstre pròpri servidor. Gaitatz l’<a href=\"https://www.gnu.org/licenses/agpl-3.0.html\">AGPL</a> per veire que son vòstres dreits"
|
||||
msgid ""
|
||||
"The Lutim software is a <a href=\"http://en.wikipedia.org/wiki/"
|
||||
"Free_software\">free software</a>, which allows you to download and install "
|
||||
"it on you own server. Have a look at the <a href=\"https://www.gnu.org/"
|
||||
"licenses/agpl-3.0.html\">AGPL</a> to see what you can do."
|
||||
msgstr ""
|
||||
"Lo logicial Lutim es un <a href=\"https://oc.wikipedia.org/wiki/"
|
||||
"Logicial_liure\">logicial liure</a>, que permet de lo telecargar e de l’"
|
||||
"installar sus vòstre pròpri servidor. Gaitatz l’<a href=\"https://www.gnu."
|
||||
"org/licenses/agpl-3.0.html\">AGPL</a> per veire que son vòstres dreits."
|
||||
|
||||
#: lib/Lutim/Controller.pm:307
|
||||
#: lib/Lutim/Controller/Image.pm:347
|
||||
msgid "The URL is not valid."
|
||||
msgstr "L'URL n'es pas valida."
|
||||
|
||||
#: themes/default/templates/zip.html.ep:16
|
||||
msgid "The automatic download process will open a tab in your browser for each link. You need to allow popups for Lutim."
|
||||
msgstr "Lo processús automatic de telecargament obrirà un onglet dins lo navigato per cada ligam. Vos cal autorizar las popups per Lutim."
|
||||
msgid ""
|
||||
"The automatic download process will open a tab in your browser for each link."
|
||||
" You need to allow popups for Lutim."
|
||||
msgstr ""
|
||||
"Lo processús automatic de telecargament obrirà un onglet dins lo navigato "
|
||||
"per cada ligam. Vos cal autorizar las popups per Lutim."
|
||||
|
||||
#: lib/Lutim/Controller.pm:120 lib/Lutim/Controller.pm:188
|
||||
#: themes/default/templates/partial/myfiles.js.ep:32
|
||||
msgid "The data has been successfully imported."
|
||||
msgstr "Las donadas son ben estadas importadas."
|
||||
|
||||
#: lib/Lutim/Controller/Image.pm:160 lib/Lutim/Controller/Image.pm:228
|
||||
msgid "The delete token is invalid."
|
||||
msgstr "Lo geton de supression es invalida."
|
||||
msgstr "Lo geton de supression es invalid."
|
||||
|
||||
#. ($upload->filename)
|
||||
#: lib/Lutim/Controller.pm:445
|
||||
#: lib/Lutim/Controller/Image.pm:488
|
||||
msgid "The file %1 is not an image."
|
||||
msgstr "Lo fichièr %1 es pas un imatge."
|
||||
|
||||
#. ($tx->res->max_message_size)
|
||||
#. ($c->req->max_message_size)
|
||||
#. (config('max_file_size')
|
||||
#: lib/Lutim/Controller.pm:271 lib/Lutim/Controller.pm:340 themes/default/templates/partial/lutim.js.ep:240
|
||||
#: lib/Lutim/Controller/Image.pm:311 lib/Lutim/Controller/Image.pm:380 themes/default/templates/partial/lutim.js.ep:249
|
||||
msgid "The file exceed the size limit (%1)"
|
||||
msgstr "Lo fichièr depassa lo limit de talha (%1)"
|
||||
|
||||
@@ -353,66 +489,88 @@ msgid "The graph's datas are not updated in real-time."
|
||||
msgstr "Las donadas del grafic son pas mesas a jorn en temps real."
|
||||
|
||||
#. ($image->filename)
|
||||
#: lib/Lutim/Controller.pm:190
|
||||
#: lib/Lutim/Controller/Image.pm:230
|
||||
msgid "The image %1 has already been deleted."
|
||||
msgstr "L'imatge %1 es ja estat suprimit."
|
||||
|
||||
#. ($image->filename)
|
||||
#: lib/Lutim/Controller.pm:199 lib/Lutim/Controller.pm:204
|
||||
#: lib/Lutim/Controller/Image.pm:239 lib/Lutim/Controller/Image.pm:244
|
||||
msgid "The image %1 has been successfully deleted"
|
||||
msgstr "L'imatge %1 es estat suprimit amb succès."
|
||||
msgstr "L'imatge %1 es estat suprimit amb succès"
|
||||
|
||||
#: lib/Lutim/Controller.pm:128
|
||||
msgid "The image's delay has been successfully modified"
|
||||
msgstr "Lo delai de l'imatge es plan estat modificat."
|
||||
|
||||
#: themes/default/templates/index.html.ep:45
|
||||
#: themes/default/templates/index.html.ep:63
|
||||
msgid "The images are encrypted on the server (Lutim does not keep the key)."
|
||||
msgstr "Los imatges son chifrats sul servidor (Lutim garda pas la clau)."
|
||||
|
||||
#: themes/default/templates/about.html.ep:5
|
||||
msgid "The images you post on Lutim can be stored indefinitely or be deleted at first view or after a delay selected from those proposed."
|
||||
msgstr "Los imatges depausats sus Lutim pòdon èsser gardats sens fin, o s’escafar tre lo primièr afichatge o al cap d'un delai causit entre los prepausats."
|
||||
msgid ""
|
||||
"The images you post on Lutim can be stored indefinitely or be deleted at "
|
||||
"first view or after a delay selected from those proposed."
|
||||
msgstr ""
|
||||
"Los imatges depausats sus Lutim pòdon èsser gardats sens fin, o s’escafar "
|
||||
"tre lo primièr afichatge o al cap d'un delai causit entre los prepausats."
|
||||
|
||||
#: lib/Lutim/Controller/Image.pm:168
|
||||
msgid "The image’s delay has been successfully modified"
|
||||
msgstr "Lo delai de l'imatge es plan estat modificat"
|
||||
|
||||
#: themes/default/templates/partial/gallery.js.ep:277
|
||||
msgid "There is XXXX image(s) in the gallery"
|
||||
msgstr "I a XXXX imatge(s) dins la galariá"
|
||||
|
||||
#. ($c->config->{contact})
|
||||
#: lib/Lutim/Controller.pm:442
|
||||
#: lib/Lutim/Controller/Image.pm:485
|
||||
msgid "There is no more available URL. Retry or contact the administrator. %1"
|
||||
msgstr "I a pas mai d'URL disponibla. Mercés de tornar ensajar o de contactar l'administrator. %1."
|
||||
msgstr ""
|
||||
"I a pas mai d'URL disponiblas. Mercés de tornar ensajar o de contactar "
|
||||
"l'administrator. %1"
|
||||
|
||||
#: themes/default/templates/layouts/default.html.ep:57
|
||||
msgid "Tipeee button"
|
||||
msgstr "Boton Tipeee"
|
||||
#: themes/default/templates/gallery.html.ep:30
|
||||
msgid "Toggle fullscreen"
|
||||
msgstr "Passar al plen ecran"
|
||||
|
||||
#: lib/Lutim/Command/cron/stats.pm:152 themes/default/templates/raw.html.ep:11
|
||||
#: themes/default/templates/partial/navbar.html.ep:8
|
||||
msgid "Toggle navigation"
|
||||
msgstr "Passar en navigacion"
|
||||
|
||||
#: lib/Lutim/Command/cron/stats.pm:162 themes/default/templates/raw.html.ep:11
|
||||
msgid "Total"
|
||||
msgstr "Total"
|
||||
|
||||
#: themes/default/templates/index.html.ep:60 themes/default/templates/partial/lutim.js.ep:14
|
||||
#: themes/default/templates/index.html.ep:78 themes/default/templates/partial/lutim.js.ep:17
|
||||
msgid "Tweet it!"
|
||||
msgstr "Tweetejatz-lo !"
|
||||
|
||||
#: themes/default/templates/partial/common.js.ep:110 themes/default/templates/partial/common.js.ep:90
|
||||
msgid "Unable to copy to clipboard"
|
||||
msgstr "Fracàs de la còpia al quichapapièrs"
|
||||
|
||||
#. ($short)
|
||||
#: lib/Lutim/Controller.pm:162 lib/Lutim/Controller.pm:233
|
||||
#: lib/Lutim/Controller/Image.pm:108 lib/Lutim/Controller/Image.pm:202 lib/Lutim/Controller/Image.pm:273
|
||||
msgid "Unable to find the image %1."
|
||||
msgstr "Impossible de trobar l'imatge %1."
|
||||
|
||||
#: lib/Lutim/Controller.pm:529 lib/Lutim/Controller.pm:574 lib/Lutim/Controller.pm:616 lib/Lutim/Controller.pm:659 lib/Lutim/Controller.pm:671 lib/Lutim/Controller.pm:682 lib/Lutim/Controller.pm:707 lib/Lutim/Plugin/Helpers.pm:57
|
||||
#: lib/Lutim/Controller/Image.pm:574 lib/Lutim/Controller/Image.pm:619 lib/Lutim/Controller/Image.pm:660 lib/Lutim/Controller/Image.pm:703 lib/Lutim/Controller/Image.pm:715 lib/Lutim/Controller/Image.pm:726 lib/Lutim/Controller/Image.pm:753 lib/Lutim/Plugin/Helpers.pm:88
|
||||
msgid "Unable to find the image: it has been deleted."
|
||||
msgstr "Impossible de trobar l'imatge : es estat suprimit."
|
||||
|
||||
#: lib/Lutim/Controller.pm:105
|
||||
#: lib/Lutim/Controller/Image.pm:145
|
||||
msgid "Unable to get counter"
|
||||
msgstr "Impossible de recuperar lo comptador"
|
||||
|
||||
#: themes/default/templates/about.html.ep:17
|
||||
msgid "Unlike many image sharing services, you don't give us rights on uploaded images."
|
||||
msgstr "A l'invèrse de la màger part dels servicis de partiment d'imatge, daissatz pas cap de dreit suls imatges que mandatz."
|
||||
msgid ""
|
||||
"Unlike many image sharing services, you don't give us rights on uploaded "
|
||||
"images."
|
||||
msgstr ""
|
||||
"A l'invèrse de la màger part dels servicis de partiment d'imatge, daissatz "
|
||||
"pas cap de dreit suls imatges que mandatz."
|
||||
|
||||
#: themes/default/templates/index.html.ep:162 themes/default/templates/index.html.ep:201
|
||||
#: themes/default/templates/index.html.ep:180 themes/default/templates/index.html.ep:219
|
||||
msgid "Upload an image with its URL"
|
||||
msgstr "Depausar un imatge per son URL"
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:54
|
||||
#: themes/default/templates/myfiles.html.ep:125
|
||||
msgid "Uploaded at"
|
||||
msgstr "Mandat lo"
|
||||
|
||||
@@ -421,11 +579,15 @@ msgid "Uploaded files by days"
|
||||
msgstr "Fichièrs mandats per jorn"
|
||||
|
||||
#. ($c->app->config('contact')
|
||||
#: lib/Lutim/Plugin/Helpers.pm:152
|
||||
msgid "Uploading is currently disabled, please try later or contact the administrator (%1)."
|
||||
msgstr "La mesa en linha es desactivada pel moment, mercés de tornar ensajar mai tard o de contactar l'administrator (%1)."
|
||||
#: lib/Lutim/Plugin/Helpers.pm:221
|
||||
msgid ""
|
||||
"Uploading is currently disabled, please try later or contact the "
|
||||
"administrator (%1)."
|
||||
msgstr ""
|
||||
"La mesa en linha es desactivada pel moment, mercés de tornar ensajar mai "
|
||||
"tard o de contactar l'administrator (%1)."
|
||||
|
||||
#: themes/default/templates/index.html.ep:65 themes/default/templates/index.html.ep:67 themes/default/templates/myfiles.html.ep:51 themes/default/templates/partial/lutim.js.ep:71 themes/default/templates/partial/lutim.js.ep:75
|
||||
#: themes/default/templates/index.html.ep:83 themes/default/templates/index.html.ep:85 themes/default/templates/myfiles.html.ep:122 themes/default/templates/partial/lutim.js.ep:72 themes/default/templates/partial/lutim.js.ep:76
|
||||
msgid "View link"
|
||||
msgstr "Ligam d'afichatge"
|
||||
|
||||
@@ -442,30 +604,64 @@ msgid "Who owns rights on images uploaded on Lutim?"
|
||||
msgstr "Qual a los dreits suls imatges mandats sus Lutim ?"
|
||||
|
||||
#: themes/default/templates/about.html.ep:12
|
||||
msgid "Yes, it is! On the other side, for legal reasons, your IP address will be stored when you send an image. Don't panic, it is normally the case of all sites on which you send files!"
|
||||
msgstr "Òc, es aquò ! Al contrari, per de rasons legalas, vòstra adreça IP serà enregistrada quand mandaretz un imatge. Perdetz pas lo cap, normalament es çò normal pels demai dels sites suls quals mandatz de fichièrs !"
|
||||
msgid ""
|
||||
"Yes, it is! On the other side, for legal reasons, your IP address will be "
|
||||
"stored when you send an image. Don't panic, it is normally the case of all "
|
||||
"sites on which you send files!"
|
||||
msgstr ""
|
||||
"Òc, es aquò ! Al contrari, per de rasons legalas, vòstra adreça IP serà "
|
||||
"enregistrada quand mandaretz un imatge. Perdetz pas lo cap, normalament es "
|
||||
"çò normal pels demai dels sites suls quals mandatz de fichièrs !"
|
||||
|
||||
#: themes/default/templates/about.html.ep:10
|
||||
msgid "Yes, it is! On the other side, if you want to support the developer, you can do it via <a href=\"https://www.tipeee.com/fiat-tux\">Tipeee</a> or via <a href=\"https://liberapay.com/sky/\">Liberapay</a>."
|
||||
msgstr "Òc, o es ! Al contrari, s'avètz enveja de sosténer lo desvolopaire, podètz far un microdon amb <a href=\"https://www.tipeee.com/fiat-tux\">Tipeee</a> o via <a href=\"https://liberapay.com/sky/\">Liberapay</a>."
|
||||
msgid ""
|
||||
"Yes, it is! On the other side, if you want to support the developer, you can "
|
||||
"do it via <a href=\"https://www.tipeee.com/fiat-tux\">Tipeee</a> or via <a "
|
||||
"href=\"https://liberapay.com/sky/\">Liberapay</a>."
|
||||
msgstr ""
|
||||
"Òc, o es ! Al contrari, s'avètz enveja de sosténer lo desvolopaire, podètz "
|
||||
"far un microdon amb <a href=\"https://www.tipeee.com/fiat-tux\">Tipeee</a> o "
|
||||
"via <a href=\"https://liberapay.com/sky/\">Liberapay</a>."
|
||||
|
||||
#: themes/default/templates/zip.html.ep:6
|
||||
msgid "You asked to download a zip archive for too much files."
|
||||
msgstr "Avètz demandat de telecargar tròp d'imatges d'un còp dins un archiu ZIP."
|
||||
msgstr ""
|
||||
"Avètz demandat de telecargar tròp d'imatges d'un còp dins un archiu ZIP."
|
||||
|
||||
#: themes/default/templates/about.html.ep:8
|
||||
msgid "You can, optionally, request that the image(s) posted on Lutim to be deleted at first view (or download) or after the delay selected from those proposed."
|
||||
msgstr "Podètz, d'un biais facultatiu, demandar que l'imatge o los imatges depausats sus Lutim sián suprimits aprèp lor primièr afichatge (o telecargament) o al cap d'un delai causit entre las prepausadas."
|
||||
msgid ""
|
||||
"You can, optionally, request that the image(s) posted on Lutim to be deleted "
|
||||
"at first view (or download) or after the delay selected from those proposed."
|
||||
msgstr ""
|
||||
"Podètz, d'un biais facultatiu, demandar que l'imatge o los imatges depausats "
|
||||
"sus Lutim sián suprimits aprèp lor primièr afichatge (o telecargament) o al "
|
||||
"cap d'un delai causit entre las prepausadas."
|
||||
|
||||
#: lib/Lutim/Controller/Authent.pm:27
|
||||
msgid "You have been successfully logged in."
|
||||
msgstr "Sètz ben estat·ada connectat·ada."
|
||||
|
||||
#: lib/Lutim/Controller/Authent.pm:66 themes/default/templates/logout.html.ep:3
|
||||
msgid "You have been successfully logged out."
|
||||
msgstr "Sètz ben estat desconnectat."
|
||||
|
||||
#: themes/default/templates/gallery.html.ep:31
|
||||
msgid "Zoom in/out"
|
||||
msgstr "Agrandir/Reduire"
|
||||
|
||||
#: themes/default/templates/about.html.ep:27
|
||||
msgid "and on"
|
||||
msgstr "e sus"
|
||||
|
||||
#: themes/default/templates/about.html.ep:40
|
||||
msgid "arabic translation"
|
||||
msgstr "traduccion en arabi"
|
||||
|
||||
#: themes/default/templates/about.html.ep:27
|
||||
msgid "core developer"
|
||||
msgstr "desvolopaire màger"
|
||||
|
||||
#: lib/Lutim.pm:190 lib/Lutim/Command/cron/stats.pm:147 lib/Lutim/Command/cron/stats.pm:158 lib/Lutim/Command/cron/stats.pm:175 themes/default/templates/index.html.ep:3 themes/default/templates/raw.html.ep:17 themes/default/templates/raw.html.ep:34 themes/default/templates/raw.html.ep:6
|
||||
#: lib/Lutim.pm:348 lib/Lutim/Command/cron/stats.pm:157 lib/Lutim/Command/cron/stats.pm:171 lib/Lutim/Command/cron/stats.pm:188 themes/default/templates/index.html.ep:3 themes/default/templates/myfiles.html.ep:3 themes/default/templates/partial/raw.js.ep:21 themes/default/templates/partial/raw.js.ep:4 themes/default/templates/raw.html.ep:6
|
||||
msgid "no time limit"
|
||||
msgstr "Pas cap de limitacion de durada"
|
||||
|
||||
@@ -477,6 +673,14 @@ msgstr "traduccion en occitan"
|
||||
msgid "on"
|
||||
msgstr "sus"
|
||||
|
||||
#: themes/default/templates/about.html.ep:39
|
||||
msgid "paste image to upload ability"
|
||||
msgstr "possibilitat de pegar un imatge per lo mandar"
|
||||
|
||||
#: themes/default/templates/about.html.ep:41
|
||||
msgid "russian translation"
|
||||
msgstr "traduccion en rus"
|
||||
|
||||
#: themes/default/templates/about.html.ep:36
|
||||
msgid "spanish translation"
|
||||
msgstr "traduccion en espanhòl"
|
||||
@@ -484,3 +688,21 @@ msgstr "traduccion en espanhòl"
|
||||
#: themes/default/templates/about.html.ep:28
|
||||
msgid "webapp developer"
|
||||
msgstr "desvolopaire de la webapp"
|
||||
|
||||
#: themes/default/templates/about.html.ep:24
|
||||
msgid "For more details, see the <a href=\"https://framagit.org/fiat-tux/hat-softwares/lutim\">homepage of the project</a>."
|
||||
msgstr ""
|
||||
"Per mai de detalhs, consultatz la <a href=\"https://framagit.org/fiat-tux/"
|
||||
"hat-softwares/lutim\">pagina del projècte</a>."
|
||||
|
||||
#: themes/default/templates/index.html.ep:171 themes/default/templates/index.html.ep:215
|
||||
msgid "Tiling watermark"
|
||||
msgstr "Filigrana en teule"
|
||||
|
||||
#: themes/default/templates/index.html.ep:174 themes/default/templates/index.html.ep:218
|
||||
msgid "Single watermark"
|
||||
msgstr "Filigrana simpla"
|
||||
|
||||
#: themes/default/templates/index.html.ep:177 themes/default/templates/index.html.ep:221
|
||||
msgid "No watermark"
|
||||
msgstr "Cap de filigrana"
|
||||
|
||||
702
themes/default/lib/Lutim/I18N/ru.po
Normal file
702
themes/default/lib/Lutim/I18N/ru.po
Normal file
@@ -0,0 +1,702 @@
|
||||
# Luc Didry <luc@framasoft.org>, 2018. #zanata
|
||||
# Luc Didry <luc@framasoft.org>, 2019. #zanata
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"PO-Revision-Date: 2022-12-15 21:38+0000\n"
|
||||
"Last-Translator: Дмитрий Кузнецов <dk65536@gmail.com>\n"
|
||||
"Language-Team: Russian <https://weblate.framasoft.org/projects/lutim/"
|
||||
"default-theme/ru/>\n"
|
||||
"Language: ru\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
|
||||
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
|
||||
"X-Generator: Weblate 4.14.1\n"
|
||||
|
||||
#. (7)
|
||||
#. (30)
|
||||
#. ($delay)
|
||||
#. (config('max_delay')
|
||||
#: lib/Lutim/Command/cron/stats.pm:159 lib/Lutim/Command/cron/stats.pm:160 lib/Lutim/Command/cron/stats.pm:173 lib/Lutim/Command/cron/stats.pm:174 lib/Lutim/Command/cron/stats.pm:190 lib/Lutim/Command/cron/stats.pm:191 themes/default/templates/myfiles.html.ep:24 themes/default/templates/myfiles.html.ep:33 themes/default/templates/myfiles.html.ep:34 themes/default/templates/partial/for_my_delay.html.ep:13 themes/default/templates/partial/for_my_delay.html.ep:14 themes/default/templates/partial/for_my_delay.html.ep:4 themes/default/templates/partial/lutim.js.ep:140 themes/default/templates/partial/lutim.js.ep:149 themes/default/templates/partial/lutim.js.ep:150 themes/default/templates/partial/raw.js.ep:23 themes/default/templates/partial/raw.js.ep:24 themes/default/templates/partial/raw.js.ep:6 themes/default/templates/partial/raw.js.ep:7 themes/default/templates/raw.html.ep:8 themes/default/templates/raw.html.ep:9
|
||||
msgid "%1 days"
|
||||
msgstr "%1 дней"
|
||||
|
||||
#. ($total)
|
||||
#: themes/default/templates/stats.html.ep:2
|
||||
msgid "%1 sent images on this instance from beginning."
|
||||
msgstr "%1 изображений загружено в этот экземпляр с самого начала."
|
||||
|
||||
#: themes/default/templates/index.html.ep:208
|
||||
msgid "-or-"
|
||||
msgstr "-или-"
|
||||
|
||||
#: lib/Lutim.pm:350 lib/Lutim/Command/cron/stats.pm:161 lib/Lutim/Command/cron/stats.pm:175 lib/Lutim/Command/cron/stats.pm:192 themes/default/templates/index.html.ep:5 themes/default/templates/myfiles.html.ep:5 themes/default/templates/partial/raw.js.ep:25 themes/default/templates/partial/raw.js.ep:8 themes/default/templates/raw.html.ep:10
|
||||
msgid "1 year"
|
||||
msgstr "1 год"
|
||||
|
||||
#: lib/Lutim.pm:349 lib/Lutim/Command/cron/stats.pm:158 lib/Lutim/Command/cron/stats.pm:172 lib/Lutim/Command/cron/stats.pm:189 themes/default/templates/index.html.ep:4 themes/default/templates/myfiles.html.ep:33 themes/default/templates/myfiles.html.ep:4 themes/default/templates/partial/for_my_delay.html.ep:13 themes/default/templates/partial/lutim.js.ep:149 themes/default/templates/partial/raw.js.ep:22 themes/default/templates/partial/raw.js.ep:5 themes/default/templates/raw.html.ep:7
|
||||
msgid "24 hours"
|
||||
msgstr "24 часа"
|
||||
|
||||
#: themes/default/templates/partial/myfiles.js.ep:180
|
||||
msgid ": Error while trying to get the counter."
|
||||
msgstr ": Ошибка при подсчете количества ."
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:77
|
||||
msgid "About"
|
||||
msgstr "Подробнее"
|
||||
|
||||
#: lib/Lutim/Command/cron/stats.pm:154 themes/default/templates/raw.html.ep:3
|
||||
msgid "Active images"
|
||||
msgstr "Активные изображения"
|
||||
|
||||
#: lib/Lutim/Controller/Image.pm:328
|
||||
msgid "An error occured while downloading the image."
|
||||
msgstr "Ошибка при загрузке изображения."
|
||||
|
||||
#: themes/default/templates/zip.html.ep:2
|
||||
msgid "Archives download"
|
||||
msgstr "Загрузить архив"
|
||||
|
||||
#: themes/default/templates/about.html.ep:44 themes/default/templates/myfiles.html.ep:135 themes/default/templates/stats.html.ep:25
|
||||
msgid "Back to homepage"
|
||||
msgstr "Вернуться на главную страницу"
|
||||
|
||||
#: themes/default/templates/index.html.ep:211 themes/default/templates/index.html.ep:212
|
||||
msgid "Click to open the file browser"
|
||||
msgstr "Щёлкните для выбора файлов"
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:51
|
||||
msgid "Close"
|
||||
msgstr "Закрыть"
|
||||
|
||||
#: themes/default/templates/gallery.html.ep:29
|
||||
msgid "Close (Esc)"
|
||||
msgstr "Закрыть (Esc)"
|
||||
|
||||
#: themes/default/templates/about.html.ep:30
|
||||
msgid "Contributors"
|
||||
msgstr "Участники"
|
||||
|
||||
#: themes/default/templates/partial/common.js.ep:113 themes/default/templates/partial/common.js.ep:93
|
||||
msgid "Copied to clipboard"
|
||||
msgstr "Скопировано в буфер обмена"
|
||||
|
||||
#: themes/default/templates/partial/lutim.js.ep:215 themes/default/templates/partial/lutim.js.ep:278 themes/default/templates/partial/lutim.js.ep:364
|
||||
msgid "Copy all view links to clipboard"
|
||||
msgstr "Скопировать в буфер все ссылки на просмотр"
|
||||
|
||||
#: themes/default/templates/index.html.ep:103 themes/default/templates/index.html.ep:111 themes/default/templates/index.html.ep:18 themes/default/templates/index.html.ep:36 themes/default/templates/index.html.ep:54 themes/default/templates/index.html.ep:87 themes/default/templates/index.html.ep:95 themes/default/templates/myfiles.html.ep:104 themes/default/templates/myfiles.html.ep:68 themes/default/templates/myfiles.html.ep:86 themes/default/templates/partial/common.js.ep:186 themes/default/templates/partial/lutim.js.ep:106 themes/default/templates/partial/lutim.js.ep:121 themes/default/templates/partial/lutim.js.ep:80 themes/default/templates/partial/lutim.js.ep:92 themes/default/templates/partial/myfiles.js.ep:142
|
||||
msgid "Copy to clipboard"
|
||||
msgstr "Скопировать в буфер"
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:123
|
||||
msgid "Counter"
|
||||
msgstr "Счётчик"
|
||||
|
||||
#: themes/default/templates/stats.html.ep:18
|
||||
msgid "Delay repartition chart for disabled images"
|
||||
msgstr "Распределение сроков хранения недоступных изображений"
|
||||
|
||||
#: themes/default/templates/stats.html.ep:15
|
||||
msgid "Delay repartition chart for enabled images"
|
||||
msgstr "Распределение сроков хранения доступных изображений"
|
||||
|
||||
#: themes/default/templates/index.html.ep:133 themes/default/templates/index.html.ep:165 themes/default/templates/index.html.ep:196 themes/default/templates/myfiles.html.ep:124 themes/default/templates/myfiles.html.ep:45 themes/default/templates/partial/lutim.js.ep:161
|
||||
msgid "Delete at first view?"
|
||||
msgstr "Удалить после первого просмотра?"
|
||||
|
||||
#: lib/Lutim/Command/cron/stats.pm:155 themes/default/templates/raw.html.ep:4
|
||||
msgid "Deleted images"
|
||||
msgstr "Удалённые изображения"
|
||||
|
||||
#: lib/Lutim/Command/cron/stats.pm:156 themes/default/templates/raw.html.ep:5
|
||||
msgid "Deleted images in 30 days"
|
||||
msgstr "Удалить изображения через 30 дней"
|
||||
|
||||
#: themes/default/templates/index.html.ep:116 themes/default/templates/myfiles.html.ep:127 themes/default/templates/partial/common.js.ep:178 themes/default/templates/partial/common.js.ep:181
|
||||
msgid "Deletion link"
|
||||
msgstr "Ссылка на удаление"
|
||||
|
||||
#: themes/default/templates/gallery.html.ep:10
|
||||
msgid "Download all images"
|
||||
msgstr "Скачать все изображения"
|
||||
|
||||
#: themes/default/templates/index.html.ep:101 themes/default/templates/index.html.ep:99 themes/default/templates/partial/lutim.js.ep:102 themes/default/templates/partial/lutim.js.ep:98
|
||||
msgid "Download link"
|
||||
msgstr "Ссылка на скачивание"
|
||||
|
||||
#: themes/default/templates/index.html.ep:28 themes/default/templates/index.html.ep:31 themes/default/templates/myfiles.html.ep:78 themes/default/templates/myfiles.html.ep:81
|
||||
msgid "Download zip link"
|
||||
msgstr "Ссылка на скачивание zip-архивом"
|
||||
|
||||
#: themes/default/templates/index.html.ep:207
|
||||
msgid "Drag & drop images here"
|
||||
msgstr "Перетащите и бросьте изображения сюда"
|
||||
|
||||
#: themes/default/templates/about.html.ep:7
|
||||
msgid ""
|
||||
"Drag and drop an image in the appropriate area or use the traditional way to "
|
||||
"send files and Lutim will provide you four URLs. One to view the image, an "
|
||||
"other to directly download it, one you can use on social networks and a last "
|
||||
"to delete the image when you want."
|
||||
msgstr ""
|
||||
"Перетащите и бросьте изображение либо воспользуйтесь традиционным путём для "
|
||||
"загрузки файлов, и Lutim предоставит вам четыре URL. Один для просмотра "
|
||||
"изображения, другой — для скачивания, следующий вы можете использовать в "
|
||||
"социальных сетях и последний — для удаления изображения, когда заходите."
|
||||
|
||||
#: themes/default/templates/index.html.ep:168 themes/default/templates/index.html.ep:199
|
||||
msgid "Encrypt the image (Lutim does not keep the key)."
|
||||
msgstr "Зашифровать изображение (Lutim не хранит ключ)."
|
||||
|
||||
#: themes/default/templates/partial/lutim.js.ep:45 themes/default/templates/partial/myfiles.js.ep:113
|
||||
msgid "Error while trying to modify the image."
|
||||
msgstr "Ошибка при попытке модифицировать изображение."
|
||||
|
||||
#: themes/default/templates/stats.html.ep:10
|
||||
msgid "Evolution of total files"
|
||||
msgstr "Общее количество файлов"
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:126
|
||||
msgid "Expires at"
|
||||
msgstr "Исчезнет через"
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:112
|
||||
msgid "Export localStorage data"
|
||||
msgstr "Сохранить данные в хранилище"
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:121
|
||||
msgid "File name"
|
||||
msgstr "Имя файла"
|
||||
|
||||
#: themes/default/templates/about.html.ep:24
|
||||
msgid ""
|
||||
"For more details, see the <a href=\"https://framagit.org/luc/"
|
||||
"lutim\">homepage of the project</a>."
|
||||
msgstr ""
|
||||
"Чтоб узнать больше, посетите <a href=\"https://framagit.org/luc/"
|
||||
"lutim\">главную страницу проекта</a>."
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:80
|
||||
msgid "Fork me!"
|
||||
msgstr "Форкни меня!"
|
||||
|
||||
#: themes/default/templates/index.html.ep:10 themes/default/templates/index.html.ep:13 themes/default/templates/myfiles.html.ep:60 themes/default/templates/myfiles.html.ep:63
|
||||
msgid "Gallery link"
|
||||
msgstr "Ссылка на галерею"
|
||||
|
||||
#: themes/default/templates/partial/common.js.ep:116 themes/default/templates/partial/common.js.ep:134
|
||||
msgid "Hit Ctrl+C, then Enter to copy the short link"
|
||||
msgstr "Нажмите Ctrl+C, а затем Enter для копирования короткой ссылки"
|
||||
|
||||
#: themes/default/templates/layouts/default.html.ep:47
|
||||
msgid "Homepage"
|
||||
msgstr "Главная страница"
|
||||
|
||||
#: themes/default/templates/about.html.ep:20
|
||||
msgid "How do you pronounce Lutim?"
|
||||
msgstr "Как произносится Lutim?"
|
||||
|
||||
#: themes/default/templates/about.html.ep:6
|
||||
msgid "How does it work?"
|
||||
msgstr "Как это работает?"
|
||||
|
||||
#: themes/default/templates/about.html.ep:18
|
||||
msgid "How to report an image?"
|
||||
msgstr "Как пожаловаться на изображение?"
|
||||
|
||||
#: themes/default/templates/about.html.ep:14
|
||||
msgid ""
|
||||
"If the files are deleted if you ask it while posting it, their SHA512 "
|
||||
"footprint are retained."
|
||||
msgstr ""
|
||||
"Если файлы были удалены, потому что вы указали это при их загрузке, их "
|
||||
"контрольные суммы SHA512 сохранятся."
|
||||
|
||||
#: themes/default/templates/index.html.ep:181 themes/default/templates/index.html.ep:221
|
||||
msgid "Image URL"
|
||||
msgstr "URL изображения"
|
||||
|
||||
#: lib/Lutim/Command/cron/stats.pm:153 themes/default/templates/raw.html.ep:2
|
||||
msgid "Image delay"
|
||||
msgstr "Срок хранения"
|
||||
|
||||
#: themes/default/templates/partial/common.js.ep:157
|
||||
msgid "Image deleted"
|
||||
msgstr "Изображение удалено"
|
||||
|
||||
#: lib/Lutim/Controller/Image.pm:756
|
||||
msgid "Image not found."
|
||||
msgstr "Изображение не найдено."
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:113
|
||||
msgid "Import localStorage data"
|
||||
msgstr "Загрузить данные с хранилища"
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:69
|
||||
msgid "Informations"
|
||||
msgstr "Информация"
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:25
|
||||
msgid "Install webapp"
|
||||
msgstr "Установить веб-приложение"
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:21
|
||||
msgid "Instance's statistics"
|
||||
msgstr "Статистика экземпляра"
|
||||
|
||||
#: themes/default/templates/about.html.ep:11
|
||||
msgid "Is it really anonymous?"
|
||||
msgstr "Это действительно анонимно?"
|
||||
|
||||
#: themes/default/templates/about.html.ep:9
|
||||
msgid "Is it really free (as in free beer)?"
|
||||
msgstr "Это действительно бесплатно (as in free beer)?"
|
||||
|
||||
#: themes/default/templates/about.html.ep:21
|
||||
msgid ""
|
||||
"Juste like you pronounce the French word <a href=\"https://fr.wikipedia.org/"
|
||||
"wiki/Lutin\">lutin</a> (/ly.tɛ̃/)."
|
||||
msgstr ""
|
||||
"Как французское слово <a href=\"https://fr.wikipedia.org/wiki/Lutin\">lutin</"
|
||||
"a> (/ly.tɛ̃/)."
|
||||
|
||||
#: themes/default/templates/index.html.ep:171 themes/default/templates/index.html.ep:202
|
||||
msgid "Keep EXIF tags"
|
||||
msgstr "Сохранить EXIF-теги"
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:43
|
||||
msgid "Language"
|
||||
msgstr "Язык"
|
||||
|
||||
#: themes/default/templates/index.html.ep:136 themes/default/templates/index.html.ep:184 themes/default/templates/index.html.ep:224 themes/default/templates/partial/lutim.js.ep:165
|
||||
msgid "Let's go!"
|
||||
msgstr "Вперёд!"
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:74
|
||||
msgid "License:"
|
||||
msgstr "Лицензия:"
|
||||
|
||||
#: themes/default/templates/index.html.ep:107 themes/default/templates/index.html.ep:109 themes/default/templates/partial/lutim.js.ep:112 themes/default/templates/partial/lutim.js.ep:116
|
||||
msgid "Link for share on social networks"
|
||||
msgstr "Ссылка для того, чтоб поделиться в социальных сетях"
|
||||
|
||||
#: themes/default/templates/login.html.ep:8
|
||||
msgid "Login"
|
||||
msgstr "Имя пользователя"
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:33
|
||||
msgid "Logout"
|
||||
msgstr "Выйти"
|
||||
|
||||
#: themes/default/templates/zip.html.ep:7
|
||||
msgid ""
|
||||
"Lutim can't zip so many images at once, so it splitted your demand in "
|
||||
"multiple URLs."
|
||||
msgstr ""
|
||||
"Lutim не может сархивировать так много картинок за раз, поэтому ваш запрос "
|
||||
"разбит на несколько URL."
|
||||
|
||||
#: themes/default/templates/about.html.ep:4
|
||||
msgid ""
|
||||
"Lutim is a free (as in free beer) and anonymous image hosting service. It's "
|
||||
"also the name of the free (as in free speech) software which provides this "
|
||||
"service."
|
||||
msgstr ""
|
||||
"Lutim — это бесплатный (as in free beer) и анонимный сервис размещения "
|
||||
"изображений. Также это название свободного (as in free speech) программного "
|
||||
"обеспечения, предоставляющего этот сервис."
|
||||
|
||||
#: themes/default/templates/about.html.ep:25
|
||||
msgid "Main developers"
|
||||
msgstr "Главные разработчики"
|
||||
|
||||
#: themes/default/templates/index.html.ep:91 themes/default/templates/index.html.ep:93 themes/default/templates/partial/lutim.js.ep:86 themes/default/templates/partial/lutim.js.ep:89
|
||||
msgid "Markdown syntax"
|
||||
msgstr "Синтаксис Маркдауна"
|
||||
|
||||
#: themes/default/templates/partial/myfiles.js.ep:149
|
||||
msgid "Modify expiration delay"
|
||||
msgstr "Изменить время на удление"
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:7 themes/default/templates/partial/navbar.html.ep:18
|
||||
msgid "My images"
|
||||
msgstr "Мои изображения"
|
||||
|
||||
#: themes/default/templates/gallery.html.ep:45
|
||||
msgid "Next (arrow right)"
|
||||
msgstr "Следующий (стрелка вправо)"
|
||||
|
||||
#: themes/default/templates/partial/myfiles.js.ep:105 themes/default/templates/partial/myfiles.js.ep:132
|
||||
msgid "No limit"
|
||||
msgstr "Без ограничений"
|
||||
|
||||
#: themes/default/templates/index.html.ep:183 themes/default/templates/index.html.ep:216
|
||||
msgid "Only images are allowed"
|
||||
msgstr "Разрешены только изображения"
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:11
|
||||
msgid ""
|
||||
"Only the images sent with this browser will be listed here. The details are "
|
||||
"stored in localStorage: if you delete your localStorage data, you'll loose "
|
||||
"these details."
|
||||
msgstr ""
|
||||
"Здесь перечислены только изображения, загруженные через браузер. Статистика "
|
||||
"хранится в localStorage: если вы удалите данные localStorage, вы потеряете "
|
||||
"эту статистику."
|
||||
|
||||
#: themes/default/templates/about.html.ep:16
|
||||
msgid ""
|
||||
"Only the uploader! (well, only if he's the only owner of the images' rights "
|
||||
"before the upload)"
|
||||
msgstr ""
|
||||
"Только тот, кто загрузил! (ну хорошо, только если он — единственный "
|
||||
"правообладатель изображений до загрузки)"
|
||||
|
||||
#: themes/default/templates/login.html.ep:12
|
||||
msgid "Password"
|
||||
msgstr "Пароль"
|
||||
|
||||
#: themes/default/templates/zip.html.ep:12
|
||||
msgid "Please click on each URL to download the different zip files."
|
||||
msgstr ""
|
||||
"Пожалуйста, щёлкните по каждому URL для скачивания отдельными zip-архивами."
|
||||
|
||||
#. (config('contact')
|
||||
#: themes/default/templates/about.html.ep:19
|
||||
msgid "Please contact the administrator: %1"
|
||||
msgstr "Пожалуйста, свяжитесь с администратором: %1"
|
||||
|
||||
#: lib/Lutim/Controller/Authent.pm:36
|
||||
msgid "Please, check your credentials: unable to authenticate."
|
||||
msgstr "Пожалуйста проверьте свои данные: не удалось идентифицировать."
|
||||
|
||||
#: themes/default/templates/gallery.html.ep:43
|
||||
msgid "Previous (arrow left)"
|
||||
msgstr "Предыдущий (стрелка влево)"
|
||||
|
||||
#: themes/default/templates/index.html.ep:46 themes/default/templates/index.html.ep:49 themes/default/templates/myfiles.html.ep:96 themes/default/templates/myfiles.html.ep:99
|
||||
msgid "Random image link"
|
||||
msgstr "Случайная ссылка на изображение"
|
||||
|
||||
#: themes/default/templates/stats.html.ep:22
|
||||
msgid "Raw stats"
|
||||
msgstr "Сырые статистические данные"
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:52
|
||||
msgid "Save changes"
|
||||
msgstr "Сохранить изменения"
|
||||
|
||||
#: themes/default/templates/index.html.ep:176
|
||||
msgid "Send an image"
|
||||
msgstr "Послать изображение"
|
||||
|
||||
#: themes/default/templates/login.html.ep:16 themes/default/templates/logout.html.ep:5 themes/default/templates/partial/navbar.html.ep:37
|
||||
msgid "Signin"
|
||||
msgstr "Регистрация"
|
||||
|
||||
#: themes/default/templates/index.html.ep:151 themes/default/templates/partial/gallery.js.ep:211 themes/default/templates/partial/lutim.js.ep:176
|
||||
msgid "Something bad happened"
|
||||
msgstr "Произошло что-то плохое"
|
||||
|
||||
#. ($c->config('contact')
|
||||
#: lib/Lutim/Controller/Image.pm:763
|
||||
msgid ""
|
||||
"Something went wrong when creating the zip file. Try again later or contact "
|
||||
"the administrator (%1)."
|
||||
msgstr ""
|
||||
"Что-то пошло не так при создании zip-архива. Попробуйте позже или свяжитесь "
|
||||
"с администратором (%1)."
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:55
|
||||
msgid "Support the author"
|
||||
msgstr "Поддержать автора"
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:63
|
||||
msgid "Support the author on Liberapay"
|
||||
msgstr "Поддержать автора на Liberapay"
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:60
|
||||
msgid "Support the author on Tipeee"
|
||||
msgstr "Поддержать автора на Tipeee"
|
||||
|
||||
#: themes/default/templates/about.html.ep:13
|
||||
msgid ""
|
||||
"The IP address of the image's sender is retained for a delay which depends "
|
||||
"of the administrator's choice (for the official instance, which is located "
|
||||
"in France, it's one year)."
|
||||
msgstr ""
|
||||
"IP-адрес отправителя изображений сохраняется на время, зависящее от решения "
|
||||
"администратора (официальное требование во Франции — один год)."
|
||||
|
||||
#: themes/default/templates/about.html.ep:23
|
||||
msgid ""
|
||||
"The Lutim software is a <a href=\"http://en.wikipedia.org/wiki/"
|
||||
"Free_software\">free software</a>, which allows you to download and install "
|
||||
"it on you own server. Have a look at the <a href=\"https://www.gnu.org/"
|
||||
"licenses/agpl-3.0.html\">AGPL</a> to see what you can do."
|
||||
msgstr ""
|
||||
"Lutim — это <a href=\"https://ru.wikipedia.org/wiki/"
|
||||
"%D0%A1%D0%B2%D0%BE%D0%B1%D0%BE%D0%B4%D0%BD%D0%BE%D0%B5_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%BD%D0%BE%D0%B5_%D0%BE%D0%B1%D0%B5%D1%81%D0%BF%D0%B5%D1%87%D0%B5%D0%BD%D0%B8%D0%B5\">свободное "
|
||||
"программное обеспечение</a>, которое вы можете скачать и установить на свой "
|
||||
"сервер. Посмотрите <a href=\"https://www.gnu.org/licenses/agpl-3.0."
|
||||
"html\">AGPL</a>, чтоб увидеть, что вы можете делать."
|
||||
|
||||
#: lib/Lutim/Controller/Image.pm:347
|
||||
msgid "The URL is not valid."
|
||||
msgstr "Недопустимый URL."
|
||||
|
||||
#: themes/default/templates/zip.html.ep:16
|
||||
msgid ""
|
||||
"The automatic download process will open a tab in your browser for each link."
|
||||
" You need to allow popups for Lutim."
|
||||
msgstr ""
|
||||
"Процесс автоматического скачивания откроет вкладку в вашем браузере для "
|
||||
"каждой ссылки. Вам надо разрешить всплывающие окна для Lutim."
|
||||
|
||||
#: themes/default/templates/partial/myfiles.js.ep:32
|
||||
msgid "The data has been successfully imported."
|
||||
msgstr "Данные были успешно импортированы."
|
||||
|
||||
#: lib/Lutim/Controller/Image.pm:160 lib/Lutim/Controller/Image.pm:228
|
||||
msgid "The delete token is invalid."
|
||||
msgstr "Неправильный ключ для удаления."
|
||||
|
||||
#. ($upload->filename)
|
||||
#: lib/Lutim/Controller/Image.pm:488
|
||||
msgid "The file %1 is not an image."
|
||||
msgstr "Файл %1 — не изображение."
|
||||
|
||||
#. ($tx->res->max_message_size)
|
||||
#. ($c->req->max_message_size)
|
||||
#. (config('max_file_size')
|
||||
#: lib/Lutim/Controller/Image.pm:311 lib/Lutim/Controller/Image.pm:380 themes/default/templates/partial/lutim.js.ep:249
|
||||
msgid "The file exceed the size limit (%1)"
|
||||
msgstr "Размер файла превосходит ограничение (%1)"
|
||||
|
||||
#: themes/default/templates/stats.html.ep:12
|
||||
msgid "The graph's datas are not updated in real-time."
|
||||
msgstr "Данные графиков не обновляются в реальном времени."
|
||||
|
||||
#. ($image->filename)
|
||||
#: lib/Lutim/Controller/Image.pm:230
|
||||
msgid "The image %1 has already been deleted."
|
||||
msgstr "Изображение %1 уже было удалено."
|
||||
|
||||
#. ($image->filename)
|
||||
#: lib/Lutim/Controller/Image.pm:239 lib/Lutim/Controller/Image.pm:244
|
||||
msgid "The image %1 has been successfully deleted"
|
||||
msgstr "Изображение %1 успешно удалено"
|
||||
|
||||
#: themes/default/templates/index.html.ep:63
|
||||
msgid "The images are encrypted on the server (Lutim does not keep the key)."
|
||||
msgstr "Изображения зашифрованы на сервере (Lutim не хранит ключ)."
|
||||
|
||||
#: themes/default/templates/about.html.ep:5
|
||||
msgid ""
|
||||
"The images you post on Lutim can be stored indefinitely or be deleted at "
|
||||
"first view or after a delay selected from those proposed."
|
||||
msgstr ""
|
||||
"Изображения, загружаемые в Lutim, могут храниться неопределённо долго либо "
|
||||
"быть удалёнными после первого просмотра или по истечении определённого "
|
||||
"промежутка времени."
|
||||
|
||||
#: lib/Lutim/Controller/Image.pm:168
|
||||
msgid "The image’s delay has been successfully modified"
|
||||
msgstr "Срок хранения изображения успешно изменён"
|
||||
|
||||
#: themes/default/templates/partial/gallery.js.ep:277
|
||||
msgid "There is XXXX image(s) in the gallery"
|
||||
msgstr "В галерее есть изображения для взрослых"
|
||||
|
||||
#. ($c->config->{contact})
|
||||
#: lib/Lutim/Controller/Image.pm:485
|
||||
msgid "There is no more available URL. Retry or contact the administrator. %1"
|
||||
msgstr ""
|
||||
"Больше нет доступных URL. Попробуйте снова или свяжитесь с администратором. "
|
||||
"%1"
|
||||
|
||||
#: themes/default/templates/gallery.html.ep:30
|
||||
msgid "Toggle fullscreen"
|
||||
msgstr "Переключить полноэкранный режим"
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:8
|
||||
msgid "Toggle navigation"
|
||||
msgstr "Переключить навигацию"
|
||||
|
||||
#: lib/Lutim/Command/cron/stats.pm:162 themes/default/templates/raw.html.ep:11
|
||||
msgid "Total"
|
||||
msgstr "Итого"
|
||||
|
||||
#: themes/default/templates/index.html.ep:78 themes/default/templates/partial/lutim.js.ep:17
|
||||
msgid "Tweet it!"
|
||||
msgstr "Твитнуть!"
|
||||
|
||||
#: themes/default/templates/partial/common.js.ep:110 themes/default/templates/partial/common.js.ep:90
|
||||
msgid "Unable to copy to clipboard"
|
||||
msgstr "Не удается скопировать в буфер обмена"
|
||||
|
||||
#. ($short)
|
||||
#: lib/Lutim/Controller/Image.pm:108 lib/Lutim/Controller/Image.pm:202 lib/Lutim/Controller/Image.pm:273
|
||||
msgid "Unable to find the image %1."
|
||||
msgstr "Невозможно найти изображение %1."
|
||||
|
||||
#: lib/Lutim/Controller/Image.pm:574 lib/Lutim/Controller/Image.pm:619 lib/Lutim/Controller/Image.pm:660 lib/Lutim/Controller/Image.pm:703 lib/Lutim/Controller/Image.pm:715 lib/Lutim/Controller/Image.pm:726 lib/Lutim/Controller/Image.pm:753 lib/Lutim/Plugin/Helpers.pm:88
|
||||
msgid "Unable to find the image: it has been deleted."
|
||||
msgstr "Невозможно найти изображение: оно было удалено."
|
||||
|
||||
#: lib/Lutim/Controller/Image.pm:145
|
||||
msgid "Unable to get counter"
|
||||
msgstr "Невозможно получить счётчик"
|
||||
|
||||
#: themes/default/templates/about.html.ep:17
|
||||
msgid ""
|
||||
"Unlike many image sharing services, you don't give us rights on uploaded "
|
||||
"images."
|
||||
msgstr ""
|
||||
"В отличие от многих сервисов публикации изображений, вы не даёте нам права "
|
||||
"на переданные изображения."
|
||||
|
||||
#: themes/default/templates/index.html.ep:180 themes/default/templates/index.html.ep:219
|
||||
msgid "Upload an image with its URL"
|
||||
msgstr "Загрузить изображение с URL"
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:125
|
||||
msgid "Uploaded at"
|
||||
msgstr "Загружено в"
|
||||
|
||||
#: themes/default/templates/stats.html.ep:6
|
||||
msgid "Uploaded files by days"
|
||||
msgstr "Загружено файлов по дням"
|
||||
|
||||
#. ($c->app->config('contact')
|
||||
#: lib/Lutim/Plugin/Helpers.pm:221
|
||||
msgid ""
|
||||
"Uploading is currently disabled, please try later or contact the "
|
||||
"administrator (%1)."
|
||||
msgstr ""
|
||||
"Загрузка сейчас отключена, пожалуйста, попробуйте позже или свяжитесь с "
|
||||
"администратором (%1)."
|
||||
|
||||
#: themes/default/templates/index.html.ep:83 themes/default/templates/index.html.ep:85 themes/default/templates/myfiles.html.ep:122 themes/default/templates/partial/lutim.js.ep:72 themes/default/templates/partial/lutim.js.ep:76
|
||||
msgid "View link"
|
||||
msgstr "Ссылка на просмотр"
|
||||
|
||||
#: themes/default/templates/about.html.ep:22
|
||||
msgid "What about the software which provides the service?"
|
||||
msgstr "Что насчёт программного обеспечения, предоставляющего этот сервис?"
|
||||
|
||||
#: themes/default/templates/about.html.ep:3
|
||||
msgid "What is Lutim?"
|
||||
msgstr "Что такое Lutim?"
|
||||
|
||||
#: themes/default/templates/about.html.ep:15
|
||||
msgid "Who owns rights on images uploaded on Lutim?"
|
||||
msgstr "Кто обладает правами на изображения, загруженные на Lutim?"
|
||||
|
||||
#: themes/default/templates/about.html.ep:12
|
||||
msgid ""
|
||||
"Yes, it is! On the other side, for legal reasons, your IP address will be "
|
||||
"stored when you send an image. Don't panic, it is normally the case of all "
|
||||
"sites on which you send files!"
|
||||
msgstr ""
|
||||
"Да, это так! С другой стороны, согласно требованиям закона, ваш IP-адрес "
|
||||
"будет сохранён при загрузке изображения. Без паники, это обычная практика на "
|
||||
"всех сайтах, куда посылают файлы."
|
||||
|
||||
#: themes/default/templates/about.html.ep:10
|
||||
msgid ""
|
||||
"Yes, it is! On the other side, if you want to support the developer, you can "
|
||||
"do it via <a href=\"https://www.tipeee.com/fiat-tux\">Tipeee</a> or via <a "
|
||||
"href=\"https://liberapay.com/sky/\">Liberapay</a>."
|
||||
msgstr ""
|
||||
"Да, это так! С другой стороны, если вы хотите поддержать разработчика, вы "
|
||||
"можете сделать это через <a href=\"https://www.tipeee.com/fiat-tux\">Tipeee</"
|
||||
"a> или <a href=\"https://liberapay.com/sky/\">Liberapay</a>."
|
||||
|
||||
#: themes/default/templates/zip.html.ep:6
|
||||
msgid "You asked to download a zip archive for too much files."
|
||||
msgstr "Вы запросили скачивание zip-архива с очень большим числом файлов."
|
||||
|
||||
#: themes/default/templates/about.html.ep:8
|
||||
msgid ""
|
||||
"You can, optionally, request that the image(s) posted on Lutim to be deleted "
|
||||
"at first view (or download) or after the delay selected from those proposed."
|
||||
msgstr ""
|
||||
"Вы можете, при желании, запросить, чтоб загруженные в Lutim изображения были "
|
||||
"удалены после первого просмотра (либо скачивания) или по истечении "
|
||||
"выбранного промежутка времени."
|
||||
|
||||
#: lib/Lutim/Controller/Authent.pm:27
|
||||
msgid "You have been successfully logged in."
|
||||
msgstr "Вы успешно вошли в учетную запись."
|
||||
|
||||
#: lib/Lutim/Controller/Authent.pm:66 themes/default/templates/logout.html.ep:3
|
||||
msgid "You have been successfully logged out."
|
||||
msgstr "Вы успешно вышли из учетной записи."
|
||||
|
||||
#: themes/default/templates/gallery.html.ep:31
|
||||
msgid "Zoom in/out"
|
||||
msgstr "Приблизить/отдалить"
|
||||
|
||||
#: themes/default/templates/about.html.ep:27
|
||||
msgid "and on"
|
||||
msgstr "и на"
|
||||
|
||||
#: themes/default/templates/about.html.ep:40
|
||||
msgid "arabic translation"
|
||||
msgstr "арабский перевод"
|
||||
|
||||
#: themes/default/templates/about.html.ep:27
|
||||
msgid "core developer"
|
||||
msgstr "разработчик ядра"
|
||||
|
||||
#: lib/Lutim.pm:348 lib/Lutim/Command/cron/stats.pm:157 lib/Lutim/Command/cron/stats.pm:171 lib/Lutim/Command/cron/stats.pm:188 themes/default/templates/index.html.ep:3 themes/default/templates/myfiles.html.ep:3 themes/default/templates/partial/raw.js.ep:21 themes/default/templates/partial/raw.js.ep:4 themes/default/templates/raw.html.ep:6
|
||||
msgid "no time limit"
|
||||
msgstr "без ограничения времени"
|
||||
|
||||
#: themes/default/templates/about.html.ep:38
|
||||
msgid "occitan translation"
|
||||
msgstr "окситанский перевод"
|
||||
|
||||
#: themes/default/templates/about.html.ep:27
|
||||
msgid "on"
|
||||
msgstr "в"
|
||||
|
||||
#: themes/default/templates/about.html.ep:39
|
||||
msgid "paste image to upload ability"
|
||||
msgstr "paste image to upload ability"
|
||||
|
||||
#: themes/default/templates/about.html.ep:41
|
||||
msgid "russian translation"
|
||||
msgstr "русский перевод"
|
||||
|
||||
#: themes/default/templates/about.html.ep:36
|
||||
msgid "spanish translation"
|
||||
msgstr "испанский перевод"
|
||||
|
||||
#: themes/default/templates/about.html.ep:28
|
||||
msgid "webapp developer"
|
||||
msgstr "разработчик веб-приложения"
|
||||
|
||||
#: themes/default/templates/about.html.ep:24
|
||||
msgid "For more details, see the <a href=\"https://framagit.org/fiat-tux/hat-softwares/lutim\">homepage of the project</a>."
|
||||
msgstr ""
|
||||
"Чтоб узнать больше, посетите <a href=\"https://framagit.org/fiat-tux/"
|
||||
"hat-softwares/lutim\">главную страницу проекта</a>."
|
||||
|
||||
#: themes/default/templates/index.html.ep:177 themes/default/templates/index.html.ep:221
|
||||
msgid "No watermark"
|
||||
msgstr "Без водного знака"
|
||||
|
||||
#: themes/default/templates/index.html.ep:171 themes/default/templates/index.html.ep:215
|
||||
msgid "Tiling watermark"
|
||||
msgstr "Размещение водяного знака"
|
||||
|
||||
#: themes/default/templates/index.html.ep:174 themes/default/templates/index.html.ep:218
|
||||
msgid "Single watermark"
|
||||
msgstr "Единственный водяной знак"
|
||||
641
themes/default/lib/Lutim/I18N/sv.po
Normal file
641
themes/default/lib/Lutim/I18N/sv.po
Normal file
@@ -0,0 +1,641 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"PO-Revision-Date: 2020-09-20 09:51+0000\n"
|
||||
"Last-Translator: Filip Bengtsson <filip@libreradio.org>\n"
|
||||
"Language-Team: Swedish <https://weblate.framasoft.org/projects/lutim/"
|
||||
"default-theme/sv/>\n"
|
||||
"Language: sv\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
"X-Generator: Weblate 4.1\n"
|
||||
|
||||
#. (7)
|
||||
#. (30)
|
||||
#. ($delay)
|
||||
#. (config('max_delay')
|
||||
#: lib/Lutim/Command/cron/stats.pm:159 lib/Lutim/Command/cron/stats.pm:160 lib/Lutim/Command/cron/stats.pm:173 lib/Lutim/Command/cron/stats.pm:174 lib/Lutim/Command/cron/stats.pm:190 lib/Lutim/Command/cron/stats.pm:191 themes/default/templates/myfiles.html.ep:24 themes/default/templates/myfiles.html.ep:33 themes/default/templates/myfiles.html.ep:34 themes/default/templates/partial/for_my_delay.html.ep:13 themes/default/templates/partial/for_my_delay.html.ep:14 themes/default/templates/partial/for_my_delay.html.ep:4 themes/default/templates/partial/lutim.js.ep:140 themes/default/templates/partial/lutim.js.ep:149 themes/default/templates/partial/lutim.js.ep:150 themes/default/templates/partial/raw.js.ep:23 themes/default/templates/partial/raw.js.ep:24 themes/default/templates/partial/raw.js.ep:6 themes/default/templates/partial/raw.js.ep:7 themes/default/templates/raw.html.ep:8 themes/default/templates/raw.html.ep:9
|
||||
msgid "%1 days"
|
||||
msgstr "%1 dagar"
|
||||
|
||||
#. ($total)
|
||||
#: themes/default/templates/stats.html.ep:2
|
||||
msgid "%1 sent images on this instance from beginning."
|
||||
msgstr "%1 bilder har skickats från den här instansen sedan starten."
|
||||
|
||||
#: themes/default/templates/index.html.ep:202
|
||||
msgid "-or-"
|
||||
msgstr "-eller-"
|
||||
|
||||
#: lib/Lutim.pm:350 lib/Lutim/Command/cron/stats.pm:161 lib/Lutim/Command/cron/stats.pm:175 lib/Lutim/Command/cron/stats.pm:192 themes/default/templates/index.html.ep:5 themes/default/templates/myfiles.html.ep:5 themes/default/templates/partial/raw.js.ep:25 themes/default/templates/partial/raw.js.ep:8 themes/default/templates/raw.html.ep:10
|
||||
msgid "1 year"
|
||||
msgstr "1 år"
|
||||
|
||||
#: lib/Lutim.pm:349 lib/Lutim/Command/cron/stats.pm:158 lib/Lutim/Command/cron/stats.pm:172 lib/Lutim/Command/cron/stats.pm:189 themes/default/templates/index.html.ep:4 themes/default/templates/myfiles.html.ep:33 themes/default/templates/myfiles.html.ep:4 themes/default/templates/partial/for_my_delay.html.ep:13 themes/default/templates/partial/lutim.js.ep:149 themes/default/templates/partial/raw.js.ep:22 themes/default/templates/partial/raw.js.ep:5 themes/default/templates/raw.html.ep:7
|
||||
msgid "24 hours"
|
||||
msgstr "24 timmar"
|
||||
|
||||
#: themes/default/templates/partial/myfiles.js.ep:210
|
||||
msgid ": Error while trying to get the counter."
|
||||
msgstr ": Kunde inte hämta räknaren."
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:63
|
||||
msgid "About"
|
||||
msgstr "Om"
|
||||
|
||||
#: lib/Lutim/Command/cron/stats.pm:154 themes/default/templates/raw.html.ep:3
|
||||
msgid "Active images"
|
||||
msgstr "Aktiva bilder"
|
||||
|
||||
#: lib/Lutim/Controller/Image.pm:328
|
||||
msgid "An error occured while downloading the image."
|
||||
msgstr "Ett fel inträffade när bilden laddades ner."
|
||||
|
||||
#: themes/default/templates/zip.html.ep:2
|
||||
msgid "Archives download"
|
||||
msgstr "Nerladdningsarkiv"
|
||||
|
||||
#: themes/default/templates/about.html.ep:44 themes/default/templates/myfiles.html.ep:129 themes/default/templates/stats.html.ep:25
|
||||
msgid "Back to homepage"
|
||||
msgstr "Tillbaka till hemsidan"
|
||||
|
||||
#: themes/default/templates/index.html.ep:205 themes/default/templates/index.html.ep:206
|
||||
msgid "Click to open the file browser"
|
||||
msgstr "Klicka för att öppna filhanteraren"
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:51
|
||||
msgid "Close"
|
||||
msgstr "Stäng"
|
||||
|
||||
#: themes/default/templates/gallery.html.ep:29
|
||||
msgid "Close (Esc)"
|
||||
msgstr "Stäng (Esc)"
|
||||
|
||||
#: themes/default/templates/about.html.ep:30
|
||||
msgid "Contributors"
|
||||
msgstr "Bidragsgivare"
|
||||
|
||||
#: themes/default/templates/partial/common.js.ep:113 themes/default/templates/partial/common.js.ep:93
|
||||
msgid "Copied to clipboard"
|
||||
msgstr "Kopierat till urklipp"
|
||||
|
||||
#: themes/default/templates/partial/lutim.js.ep:215 themes/default/templates/partial/lutim.js.ep:278 themes/default/templates/partial/lutim.js.ep:364
|
||||
msgid "Copy all view links to clipboard"
|
||||
msgstr "Kopiera alla visningslänkar till urklipp"
|
||||
|
||||
#: themes/default/templates/index.html.ep:105 themes/default/templates/index.html.ep:16 themes/default/templates/index.html.ep:32 themes/default/templates/index.html.ep:48 themes/default/templates/index.html.ep:81 themes/default/templates/index.html.ep:89 themes/default/templates/index.html.ep:97 themes/default/templates/myfiles.html.ep:66 themes/default/templates/myfiles.html.ep:82 themes/default/templates/myfiles.html.ep:98 themes/default/templates/partial/common.js.ep:186 themes/default/templates/partial/lutim.js.ep:106 themes/default/templates/partial/lutim.js.ep:121 themes/default/templates/partial/lutim.js.ep:80 themes/default/templates/partial/lutim.js.ep:92 themes/default/templates/partial/myfiles.js.ep:172
|
||||
msgid "Copy to clipboard"
|
||||
msgstr "Kopiera till urklipp"
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:117
|
||||
msgid "Counter"
|
||||
msgstr "Räknare"
|
||||
|
||||
#: themes/default/templates/stats.html.ep:18
|
||||
msgid "Delay repartition chart for disabled images"
|
||||
msgstr "Intervall för omfördelning av inaktiva bilder"
|
||||
|
||||
#: themes/default/templates/stats.html.ep:15
|
||||
msgid "Delay repartition chart for enabled images"
|
||||
msgstr "Intervall för omfördelning av inaktiva bilder"
|
||||
|
||||
#: themes/default/templates/index.html.ep:127 themes/default/templates/index.html.ep:159 themes/default/templates/index.html.ep:190 themes/default/templates/myfiles.html.ep:118 themes/default/templates/myfiles.html.ep:45 themes/default/templates/partial/lutim.js.ep:161
|
||||
msgid "Delete at first view?"
|
||||
msgstr "Radera efter första visningen?"
|
||||
|
||||
#: lib/Lutim/Command/cron/stats.pm:155 themes/default/templates/raw.html.ep:4
|
||||
msgid "Deleted images"
|
||||
msgstr "Raderade bilder"
|
||||
|
||||
#: lib/Lutim/Command/cron/stats.pm:156 themes/default/templates/raw.html.ep:5
|
||||
msgid "Deleted images in 30 days"
|
||||
msgstr "30 dagars raderade bilder"
|
||||
|
||||
#: themes/default/templates/index.html.ep:110 themes/default/templates/myfiles.html.ep:121 themes/default/templates/partial/common.js.ep:178 themes/default/templates/partial/common.js.ep:181
|
||||
msgid "Deletion link"
|
||||
msgstr "Raderingslänk"
|
||||
|
||||
#: themes/default/templates/gallery.html.ep:10
|
||||
msgid "Download all images"
|
||||
msgstr "Ladda ner alla bilder"
|
||||
|
||||
#: themes/default/templates/index.html.ep:93 themes/default/templates/index.html.ep:95 themes/default/templates/partial/lutim.js.ep:102 themes/default/templates/partial/lutim.js.ep:98
|
||||
msgid "Download link"
|
||||
msgstr "Nerladdningslänk"
|
||||
|
||||
#: themes/default/templates/index.html.ep:26 themes/default/templates/index.html.ep:28 themes/default/templates/myfiles.html.ep:76 themes/default/templates/myfiles.html.ep:78
|
||||
msgid "Download zip link"
|
||||
msgstr "Nerladdningslänk (zip)"
|
||||
|
||||
#: themes/default/templates/index.html.ep:201
|
||||
msgid "Drag & drop images here"
|
||||
msgstr "Drag och släpp bilder här"
|
||||
|
||||
#: themes/default/templates/about.html.ep:7
|
||||
msgid "Drag and drop an image in the appropriate area or use the traditional way to send files and Lutim will provide you four URLs. One to view the image, an other to directly download it, one you can use on social networks and a last to delete the image when you want."
|
||||
msgstr ""
|
||||
"Drag och släpp en bild i rutan eller använd det vanliga sättet att skicka "
|
||||
"filer. Lutim kommer då ge dig fyra länkar: en för att visa bilden, en annan "
|
||||
"för att ladda ner den, en för att använda på sociala nätverk och en sista "
|
||||
"för att radera bilden när du vill."
|
||||
|
||||
#: themes/default/templates/index.html.ep:162 themes/default/templates/index.html.ep:193
|
||||
msgid "Encrypt the image (Lutim does not keep the key)."
|
||||
msgstr "Kryptera bilden (Lutim behåller inte nyckeln)."
|
||||
|
||||
#: themes/default/templates/partial/lutim.js.ep:45 themes/default/templates/partial/myfiles.js.ep:128
|
||||
msgid "Error while trying to modify the image."
|
||||
msgstr "Ett fel inträffade när bilden redigerades."
|
||||
|
||||
#: themes/default/templates/stats.html.ep:10
|
||||
msgid "Evolution of total files"
|
||||
msgstr "Antal filer (totalt) över tid"
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:120
|
||||
msgid "Expires at"
|
||||
msgstr "Förfaller"
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:106
|
||||
msgid "Export localStorage data"
|
||||
msgstr "Exportera localStorage-data"
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:115
|
||||
msgid "File name"
|
||||
msgstr "Filnamn"
|
||||
|
||||
#: themes/default/templates/about.html.ep:24
|
||||
msgid "For more details, see the <a href=\"https://framagit.org/luc/lutim\">homepage of the project</a>."
|
||||
msgstr ""
|
||||
"Se <a href=\"https://framagit.org/luc/lutim\">projektets hemsida</a> för mer "
|
||||
"information."
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:66
|
||||
msgid "Fork me!"
|
||||
msgstr "Grena mig!"
|
||||
|
||||
#: themes/default/templates/index.html.ep:10 themes/default/templates/index.html.ep:12 themes/default/templates/myfiles.html.ep:60 themes/default/templates/myfiles.html.ep:62
|
||||
msgid "Gallery link"
|
||||
msgstr "Länk till galleri"
|
||||
|
||||
#: themes/default/templates/partial/common.js.ep:116 themes/default/templates/partial/common.js.ep:134
|
||||
msgid "Hit Ctrl+C, then Enter to copy the short link"
|
||||
msgstr "Tryck Ctrl+C och sedan Enter för att kopiera den nerkortade länken"
|
||||
|
||||
#: themes/default/templates/layouts/default.html.ep:47
|
||||
msgid "Homepage"
|
||||
msgstr "Hemsida"
|
||||
|
||||
#: themes/default/templates/about.html.ep:20
|
||||
msgid "How do you pronounce Lutim?"
|
||||
msgstr "Hur uttalar man Lutim?"
|
||||
|
||||
#: themes/default/templates/about.html.ep:6
|
||||
msgid "How does it work?"
|
||||
msgstr "Hur fungerar det?"
|
||||
|
||||
#: themes/default/templates/about.html.ep:18
|
||||
msgid "How to report an image?"
|
||||
msgstr "Kan jag anmäla en bild?"
|
||||
|
||||
#: themes/default/templates/about.html.ep:14
|
||||
msgid "If the files are deleted if you ask it while posting it, their SHA512 footprint are retained."
|
||||
msgstr "Om du vill, kan bildernas SHA512-profil behållas när filerna raderats."
|
||||
|
||||
#: themes/default/templates/index.html.ep:175 themes/default/templates/index.html.ep:215
|
||||
msgid "Image URL"
|
||||
msgstr "Bildlänk"
|
||||
|
||||
#: lib/Lutim/Command/cron/stats.pm:153 themes/default/templates/raw.html.ep:2
|
||||
msgid "Image delay"
|
||||
msgstr "Bildfördröjning"
|
||||
|
||||
#: themes/default/templates/partial/common.js.ep:157
|
||||
msgid "Image deleted"
|
||||
msgstr "Bild raderad"
|
||||
|
||||
#: lib/Lutim/Controller/Image.pm:756
|
||||
msgid "Image not found."
|
||||
msgstr "Bilden kunde inte hittas."
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:107
|
||||
msgid "Import localStorage data"
|
||||
msgstr "Importera localStorage-data"
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:55
|
||||
msgid "Informations"
|
||||
msgstr "Information"
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:25
|
||||
msgid "Install webapp"
|
||||
msgstr "Installera webapp"
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:21
|
||||
msgid "Instance's statistics"
|
||||
msgstr "Statistik för instansen"
|
||||
|
||||
#: themes/default/templates/about.html.ep:11
|
||||
msgid "Is it really anonymous?"
|
||||
msgstr "Är det verkligen anonymt?"
|
||||
|
||||
#: themes/default/templates/about.html.ep:9
|
||||
msgid "Is it really free (as in free beer)?"
|
||||
msgstr "Är det verkligen gratis?"
|
||||
|
||||
#: themes/default/templates/about.html.ep:21
|
||||
msgid "Juste like you pronounce the French word <a href=\"https://fr.wikipedia.org/wiki/Lutin\">lutin</a> (/ly.tɛ̃/)."
|
||||
msgstr ""
|
||||
"Precis som du uttalar ordet <a href=\"https://fr.wikipedia.org/wiki/Lutin\""
|
||||
">lutin</a> på franska ([ly.tɛ̃])."
|
||||
|
||||
#: themes/default/templates/index.html.ep:165 themes/default/templates/index.html.ep:196
|
||||
msgid "Keep EXIF tags"
|
||||
msgstr "Behåll EXIF-taggar"
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:43
|
||||
msgid "Language"
|
||||
msgstr "Språk"
|
||||
|
||||
#: themes/default/templates/index.html.ep:130 themes/default/templates/index.html.ep:178 themes/default/templates/index.html.ep:218 themes/default/templates/partial/lutim.js.ep:165
|
||||
msgid "Let's go!"
|
||||
msgstr "Nu kör vi!"
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:60
|
||||
msgid "License:"
|
||||
msgstr "Licens:"
|
||||
|
||||
#: themes/default/templates/index.html.ep:101 themes/default/templates/index.html.ep:103 themes/default/templates/partial/lutim.js.ep:112 themes/default/templates/partial/lutim.js.ep:116
|
||||
msgid "Link for share on social networks"
|
||||
msgstr "Länk för delning på sociala nätverk"
|
||||
|
||||
#: themes/default/templates/login.html.ep:8
|
||||
msgid "Login"
|
||||
msgstr "Logga in"
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:33
|
||||
msgid "Logout"
|
||||
msgstr "Logga ut"
|
||||
|
||||
#: themes/default/templates/zip.html.ep:7
|
||||
msgid "Lutim can't zip so many images at once, so it splitted your demand in multiple URLs."
|
||||
msgstr ""
|
||||
"Lutim kan inte komprimera så många bilder samtidigt, så de delades upp på "
|
||||
"flera länkar."
|
||||
|
||||
#: themes/default/templates/about.html.ep:4
|
||||
msgid "Lutim is a free (as in free beer) and anonymous image hosting service. It's also the name of the free (as in free speech) software which provides this service."
|
||||
msgstr ""
|
||||
"Lutim är en gratis och helt anonym bilddelningstjänst. Det är även namnet på "
|
||||
"den fria mjukvara som står bakom tjänsten."
|
||||
|
||||
#: themes/default/templates/about.html.ep:25
|
||||
msgid "Main developers"
|
||||
msgstr "Huvudutvecklare"
|
||||
|
||||
#: themes/default/templates/index.html.ep:85 themes/default/templates/index.html.ep:87 themes/default/templates/partial/lutim.js.ep:86 themes/default/templates/partial/lutim.js.ep:89
|
||||
msgid "Markdown syntax"
|
||||
msgstr "Markdown-syntax"
|
||||
|
||||
#: themes/default/templates/partial/myfiles.js.ep:179
|
||||
msgid "Modify expiration delay"
|
||||
msgstr "Ändra utgångsdatum"
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:7 themes/default/templates/partial/navbar.html.ep:18
|
||||
msgid "My images"
|
||||
msgstr "Mina bilder"
|
||||
|
||||
#: themes/default/templates/gallery.html.ep:45
|
||||
msgid "Next (arrow right)"
|
||||
msgstr "Nästa (pil höger)"
|
||||
|
||||
#: themes/default/templates/partial/myfiles.js.ep:120 themes/default/templates/partial/myfiles.js.ep:162
|
||||
msgid "No limit"
|
||||
msgstr "Ingen gräns"
|
||||
|
||||
#: themes/default/templates/index.html.ep:177 themes/default/templates/index.html.ep:210
|
||||
msgid "Only images are allowed"
|
||||
msgstr "Endast bilder tillåts"
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:11
|
||||
msgid "Only the images sent with this browser will be listed here. The details are stored in localStorage: if you delete your localStorage data, you'll loose these details."
|
||||
msgstr ""
|
||||
"Det är bara de bilderna som laddats upp från den här webbläsaren som listas "
|
||||
"här. Informationen sparas i localStorage: om du raderar din localStorage-"
|
||||
"data kommer den här informationen försvinna."
|
||||
|
||||
#: themes/default/templates/about.html.ep:16
|
||||
msgid "Only the uploader! (well, only if he's the only owner of the images' rights before the upload)"
|
||||
msgstr ""
|
||||
"Endast uppladdaren! (alltså, bara om han eller hon är bildernas enda "
|
||||
"upphovsrättsinnehavare innan uppladdningen)"
|
||||
|
||||
#: themes/default/templates/login.html.ep:12
|
||||
msgid "Password"
|
||||
msgstr "Lösenord"
|
||||
|
||||
#: themes/default/templates/zip.html.ep:12
|
||||
msgid "Please click on each URL to download the different zip files."
|
||||
msgstr "Klicka på respektive länk för att ladda ner de olika zip-filerna."
|
||||
|
||||
#. (config('contact')
|
||||
#: themes/default/templates/about.html.ep:19
|
||||
msgid "Please contact the administrator: %1"
|
||||
msgstr "Kontakta gärna administratören: %1"
|
||||
|
||||
#: lib/Lutim/Controller/Authent.pm:36
|
||||
msgid "Please, check your credentials: unable to authenticate."
|
||||
msgstr "Kunde inte logga in dig, kontrollera gärna dina uppgifter."
|
||||
|
||||
#: themes/default/templates/gallery.html.ep:43
|
||||
msgid "Previous (arrow left)"
|
||||
msgstr "Föregående (pil vänster)"
|
||||
|
||||
#: themes/default/templates/index.html.ep:42 themes/default/templates/index.html.ep:44 themes/default/templates/myfiles.html.ep:92 themes/default/templates/myfiles.html.ep:94
|
||||
msgid "Random image link"
|
||||
msgstr "Slumpmässig bildlänk"
|
||||
|
||||
#: themes/default/templates/stats.html.ep:22
|
||||
msgid "Raw stats"
|
||||
msgstr "Rå statistik"
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:52
|
||||
msgid "Save changes"
|
||||
msgstr "Spara ändringar"
|
||||
|
||||
#: themes/default/templates/index.html.ep:170
|
||||
msgid "Send an image"
|
||||
msgstr "Skicka en bild"
|
||||
|
||||
#: themes/default/templates/login.html.ep:16 themes/default/templates/logout.html.ep:5 themes/default/templates/partial/navbar.html.ep:37
|
||||
msgid "Signin"
|
||||
msgstr "Logga in"
|
||||
|
||||
#: themes/default/templates/index.html.ep:145 themes/default/templates/partial/gallery.js.ep:211 themes/default/templates/partial/lutim.js.ep:176
|
||||
msgid "Something bad happened"
|
||||
msgstr "Någonting har gått riktigt illa"
|
||||
|
||||
#. ($c->config('contact')
|
||||
#: lib/Lutim/Controller/Image.pm:763
|
||||
msgid "Something went wrong when creating the zip file. Try again later or contact the administrator (%1)."
|
||||
msgstr ""
|
||||
"Någonting gick snett när ZIP-arkivet skapades. Försök igen senare eller "
|
||||
"kontakta administratören (%1)."
|
||||
|
||||
#: themes/default/templates/about.html.ep:13
|
||||
msgid "The IP address of the image's sender is retained for a delay which depends of the administrator's choice (for the official instance, which is located in France, it's one year)."
|
||||
msgstr ""
|
||||
"IP-adressen som laddade upp bilden kommer sparas en tid som administratören "
|
||||
"bestämmer (för den officiella instansen, som drivs från Frankrike, är det "
|
||||
"ett år)."
|
||||
|
||||
#: themes/default/templates/about.html.ep:23
|
||||
msgid "The Lutim software is a <a href=\"http://en.wikipedia.org/wiki/Free_software\">free software</a>, which allows you to download and install it on you own server. Have a look at the <a href=\"https://www.gnu.org/licenses/agpl-3.0.html\">AGPL</a> to see what you can do."
|
||||
msgstr ""
|
||||
"Lutim är en <a href=\"https://sv.wikipedia.org/wiki/Fri_programvara\">fri "
|
||||
"mjukvara</a>, vilket innebär att du kan ladda ner och installera den på din "
|
||||
"egen server. Ta en titt på licensen <a href=\"https://www.gnu.org/licenses/"
|
||||
"agpl-3.0.html\">AGPL</a> för att se vad du kan göra."
|
||||
|
||||
#: lib/Lutim/Controller/Image.pm:347
|
||||
msgid "The URL is not valid."
|
||||
msgstr "Länken är ogiltig."
|
||||
|
||||
#: themes/default/templates/zip.html.ep:16
|
||||
msgid "The automatic download process will open a tab in your browser for each link. You need to allow popups for Lutim."
|
||||
msgstr ""
|
||||
"Den automatiska nerladdningen kommer påbörjas i en ny flik för varje länk. "
|
||||
"Du måste tillåta att Lutim öppnar nya flikar."
|
||||
|
||||
#: themes/default/templates/partial/myfiles.js.ep:32
|
||||
msgid "The data has been successfully imported."
|
||||
msgstr "All data har importerats."
|
||||
|
||||
#: lib/Lutim/Controller/Image.pm:160 lib/Lutim/Controller/Image.pm:228
|
||||
msgid "The delete token is invalid."
|
||||
msgstr "Raderings-token är ogiltig."
|
||||
|
||||
#. ($upload->filename)
|
||||
#: lib/Lutim/Controller/Image.pm:488
|
||||
msgid "The file %1 is not an image."
|
||||
msgstr "Filen %1 är inte en bild."
|
||||
|
||||
#. ($tx->res->max_message_size)
|
||||
#. ($c->req->max_message_size)
|
||||
#. (config('max_file_size')
|
||||
#: lib/Lutim/Controller/Image.pm:311 lib/Lutim/Controller/Image.pm:380 themes/default/templates/partial/lutim.js.ep:249
|
||||
msgid "The file exceed the size limit (%1)"
|
||||
msgstr "Filen överskrider storleksgränsen (%1)"
|
||||
|
||||
#: themes/default/templates/stats.html.ep:12
|
||||
msgid "The graph's datas are not updated in real-time."
|
||||
msgstr "Diagrammet uppdateras inte i realtid."
|
||||
|
||||
#. ($image->filename)
|
||||
#: lib/Lutim/Controller/Image.pm:230
|
||||
msgid "The image %1 has already been deleted."
|
||||
msgstr "Bilden %1 har redan raderats."
|
||||
|
||||
#. ($image->filename)
|
||||
#: lib/Lutim/Controller/Image.pm:239 lib/Lutim/Controller/Image.pm:244
|
||||
msgid "The image %1 has been successfully deleted"
|
||||
msgstr "Bilden %1 har raderats"
|
||||
|
||||
#: themes/default/templates/index.html.ep:57
|
||||
msgid "The images are encrypted on the server (Lutim does not keep the key)."
|
||||
msgstr "Bilderna krypteras på servern (Lutim behåller inte nyckeln)."
|
||||
|
||||
#: themes/default/templates/about.html.ep:5
|
||||
msgid "The images you post on Lutim can be stored indefinitely or be deleted at first view or after a delay selected from those proposed."
|
||||
msgstr ""
|
||||
"Bilderna du laddar upp till Lutim kan sparas för alltid, raderas efter "
|
||||
"första visningen eller efter en förutbestämd tid."
|
||||
|
||||
#: lib/Lutim/Controller/Image.pm:168
|
||||
msgid "The image’s delay has been successfully modified"
|
||||
msgstr "Bildens livstid har uppdaterats"
|
||||
|
||||
#: themes/default/templates/partial/gallery.js.ep:277
|
||||
msgid "There is XXXX image(s) in the gallery"
|
||||
msgstr "Det finns XXXX bilder i galleriet"
|
||||
|
||||
#. ($c->config->{contact})
|
||||
#: lib/Lutim/Controller/Image.pm:485
|
||||
msgid "There is no more available URL. Retry or contact the administrator. %1"
|
||||
msgstr ""
|
||||
"Det finns inga fler länkar att tillgå. Försök igen eller kontakta "
|
||||
"administratören. %1"
|
||||
|
||||
#: themes/default/templates/gallery.html.ep:30
|
||||
msgid "Toggle fullscreen"
|
||||
msgstr "Växla mellan fullskärmsläge"
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:8
|
||||
msgid "Toggle navigation"
|
||||
msgstr "Slå av eller på navigationsmenyn"
|
||||
|
||||
#: lib/Lutim/Command/cron/stats.pm:162 themes/default/templates/raw.html.ep:11
|
||||
msgid "Total"
|
||||
msgstr "Sammanlagt"
|
||||
|
||||
#: themes/default/templates/index.html.ep:72 themes/default/templates/partial/lutim.js.ep:17
|
||||
msgid "Tweet it!"
|
||||
msgstr "Twittra det!"
|
||||
|
||||
#: themes/default/templates/partial/common.js.ep:110 themes/default/templates/partial/common.js.ep:90
|
||||
msgid "Unable to copy to clipboard"
|
||||
msgstr "Kunde inte kopiera till urklipp"
|
||||
|
||||
#. ($short)
|
||||
#: lib/Lutim/Controller/Image.pm:108 lib/Lutim/Controller/Image.pm:202 lib/Lutim/Controller/Image.pm:273
|
||||
msgid "Unable to find the image %1."
|
||||
msgstr "Kunde inte hitta bilden %1."
|
||||
|
||||
#: lib/Lutim/Controller/Image.pm:574 lib/Lutim/Controller/Image.pm:619 lib/Lutim/Controller/Image.pm:660 lib/Lutim/Controller/Image.pm:703 lib/Lutim/Controller/Image.pm:715 lib/Lutim/Controller/Image.pm:726 lib/Lutim/Controller/Image.pm:753 lib/Lutim/Plugin/Helpers.pm:88
|
||||
msgid "Unable to find the image: it has been deleted."
|
||||
msgstr "Kunde inte hitta bilden eftersom den har raderats."
|
||||
|
||||
#: lib/Lutim/Controller/Image.pm:145
|
||||
msgid "Unable to get counter"
|
||||
msgstr "Kunde inte ladda in räknaren"
|
||||
|
||||
#: themes/default/templates/about.html.ep:17
|
||||
msgid "Unlike many image sharing services, you don't give us rights on uploaded images."
|
||||
msgstr ""
|
||||
"Till skillnad från många andra bilddelningstjänster, ger du inte oss några "
|
||||
"rättigheter till de uppladdade bilderna."
|
||||
|
||||
#: themes/default/templates/index.html.ep:174 themes/default/templates/index.html.ep:213
|
||||
msgid "Upload an image with its URL"
|
||||
msgstr "Ladda upp en bild från en länk"
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:119
|
||||
msgid "Uploaded at"
|
||||
msgstr "Uppladdad"
|
||||
|
||||
#: themes/default/templates/stats.html.ep:6
|
||||
msgid "Uploaded files by days"
|
||||
msgstr "Uppladdade filer per dag"
|
||||
|
||||
#. ($c->app->config('contact')
|
||||
#: lib/Lutim/Plugin/Helpers.pm:221
|
||||
msgid "Uploading is currently disabled, please try later or contact the administrator (%1)."
|
||||
msgstr ""
|
||||
"Det går inte att ladda upp bilder för tillfället. Försök igen senare eller "
|
||||
"kontakta administratören (%1)."
|
||||
|
||||
#: themes/default/templates/index.html.ep:77 themes/default/templates/index.html.ep:79 themes/default/templates/myfiles.html.ep:116 themes/default/templates/partial/lutim.js.ep:72 themes/default/templates/partial/lutim.js.ep:76
|
||||
msgid "View link"
|
||||
msgstr "Visa länk"
|
||||
|
||||
#: themes/default/templates/about.html.ep:22
|
||||
msgid "What about the software which provides the service?"
|
||||
msgstr "Vilken mjukvara används av den här tjänsten?"
|
||||
|
||||
#: themes/default/templates/about.html.ep:3
|
||||
msgid "What is Lutim?"
|
||||
msgstr "Vad är Lutim?"
|
||||
|
||||
#: themes/default/templates/about.html.ep:15
|
||||
msgid "Who owns rights on images uploaded on Lutim?"
|
||||
msgstr "Vem äger rättigheterna till de bilder som laddas upp med Lutim?"
|
||||
|
||||
#: themes/default/templates/about.html.ep:12
|
||||
msgid "Yes, it is! On the other side, for legal reasons, your IP address will be stored when you send an image. Don't panic, it is normally the case of all sites on which you send files!"
|
||||
msgstr ""
|
||||
"Ja, det är det! Men, av juridiska skäl, sparas din IP-adress när du laddar "
|
||||
"upp en bild. Du behöver inte drabbas av panik för det – det är hur det "
|
||||
"vanligen görs på alla webbplatser som kan skicka filer!"
|
||||
|
||||
#: themes/default/templates/about.html.ep:10
|
||||
msgid "Yes, it is! On the other side, if you want to support the developer, you can do it via <a href=\"https://www.tipeee.com/fiat-tux\">Tipeee</a> or via <a href=\"https://liberapay.com/sky/\">Liberapay</a>."
|
||||
msgstr ""
|
||||
"Ja, det är det! Men, å andra sidan, får du gärna stötta utvecklaren med en "
|
||||
"gåva via <a href=\"https://www.tipeee.com/fiat-tux\">Tipeee</a> eller <a "
|
||||
"href=\"https://liberapay.com/sky/\">Liberapay</a>."
|
||||
|
||||
#: themes/default/templates/zip.html.ep:6
|
||||
msgid "You asked to download a zip archive for too much files."
|
||||
msgstr "Du försökte ladda ner en zip-fil som innehöll för många filer."
|
||||
|
||||
#: themes/default/templates/about.html.ep:8
|
||||
msgid "You can, optionally, request that the image(s) posted on Lutim to be deleted at first view (or download) or after the delay selected from those proposed."
|
||||
msgstr ""
|
||||
"Om du vill, kan bilden raderas en viss tid efter att den har publicerats på "
|
||||
"Lutim, eller omedelbart efter den första visningen eller nerladdningen."
|
||||
|
||||
#: lib/Lutim/Controller/Authent.pm:27
|
||||
msgid "You have been successfully logged in."
|
||||
msgstr "Du har loggats in."
|
||||
|
||||
#: lib/Lutim/Controller/Authent.pm:66 themes/default/templates/logout.html.ep:3
|
||||
msgid "You have been successfully logged out."
|
||||
msgstr "Du har loggats ut."
|
||||
|
||||
#: themes/default/templates/gallery.html.ep:31
|
||||
msgid "Zoom in/out"
|
||||
msgstr "Zooma in eller ut"
|
||||
|
||||
#: themes/default/templates/about.html.ep:27
|
||||
msgid "and on"
|
||||
msgstr "och på"
|
||||
|
||||
#: themes/default/templates/about.html.ep:40
|
||||
msgid "arabic translation"
|
||||
msgstr "översättning till arabiska"
|
||||
|
||||
#: themes/default/templates/about.html.ep:27
|
||||
msgid "core developer"
|
||||
msgstr "huvudutvecklare"
|
||||
|
||||
#: lib/Lutim.pm:348 lib/Lutim/Command/cron/stats.pm:157 lib/Lutim/Command/cron/stats.pm:171 lib/Lutim/Command/cron/stats.pm:188 themes/default/templates/index.html.ep:3 themes/default/templates/myfiles.html.ep:3 themes/default/templates/partial/raw.js.ep:21 themes/default/templates/partial/raw.js.ep:4 themes/default/templates/raw.html.ep:6
|
||||
msgid "no time limit"
|
||||
msgstr "ingen tidsbegränsning"
|
||||
|
||||
#: themes/default/templates/about.html.ep:38
|
||||
msgid "occitan translation"
|
||||
msgstr "översättning till occitanska"
|
||||
|
||||
#: themes/default/templates/about.html.ep:27
|
||||
msgid "on"
|
||||
msgstr "på"
|
||||
|
||||
#: themes/default/templates/about.html.ep:39
|
||||
msgid "paste image to upload ability"
|
||||
msgstr "infoga en bild för att skicka den"
|
||||
|
||||
#: themes/default/templates/about.html.ep:41
|
||||
msgid "russian translation"
|
||||
msgstr "översättning till ryska"
|
||||
|
||||
#: themes/default/templates/about.html.ep:36
|
||||
msgid "spanish translation"
|
||||
msgstr "översättning till spanska"
|
||||
|
||||
#: themes/default/templates/about.html.ep:28
|
||||
msgid "webapp developer"
|
||||
msgstr "utvecklare av webbappen"
|
||||
|
||||
#: themes/default/templates/about.html.ep:24
|
||||
msgid "For more details, see the <a href=\"https://framagit.org/fiat-tux/hat-softwares/lutim\">homepage of the project</a>."
|
||||
msgstr ""
|
||||
"Se <a href=\"https://framagit.org/fiat-tux/hat-softwares/lutim\">projektets "
|
||||
"hemsida</a> för mer information."
|
||||
|
||||
#: themes/default/templates/index.html.ep:177 themes/default/templates/index.html.ep:221
|
||||
msgid "No watermark"
|
||||
msgstr "Ingen vattenstämpling"
|
||||
|
||||
#: themes/default/templates/index.html.ep:171 themes/default/templates/index.html.ep:215
|
||||
msgid "Tiling watermark"
|
||||
msgstr "Flera vatenstämplingar"
|
||||
|
||||
#: themes/default/templates/index.html.ep:174 themes/default/templates/index.html.ep:218
|
||||
msgid "Single watermark"
|
||||
msgstr "En vattenstämpel"
|
||||
1022
themes/default/public/css/bootstrap.css
vendored
1022
themes/default/public/css/bootstrap.css
vendored
File diff suppressed because it is too large
Load Diff
14
themes/default/public/css/bootstrap.min.css
vendored
14
themes/default/public/css/bootstrap.min.css
vendored
File diff suppressed because one or more lines are too long
26
themes/default/public/css/common.min.css
vendored
Normal file
26
themes/default/public/css/common.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
482
themes/default/public/css/default-skin/default-skin.css
Normal file
482
themes/default/public/css/default-skin/default-skin.css
Normal file
@@ -0,0 +1,482 @@
|
||||
/*! PhotoSwipe Default UI CSS by Dmitry Semenov | photoswipe.com | MIT license */
|
||||
/*
|
||||
|
||||
Contents:
|
||||
|
||||
1. Buttons
|
||||
2. Share modal and links
|
||||
3. Index indicator ("1 of X" counter)
|
||||
4. Caption
|
||||
5. Loading indicator
|
||||
6. Additional styles (root element, top bar, idle state, hidden state, etc.)
|
||||
|
||||
*/
|
||||
/*
|
||||
|
||||
1. Buttons
|
||||
|
||||
*/
|
||||
/* <button> css reset */
|
||||
.pswp__button {
|
||||
width: 44px;
|
||||
height: 44px;
|
||||
position: relative;
|
||||
background: none;
|
||||
cursor: pointer;
|
||||
overflow: visible;
|
||||
-webkit-appearance: none;
|
||||
display: block;
|
||||
border: 0;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
float: right;
|
||||
opacity: 0.75;
|
||||
-webkit-transition: opacity 0.2s;
|
||||
transition: opacity 0.2s;
|
||||
-webkit-box-shadow: none;
|
||||
box-shadow: none; }
|
||||
.pswp__button:focus, .pswp__button:hover {
|
||||
opacity: 1; }
|
||||
.pswp__button:active {
|
||||
outline: none;
|
||||
opacity: 0.9; }
|
||||
.pswp__button::-moz-focus-inner {
|
||||
padding: 0;
|
||||
border: 0; }
|
||||
|
||||
/* pswp__ui--over-close class it added when mouse is over element that should close gallery */
|
||||
.pswp__ui--over-close .pswp__button--close {
|
||||
opacity: 1; }
|
||||
|
||||
.pswp__button,
|
||||
.pswp__button--arrow--left:before,
|
||||
.pswp__button--arrow--right:before {
|
||||
background: url(default-skin/default-skin.png) 0 0 no-repeat;
|
||||
background-size: 264px 88px;
|
||||
width: 44px;
|
||||
height: 44px; }
|
||||
|
||||
@media (-webkit-min-device-pixel-ratio: 1.1), (-webkit-min-device-pixel-ratio: 1.09375), (min-resolution: 105dpi), (min-resolution: 1.1dppx) {
|
||||
/* Serve SVG sprite if browser supports SVG and resolution is more than 105dpi */
|
||||
.pswp--svg .pswp__button,
|
||||
.pswp--svg .pswp__button--arrow--left:before,
|
||||
.pswp--svg .pswp__button--arrow--right:before {
|
||||
background-image: url(default-skin.svg); }
|
||||
.pswp--svg .pswp__button--arrow--left,
|
||||
.pswp--svg .pswp__button--arrow--right {
|
||||
background: none; } }
|
||||
|
||||
.pswp__button--close {
|
||||
background-position: 0 -44px; }
|
||||
|
||||
.pswp__button--share {
|
||||
background-position: -44px -44px; }
|
||||
|
||||
.pswp__button--fs {
|
||||
display: none; }
|
||||
|
||||
.pswp--supports-fs .pswp__button--fs {
|
||||
display: block; }
|
||||
|
||||
.pswp--fs .pswp__button--fs {
|
||||
background-position: -44px 0; }
|
||||
|
||||
.pswp__button--zoom {
|
||||
display: none;
|
||||
background-position: -88px 0; }
|
||||
|
||||
.pswp--zoom-allowed .pswp__button--zoom {
|
||||
display: block; }
|
||||
|
||||
.pswp--zoomed-in .pswp__button--zoom {
|
||||
background-position: -132px 0; }
|
||||
|
||||
/* no arrows on touch screens */
|
||||
.pswp--touch .pswp__button--arrow--left,
|
||||
.pswp--touch .pswp__button--arrow--right {
|
||||
visibility: hidden; }
|
||||
|
||||
/*
|
||||
Arrow buttons hit area
|
||||
(icon is added to :before pseudo-element)
|
||||
*/
|
||||
.pswp__button--arrow--left,
|
||||
.pswp__button--arrow--right {
|
||||
background: none;
|
||||
top: 50%;
|
||||
margin-top: -50px;
|
||||
width: 70px;
|
||||
height: 100px;
|
||||
position: absolute; }
|
||||
|
||||
.pswp__button--arrow--left {
|
||||
left: 0; }
|
||||
|
||||
.pswp__button--arrow--right {
|
||||
right: 0; }
|
||||
|
||||
.pswp__button--arrow--left:before,
|
||||
.pswp__button--arrow--right:before {
|
||||
content: '';
|
||||
top: 35px;
|
||||
background-color: rgba(0, 0, 0, 0.3);
|
||||
height: 30px;
|
||||
width: 32px;
|
||||
position: absolute; }
|
||||
|
||||
.pswp__button--arrow--left:before {
|
||||
left: 6px;
|
||||
background-position: -138px -44px; }
|
||||
|
||||
.pswp__button--arrow--right:before {
|
||||
right: 6px;
|
||||
background-position: -94px -44px; }
|
||||
|
||||
/*
|
||||
|
||||
2. Share modal/popup and links
|
||||
|
||||
*/
|
||||
.pswp__counter,
|
||||
.pswp__share-modal {
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
-ms-user-select: none;
|
||||
user-select: none; }
|
||||
|
||||
.pswp__share-modal {
|
||||
display: block;
|
||||
background: rgba(0, 0, 0, 0.5);
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
top: 0;
|
||||
left: 0;
|
||||
padding: 10px;
|
||||
position: absolute;
|
||||
z-index: 1600;
|
||||
opacity: 0;
|
||||
-webkit-transition: opacity 0.25s ease-out;
|
||||
transition: opacity 0.25s ease-out;
|
||||
-webkit-backface-visibility: hidden;
|
||||
will-change: opacity; }
|
||||
|
||||
.pswp__share-modal--hidden {
|
||||
display: none; }
|
||||
|
||||
.pswp__share-tooltip {
|
||||
z-index: 1620;
|
||||
position: absolute;
|
||||
background: #FFF;
|
||||
top: 56px;
|
||||
border-radius: 2px;
|
||||
display: block;
|
||||
width: auto;
|
||||
right: 44px;
|
||||
-webkit-box-shadow: 0 2px 5px rgba(0, 0, 0, 0.25);
|
||||
box-shadow: 0 2px 5px rgba(0, 0, 0, 0.25);
|
||||
-webkit-transform: translateY(6px);
|
||||
-ms-transform: translateY(6px);
|
||||
transform: translateY(6px);
|
||||
-webkit-transition: -webkit-transform 0.25s;
|
||||
transition: transform 0.25s;
|
||||
-webkit-backface-visibility: hidden;
|
||||
will-change: transform; }
|
||||
.pswp__share-tooltip a {
|
||||
display: block;
|
||||
padding: 8px 12px;
|
||||
color: #000;
|
||||
text-decoration: none;
|
||||
font-size: 14px;
|
||||
line-height: 18px; }
|
||||
.pswp__share-tooltip a:hover {
|
||||
text-decoration: none;
|
||||
color: #000; }
|
||||
.pswp__share-tooltip a:first-child {
|
||||
/* round corners on the first/last list item */
|
||||
border-radius: 2px 2px 0 0; }
|
||||
.pswp__share-tooltip a:last-child {
|
||||
border-radius: 0 0 2px 2px; }
|
||||
|
||||
.pswp__share-modal--fade-in {
|
||||
opacity: 1; }
|
||||
.pswp__share-modal--fade-in .pswp__share-tooltip {
|
||||
-webkit-transform: translateY(0);
|
||||
-ms-transform: translateY(0);
|
||||
transform: translateY(0); }
|
||||
|
||||
/* increase size of share links on touch devices */
|
||||
.pswp--touch .pswp__share-tooltip a {
|
||||
padding: 16px 12px; }
|
||||
|
||||
a.pswp__share--facebook:before {
|
||||
content: '';
|
||||
display: block;
|
||||
width: 0;
|
||||
height: 0;
|
||||
position: absolute;
|
||||
top: -12px;
|
||||
right: 15px;
|
||||
border: 6px solid transparent;
|
||||
border-bottom-color: #FFF;
|
||||
-webkit-pointer-events: none;
|
||||
-moz-pointer-events: none;
|
||||
pointer-events: none; }
|
||||
|
||||
a.pswp__share--facebook:hover {
|
||||
background: #3E5C9A;
|
||||
color: #FFF; }
|
||||
a.pswp__share--facebook:hover:before {
|
||||
border-bottom-color: #3E5C9A; }
|
||||
|
||||
a.pswp__share--twitter:hover {
|
||||
background: #55ACEE;
|
||||
color: #FFF; }
|
||||
|
||||
a.pswp__share--pinterest:hover {
|
||||
background: #CCC;
|
||||
color: #CE272D; }
|
||||
|
||||
a.pswp__share--download:hover {
|
||||
background: #DDD; }
|
||||
|
||||
/*
|
||||
|
||||
3. Index indicator ("1 of X" counter)
|
||||
|
||||
*/
|
||||
.pswp__counter {
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 0;
|
||||
height: 44px;
|
||||
font-size: 13px;
|
||||
line-height: 44px;
|
||||
color: #FFF;
|
||||
opacity: 0.75;
|
||||
padding: 0 10px; }
|
||||
|
||||
/*
|
||||
|
||||
4. Caption
|
||||
|
||||
*/
|
||||
.pswp__caption {
|
||||
position: absolute;
|
||||
left: 0;
|
||||
bottom: 0;
|
||||
width: 100%;
|
||||
min-height: 44px; }
|
||||
.pswp__caption small {
|
||||
font-size: 11px;
|
||||
color: #BBB; }
|
||||
|
||||
.pswp__caption__center {
|
||||
text-align: left;
|
||||
max-width: 420px;
|
||||
margin: 0 auto;
|
||||
font-size: 13px;
|
||||
padding: 10px;
|
||||
line-height: 20px;
|
||||
color: #CCC; }
|
||||
|
||||
.pswp__caption--empty {
|
||||
display: none; }
|
||||
|
||||
/* Fake caption element, used to calculate height of next/prev image */
|
||||
.pswp__caption--fake {
|
||||
visibility: hidden; }
|
||||
|
||||
/*
|
||||
|
||||
5. Loading indicator (preloader)
|
||||
|
||||
You can play with it here - http://codepen.io/dimsemenov/pen/yyBWoR
|
||||
|
||||
*/
|
||||
.pswp__preloader {
|
||||
width: 44px;
|
||||
height: 44px;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 50%;
|
||||
margin-left: -22px;
|
||||
opacity: 0;
|
||||
-webkit-transition: opacity 0.25s ease-out;
|
||||
transition: opacity 0.25s ease-out;
|
||||
will-change: opacity;
|
||||
direction: ltr; }
|
||||
|
||||
.pswp__preloader__icn {
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
margin: 12px; }
|
||||
|
||||
.pswp__preloader--active {
|
||||
opacity: 1; }
|
||||
.pswp__preloader--active .pswp__preloader__icn {
|
||||
/* We use .gif in browsers that don't support CSS animation */
|
||||
background: url(preloader.gif) 0 0 no-repeat; }
|
||||
|
||||
.pswp--css_animation .pswp__preloader--active {
|
||||
opacity: 1; }
|
||||
.pswp--css_animation .pswp__preloader--active .pswp__preloader__icn {
|
||||
-webkit-animation: clockwise 500ms linear infinite;
|
||||
animation: clockwise 500ms linear infinite; }
|
||||
.pswp--css_animation .pswp__preloader--active .pswp__preloader__donut {
|
||||
-webkit-animation: donut-rotate 1000ms cubic-bezier(0.4, 0, 0.22, 1) infinite;
|
||||
animation: donut-rotate 1000ms cubic-bezier(0.4, 0, 0.22, 1) infinite; }
|
||||
|
||||
.pswp--css_animation .pswp__preloader__icn {
|
||||
background: none;
|
||||
opacity: 0.75;
|
||||
width: 14px;
|
||||
height: 14px;
|
||||
position: absolute;
|
||||
left: 15px;
|
||||
top: 15px;
|
||||
margin: 0; }
|
||||
|
||||
.pswp--css_animation .pswp__preloader__cut {
|
||||
/*
|
||||
The idea of animating inner circle is based on Polymer ("material") loading indicator
|
||||
by Keanu Lee https://blog.keanulee.com/2014/10/20/the-tale-of-three-spinners.html
|
||||
*/
|
||||
position: relative;
|
||||
width: 7px;
|
||||
height: 14px;
|
||||
overflow: hidden; }
|
||||
|
||||
.pswp--css_animation .pswp__preloader__donut {
|
||||
-webkit-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
width: 14px;
|
||||
height: 14px;
|
||||
border: 2px solid #FFF;
|
||||
border-radius: 50%;
|
||||
border-left-color: transparent;
|
||||
border-bottom-color: transparent;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
background: none;
|
||||
margin: 0; }
|
||||
|
||||
@media screen and (max-width: 1024px) {
|
||||
.pswp__preloader {
|
||||
position: relative;
|
||||
left: auto;
|
||||
top: auto;
|
||||
margin: 0;
|
||||
float: right; } }
|
||||
|
||||
@-webkit-keyframes clockwise {
|
||||
0% {
|
||||
-webkit-transform: rotate(0deg);
|
||||
transform: rotate(0deg); }
|
||||
100% {
|
||||
-webkit-transform: rotate(360deg);
|
||||
transform: rotate(360deg); } }
|
||||
|
||||
@keyframes clockwise {
|
||||
0% {
|
||||
-webkit-transform: rotate(0deg);
|
||||
transform: rotate(0deg); }
|
||||
100% {
|
||||
-webkit-transform: rotate(360deg);
|
||||
transform: rotate(360deg); } }
|
||||
|
||||
@-webkit-keyframes donut-rotate {
|
||||
0% {
|
||||
-webkit-transform: rotate(0);
|
||||
transform: rotate(0); }
|
||||
50% {
|
||||
-webkit-transform: rotate(-140deg);
|
||||
transform: rotate(-140deg); }
|
||||
100% {
|
||||
-webkit-transform: rotate(0);
|
||||
transform: rotate(0); } }
|
||||
|
||||
@keyframes donut-rotate {
|
||||
0% {
|
||||
-webkit-transform: rotate(0);
|
||||
transform: rotate(0); }
|
||||
50% {
|
||||
-webkit-transform: rotate(-140deg);
|
||||
transform: rotate(-140deg); }
|
||||
100% {
|
||||
-webkit-transform: rotate(0);
|
||||
transform: rotate(0); } }
|
||||
|
||||
/*
|
||||
|
||||
6. Additional styles
|
||||
|
||||
*/
|
||||
/* root element of UI */
|
||||
.pswp__ui {
|
||||
-webkit-font-smoothing: auto;
|
||||
visibility: visible;
|
||||
opacity: 1;
|
||||
z-index: 1550; }
|
||||
|
||||
/* top black bar with buttons and "1 of X" indicator */
|
||||
.pswp__top-bar {
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 0;
|
||||
height: 44px;
|
||||
width: 100%; }
|
||||
|
||||
.pswp__caption,
|
||||
.pswp__top-bar,
|
||||
.pswp--has_mouse .pswp__button--arrow--left,
|
||||
.pswp--has_mouse .pswp__button--arrow--right {
|
||||
-webkit-backface-visibility: hidden;
|
||||
will-change: opacity;
|
||||
-webkit-transition: opacity 333ms cubic-bezier(0.4, 0, 0.22, 1);
|
||||
transition: opacity 333ms cubic-bezier(0.4, 0, 0.22, 1); }
|
||||
|
||||
/* pswp--has_mouse class is added only when two subsequent mousemove events occur */
|
||||
.pswp--has_mouse .pswp__button--arrow--left,
|
||||
.pswp--has_mouse .pswp__button--arrow--right {
|
||||
visibility: visible; }
|
||||
|
||||
.pswp__top-bar,
|
||||
.pswp__caption {
|
||||
background-color: rgba(0, 0, 0, 0.5); }
|
||||
|
||||
/* pswp__ui--fit class is added when main image "fits" between top bar and bottom bar (caption) */
|
||||
.pswp__ui--fit .pswp__top-bar,
|
||||
.pswp__ui--fit .pswp__caption {
|
||||
background-color: rgba(0, 0, 0, 0.3); }
|
||||
|
||||
/* pswp__ui--idle class is added when mouse isn't moving for several seconds (JS option timeToIdle) */
|
||||
.pswp__ui--idle .pswp__top-bar {
|
||||
opacity: 0; }
|
||||
|
||||
.pswp__ui--idle .pswp__button--arrow--left,
|
||||
.pswp__ui--idle .pswp__button--arrow--right {
|
||||
opacity: 0; }
|
||||
|
||||
/*
|
||||
pswp__ui--hidden class is added when controls are hidden
|
||||
e.g. when user taps to toggle visibility of controls
|
||||
*/
|
||||
.pswp__ui--hidden .pswp__top-bar,
|
||||
.pswp__ui--hidden .pswp__caption,
|
||||
.pswp__ui--hidden .pswp__button--arrow--left,
|
||||
.pswp__ui--hidden .pswp__button--arrow--right {
|
||||
/* Force paint & create composition layer for controls. */
|
||||
opacity: 0.001; }
|
||||
|
||||
/* pswp__ui--one-slide class is added when there is just one item in gallery */
|
||||
.pswp__ui--one-slide .pswp__button--arrow--left,
|
||||
.pswp__ui--one-slide .pswp__button--arrow--right,
|
||||
.pswp__ui--one-slide .pswp__counter {
|
||||
display: none; }
|
||||
|
||||
.pswp__element--disabled {
|
||||
display: none !important; }
|
||||
|
||||
.pswp--minimal--dark .pswp__top-bar {
|
||||
background: none; }
|
||||
BIN
themes/default/public/css/default-skin/default-skin.png
Normal file
BIN
themes/default/public/css/default-skin/default-skin.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 547 B |
1
themes/default/public/css/default-skin/default-skin.svg
Normal file
1
themes/default/public/css/default-skin/default-skin.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg width="264" height="88" viewBox="0 0 264 88" xmlns="http://www.w3.org/2000/svg"><title>default-skin 2</title><g fill="none" fill-rule="evenodd"><g><path d="M67.002 59.5v3.768c-6.307.84-9.184 5.75-10.002 9.732 2.22-2.83 5.564-5.098 10.002-5.098V71.5L73 65.585 67.002 59.5z" id="Shape" fill="#fff"/><g fill="#fff"><path d="M13 29v-5h2v3h3v2h-5zM13 15h5v2h-3v3h-2v-5zM31 15v5h-2v-3h-3v-2h5zM31 29h-5v-2h3v-3h2v5z" id="Shape"/></g><g fill="#fff"><path d="M62 24v5h-2v-3h-3v-2h5zM62 20h-5v-2h3v-3h2v5zM70 20v-5h2v3h3v2h-5zM70 24h5v2h-3v3h-2v-5z"/></g><path d="M20.586 66l-5.656-5.656 1.414-1.414L22 64.586l5.656-5.656 1.414 1.414L23.414 66l5.656 5.656-1.414 1.414L22 67.414l-5.656 5.656-1.414-1.414L20.586 66z" fill="#fff"/><path d="M111.785 65.03L110 63.5l3-3.5h-10v-2h10l-3-3.5 1.785-1.468L117 59l-5.215 6.03z" fill="#fff"/><path d="M152.215 65.03L154 63.5l-3-3.5h10v-2h-10l3-3.5-1.785-1.468L147 59l5.215 6.03z" fill="#fff"/><g><path id="Rectangle-11" fill="#fff" d="M160.957 28.543l-3.25-3.25-1.413 1.414 3.25 3.25z"/><path d="M152.5 27c3.038 0 5.5-2.462 5.5-5.5s-2.462-5.5-5.5-5.5-5.5 2.462-5.5 5.5 2.462 5.5 5.5 5.5z" id="Oval-1" stroke="#fff" stroke-width="1.5"/><path fill="#fff" d="M150 21h5v1h-5z"/></g><g><path d="M116.957 28.543l-1.414 1.414-3.25-3.25 1.414-1.414 3.25 3.25z" fill="#fff"/><path d="M108.5 27c3.038 0 5.5-2.462 5.5-5.5s-2.462-5.5-5.5-5.5-5.5 2.462-5.5 5.5 2.462 5.5 5.5 5.5z" stroke="#fff" stroke-width="1.5"/><path fill="#fff" d="M106 21h5v1h-5z"/><path fill="#fff" d="M109.043 19.008l-.085 5-1-.017.085-5z"/></g></g></g></svg>
|
||||
|
After Width: | Height: | Size: 1.5 KiB |
BIN
themes/default/public/css/default-skin/preloader.gif
Normal file
BIN
themes/default/public/css/default-skin/preloader.gif
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 866 B |
6
themes/default/public/css/fontello-codes.css
vendored
6
themes/default/public/css/fontello-codes.css
vendored
@@ -9,7 +9,9 @@
|
||||
.icon-twitter:before { content: '\e807'; } /* '' */
|
||||
.icon-clipboard:before { content: '\e808'; } /* '' */
|
||||
.icon-spinner:before { content: '\e809'; } /* '' */
|
||||
.icon-flattr:before { content: '\e80a'; } /* '' */
|
||||
.icon-shuffle:before { content: '\e80a'; } /* '' */
|
||||
.icon-cancel:before { content: '\e80b'; } /* '' */
|
||||
.icon-picture:before { content: '\e80c'; } /* '' */
|
||||
.icon-file-archive:before { content: '\e80d'; } /* '' */
|
||||
.icon-file-archive:before { content: '\e80d'; } /* '' */
|
||||
.icon-language:before { content: '\e80e'; } /* '' */
|
||||
.icon-edit:before { content: '\e80f'; } /* '' */
|
||||
18
themes/default/public/css/fontello-embedded.css
vendored
18
themes/default/public/css/fontello-embedded.css
vendored
File diff suppressed because one or more lines are too long
@@ -9,7 +9,9 @@
|
||||
.icon-twitter { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
|
||||
.icon-clipboard { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
|
||||
.icon-spinner { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
|
||||
.icon-flattr { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
|
||||
.icon-shuffle { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
|
||||
.icon-cancel { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
|
||||
.icon-picture { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
|
||||
.icon-file-archive { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
|
||||
.icon-file-archive { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
|
||||
.icon-language { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
|
||||
.icon-edit { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
|
||||
6
themes/default/public/css/fontello-ie7.css
vendored
6
themes/default/public/css/fontello-ie7.css
vendored
@@ -20,7 +20,9 @@
|
||||
.icon-twitter { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
|
||||
.icon-clipboard { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
|
||||
.icon-spinner { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
|
||||
.icon-flattr { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
|
||||
.icon-shuffle { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
|
||||
.icon-cancel { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
|
||||
.icon-picture { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
|
||||
.icon-file-archive { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
|
||||
.icon-file-archive { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
|
||||
.icon-language { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
|
||||
.icon-edit { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
|
||||
20
themes/default/public/css/fontello.css
vendored
20
themes/default/public/css/fontello.css
vendored
@@ -1,11 +1,11 @@
|
||||
@font-face {
|
||||
font-family: 'fontello';
|
||||
src: url('../font/fontello.eot?79499210');
|
||||
src: url('../font/fontello.eot?79499210#iefix') format('embedded-opentype'),
|
||||
url('../font/fontello.woff2?79499210') format('woff2'),
|
||||
url('../font/fontello.woff?79499210') format('woff'),
|
||||
url('../font/fontello.ttf?79499210') format('truetype'),
|
||||
url('../font/fontello.svg?79499210#fontello') format('svg');
|
||||
src: url('../font/fontello.eot?74275093');
|
||||
src: url('../font/fontello.eot?74275093#iefix') format('embedded-opentype'),
|
||||
url('../font/fontello.woff2?74275093') format('woff2'),
|
||||
url('../font/fontello.woff?74275093') format('woff'),
|
||||
url('../font/fontello.ttf?74275093') format('truetype'),
|
||||
url('../font/fontello.svg?74275093#fontello') format('svg');
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
@@ -15,7 +15,7 @@
|
||||
@media screen and (-webkit-min-device-pixel-ratio:0) {
|
||||
@font-face {
|
||||
font-family: 'fontello';
|
||||
src: url('../font/fontello.svg?79499210#fontello') format('svg');
|
||||
src: url('../font/fontello.svg?74275093#fontello') format('svg');
|
||||
}
|
||||
}
|
||||
*/
|
||||
@@ -65,7 +65,9 @@
|
||||
.icon-twitter:before { content: '\e807'; } /* '' */
|
||||
.icon-clipboard:before { content: '\e808'; } /* '' */
|
||||
.icon-spinner:before { content: '\e809'; } /* '' */
|
||||
.icon-flattr:before { content: '\e80a'; } /* '' */
|
||||
.icon-shuffle:before { content: '\e80a'; } /* '' */
|
||||
.icon-cancel:before { content: '\e80b'; } /* '' */
|
||||
.icon-picture:before { content: '\e80c'; } /* '' */
|
||||
.icon-file-archive:before { content: '\e80d'; } /* '' */
|
||||
.icon-file-archive:before { content: '\e80d'; } /* '' */
|
||||
.icon-language:before { content: '\e80e'; } /* '' */
|
||||
.icon-edit:before { content: '\e80f'; } /* '' */
|
||||
4
themes/default/public/css/gallery.min.css
vendored
Normal file
4
themes/default/public/css/gallery.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
@@ -2,5 +2,6 @@
|
||||
font-family: 'Henny_Penny';
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
src: local('Henny Penny'), local('HennyPenny-Regular'), url(../../font/hennypenny.ttf) format('truetype');
|
||||
src: local('Henny Penny'), local('HennyPenny-Regular'), url(../font/hennypenny.woff2) format('woff2');
|
||||
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
|
||||
}
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
/* vim:set sw=4 ts=4 sts=4 ft=css expandtab: */
|
||||
@media (max-width: 767px) {
|
||||
body {
|
||||
padding-top: 5px;
|
||||
@@ -7,7 +8,6 @@
|
||||
|
||||
@media (min-width: 768px) {
|
||||
body {
|
||||
padding-top: 40px;
|
||||
padding-bottom: 40px;
|
||||
}
|
||||
}
|
||||
@@ -17,6 +17,10 @@
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
nav .container {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.jsonly {
|
||||
display: none;
|
||||
}
|
||||
@@ -83,3 +87,50 @@ label.always-encrypt {
|
||||
width: 0;
|
||||
display: hidden;
|
||||
}
|
||||
.gallery figure {
|
||||
margin-right: auto;
|
||||
margin-left: auto;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
@media (min-width: 1200px) {
|
||||
.gallery { column-count: 4 }
|
||||
}
|
||||
@media (min-width: 991px) and (max-width: 1199px) {
|
||||
.gallery { column-count: 3 }
|
||||
}
|
||||
@media (min-width: 676px) and (max-width: 990px) {
|
||||
.gallery { column-count: 2 }
|
||||
}
|
||||
@media (max-width: 675px) {
|
||||
.gallery { column-count: 1 }
|
||||
}
|
||||
.border-zero {
|
||||
border: 0;
|
||||
}
|
||||
.copy-node {
|
||||
width: 1px;
|
||||
height: 1px;
|
||||
position: 'fixed';
|
||||
top: 5px;
|
||||
}
|
||||
.width-zero {
|
||||
width: 0%;
|
||||
}
|
||||
.pdg-left-10 {
|
||||
padding-left: 10px;
|
||||
}
|
||||
.spin {
|
||||
font-size: 200%;
|
||||
display: none;
|
||||
}
|
||||
#myfiles td.ellips {
|
||||
max-width: 300px;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
h1.ellips {
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
|
||||
@@ -1,2 +0,0 @@
|
||||
.morris-hover{position:absolute;z-index:1000;}.morris-hover.morris-default-style{border-radius:10px;padding:6px;color:#666;background:rgba(255, 255, 255, 0.8);border:solid 2px rgba(230, 230, 230, 0.8);font-family:sans-serif;font-size:12px;text-align:center;}.morris-hover.morris-default-style .morris-hover-row-label{font-weight:bold;margin:0.25em 0;}
|
||||
.morris-hover.morris-default-style .morris-hover-point{white-space:nowrap;margin:0.1em 0;}
|
||||
2
themes/default/public/css/morris-0.5.1.min.css
vendored
Normal file
2
themes/default/public/css/morris-0.5.1.min.css
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
.morris-hover{position:absolute;z-index:1000}.morris-hover.morris-default-style{border-radius:10px;padding:6px;color:#666;background:rgba(255,255,255,0.8);border:solid 2px rgba(230,230,230,0.8);font-family:sans-serif;font-size:12px;text-align:center}.morris-hover.morris-default-style .morris-hover-row-label{font-weight:bold;margin:0.25em 0}
|
||||
.morris-hover.morris-default-style .morris-hover-point{white-space:nowrap;margin:0.1em 0}
|
||||
1
themes/default/public/css/not_stats.min.css
vendored
Normal file
1
themes/default/public/css/not_stats.min.css
vendored
Normal file
@@ -0,0 +1 @@
|
||||
@-moz-keyframes spin{0%{-moz-transform:rotate(0deg);-o-transform:rotate(0deg);-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-moz-transform:rotate(359deg);-o-transform:rotate(359deg);-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@-webkit-keyframes spin{0%{-moz-transform:rotate(0deg);-o-transform:rotate(0deg);-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-moz-transform:rotate(359deg);-o-transform:rotate(359deg);-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@-o-keyframes spin{0%{-moz-transform:rotate(0deg);-o-transform:rotate(0deg);-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-moz-transform:rotate(359deg);-o-transform:rotate(359deg);-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@-ms-keyframes spin{0%{-moz-transform:rotate(0deg);-o-transform:rotate(0deg);-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-moz-transform:rotate(359deg);-o-transform:rotate(359deg);-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes spin{0%{-moz-transform:rotate(0deg);-o-transform:rotate(0deg);-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-moz-transform:rotate(359deg);-o-transform:rotate(359deg);-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.animate-spin{-moz-animation:spin 2s infinite linear;-o-animation:spin 2s infinite linear;-webkit-animation:spin 2s infinite linear;animation:spin 2s infinite linear;display:inline-block}.uploader{border:2px dotted #a5a5c7;width:100%;color:#92aab0;text-align:center;vertical-align:middle;padding:30px 0;margin-bottom:10px;font-size:200%;cursor:default;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.uploader div.or{font-size:50%;font-weight:700;color:silver;padding:10px}@media (max-width:768px){.uploader div.browser label{max-width:95%}}@media (min-width:768px){.uploader div.browser label{width:300px}}.uploader div.browser label{background-color:#5a7bc2;color:#fff;padding:6px 0;font-size:40%;font-weight:700;cursor:pointer;border-radius:2px;position:relative;overflow:hidden;display:block;margin:20px auto 0;box-shadow:2px 2px 2px #888}.uploader div.browser span{cursor:pointer}.uploader div.browser input{position:absolute;top:0;right:0;margin:0;border:solid transparent;border-width:0 0 100px 200px;opacity:0;filter:alpha(opacity= 0);-o-transform:translate(250px,-50px) scale(1);-moz-transform:translate(-300px,0) scale(4);direction:ltr;cursor:pointer}.uploader div.browser label:hover{background-color:#427fed}@font-face{font-family:'markdown';src:url(../../font/markdown.eot?-6fnbp5);src:url(../../font/markdown.eot?#iefix-6fnbp5) format('embedded-opentype'),url(../../font/markdown.woff?-6fnbp5) format('woff'),url(../../font/markdown.ttf?-6fnbp5) format('truetype'),url(../../font/markdown.svg?-6fnbp5#markdown) format('svg');font-weight:400;font-style:normal}[class*=" markdown-"],[class^=markdown-]{font-family:'markdown';speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.markdown-mark:before{content:"\e600"}.markdown-mark-solid:before{content:"\e601"}
|
||||
179
themes/default/public/css/photoswipe.css
Normal file
179
themes/default/public/css/photoswipe.css
Normal file
@@ -0,0 +1,179 @@
|
||||
/*! PhotoSwipe main CSS by Dmitry Semenov | photoswipe.com | MIT license */
|
||||
/*
|
||||
Styles for basic PhotoSwipe functionality (sliding area, open/close transitions)
|
||||
*/
|
||||
/* pswp = photoswipe */
|
||||
.pswp {
|
||||
display: none;
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
left: 0;
|
||||
top: 0;
|
||||
overflow: hidden;
|
||||
-ms-touch-action: none;
|
||||
touch-action: none;
|
||||
z-index: 1500;
|
||||
-webkit-text-size-adjust: 100%;
|
||||
/* create separate layer, to avoid paint on window.onscroll in webkit/blink */
|
||||
-webkit-backface-visibility: hidden;
|
||||
outline: none; }
|
||||
.pswp * {
|
||||
-webkit-box-sizing: border-box;
|
||||
box-sizing: border-box; }
|
||||
.pswp img {
|
||||
max-width: none; }
|
||||
|
||||
/* style is added when JS option showHideOpacity is set to true */
|
||||
.pswp--animate_opacity {
|
||||
/* 0.001, because opacity:0 doesn't trigger Paint action, which causes lag at start of transition */
|
||||
opacity: 0.001;
|
||||
will-change: opacity;
|
||||
/* for open/close transition */
|
||||
-webkit-transition: opacity 333ms cubic-bezier(0.4, 0, 0.22, 1);
|
||||
transition: opacity 333ms cubic-bezier(0.4, 0, 0.22, 1); }
|
||||
|
||||
.pswp--open {
|
||||
display: block; }
|
||||
|
||||
.pswp--zoom-allowed .pswp__img {
|
||||
/* autoprefixer: off */
|
||||
cursor: -webkit-zoom-in;
|
||||
cursor: -moz-zoom-in;
|
||||
cursor: zoom-in; }
|
||||
|
||||
.pswp--zoomed-in .pswp__img {
|
||||
/* autoprefixer: off */
|
||||
cursor: -webkit-grab;
|
||||
cursor: -moz-grab;
|
||||
cursor: grab; }
|
||||
|
||||
.pswp--dragging .pswp__img {
|
||||
/* autoprefixer: off */
|
||||
cursor: -webkit-grabbing;
|
||||
cursor: -moz-grabbing;
|
||||
cursor: grabbing; }
|
||||
|
||||
/*
|
||||
Background is added as a separate element.
|
||||
As animating opacity is much faster than animating rgba() background-color.
|
||||
*/
|
||||
.pswp__bg {
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background: #000;
|
||||
opacity: 0;
|
||||
-webkit-transform: translateZ(0);
|
||||
transform: translateZ(0);
|
||||
-webkit-backface-visibility: hidden;
|
||||
will-change: opacity; }
|
||||
|
||||
.pswp__scroll-wrap {
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
overflow: hidden; }
|
||||
|
||||
.pswp__container,
|
||||
.pswp__zoom-wrap {
|
||||
-ms-touch-action: none;
|
||||
touch-action: none;
|
||||
position: absolute;
|
||||
left: 0;
|
||||
right: 0;
|
||||
top: 0;
|
||||
bottom: 0; }
|
||||
|
||||
/* Prevent selection and tap highlights */
|
||||
.pswp__container,
|
||||
.pswp__img {
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
-ms-user-select: none;
|
||||
user-select: none;
|
||||
-webkit-tap-highlight-color: transparent;
|
||||
-webkit-touch-callout: none; }
|
||||
|
||||
.pswp__zoom-wrap {
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
-webkit-transform-origin: left top;
|
||||
-ms-transform-origin: left top;
|
||||
transform-origin: left top;
|
||||
/* for open/close transition */
|
||||
-webkit-transition: -webkit-transform 333ms cubic-bezier(0.4, 0, 0.22, 1);
|
||||
transition: transform 333ms cubic-bezier(0.4, 0, 0.22, 1); }
|
||||
|
||||
.pswp__bg {
|
||||
will-change: opacity;
|
||||
/* for open/close transition */
|
||||
-webkit-transition: opacity 333ms cubic-bezier(0.4, 0, 0.22, 1);
|
||||
transition: opacity 333ms cubic-bezier(0.4, 0, 0.22, 1); }
|
||||
|
||||
.pswp--animated-in .pswp__bg,
|
||||
.pswp--animated-in .pswp__zoom-wrap {
|
||||
-webkit-transition: none;
|
||||
transition: none; }
|
||||
|
||||
.pswp__container,
|
||||
.pswp__zoom-wrap {
|
||||
-webkit-backface-visibility: hidden; }
|
||||
|
||||
.pswp__item {
|
||||
position: absolute;
|
||||
left: 0;
|
||||
right: 0;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
overflow: hidden; }
|
||||
|
||||
.pswp__img {
|
||||
position: absolute;
|
||||
width: auto;
|
||||
height: auto;
|
||||
top: 0;
|
||||
left: 0; }
|
||||
|
||||
/*
|
||||
stretched thumbnail or div placeholder element (see below)
|
||||
style is added to avoid flickering in webkit/blink when layers overlap
|
||||
*/
|
||||
.pswp__img--placeholder {
|
||||
-webkit-backface-visibility: hidden; }
|
||||
|
||||
/*
|
||||
div element that matches size of large image
|
||||
large image loads on top of it
|
||||
*/
|
||||
.pswp__img--placeholder--blank {
|
||||
background: #222; }
|
||||
|
||||
.pswp--ie .pswp__img {
|
||||
width: 100% !important;
|
||||
height: auto !important;
|
||||
left: 0;
|
||||
top: 0; }
|
||||
|
||||
/*
|
||||
Error message appears when image is not loaded
|
||||
(JS option errorMsg controls markup)
|
||||
*/
|
||||
.pswp__error-msg {
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 50%;
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
font-size: 14px;
|
||||
line-height: 16px;
|
||||
margin-top: -8px;
|
||||
color: #CCC; }
|
||||
|
||||
.pswp__error-msg a {
|
||||
color: #CCC;
|
||||
text-decoration: underline; }
|
||||
70
themes/default/public/css/toastify.css
Normal file
70
themes/default/public/css/toastify.css
Normal file
@@ -0,0 +1,70 @@
|
||||
/*!
|
||||
* Toastify js 1.4.0
|
||||
* https://github.com/apvarun/toastify-js
|
||||
* @license MIT licensed
|
||||
*
|
||||
* Copyright (C) 2018 Varun A P
|
||||
*/
|
||||
|
||||
.toastify {
|
||||
padding: 12px 20px;
|
||||
color: #ffffff;
|
||||
display: inline-block;
|
||||
box-shadow: 0 3px 6px -1px rgba(0, 0, 0, 0.12), 0 10px 36px -4px rgba(77, 96, 232, 0.3);
|
||||
background: -webkit-linear-gradient(315deg, #73a5ff, #5477f5);
|
||||
background: linear-gradient(135deg, #73a5ff, #5477f5);
|
||||
position: fixed;
|
||||
opacity: 0;
|
||||
transition: all 0.4s cubic-bezier(0.215, 0.61, 0.355, 1);
|
||||
border-radius: 2px;
|
||||
cursor: pointer;
|
||||
text-decoration: none;
|
||||
max-width: calc(50% - 20px);
|
||||
z-index: 2147483647;
|
||||
}
|
||||
|
||||
.toastify.on {
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
.toast-close {
|
||||
opacity: 0.4;
|
||||
padding: 0 5px;
|
||||
}
|
||||
|
||||
.toastify-right {
|
||||
right: 15px;
|
||||
}
|
||||
|
||||
.toastify-left {
|
||||
left: 15px;
|
||||
}
|
||||
|
||||
.toastify-top {
|
||||
top: -150px;
|
||||
}
|
||||
|
||||
.toastify-bottom {
|
||||
bottom: -150px;
|
||||
}
|
||||
|
||||
.toastify-rounded {
|
||||
border-radius: 25px;
|
||||
}
|
||||
|
||||
.toastify-avatar {
|
||||
width: 1.5em;
|
||||
height: 1.5em;
|
||||
margin: 0 5px;
|
||||
border-radius: 2px;
|
||||
}
|
||||
|
||||
@media only screen and (max-width: 360px) {
|
||||
.toastify-right, .toastify-left {
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
left: 0;
|
||||
right: 0;
|
||||
max-width: fit-content;
|
||||
}
|
||||
}
|
||||
11
themes/default/public/css/twitter.css
Normal file
11
themes/default/public/css/twitter.css
Normal file
@@ -0,0 +1,11 @@
|
||||
/* vim:set sw=4 ts=4 sts=4 ft=css expandtab: */
|
||||
html {
|
||||
max-height:100%;
|
||||
}
|
||||
.height-97 {
|
||||
height: 97%;
|
||||
}
|
||||
.freezeframe {
|
||||
max-width: 100%;
|
||||
max-height:100%;
|
||||
}
|
||||
1
themes/default/public/css/twitter.min.css
vendored
Normal file
1
themes/default/public/css/twitter.min.css
vendored
Normal file
@@ -0,0 +1 @@
|
||||
html{max-height:100%}.height-97{height:97%}.freezeframe{max-width:100%;max-height:100%}
|
||||
@@ -3,7 +3,7 @@ Font license info
|
||||
|
||||
## Font Awesome
|
||||
|
||||
Copyright (C) 2012 by Dave Gandy
|
||||
Copyright (C) 2016 by Dave Gandy
|
||||
|
||||
Author: Dave Gandy
|
||||
License: SIL ()
|
||||
@@ -55,3 +55,12 @@ Font license info
|
||||
Homepage: http://www.justbenicestudio.com/
|
||||
|
||||
|
||||
## Entypo
|
||||
|
||||
Copyright (C) 2012 by Daniel Bruce
|
||||
|
||||
Author: Daniel Bruce
|
||||
License: SIL (http://scripts.sil.org/OFL)
|
||||
Homepage: http://www.entypo.com
|
||||
|
||||
|
||||
|
||||
Binary file not shown.
@@ -1,38 +1,42 @@
|
||||
<?xml version="1.0" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg xmlns="http://www.w3.org/2000/svg">
|
||||
<metadata>Copyright (C) 2016 by original authors @ fontello.com</metadata>
|
||||
<metadata>Copyright (C) 2018 by original authors @ fontello.com</metadata>
|
||||
<defs>
|
||||
<font id="fontello" horiz-adv-x="1000" >
|
||||
<font-face font-family="fontello" font-weight="400" font-stretch="normal" units-per-em="1000" ascent="850" descent="-150" />
|
||||
<missing-glyph horiz-adv-x="1000" />
|
||||
<glyph glyph-name="ok" unicode="" d="M932 534q0-22-15-38l-404-404-76-76q-16-15-38-15t-38 15l-76 76-202 202q-15 16-15 38t15 38l76 76q16 16 38 16t38-16l164-165 366 367q16 16 38 16t38-16l76-76q15-16 15-38z" horiz-adv-x="1000" />
|
||||
<glyph glyph-name="ok" unicode="" d="M933 534q0-22-16-38l-404-404-76-76q-16-15-38-15t-38 15l-76 76-202 202q-15 16-15 38t15 38l76 76q16 16 38 16t38-16l164-165 366 367q16 16 38 16t38-16l76-76q16-15 16-38z" horiz-adv-x="1000" />
|
||||
|
||||
<glyph glyph-name="eye" unicode="" d="M929 314q-85 132-213 197 34-58 34-125 0-104-73-177t-177-73-177 73-73 177q0 67 34 125-128-65-213-197 75-114 187-182t242-68 242 68 187 182z m-402 215q0 11-8 19t-19 7q-70 0-120-50t-50-119q0-11 8-19t19-8 19 8 8 19q0 48 34 82t82 34q11 0 19 8t8 19z m473-215q0-19-11-38-78-129-210-206t-279-77-279 77-210 206q-11 19-11 38t11 39q78 128 210 205t279 78 279-78 210-205q11-20 11-39z" horiz-adv-x="1000" />
|
||||
<glyph glyph-name="eye" unicode="" d="M929 314q-85 132-213 197 34-58 34-125 0-103-73-177t-177-73-177 73-73 177q0 67 34 125-128-65-213-197 75-114 187-182t242-68 243 68 186 182z m-402 215q0 11-8 19t-19 7q-70 0-120-50t-50-119q0-11 8-19t19-8 19 8 8 19q0 48 34 82t82 34q11 0 19 8t8 19z m473-215q0-19-11-38-78-129-210-206t-279-77-279 77-210 206q-11 19-11 38t11 39q78 128 210 205t279 78 279-78 210-205q11-20 11-39z" horiz-adv-x="1000" />
|
||||
|
||||
<glyph glyph-name="download" unicode="" d="M714 100q0 15-10 25t-25 11-26-11-10-25 10-25 26-11 25 11 10 25z m143 0q0 15-10 25t-26 11-25-11-10-25 10-25 25-11 26 11 10 25z m72 125v-179q0-22-16-37t-38-16h-821q-23 0-38 16t-16 37v179q0 22 16 38t38 16h259l75-76q33-32 76-32t76 32l76 76h259q22 0 38-16t16-38z m-182 318q10-23-8-40l-250-250q-10-10-25-10t-25 10l-250 250q-17 17-8 40 10 21 33 21h143v250q0 15 11 25t25 11h143q14 0 25-11t10-25v-250h143q24 0 33-21z" horiz-adv-x="928.6" />
|
||||
<glyph glyph-name="download" unicode="" d="M714 100q0 15-10 25t-25 11-25-11-11-25 11-25 25-11 25 11 10 25z m143 0q0 15-10 25t-26 11-25-11-10-25 10-25 25-11 26 11 10 25z m72 125v-179q0-22-16-37t-38-16h-821q-23 0-38 16t-16 37v179q0 22 16 38t38 16h259l75-76q33-32 76-32t76 32l76 76h259q22 0 38-16t16-38z m-182 318q10-23-8-39l-250-250q-10-11-25-11t-25 11l-250 250q-17 16-8 39 10 21 33 21h143v250q0 15 11 25t25 11h143q14 0 25-11t10-25v-250h143q24 0 33-21z" horiz-adv-x="928.6" />
|
||||
|
||||
<glyph glyph-name="share" unicode="" d="M679 279q74 0 126-53t52-126-52-126-126-53-127 53-52 126q0 7 1 19l-201 100q-51-48-121-48-75 0-127 53t-52 126 52 126 127 53q70 0 121-48l201 100q-1 12-1 19 0 74 52 126t127 53 126-53 52-126-52-126-126-53q-71 0-122 48l-201-100q1-12 1-19t-1-19l201-100q51 48 122 48z" horiz-adv-x="857.1" />
|
||||
|
||||
<glyph glyph-name="trash" unicode="" d="M286 439v-321q0-8-5-13t-13-5h-36q-8 0-13 5t-5 13v321q0 8 5 13t13 5h36q8 0 13-5t5-13z m143 0v-321q0-8-5-13t-13-5h-36q-8 0-13 5t-5 13v321q0 8 5 13t13 5h36q8 0 13-5t5-13z m142 0v-321q0-8-5-13t-12-5h-36q-8 0-13 5t-5 13v321q0 8 5 13t13 5h36q7 0 12-5t5-13z m72-404v529h-500v-529q0-12 4-22t8-15 6-5h464q2 0 6 5t8 15 4 22z m-375 601h250l-27 65q-4 5-9 6h-177q-6-1-10-6z m518-18v-36q0-8-5-13t-13-5h-54v-529q0-46-26-80t-63-34h-464q-37 0-63 33t-27 79v531h-53q-8 0-13 5t-5 13v36q0 8 5 13t13 5h172l39 93q9 21 31 35t44 15h178q22 0 44-15t30-35l39-93h173q8 0 13-5t5-13z" horiz-adv-x="785.7" />
|
||||
<glyph glyph-name="trash" unicode="" d="M286 439v-321q0-8-5-13t-13-5h-36q-8 0-13 5t-5 13v321q0 8 5 13t13 5h36q8 0 13-5t5-13z m143 0v-321q0-8-5-13t-13-5h-36q-8 0-13 5t-5 13v321q0 8 5 13t13 5h36q8 0 13-5t5-13z m142 0v-321q0-8-5-13t-12-5h-36q-8 0-13 5t-5 13v321q0 8 5 13t13 5h36q7 0 12-5t5-13z m72-404v529h-500v-529q0-12 4-22t8-15 6-5h464q2 0 6 5t8 15 4 22z m-375 601h250l-27 65q-4 5-9 6h-177q-6-1-10-6z m518-18v-36q0-8-5-13t-13-5h-54v-529q0-46-26-80t-63-34h-464q-37 0-63 33t-27 79v531h-53q-8 0-13 5t-5 13v36q0 8 5 13t13 5h172l39 93q9 21 31 35t44 15h178q23 0 44-15t30-35l39-93h173q8 0 13-5t5-13z" horiz-adv-x="785.7" />
|
||||
|
||||
<glyph glyph-name="bitcoin" unicode="" d="M651 493q10-102-73-144 65-16 98-58t25-119q-4-40-18-70t-36-49-54-33-68-19-81-9v-142h-86v140q-45 0-68 1v-141h-86v142q-10 0-30 1t-31 0h-112l18 102h62q27 0 32 28v225h9q-4 0-9 0v160q-7 38-50 38h-62v92l119-1q35 0 54 1v141h86v-138q45 1 68 1v137h86v-141q44-4 78-13t63-25 46-43 20-64z m-120-304q0 20-8 35t-21 26-32 17-36 10-42 5-38 2-36 0-27-1v-189q5 0 21 0t27 0 29 1 33 2 32 5 31 8 26 11 22 17 14 22 5 29z m-39 265q0 19-7 33t-17 23-27 16-31 9-34 5-33 1-30 0-22-1v-171q3 0 20 0t26 0 27 1 31 3 29 6 27 10 21 15 15 22 5 28z" horiz-adv-x="714.3" />
|
||||
<glyph glyph-name="bitcoin" unicode="" d="M651 493q10-102-73-144 65-16 98-58t25-119q-4-40-18-70t-36-49-54-33-68-19-81-9v-142h-86v140q-45 0-68 1v-141h-86v142q-10 0-30 1t-31 0h-112l18 102h62q27 0 32 28v225h9q-4 0-9 0v161q-7 37-50 37h-62v92l119-1q35 0 54 1v141h86v-138q45 1 68 1v137h86v-141q44-4 78-13t63-25 46-43 20-64z m-120-304q0 20-8 35t-21 26-32 17-36 11-42 5-38 1-36 0-27-1v-189q5 0 21 0t27 0 29 1 33 2 32 5 31 8 26 11 22 17 14 22 5 29z m-39 265q0 19-7 33t-17 23-27 16-31 9-34 5-32 1-31 0-22-1v-171q3 0 20 0t26 0 27 1 31 3 29 6 27 10 21 15 15 22 5 28z" horiz-adv-x="714.3" />
|
||||
|
||||
<glyph glyph-name="git" unicode="" d="M332 5q0 56-92 56-88 0-88-58 0-57 96-57 84 0 84 59z m-33 421q0 35-17 57t-49 23q-69 0-69-81 0-75 69-75 66 0 66 76z m150 181v-112q-20-7-44-13 9-24 9-47 0-70-41-120t-110-63q-22-5-33-15t-11-33q0-17 13-28t32-18 44-12 48-15 44-21 32-35 13-55q0-170-203-170-38 0-72 7t-65 23-49 46-18 71q0 92 102 125v3q-38 22-38 70 0 61 35 76v3q-40 13-66 60t-27 92q0 78 53 130t131 51q54 0 100-26 54 0 121 26z m178-491h-124q2 25 2 74v340q0 53-2 72h124q-3-19-3-70v-342q0-49 3-74z m335 124v-110q-40-22-97-22-35 0-60 12t-39 27-22 44-10 51-2 58v196h1v2q-4 0-11 0t-10 1q-12 0-33-3v106h54v42q0 30-4 50h127q-3-23-3-92h95v-106q-8 0-24 1t-24 1h-47v-204q0-73 48-73 34 0 61 19z m-321 528q0-32-22-57t-54-24q-32 0-54 24t-23 57q0 33 22 57t55 25q33 0 54-25t22-57z" horiz-adv-x="1000" />
|
||||
<glyph glyph-name="git" unicode="" d="M332 5q0 56-92 56-88 0-88-58 0-57 96-57 84 0 84 59z m-33 422q0 34-17 56t-49 23q-69 0-69-81 0-75 69-75 66 0 66 77z m150 180v-112q-20-7-44-13 9-24 9-47 0-70-41-120t-110-63q-22-5-33-15t-11-33q0-17 13-28t32-18 44-12 48-15 44-21 32-35 13-55q0-170-203-170-38 0-72 7t-65 23-49 46-18 71q0 92 102 125v3q-38 22-38 70 0 61 35 76v3q-40 13-66 60t-27 93q0 77 53 129t131 51q54 0 100-26 54 0 121 26z m178-491h-124q2 25 2 74v340q0 53-2 72h124q-3-19-3-69v-343q0-49 3-74z m335 124v-110q-40-22-97-22-35 0-60 12t-39 27-22 44-10 51-2 58v196h1v2q-4 0-11 0t-10 1q-12 0-33-3v106h54v42q0 30-4 50h127q-3-23-3-92h95v-106q-8 0-24 1t-24 1h-47v-204q0-73 48-73 34 0 61 19z m-321 528q0-32-22-57t-54-24q-32 0-54 24t-23 57q0 33 22 57t55 25q33 0 54-25t22-57z" horiz-adv-x="1000" />
|
||||
|
||||
<glyph glyph-name="twitter" unicode="" d="M904 622q-37-54-90-93 0-8 0-23 0-73-21-145t-64-139-103-117-144-82-181-30q-151 0-276 81 19-2 43-2 126 0 224 77-59 1-105 36t-64 89q19-3 34-3 24 0 48 6-63 13-104 62t-41 115v2q38-21 82-23-37 25-59 64t-22 86q0 49 25 91 68-83 164-133t208-55q-5 21-5 41 0 75 53 127t127 53q79 0 132-57 61 12 114 44-20-64-79-100 52 6 104 28z" horiz-adv-x="928.6" />
|
||||
<glyph glyph-name="twitter" unicode="" d="M904 622q-37-54-90-93 0-8 0-23 0-73-21-145t-64-139-103-117-144-82-181-30q-151 0-276 81 19-2 43-2 126 0 224 77-59 1-105 36t-64 89q19-3 34-3 24 0 48 6-63 13-104 62t-41 115v2q38-21 82-23-37 25-59 64t-22 86q0 49 25 91 68-83 164-133t208-55q-5 21-5 41 0 75 53 127t127 53q79 0 132-57 61 12 115 44-21-64-80-100 52 6 104 28z" horiz-adv-x="928.6" />
|
||||
|
||||
<glyph glyph-name="clipboard" unicode="" d="M678 819q65 0 110-46t46-110l0-625q0-65-46-111t-110-46l-522 0q-65 0-110 46t-46 111l0 625q0 65 46 110t110 46l522 0z m-418-104l0-52q0-21 16-37t37-16l208 0q22 0 37 16t15 37l0 52-313 0z m469-677l0 625q0 21-15 37t-36 15l-53 0 0-52q0-43-30-73t-74-31l-208 0q-43 0-74 31t-30 73l0 52-53 0q-21 0-37-15t-15-37l0-625q0-21 15-37t37-16l522 0q21 0 36 16t15 37z m-104 52l-416 0q-26 0-26 25 0 12 7 19t19 8l416 0q11 0 19-8t7-19q0-25-26-25z m0 157l-416 0q-11 0-19 7t-7 19q0 25 26 25l416 0q26 0 26-25 0-11-7-19t-19-7z m0 156l-416 0q-26 0-26 25 0 11 7 19t19 7l416 0q11 0 19-7t7-19q0-25-26-25z" horiz-adv-x="834" />
|
||||
|
||||
<glyph glyph-name="spinner" unicode="" d="M469 614v204q129 0 237-61t169-170 62-237h-204q0 72-36 133t-95 96-133 35z" horiz-adv-x="937.5" />
|
||||
|
||||
<glyph glyph-name="flattr" unicode="" d="M0-37l0 514q0 179 85 278t259 99l548 0q-5-5-52-53t-100-101-109-109-95-93-42-37q-15 0-15 16l0 156-48 0q-59 0-94-6t-63-26-39-57-12-96l0-262z m67-117q5 5 53 53t100 101 109 110 95 93 41 36q15 0 15-16l0-156 48 0q116 0 162 36t45 149l0 262 224 223 0-514q0-179-84-278t-260-99l-548 0z" horiz-adv-x="959" />
|
||||
<glyph glyph-name="shuffle" unicode="" d="M754 516q-54 0-105-32t-80-66-83-104q-48-62-75-94t-78-77-107-66-122-21l-104 0 0 140 104 0q54 0 106 32t81 66 83 104q62 82 101 126t116 88 163 44l36 0 0 120 210-180-210-180 0 100-36 0z m-484-88q-74 78-166 78l-104 0 0 140 104 0q140 0 254-108-14-16-37-45t-27-33q-8-12-24-32z m520-242l0 100 210-180-210-180 0 120-36 0q-140 0-260 116 46 58 72 92 0 2 6 9t8 11q84-88 174-88l36 0z" horiz-adv-x="1000" />
|
||||
|
||||
<glyph glyph-name="cancel" unicode="" d="M0 71l279 279-279 279 221 221 279-279 279 279 221-221-279-279 279-279-221-221-279 279-279-279z" horiz-adv-x="1000" />
|
||||
|
||||
<glyph glyph-name="picture" unicode="" d="M1360 849v-1000h-1360v1000h1360z m-1240-880h1120v760h-1120v-760z m1000 560q0-33-23-56t-57-24-56 24-24 56 24 57 56 23 57-23 23-57z m43-473q2-1 1-4t-4-3h-956q-4 0-4 4v2q18 36 135 280t144 299q1 2 4 3t3-2l311-386 152 122h7l1-2q39-50 102-155t104-158z" horiz-adv-x="1360" />
|
||||
|
||||
<glyph glyph-name="file-archive" unicode="" d="M357 636v71h-71v-71h71z m72-72v72h-72v-72h72z m-72-71v71h-71v-71h71z m72-72v72h-72v-72h72z m390 217q16-16 27-42t11-50v-642q0-23-15-38t-38-16h-750q-23 0-38 16t-16 38v892q0 23 16 38t38 16h500q22 0 49-11t42-27z m-248 136v-210h210q-5 16-12 23l-175 175q-6 7-23 12z m215-853v572h-232q-23 0-38 15t-16 38v233h-71v-72h-72v72h-286v-858h715z m-350 403l60-195q4-15 4-29 0-46-40-77t-103-30-102 30-41 77q0 14 5 29 12 35 67 221v71h71v-71h44q13 0 22-7t13-19z m-79-260q30 0 51 11t21 25-21 25-51 11-50-11-21-25 21-25 50-11z" horiz-adv-x="857.1" />
|
||||
<glyph glyph-name="file-archive" unicode="" d="M357 636v71h-71v-71h71z m72-72v72h-72v-72h72z m-72-71v71h-71v-71h71z m72-72v72h-72v-72h72z m390 217q16-16 27-42t11-50v-642q0-23-15-38t-38-16h-750q-23 0-38 16t-16 38v892q0 23 16 38t38 16h500q22 0 49-11t42-27z m-248 136v-210h210q-5 17-12 23l-175 175q-6 7-23 12z m215-853v572h-232q-23 0-38 16t-16 37v233h-71v-72h-72v72h-286v-858h715z m-350 403l60-195q4-15 4-29 0-46-40-77t-103-30-102 30-41 77q0 14 5 29 12 35 67 221v71h71v-71h44q13 0 22-7t13-19z m-79-260q30 0 51 11t21 25-21 25-51 11-50-11-21-25 21-25 50-11z" horiz-adv-x="857.1" />
|
||||
|
||||
<glyph glyph-name="language" unicode="" d="M988 306q30-82-10-176t-134-160q-10 0-12 2t-16 19-16 19q-2 6 2 10 86 60 117 152t-11 148q-16-38-39-76t-59-80-86-65-106-15q-52 6-84 41t-32 93q0 84 60 148 50 50 114 66l-2 100q-140-24-146-24-6-2-10 4 0 2-5 29t-5 31q-2 2 1 4t7 2l156 28q0 110-2 114 0 8 8 8 46 0 52 2 10 0 10-8l0-104q158 22 164 22 8 4 10-6 0-2 4-23t4-25q4-10-4-12l-176-30 0-102 12 0q86 0 148-36t86-100z m-370-160q28-6 62 6l-4 214q-34-12-60-40-44-44-44-108 0-66 46-72z m122 28q28 24 58 68t45 79 7 41q-36 18-96 18-2 0-6-1t-6-1z m-448 382q10-28 53-165t83-261 40-126q0-4-4-4l-86 0q-6 0-6 4l-50 166-176 0q-48-164-50-166 0-4-6-4l-86 0q-4 0-4 4 10 18 176 552 2 8 10 8l96 0q10 0 10-8z m-130-316l144 0-72 264z" horiz-adv-x="1001" />
|
||||
|
||||
<glyph glyph-name="edit" unicode="" d="M496 189l64 65-85 85-64-65v-31h53v-54h32z m245 402q-9 9-18 0l-196-196q-9-9 0-18t18 0l196 196q9 9 0 18z m45-331v-106q0-67-47-114t-114-47h-464q-67 0-114 47t-47 114v464q0 66 47 113t114 48h464q35 0 65-14 9-4 10-13 2-10-5-16l-27-28q-8-8-18-4-13 3-25 3h-464q-37 0-63-26t-27-63v-464q0-37 27-63t63-27h464q37 0 63 27t26 63v70q0 7 5 12l36 36q8 8 20 4t11-16z m-54 411l161-160-375-375h-161v160z m248-73l-51-52-161 161 51 52q16 15 38 15t38-15l85-85q16-16 16-38t-16-38z" horiz-adv-x="1000" />
|
||||
</font>
|
||||
</defs>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 6.4 KiB After Width: | Height: | Size: 7.8 KiB |
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user