19 Commits

Author SHA1 Message Date
Luc Didry
d10ecc41fb 🐛 — Avoid DB conflicts when provisioning 2021-06-20 07:59:26 +02:00
Luc Didry
614a561e00 🔀 Merge branch 'Quent--y/lutim-master' into development 2021-01-15 08:01:31 +01:00
Luc Didry
09887ed01a Merge branch 'feature_png_optimization' into 'development'
Lossless PNG optimization

See merge request fiat-tux/hat-softwares/lutim!81
2021-01-15 07:56:02 +01:00
Aleksey Lobanov
f68353fa1b assets: png optimization 2021-01-15 07:56:02 +01:00
Luc Didry
6aa0c43b55 Merge branch 'development' into 'development'
✏️ Replace name of wrong software name in config file

See merge request fiat-tux/hat-softwares/lutim!80
2021-01-15 07:56:01 +01:00
Luc Didry
cf3f0e0250 Merge branch 'weblate-lutim-default-theme' into 'development'
Translations update from Weblate

See merge request fiat-tux/hat-softwares/lutim!79
2021-01-15 07:56:01 +01:00
Benpro
31df50d6c9 ✏️ Replace name of wrong software name in config file
Commit 247cb41c has added config variables but with a small typo in the
comments
2021-01-15 07:56:01 +01:00
Валентин Бородко
ab6febf2ea Translated using Weblate (Russian)
Currently translated at 99.2% (138 of 139 strings)

Translation: Lutim/Default theme
Translate-URL: https://weblate.framasoft.org/projects/lutim/default-theme/ru/
2021-01-15 07:56:00 +01:00
Валентин Бородко
a6b0a9961a Translated using Weblate (Russian)
Currently translated at 93.5% (130 of 139 strings)

Translation: Lutim/Default theme
Translate-URL: https://weblate.framasoft.org/projects/lutim/default-theme/ru/
2021-01-15 07:56:00 +01:00
Luc Didry
d939ec30c7 Merge branch 'weblate-lutim-default-theme' into 'development'
Translations update from Weblate

See merge request fiat-tux/hat-softwares/lutim!77
2021-01-15 07:55:59 +01:00
Filip Bengtsson
62519948a6 Translated using Weblate (Swedish)
Currently translated at 100.0% (139 of 139 strings)

Translation: Lutim/Default theme
Translate-URL: https://weblate.framasoft.org/projects/lutim/default-theme/sv/
2021-01-15 07:55:59 +01:00
Luc Didry
6ee0dc022c 🔥 — Remove tap.xml from git 2021-01-15 07:55:58 +01:00
Luc Didry
10daa1cd02 Merge branch 'improve-tests' into 'development'
Improve tests

See merge request fiat-tux/hat-softwares/lutim!76
2021-01-15 07:55:57 +01:00
Luc Didry
f4b5a780f6 Merge branch 'weblate-lutim-default-theme' into 'development'
Translations update from Weblate

See merge request fiat-tux/hat-softwares/lutim!75
2021-01-15 07:55:57 +01:00
Luc Didry
1142006456 👷 — Improve CI
- Refactor .gitlab-ci.yml
- Update Makefile
- Introduce junit test output
- Improve minion test
2021-01-15 07:55:57 +01:00
Luc Didry
9d265879a5 Merge branch 'weblate-lutim-default-theme' into 'development'
Translations update from Weblate

See merge request fiat-tux/hat-softwares/lutim!74
2021-01-15 07:55:56 +01:00
Konstantin Timashov
d296fdcd2c Translated using Weblate (Russian)
Currently translated at 94.2% (131 of 139 strings)

Translation: Lutim/Default theme
Translate-URL: https://weblate.framasoft.org/projects/lutim/default-theme/ru/
2021-01-15 07:55:56 +01:00
roberto marcolin
33b81c9e40 Translated using Weblate (Italian)
Currently translated at 100.0% (139 of 139 strings)

Translation: Lutim/Default theme
Translate-URL: https://weblate.framasoft.org/projects/lutim/default-theme/it/
2021-01-15 07:55:47 +01:00
Quentin
d11a70c7f6 Update moment-with-locales.min.js to add Occitan like the master Github of moment + change oc-lnc to oc to fit the project iso code used. 2021-01-14 18:50:36 +01:00
90 changed files with 135 additions and 187 deletions

3
.gitignore vendored
View File

@@ -7,6 +7,7 @@ script/hypnotoad.pid
local/*
files/*
stop-upload
tap.xml
themes/*
!themes/default
!themes/default/*
@@ -21,4 +22,4 @@ cover_db/*
.ash_history
.vscode/
.DS_Store
.cpanm/
.cpanm/

View File

@@ -21,6 +21,7 @@ variables:
retry: 2
except:
- tags
.carton_bdd_template: &carton_bdd_definition
<<: *retry
stage: carton_bdd
@@ -29,20 +30,29 @@ variables:
- local/
needs:
- carton
.sqlite_template: &sqlite_definition
.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
<<: *retry
stage: tests
artifacts:
paths:
- cover_db/
<<: *test_definition
needs:
- carton_postgresql
services:
@@ -96,75 +106,37 @@ carton_postgresql:
#
sqlite1:
<<: *sqlite_definition
script:
before_script:
- carton install --deployment --without=postgresql --without=minion --without=cache --without=memcached
- 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
sqlite2:
<<: *sqlite_definition
script:
before_script:
- carton install --deployment --without=postgresql --without=cache --without=memcached
- 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
sqlite3:
<<: *sqlite_definition
services:
- name: postgres:9.6
alias: postgres
script:
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
- 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
### PostgreSQL tests
##
#
postgresql1:
<<: *pg_definition
script:
before_script:
- carton install --deployment --without=sqlite --without=minion --without=cache --without=memcached
- 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
postgresql2:
<<: *pg_definition
script:
before_script:
- carton install --deployment --without=cache --without=memcached
- 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
postgresql3:
<<: *pg_definition
script:
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
- 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
### Code coverage
##
@@ -173,6 +145,9 @@ cover:
stage: cover
script:
- make cover
coverage: '/Total .*\d+\.\d+$/'
coverage: '/Total.* (\d+\.\d+)$/'
artifacts:
reports:
junit: tap.xml
except:
- tags

View File

@@ -5,6 +5,7 @@ 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:
@@ -24,16 +25,20 @@ stats-locales:
podcheck:
podchecker lib/Lutim/DB/Image.pm
check-syntax:
find lib/ themes/ -name \*.pm -exec $(CARTON) perl -Ilib -c {} \;
find t/ -name \*.t -exec $(CARTON) perl -Ilib -c {} \;
cover:
PERL5OPT='-Ilib/' HARNESS_PERL_SWITCHES='-MDevel::Cover' $(CARTON) cover --ignore_re '^local'
PERL5OPT='-Ilib' $(CARTON) cover --ignore_re '^local'
test-sqlite:
@PERL5OPT='-Ilib/' HARNESS_PERL_SWITCHES='-MDevel::Cover' $(CARTON) $(REAL_LUTIM) test
test:
@PERL5OPT='-Ilib/' HARNESS_PERL_SWITCHES='$(HARNESS_PERL_SWITCHES)' $(CARTON) -- prove -l --failures
test-pg:
@PERL5OPT='-Ilib/' HARNESS_PERL_SWITCHES='-MDevel::Cover' $(CARTON) $(REAL_LUTIM) test
test-junit-output:
@PERL5OPT='-Ilib/' HARNESS_PERL_SWITCHES='$(HARNESS_PERL_SWITCHES)' $(CARTON) -- prove -l --failures --formatter TAP::Formatter::JUnit > tap.xml
test: podcheck test-sqlite test-pg
full-test: podcheck just-test
clean:
rm -rf lutim.db files/

View File

@@ -32,6 +32,7 @@ feature 'postgresql', 'PostgreSQL support' => sub {
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';

View File

@@ -294,13 +294,13 @@ DISTRIBUTIONS
Test::More 0.88
Time::HiRes 0
version 0
DBD-SQLite-1.58
pathname: I/IS/ISHIGAKI/DBD-SQLite-1.58.tar.gz
DBD-SQLite-1.66
pathname: I/IS/ISHIGAKI/DBD-SQLite-1.66.tar.gz
provides:
DBD::SQLite 1.58
DBD::SQLite 1.66
DBD::SQLite::Constants undef
DBD::SQLite::VirtualTable 1.58
DBD::SQLite::VirtualTable::Cursor 1.58
DBD::SQLite::VirtualTable 1.66
DBD::SQLite::VirtualTable::Cursor 1.66
DBD::SQLite::VirtualTable::FileContent undef
DBD::SQLite::VirtualTable::FileContent::Cursor undef
DBD::SQLite::VirtualTable::PerlData undef

View File

@@ -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 = ?, 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, iv) 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, $c->iv);
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);
}

View File

@@ -79,12 +79,15 @@ sub select_empty {
}
sub write {
my $c = shift;
my $c = shift;
my $provisioning = shift;
if ($c->record) {
$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 {
$c->app->sqlite->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, iv) 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, $c->iv);
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);
}

View File

@@ -195,7 +195,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);
}

View File

@@ -251,7 +251,7 @@
# optional, default is 0
#quiet_logs => 0,
# Content-Security-Policy header that will be sent by Lstu
# 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.
@@ -261,7 +261,7 @@
# 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
# 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
@@ -270,13 +270,13 @@
# optional, default is 'DENY'
#x_frame_options => 'DENY',
# X-Content-Type-Options that will be sent by Lstu
# 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 Lstu
# 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'

View File

@@ -150,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 })

View File

@@ -4,8 +4,8 @@ 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"
"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"
@@ -691,3 +691,15 @@ msgid "For more details, see the <a href=\"https://framagit.org/fiat-tux/hat-sof
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"

View File

@@ -4,17 +4,17 @@ 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"
"PO-Revision-Date: 2020-10-11 23:59+0000\n"
"Last-Translator: Валентин Бородко <valya.spaces@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 3.11.2\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.1\n"
#. (7)
#. (30)
@@ -43,11 +43,11 @@ msgstr "24 часа"
#: themes/default/templates/partial/myfiles.js.ep:180
msgid ": Error while trying to get the counter."
msgstr ": Error while trying to get the counter."
msgstr ": Ошибка при подсчете количества ."
#: themes/default/templates/partial/navbar.html.ep:77
msgid "About"
msgstr "О Lutim"
msgstr "Подробнее"
#: lib/Lutim/Command/cron/stats.pm:154 themes/default/templates/raw.html.ep:3
msgid "Active images"
@@ -55,11 +55,11 @@ msgstr "Активные изображения"
#: lib/Lutim/Controller/Image.pm:328
msgid "An error occured while downloading the image."
msgstr "Произошла ошибка при скачивании изображения."
msgstr "Ошибка при загрузке изображения."
#: themes/default/templates/zip.html.ep:2
msgid "Archives download"
msgstr "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"
@@ -83,7 +83,7 @@ msgstr "Участники"
#: themes/default/templates/partial/common.js.ep:113 themes/default/templates/partial/common.js.ep:93
msgid "Copied to clipboard"
msgstr ""
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"
@@ -163,11 +163,11 @@ msgstr "Общее количество файлов"
#: themes/default/templates/myfiles.html.ep:126
msgid "Expires at"
msgstr "Истекает в"
msgstr "Исчезнет через"
#: themes/default/templates/myfiles.html.ep:112
msgid "Export localStorage data"
msgstr ""
msgstr "Сохранить данные в хранилище"
#: themes/default/templates/myfiles.html.ep:121
msgid "File name"
@@ -182,8 +182,9 @@ msgstr ""
"lutim\">главную страницу проекта</a>."
#: themes/default/templates/partial/navbar.html.ep:80
#, fuzzy
msgid "Fork me!"
msgstr "Форкни меня!"
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"
@@ -227,7 +228,7 @@ msgstr "Срок хранения"
#: themes/default/templates/partial/common.js.ep:157
msgid "Image deleted"
msgstr ""
msgstr "Изображение удалено"
#: lib/Lutim/Controller/Image.pm:756
msgid "Image not found."
@@ -235,7 +236,7 @@ msgstr "Изображение не найдено."
#: themes/default/templates/myfiles.html.ep:113
msgid "Import localStorage data"
msgstr ""
msgstr "Загрузить данные с хранилища"
#: themes/default/templates/partial/navbar.html.ep:69
msgid "Informations"
@@ -287,11 +288,11 @@ msgstr "Ссылка для того, чтоб поделиться в соци
#: themes/default/templates/login.html.ep:8
msgid "Login"
msgstr ""
msgstr "Имя пользователя"
#: themes/default/templates/partial/navbar.html.ep:33
msgid "Logout"
msgstr ""
msgstr "Выйти"
#: themes/default/templates/zip.html.ep:7
msgid ""
@@ -321,7 +322,7 @@ msgstr "Синтаксис Маркдауна"
#: themes/default/templates/partial/myfiles.js.ep:149
msgid "Modify expiration delay"
msgstr ""
msgstr "Изменить время на удление"
#: themes/default/templates/myfiles.html.ep:7 themes/default/templates/partial/navbar.html.ep:18
msgid "My images"
@@ -373,7 +374,7 @@ msgstr "Пожалуйста, свяжитесь с администраторо
#: lib/Lutim/Controller/Authent.pm:36
msgid "Please, check your credentials: unable to authenticate."
msgstr ""
msgstr "Пожалуйста проверьте свои данные: не удалось идентифицировать."
#: themes/default/templates/gallery.html.ep:43
msgid "Previous (arrow left)"
@@ -381,7 +382,7 @@ 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 ""
msgstr "Случайная ссылка на изображение"
#: themes/default/templates/stats.html.ep:22
msgid "Raw stats"
@@ -389,7 +390,7 @@ msgstr "Сырые статистические данные"
#: themes/default/templates/myfiles.html.ep:52
msgid "Save changes"
msgstr ""
msgstr "Сохранить изменения"
#: themes/default/templates/index.html.ep:176
msgid "Send an image"
@@ -397,7 +398,7 @@ 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 ""
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"
@@ -460,7 +461,7 @@ msgstr ""
#: themes/default/templates/partial/myfiles.js.ep:32
msgid "The data has been successfully imported."
msgstr ""
msgstr "Данные были успешно импортированы."
#: lib/Lutim/Controller/Image.pm:160 lib/Lutim/Controller/Image.pm:228
msgid "The delete token is invalid."
@@ -511,7 +512,7 @@ msgstr "Срок хранения изображения успешно изме
#: themes/default/templates/partial/gallery.js.ep:277
msgid "There is XXXX image(s) in the gallery"
msgstr ""
msgstr "В галерее есть изображения для взрослых"
#. ($c->config->{contact})
#: lib/Lutim/Controller/Image.pm:485
@@ -538,7 +539,7 @@ msgstr "Твитнуть!"
#: themes/default/templates/partial/common.js.ep:110 themes/default/templates/partial/common.js.ep:90
msgid "Unable to copy to clipboard"
msgstr ""
msgstr "Не удается скопировать в буфер обмена"
#. ($short)
#: lib/Lutim/Controller/Image.pm:108 lib/Lutim/Controller/Image.pm:202 lib/Lutim/Controller/Image.pm:273
@@ -633,11 +634,11 @@ msgstr ""
#: lib/Lutim/Controller/Authent.pm:27
msgid "You have been successfully logged in."
msgstr ""
msgstr "Вы успешно вошли в учетную запись."
#: lib/Lutim/Controller/Authent.pm:66 themes/default/templates/logout.html.ep:3
msgid "You have been successfully logged out."
msgstr ""
msgstr "Вы успешно вышли из учетной записи."
#: themes/default/templates/gallery.html.ep:31
msgid "Zoom in/out"
@@ -688,3 +689,15 @@ msgid "For more details, see the <a href=\"https://framagit.org/fiat-tux/hat-sof
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 "Единственный водяной знак"

View File

@@ -7,8 +7,8 @@ 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"
"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"
@@ -16,7 +16,7 @@ msgstr ""
"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"
"X-Generator: Weblate 4.1\n"
#. (7)
#. (30)
@@ -567,6 +567,8 @@ 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."
@@ -606,7 +608,7 @@ msgstr "på"
#: themes/default/templates/about.html.ep:39
msgid "paste image to upload ability"
msgstr ""
msgstr "infoga en bild för att skicka den"
#: themes/default/templates/about.html.ep:41
msgid "russian translation"
@@ -625,3 +627,15 @@ msgid "For more details, see the <a href=\"https://framagit.org/fiat-tux/hat-sof
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"

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.0 KiB

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 909 B

After

Width:  |  Height:  |  Size: 618 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.2 KiB

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 946 B

After

Width:  |  Height:  |  Size: 916 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 858 B

After

Width:  |  Height:  |  Size: 798 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 693 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.5 KiB

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 540 B

After

Width:  |  Height:  |  Size: 178 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 195 B

After

Width:  |  Height:  |  Size: 190 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 199 B

After

Width:  |  Height:  |  Size: 190 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 771 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 829 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 916 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 856 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 470 B

After

Width:  |  Height:  |  Size: 246 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 493 B

After

Width:  |  Height:  |  Size: 243 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 464 B

After

Width:  |  Height:  |  Size: 300 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 369 B

After

Width:  |  Height:  |  Size: 300 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 151 B

After

Width:  |  Height:  |  Size: 141 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 195 B

After

Width:  |  Height:  |  Size: 190 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 199 B

After

Width:  |  Height:  |  Size: 190 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 147 B

After

Width:  |  Height:  |  Size: 141 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 KiB

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 913 B

After

Width:  |  Height:  |  Size: 713 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 957 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 877 B

After

Width:  |  Height:  |  Size: 713 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 942 B

After

Width:  |  Height:  |  Size: 722 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 368 B

After

Width:  |  Height:  |  Size: 289 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 285 B

After

Width:  |  Height:  |  Size: 254 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 340 B

After

Width:  |  Height:  |  Size: 310 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 470 B

After

Width:  |  Height:  |  Size: 246 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 493 B

After

Width:  |  Height:  |  Size: 243 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 452 B

After

Width:  |  Height:  |  Size: 423 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 388 B

After

Width:  |  Height:  |  Size: 341 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 374 B

After

Width:  |  Height:  |  Size: 341 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 401 B

After

Width:  |  Height:  |  Size: 341 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 369 B

After

Width:  |  Height:  |  Size: 341 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 369 B

After

Width:  |  Height:  |  Size: 341 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 640 B

After

Width:  |  Height:  |  Size: 528 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 580 B

After

Width:  |  Height:  |  Size: 487 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 620 B

After

Width:  |  Height:  |  Size: 553 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 238 B

After

Width:  |  Height:  |  Size: 210 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 195 B

After

Width:  |  Height:  |  Size: 190 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 199 B

After

Width:  |  Height:  |  Size: 190 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 826 B

After

Width:  |  Height:  |  Size: 750 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 799 B

After

Width:  |  Height:  |  Size: 737 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 234 KiB

After

Width:  |  Height:  |  Size: 219 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.4 KiB

After

Width:  |  Height:  |  Size: 7.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 384 KiB

After

Width:  |  Height:  |  Size: 342 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.6 KiB

After

Width:  |  Height:  |  Size: 6.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 50 KiB

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.7 KiB

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.8 KiB

After

Width:  |  Height:  |  Size: 6.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.8 KiB

After

Width:  |  Height:  |  Size: 8.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

File diff suppressed because one or more lines are too long