🔀 — Merge branch 'development' of framagit.org:fiat-tux/hat-softwares/lufi

This commit is contained in:
Luc Didry 2020-06-02 21:44:06 +02:00
commit 5b43702d64
No known key found for this signature in database
GPG Key ID: EA868E12D0257E3C
48 changed files with 3624 additions and 721 deletions

View File

@ -58,6 +58,8 @@ variables:
services:
- name: rroemhild/test-openldap
alias: rroemhild-test-openldap
- name: swiftstack/picoswiftstack
alias: swiftstack-picoswiftstack
.pg_template: &pg_definition
<<: *tests_template
needs:
@ -67,6 +69,8 @@ variables:
alias: postgres
- name: rroemhild/test-openldap
alias: rroemhild-test-openldap
- name: swiftstack/picoswiftstack
alias: swiftstack-picoswiftstack
.mysql_template: &mysql_definition
<<: *tests_template
needs:
@ -76,6 +80,8 @@ variables:
alias: mariadb
- name: rroemhild/test-openldap
alias: rroemhild-test-openldap
- name: swiftstack/picoswiftstack
alias: swiftstack-picoswiftstack
### Publish tag changelog and create a toot
##

View File

@ -30,6 +30,7 @@
- TECH'advantage, https://www.tech-advantage.com/ (paid for LDAP invitations feature)
- pi2 (typo)
- Rain (bugfix)
- Nicolas Constant (notifications)
## Vulnerabilities / bug hunters 🐛

View File

@ -1,6 +1,11 @@
Revision history for Lufi
?.??.? ????-??-??
- Notifications when uploading and downloading files (#181)
- Use Weblate instead of Zanata for translations (https://weblate.framasoft.org/projects/lufi/development/)
- Add config API endpoint (#183)
- Show latest tag and commit of the instance in about page and config API endpoint (#174)
- Add support for Swift object storage (EXPERIMENTAL)
0.04.6 2019-11-07
- Now can send large files (>2Gio) while using a DB other than SQLite (#165)

View File

@ -1,5 +1,6 @@
EXTRACTDIR=-D lib -D themes/default/templates
POT=themes/default/lib/Lufi/I18N/lufi.pot
ENPO=themes/default/lib/Lufi/I18N/en.po
XGETTEXT=carton exec local/bin/xgettext.pl -u
CARTON=carton exec
REAL_LUFI=script/application
@ -7,18 +8,10 @@ LUFI=script/lufi
locales:
$(XGETTEXT) $(EXTRACTDIR) -o $(POT) 2>/dev/null
push-locales: locales
zanata-cli -q -B push --errors --project-version `git branch | grep \* | cut -d ' ' -f2-`
pull-locales:
zanata-cli -q -B pull --min-doc-percent 50 --project-version `git branch | grep \* | cut -d ' ' -f2-`
stats-locales:
zanata-cli -q stats --project-version `git branch | grep \* | cut -d ' ' -f2-`
$(XGETTEXT) $(EXTRACTDIR) -o $(ENPO) 2>/dev/null
podcheck:
podchecker lib/Lufi/DB/File.pm lib/Lufi/DB/Slice.pm
podchecker lib/Lufi/DB/File.pm lib/Lufi/DB/Slice.pm lib/Lufi/DB/Invitation.pm
cover:
PERL5OPT='-Ilib/' HARNESS_PERL_SWITCHES='-MDevel::Cover' $(CARTON) cover --ignore_re '^local'
@ -37,6 +30,14 @@ ldap:
ldapdev: ldap dev
swift:
sudo docker run -d --rm -p 8080:8080 --hostname="picoswiftstack" --name="picoswiftstack" swiftstack/picoswiftstack; exit 0
@echo "Sleeping 20 seconds to let picoswiftstack start"
@sleep 20
sudo docker exec picoswiftstack get_auth
swiftdev: swift dev
devlog:
multitail log/development.log

View File

@ -6,9 +6,9 @@ requires 'Mojolicious::Plugin::Mail';
requires 'Mojolicious::Plugin::GzipStatic';
requires 'Mojolicious::Plugin::StaticCache';
requires 'Mojolicious::Plugin::CSPHeader', '>= 0.06';
requires 'Mojolicious::Plugin::FiatTux::Helpers', '== 0.10', url => 'https://framagit.org/fiat-tux/mojolicious/mojolicious-plugin-fiattux-helpers/-/archive/0.10/mojolicious-plugin-fiattux-helpers-0.10.tar.gz';
requires 'Mojolicious::Plugin::FiatTux::GrantAccess', '== 0.06', url => 'https://framagit.org/fiat-tux/mojolicious/mojolicious-plugin-fiattux-grantaccess/-/archive/0.06/mojolicious-plugin-fiattux-grantaccess-0.06.tar.gz';
requires 'Mojolicious::Plugin::FiatTux::Themes', '== 0.02', url => 'https://framagit.org/fiat-tux/mojolicious/mojolicious-plugin-fiattux-themes/-/archive/0.02/mojolicious-plugin-fiattux-themes-0.02.tar.gz';
requires 'Mojolicious::Plugin::FiatTux::Helpers', '== 0.12', url => 'https://framagit.org/fiat-tux/mojolicious/fiat-tux/mojolicious-plugin-fiattux-helpers/-/archive/0.12/mojolicious-plugin-fiattux-helpers-0.12.tar.gz';
requires 'Mojolicious::Plugin::FiatTux::GrantAccess', '== 0.07', url => 'https://framagit.org/fiat-tux/mojolicious/fiat-tux/mojolicious-plugin-fiattux-grantaccess/-/archive/0.07/mojolicious-plugin-fiattux-grantaccess-0.07.tar.gz';
requires 'Mojolicious::Plugin::FiatTux::Themes', '== 0.02', url => 'https://framagit.org/fiat-tux/mojolicious/fiat-tux/mojolicious-plugin-fiattux-themes/-/archive/0.02/mojolicious-plugin-fiattux-themes-0.02.tar.gz';
requires 'Filesys::DiskUsage';
requires 'Switch';
requires 'Locale::Maketext';
@ -55,3 +55,6 @@ feature 'mysql', 'MySQL support' => sub {
requires 'Mojo::mysql';
requires 'Mojolicious::Plugin::PgURLHelper';
};
feature 'swift-storage', 'Openstack Swift object storage support' => sub {
requires 'Net::OpenStack::Swift';
};

File diff suppressed because it is too large Load Diff

View File

@ -66,6 +66,12 @@ sub startup {
# Helpers
$self->plugin('Lufi::Plugin::Helpers');
# Now helpers has been loaded, time to check Swift container
if ($config->{swift}) {
$self->check_swift_container();
$self->log->info('EXPERIMENTAL Using Swift object storage');
}
# Recurrent task
Mojo::IOLoop->recurring(2 => sub {
my $loop = shift;
@ -74,8 +80,10 @@ sub startup {
});
# Create directory if needed
mkdir($self->config('upload_dir'), 0700) unless (-d $self->config('upload_dir'));
die ('The upload directory ('.$self->config('upload_dir').') is not writable') unless (-w $self->config('upload_dir'));
if (!defined($config->{swift})) {
mkdir($self->config('upload_dir'), 0700) unless (-d $self->config('upload_dir'));
die ('The upload directory ('.$self->config('upload_dir').') is not writable') unless (-w $self->config('upload_dir'));
}
# Configure sessions
my $sessions = Mojolicious::Sessions->new;
@ -159,6 +167,11 @@ sub startup {
->to('Misc#about')
->name('about');
# About config API endpoint
$r->get('/about/config')
->to('Misc#config_infos')
->name('config');
# Generated js files
$r->get('/partial/:file')
->to('Misc#js_files')

View File

@ -0,0 +1,72 @@
package Lufi::Command::copyFilesToSwift;
use Mojo::Base 'Mojolicious::Command';
use File::Spec;
use Term::ProgressBar;
has description => 'Copy files from filesystem to Swift object storage';
has usage => sub { shift->extract_usage };
sub run {
my $c = shift;
if ($c->app->config('swift')) {
$c->app->check_swift_container();
my @dirs = glob(File::Spec->catdir($c->app->config('upload_dir'), '*'));
unless (scalar(@dirs)) {
say sprintf('The configured upload_dir (%s) seems to be empty. Is `upload_dir` configured in lufi.conf?', $c->app->config('upload_dir'));
exit 1;
}
say sprintf('%d folders to upload to Swift (can\'t say how many files, or the total size, sorry). This can take some time.', scalar(@dirs));
print 'Do you want to continue? [Y/n] ';
my $confirm = <STDIN>;
if ($confirm =~ m/yes|y/i) {
my $progress = Term::ProgressBar->new({ count => scalar(@dirs), ETA => 'linear', name => 'Copying to Swift'});
for my $dir (@dirs) {
my @files = glob(File::Spec->catfile($dir, '*'));
for my $file (@files) {
my ($volume, $directories, $filename) = File::Spec->splitpath($file);
my @file_dirs = File::Spec->splitdir($directories);
my $short = ($file_dirs[-1] ne '') ? $file_dirs[-1] : $file_dirs[-2];
my $path = File::Spec->catfile($short, $filename);
open my $fh, '<', $file or die sprintf('Unable to open file %s: %s', $file, $!);
$c->app->swift->put_object(
container_name => $c->app->config('swift')->{container},
object_name => $path,
content_length => -s $file,
content => $fh
);
close $fh;
}
$progress->update();
}
say sprintf('The copy to Swift object storage has ended. You can test Lufi, then delete `%s` directory', $c->app->config('upload_dir'));
} else {
say 'You want to stop. No problem.';
}
} else {
say 'You didn\'t configure `swift` in your config file. Exiting.';
exit 1;
}
}
=encoding utf8
=head1 NAME
Lufi::Command::copyFilesToSwift Copy files from filesystem to Swift object storage
=head1 SYNOPSIS
Usage: script/lufi copyFilesToSwift
This command needs you to:
- set `upload_dir` in your config file (otherwise, it will use the default path, `files` to copy files from)
- configure `swift` with correct informations in your config file
=cut
1;

View File

@ -1,5 +1,6 @@
package Lufi::Command::sqliteToOtherDB;
use Mojo::Base 'Mojolicious::Command';
use Lufi::DB::BreakingChange;
use Lufi::DB::File;
use Lufi::DB::Slice;
use Lufi::DB::Invitation;
@ -9,7 +10,7 @@ use Term::ProgressBar;
use Lufi::DefaultConfig qw($default_config);
has description => 'Migrate the records from a SQLite db to the currently configured database';
has usage => sub { shift->extract_usage };
has usage => sub { shift->extract_usage };
sub run {
my $c = shift;
@ -36,8 +37,9 @@ sub run {
my $files = $sqlite->db->select('files', undef)->hashes;
my $slices = $sqlite->db->select('slices', undef)->hashes;
my $invitations = $sqlite->db->select('invitations', undef)->hashes;
my $changes = $sqlite->db->select('breakingchanges', undef)->hashes;
my $progress = Term::ProgressBar->new({count => $files->size + $slices->size + $invitations->size});
my $progress = Term::ProgressBar->new({count => $files->size + $slices->size + $invitations->size + $changes->size});
$files->each(sub {
my ($file, $num) = @_;
@ -69,7 +71,6 @@ sub run {
Lufi::DB::Slice->new(app => $c->app)
->short($slice->{short})
->j($slice->{j})
->path($slice->{path})
->write();
$progress->update();
@ -92,13 +93,22 @@ sub run {
->write();
$progress->update();
});
$changes->each(sub {
my ($change, $num) = @_;
Lufi::DB::BreakingChange->new(app => $c->app)
->change($change->{change})
->ack($change->{ack})
->write();
$progress->update();
});
}
=encoding utf8
=head1 NAME
Lufi::Command::cron::sqliteToOtherDB Migrate the records from a SQLite db to the currently configured database
Lufi::Command::sqliteToOtherDB Migrate the records from a SQLite db to the currently configured database
=head1 SYNOPSIS

View File

@ -2,7 +2,7 @@
package Lufi::Command::theme;
use Mojo::Base 'Mojolicious::Commands';
use FindBin qw($Bin);
use File::Spec qw(catfile cat dir);
use File::Spec qw(catfile catdir);
use File::Path qw(make_path);
has description => 'Create new theme skeleton.';

View File

@ -100,7 +100,8 @@ sub upload {
}
}
# Check that we have enough space (multiplying by 2 since it's encrypted, it takes more place that the original file)
if ($json->{part} == 0 && ($json->{size} * 2) >= dfportable($c->config('upload_dir'))->{bavail}) {
# Only check if using filesystem, not Swift storage
if (!defined($c->config('swift')) && $json->{part} == 0 && ($json->{size} * 2) >= dfportable($c->config('upload_dir'))->{bavail}) {
$stop = 1;
return $ws->send(decode('UTF-8', encode_json(
{
@ -190,19 +191,12 @@ sub upload {
# If we already have a part, it's a resend because the websocket has been broken
# In this case, we don't need to rewrite the file
unless ($f->slices->grep(sub { $_->j == $json->{part} })->size) {
# Create directory
my $dir = catdir($c->config('upload_dir'), $f->short);
mkdir($dir, 0700) unless (-d $dir);
# Create slice file
my $file = catfile($dir, $json->{part}.'.part');
my $s = Lufi::DB::Slice->new(
app => $c->app,
short => $f->short,
j => $json->{part},
path => $file
);
Mojo::File->new($file)->spurt($text);
j => $json->{part}
)->store($text);
push @{$f->slices}, $s;
$s->write;
@ -327,7 +321,7 @@ sub download {
# Get the slice
my $e = $f->slices->[$num];
my $text = Mojo::File->new($e->path)->slurp;
my $text = $e->retrieve();
my ($json2) = split('XXMOJOXX', $text, 2);
$json2 = decode 'UTF-8', $json2;

View File

@ -2,6 +2,7 @@
package Lufi::Controller::Misc;
use Mojo::Base 'Mojolicious::Controller';
use Mojo::File;
use Mojo::JSON qw(true false);
use Mojo::URL;
use Lufi::DB::File;
@ -31,7 +32,34 @@ sub change_lang {
}
sub about {
shift->render(template => 'about');
my $c = shift;
$c->render(
template => 'about',
version => $c->git_version
);
}
sub config_infos {
my $c = shift;
$c->render(
json => {
report => $c->config('report'),
instance_name => $c->config('instance_name'),
max_file_size => $c->config('max_file_size'),
broadcast_message => $c->config('broadcast_message'),
default_delay => $c->config('default_delay'),
max_delay => $c->config('max_delay'),
delay_for_size => $c->config('delay_for_size'),
allow_pwd_on_files => $c->config('allow_pwd_on_files'),
force_burn_after_reading => $c->config('force_burn_after_reading'),
keep_ip_during => $c->config('keep_ip_during'),
stop_upload => (-f 'stop-upload' || -f 'stop-upload.manual') ? true : false,
need_authentication => (defined($c->config('ldap')) || defined($c->config('htpasswd'))) ? true : false,
version => $c->git_version
}
);
}
sub js_files {

View File

@ -148,13 +148,37 @@ sub delete {
$c->slices->each(sub {
my ($e, $num) = @_;
unlink $e->path;
$e->delete_file();
});
rmdir Mojo::File->new($c->app->config('upload_dir'), $c->short);
$c->deleted(1);
$c->delete_path
->deleted(1)
->write;
$c->write;
return $c;
}
=head2 delete_path
=over 1
=item B<Usage> : C<$c-E<gt>delete_path()>
=item B<Arguments> : none
=item B<Purpose> : delete the directory of the slices on filesystem or Swift object storage
=item B<Returns> : the db accessor object
=back
=cut
sub delete_path {
my $c = shift;
if (!defined($c->app->config('swift'))) {
rmdir Mojo::File->new($c->app->config('upload_dir'), $c->short);
}
return $c;
}

View File

@ -1,14 +1,17 @@
# vim:set sw=4 ts=4 sts=4 ft=perl expandtab:
package Lufi::DB::Slice;
use Mojo::Base -base;
use Encode 'encode';
use File::Spec::Functions;
use Mojo::Collection 'c';
has 'short';
has 'j';
has 'path';
has 'record' => 0;
has 'app';
=encoding utf8
=head1 NAME
Lufi::DB::Slice - DB abstraction layer for Lufi file
@ -28,8 +31,6 @@ Have a look at Lufi::DB::Slice::SQLite's code: it's simple and may be more under
=item B<j> : integer
=item B<path> : string
=item B<app> : A mojolicious object
=back
@ -96,15 +97,121 @@ sub write {
my $c = shift;
if ($c->record) {
$c->app->dbi->db->query('UPDATE slices SET short = ?, j = ?, path = ? WHERE short = ? AND j = ?', $c->short, $c->j, $c->path, $c->short, $c->j);
$c->app->dbi->db->query('UPDATE slices SET short = ?, j = ? WHERE short = ? AND j = ?', $c->short, $c->j, $c->short, $c->j);
} else {
$c->app->dbi->db->query('INSERT INTO slices (short, j, path) VALUES (?, ?, ?)', $c->short, $c->j, $c->path);
$c->app->dbi->db->query('INSERT INTO slices (short, j) VALUES (?, ?)', $c->short, $c->j);
$c->record(1);
}
return $c;
}
=head2 store
=over 1
=item B<Usage> : C<$c-E<gt>store($text)>
=item B<Arguments> : a scalar value
=item B<Purpose> : will store the content to the object's path, either on filesystem or on Swift object storage
=item B<Returns> : the db accessor object
=back
=cut
sub store {
my $c = shift;
my $text = shift;
if ($c->app->config('swift')) {
$c->app->swift->put_object(
container_name => $c->app->config('swift')->{container},
object_name => $c->get_path(),
content_length => length(Encode::encode_utf8($text)),
content => Encode::encode_utf8($text)
);
} else {
# Create directory
my $dir = catfile($c->app->config('upload_dir'), $c->short);
mkdir($dir, 0700) unless (-d $dir);
# Write file
my $file = catfile($c->app->config('upload_dir'), $c->get_path());
Mojo::File->new($file)->spurt($text);
}
return $c;
}
=head2 retrieve
=over 1
=item B<Usage> : C<$c-E<gt>retrieve>
=item B<Arguments> : none
=item B<Purpose> : get file from storage, either filesystem or Swift object storage
=item B<Returns> : the data from the file
=back
=cut
sub retrieve {
my $c = shift;
my $upload = shift;
if ($c->app->config('swift')) {
my $file;
$c->app->swift->get_object(
container_name => $c->app->config('swift')->{container},
object_name => $c->get_path(),
write_code => sub {
my ($status, $message, $headers, $chunk) = @_;
$file .= $chunk;
}
);
return Encode::decode_utf8($file);
} else {
my $file = catfile($c->app->config('upload_dir'), $c->get_path());
return Mojo::File->new($file)->slurp;
}
}
=head2 delete_file
=over 1
=item B<Usage> : C<$c-E<gt>delete_file()>
=item B<Arguments> : none
=item B<Purpose> : delete the file on filesystem or Swift object storage
=item B<Returns> : the db accessor object
=back
=cut
sub delete_file {
my $c = shift;
if ($c->app->config('swift')) {
$c->app->swift->delete_object({
container_name => $c->app->config('swift')->{container},
object_name => $c->get_path()
});
} else {
my $file = catfile($c->app->config('upload_dir'), $c->get_path());
unlink $file or warn sprintf('Could not unlink %s: %s', $file, $!);
}
return $c;
}
=head2 get_slices_of_file
=over 1
@ -147,7 +254,7 @@ sub get_slices_of_file {
=item B<Arguments> : none
=item B<Purpose> : delete all file records from database unconditionnally
=item B<Purpose> : delete all slices records from database unconditionnally
=item B<Returns> : nothing
@ -161,6 +268,50 @@ sub delete_all {
$c->app->dbi->db->delete('slices');
}
=head2 path
=over 1
=item B<Usage> : C<$c-E<gt>path()>
=item B<Arguments> : non
=item B<Purpose> : format the path of the file, relative to the directory of the Swift object storage
=item B<Returns> : the path of the file
=back
=cut
sub get_path {
my $c = shift;
return catfile($c->short, sprintf('%d.part', $c->j));
}
=head2 count
=over 1
=item B<Usage> : C<$c-E<gt>count()>
=item B<Arguments> : none
=item B<Purpose> : get count of slices records from database
=item B<Returns> : integer
=back
=cut
sub count {
my $c = shift;
return $c->app->dbi->db->query('SELECT count(*) AS count FROM slices')->hashes->first->{count};
}
=head2 _slurp
=over 1
@ -195,7 +346,6 @@ sub _slurp {
if ($slice) {
$c->short($slice->{short});
$c->j($slice->{j});
$c->path($slice->{path});
$c->record(1);
}

View File

@ -7,6 +7,8 @@ sub new {
$c = $c->SUPER::new(@_);
$c = $c->_slurp if defined $c->record;
return $c;
}

View File

@ -7,6 +7,8 @@ sub new {
$c = $c->SUPER::new(@_);
$c = $c->_slurp if defined $c->record;
return $c;
}

View File

@ -69,14 +69,15 @@ sub register {
$app->helper(create_invitation_token => \&_create_invitation_token);
$app->helper(is_guest => \&_is_guest);
$app->helper(get_date_lang => \&_get_date_lang);
$app->helper(git_version => \&_git_version);
}
sub _pg {
my $c = shift;
my $pgdb = $c->config('pgdb');
my $port = (defined $pgdb->{port}) ? $pgdb->{port}: 5432;
my $addr = $c->pg_url({
my $pgdb = $c->config('pgdb');
my $port = (defined $pgdb->{port}) ? $pgdb->{port}: 5432;
my $addr = $c->pg_url({
host => $pgdb->{host}, port => $port, database => $pgdb->{database}, user => $pgdb->{user}, pwd => $pgdb->{pwd}
});
state $pg = Mojo::Pg->new($addr);
@ -85,11 +86,11 @@ sub _pg {
}
sub _mysql {
my $c = shift;
my $c = shift;
my $mysqldb = $c->config('mysqldb');
my $port = (defined $mysqldb->{port}) ? $mysqldb->{port}: 3306;
my $addr = $c->pg_url({
my $mysqldb = $c->config('mysqldb');
my $port = (defined $mysqldb->{port}) ? $mysqldb->{port}: 3306;
my $addr = $c->pg_url({
host => $mysqldb->{host}, port => $port, database => $mysqldb->{database}, user => $mysqldb->{user}, pwd => $mysqldb->{pwd}
});
$addr =~ s/postgresql/mysql/;
@ -123,7 +124,7 @@ sub _provisioning {
}
sub _get_empty {
my $c = shift;
my $c = shift;
my $ldfile = Lufi::DB::File->new(app => $c->app)->get_empty;
@ -219,7 +220,7 @@ my %date_langs = (
);
sub _get_date_lang {
my $c = shift;
my $c = shift;
my $l = $c->languages();
@ -231,4 +232,18 @@ sub _get_date_lang {
return Date::Language->new('English');
}
sub _git_version {
my $c = shift;
my $last_tag = `git describe --abbrev=0`;
my $last_commit = `git rev-parse HEAD`;
chomp $last_tag;
chomp $last_commit;
return {
tag => $last_tag,
commit => $last_commit
}
}
1;

View File

@ -27,6 +27,9 @@ sub startup {
# Compress static assets
$self->plugin('GzipStatic');
# Fiat Tux helpers
$self->plugin('FiatTux::Helpers');
# Headers
$self->plugin('Lufi::Plugin::Headers');

View File

@ -99,14 +99,30 @@
# 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'],
#allowed_domains => ['http://1.example.com', 'http://2.example.com'],
# Define a path to the upload directory, where the uploaded files will be stored
# You can define it relative to lufi directory or set an absolute path
# Remember that it has to be in a directory writable by Lufi user
# DO NOT CHANGE THIS IF FILES HAVE BEEN ALREADY UPLOADED: THEY WILL NOT BE DOWNLOADABLE ANYMORE
# optional, default is 'files'
#upload_dir => 'files',
#upload_dir => 'files',
#!!!!!!!!!!!!!!!
# EXPERIMENTAL !
#!!!!!!!!!!!!!!!
# You can store files on Swift object storage (https://en.wikipedia.org/wiki/OpenStack#Swift) instead of filesystem
# Please read https://metacpan.org/pod/Net::OpenStack::Swift#SYNOPSIS to know how to configure this setting
# IMPORTANT: add a `container` key in it, to let Lufi know which container to use. This is not a regular Net::OpenStack::Swift setting, but Lufi need it.
# EXPERIMENTAL: if the upload or download of files are stucked, reload Lufi and create a cron task to reload Lufi once a day
# You can copy Lufi files to Swift object storage by launching the command `carton exec script/lufi copyFilesToSwift` (can take a long time)
# optional, no default
#swift => {
# auth_url => 'https://auth-endpoint-url/v2.0',
# user => 'userid',
# password => 'password',
# tenant_name => 'project_id',
# container => 'lufi'
#},
# Allow to add a password on files, asked before allowing to download files
# optional, default is 0

View File

@ -32,6 +32,10 @@
# optional, default is ['fdjsofjoihrei'], PLEASE, CHANGE IT
#secrets => ['fdjsofjoihrei'],
# Name of the instance, displayed next to the logo
# optional, default is Lufi
#instance_name => 'Lufi',
# Choose a theme. See the available themes in `themes` directory
# Optional, default is 'default'
#theme => 'default',
@ -97,10 +101,6 @@
# optional, no domains allowed by default
#allowed_domains => ['http://1.example.com', 'http://2.example.com'],
# If set, the shortened URLs will use this domain
# optional
#fixed_domain => 'example.org',
# Define a path to the upload directory, where the uploaded files will be stored
# You can define it relative to lufi directory or set an absolute path
# Remember that it has to be in a directory writable by Lufi user
@ -108,6 +108,12 @@
# optional, default is 'files'
#upload_dir => 'files',
# You can store files on Swift object storage (https://en.wikipedia.org/wiki/OpenStack#Swift) instead of filesystem
# Please read https://metacpan.org/pod/Net::OpenStack::Swift#SYNOPSIS to know how to configure this setting
# IMPORTANT: add a `container` key in it, to let Lufi know which container to use. This is not a regular Net::OpenStack::Swift setting, but Lufi need it.
# optional, no default
#swift => { auth_url => 'http://swiftstack-picoswiftstack:8080/auth/v1.0', user => 'test', password => 'test', container => 'lufi', auth_version => '1.0' },
# Allow to add a password on files, asked before allowing to download files
# optional, default is 0
allow_pwd_on_files => 1,
@ -228,11 +234,47 @@
#
# Define the attributes like this: `lufi_attribute_name => 'LDAP_attribute_name'`
# Note that you cant use `username` as a Lufi attribute name: this name is reserved and will contain the login of the user
# optional, no default
#ldap_map_attr => {
# displayname => 'cn',
# mail => 'mail'
#},
# When using LDAP authentication, LDAP users can invite people (by mail) to use Lufi to send them files without
# being authenticated.
# This is where you configure the behavior of the invitations.
# You may need to fetch some attributes from LDAP to use some invitations settings. See `ldap_map_attr` above.
# optional, no default
#invitations => {
# # The name of the key set in `ldap_map_attr` (above) that corresponds to the mail of the LDAP user
# # optional, default is `mail`
# mail_attr => 'mail',
# # The `From` header of invitation mail can be the mail of the LDAP user
# # Be sure to have a mail system that will correctly send the mail from your users! (DKIM, SPF…)
# # To enable this feature, set it to 1
# # optional, disabled by default
# send_invitation_with_ldap_user_mail => 1,
# # The user is able to set an expiration delay for the invitation.
# # This expiration delay cant be more than this setting (in days).
# # optional, default is 30 days
# max_invitation_expiration_delay => 30,
# # Once the guest has submitted his files, he has an additional period of time to submit forgotten files.
# # You can set that additional period of time in minutes here.
# # To disable that feature, set it to 0 or less
# # optional, default is 10 minutes
# max_additional_period => 10,
# # Lufi follows privacy-by-design, so, by default, no files URLs (with the decode secret) are stored in database.
# # However, the concern is different for this case. Storing files URLs makes users able to retrieve the guests sent files
# # from their `invitations` page.
# # Set to 1 to store guests files URLs in database
# # optional, default is 0 (disabled)
# save_files_url_in_db => 0,
# # Users can resend the invitation to their guest. This does not extend the invitations expiration delay unless you
# # set this option to 1.
# # optional, default is 0 (disabled)
# extend_invitation_expiration_on_resend => 0,
#},
#########################
# Htpasswd authentication
#########################

View File

@ -32,6 +32,10 @@
# optional, default is ['fdjsofjoihrei'], PLEASE, CHANGE IT
#secrets => ['fdjsofjoihrei'],
# Name of the instance, displayed next to the logo
# optional, default is Lufi
#instance_name => 'Lufi',
# Choose a theme. See the available themes in `themes` directory
# Optional, default is 'default'
#theme => 'default',
@ -97,10 +101,6 @@
# optional, no domains allowed by default
#allowed_domains => ['http://1.example.com', 'http://2.example.com'],
# If set, the shortened URLs will use this domain
# optional
#fixed_domain => 'example.org',
# Define a path to the upload directory, where the uploaded files will be stored
# You can define it relative to lufi directory or set an absolute path
# Remember that it has to be in a directory writable by Lufi user
@ -108,6 +108,12 @@
# optional, default is 'files'
#upload_dir => 'files',
# You can store files on Swift object storage (https://en.wikipedia.org/wiki/OpenStack#Swift) instead of filesystem
# Please read https://metacpan.org/pod/Net::OpenStack::Swift#SYNOPSIS to know how to configure this setting
# IMPORTANT: add a `container` key in it, to let Lufi know which container to use. This is not a regular Net::OpenStack::Swift setting, but Lufi need it.
# optional, no default
#swift => { auth_url => 'http://swiftstack-picoswiftstack:8080/auth/v1.0', user => 'test', password => 'test', container => 'lufi', auth_version => '1.0' },
# Allow to add a password on files, asked before allowing to download files
# optional, default is 0
allow_pwd_on_files => 1,
@ -172,6 +178,7 @@
#port => 5432,
user => 'lufi',
pwd => 'lufi_pwd'
# # https://mojolicious.org/perldoc/Mojo/Pg#max_connections
# # optional, default is 1
# #max_connections => 1,
},
@ -212,11 +219,47 @@
#
# Define the attributes like this: `lufi_attribute_name => 'LDAP_attribute_name'`
# Note that you cant use `username` as a Lufi attribute name: this name is reserved and will contain the login of the user
# optional, no default
#ldap_map_attr => {
# displayname => 'cn',
# mail => 'mail'
#},
# When using LDAP authentication, LDAP users can invite people (by mail) to use Lufi to send them files without
# being authenticated.
# This is where you configure the behavior of the invitations.
# You may need to fetch some attributes from LDAP to use some invitations settings. See `ldap_map_attr` above.
# optional, no default
#invitations => {
# # The name of the key set in `ldap_map_attr` (above) that corresponds to the mail of the LDAP user
# # optional, default is `mail`
# mail_attr => 'mail',
# # The `From` header of invitation mail can be the mail of the LDAP user
# # Be sure to have a mail system that will correctly send the mail from your users! (DKIM, SPF…)
# # To enable this feature, set it to 1
# # optional, disabled by default
# send_invitation_with_ldap_user_mail => 1,
# # The user is able to set an expiration delay for the invitation.
# # This expiration delay cant be more than this setting (in days).
# # optional, default is 30 days
# max_invitation_expiration_delay => 30,
# # Once the guest has submitted his files, he has an additional period of time to submit forgotten files.
# # You can set that additional period of time in minutes here.
# # To disable that feature, set it to 0 or less
# # optional, default is 10 minutes
# max_additional_period => 10,
# # Lufi follows privacy-by-design, so, by default, no files URLs (with the decode secret) are stored in database.
# # However, the concern is different for this case. Storing files URLs makes users able to retrieve the guests sent files
# # from their `invitations` page.
# # Set to 1 to store guests files URLs in database
# # optional, default is 0 (disabled)
# save_files_url_in_db => 0,
# # Users can resend the invitation to their guest. This does not extend the invitations expiration delay unless you
# # set this option to 1.
# # optional, default is 0 (disabled)
# extend_invitation_expiration_on_resend => 0,
#},
#########################
# Htpasswd authentication
#########################

View File

@ -32,6 +32,10 @@
# optional, default is ['fdjsofjoihrei'], PLEASE, CHANGE IT
#secrets => ['fdjsofjoihrei'],
# Name of the instance, displayed next to the logo
# optional, default is Lufi
#instance_name => 'Lufi',
# Choose a theme. See the available themes in `themes` directory
# Optional, default is 'default'
#theme => 'default',
@ -97,10 +101,6 @@
# optional, no domains allowed by default
#allowed_domains => ['http://1.example.com', 'http://2.example.com'],
# If set, the shortened URLs will use this domain
# optional
#fixed_domain => 'example.org',
# Define a path to the upload directory, where the uploaded files will be stored
# You can define it relative to lufi directory or set an absolute path
# Remember that it has to be in a directory writable by Lufi user
@ -108,6 +108,12 @@
# optional, default is 'files'
#upload_dir => 'files',
# You can store files on Swift object storage (https://en.wikipedia.org/wiki/OpenStack#Swift) instead of filesystem
# Please read https://metacpan.org/pod/Net::OpenStack::Swift#SYNOPSIS to know how to configure this setting
# IMPORTANT: add a `container` key in it, to let Lufi know which container to use. This is not a regular Net::OpenStack::Swift setting, but Lufi need it.
# optional, no default
#swift => { auth_url => 'http://swiftstack-picoswiftstack:8080/auth/v1.0', user => 'test', password => 'test', container => 'lufi', auth_version => '1.0' },
# Allow to add a password on files, asked before allowing to download files
# optional, default is 0
allow_pwd_on_files => 1,
@ -217,11 +223,47 @@
#
# Define the attributes like this: `lufi_attribute_name => 'LDAP_attribute_name'`
# Note that you cant use `username` as a Lufi attribute name: this name is reserved and will contain the login of the user
# optional, no default
#ldap_map_attr => {
# displayname => 'cn',
# mail => 'mail'
#},
# When using LDAP authentication, LDAP users can invite people (by mail) to use Lufi to send them files without
# being authenticated.
# This is where you configure the behavior of the invitations.
# You may need to fetch some attributes from LDAP to use some invitations settings. See `ldap_map_attr` above.
# optional, no default
#invitations => {
# # The name of the key set in `ldap_map_attr` (above) that corresponds to the mail of the LDAP user
# # optional, default is `mail`
# mail_attr => 'mail',
# # The `From` header of invitation mail can be the mail of the LDAP user
# # Be sure to have a mail system that will correctly send the mail from your users! (DKIM, SPF…)
# # To enable this feature, set it to 1
# # optional, disabled by default
# send_invitation_with_ldap_user_mail => 1,
# # The user is able to set an expiration delay for the invitation.
# # This expiration delay cant be more than this setting (in days).
# # optional, default is 30 days
# max_invitation_expiration_delay => 30,
# # Once the guest has submitted his files, he has an additional period of time to submit forgotten files.
# # You can set that additional period of time in minutes here.
# # To disable that feature, set it to 0 or less
# # optional, default is 10 minutes
# max_additional_period => 10,
# # Lufi follows privacy-by-design, so, by default, no files URLs (with the decode secret) are stored in database.
# # However, the concern is different for this case. Storing files URLs makes users able to retrieve the guests sent files
# # from their `invitations` page.
# # Set to 1 to store guests files URLs in database
# # optional, default is 0 (disabled)
# save_files_url_in_db => 0,
# # Users can resend the invitation to their guest. This does not extend the invitations expiration delay unless you
# # set this option to 1.
# # optional, default is 0 (disabled)
# extend_invitation_expiration_on_resend => 0,
#},
#########################
# Htpasswd authentication
#########################

View File

@ -1,7 +1,7 @@
# vim:set sw=4 ts=4 sts=4 ft=perl expandtab:
use Mojo::Base -strict;
use Mojo::File;
use Mojo::JSON qw(to_json from_json true);
use Mojo::JSON qw(to_json from_json true false);
use Mojolicious;
use Test::More;
@ -13,18 +13,19 @@ use FindBin qw($Bin);
my ($m, $cfile, $config_orig, $config_file, $config_content);
my $msg = to_json {
my $msg = Encode::encode_utf8(to_json {
"total" => 1,
"part" => 0,
"size" => 7,
"name" => "foobar.txt",
"name" => "foobaré.txt",
"type" => "text/plain",
"delay" => "0",
"del_at_first_view" => 1,
"id" => undef,
"zipped" => 0,
"i" => 0
};
});
my $filename_test = Encode::encode_utf8('foobaré');
my $encrypted = '"{\\"iv\\":\\"2RGAviAeYybBqcLCmnqlgA==\\",\\"v\\":1,\\"iter\\":10000,\\"ks\\":128,\\"ts\\":64,\\"mode\\":\\"ccm\\",\\"adata\\":\\"\\",\\"cipher\\":\\"aes\\",\\"salt\\":\\"1dvKtbZ8hxA=\\",\\"ct\\":\\"w9wDZCwNSyH/yL7q1GW5fPSdi+w=\\"}"';
my $encrypted_rgx = $encrypted;
$encrypted_rgx =~ s@\\@\\\\@g;
@ -77,6 +78,9 @@ BEGIN {
Lufi::DB::Slice->new(app => $m)->delete_all;
Lufi::DB::File->new(app => $m)->delete_all;
$config_file = Mojo::File->new($cfile->to_abs->to_string);
$config_orig = $config_file->slurp;
my $t = Test::Mojo->new('Lufi');
## Wait for short generation
@ -87,24 +91,60 @@ $t->get_ok('/')
->status_is(200)
->content_like(qr@Lufi@i);
test_infos_api(false);
test_upload_file();
test_download_file();
## Test htpasswd
switch_to_htpasswd();
test_infos_api(true);
auth_test_suite('luc', 'toto');
restore_config();
## Test LDAP
switch_to_ldap();
test_infos_api(true);
auth_test_suite('zoidberg', 'zoidberg');
restore_config();
## Test Swift object storage
switch_to_swift();
test_upload_file();
test_download_file();
restore_config();
done_testing();
######
### Functions
##
sub test_infos_api {
my $auth = shift;
$t->get_ok('/about/config')
->status_is(200)
->json_has(
'/allow_pwd_on_files', '/need_authentication', '/max_delay',
'/instance_name', '/broadcast_message', '/max_file_size',
'/keep_ip_during', '/report', '/stop_upload',
'/delay_for_size', '/default_delay', '/force_burn_after_reading'
)
->json_is(
'/allow_pwd_on_files' => 1,
'/need_authentication' => $auth,
'/max_delay' => 0,
'/instance_name' => 'Lufi',
'/broadcast_message' => undef,
'/max_file_size' => undef,
'/keep_ip_during' => 365,
'/report' => 'mailto:report@example.com',
'/stop_upload' => false,
'/delay_for_size' => undef,
'/default_delay' => 0,
'/force_burn_after_reading' => 0
);
}
sub test_upload_file {
$t->websocket_ok('/upload/')
->send_ok($msg.'XXMOJOXX'.$encrypted)
@ -115,7 +155,7 @@ sub test_upload_file {
->message_like(qr@"duration":\d+@)
->message_like(qr@"i":0@)
->message_like(qr@"j":0@)
->message_like(qr@"name":"foobar\.txt"@)
->message_like(qr@"name":"$filename_test\.txt"@)
->message_like(qr@"parts":1@)
->message_like(qr@"sent_delay":0@)
->message_like(qr@"short":"[^"]+"@)
@ -153,7 +193,7 @@ sub test_download_file {
->message_like(qr@"id":null@)
->message_like(qr@"del_at_first_view":1@)
->message_like(qr@"delay":"0"@)
->message_like(qr@"name":"foobar\.txt"@)
->message_like(qr@"name":"$filename_test\.txt"@)
->message_like(qr@"size":7@)
->message_like(qr@"type":"text\\/plain"@)
->message_like(qr@XXMOJOXX@)
@ -233,9 +273,7 @@ sub restore_config {
}
sub switch_to_htpasswd {
$config_file = Mojo::File->new($cfile->to_abs->to_string);
$config_content = $config_file->slurp;
$config_orig = $config_content;
$config_content = $config_orig;
$config_content =~ s/#?htpasswd.*/htpasswd => 't\/lufi.passwd',/gm;
$config_file->spurt($config_content);
@ -261,3 +299,17 @@ sub switch_to_ldap {
## Wait for short generation
sleep 5;
}
sub switch_to_swift {
$config_content = $config_orig;
$config_content =~ s/^( +)#?swift => \{ auth_url/$1swift => { auth_url/gm;
$config_file->spurt($config_content);
Lufi::DB::Slice->new(app => $m)->delete_all;
Lufi::DB::File->new(app => $m)->delete_all;
$t = Test::Mojo->new('Lufi');
## Wait for short generation
sleep 5;
}

View File

@ -5,16 +5,17 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n"
"PO-Revision-Date: 2020-05-30 12:24+0000\n"
"Last-Translator: ButterflyOfFire <butterflyoffire@protonmail.com>\n"
"Language-Team: Arabic <https://weblate.framasoft.org/projects/lufi/"
"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"
"PO-Revision-Date: 2019-08-09 08:47+0000\n"
"Last-Translator: ButterflyOfFire <butterflyoffire@protonmail.com>\n"
"Language: ar\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: Zanata 4.6.2\n"
"Language-Team: Arabic\n"
"X-Generator: Weblate 3.11.2\n"
#. ($delay)
#. (max_delay)
@ -78,7 +79,7 @@ msgstr "إضافة كلمة سرية إلى الملف"
msgid ""
"Adding URLs not related to this Lufi instance to the mail body or subject is "
"prohibited."
msgstr ""
msgstr "يُحظر إضافة رابط غير مرتبط بسيرفر Lufi هذا في نص البريد أو في الموضوع."
#: themes/default/templates/partial/invitations.js.ep:3
msgid "Are you sure you want to delete the selected invitations?"
@ -101,7 +102,7 @@ msgstr ""
#. (stash('nbslices')
#: themes/default/templates/partial/render.js.ep:9
msgid "Asking for file part XX1 of %1"
msgstr "طلب الجزء XX1 مِن %1 "
msgstr "طلب الجزء XX1 مِن %1"
#: themes/default/templates/about.html.ep:20
msgid "Back to homepage"
@ -137,7 +138,7 @@ msgstr "عناوين البريد الإلكترونية مُقسّمة بفاص
#: themes/default/templates/index.html.ep:140
msgid "Compressing zip file…"
msgstr "جارٍ ضغط ملف zip..."
msgstr "جارٍ ضغط ملف zip"
#: themes/default/templates/partial/index.js.ep:15
msgid "Copy all links to clipboard"
@ -192,6 +193,8 @@ msgid ""
"Don't worry: if a user begins to download the file before the expiration and "
"the download ends after the expiration, he will be able to get the file."
msgstr ""
"لا تقلق: إذا بدأ المستخدم في تنزيل الملف قبل انتهاء صلاحيته وانتهت عملية "
"التنزيل بعد انتهاء صلاحيته ، فسيتمكن من الحصول على الملف."
#: themes/default/templates/partial/index.js.ep:21 themes/default/templates/render.html.ep:28
msgid "Download"
@ -213,6 +216,9 @@ msgid ""
"people you want to share the file with and a deletion link, allowing you to "
"delete the file whenever you want."
msgstr ""
"اسحب الملفات إلى الحقل المخصص لذلك أو حدد ملفًا بطريقة كلاسيكية وسيتم قص "
"الملفات إلى أجزاء مشفرة وإرسالها إلى الخادم. ستحصل على روابط لكل ملف: رابط "
"للتنزيل ورابط لحذف الملف عند الحاجة لذلك."
#: themes/default/templates/index.html.ep:122
msgid "Drop files here"
@ -264,7 +270,7 @@ msgstr "تنتهي صلاحيته في"
#: themes/default/templates/files.html.ep:12
msgid "Export localStorage data"
msgstr ""
msgstr "تصدير بيانات localStorage"
#: lib/Lufi/Controller/Files.pm:471
msgid "File deleted"
@ -288,7 +294,7 @@ msgstr "تم إرسال الملف في"
#: themes/default/templates/partial/invitations.js.ep:8
msgid "Files sent in invitation XX1 by XX2"
msgstr ""
msgstr "الملفات المرسلة في الدعوة XX1 بواسطة XX2"
#: themes/default/templates/partial/render.js.ep:8
msgid "Get the file"
@ -364,7 +370,7 @@ msgstr ""
#: themes/default/templates/files.html.ep:14
msgid "Import localStorage data"
msgstr ""
msgstr "استيراد بيانات localStorage"
#: themes/default/templates/index.html.ep:53
msgid "Important: more information on delays"
@ -376,7 +382,7 @@ msgstr "معلومات حول التأخير"
#: themes/default/templates/files.html.ep:18 themes/default/templates/invitations/my_invitations.html.ep:12
msgid "Invert selection"
msgstr ""
msgstr "عكس الاختيار"
#. ($i->guest_mail, $url)
#: lib/Lufi/Controller/Invitation.pm:171
@ -426,6 +432,13 @@ msgid ""
"one.\\nDo you want to import those informations?\\n\\nPlease note that this "
"is the only time that we will ask you this."
msgstr ""
"Lufi مؤاخرا غير طريقه تخزين معلومات الملفات\\n"
"\\n"
"لم يتم العثور على ملفات في موقع التخزين المحلي الجديد ولكننا وجدنا ملفات في "
"الموقع القديم.\\n"
"هل تريد استيراد تلك المعلومات؟\\n"
"\\n"
"يرجى ملاحظة أن هذه هي المرة الوحيدة التي سنطلب فيها منك ذلك."
#: themes/default/templates/files.html.ep:34
msgid "Mail"
@ -463,6 +476,8 @@ msgid ""
"stored in localStorage: if you delete your localStorage data, you'll lose "
"this list."
msgstr ""
"سيتم سرد الملفات المرسلة باستخدام هذا المتصفح فقط هنا. يتم تخزين هذه القائمة "
"في التخزين المحلي: إذا قمت بحذف بيانات التخزين المحلية ، فستفقد هذه القائمة."
#: themes/default/templates/index.html.ep:106 themes/default/templates/login.html.ep:21 themes/default/templates/render.html.ep:26
msgid "Password"
@ -486,6 +501,8 @@ msgid ""
"Please, check your credentials or your right to access this service: unable "
"to authenticate."
msgstr ""
"من فضلك ، تحقق من بيناتك أو حقك في الوصول إلى هذه الخدمة: غير قادر على "
"التحقق."
#: themes/default/templates/about.html.ep:5
msgid "Privacy"
@ -541,6 +558,8 @@ msgid ""
"Sending part XX1 of XX2. Please, be patient, the progress bar can take a "
"while to move."
msgstr ""
"إرسال الجزء XX1 من XX2. يرجى التحلي بالصبر ، قد يستغرق شريط التقدم بعض الوقت "
"للتحرك."
#. (url_for('/')
#: themes/default/templates/partial/mail.js.ep:48
@ -553,7 +572,7 @@ msgstr "أظهر الدعوات المخفية"
#: themes/default/templates/partial/render.js.ep:11
msgid "Show zip content"
msgstr "أظهر محتوى الملف المضغوط zip"
msgstr "أظهر محتوى الملف المضغوط zip"
#: themes/default/templates/layouts/default.html.ep:40 themes/default/templates/layouts/default.html.ep:73 themes/default/templates/login.html.ep:28 themes/default/templates/logout.html.ep:17
msgid "Signin"
@ -603,6 +622,8 @@ msgid ""
"The body of the mail must contain at least one URL pointing to a file hosted "
"on this instance."
msgstr ""
"يجب أن يحتوي نص البريد على رابط واحد على الأقل يشير إلى ملف مستضاف على هذا "
"السيرفر."
#: themes/default/templates/partial/files.js.ep:11
msgid "The data has been successfully imported."
@ -619,7 +640,7 @@ msgstr "لا يمكن أن يُترك موضوع الرسالة فارغًا."
#. ($expire_at, $max_expire_at)
#: lib/Lufi/Controller/Invitation.pm:51
msgid "The expiration delay (%1) is not between 1 and %2 days."
msgstr ""
msgstr "مدة انتهاء الصلاحية (%1) ليس بين 1 و %2 أيام."
#: lib/Lufi/Controller/Files.pm:468
msgid "The file has already been deleted"
@ -649,6 +670,8 @@ msgid ""
"The invitation %1 cant be resent: %2 has already sent files.<br>Please "
"create a new invitation."
msgstr ""
"لا يمكن إعادة إرسال الدعوة %1: لقد أرسل %2 ملفات بالفعل. <br> الرجاء إنشاء "
"دعوة جديدة."
#. ($i->token)
#: lib/Lufi/Controller/Invitation.pm:130
@ -658,7 +681,7 @@ msgstr "لقد تم حذف الدعوة %1."
#. (stash('user_mail')
#: themes/default/templates/invitations/invite.html.ep:34
msgid "The invitation mail will be send from your email address (%1)."
msgstr ""
msgstr "سيتم إرسال بريد الدعوة من عنوان بريدك الإلكتروني (%1)."
#: themes/default/templates/partial/index.js.ep:16
msgid "The link(s) has been copied to your clipboard"
@ -668,12 +691,13 @@ msgstr "لقد تم نسخ الرابط أو الروابط إلى الحافظ
#: themes/default/templates/index.html.ep:30
msgid ""
"The link(s) of your file(s) will automatically be sent by mail to %1 (%2)"
msgstr ""
msgstr "سيتم إرسال الرابط (الروابط) لملفاتك تلقائيًا عن طريق البريد إلى %1 (%2)"
#. (stash('ldap_user')
#: themes/default/templates/invitations/invite.mail.ep:11
msgid "The links of your file(s) will automatically be sent by mail to %1."
msgstr ""
"سيتم إرسال الارتباط (الارتباطات) لملفاتك تلقائيًا عن طريق البريد إلى %1."
#: lib/Lufi/Controller/Mail.pm:97
msgid "The mail has been sent."
@ -692,6 +716,8 @@ msgid ""
"The server was unable to find the file record to add your file part to. "
"Please, contact the administrator."
msgstr ""
"لم يتمكن الخادم من العثور على سجل الملف لإضافة جزء ملفك إليه. من فضلك، تواصل "
"بالمسؤول."
#: lib/Lufi/Controller/Files.pm:295
msgid ""
@ -705,7 +731,7 @@ msgstr "الدعوة مخفية بشكل عادي"
#. (stash('expires')
#: themes/default/templates/invitations/invite.mail.ep:13
msgid "This invitation is valid until %1."
msgstr ""
msgstr "هذه الدعوة صالحة إلى غاية %1."
#: themes/default/templates/delays.html.ep:10
msgid ""
@ -713,10 +739,12 @@ msgid ""
"delay of your file will be the minimum between what you choose and the "
"following limitations:"
msgstr ""
"يضع هذا الخادم قيودًا وفقًا لحجم الملف. سيكون تأخير انتهاء صلاحية ملفك هو "
"الحد الأدنى بين ما تختاره والقيود التالية:"
#: themes/default/templates/invitations/my_invitations.html.ep:16
msgid "Toggle visibility"
msgstr ""
msgstr "تبديل الرؤية"
#: themes/default/templates/invitations/my_invitations.html.ep:25
msgid "URL"
@ -732,6 +760,7 @@ msgid ""
"Unable to get counter for %1. The file does not exists. It will be removed "
"from your localStorage."
msgstr ""
"تعذّر الحصول على عداد لـ %1. الملف غير موجود. ستتم إزالته من localStorage."
#. ($short)
#: lib/Lufi/Controller/Files.pm:429
@ -780,6 +809,8 @@ msgid ""
"You can invite someone to send you files through this Lufi instance even if "
"they dont have an account on it."
msgstr ""
"يمكنك دعوة شخص ما لإرسال الملفات إليك من خلال سيرفر Lufi هذا حتى إذا لم يكن "
"لديه حساب عليه."
#: themes/default/templates/about.html.ep:11
msgid ""
@ -791,7 +822,7 @@ msgstr ""
#: lib/Lufi/Controller/Mail.pm:42
msgid "You can't add URLs that are not related to this instance."
msgstr ""
msgstr "لا يمكنك إضافة روابط غير مرتبطة بهذا السيرفر."
#: themes/default/templates/about.html.ep:8
msgid ""
@ -808,6 +839,8 @@ msgid ""
"You don't seem to have a key in your URL. You won't be able to decrypt the "
"file. Download canceled."
msgstr ""
"يبدو أنك لا تملك مفتاحًا في الرابط الخاص بك. لن تتمكن من فك تشفير الملف. تم "
"إلغاء التنزيل."
#: themes/default/templates/partial/render.js.ep:7
msgid ""
@ -851,17 +884,17 @@ msgstr "الكلمة السرية غير صالحة. يرجى تحديث الص
#: themes/default/templates/partial/render.js.ep:12
msgid "Zip content:"
msgstr ""
msgstr "محتوى ملف Zip المضغوط:"
#. (format_bytes($keys[$i])
#: themes/default/templates/delays.html.ep:20
msgid "between %1 and %2, the file will be kept %3 day(s)."
msgstr ""
msgstr "بين %1 و %2، سيتم الاحتفاظ بالملف %1 يوم (أيام)."
#. (format_bytes($keys[$i])
#: themes/default/templates/delays.html.ep:22
msgid "between %1 and %2, the file will be kept forever."
msgstr ""
msgstr "بين %1 و%2 ، سيتم الاحتفاظ بالملف إلى الأبد."
#: themes/default/templates/partial/mail.js.ep:42
msgid "deadline: "
@ -874,12 +907,12 @@ msgstr "منتهية صلاحيتها في XXX"
#. (format_bytes($keys[$i])
#: themes/default/templates/delays.html.ep:26
msgid "for %1 and more, the file will be kept %2 day(s)"
msgstr ""
msgstr "ل%1 والمزيد ، سيتم الاحتفاظ بالملف %2 يوم (أيام)"
#. (format_bytes($keys[$i])
#: themes/default/templates/delays.html.ep:28
msgid "for %1 and more, the file will be kept forever."
msgstr ""
msgstr "ل%1 والمزيد ، سيتم الاحتفاظ بالملف إلى الأبد."
#: themes/default/templates/index.html.ep:3
msgid "no time limit"
@ -892,4 +925,41 @@ msgstr "أو"
#. ($e->{name}, format_bytes($e->{size})
#: themes/default/templates/invitations/notification_files_sent.mail.ep:12
msgid "— %1 (%2), that will expire on %3"
msgstr "— %1 (%2)، ستنتهي صلاحيته في %3"
#: themes/default/templates/about.html.ep:18
msgid "Get the source code on <a href=\"https://framagit.org/fiat-tux/hat-softwares/lufi\" class=\"classic\">the official repository</a> or on its <a href=\"https://github.com/ldidry/lufi\" class=\"classic\">Github mirror</a>"
msgstr ""
"احصل علي الكود من <a href=\"https://framagit.org/fiat-tux/hat-softwares/"
"lufi\" class=\"classic\"> المستودع الرسمي </a> او من <a href=\""
"https://github.com/ldidry/lufi\" class=\"classic\"> Github </a>"
#: themes/default/templates/partial/index.js.ep:24
msgid "File uploaded"
msgstr "تم رفع الملف"
#: themes/default/templates/partial/render.js.ep:9
msgid "File downloaded"
msgstr "تم تنزيل الملف"
#: themes/default/templates/about.html.ep:17
msgid "As Lufi is a free software licensed under of the terms of the <a href=\"https://gnu.org/licenses/agpl.html\" class=\"classic\">AGPLv3</a>, you can install it on you own server. Have a look on the <a href=\"https://framagit.org/fiat-tux/hat-softwares/lufi/wikis/home\" class=\"classic\">Wiki</a> for the procedure."
msgstr ""
"Lufi هو برنامج حر مرخص بموجب شروط <a href=\"https://gnu.org/licenses/agpl."
"html\" class=\"classic\"> AGPLv3</a> يمكنك تثبيته على خادمك الخاص. إلقي نظرة "
"على <a href=\"https://framagit.org/fiat-tux/hat-softwares/lufi/wikis/home\" "
"class=\"classic\"> الويكي</a> للتعرّف على كيفية القيام بذلك."
#: themes/default/templates/about.html.ep:20
msgid "Version"
msgstr "الإصدار"
#. (sprintf('<a href="https://framagit.org/fiat-tux/hat-softwares/lufi/-/releases/%s" class="classic">%s</a>', stash('version')
#: themes/default/templates/about.html.ep:21
msgid "Latest tag of this instance: %1"
msgstr "آخر علامة على مثيل الخادم هذا: %1"
#. (sprintf('<a href="https://framagit.org/fiat-tux/hat-softwares/lufi/-/commit/%s" class="classic">%s</a>', stash('version')
#: themes/default/templates/about.html.ep:22
msgid "Latest commit of this instance: %1"
msgstr "آخر مراجعة على مثيل الخادم هذا: %1"

View File

@ -10,15 +10,16 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n"
"PO-Revision-Date: 2020-03-22 18:29+0000\n"
"Last-Translator: Luc Didry <luc@framasoft.org>\n"
"Language-Team: Catalan <https://weblate.framasoft.org/projects/lufi/"
"default-theme/ca/>\n"
"Language: ca\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"PO-Revision-Date: 2019-04-19 04:55+0000\n"
"Last-Translator: Luc Didry <luc@framasoft.org>\n"
"Language-Team: català; valencià <>\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Zanata 4.6.2\n"
"Language: ca\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 3.11.2\n"
#. ($delay)
#. (max_delay)
@ -126,7 +127,7 @@ msgstr "Token CSRF incorrect."
#: themes/default/templates/partial/render.js.ep:5
msgid "Click here to refresh the page and restart the download."
msgstr "Premeu aquí per tal de refrescar la pàgina i reiniciar la descàrrega"
msgstr "Premeu aquí per tal de refrescar la pàgina i reiniciar la descàrrega."
#: themes/default/templates/invitations/invite.mail.ep:8
msgid "Click on the following URL to upload files on Lufi:"
@ -134,7 +135,7 @@ msgstr ""
#: themes/default/templates/index.html.ep:126
msgid "Click to open the file browser"
msgstr "Premeu per obrir la selecció de fitxer."
msgstr "Premeu per obrir el navegador de fitxers"
#: themes/default/templates/delays.html.ep:38 themes/default/templates/invitations/my_invitations.html.ep:80
msgid "Close"
@ -230,11 +231,11 @@ msgstr ""
"servidor. Obtindreu dos enllaços per a cada fitxer: un enllaç per a la "
"descàrrega, que doneu a la gent amb qui voleu compartir el fitxer, i un "
"enllaç per a l'eliminació, que us permet eliminar el fitxer del servidor "
"quan vulgueu. "
"quan vulgueu."
#: themes/default/templates/index.html.ep:122
msgid "Drop files here"
msgstr "Deixeu anar aquí fitxers."
msgstr "Deixeu anar aquí fitxers"
#: themes/default/templates/invitations/invite.html.ep:40
msgid "Email address of your guest"
@ -337,7 +338,10 @@ msgstr ""
#: themes/default/templates/partial/mail.js.ep:35
msgid "Hello,\\n\\nHere's some files I want to share with you:\\n"
msgstr "Hola,\\n\\nVe't aquí uns fitxers que vull compartir amb tu:"
msgstr ""
"Hola,\\n"
"\\n"
"Ve't aquí uns fitxers que vull compartir amb tu:\\n"
#: themes/default/templates/mail.html.ep:35
msgid "Here's some files"
@ -473,7 +477,7 @@ msgstr ""
#. (format_bytes($json->{size})
#: lib/Lufi/Controller/Files.pm:108
msgid "No enough space available on the server for this file (size: %1)."
msgstr "No hi ha prou espai al servidor per a aquest fitxer (mida: %1)"
msgstr "No hi ha prou espai al servidor per a aquest fitxer (mida: %1)."
#: themes/default/templates/partial/files.js.ep:10 themes/default/templates/partial/index.js.ep:28
msgid "No expiration delay"
@ -518,7 +522,7 @@ msgstr "Privacitat"
#: themes/default/templates/files.html.ep:13
msgid "Purge expired files from localStorage"
msgstr "Netegeu els fitxers expirats de l'emmagatzematge local."
msgstr "Netegeu els fitxers expirats de l'emmagatzematge local"
#: themes/default/templates/invitations/notification_files_sent.mail.ep:20
msgid "Regards,"
@ -569,7 +573,7 @@ msgid ""
"while to move."
msgstr ""
"S'està enviant el tros XX1 de XX2. Si us plau, paciència; la barra de "
"progrés pot trigar una mica a bellugar-se. "
"progrés pot trigar una mica a bellugar-se."
#. (url_for('/')
#: themes/default/templates/partial/mail.js.ep:48
@ -601,7 +605,7 @@ msgstr ""
#: lib/Lufi/Controller/Files.pm:82
msgid "Sorry, uploading is disabled."
msgstr "Disculpeu, les pujades estan deshabilitades"
msgstr "Disculpeu, les pujades estan deshabilitades."
#: themes/default/templates/invitations/exception.html.ep:7
msgid "Sorry, your invitation has expired or has been deleted."
@ -624,8 +628,8 @@ msgid ""
"The administrator can only see the file's name, its size and its mimetype "
"(what kind of file it is: video, text, etc.)."
msgstr ""
"L'administrador només pot veure el nom del fitxer, la seva mida i el seu\n"
"mimetype (quina mena de fitxer és: vídeo, text, etc.)"
"L'administrador només pot veure el nom del fitxer, la seva mida i el seu "
"mimetype (quina mena de fitxer és: vídeo, text, etc.)."
#: lib/Lufi/Controller/Mail.pm:53
msgid ""
@ -763,7 +767,7 @@ msgstr ""
#: themes/default/templates/partial/index.js.ep:17
msgid "Unable to copy the link(s) to your clipboard"
msgstr "No s'han pogut copiar l'enllaç o els enllaços al porta-retalls."
msgstr "No s'han pogut copiar l'enllaç o els enllaços al porta-retalls"
#. ($short)
#: lib/Lufi/Controller/Files.pm:439
@ -910,7 +914,7 @@ msgstr "entre %1 i %2, el fitxer es mantindrà per sempre al servidor."
#: themes/default/templates/partial/mail.js.ep:42
msgid "deadline: "
msgstr "termini:"
msgstr "termini: "
#: themes/default/templates/partial/invitations.js.ep:5
msgid "expires on XXX"
@ -919,7 +923,7 @@ msgstr ""
#. (format_bytes($keys[$i])
#: themes/default/templates/delays.html.ep:26
msgid "for %1 and more, the file will be kept %2 day(s)"
msgstr "a partir de %1, el fitxer es mantindrà %2 dia/es al servidor "
msgstr "a partir de %1, el fitxer es mantindrà %2 dia/es al servidor"
#. (format_bytes($keys[$i])
#: themes/default/templates/delays.html.ep:28
@ -938,3 +942,20 @@ msgstr "o"
#: themes/default/templates/invitations/notification_files_sent.mail.ep:12
msgid "— %1 (%2), that will expire on %3"
msgstr ""
#: themes/default/templates/about.html.ep:18
msgid "Get the source code on <a href=\"https://framagit.org/fiat-tux/hat-softwares/lufi\" class=\"classic\">the official repository</a> or on its <a href=\"https://github.com/ldidry/lufi\" class=\"classic\">Github mirror</a>"
msgstr ""
"Obteniu el codi font al <a href=\"https://framagit.org/fiat-tux/"
"hat-softwares/lufi\" class=\"classic\">repositori oficial</a> o a la seva <a "
"href=\"https://github.com/ldidry/lufi\" class=\"classic\">rèplica a "
"Github</a>"
#: themes/default/templates/about.html.ep:17
msgid "As Lufi is a free software licensed under of the terms of the <a href=\"https://gnu.org/licenses/agpl.html\" class=\"classic\">AGPLv3</a>, you can install it on you own server. Have a look on the <a href=\"https://framagit.org/fiat-tux/hat-softwares/lufi/wikis/home\" class=\"classic\">Wiki</a> for the procedure."
msgstr ""
"Com que Lufi és programari lliure, autoritzat sota els termes de l<a href=\""
"https://gnu.org/licenses/agpl.html\" class=\"classic\">AGPLv3</a>, el podeu "
"instal·lar al vostre propi servidor. Pel que fa a com fer-ho, feu un cop "
"d'ull al <a href=\"https://framagit.org/fiat-tux/hat-softwares/lufi/wikis/"
"home\" class=\"classic\">Wiki</a>."

View File

@ -5,15 +5,16 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n"
"PO-Revision-Date: 2020-03-22 18:29+0000\n"
"Last-Translator: Luc Didry <luc@framasoft.org>\n"
"Language-Team: German <https://weblate.framasoft.org/projects/lufi/"
"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"
"PO-Revision-Date: 2019-08-14 04:09+0000\n"
"Last-Translator: Copied by Zanata <copied-by-zanata@zanata.org>\n"
"Language-Team: German\n"
"Language: de\n"
"X-Generator: Zanata 4.6.2\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 3.11.2\n"
#. ($delay)
#. (max_delay)
@ -149,7 +150,7 @@ msgstr "Kommagetrennte E-Mail-Adressen"
#: themes/default/templates/index.html.ep:140
msgid "Compressing zip file…"
msgstr "Komprimierung der Zip-Datei..."
msgstr "Komprimierung der Zip-Datei"
#: themes/default/templates/partial/index.js.ep:15
msgid "Copy all links to clipboard"
@ -312,7 +313,7 @@ msgstr "Dateien gesendet am"
#: themes/default/templates/partial/invitations.js.ep:8
msgid "Files sent in invitation XX1 by XX2"
msgstr "Dateien, die in der Einladung XX1 von XX2 gesendet wurden."
msgstr "Dateien, die in der Einladung XX1 von XX2 gesendet wurden"
#: themes/default/templates/partial/render.js.ep:8
msgid "Get the file"
@ -325,8 +326,8 @@ msgid ""
"com/ldidry/lufi\" class=\"classic\">Github mirror</a>"
msgstr ""
"Holen Sie sich den Quellcode vom <a href=\"https://framagit.org/luc/lufi\" "
"class=\"classic\">offiziellen Repository</a> oder von dessen <a href=\"https:"
"//github.com/ldidry/lufi\" class=\"classic\">Github mirror</a>."
"class=\"classic\">offiziellen Repository</a> oder von dessen <a href=\""
"https://github.com/ldidry/lufi\" class=\"classic\">Github mirror</a>"
#: themes/default/templates/invitations/my_invitations.html.ep:24
msgid "Guest mail"
@ -457,10 +458,13 @@ msgid ""
"is the only time that we will ask you this."
msgstr ""
"Die Art und Weise wie Lufi Datei-Informationen speichert, wurde kürzlich "
"geändert.\\n\\n Am neuen localStorage-Speicherort konnten keine Dateien "
"gefunden werden, allerdings wurden Dateien am alten Speicherort gefunden."
"\\nWollen Sie diese Informationen importieren?\\nBitte beachten Sie, dass "
"diese Meldung nur ein einziges Mal angezeigt wird."
"geändert.\\n"
"\\n"
"Am neuen localStorage-Speicherort konnten keine Dateien gefunden werden, "
"allerdings wurden Dateien am alten Speicherort gefunden.\\n"
"Wollen Sie diese Informationen importieren?\\n"
"\\n"
"Bitte beachten Sie, dass diese Meldung nur ein einziges Mal angezeigt wird."
#: themes/default/templates/files.html.ep:34
msgid "Mail"
@ -720,14 +724,14 @@ msgstr "Die Einladungsmail wird von Ihrer E-Mail-Adresse (%1) gesendet."
#: themes/default/templates/partial/index.js.ep:16
msgid "The link(s) has been copied to your clipboard"
msgstr "Die Links wurden in die Zwischenablage kopiert."
msgstr "Die Links wurden in die Zwischenablage kopiert"
#. (stash('invitation')
#: themes/default/templates/index.html.ep:30
msgid ""
"The link(s) of your file(s) will automatically be sent by mail to %1 (%2)"
msgstr ""
"Die Links Ihrer Dateien werden automatisch per E-Mail an %1 (%2) gesendet."
"Die Links Ihrer Dateien werden automatisch per E-Mail an %1 (%2) gesendet"
#. (stash('ldap_user')
#: themes/default/templates/invitations/invite.mail.ep:11
@ -947,7 +951,7 @@ msgstr "zwischen %1 und %2, wird die Datei für immer aufbewahrt."
#: themes/default/templates/partial/mail.js.ep:42
msgid "deadline: "
msgstr "Frist:"
msgstr "Frist: "
#: themes/default/templates/partial/invitations.js.ep:5
msgid "expires on XXX"
@ -956,7 +960,7 @@ msgstr "Läuft ab am XXX"
#. (format_bytes($keys[$i])
#: themes/default/templates/delays.html.ep:26
msgid "for %1 and more, the file will be kept %2 day(s)"
msgstr "für %1 und mehr, wird die Datei %2 Tag(e) aufbewahrt."
msgstr "für %1 und mehr, wird die Datei %2 Tag(e) aufbewahrt"
#. (format_bytes($keys[$i])
#: themes/default/templates/delays.html.ep:28
@ -975,3 +979,21 @@ msgstr "oder"
#: themes/default/templates/invitations/notification_files_sent.mail.ep:12
msgid "— %1 (%2), that will expire on %3"
msgstr "— %1 (%2), läuft ab am %3"
#: themes/default/templates/about.html.ep:18
msgid "Get the source code on <a href=\"https://framagit.org/fiat-tux/hat-softwares/lufi\" class=\"classic\">the official repository</a> or on its <a href=\"https://github.com/ldidry/lufi\" class=\"classic\">Github mirror</a>"
msgstr ""
"Holen Sie sich den Quellcode vom <a href=\"https://framagit.org/fiat-tux/"
"hat-softwares/lufi\" class=\"classic\">offiziellen Repository</a> oder von "
"dessen <a href=\"https://github.com/ldidry/lufi\" class=\"classic\">Github "
"mirror</a>"
#: themes/default/templates/about.html.ep:17
msgid "As Lufi is a free software licensed under of the terms of the <a href=\"https://gnu.org/licenses/agpl.html\" class=\"classic\">AGPLv3</a>, you can install it on you own server. Have a look on the <a href=\"https://framagit.org/fiat-tux/hat-softwares/lufi/wikis/home\" class=\"classic\">Wiki</a> for the procedure."
msgstr ""
"Da es sich bei Lufi um eine freie Software handelt, die unter den edingungen "
"der <a href=\"https://gnu.org/licenses/agpl.html\" class=\"classic\""
">AGPLv3</a> lizenziert ist, können Sie sie auf Ihrem eigenen Server "
"installieren. Werfen Sie einen Blick auf die <a href=\"https://framagit.org/"
"fiat-tux/hat-softwares/lufi/wikis/home\" class=\"classic\">Wiki</a> für das "
"Verfahren."

View File

@ -45,7 +45,7 @@ msgstr "%1 used your invitation to send you files:"
msgid "%A %d %B %Y at %T"
msgstr "%A %d %B %Y at %T"
#: themes/default/templates/partial/index.js.ep:27
#: themes/default/templates/partial/index.js.ep:28
msgid "(max size: XXX)"
msgstr "(max size: XXX)"
@ -74,43 +74,27 @@ msgid "Add a password to file(s)"
msgstr "Add a password to file(s)"
#: themes/default/templates/mail.html.ep:16
msgid ""
"Adding URLs not related to this Lufi instance to the mail body or subject is "
"prohibited."
msgstr ""
"Adding URLs not related to this Lufi instance to the mail body or subject is "
"prohibited."
msgid "Adding URLs not related to this Lufi instance to the mail body or subject is prohibited."
msgstr "Adding URLs not related to this Lufi instance to the mail body or subject is prohibited."
#: themes/default/templates/partial/invitations.js.ep:3
msgid "Are you sure you want to delete the selected invitations?"
msgstr "Are you sure you want to delete the selected invitations?"
#: themes/default/templates/partial/invitations.js.ep:4
msgid ""
"Are you sure you want to resend the invitation mail for the selected "
"invitations?"
msgstr ""
"Are you sure you want to resend the invitation mail for the selected "
"invitations?"
msgid "Are you sure you want to resend the invitation mail for the selected invitations?"
msgstr "Are you sure you want to resend the invitation mail for the selected invitations?"
#: themes/default/templates/about.html.ep:17
msgid ""
"As Lufi is a free software licensed under of the terms of the <a href="
"\"https://gnu.org/licenses/agpl.html\" class=\"classic\">AGPLv3</a>, you can "
"install it on you own server. Have a look on the <a href=\"https://framagit."
"org/luc/lufi/wikis/home\" class=\"classic\">Wiki</a> for the procedure."
msgstr ""
"As Lufi is a free software licensed under of the terms of the <a href="
"\"https://gnu.org/licenses/agpl.html\" class=\"classic\">AGPLv3</a>, you can "
"install it on you own server. Have a look on the <a href=\"https://framagit."
"org/luc/lufi/wikis/home\" class=\"classic\">Wiki</a> for the procedure."
msgid "As Lufi is a free software licensed under of the terms of the <a href=\"https://gnu.org/licenses/agpl.html\" class=\"classic\">AGPLv3</a>, you can install it on you own server. Have a look on the <a href=\"https://framagit.org/fiat-tux/hat-softwares/lufi/wikis/home\" class=\"classic\">Wiki</a> for the procedure."
msgstr "As Lufi is a free software licensed under of the terms of the <a href=\"https://gnu.org/licenses/agpl.html\" class=\"classic\">AGPLv3</a>, you can install it on you own server. Have a look on the <a href=\"https://framagit.org/fiat-tux/hat-softwares/lufi/wikis/home\" class=\"classic\">Wiki</a> for the procedure."
#. (stash('nbslices')
#: themes/default/templates/partial/render.js.ep:9
#: themes/default/templates/partial/render.js.ep:10
msgid "Asking for file part XX1 of %1"
msgstr "Asking for file part XX1 of %1"
#: themes/default/templates/about.html.ep:20
#: themes/default/templates/about.html.ep:23
msgid "Back to homepage"
msgstr "Back to homepage"
@ -154,15 +138,15 @@ msgstr "Copy all links to clipboard"
msgid "Copy to clipboard"
msgstr "Copy to clipboard"
#: lib/Lufi/Controller/Files.pm:507
#: lib/Lufi/Controller/Files.pm:502
msgid "Could not delete the file. You are not authenticated."
msgstr "Could not delete the file. You are not authenticated."
#: lib/Lufi/Controller/Files.pm:489
#: lib/Lufi/Controller/Files.pm:484
msgid "Could not find the file. Are you sure of the URL and the token?"
msgstr "Could not find the file. Are you sure of the URL and the token?"
#: lib/Lufi/Controller/Files.pm:400
#: lib/Lufi/Controller/Files.pm:395
msgid "Could not find the file. Are you sure of the URL?"
msgstr "Could not find the file. Are you sure of the URL?"
@ -195,12 +179,8 @@ msgid "Deletion link"
msgstr "Deletion link"
#: themes/default/templates/delays.html.ep:8
msgid ""
"Don't worry: if a user begins to download the file before the expiration and "
"the download ends after the expiration, he will be able to get the file."
msgstr ""
"Don't worry: if a user begins to download the file before the expiration and "
"the download ends after the expiration, he will be able to get the file."
msgid "Don't worry: if a user begins to download the file before the expiration and the download ends after the expiration, he will be able to get the file."
msgstr "Don't worry: if a user begins to download the file before the expiration and the download ends after the expiration, he will be able to get the file."
#: themes/default/templates/partial/index.js.ep:21 themes/default/templates/render.html.ep:28
msgid "Download"
@ -215,18 +195,8 @@ msgid "Download link"
msgstr "Download link"
#: themes/default/templates/about.html.ep:10
msgid ""
"Drag and drop files in the appropriate area or use the traditional way to "
"send files and the files will be chunked, encrypted and sent to the server. "
"You will get two links per file: a download link, that you give to the "
"people you want to share the file with and a deletion link, allowing you to "
"delete the file whenever you want."
msgstr ""
"Drag and drop files in the appropriate area or use the traditional way to "
"send files and the files will be chunked, encrypted and sent to the server. "
"You will get two links per file: a download link, that you give to the "
"people you want to share the file with and a deletion link, allowing you to "
"delete the file whenever you want."
msgid "Drag and drop files in the appropriate area or use the traditional way to send files and the files will be chunked, encrypted and sent to the server. You will get two links per file: a download link, that you give to the people you want to share the file with and a deletion link, allowing you to delete the file whenever you want."
msgstr "Drag and drop files in the appropriate area or use the traditional way to send files and the files will be chunked, encrypted and sent to the server. You will get two links per file: a download link, that you give to the people you want to share the file with and a deletion link, allowing you to delete the file whenever you want."
#: themes/default/templates/index.html.ep:122
msgid "Drop files here"
@ -252,15 +222,15 @@ msgstr "Emails"
msgid "Encrypting part XX1 of XX2"
msgstr "Encrypting part XX1 of XX2"
#: lib/Lufi/Controller/Files.pm:289
#: lib/Lufi/Controller/Files.pm:284
msgid "Error: the file existed but was deleted."
msgstr "Error: the file existed but was deleted."
#: lib/Lufi/Controller/Files.pm:369
#: lib/Lufi/Controller/Files.pm:364
msgid "Error: the file has not been sent entirely."
msgstr "Error: the file has not been sent entirely."
#: lib/Lufi/Controller/Files.pm:379
#: lib/Lufi/Controller/Files.pm:374
msgid "Error: unable to find the file. Are you sure of your URL?"
msgstr "Error: unable to find the file. Are you sure of your URL?"
@ -280,14 +250,22 @@ msgstr "Expires at"
msgid "Export localStorage data"
msgstr "Export localStorage data"
#: lib/Lufi/Controller/Files.pm:471
#: lib/Lufi/Controller/Files.pm:466
msgid "File deleted"
msgstr "File deleted"
#: themes/default/templates/partial/render.js.ep:9
msgid "File downloaded"
msgstr "File downloaded"
#: themes/default/templates/files.html.ep:27
msgid "File name"
msgstr "File name"
#: themes/default/templates/partial/index.js.ep:24
msgid "File uploaded"
msgstr "File uploaded"
#: themes/default/templates/invitations/my_invitations.html.ep:61
msgid "Files"
msgstr "Files"
@ -309,14 +287,8 @@ msgid "Get the file"
msgstr "Get the file"
#: themes/default/templates/about.html.ep:18
msgid ""
"Get the source code on <a href=\"https://framagit.org/luc/lufi\" class="
"\"classic\">the official repository</a> or on its <a href=\"https://github."
"com/ldidry/lufi\" class=\"classic\">Github mirror</a>"
msgstr ""
"Get the source code on <a href=\"https://framagit.org/luc/lufi\" class="
"\"classic\">the official repository</a> or on its <a href=\"https://github."
"com/ldidry/lufi\" class=\"classic\">Github mirror</a>"
msgid "Get the source code on <a href=\"https://framagit.org/fiat-tux/hat-softwares/lufi\" class=\"classic\">the official repository</a> or on its <a href=\"https://github.com/ldidry/lufi\" class=\"classic\">Github mirror</a>"
msgstr "Get the source code on <a href=\"https://framagit.org/fiat-tux/hat-softwares/lufi\" class=\"classic\">the official repository</a> or on its <a href=\"https://github.com/ldidry/lufi\" class=\"classic\">Github mirror</a>"
#: themes/default/templates/invitations/my_invitations.html.ep:24
msgid "Guest mail"
@ -343,11 +315,11 @@ msgstr "Here's some files"
msgid "Hide hidden invitations"
msgstr "Hide hidden invitations"
#: themes/default/templates/partial/index.js.ep:25
#: themes/default/templates/partial/index.js.ep:26
msgid "Hit Enter, then Ctrl+C to copy all the download links"
msgstr "Hit Enter, then Ctrl+C to copy all the download links"
#: themes/default/templates/partial/index.js.ep:24
#: themes/default/templates/partial/index.js.ep:25
msgid "Hit Enter, then Ctrl+C to copy the download link"
msgstr "Hit Enter, then Ctrl+C to copy the download link"
@ -372,12 +344,8 @@ msgid "If you choose a delay, the file will be deleted after that delay."
msgstr "If you choose a delay, the file will be deleted after that delay."
#: themes/default/templates/mail.html.ep:15
msgid ""
"If you send the mail from this server, the links will be sent to the server, "
"which may lower your privacy protection."
msgstr ""
"If you send the mail from this server, the links will be sent to the server, "
"which may lower your privacy protection."
msgid "If you send the mail from this server, the links will be sent to the server, which may lower your privacy protection."
msgstr "If you send the mail from this server, the links will be sent to the server, which may lower your privacy protection."
#: themes/default/templates/files.html.ep:14
msgid "Import localStorage data"
@ -410,10 +378,8 @@ msgid "Invite a guest"
msgstr "Invite a guest"
#: themes/default/templates/partial/render.js.ep:6
msgid ""
"It seems that the key in your URL is incorrect. Please, verify your URL."
msgstr ""
"It seems that the key in your URL is incorrect. Please, verify your URL."
msgid "It seems that the key in your URL is incorrect. Please, verify your URL."
msgstr "It seems that the key in your URL is incorrect. Please, verify your URL."
#: themes/default/templates/index.html.ep:12
msgid "Javascript is disabled. You won't be able to use Lufi."
@ -423,6 +389,16 @@ msgstr "Javascript is disabled. You won't be able to use Lufi."
msgid "Language"
msgstr "Language"
#. (sprintf('<a href="https://framagit.org/fiat-tux/hat-softwares/lufi/-/commit/%s" class="classic">%s</a>', stash('version')
#: themes/default/templates/about.html.ep:22
msgid "Latest commit of this instance: %1"
msgstr "Latest commit of this instance: %1"
#. (sprintf('<a href="https://framagit.org/fiat-tux/hat-softwares/lufi/-/releases/%s" class="classic">%s</a>', stash('version')
#: themes/default/templates/about.html.ep:21
msgid "Latest tag of this instance: %1"
msgstr "Latest tag of this instance: %1"
#: themes/default/templates/login.html.ep:15
msgid "Login"
msgstr "Login"
@ -436,16 +412,8 @@ msgid "Lufi is a free (as in free speech) file hosting software."
msgstr "Lufi is a free (as in free speech) file hosting software."
#: themes/default/templates/partial/files.js.ep:12
msgid ""
"Lufi recently changed its way to store files information.\\n\\nNo files have "
"been found in the new localStorage location but we found files in the old "
"one.\\nDo you want to import those informations?\\n\\nPlease note that this "
"is the only time that we will ask you this."
msgstr ""
"Lufi recently changed its way to store files information.\\n\\nNo files have "
"been found in the new localStorage location but we found files in the old "
"one.\\nDo you want to import those informations?\\n\\nPlease note that this "
"is the only time that we will ask you this."
msgid "Lufi recently changed its way to store files information.\\n\\nNo files have been found in the new localStorage location but we found files in the old one.\\nDo you want to import those informations?\\n\\nPlease note that this is the only time that we will ask you this."
msgstr "Lufi recently changed its way to store files information.\\n\\nNo files have been found in the new localStorage location but we found files in the old one.\\nDo you want to import those informations?\\n\\nPlease note that this is the only time that we will ask you this."
#: themes/default/templates/files.html.ep:34
msgid "Mail"
@ -460,33 +428,25 @@ msgid "My invitations"
msgstr "My invitations"
#: themes/default/templates/invitations/notification_files_sent.mail.ep:17
msgid ""
"NB: this list includes the list of files that have already been sent to you."
msgstr ""
"NB: this list includes the list of files that have already been sent to you."
msgid "NB: this list includes the list of files that have already been sent to you."
msgstr "NB: this list includes the list of files that have already been sent to you."
#: themes/default/templates/index.html.ep:115
msgid "Name of the zip file"
msgstr "Name of the zip file"
#. (format_bytes($json->{size})
#: lib/Lufi/Controller/Files.pm:108
#: lib/Lufi/Controller/Files.pm:109
msgid "No enough space available on the server for this file (size: %1)."
msgstr "No enough space available on the server for this file (size: %1)."
#: themes/default/templates/partial/files.js.ep:10 themes/default/templates/partial/index.js.ep:28
#: themes/default/templates/partial/files.js.ep:10 themes/default/templates/partial/index.js.ep:29
msgid "No expiration delay"
msgstr "No expiration delay"
#: themes/default/templates/files.html.ep:8
msgid ""
"Only the files sent with this browser will be listed here. This list is "
"stored in localStorage: if you delete your localStorage data, you'll lose "
"this list."
msgstr ""
"Only the files sent with this browser will be listed here. This list is "
"stored in localStorage: if you delete your localStorage data, you'll lose "
"this list."
msgid "Only the files sent with this browser will be listed here. This list is stored in localStorage: if you delete your localStorage data, you'll lose this list."
msgstr "Only the files sent with this browser will be listed here. This list is stored in localStorage: if you delete your localStorage data, you'll lose this list."
#: themes/default/templates/index.html.ep:106 themes/default/templates/login.html.ep:21 themes/default/templates/render.html.ep:26
msgid "Password"
@ -498,20 +458,12 @@ msgid "Please contact the administrator: %1"
msgstr "Please contact the administrator: %1"
#: themes/default/templates/render.html.ep:33
msgid ""
"Please wait while we are getting your file. We first need to download and "
"decrypt all parts before you can get it."
msgstr ""
"Please wait while we are getting your file. We first need to download and "
"decrypt all parts before you can get it."
msgid "Please wait while we are getting your file. We first need to download and decrypt all parts before you can get it."
msgstr "Please wait while we are getting your file. We first need to download and decrypt all parts before you can get it."
#: lib/Lufi/Controller/Auth.pm:38
msgid ""
"Please, check your credentials or your right to access this service: unable "
"to authenticate."
msgstr ""
"Please, check your credentials or your right to access this service: unable "
"to authenticate."
msgid "Please, check your credentials or your right to access this service: unable to authenticate."
msgstr "Please, check your credentials or your right to access this service: unable to authenticate."
#: themes/default/templates/about.html.ep:5
msgid "Privacy"
@ -542,12 +494,10 @@ msgid "Rows in purple mean that the invitations have expired."
msgstr "Rows in purple mean that the invitations have expired."
#: themes/default/templates/files.html.ep:9
msgid ""
"Rows in red mean that the files have expired and are no longer available."
msgstr ""
"Rows in red mean that the files have expired and are no longer available."
msgid "Rows in red mean that the files have expired and are no longer available."
msgstr "Rows in red mean that the files have expired and are no longer available."
#: themes/default/templates/partial/index.js.ep:26
#: themes/default/templates/partial/index.js.ep:27
msgid "Send all links by email"
msgstr "Send all links by email"
@ -563,13 +513,9 @@ msgstr "Send with this server"
msgid "Send with your own mail software"
msgstr "Send with your own mail software"
#: themes/default/templates/partial/index.js.ep:29
msgid ""
"Sending part XX1 of XX2. Please, be patient, the progress bar can take a "
"while to move."
msgstr ""
"Sending part XX1 of XX2. Please, be patient, the progress bar can take a "
"while to move."
#: themes/default/templates/partial/index.js.ep:30
msgid "Sending part XX1 of XX2. Please, be patient, the progress bar can take a while to move."
msgstr "Sending part XX1 of XX2. Please, be patient, the progress bar can take a while to move."
#. (url_for('/')
#: themes/default/templates/partial/mail.js.ep:48
@ -580,7 +526,7 @@ msgstr "Share your files in total privacy on %1"
msgid "Show hidden invitations"
msgstr "Show hidden invitations"
#: themes/default/templates/partial/render.js.ep:11
#: themes/default/templates/partial/render.js.ep:12
msgid "Show zip content"
msgstr "Show zip content"
@ -589,10 +535,8 @@ msgid "Signin"
msgstr "Signin"
#: lib/Lufi/Controller/Invitation.pm:283 themes/default/templates/invitations/exception.html.ep:16
msgid ""
"Sorry, the invitation doesnt exist. Are you sure you are on the right URL?"
msgstr ""
"Sorry, the invitation doesnt exist. Are you sure you are on the right URL?"
msgid "Sorry, the invitation doesnt exist. Are you sure you are on the right URL?"
msgstr "Sorry, the invitation doesnt exist. Are you sure you are on the right URL?"
#: themes/default/templates/index.html.ep:46
msgid "Sorry, the uploading is currently disabled. Please try again later."
@ -607,13 +551,9 @@ msgid "Sorry, your invitation has expired or has been deleted."
msgstr "Sorry, your invitation has expired or has been deleted."
#. ($invit->ldap_user_mail)
#: lib/Lufi/Controller/Files.pm:122
msgid ""
"Sorry, your invitation has expired or has been deleted. Please contact %1 to "
"have another invitation."
msgstr ""
"Sorry, your invitation has expired or has been deleted. Please contact %1 to "
"have another invitation."
#: lib/Lufi/Controller/Files.pm:123
msgid "Sorry, your invitation has expired or has been deleted. Please contact %1 to have another invitation."
msgstr "Sorry, your invitation has expired or has been deleted. Please contact %1 to have another invitation."
#. ($invitation->ldap_user_mail)
#: lib/Lufi/Controller/Invitation.pm:276
@ -621,20 +561,12 @@ msgid "The URLs of your files have been sent by email to %1."
msgstr "The URLs of your files have been sent by email to %1."
#: themes/default/templates/about.html.ep:7
msgid ""
"The administrator can only see the file's name, its size and its mimetype "
"(what kind of file it is: video, text, etc.)."
msgstr ""
"The administrator can only see the file's name, its size and its mimetype "
"(what kind of file it is: video, text, etc.)."
msgid "The administrator can only see the file's name, its size and its mimetype (what kind of file it is: video, text, etc.)."
msgstr "The administrator can only see the file's name, its size and its mimetype (what kind of file it is: video, text, etc.)."
#: lib/Lufi/Controller/Mail.pm:53
msgid ""
"The body of the mail must contain at least one URL pointing to a file hosted "
"on this instance."
msgstr ""
"The body of the mail must contain at least one URL pointing to a file hosted "
"on this instance."
msgid "The body of the mail must contain at least one URL pointing to a file hosted on this instance."
msgstr "The body of the mail must contain at least one URL pointing to a file hosted on this instance."
#: themes/default/templates/partial/files.js.ep:11
msgid "The data has been successfully imported."
@ -653,17 +585,13 @@ msgstr "The email subject can't be empty."
msgid "The expiration delay (%1) is not between 1 and %2 days."
msgstr "The expiration delay (%1) is not between 1 and %2 days."
#: lib/Lufi/Controller/Files.pm:468
#: lib/Lufi/Controller/Files.pm:463
msgid "The file has already been deleted"
msgstr "The file has already been deleted"
#: themes/default/templates/about.html.ep:6
msgid ""
"The files uploaded on a Lufi instance are encrypted before the upload to the "
"server: the administrator of the server can not see the file's content."
msgstr ""
"The files uploaded on a Lufi instance are encrypted before the upload to the "
"server: the administrator of the server can not see the file's content."
msgid "The files uploaded on a Lufi instance are encrypted before the upload to the server: the administrator of the server can not see the file's content."
msgstr "The files uploaded on a Lufi instance are encrypted before the upload to the server: the administrator of the server can not see the file's content."
#. (join(', ', @bad)
#: lib/Lufi/Controller/Mail.pm:68
@ -677,12 +605,8 @@ msgstr "The guest email address (%1) is unvalid."
#. ($i->token, $i->guest_mail)
#: lib/Lufi/Controller/Invitation.pm:150
msgid ""
"The invitation %1 cant be resent: %2 has already sent files.<br>Please "
"create a new invitation."
msgstr ""
"The invitation %1 cant be resent: %2 has already sent files.<br>Please "
"create a new invitation."
msgid "The invitation %1 cant be resent: %2 has already sent files.<br>Please create a new invitation."
msgstr "The invitation %1 cant be resent: %2 has already sent files.<br>Please create a new invitation."
#. ($i->token)
#: lib/Lufi/Controller/Invitation.pm:130
@ -700,10 +624,8 @@ msgstr "The link(s) has been copied to your clipboard"
#. (stash('invitation')
#: themes/default/templates/index.html.ep:30
msgid ""
"The link(s) of your file(s) will automatically be sent by mail to %1 (%2)"
msgstr ""
"The link(s) of your file(s) will automatically be sent by mail to %1 (%2)"
msgid "The link(s) of your file(s) will automatically be sent by mail to %1 (%2)"
msgstr "The link(s) of your file(s) will automatically be sent by mail to %1 (%2)"
#. (stash('ldap_user')
#: themes/default/templates/invitations/invite.mail.ep:11
@ -715,26 +637,16 @@ msgid "The mail has been sent."
msgstr "The mail has been sent."
#: themes/default/templates/about.html.ep:15
msgid ""
"The original (and only for now) author is <a href=\"https://fiat-tux.fr\" "
"class=\"classic\">Luc Didry</a>."
msgstr ""
"The original (and only for now) author is <a href=\"https://fiat-tux.fr\" "
"class=\"classic\">Luc Didry</a>."
msgid "The original (and only for now) author is <a href=\"https://fiat-tux.fr\" class=\"classic\">Luc Didry</a>."
msgstr "The original (and only for now) author is <a href=\"https://fiat-tux.fr\" class=\"classic\">Luc Didry</a>."
#: lib/Lufi/Controller/Files.pm:236
msgid ""
"The server was unable to find the file record to add your file part to. "
"Please, contact the administrator."
msgstr ""
"The server was unable to find the file record to add your file part to. "
"Please, contact the administrator."
#: lib/Lufi/Controller/Files.pm:231
msgid "The server was unable to find the file record to add your file part to. Please, contact the administrator."
msgstr "The server was unable to find the file record to add your file part to. Please, contact the administrator."
#: lib/Lufi/Controller/Files.pm:295
msgid ""
"This file has been deactivated by the admins. Contact them to know why."
msgstr ""
"This file has been deactivated by the admins. Contact them to know why."
#: lib/Lufi/Controller/Files.pm:290
msgid "This file has been deactivated by the admins. Contact them to know why."
msgstr "This file has been deactivated by the admins. Contact them to know why."
#: themes/default/templates/invitations/my_invitations.html.ep:46 themes/default/templates/partial/invitations.js.ep:6
msgid "This invitation is normally hidden"
@ -746,14 +658,8 @@ msgid "This invitation is valid until %1."
msgstr "This invitation is valid until %1."
#: themes/default/templates/delays.html.ep:10
msgid ""
"This server sets limitations according to the file size. The expiration "
"delay of your file will be the minimum between what you choose and the "
"following limitations:"
msgstr ""
"This server sets limitations according to the file size. The expiration "
"delay of your file will be the minimum between what you choose and the "
"following limitations:"
msgid "This server sets limitations according to the file size. The expiration delay of your file will be the minimum between what you choose and the following limitations:"
msgstr "This server sets limitations according to the file size. The expiration delay of your file will be the minimum between what you choose and the following limitations:"
#: themes/default/templates/invitations/my_invitations.html.ep:16
msgid "Toggle visibility"
@ -768,21 +674,17 @@ msgid "Unable to copy the link(s) to your clipboard"
msgstr "Unable to copy the link(s) to your clipboard"
#. ($short)
#: lib/Lufi/Controller/Files.pm:439
msgid ""
"Unable to get counter for %1. The file does not exists. It will be removed "
"from your localStorage."
msgstr ""
"Unable to get counter for %1. The file does not exists. It will be removed "
"from your localStorage."
#: lib/Lufi/Controller/Files.pm:434
msgid "Unable to get counter for %1. The file does not exists. It will be removed from your localStorage."
msgstr "Unable to get counter for %1. The file does not exists. It will be removed from your localStorage."
#. ($short)
#: lib/Lufi/Controller/Files.pm:429
#: lib/Lufi/Controller/Files.pm:424
msgid "Unable to get counter for %1. The token is invalid."
msgstr "Unable to get counter for %1. The token is invalid."
#. ($short)
#: lib/Lufi/Controller/Files.pm:449
#: lib/Lufi/Controller/Files.pm:444
msgid "Unable to get counter for %1. You are not authenticated."
msgstr "Unable to get counter for %1. You are not authenticated."
@ -802,7 +704,11 @@ msgstr "Uploaded at"
msgid "Uploaded files"
msgstr "Uploaded files"
#: themes/default/templates/partial/index.js.ep:30
#: themes/default/templates/about.html.ep:20
msgid "Version"
msgstr "Version"
#: themes/default/templates/partial/index.js.ep:31
msgid "Websocket communication error"
msgstr "Websocket communication error"
@ -819,58 +725,32 @@ msgid "XXX file has been added to upload queue."
msgstr "XXX file has been added to upload queue."
#: themes/default/templates/invitations/invite.html.ep:30
msgid ""
"You can invite someone to send you files through this Lufi instance even if "
"they dont have an account on it."
msgstr ""
"You can invite someone to send you files through this Lufi instance even if "
"they dont have an account on it."
msgid "You can invite someone to send you files through this Lufi instance even if they dont have an account on it."
msgstr "You can invite someone to send you files through this Lufi instance even if they dont have an account on it."
#: themes/default/templates/about.html.ep:11
msgid ""
"You can see the list of your files by clicking on the \"My files\" link at "
"the top right of this page."
msgstr ""
"You can see the list of your files by clicking on the \"My files\" link at "
"the top right of this page."
msgid "You can see the list of your files by clicking on the \"My files\" link at the top right of this page."
msgstr "You can see the list of your files by clicking on the \"My files\" link at the top right of this page."
#: lib/Lufi/Controller/Mail.pm:42
msgid "You can't add URLs that are not related to this instance."
msgstr "You can't add URLs that are not related to this instance."
#: themes/default/templates/about.html.ep:8
msgid ""
"You don't need to register yourself to upload files but be aware that, for "
"legal reasons, your IP address will be stored when you send a file. Don't "
"panic, this is normally the case for all sites on which you send files."
msgstr ""
"You don't need to register yourself to upload files but be aware that, for "
"legal reasons, your IP address will be stored when you send a file. Don't "
"panic, this is normally the case for all sites on which you send files."
msgid "You don't need to register yourself to upload files but be aware that, for legal reasons, your IP address will be stored when you send a file. Don't panic, this is normally the case for all sites on which you send files."
msgstr "You don't need to register yourself to upload files but be aware that, for legal reasons, your IP address will be stored when you send a file. Don't panic, this is normally the case for all sites on which you send files."
#: themes/default/templates/partial/render.js.ep:10
msgid ""
"You don't seem to have a key in your URL. You won't be able to decrypt the "
"file. Download canceled."
msgstr ""
"You don't seem to have a key in your URL. You won't be able to decrypt the "
"file. Download canceled."
#: themes/default/templates/partial/render.js.ep:11
msgid "You don't seem to have a key in your URL. You won't be able to decrypt the file. Download canceled."
msgstr "You don't seem to have a key in your URL. You won't be able to decrypt the file. Download canceled."
#: themes/default/templates/partial/render.js.ep:7
msgid ""
"You have attempted to leave this page. The download will be canceled. Are "
"you sure?"
msgstr ""
"You have attempted to leave this page. The download will be canceled. Are "
"you sure?"
msgid "You have attempted to leave this page. The download will be canceled. Are you sure?"
msgstr "You have attempted to leave this page. The download will be canceled. Are you sure?"
#: themes/default/templates/partial/index.js.ep:14
msgid ""
"You have attempted to leave this page. The upload will be canceled. Are you "
"sure?"
msgstr ""
"You have attempted to leave this page. The upload will be canceled. Are you "
"sure?"
msgid "You have attempted to leave this page. The upload will be canceled. Are you sure?"
msgstr "You have attempted to leave this page. The upload will be canceled. Are you sure?"
#: themes/default/templates/logout.html.ep:14
msgid "You have been successfully logged out."
@ -881,25 +761,19 @@ msgid "You must give email addresses."
msgstr "You must give email addresses."
#: themes/default/templates/index.html.ep:38
msgid ""
"Your browser does not have enough entropy to generate a strong encryption "
"key. Please wait (it's better if you do things on your computer while "
"waiting)."
msgstr ""
"Your browser does not have enough entropy to generate a strong encryption "
"key. Please wait (it's better if you do things on your computer while "
"waiting)."
msgid "Your browser does not have enough entropy to generate a strong encryption key. Please wait (it's better if you do things on your computer while waiting)."
msgstr "Your browser does not have enough entropy to generate a strong encryption key. Please wait (it's better if you do things on your computer while waiting)."
#. (format_bytes($json->{size})
#: lib/Lufi/Controller/Files.pm:95
msgid "Your file is too big: %1 (maximum size allowed: %2)"
msgstr "Your file is too big: %1 (maximum size allowed: %2)"
#: lib/Lufi/Controller/Files.pm:351
#: lib/Lufi/Controller/Files.pm:346
msgid "Your password is not valid. Please refresh the page to retry."
msgstr "Your password is not valid. Please refresh the page to retry."
#: themes/default/templates/partial/render.js.ep:12
#: themes/default/templates/partial/render.js.ep:13
msgid "Zip content:"
msgstr "Zip content:"

View File

@ -0,0 +1,933 @@
# 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-05-22 08:24+0000\n"
"Last-Translator: Berto Te <ateira@3fpj.com>\n"
"Language-Team: Spanish <https://weblate.framasoft.org/projects/lufi/"
"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"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 3.11.2\n"
#. ($delay)
#. (max_delay)
#: themes/default/templates/index.html.ep:56 themes/default/templates/index.html.ep:65 themes/default/templates/index.html.ep:66
msgid "%1 days"
msgstr "%1 días"
#. (stash('ldap_user')
#: themes/default/templates/invitations/invite.mail.ep:2
msgid "%1 invites you to send him/her files"
msgstr "%1 te invita a enviarle sus archivos"
#. (stash('ldap_user')
#: themes/default/templates/invitations/invite.mail.ep:6
msgid "%1 invites you to send him/her files through Lufi."
msgstr "%1 te invita a enviarle sus archivos a través de Lufi."
#. (stash('invitation')
#: themes/default/templates/invitations/notification_files_sent.mail.ep:4
msgid "%1 sent you files"
msgstr "%1 te envió archivos"
#. (stash('invitation')
#: themes/default/templates/invitations/notification_files_sent.mail.ep:8
msgid "%1 used your invitation to send you files:"
msgstr "%1 usó tu invitación para enviarte archivos:"
#: lib/Lufi/Controller/Invitation.pm:159 lib/Lufi/Controller/Invitation.pm:84 themes/default/templates/invitations/my_invitations.html.ep:51 themes/default/templates/invitations/my_invitations.html.ep:52 themes/default/templates/invitations/my_invitations.html.ep:53 themes/default/templates/invitations/notification_files_sent.mail.ep:12
msgid "%A %d %B %Y at %T"
msgstr "%A %d %B %Y en %T"
#: themes/default/templates/partial/index.js.ep:27
msgid "(max size: XXX)"
msgstr "(tamaño máximo: XXX)"
#: themes/default/templates/index.html.ep:5
msgid "1 year"
msgstr "1 año"
#: themes/default/templates/index.html.ep:4 themes/default/templates/index.html.ep:65
msgid "24 hours"
msgstr "24 horas"
#: themes/default/templates/partial/mail.js.ep:40
msgid ":"
msgstr ":"
#: themes/default/templates/render.html.ep:42
msgid "Abort"
msgstr "aborto"
#: themes/default/templates/layouts/default.html.ep:53 themes/default/templates/layouts/default.html.ep:86
msgid "About"
msgstr "Acerca de"
#: themes/default/templates/index.html.ep:107
msgid "Add a password to file(s)"
msgstr "Agregue una contraseña a los archivos"
#: themes/default/templates/mail.html.ep:16
msgid "Adding URLs not related to this Lufi instance to the mail body or subject is prohibited."
msgstr ""
"Está prohibido agregar URLs no relacionadas con esta instancia de Lufi al "
"cuerpo o asunto del correo."
#: themes/default/templates/partial/invitations.js.ep:3
msgid "Are you sure you want to delete the selected invitations?"
msgstr "¿Estás seguro de que deseas eliminar las invitaciones seleccionadas?"
#: themes/default/templates/partial/invitations.js.ep:4
msgid "Are you sure you want to resend the invitation mail for the selected invitations?"
msgstr ""
"¿Está seguro de que desea reenviar el correo de invitación para las "
"invitaciones seleccionadas?"
#: themes/default/templates/about.html.ep:17
msgid "As Lufi is a free software licensed under of the terms of the <a href=\"https://gnu.org/licenses/agpl.html\" class=\"classic\">AGPLv3</a>, you can install it on you own server. Have a look on the <a href=\"https://framagit.org/luc/lufi/wikis/home\" class=\"classic\">Wiki</a> for the procedure."
msgstr ""
"Como Lufi es un software gratuito con licencia bajo los términos de la<a "
"href=\"https://gnu.org/licenses/agpl.html\" class=\"classic\">AGPLv3</a>, "
"puedes instalarlo en tu propio servidor. Echa un vistazo a la <a href=\""
"https://framagit.org/luc/lufi/wikis/home\" class=\"classic\">Wiki</a> para "
"el procedimiento."
#. (stash('nbslices')
#: themes/default/templates/partial/render.js.ep:9
msgid "Asking for file part XX1 of %1"
msgstr "Pidiendo archivo parte XX1 de %1"
#: themes/default/templates/about.html.ep:20
msgid "Back to homepage"
msgstr "Volver a la página de inicio"
#: lib/Lufi/Controller/Mail.pm:25
msgid "Bad CSRF token!"
msgstr "¡Token CSRF incorrecto!"
#: lib/Lufi/Controller/Auth.pm:27 lib/Lufi/Controller/Auth.pm:49
msgid "Bad CSRF token."
msgstr "Token CSRF incorrecto."
#: themes/default/templates/partial/render.js.ep:5
msgid "Click here to refresh the page and restart the download."
msgstr "Haga clic aquí para actualizar la página y reiniciar la descarga."
#: themes/default/templates/invitations/invite.mail.ep:8
msgid "Click on the following URL to upload files on Lufi:"
msgstr "Haga clic en la siguiente URL para cargar archivos en Lufi:"
#: themes/default/templates/index.html.ep:126
msgid "Click to open the file browser"
msgstr "Haga clic para abrir el navegador de archivos"
#: themes/default/templates/delays.html.ep:38 themes/default/templates/invitations/my_invitations.html.ep:80
msgid "Close"
msgstr "Cerrar"
#: themes/default/templates/mail.html.ep:23
msgid "Comma-separated email addresses"
msgstr "Direcciones de correo electrónico separadas por comas"
#: themes/default/templates/index.html.ep:140
msgid "Compressing zip file…"
msgstr "Comprimiendo el archivo zip …"
#: themes/default/templates/partial/index.js.ep:15
msgid "Copy all links to clipboard"
msgstr "Copie todos los enlaces al portapapeles"
#: themes/default/templates/partial/index.js.ep:18
msgid "Copy to clipboard"
msgstr "Copiar al portapapeles"
#: lib/Lufi/Controller/Files.pm:507
msgid "Could not delete the file. You are not authenticated."
msgstr "No se pudo eliminar el archivo. No estás autenticado."
#: lib/Lufi/Controller/Files.pm:489
msgid "Could not find the file. Are you sure of the URL and the token?"
msgstr "No se pudo encontrar el archivo. ¿Estás seguro de la URL y el token?"
#: lib/Lufi/Controller/Files.pm:400
msgid "Could not find the file. Are you sure of the URL?"
msgstr "No se pudo encontrar el archivo. ¿Estás seguro de la URL?"
#: themes/default/templates/files.html.ep:29
msgid "Counter"
msgstr "contador"
#: themes/default/templates/index.html.ep:100
msgid "Create a zip archive with the files before uploading?"
msgstr "¿Crear un archivo zip con los archivos antes de subir?"
#: themes/default/templates/invitations/my_invitations.html.ep:26
msgid "Created at"
msgstr "Creado en"
#: themes/default/templates/invitations/my_invitations.html.ep:14
msgid "Delete"
msgstr "Eliminar"
#: themes/default/templates/files.html.ep:30 themes/default/templates/index.html.ep:90
msgid "Delete at first download?"
msgstr "¿Eliminar en la primera descarga?"
#: themes/default/templates/files.html.ep:19
msgid "Delete selected files"
msgstr "Eliminar archivos seleccionados"
#: themes/default/templates/files.html.ep:33 themes/default/templates/partial/index.js.ep:19
msgid "Deletion link"
msgstr "Enlace de borrado"
#: themes/default/templates/delays.html.ep:8
msgid "Don't worry: if a user begins to download the file before the expiration and the download ends after the expiration, he will be able to get the file."
msgstr ""
"No se preocupe: si un usuario comienza a descargar el archivo antes del "
"vencimiento y la descarga finaliza después del vencimiento, podrá obtener el "
"archivo."
#: themes/default/templates/partial/index.js.ep:21 themes/default/templates/render.html.ep:28
msgid "Download"
msgstr "Descargar"
#: themes/default/templates/partial/render.js.ep:4
msgid "Download aborted."
msgstr "Descarga abortada."
#: themes/default/templates/files.html.ep:28 themes/default/templates/partial/index.js.ep:20
msgid "Download link"
msgstr "Enlace de descarga"
#: themes/default/templates/about.html.ep:10
msgid "Drag and drop files in the appropriate area or use the traditional way to send files and the files will be chunked, encrypted and sent to the server. You will get two links per file: a download link, that you give to the people you want to share the file with and a deletion link, allowing you to delete the file whenever you want."
msgstr ""
"Arrastre y suelte archivos en el área apropiada o use la forma tradicional "
"de enviar archivos y los archivos se fragmentarán, cifrarán y enviarán al "
"servidor. Obtendrá dos enlaces por archivo: un enlace de descarga, que le da "
"a las personas con las que desea compartir el archivo y un enlace de "
"eliminación, que le permite eliminar el archivo cuando lo desee."
#: themes/default/templates/index.html.ep:122
msgid "Drop files here"
msgstr "Suelta archivos aquí"
#: themes/default/templates/invitations/invite.html.ep:40
msgid "Email address of your guest"
msgstr "Dirección de correo electrónico de su invitado"
#: themes/default/templates/mail.html.ep:39
msgid "Email body"
msgstr "Cuerpo del correo electronico"
#: themes/default/templates/mail.html.ep:31
msgid "Email subject"
msgstr "Asunto del email"
#: themes/default/templates/mail.html.ep:25 themes/default/templates/mail.html.ep:27
msgid "Emails"
msgstr "Correos electrónicos"
#: themes/default/templates/partial/index.js.ep:22
msgid "Encrypting part XX1 of XX2"
msgstr "Cifrando parte XX1 de XX2"
#: lib/Lufi/Controller/Files.pm:289
msgid "Error: the file existed but was deleted."
msgstr "Error: el archivo existía pero fue eliminado."
#: lib/Lufi/Controller/Files.pm:369
msgid "Error: the file has not been sent entirely."
msgstr "Error: el archivo no se ha enviado por completo."
#: lib/Lufi/Controller/Files.pm:379
msgid "Error: unable to find the file. Are you sure of your URL?"
msgstr "Error: no se puede encontrar el archivo. ¿Estás seguro de tu URL?"
#: themes/default/templates/partial/index.js.ep:23
msgid "Expiration:"
msgstr "Vencimiento:"
#: themes/default/templates/invitations/my_invitations.html.ep:27
msgid "Expire at"
msgstr "Caduca a las"
#: themes/default/templates/files.html.ep:32
msgid "Expires at"
msgstr "Caduca a las"
#: themes/default/templates/files.html.ep:12
msgid "Export localStorage data"
msgstr "Exportar datos de almacenamiento local"
#: lib/Lufi/Controller/Files.pm:471
msgid "File deleted"
msgstr "Archivo eliminado"
#: themes/default/templates/files.html.ep:27
msgid "File name"
msgstr "Nombre del archivo"
#: themes/default/templates/invitations/my_invitations.html.ep:61
msgid "Files"
msgstr "Archivos"
#: themes/default/templates/index.html.ep:80
msgid "Files deleted at first download"
msgstr "Archivos eliminados en la primera descarga"
#: themes/default/templates/invitations/my_invitations.html.ep:28
msgid "Files sent at"
msgstr "Archivos enviados a"
#: themes/default/templates/partial/invitations.js.ep:8
msgid "Files sent in invitation XX1 by XX2"
msgstr "Archivos enviados en la invitación XX1 por XX2"
#: themes/default/templates/partial/render.js.ep:8
msgid "Get the file"
msgstr "Obtén el archivo"
#: themes/default/templates/about.html.ep:18
msgid "Get the source code on <a href=\"https://framagit.org/luc/lufi\" class=\"classic\">the official repository</a> or on its <a href=\"https://github.com/ldidry/lufi\" class=\"classic\">Github mirror</a>"
msgstr ""
"Obtenga el código fuente en <a href=\"https://framagit.org/luc/lufi\" class="
"\"classic\">el repositorio oficial</a>o en su<a href=\"https://github.com/"
"ldidry/lufi\" class=\"classic\">Github mirror</a>"
#: themes/default/templates/invitations/my_invitations.html.ep:24
msgid "Guest mail"
msgstr "Correo de invitado"
#. (ucfirst(stash('invitation')
#: themes/default/templates/invitations/notification_files_sent.mail.ep:6
msgid "Hello %1,"
msgstr "Hola %1"
#: themes/default/templates/invitations/invite.mail.ep:4
msgid "Hello,"
msgstr "Hola,"
#: themes/default/templates/partial/mail.js.ep:35
msgid "Hello,\\n\\nHere's some files I want to share with you:\\n"
msgstr ""
"Hola,\\n"
"\\n"
" Aquí hay algunos archivos que quiero compartir contigo:\\n"
#: themes/default/templates/mail.html.ep:35
msgid "Here's some files"
msgstr "Aquí hay algunos archivos"
#: themes/default/templates/partial/invitations.js.ep:7
msgid "Hide hidden invitations"
msgstr "Ocultar invitaciones ocultas"
#: themes/default/templates/partial/index.js.ep:25
msgid "Hit Enter, then Ctrl+C to copy all the download links"
msgstr ""
"Presiona Enter, luego Ctrl + C para copiar todos los enlaces de descarga"
#: themes/default/templates/partial/index.js.ep:24
msgid "Hit Enter, then Ctrl+C to copy the download link"
msgstr "Presiona Enter, luego Ctrl+C para copiar el enlace de descarga"
#: themes/default/templates/about.html.ep:9
msgid "How does it work?"
msgstr "¿Como funciona?"
#: themes/default/templates/invitations/invite.html.ep:46
msgid "How many days would you like the invitation to be valid?"
msgstr "¿Cuántos días desea que la invitación sea válida?"
#: themes/default/templates/about.html.ep:16
msgid "How to install the software on my server?"
msgstr "¿Cómo instalar el software en mi servidor?"
#: themes/default/templates/about.html.ep:12
msgid "How to report an illegal file?"
msgstr "¿Cómo denunciar un archivo ilegal?"
#: themes/default/templates/delays.html.ep:7
msgid "If you choose a delay, the file will be deleted after that delay."
msgstr "Si elige un retraso, el archivo se eliminará después de ese retraso."
#: themes/default/templates/mail.html.ep:15
msgid "If you send the mail from this server, the links will be sent to the server, which may lower your privacy protection."
msgstr ""
"Si envía el correo desde este servidor, los enlaces se enviarán al servidor, "
"lo que puede reducir su protección de privacidad."
#: themes/default/templates/files.html.ep:14
msgid "Import localStorage data"
msgstr "Importar datos de almacenamiento local"
#: themes/default/templates/index.html.ep:53
msgid "Important: more information on delays"
msgstr "Importante: más información sobre retrasos"
#: themes/default/templates/delays.html.ep:5
msgid "Information about delays"
msgstr "Información sobre retrasos"
#: themes/default/templates/files.html.ep:18 themes/default/templates/invitations/my_invitations.html.ep:12
msgid "Invert selection"
msgstr "Invertir selección"
#. ($i->guest_mail, $url)
#: lib/Lufi/Controller/Invitation.pm:171
msgid "Invitation resent to %1.<br> URL: %2"
msgstr "Invitación reenviada a %1. <br> URL: %2"
#. ($invitation->guest_mail, $url)
#: lib/Lufi/Controller/Invitation.pm:87
msgid "Invitation sent to %1.<br> URL: %2"
msgstr "Invitación enviada a%1. <br> URL:%2"
#: themes/default/templates/invitations/invite.html.ep:27 themes/default/templates/layouts/default.html.ep:36 themes/default/templates/layouts/default.html.ep:69
msgid "Invite a guest"
msgstr "Invitar a alguien"
#: themes/default/templates/partial/render.js.ep:6
msgid "It seems that the key in your URL is incorrect. Please, verify your URL."
msgstr ""
"Parece que la clave en su URL es incorrecta. Por favor, verifique su URL."
#: themes/default/templates/index.html.ep:12
msgid "Javascript is disabled. You won't be able to use Lufi."
msgstr "Javascript está deshabilitado. No podrás usar Lufi."
#: themes/default/templates/layouts/default.html.ep:44 themes/default/templates/layouts/default.html.ep:46 themes/default/templates/layouts/default.html.ep:77 themes/default/templates/layouts/default.html.ep:79
msgid "Language"
msgstr "Idioma"
#: themes/default/templates/login.html.ep:15
msgid "Login"
msgstr "Iniciar sesión"
#: themes/default/templates/layouts/default.html.ep:58 themes/default/templates/layouts/default.html.ep:91
msgid "Logout"
msgstr "Cerrar sesión"
#: themes/default/templates/about.html.ep:4
msgid "Lufi is a free (as in free speech) file hosting software."
msgstr ""
"Lufi es un software de alojamiento de archivos libre (como en la libertad de "
"expresión)."
#: themes/default/templates/partial/files.js.ep:12
msgid "Lufi recently changed its way to store files information.\\n\\nNo files have been found in the new localStorage location but we found files in the old one.\\nDo you want to import those informations?\\n\\nPlease note that this is the only time that we will ask you this."
msgstr ""
"Lufi cambió recientemente su forma de almacenar información de archivos. \\n"
" \\n"
"No se han encontrado archivos en la nueva ubicación de almacenamiento local, "
"pero encontramos archivos en la anterior. \\n"
" ¿Desea importar esas informaciones? \\n"
"\\n"
" Tenga en cuenta que esta es la solo tiempo que te preguntaremos esto."
#: themes/default/templates/files.html.ep:34
msgid "Mail"
msgstr "Correo"
#: themes/default/templates/files.html.ep:3 themes/default/templates/layouts/default.html.ep:34 themes/default/templates/layouts/default.html.ep:67
msgid "My files"
msgstr "Mis archivos"
#: themes/default/templates/invitations/my_invitations.html.ep:5 themes/default/templates/layouts/default.html.ep:37 themes/default/templates/layouts/default.html.ep:70
msgid "My invitations"
msgstr "Mis invitaciones"
#: themes/default/templates/invitations/notification_files_sent.mail.ep:17
msgid "NB: this list includes the list of files that have already been sent to you."
msgstr "NB: esta lista incluye la lista de archivos que ya le han enviado."
#: themes/default/templates/index.html.ep:115
msgid "Name of the zip file"
msgstr "Nombre del archivo zip"
#. (format_bytes($json->{size})
#: lib/Lufi/Controller/Files.pm:108
msgid "No enough space available on the server for this file (size: %1)."
msgstr ""
"No hay suficiente espacio disponible en el servidor para este archivo (size: "
"%1)."
#: themes/default/templates/partial/files.js.ep:10 themes/default/templates/partial/index.js.ep:28
msgid "No expiration delay"
msgstr "Sin retraso de vencimiento"
#: themes/default/templates/files.html.ep:8
msgid "Only the files sent with this browser will be listed here. This list is stored in localStorage: if you delete your localStorage data, you'll lose this list."
msgstr ""
"Aquí solo se enumerarán los archivos enviados con este navegador. Esta lista "
"se almacena en localStorage: si elimina sus datos de localStorage, perderá "
"esta lista."
#: themes/default/templates/index.html.ep:106 themes/default/templates/login.html.ep:21 themes/default/templates/render.html.ep:26
msgid "Password"
msgstr "Contraseña"
#. (config('contact')
#: themes/default/templates/about.html.ep:13
msgid "Please contact the administrator: %1"
msgstr "Por favor, póngase en contacto con el administrador: %1"
#: themes/default/templates/render.html.ep:33
msgid "Please wait while we are getting your file. We first need to download and decrypt all parts before you can get it."
msgstr ""
"Espere mientras recibimos su archivo. Primero necesitamos descargar y "
"descifrar todas las partes antes de que pueda obtenerlo."
#: lib/Lufi/Controller/Auth.pm:38
msgid "Please, check your credentials or your right to access this service: unable to authenticate."
msgstr ""
"Por favor, verifique sus credenciales o su derecho a acceder a este servicio:"
" no se puede autenticar."
#: themes/default/templates/about.html.ep:5
msgid "Privacy"
msgstr "Confidencialidad"
#: themes/default/templates/files.html.ep:13
msgid "Purge expired files from localStorage"
msgstr "urgar archivos caducados de localStorage"
#: themes/default/templates/invitations/notification_files_sent.mail.ep:20
msgid "Regards,"
msgstr "Saludos,"
#: themes/default/templates/invitations/invite.mail.ep:15
msgid "Regards."
msgstr "Saludos."
#: themes/default/templates/layouts/default.html.ep:31 themes/default/templates/layouts/default.html.ep:64
msgid "Report file"
msgstr "Archivo de informe"
#: themes/default/templates/invitations/my_invitations.html.ep:15
msgid "Resend invitation mail"
msgstr "Reenviar correo de invitación"
#: themes/default/templates/invitations/my_invitations.html.ep:9
msgid "Rows in purple mean that the invitations have expired."
msgstr "Las filas en púrpura significan que las invitaciones han expirado."
#: themes/default/templates/files.html.ep:9
msgid "Rows in red mean that the files have expired and are no longer available."
msgstr ""
"Las filas en rojo significan que los archivos han caducado y ya no están "
"disponibles."
#: themes/default/templates/partial/index.js.ep:26
msgid "Send all links by email"
msgstr "Enviar todos los enlaces por correo electrónico"
#: themes/default/templates/invitations/invite.html.ep:50
msgid "Send the invitation"
msgstr "Enviar la invitación"
#: themes/default/templates/mail.html.ep:46
msgid "Send with this server"
msgstr "Enviar con este servidor"
#: themes/default/templates/mail.html.ep:47
msgid "Send with your own mail software"
msgstr "Envíe con su propio software de correo"
#: themes/default/templates/partial/index.js.ep:29
msgid "Sending part XX1 of XX2. Please, be patient, the progress bar can take a while to move."
msgstr ""
"Enviando la parte XX1 de XX2. Por favor, sea paciente, la barra de progreso "
"puede tardar un poco en moverse."
#. (url_for('/')
#: themes/default/templates/partial/mail.js.ep:48
msgid "Share your files in total privacy on %1"
msgstr "Comparte tus archivos con total privacidad en %1"
#: themes/default/templates/invitations/my_invitations.html.ep:13 themes/default/templates/partial/invitations.js.ep:9
msgid "Show hidden invitations"
msgstr "Mostrar invitaciones ocultas"
#: themes/default/templates/partial/render.js.ep:11
msgid "Show zip content"
msgstr "Mostrar contenido zip"
#: themes/default/templates/layouts/default.html.ep:40 themes/default/templates/layouts/default.html.ep:73 themes/default/templates/login.html.ep:28 themes/default/templates/logout.html.ep:17
msgid "Signin"
msgstr "Registrarse"
#: lib/Lufi/Controller/Invitation.pm:283 themes/default/templates/invitations/exception.html.ep:16
msgid "Sorry, the invitation doesnt exist. Are you sure you are on the right URL?"
msgstr ""
"Lo sentimos, la invitación no existe. ¿Estás seguro de que estás en la URL "
"correcta?"
#: themes/default/templates/index.html.ep:46
msgid "Sorry, the uploading is currently disabled. Please try again later."
msgstr ""
"Lo sentimos, la carga está actualmente deshabilitada. Por favor, inténtelo "
"de nuevo más tarde."
#: lib/Lufi/Controller/Files.pm:82
msgid "Sorry, uploading is disabled."
msgstr "Lo sentimos, la carga está deshabilitada."
#: themes/default/templates/invitations/exception.html.ep:7
msgid "Sorry, your invitation has expired or has been deleted."
msgstr "Lo sentimos, tu invitación ha caducado o ha sido eliminada."
#. ($invit->ldap_user_mail)
#: lib/Lufi/Controller/Files.pm:122
msgid "Sorry, your invitation has expired or has been deleted. Please contact %1 to have another invitation."
msgstr ""
"Lo sentimos, tu invitación ha caducado o ha sido eliminada. Póngase en "
"contacto con% 1 para recibir otra invitación."
#. ($invitation->ldap_user_mail)
#: lib/Lufi/Controller/Invitation.pm:276
msgid "The URLs of your files have been sent by email to %1."
msgstr "Las URL de sus archivos se han enviado por correo electrónico a% 1."
#: themes/default/templates/about.html.ep:7
msgid "The administrator can only see the file's name, its size and its mimetype (what kind of file it is: video, text, etc.)."
msgstr ""
"El administrador solo puede ver el nombre del archivo, su tamaño y su tipo "
"MIME (qué tipo de archivo es: video, texto, etc.)."
#: lib/Lufi/Controller/Mail.pm:53
msgid "The body of the mail must contain at least one URL pointing to a file hosted on this instance."
msgstr ""
"El cuerpo del correo debe contener al menos una URL que apunte a un archivo "
"alojado en esta instancia."
#: themes/default/templates/partial/files.js.ep:11
msgid "The data has been successfully imported."
msgstr "Los datos se han importado correctamente."
#: lib/Lufi/Controller/Mail.pm:73
msgid "The email body can't be empty."
msgstr "El cuerpo del correo electrónico no puede estar vacío."
#: lib/Lufi/Controller/Mail.pm:72
msgid "The email subject can't be empty."
msgstr "El asunto del correo electrónico no puede estar vacío."
#. ($expire_at, $max_expire_at)
#: lib/Lufi/Controller/Invitation.pm:51
msgid "The expiration delay (%1) is not between 1 and %2 days."
msgstr "El retraso de vencimiento (% 1) no está entre 1 y% 2 días."
#: lib/Lufi/Controller/Files.pm:468
msgid "The file has already been deleted"
msgstr "El archivo ya ha sido eliminado"
#: themes/default/templates/about.html.ep:6
msgid "The files uploaded on a Lufi instance are encrypted before the upload to the server: the administrator of the server can not see the file's content."
msgstr ""
"Los archivos cargados en una instancia de Lufi se cifran antes de cargarlos "
"en el servidor: el administrador del servidor no puede ver el contenido del "
"archivo."
#. (join(', ', @bad)
#: lib/Lufi/Controller/Mail.pm:68
msgid "The following email addresses are not valid: %1"
msgstr "Las siguientes direcciones de correo electrónico no son válidas: %1"
#. ($guest_mail)
#: lib/Lufi/Controller/Invitation.pm:48
msgid "The guest email address (%1) is unvalid."
msgstr "La dirección de correo electrónico del invitado (%1) no es válida."
#. ($i->token, $i->guest_mail)
#: lib/Lufi/Controller/Invitation.pm:150
msgid "The invitation %1 cant be resent: %2 has already sent files.<br>Please create a new invitation."
msgstr ""
"La invitación %1 no se puede reenviar: %2 ya ha enviado archivos. <br> Cree "
"una nueva invitación."
#. ($i->token)
#: lib/Lufi/Controller/Invitation.pm:130
msgid "The invitation %1 has been deleted."
msgstr "La invitación %1 ha sido eliminada."
#. (stash('user_mail')
#: themes/default/templates/invitations/invite.html.ep:34
msgid "The invitation mail will be send from your email address (%1)."
msgstr ""
"El correo de invitación se enviará desde su dirección de correo electrónico "
"(%1)."
#: themes/default/templates/partial/index.js.ep:16
msgid "The link(s) has been copied to your clipboard"
msgstr "Los enlaces han sido copiados a su portapapeles"
#. (stash('invitation')
#: themes/default/templates/index.html.ep:30
msgid "The link(s) of your file(s) will automatically be sent by mail to %1 (%2)"
msgstr ""
"Los enlaces de sus archivos se enviarán automáticamente por correo a %1 (%2)"
#. (stash('ldap_user')
#: themes/default/templates/invitations/invite.mail.ep:11
msgid "The links of your file(s) will automatically be sent by mail to %1."
msgstr ""
"Los enlaces de sus archivos se enviarán automáticamente por correo a %1."
#: lib/Lufi/Controller/Mail.pm:97
msgid "The mail has been sent."
msgstr "El correo ha sido enviado."
#: themes/default/templates/about.html.ep:15
msgid "The original (and only for now) author is <a href=\"https://fiat-tux.fr\" class=\"classic\">Luc Didry</a>."
msgstr ""
"El autor original (y solo por ahora) es <a href=\"https://fiat-tux.fr\" "
"class=\"classic\">Luc Didry</a>."
#: lib/Lufi/Controller/Files.pm:236
msgid "The server was unable to find the file record to add your file part to. Please, contact the administrator."
msgstr ""
"El servidor no pudo encontrar el registro de archivo para agregar su parte "
"de archivo. Por favor, contacte al administrador."
#: lib/Lufi/Controller/Files.pm:295
msgid "This file has been deactivated by the admins. Contact them to know why."
msgstr ""
"Este archivo ha sido desactivado por los administradores. Contáctalos para "
"saber por qué."
#: themes/default/templates/invitations/my_invitations.html.ep:46 themes/default/templates/partial/invitations.js.ep:6
msgid "This invitation is normally hidden"
msgstr "Esta invitación normalmente está oculta"
#. (stash('expires')
#: themes/default/templates/invitations/invite.mail.ep:13
msgid "This invitation is valid until %1."
msgstr "Esta invitación es válida hasta %1."
#: themes/default/templates/delays.html.ep:10
msgid "This server sets limitations according to the file size. The expiration delay of your file will be the minimum between what you choose and the following limitations:"
msgstr ""
"Este servidor establece limitaciones de acuerdo con el tamaño del archivo. "
"El retraso de vencimiento de su archivo será el mínimo entre lo que elija y "
"las siguientes limitaciones:"
#: themes/default/templates/invitations/my_invitations.html.ep:16
msgid "Toggle visibility"
msgstr "Alternar visibilidad"
#: themes/default/templates/invitations/my_invitations.html.ep:25
msgid "URL"
msgstr "URL"
#: themes/default/templates/partial/index.js.ep:17
msgid "Unable to copy the link(s) to your clipboard"
msgstr "No se pueden copiar los enlaces a su portapapeles"
#. ($short)
#: lib/Lufi/Controller/Files.pm:439
msgid "Unable to get counter for %1. The file does not exists. It will be removed from your localStorage."
msgstr ""
"No se puede obtener el contador de %1. El archivo no existe. Se eliminará de "
"su almacenamiento local."
#. ($short)
#: lib/Lufi/Controller/Files.pm:429
msgid "Unable to get counter for %1. The token is invalid."
msgstr "No se puede obtener el contador de% 1. El token no es válido."
#. ($short)
#: lib/Lufi/Controller/Files.pm:449
msgid "Unable to get counter for %1. You are not authenticated."
msgstr "No se puede obtener el contador de% 1. No estás autenticado."
#: themes/default/templates/layouts/default.html.ep:33 themes/default/templates/layouts/default.html.ep:66
msgid "Upload files"
msgstr "Subir archivos"
#: themes/default/templates/index.html.ep:145
msgid "Upload generated zip file"
msgstr "Subir archivo zip generado"
#: themes/default/templates/files.html.ep:31
msgid "Uploaded at"
msgstr "Subido a"
#: themes/default/templates/index.html.ep:153
msgid "Uploaded files"
msgstr "Archivos subidos"
#: themes/default/templates/partial/index.js.ep:30
msgid "Websocket communication error"
msgstr "Error de comunicación de Websocket"
#: themes/default/templates/about.html.ep:3
msgid "What is Lufi?"
msgstr "¿Qué es lufi?"
#: themes/default/templates/about.html.ep:14
msgid "Who wrote this software?"
msgstr "¿Quién escribió este software?"
#: themes/default/templates/partial/index.js.ep:13
msgid "XXX file has been added to upload queue."
msgstr "Se ha agregado el archivo XXX para cargar la cola."
#: themes/default/templates/invitations/invite.html.ep:30
msgid "You can invite someone to send you files through this Lufi instance even if they dont have an account on it."
msgstr ""
"Puede invitar a alguien a enviarle archivos a través de esta instancia de "
"Lufi incluso si no tienen una cuenta en él."
#: themes/default/templates/about.html.ep:11
msgid "You can see the list of your files by clicking on the \"My files\" link at the top right of this page."
msgstr ""
"Puede ver la lista de sus archivos haciendo clic en el enlace \"Mis "
"archivos\" en la parte superior derecha de esta página."
#: lib/Lufi/Controller/Mail.pm:42
msgid "You can't add URLs that are not related to this instance."
msgstr "No puede agregar URL que no estén relacionadas con esta instancia."
#: themes/default/templates/about.html.ep:8
msgid "You don't need to register yourself to upload files but be aware that, for legal reasons, your IP address will be stored when you send a file. Don't panic, this is normally the case for all sites on which you send files."
msgstr ""
"No necesita registrarse para cargar archivos, pero tenga en cuenta que, por "
"razones legales, su dirección IP se almacenará cuando envíe un archivo. No "
"entre en pánico, este suele ser el caso para todos los sitios en los que "
"envía archivos."
#: themes/default/templates/partial/render.js.ep:10
msgid "You don't seem to have a key in your URL. You won't be able to decrypt the file. Download canceled."
msgstr ""
"Parece que no tienes una clave en tu URL. No podrás descifrar el archivo. "
"Descarga cancelada."
#: themes/default/templates/partial/render.js.ep:7
msgid "You have attempted to leave this page. The download will be canceled. Are you sure?"
msgstr ""
"Has intentado salir de esta página. La descarga será cancelada. ¿Estás "
"seguro?"
#: themes/default/templates/partial/index.js.ep:14
msgid "You have attempted to leave this page. The upload will be canceled. Are you sure?"
msgstr ""
"Has intentado salir de esta página. La carga será cancelada. ¿Estás seguro?"
#: themes/default/templates/logout.html.ep:14
msgid "You have been successfully logged out."
msgstr "Ha sido desconectado exitosamente."
#: lib/Lufi/Controller/Mail.pm:71
msgid "You must give email addresses."
msgstr "Debes dar direcciones de correo electrónico."
#: themes/default/templates/index.html.ep:38
msgid "Your browser does not have enough entropy to generate a strong encryption key. Please wait (it's better if you do things on your computer while waiting)."
msgstr ""
"Su navegador no tiene suficiente entropía para generar una clave de cifrado "
"segura. Espere (es mejor si hace cosas en su computadora mientras espera)."
#. (format_bytes($json->{size})
#: lib/Lufi/Controller/Files.pm:95
msgid "Your file is too big: %1 (maximum size allowed: %2)"
msgstr "Su archivo es demasiado grande: %1 (tamaño máximo permitido :%2)"
#: lib/Lufi/Controller/Files.pm:351
msgid "Your password is not valid. Please refresh the page to retry."
msgstr ""
"Su contraseña no es valida Actualice la página para volver a intentarlo."
#: themes/default/templates/partial/render.js.ep:12
msgid "Zip content:"
msgstr "Contenido zip:"
#. (format_bytes($keys[$i])
#: themes/default/templates/delays.html.ep:20
msgid "between %1 and %2, the file will be kept %3 day(s)."
msgstr "entre %1 y %2, el archivo se mantendrá% 3 día (s)."
#. (format_bytes($keys[$i])
#: themes/default/templates/delays.html.ep:22
msgid "between %1 and %2, the file will be kept forever."
msgstr "entre %1 y %2, el archivo se mantendrá para siempre."
#: themes/default/templates/partial/mail.js.ep:42
msgid "deadline: "
msgstr "Último plazo para descargar: "
#: themes/default/templates/partial/invitations.js.ep:5
msgid "expires on XXX"
msgstr "caduca el XXX"
#. (format_bytes($keys[$i])
#: themes/default/templates/delays.html.ep:26
msgid "for %1 and more, the file will be kept %2 day(s)"
msgstr "para %1 y más, el archivo se mantendrá %2 día(s)"
#. (format_bytes($keys[$i])
#: themes/default/templates/delays.html.ep:28
msgid "for %1 and more, the file will be kept forever."
msgstr "para %1 y más, el archivo se mantendrá para siempre."
#: themes/default/templates/index.html.ep:3
msgid "no time limit"
msgstr "Sin límite de tiempo"
#: themes/default/templates/index.html.ep:124
msgid "or"
msgstr "o"
#. ($e->{name}, format_bytes($e->{size})
#: themes/default/templates/invitations/notification_files_sent.mail.ep:12
msgid "— %1 (%2), that will expire on %3"
msgstr "— %1 (%2), que caducará en %3"
#: themes/default/templates/about.html.ep:18
msgid "Get the source code on <a href=\"https://framagit.org/fiat-tux/hat-softwares/lufi\" class=\"classic\">the official repository</a> or on its <a href=\"https://github.com/ldidry/lufi\" class=\"classic\">Github mirror</a>"
msgstr ""
"Obtenga el código fuente en <a href=\"https://framagit.org/fiat-tux/"
"hat-softwares/lufi\" class=\"classic\">el repositorio oficial</a> o en su <a "
"href=\"https://github.com/ldidry/lufi\" class=\"classic\">Github mirror</a>"
#: themes/default/templates/about.html.ep:17
msgid "As Lufi is a free software licensed under of the terms of the <a href=\"https://gnu.org/licenses/agpl.html\" class=\"classic\">AGPLv3</a>, you can install it on you own server. Have a look on the <a href=\"https://framagit.org/fiat-tux/hat-softwares/lufi/wikis/home\" class=\"classic\">Wiki</a> for the procedure."
msgstr ""
"Como Lufi es un software gratuito con licencia bajo los términos de la <a "
"href=\"https://gnu.org/licenses/agpl.html\" class=\"classic\">AGPLv3</a>, "
"puedes instalarlo en tu propio servidor. Echa un vistazo a la <a href=\""
"https://framagit.org/fiat-tux/hat-softwares/lufi/wikis/home\" class=\""
"classic\">Wiki</a> para el procedimiento."
#: themes/default/templates/partial/index.js.ep:24
msgid "File uploaded"
msgstr "Archivo enviado"
#: themes/default/templates/partial/render.js.ep:9
msgid "File downloaded"
msgstr "Archivo descargado"
#: themes/default/templates/about.html.ep:20
msgid "Version"
msgstr "Versión"
#. (sprintf('<a href="https://framagit.org/fiat-tux/hat-softwares/lufi/-/releases/%s" class="classic">%s</a>', stash('version')
#: themes/default/templates/about.html.ep:21
msgid "Latest tag of this instance: %1"
msgstr "Última etiqueta de esta instancia: %1"
#. (sprintf('<a href="https://framagit.org/fiat-tux/hat-softwares/lufi/-/commit/%s" class="classic">%s</a>', stash('version')
#: themes/default/templates/about.html.ep:22
msgid "Latest commit of this instance: %1"
msgstr "Última confirmación de esta instancia: %1"

View File

@ -8,15 +8,16 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n"
"PO-Revision-Date: 2020-03-22 11:51+0000\n"
"Last-Translator: Luc Didry <luc@framasoft.org>\n"
"Language-Team: French <https://weblate.framasoft.org/projects/lufi/"
"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"
"PO-Revision-Date: 2019-10-10 08:58+0000\n"
"Language-Team: \n"
"X-Generator: Zanata 4.6.2\n"
"Last-Translator: Luc Didry <luc@framasoft.org>\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"Language: fr\n"
"Plural-Forms: nplurals=2; plural=n > 1;\n"
"X-Generator: Weblate 3.11.2\n"
#. ($delay)
#. (max_delay)
@ -50,7 +51,7 @@ msgstr "%A %d %B %Y à %T"
#: themes/default/templates/partial/index.js.ep:27
msgid "(max size: XXX)"
msgstr "(taille max: XXX)"
msgstr "(taille max : XXX)"
#: themes/default/templates/index.html.ep:5
msgid "1 year"
@ -184,7 +185,7 @@ msgstr "Créer une archive zip avec les fichiers avant lenvoi ?"
#: themes/default/templates/invitations/my_invitations.html.ep:26
msgid "Created at"
msgstr "Créée le "
msgstr "Créée le"
#: themes/default/templates/invitations/my_invitations.html.ep:14
msgid "Delete"
@ -263,11 +264,11 @@ msgstr "Chiffrement du fragment XX1 sur XX2"
#: lib/Lufi/Controller/Files.pm:289
msgid "Error: the file existed but was deleted."
msgstr "Erreur : le fichier existait mais a été supprimé"
msgstr "Erreur : le fichier existait mais a été supprimé."
#: lib/Lufi/Controller/Files.pm:369
msgid "Error: the file has not been sent entirely."
msgstr "Erreur : le fichier na pas été envoyé dans son intégralité"
msgstr "Erreur : le fichier na pas été envoyé dans son intégralité."
#: lib/Lufi/Controller/Files.pm:379
msgid "Error: unable to find the file. Are you sure of your URL?"
@ -326,7 +327,7 @@ msgid ""
msgstr ""
"Récupérez le code source sur <a href=\"https://framagit.org/luc/lufi\" class="
"\"classic\">le dépôt officiel</a> ou sur son <a href=\"https://github.com/"
"ldidry/lufi\" class=\"classic\">miroir Github</a>."
"ldidry/lufi\" class=\"classic\">miroir Github</a>"
#: themes/default/templates/invitations/my_invitations.html.ep:24
msgid "Guest mail"
@ -440,6 +441,16 @@ msgstr "Javascript est désactivé. Lufi ne fonctionnera pas."
msgid "Language"
msgstr "Langue"
#. (sprintf('<a href="https://framagit.org/fiat-tux/hat-softwares/lufi/-/commit/%s" class="classic">%s</a>', stash('version')
#: themes/default/templates/about.html.ep:22
msgid "Latest commit of this instance: %1"
msgstr "Dernier commit de cette instance : %1"
#. (sprintf('<a href="https://framagit.org/fiat-tux/hat-softwares/lufi/-/releases/%s" class="classic">%s</a>', stash('version')
#: themes/default/templates/about.html.ep:21
msgid "Latest tag of this instance: %1"
msgstr "Dernière étiquette de cette instance : %1"
#: themes/default/templates/login.html.ep:15
msgid "Login"
msgstr "Identifiant"
@ -832,6 +843,10 @@ msgstr "Envoyé le"
msgid "Uploaded files"
msgstr "Fichiers envoyés"
#: themes/default/templates/about.html.ep:20
msgid "Version"
msgstr "Version"
#: themes/default/templates/partial/index.js.ep:30
msgid "Websocket communication error"
msgstr "Erreur de communication WebSocket"
@ -938,12 +953,12 @@ msgstr "Contenu de larchive zip :"
#. (format_bytes($keys[$i])
#: themes/default/templates/delays.html.ep:20
msgid "between %1 and %2, the file will be kept %3 day(s)."
msgstr "entre %1 et %2, le fichier sera conservé %3 jour(s) ;"
msgstr "entre %1 et %2, le fichier sera conservé %3 jour(s)."
#. (format_bytes($keys[$i])
#: themes/default/templates/delays.html.ep:22
msgid "between %1 and %2, the file will be kept forever."
msgstr "entre %1 et %2, le fichier sera conservé indéfiniment ;"
msgstr "entre %1 et %2, le fichier sera conservé indéfiniment."
#: themes/default/templates/partial/mail.js.ep:42
msgid "deadline: "
@ -956,7 +971,7 @@ msgstr "expire le XXX"
#. (format_bytes($keys[$i])
#: themes/default/templates/delays.html.ep:26
msgid "for %1 and more, the file will be kept %2 day(s)"
msgstr "pour %1 et plus, le fichier sera conservé %2 jour(s)."
msgstr "pour %1 et plus, le fichier sera conservé %2 jour(s)"
#. (format_bytes($keys[$i])
#: themes/default/templates/delays.html.ep:28
@ -975,3 +990,27 @@ msgstr "ou"
#: themes/default/templates/invitations/notification_files_sent.mail.ep:12
msgid "— %1 (%2), that will expire on %3"
msgstr "— %1 (%2), qui expirera le %3"
#: themes/default/templates/about.html.ep:18
msgid "Get the source code on <a href=\"https://framagit.org/fiat-tux/hat-softwares/lufi\" class=\"classic\">the official repository</a> or on its <a href=\"https://github.com/ldidry/lufi\" class=\"classic\">Github mirror</a>"
msgstr ""
"Récupérez le code source sur <a href=\"https://framagit.org/fiat-tux/"
"hat-softwares/lufi\" class=\"classic\">le dépôt officiel</a> ou sur son <a "
"href=\"https://github.com/ldidry/lufi\" class=\"classic\">miroir Github</a>"
#: themes/default/templates/partial/index.js.ep:24
msgid "File uploaded"
msgstr "Fichier envoyé"
#: themes/default/templates/partial/render.js.ep:9
msgid "File downloaded"
msgstr "Fichier téléchargé"
#: themes/default/templates/about.html.ep:17
msgid "As Lufi is a free software licensed under of the terms of the <a href=\"https://gnu.org/licenses/agpl.html\" class=\"classic\">AGPLv3</a>, you can install it on you own server. Have a look on the <a href=\"https://framagit.org/fiat-tux/hat-softwares/lufi/wikis/home\" class=\"classic\">Wiki</a> for the procedure."
msgstr ""
"Comme Lufi est un logiciel libre soumis aux termes de la license <a href=\""
"https://gnu.org/licenses/agpl.html\" class=\"classic\">AGPLv3</a>, vous "
"pouvez linstaller sur votre propre serveur. Veuillez consulter le <a href=\""
"https://framagit.org/fiat-tux/hat-softwares/lufi/wikis/home\" class=\""
"classic\">Wiki</a> pour voir la procédure."

View File

@ -8,15 +8,16 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n"
"PO-Revision-Date: 2020-03-22 11:51+0000\n"
"Last-Translator: Luc Didry <luc@framasoft.org>\n"
"Language-Team: French (France) <https://weblate.framasoft.org/projects/lufi/"
"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"
"PO-Revision-Date: 2019-10-10 08:58+0000\n"
"Language-Team: \n"
"X-Generator: Zanata 4.6.2\n"
"Last-Translator: Luc Didry <luc@framasoft.org>\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"Language: fr_FR\n"
"Plural-Forms: nplurals=2; plural=n > 1;\n"
"X-Generator: Weblate 3.11.2\n"
#. ($delay)
#. (max_delay)
@ -50,7 +51,7 @@ msgstr "%A %d %B %Y à %T"
#: themes/default/templates/partial/index.js.ep:27
msgid "(max size: XXX)"
msgstr "(taille max: XXX)"
msgstr "(taille max : XXX)"
#: themes/default/templates/index.html.ep:5
msgid "1 year"
@ -184,7 +185,7 @@ msgstr "Créer une archive zip avec les fichiers avant lenvoi ?"
#: themes/default/templates/invitations/my_invitations.html.ep:26
msgid "Created at"
msgstr "Créée le "
msgstr "Créée le"
#: themes/default/templates/invitations/my_invitations.html.ep:14
msgid "Delete"
@ -263,11 +264,11 @@ msgstr "Chiffrement du fragment XX1 sur XX2"
#: lib/Lufi/Controller/Files.pm:289
msgid "Error: the file existed but was deleted."
msgstr "Erreur : le fichier existait mais a été supprimé"
msgstr "Erreur : le fichier existait mais a été supprimé."
#: lib/Lufi/Controller/Files.pm:369
msgid "Error: the file has not been sent entirely."
msgstr "Erreur : le fichier na pas été envoyé dans son intégralité"
msgstr "Erreur : le fichier na pas été envoyé dans son intégralité."
#: lib/Lufi/Controller/Files.pm:379
msgid "Error: unable to find the file. Are you sure of your URL?"
@ -326,7 +327,7 @@ msgid ""
msgstr ""
"Récupérez le code source sur <a href=\"https://framagit.org/luc/lufi\" class="
"\"classic\">le dépôt officiel</a> ou sur son <a href=\"https://github.com/"
"ldidry/lufi\" class=\"classic\">miroir Github</a>."
"ldidry/lufi\" class=\"classic\">miroir Github</a>"
#: themes/default/templates/invitations/my_invitations.html.ep:24
msgid "Guest mail"
@ -938,12 +939,12 @@ msgstr "Contenu de larchive zip :"
#. (format_bytes($keys[$i])
#: themes/default/templates/delays.html.ep:20
msgid "between %1 and %2, the file will be kept %3 day(s)."
msgstr "entre %1 et %2, le fichier sera conservé %3 jour(s) ;"
msgstr "entre %1 et %2, le fichier sera conservé %3 jour(s)."
#. (format_bytes($keys[$i])
#: themes/default/templates/delays.html.ep:22
msgid "between %1 and %2, the file will be kept forever."
msgstr "entre %1 et %2, le fichier sera conservé indéfiniment ;"
msgstr "entre %1 et %2, le fichier sera conservé indéfiniment."
#: themes/default/templates/partial/mail.js.ep:42
msgid "deadline: "
@ -956,7 +957,7 @@ msgstr "expire le XXX"
#. (format_bytes($keys[$i])
#: themes/default/templates/delays.html.ep:26
msgid "for %1 and more, the file will be kept %2 day(s)"
msgstr "pour %1 et plus, le fichier sera conservé %2 jour(s)."
msgstr "pour %1 et plus, le fichier sera conservé %2 jour(s)"
#. (format_bytes($keys[$i])
#: themes/default/templates/delays.html.ep:28
@ -975,3 +976,27 @@ msgstr "ou"
#: themes/default/templates/invitations/notification_files_sent.mail.ep:12
msgid "— %1 (%2), that will expire on %3"
msgstr "— %1 (%2), qui expirera le %3"
#: themes/default/templates/about.html.ep:18
msgid "Get the source code on <a href=\"https://framagit.org/fiat-tux/hat-softwares/lufi\" class=\"classic\">the official repository</a> or on its <a href=\"https://github.com/ldidry/lufi\" class=\"classic\">Github mirror</a>"
msgstr ""
"Récupérez le code source sur <a href=\"https://framagit.org/fiat-tux/"
"hat-softwares/lufi\" class=\"classic\">le dépôt officiel</a> ou sur son <a "
"href=\"https://github.com/ldidry/lufi\" class=\"classic\">miroir Github</a>"
#: themes/default/templates/partial/index.js.ep:24
msgid "File uploaded"
msgstr "Fichier envoyé"
#: themes/default/templates/partial/render.js.ep:9
msgid "File downloaded"
msgstr "Fichier téléchargé"
#: themes/default/templates/about.html.ep:17
msgid "As Lufi is a free software licensed under of the terms of the <a href=\"https://gnu.org/licenses/agpl.html\" class=\"classic\">AGPLv3</a>, you can install it on you own server. Have a look on the <a href=\"https://framagit.org/fiat-tux/hat-softwares/lufi/wikis/home\" class=\"classic\">Wiki</a> for the procedure."
msgstr ""
"Comme Lufi est un logiciel libre soumis aux termes de la license <a href=\""
"https://gnu.org/licenses/agpl.html\" class=\"classic\">AGPLv3</a>, vous "
"pouvez linstaller sur votre propre serveur. Veuillez consulter le <a href=\""
"https://framagit.org/fiat-tux/hat-softwares/lufi/wikis/home\" class=\""
"classic\">Wiki</a> pour voir la procédure."

View File

@ -8,15 +8,16 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n"
"PO-Revision-Date: 2020-03-22 18:29+0000\n"
"Last-Translator: Luc Didry <luc@framasoft.org>\n"
"Language-Team: Italian <https://weblate.framasoft.org/projects/lufi/"
"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"
"PO-Revision-Date: 2019-04-19 04:58+0000\n"
"Language-Team: \n"
"X-Generator: Zanata 4.6.2\n"
"Last-Translator: Luc Didry <luc@framasoft.org>\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"Language: it\n"
"X-Generator: Weblate 3.11.2\n"
#. ($delay)
#. (max_delay)
@ -428,6 +429,7 @@ msgid "Login"
msgstr "Login"
#: themes/default/templates/layouts/default.html.ep:58 themes/default/templates/layouts/default.html.ep:91
#, fuzzy
msgid "Logout"
msgstr "Logout"
@ -883,12 +885,12 @@ msgstr ""
#. (format_bytes($keys[$i])
#: themes/default/templates/delays.html.ep:20
msgid "between %1 and %2, the file will be kept %3 day(s)."
msgstr "tra %1 e %2, il file sarà conservato %3 giorno(i);"
msgstr "tra %1 e %2, il file sarà conservato %3 giorno(i)."
#. (format_bytes($keys[$i])
#: themes/default/templates/delays.html.ep:22
msgid "between %1 and %2, the file will be kept forever."
msgstr "tra %1 e %2, il file sarà conservato per sempre;"
msgstr "tra %1 e %2, il file sarà conservato per sempre."
#: themes/default/templates/partial/mail.js.ep:42
msgid "deadline: "
@ -920,3 +922,19 @@ msgstr "o"
#: themes/default/templates/invitations/notification_files_sent.mail.ep:12
msgid "— %1 (%2), that will expire on %3"
msgstr ""
#: themes/default/templates/about.html.ep:17
msgid "As Lufi is a free software licensed under of the terms of the <a href=\"https://gnu.org/licenses/agpl.html\" class=\"classic\">AGPLv3</a>, you can install it on you own server. Have a look on the <a href=\"https://framagit.org/fiat-tux/hat-softwares/lufi/wikis/home\" class=\"classic\">Wiki</a> for the procedure."
msgstr ""
"Poiché Lufi è un software libero soggetto ai termini della licenza <a href=\""
"https://gnu.org/licenses/agpl.html\" class=\"classic\">AGPLv3</a>, potete "
"installarlo sul vostro server. Si consulti <a href=\"https://framagit.org/"
"fiat-tux/hat-softwares/lufi/wikis/home\" class=\"classic\">Wiki</a> per "
"vedere la procedura."
#: themes/default/templates/about.html.ep:18
msgid "Get the source code on <a href=\"https://framagit.org/fiat-tux/hat-softwares/lufi\" class=\"classic\">the official repository</a> or on its <a href=\"https://github.com/ldidry/lufi\" class=\"classic\">Github mirror</a>"
msgstr ""
"Ottenere il codice sorgente sul <a href=\"https://framagit.org/fiat-tux/"
"hat-softwares/lufi\" class=\"classic\">repository ufficiale</a> o sul suo <a "
"href=\"https://github.com/ldidry/lufi\" class=\"classic\">mirror Github</a>"

View File

@ -45,7 +45,7 @@ msgstr ""
msgid "%A %d %B %Y at %T"
msgstr ""
#: themes/default/templates/partial/index.js.ep:27
#: themes/default/templates/partial/index.js.ep:28
msgid "(max size: XXX)"
msgstr ""
@ -86,15 +86,15 @@ msgid "Are you sure you want to resend the invitation mail for the selected invi
msgstr ""
#: themes/default/templates/about.html.ep:17
msgid "As Lufi is a free software licensed under of the terms of the <a href=\"https://gnu.org/licenses/agpl.html\" class=\"classic\">AGPLv3</a>, you can install it on you own server. Have a look on the <a href=\"https://framagit.org/luc/lufi/wikis/home\" class=\"classic\">Wiki</a> for the procedure."
msgid "As Lufi is a free software licensed under of the terms of the <a href=\"https://gnu.org/licenses/agpl.html\" class=\"classic\">AGPLv3</a>, you can install it on you own server. Have a look on the <a href=\"https://framagit.org/fiat-tux/hat-softwares/lufi/wikis/home\" class=\"classic\">Wiki</a> for the procedure."
msgstr ""
#. (stash('nbslices')
#: themes/default/templates/partial/render.js.ep:9
#: themes/default/templates/partial/render.js.ep:10
msgid "Asking for file part XX1 of %1"
msgstr ""
#: themes/default/templates/about.html.ep:20
#: themes/default/templates/about.html.ep:23
msgid "Back to homepage"
msgstr ""
@ -138,15 +138,15 @@ msgstr ""
msgid "Copy to clipboard"
msgstr ""
#: lib/Lufi/Controller/Files.pm:507
#: lib/Lufi/Controller/Files.pm:502
msgid "Could not delete the file. You are not authenticated."
msgstr ""
#: lib/Lufi/Controller/Files.pm:489
#: lib/Lufi/Controller/Files.pm:484
msgid "Could not find the file. Are you sure of the URL and the token?"
msgstr ""
#: lib/Lufi/Controller/Files.pm:400
#: lib/Lufi/Controller/Files.pm:395
msgid "Could not find the file. Are you sure of the URL?"
msgstr ""
@ -222,15 +222,15 @@ msgstr ""
msgid "Encrypting part XX1 of XX2"
msgstr ""
#: lib/Lufi/Controller/Files.pm:289
#: lib/Lufi/Controller/Files.pm:284
msgid "Error: the file existed but was deleted."
msgstr ""
#: lib/Lufi/Controller/Files.pm:369
#: lib/Lufi/Controller/Files.pm:364
msgid "Error: the file has not been sent entirely."
msgstr ""
#: lib/Lufi/Controller/Files.pm:379
#: lib/Lufi/Controller/Files.pm:374
msgid "Error: unable to find the file. Are you sure of your URL?"
msgstr ""
@ -250,14 +250,22 @@ msgstr ""
msgid "Export localStorage data"
msgstr ""
#: lib/Lufi/Controller/Files.pm:471
#: lib/Lufi/Controller/Files.pm:466
msgid "File deleted"
msgstr ""
#: themes/default/templates/partial/render.js.ep:9
msgid "File downloaded"
msgstr ""
#: themes/default/templates/files.html.ep:27
msgid "File name"
msgstr ""
#: themes/default/templates/partial/index.js.ep:24
msgid "File uploaded"
msgstr ""
#: themes/default/templates/invitations/my_invitations.html.ep:61
msgid "Files"
msgstr ""
@ -279,7 +287,7 @@ msgid "Get the file"
msgstr ""
#: themes/default/templates/about.html.ep:18
msgid "Get the source code on <a href=\"https://framagit.org/luc/lufi\" class=\"classic\">the official repository</a> or on its <a href=\"https://github.com/ldidry/lufi\" class=\"classic\">Github mirror</a>"
msgid "Get the source code on <a href=\"https://framagit.org/fiat-tux/hat-softwares/lufi\" class=\"classic\">the official repository</a> or on its <a href=\"https://github.com/ldidry/lufi\" class=\"classic\">Github mirror</a>"
msgstr ""
#: themes/default/templates/invitations/my_invitations.html.ep:24
@ -307,11 +315,11 @@ msgstr ""
msgid "Hide hidden invitations"
msgstr ""
#: themes/default/templates/partial/index.js.ep:25
#: themes/default/templates/partial/index.js.ep:26
msgid "Hit Enter, then Ctrl+C to copy all the download links"
msgstr ""
#: themes/default/templates/partial/index.js.ep:24
#: themes/default/templates/partial/index.js.ep:25
msgid "Hit Enter, then Ctrl+C to copy the download link"
msgstr ""
@ -381,6 +389,16 @@ msgstr ""
msgid "Language"
msgstr ""
#. (sprintf('<a href="https://framagit.org/fiat-tux/hat-softwares/lufi/-/commit/%s" class="classic">%s</a>', stash('version')
#: themes/default/templates/about.html.ep:22
msgid "Latest commit of this instance: %1"
msgstr ""
#. (sprintf('<a href="https://framagit.org/fiat-tux/hat-softwares/lufi/-/releases/%s" class="classic">%s</a>', stash('version')
#: themes/default/templates/about.html.ep:21
msgid "Latest tag of this instance: %1"
msgstr ""
#: themes/default/templates/login.html.ep:15
msgid "Login"
msgstr ""
@ -418,11 +436,11 @@ msgid "Name of the zip file"
msgstr ""
#. (format_bytes($json->{size})
#: lib/Lufi/Controller/Files.pm:108
#: lib/Lufi/Controller/Files.pm:109
msgid "No enough space available on the server for this file (size: %1)."
msgstr ""
#: themes/default/templates/partial/files.js.ep:10 themes/default/templates/partial/index.js.ep:28
#: themes/default/templates/partial/files.js.ep:10 themes/default/templates/partial/index.js.ep:29
msgid "No expiration delay"
msgstr ""
@ -479,7 +497,7 @@ msgstr ""
msgid "Rows in red mean that the files have expired and are no longer available."
msgstr ""
#: themes/default/templates/partial/index.js.ep:26
#: themes/default/templates/partial/index.js.ep:27
msgid "Send all links by email"
msgstr ""
@ -495,7 +513,7 @@ msgstr ""
msgid "Send with your own mail software"
msgstr ""
#: themes/default/templates/partial/index.js.ep:29
#: themes/default/templates/partial/index.js.ep:30
msgid "Sending part XX1 of XX2. Please, be patient, the progress bar can take a while to move."
msgstr ""
@ -508,7 +526,7 @@ msgstr ""
msgid "Show hidden invitations"
msgstr ""
#: themes/default/templates/partial/render.js.ep:11
#: themes/default/templates/partial/render.js.ep:12
msgid "Show zip content"
msgstr ""
@ -533,7 +551,7 @@ msgid "Sorry, your invitation has expired or has been deleted."
msgstr ""
#. ($invit->ldap_user_mail)
#: lib/Lufi/Controller/Files.pm:122
#: lib/Lufi/Controller/Files.pm:123
msgid "Sorry, your invitation has expired or has been deleted. Please contact %1 to have another invitation."
msgstr ""
@ -567,7 +585,7 @@ msgstr ""
msgid "The expiration delay (%1) is not between 1 and %2 days."
msgstr ""
#: lib/Lufi/Controller/Files.pm:468
#: lib/Lufi/Controller/Files.pm:463
msgid "The file has already been deleted"
msgstr ""
@ -622,11 +640,11 @@ msgstr ""
msgid "The original (and only for now) author is <a href=\"https://fiat-tux.fr\" class=\"classic\">Luc Didry</a>."
msgstr ""
#: lib/Lufi/Controller/Files.pm:236
#: lib/Lufi/Controller/Files.pm:231
msgid "The server was unable to find the file record to add your file part to. Please, contact the administrator."
msgstr ""
#: lib/Lufi/Controller/Files.pm:295
#: lib/Lufi/Controller/Files.pm:290
msgid "This file has been deactivated by the admins. Contact them to know why."
msgstr ""
@ -656,17 +674,17 @@ msgid "Unable to copy the link(s) to your clipboard"
msgstr ""
#. ($short)
#: lib/Lufi/Controller/Files.pm:439
#: lib/Lufi/Controller/Files.pm:434
msgid "Unable to get counter for %1. The file does not exists. It will be removed from your localStorage."
msgstr ""
#. ($short)
#: lib/Lufi/Controller/Files.pm:429
#: lib/Lufi/Controller/Files.pm:424
msgid "Unable to get counter for %1. The token is invalid."
msgstr ""
#. ($short)
#: lib/Lufi/Controller/Files.pm:449
#: lib/Lufi/Controller/Files.pm:444
msgid "Unable to get counter for %1. You are not authenticated."
msgstr ""
@ -686,7 +704,11 @@ msgstr ""
msgid "Uploaded files"
msgstr ""
#: themes/default/templates/partial/index.js.ep:30
#: themes/default/templates/about.html.ep:20
msgid "Version"
msgstr ""
#: themes/default/templates/partial/index.js.ep:31
msgid "Websocket communication error"
msgstr ""
@ -718,7 +740,7 @@ msgstr ""
msgid "You don't need to register yourself to upload files but be aware that, for legal reasons, your IP address will be stored when you send a file. Don't panic, this is normally the case for all sites on which you send files."
msgstr ""
#: themes/default/templates/partial/render.js.ep:10
#: themes/default/templates/partial/render.js.ep:11
msgid "You don't seem to have a key in your URL. You won't be able to decrypt the file. Download canceled."
msgstr ""
@ -747,11 +769,11 @@ msgstr ""
msgid "Your file is too big: %1 (maximum size allowed: %2)"
msgstr ""
#: lib/Lufi/Controller/Files.pm:351
#: lib/Lufi/Controller/Files.pm:346
msgid "Your password is not valid. Please refresh the page to retry."
msgstr ""
#: themes/default/templates/partial/render.js.ep:12
#: themes/default/templates/partial/render.js.ep:13
msgid "Zip content:"
msgstr ""

View File

@ -4,15 +4,16 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n"
"PO-Revision-Date: 2020-03-22 18:29+0000\n"
"Last-Translator: Luc Didry <luc@framasoft.org>\n"
"Language-Team: Dutch <https://weblate.framasoft.org/projects/lufi/"
"default-theme/nl/>\n"
"Language: nl\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"PO-Revision-Date: 2019-04-19 04:57+0000\n"
"Last-Translator: Luc Didry <luc@framasoft.org>\n"
"Language-Team: Dutch\n"
"Language: nl\n"
"X-Generator: Zanata 4.6.2\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 3.11.2\n"
#. ($delay)
#. (max_delay)
@ -246,7 +247,7 @@ msgstr "Emails"
#: themes/default/templates/partial/index.js.ep:22
msgid "Encrypting part XX1 of XX2"
msgstr "Encrypten deel XX1 van XX2 "
msgstr "Encrypten deel XX1 van XX2"
#: lib/Lufi/Controller/Files.pm:289
msgid "Error: the file existed but was deleted."
@ -329,7 +330,10 @@ msgstr ""
#: themes/default/templates/partial/mail.js.ep:35
msgid "Hello,\\n\\nHere's some files I want to share with you:\\n"
msgstr "Hallo,\\n\\nHier zijn enkele bestanden die ik met je wil delen:\\n\\n"
msgstr ""
"Hallo,\\n"
"\\n"
"Hier zijn enkele bestanden die ik met je wil delen:\\n"
#: themes/default/templates/mail.html.ep:35
msgid "Here's some files"
@ -847,7 +851,7 @@ msgid ""
"You have attempted to leave this page. The upload will be canceled. Are you "
"sure?"
msgstr ""
"Je verlaat deze pagina. Upload zal geannuleerd worden. Weet je het zeker? "
"Je verlaat deze pagina. Upload zal geannuleerd worden. Weet je het zeker?"
#: themes/default/templates/logout.html.ep:14
msgid "You have been successfully logged out."
@ -917,3 +921,19 @@ msgstr "of"
#: themes/default/templates/invitations/notification_files_sent.mail.ep:12
msgid "— %1 (%2), that will expire on %3"
msgstr ""
#: themes/default/templates/about.html.ep:18
msgid "Get the source code on <a href=\"https://framagit.org/fiat-tux/hat-softwares/lufi\" class=\"classic\">the official repository</a> or on its <a href=\"https://github.com/ldidry/lufi\" class=\"classic\">Github mirror</a>"
msgstr ""
"Krijg de broncode op <a href=\"https://framagit.org/fiat-tux/hat-softwares/"
"lufi\" class=\"classic\">de officiële repository</a> of op <a href=\""
"https://github.com/ldidry/lufi\" class=\"classic\">Github mirror</a>"
#: themes/default/templates/about.html.ep:17
msgid "As Lufi is a free software licensed under of the terms of the <a href=\"https://gnu.org/licenses/agpl.html\" class=\"classic\">AGPLv3</a>, you can install it on you own server. Have a look on the <a href=\"https://framagit.org/fiat-tux/hat-softwares/lufi/wikis/home\" class=\"classic\">Wiki</a> for the procedure."
msgstr ""
"Aangezien Lufi een gratis software id die gelicentieerd staat onder de "
"voorwaarden van <a href=\"https://gnu.org/licenses/agpl.html\" class=\""
"classic\">AGPLv3</a>, kan je het installeren op je eigen server. Bekijk <a "
"href=\"https://framagit.org/fiat-tux/hat-softwares/lufi/wikis/home\" class=\""
"classic\">Wiki</a> voor de procedure."

View File

@ -11,15 +11,16 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n"
"PO-Revision-Date: 2020-05-22 08:24+0000\n"
"Last-Translator: Quentin PAGÈS <quentinantonin@free.fr>\n"
"Language-Team: Occitan <https://weblate.framasoft.org/projects/lufi/"
"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"
"PO-Revision-Date: 2019-10-11 05:26+0000\n"
"Last-Translator: Quentí\n"
"Language-Team: Tot en òc (totenoc.eu)\n"
"Language: oc\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"X-Generator: Zanata 4.6.2\n"
"Plural-Forms: nplurals=2; plural=n > 1;\n"
"X-Generator: Weblate 3.11.2\n"
#. ($delay)
#. (max_delay)
@ -35,7 +36,7 @@ msgstr "%1 vos convida a li mandar de fichièrs"
#. (stash('ldap_user')
#: themes/default/templates/invitations/invite.mail.ep:6
msgid "%1 invites you to send him/her files through Lufi."
msgstr "%1 vos convida a li mandar de fichièrs per Lufi"
msgstr "%1 vos convida a li mandar de fichièrs per Lufi."
#. (stash('invitation')
#: themes/default/templates/invitations/notification_files_sent.mail.ep:4
@ -264,11 +265,11 @@ msgstr "Chiframent del tròç XX1 sus XX2"
#: lib/Lufi/Controller/Files.pm:289
msgid "Error: the file existed but was deleted."
msgstr "Error: lo fichièr existissiá mas es estat suprimit"
msgstr "Error: lo fichièr existissiá mas es estat suprimit."
#: lib/Lufi/Controller/Files.pm:369
msgid "Error: the file has not been sent entirely."
msgstr "Error: lo fichièr es pas estat mandat completament"
msgstr "Error: lo fichièr es pas estat mandat completament."
#: lib/Lufi/Controller/Files.pm:379
msgid "Error: unable to find the file. Are you sure of your URL?"
@ -326,7 +327,7 @@ msgid ""
msgstr ""
"Recuperatz lo còdi font sul <a href=\"https://framagit.org/luc/lufi\" class="
"\"classic\">depaus oficial</a> o sus son <a href=\"https://github.com/ldidry/"
"lufi\" class=\"classic\">miralh Github</a>."
"lufi\" class=\"classic\">miralh Github</a>"
#: themes/default/templates/invitations/my_invitations.html.ep:24
msgid "Guest mail"
@ -714,7 +715,7 @@ msgstr "Linvitacion %1 es estada suprimida."
#. (stash('user_mail')
#: themes/default/templates/invitations/invite.html.ep:34
msgid "The invitation mail will be send from your email address (%1)."
msgstr "Lo messatge dinvitacion serà mandat a vòstra adreça electronica (%1)"
msgstr "Lo messatge dinvitacion serà mandat a vòstra adreça electronica (%1)."
#: themes/default/templates/partial/index.js.ep:16
msgid "The link(s) has been copied to your clipboard"
@ -843,7 +844,7 @@ msgstr "Qual escriguèt aqueste logicial?"
#: themes/default/templates/partial/index.js.ep:13
msgid "XXX file has been added to upload queue."
msgstr "XXX fichièrs son estats ajustats a la fila de mandadís"
msgstr "XXX fichièrs son estats ajustats a la fila de mandadís."
#: themes/default/templates/invitations/invite.html.ep:30
msgid ""
@ -935,16 +936,16 @@ msgstr "Contengut ZIP :"
#. (format_bytes($keys[$i])
#: themes/default/templates/delays.html.ep:20
msgid "between %1 and %2, the file will be kept %3 day(s)."
msgstr "entre %1 e %2, lo fichièr serà gardat %3 jorn(s) ;"
msgstr "entre %1 e %2, lo fichièr serà gardat %3 jorn(s)."
#. (format_bytes($keys[$i])
#: themes/default/templates/delays.html.ep:22
msgid "between %1 and %2, the file will be kept forever."
msgstr "entre %1 e %2, lo fichièr serà gardat per totjorn. ;"
msgstr "entre %1 e %2, lo fichièr serà gardat per totjorn."
#: themes/default/templates/partial/mail.js.ep:42
msgid "deadline: "
msgstr "darrièr relambi per telecargar:"
msgstr "darrièr relambi per telecargar: "
#: themes/default/templates/partial/invitations.js.ep:5
msgid "expires on XXX"
@ -953,7 +954,7 @@ msgstr "expira lo XXX"
#. (format_bytes($keys[$i])
#: themes/default/templates/delays.html.ep:26
msgid "for %1 and more, the file will be kept %2 day(s)"
msgstr "per %1 e mai, lo fichièr serà gardat %2 jorn(s)."
msgstr "per %1 e mai, lo fichièr serà gardat %2 jorn(s)"
#. (format_bytes($keys[$i])
#: themes/default/templates/delays.html.ep:28
@ -972,3 +973,41 @@ msgstr "o"
#: themes/default/templates/invitations/notification_files_sent.mail.ep:12
msgid "— %1 (%2), that will expire on %3"
msgstr "— %1 (%2), quexpirarà lo %3"
#: themes/default/templates/about.html.ep:18
msgid "Get the source code on <a href=\"https://framagit.org/fiat-tux/hat-softwares/lufi\" class=\"classic\">the official repository</a> or on its <a href=\"https://github.com/ldidry/lufi\" class=\"classic\">Github mirror</a>"
msgstr ""
"Recuperatz lo còdi font sul <a href=\"https://framagit.org/fiat-tux/"
"hat-softwares/lufi\" class=\"classic\">depaus oficial</a> o sus son <a href="
"\"https://github.com/ldidry/lufi\" class=\"classic\">miralh Github</a>"
#: themes/default/templates/about.html.ep:17
msgid "As Lufi is a free software licensed under of the terms of the <a href=\"https://gnu.org/licenses/agpl.html\" class=\"classic\">AGPLv3</a>, you can install it on you own server. Have a look on the <a href=\"https://framagit.org/fiat-tux/hat-softwares/lufi/wikis/home\" class=\"classic\">Wiki</a> for the procedure."
msgstr ""
"Ja que Lufi es un logicial liure somés als tèrmes de la licéncia <a href=\""
"https://gnu.org/licenses/agpl.html\" class=\"classic\">AGPLv3</a>, podètz l"
"installar sus vòstre pròpri servidor. Mercés de consultar lo <a href=\""
"https://framagit.org/fiat-tux/hat-softwares/lufi/wikis/home\" class=\""
"classic\">Wiki</a> per veire la procedura."
#: themes/default/templates/partial/index.js.ep:24
msgid "File uploaded"
msgstr "Fichièr mandat"
#: themes/default/templates/partial/render.js.ep:9
msgid "File downloaded"
msgstr "Fichièr telecargat"
#: themes/default/templates/about.html.ep:20
msgid "Version"
msgstr "Version"
#. (sprintf('<a href="https://framagit.org/fiat-tux/hat-softwares/lufi/-/releases/%s" class="classic">%s</a>', stash('version')
#: themes/default/templates/about.html.ep:21
msgid "Latest tag of this instance: %1"
msgstr "Darrièra etiqueta daquesta instància: %1"
#. (sprintf('<a href="https://framagit.org/fiat-tux/hat-softwares/lufi/-/commit/%s" class="classic">%s</a>', stash('version')
#: themes/default/templates/about.html.ep:22
msgid "Latest commit of this instance: %1"
msgstr "Darrièr commit daquesta instància: %1"

View File

@ -9,15 +9,16 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n"
"PO-Revision-Date: 2020-03-22 18:29+0000\n"
"Last-Translator: Luc Didry <luc@framasoft.org>\n"
"Language-Team: Portuguese <https://weblate.framasoft.org/projects/lufi/"
"default-theme/pt/>\n"
"Language: pt\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"PO-Revision-Date: 2019-04-19 04:58+0000\n"
"Language-Team: \n"
"X-Generator: Zanata 4.6.2\n"
"Last-Translator: Luc Didry <luc@framasoft.org>\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"Language: pt\n"
"Plural-Forms: nplurals=2; plural=n > 1;\n"
"X-Generator: Weblate 3.11.2\n"
#. ($delay)
#. (max_delay)
@ -894,7 +895,7 @@ msgstr ""
#. (format_bytes($keys[$i])
#: themes/default/templates/delays.html.ep:20
msgid "between %1 and %2, the file will be kept %3 day(s)."
msgstr "entre %1 e %2, o ficheiro será conservado %3 dia(s) ;"
msgstr "entre %1 e %2, o ficheiro será conservado %3 dia(s)."
#. (format_bytes($keys[$i])
#: themes/default/templates/delays.html.ep:22
@ -932,3 +933,19 @@ msgstr "ou"
#: themes/default/templates/invitations/notification_files_sent.mail.ep:12
msgid "— %1 (%2), that will expire on %3"
msgstr ""
#: themes/default/templates/about.html.ep:18
msgid "Get the source code on <a href=\"https://framagit.org/fiat-tux/hat-softwares/lufi\" class=\"classic\">the official repository</a> or on its <a href=\"https://github.com/ldidry/lufi\" class=\"classic\">Github mirror</a>"
msgstr ""
"Recupere o código-fonte no <a href=\"https://framagit.org/fiat-tux/"
"hat-softwares/lufi\" class=\"classic\">o depósito oficial</a> ou então <a "
"href=\"https://github.com/ldidry/lufi\" class=\"classic\">réplicas Github</a>"
#: themes/default/templates/about.html.ep:17
msgid "As Lufi is a free software licensed under of the terms of the <a href=\"https://gnu.org/licenses/agpl.html\" class=\"classic\">AGPLv3</a>, you can install it on you own server. Have a look on the <a href=\"https://framagit.org/fiat-tux/hat-softwares/lufi/wikis/home\" class=\"classic\">Wiki</a> for the procedure."
msgstr ""
"Como Lufi é um programa livre sob os termos da licença <a href=\"https://gnu."
"org/licenses/agpl.html\" class=\"classic\">AGPLv3</a>, pode instalar-lo no "
"seu prórpio servidor. Para saber mais clique aqui <a href=\"https://framagit."
"org/fiat-tux/hat-softwares/lufi/wikis/home\" class=\"classic\">Wiki</a> para "
"ver o procedimento."

View File

@ -0,0 +1,861 @@
# 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-03-22 18:28+0000\n"
"Last-Translator: Luc Didry <luc@framasoft.org>\n"
"Language-Team: Swedish <https://weblate.framasoft.org/projects/lufi/"
"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 3.11.2\n"
#. ($delay)
#. (max_delay)
#: themes/default/templates/index.html.ep:56 themes/default/templates/index.html.ep:65 themes/default/templates/index.html.ep:66
msgid "%1 days"
msgstr "%1 dagar"
#. (stash('ldap_user')
#: themes/default/templates/invitations/invite.mail.ep:2
msgid "%1 invites you to send him/her files"
msgstr "%1 bjuder in dig att skicka filer till honom eller henne"
#. (stash('ldap_user')
#: themes/default/templates/invitations/invite.mail.ep:6
msgid "%1 invites you to send him/her files through Lufi."
msgstr "%1 bjuder in dig att skicka filer till honom eller henne via Lufi."
#. (stash('invitation')
#: themes/default/templates/invitations/notification_files_sent.mail.ep:4
msgid "%1 sent you files"
msgstr "% har skickat filer till dig"
#. (stash('invitation')
#: themes/default/templates/invitations/notification_files_sent.mail.ep:8
msgid "%1 used your invitation to send you files:"
msgstr "%1 utnyttjade din inbjudan för att skicka filer till dig:"
#: lib/Lufi/Controller/Invitation.pm:159 lib/Lufi/Controller/Invitation.pm:84 themes/default/templates/invitations/my_invitations.html.ep:51 themes/default/templates/invitations/my_invitations.html.ep:52 themes/default/templates/invitations/my_invitations.html.ep:53 themes/default/templates/invitations/notification_files_sent.mail.ep:12
msgid "%A %d %B %Y at %T"
msgstr "%A %d %B %Y klockan %T"
#: themes/default/templates/partial/index.js.ep:27
msgid "(max size: XXX)"
msgstr "(största tillåtna storlek: XXX)"
#: themes/default/templates/index.html.ep:5
msgid "1 year"
msgstr "1 år"
#: themes/default/templates/index.html.ep:4 themes/default/templates/index.html.ep:65
msgid "24 hours"
msgstr "24 timmar"
#: themes/default/templates/partial/mail.js.ep:40
msgid ":"
msgstr ":"
#: themes/default/templates/render.html.ep:42
msgid "Abort"
msgstr "Avbryt"
#: themes/default/templates/layouts/default.html.ep:53 themes/default/templates/layouts/default.html.ep:86
msgid "About"
msgstr "Om"
#: themes/default/templates/index.html.ep:107
msgid "Add a password to file(s)"
msgstr "Lösenordsskydda filerna"
#: themes/default/templates/mail.html.ep:16
msgid "Adding URLs not related to this Lufi instance to the mail body or subject is prohibited."
msgstr ""
"Det är inte tillåtet att infoga länkar i ämnesraden eller meddelandet som "
"inte går till den här Lufi-instansen."
#: themes/default/templates/partial/invitations.js.ep:3
msgid "Are you sure you want to delete the selected invitations?"
msgstr "Är du säker på att du vill radera de markerade inbjudningarna?"
#: themes/default/templates/partial/invitations.js.ep:4
msgid "Are you sure you want to resend the invitation mail for the selected invitations?"
msgstr "Är du säker på att du vill skicka ut de markerade inbjudningarna igen?"
#: themes/default/templates/about.html.ep:17
msgid "As Lufi is a free software licensed under of the terms of the <a href=\"https://gnu.org/licenses/agpl.html\" class=\"classic\">AGPLv3</a>, you can install it on you own server. Have a look on the <a href=\"https://framagit.org/luc/lufi/wikis/home\" class=\"classic\">Wiki</a> for the procedure."
msgstr ""
"Du kan installera Lufi på din egen server eftersom det är en fri mjukvara "
"publicerad under licensen <a href=\"https://gnu.org/licenses/agpl.html\" "
"class=\"classic\">AGPLv3</a>. Ta en titt på <a href=\"https://framagit.org/"
"luc/lufi/wikis/home\" class=\"classic\">wikin</a> för att se hur."
#. (stash('nbslices')
#: themes/default/templates/partial/render.js.ep:9
msgid "Asking for file part XX1 of %1"
msgstr "Frågar efter del XX1 av filen %1"
#: themes/default/templates/about.html.ep:20
msgid "Back to homepage"
msgstr "Tillbaka till hemsidan"
#: lib/Lufi/Controller/Mail.pm:25
msgid "Bad CSRF token!"
msgstr "Ogiltig CSRF-token!"
#: lib/Lufi/Controller/Auth.pm:27 lib/Lufi/Controller/Auth.pm:49
msgid "Bad CSRF token."
msgstr "Ogiltig CSRF-token."
#: themes/default/templates/partial/render.js.ep:5
msgid "Click here to refresh the page and restart the download."
msgstr "Klicka här för att uppdatera sidan och starta om nerladdningen."
#: themes/default/templates/invitations/invite.mail.ep:8
msgid "Click on the following URL to upload files on Lufi:"
msgstr "Klicka på följande länk för att ladda upp filer till Lufi:"
#: themes/default/templates/index.html.ep:126
msgid "Click to open the file browser"
msgstr "Klicka för att öppna filhanteraren"
#: themes/default/templates/delays.html.ep:38 themes/default/templates/invitations/my_invitations.html.ep:80
msgid "Close"
msgstr "Stäng"
#: themes/default/templates/mail.html.ep:23
msgid "Comma-separated email addresses"
msgstr "E-postadresser åtskilda av kommatecken"
#: themes/default/templates/index.html.ep:140
msgid "Compressing zip file…"
msgstr "Komprimerar ZIP-arkiv …"
#: themes/default/templates/partial/index.js.ep:15
msgid "Copy all links to clipboard"
msgstr "Kopiera alla länkar till urklipp"
#: themes/default/templates/partial/index.js.ep:18
msgid "Copy to clipboard"
msgstr "Kopiera till urklipp"
#: lib/Lufi/Controller/Files.pm:507
msgid "Could not delete the file. You are not authenticated."
msgstr "Kunde inte radera filen. Du är inte behörig."
#: lib/Lufi/Controller/Files.pm:489
msgid "Could not find the file. Are you sure of the URL and the token?"
msgstr "Kunde inte hitta filen. Är du säker på att det är rätt länk och token?"
#: lib/Lufi/Controller/Files.pm:400
msgid "Could not find the file. Are you sure of the URL?"
msgstr "Kunde inte hitta filen. Är du säker på att det är rätt länk?"
#: themes/default/templates/files.html.ep:29
msgid "Counter"
msgstr "Räknare"
#: themes/default/templates/index.html.ep:100
msgid "Create a zip archive with the files before uploading?"
msgstr "Vill du skapa göra filerna till ett ZIP-arkiv innan de laddas upp?"
#: themes/default/templates/invitations/my_invitations.html.ep:26
msgid "Created at"
msgstr "Skapad"
#: themes/default/templates/invitations/my_invitations.html.ep:14
msgid "Delete"
msgstr "Radera"
#: themes/default/templates/files.html.ep:30 themes/default/templates/index.html.ep:90
msgid "Delete at first download?"
msgstr "Radera efter första nerladdningen"
#: themes/default/templates/files.html.ep:19
msgid "Delete selected files"
msgstr "Radera markerade filer"
#: themes/default/templates/files.html.ep:33 themes/default/templates/partial/index.js.ep:19
msgid "Deletion link"
msgstr "Länk för radering"
#: themes/default/templates/delays.html.ep:8
msgid "Don't worry: if a user begins to download the file before the expiration and the download ends after the expiration, he will be able to get the file."
msgstr ""
"Oroa dig inte! Om en användare börjar ladda ner en fil innan dess "
"utgångsdatum kommer hela filen kunna laddas ner, även om den skulle gå ut "
"under tiden."
#: themes/default/templates/partial/index.js.ep:21 themes/default/templates/render.html.ep:28
msgid "Download"
msgstr "Ladda ner"
#: themes/default/templates/partial/render.js.ep:4
msgid "Download aborted."
msgstr "Nerladdning avbruten."
#: themes/default/templates/files.html.ep:28 themes/default/templates/partial/index.js.ep:20
msgid "Download link"
msgstr "Nerladdningslänk"
#: themes/default/templates/about.html.ep:10
msgid "Drag and drop files in the appropriate area or use the traditional way to send files and the files will be chunked, encrypted and sent to the server. You will get two links per file: a download link, that you give to the people you want to share the file with and a deletion link, allowing you to delete the file whenever you want."
msgstr ""
"Drag och släpp filerna på ytan eller skicka dem på det traditionella viset, "
"så kommer de buntas ihop, krypteras och skickas till servern. Du kommer få "
"två länkar per fil: en nerladdningslänk att ge till dem du vill dela filen "
"med och en länk för att radera filen, så att du kan ta bort den när du vill."
#: themes/default/templates/index.html.ep:122
msgid "Drop files here"
msgstr "Släpp filer här"
#: themes/default/templates/invitations/invite.html.ep:40
msgid "Email address of your guest"
msgstr "E-postadress till din gäst"
#: themes/default/templates/mail.html.ep:39
msgid "Email body"
msgstr "E-postmeddelande"
#: themes/default/templates/mail.html.ep:31
msgid "Email subject"
msgstr "Ämnesrad för e-post"
#: themes/default/templates/mail.html.ep:25 themes/default/templates/mail.html.ep:27
msgid "Emails"
msgstr "E-postmeddelanden"
#: themes/default/templates/partial/index.js.ep:22
msgid "Encrypting part XX1 of XX2"
msgstr "Krypterar del XX1 av XX1"
#: lib/Lufi/Controller/Files.pm:289
msgid "Error: the file existed but was deleted."
msgstr "Fel: filen fanns men har raderats nu."
#: lib/Lufi/Controller/Files.pm:369
msgid "Error: the file has not been sent entirely."
msgstr "Fel: hela filen har inte överförts."
#: lib/Lufi/Controller/Files.pm:379
msgid "Error: unable to find the file. Are you sure of your URL?"
msgstr "Fel: kunde inte hitta filen. Är du säker på att du har rätt länk?"
#: themes/default/templates/partial/index.js.ep:23
msgid "Expiration:"
msgstr "Går ut:"
#: themes/default/templates/invitations/my_invitations.html.ep:27
msgid "Expire at"
msgstr "Förfaller"
#: themes/default/templates/files.html.ep:32
msgid "Expires at"
msgstr "Förfaller"
#: themes/default/templates/files.html.ep:12
msgid "Export localStorage data"
msgstr "Exportera localStorage-data"
#: lib/Lufi/Controller/Files.pm:471
msgid "File deleted"
msgstr "Fil raderad"
#: themes/default/templates/files.html.ep:27
msgid "File name"
msgstr "Filnamn"
#: themes/default/templates/invitations/my_invitations.html.ep:61
msgid "Files"
msgstr "Filer"
#: themes/default/templates/index.html.ep:80
msgid "Files deleted at first download"
msgstr "Filer raderade efter första nerladdning"
#: themes/default/templates/invitations/my_invitations.html.ep:28
msgid "Files sent at"
msgstr "Filer skickade"
#: themes/default/templates/partial/invitations.js.ep:8
msgid "Files sent in invitation XX1 by XX2"
msgstr "Filer skickade i inbjudan XX1 av XX2"
#: themes/default/templates/partial/render.js.ep:8
msgid "Get the file"
msgstr "Hämta filen"
#: themes/default/templates/about.html.ep:18
msgid "Get the source code on <a href=\"https://framagit.org/luc/lufi\" class=\"classic\">the official repository</a> or on its <a href=\"https://github.com/ldidry/lufi\" class=\"classic\">Github mirror</a>"
msgstr ""
"Hämta källkoden från <a href=\"https://framagit.org/luc/lufi\" class=\""
"classic\">det officiella arkivet</a> eller från <a href=\"https://github.com/"
"ldidry/lufi\" class=\"classic\">spegelsidan på Github</a>"
#: themes/default/templates/invitations/my_invitations.html.ep:24
msgid "Guest mail"
msgstr "E-postadress till gäst"
#. (ucfirst(stash('invitation')
#: themes/default/templates/invitations/notification_files_sent.mail.ep:6
msgid "Hello %1,"
msgstr "Hej %1,"
#: themes/default/templates/invitations/invite.mail.ep:4
msgid "Hello,"
msgstr "Hej,"
#: themes/default/templates/partial/mail.js.ep:35
msgid "Hello,\\n\\nHere's some files I want to share with you:\\n"
msgstr ""
"Hej,\\n"
"\\n"
"Här är några filer jag vill dela med dig:\\n"
#: themes/default/templates/mail.html.ep:35
msgid "Here's some files"
msgstr "Här är några filer"
#: themes/default/templates/partial/invitations.js.ep:7
msgid "Hide hidden invitations"
msgstr "Visa inte dolda inbjudningar"
#: themes/default/templates/partial/index.js.ep:25
msgid "Hit Enter, then Ctrl+C to copy all the download links"
msgstr ""
"Tryck Enter och sedan Crtl+C för att kopiera samtliga nerladdningslänkar"
#: themes/default/templates/partial/index.js.ep:24
msgid "Hit Enter, then Ctrl+C to copy the download link"
msgstr "Tryck Enter och sedan Crtl+C för att kopiera nerladdningslänken"
#: themes/default/templates/about.html.ep:9
msgid "How does it work?"
msgstr "Hur fungerar det?"
#: themes/default/templates/invitations/invite.html.ep:46
msgid "How many days would you like the invitation to be valid?"
msgstr "Hur många dagar vill du att inbjudningen ska gälla?"
#: themes/default/templates/about.html.ep:16
msgid "How to install the software on my server?"
msgstr "Hur kan jag installera den här mjukvaran på min server?"
#: themes/default/templates/about.html.ep:12
msgid "How to report an illegal file?"
msgstr "Kan jag anmäla en olaglig fil?"
#: themes/default/templates/delays.html.ep:7
msgid "If you choose a delay, the file will be deleted after that delay."
msgstr "Om du anger en fördröjning kommer filen raderas när den tiden gått ut."
#: themes/default/templates/mail.html.ep:15
msgid "If you send the mail from this server, the links will be sent to the server, which may lower your privacy protection."
msgstr ""
"Om du skickar meddelandet från den här servern måste länkarna skickas till "
"servern, vilket kan försämra skyddet av din identitet."
#: themes/default/templates/files.html.ep:14
msgid "Import localStorage data"
msgstr "Importera localStorage-data"
#: themes/default/templates/index.html.ep:53
msgid "Important: more information on delays"
msgstr "Viktigt: mer information om fördröjningar"
#: themes/default/templates/delays.html.ep:5
msgid "Information about delays"
msgstr "Information om fördröjningar"
#: themes/default/templates/files.html.ep:18 themes/default/templates/invitations/my_invitations.html.ep:12
msgid "Invert selection"
msgstr "Omvänt val"
#. ($i->guest_mail, $url)
#: lib/Lufi/Controller/Invitation.pm:171
msgid "Invitation resent to %1.<br> URL: %2"
msgstr "Inbjudan har skickats till %1 igen.<br> Länk: %2"
#. ($invitation->guest_mail, $url)
#: lib/Lufi/Controller/Invitation.pm:87
msgid "Invitation sent to %1.<br> URL: %2"
msgstr "Inbjudan har skickats till %1.<br> Länk: %2"
#: themes/default/templates/invitations/invite.html.ep:27 themes/default/templates/layouts/default.html.ep:36 themes/default/templates/layouts/default.html.ep:69
msgid "Invite a guest"
msgstr "Bjud in en gäst"
#: themes/default/templates/partial/render.js.ep:6
msgid "It seems that the key in your URL is incorrect. Please, verify your URL."
msgstr ""
"Det verkar som att nyckeln i adressen är ogiltig. Kontrollera gärna din länk."
#: themes/default/templates/index.html.ep:12
msgid "Javascript is disabled. You won't be able to use Lufi."
msgstr "Javascript är inte påslaget, så du kommer inte kunna använda Lufi."
#: themes/default/templates/layouts/default.html.ep:44 themes/default/templates/layouts/default.html.ep:46 themes/default/templates/layouts/default.html.ep:77 themes/default/templates/layouts/default.html.ep:79
msgid "Language"
msgstr "Språk"
#: themes/default/templates/login.html.ep:15
msgid "Login"
msgstr "Logga in"
#: themes/default/templates/layouts/default.html.ep:58 themes/default/templates/layouts/default.html.ep:91
msgid "Logout"
msgstr "Logga ut"
#: themes/default/templates/about.html.ep:4
msgid "Lufi is a free (as in free speech) file hosting software."
msgstr "Lufi är en fri (som i frihet) mjukvara för att dela filer."
#: themes/default/templates/partial/files.js.ep:12
msgid "Lufi recently changed its way to store files information.\\n\\nNo files have been found in the new localStorage location but we found files in the old one.\\nDo you want to import those informations?\\n\\nPlease note that this is the only time that we will ask you this."
msgstr ""
#: themes/default/templates/files.html.ep:34
msgid "Mail"
msgstr "E-post"
#: themes/default/templates/files.html.ep:3 themes/default/templates/layouts/default.html.ep:34 themes/default/templates/layouts/default.html.ep:67
msgid "My files"
msgstr "Mina filer"
#: themes/default/templates/invitations/my_invitations.html.ep:5 themes/default/templates/layouts/default.html.ep:37 themes/default/templates/layouts/default.html.ep:70
msgid "My invitations"
msgstr "Mina inbjudningar"
#: themes/default/templates/invitations/notification_files_sent.mail.ep:17
msgid "NB: this list includes the list of files that have already been sent to you."
msgstr ""
#: themes/default/templates/index.html.ep:115
msgid "Name of the zip file"
msgstr "ZIP-arkivets namn"
#. (format_bytes($json->{size})
#: lib/Lufi/Controller/Files.pm:108
msgid "No enough space available on the server for this file (size: %1)."
msgstr ""
"Servern har inte tillräckligt med ledigt utrymme för den här filen (storlek: "
"%1)."
#: themes/default/templates/partial/files.js.ep:10 themes/default/templates/partial/index.js.ep:28
msgid "No expiration delay"
msgstr "Ingen utgångsfördröjning"
#: themes/default/templates/files.html.ep:8
msgid "Only the files sent with this browser will be listed here. This list is stored in localStorage: if you delete your localStorage data, you'll lose this list."
msgstr ""
#: themes/default/templates/index.html.ep:106 themes/default/templates/login.html.ep:21 themes/default/templates/render.html.ep:26
msgid "Password"
msgstr "Lösenord"
#. (config('contact')
#: themes/default/templates/about.html.ep:13
msgid "Please contact the administrator: %1"
msgstr "Kontakta gärna administratören: %1"
#: themes/default/templates/render.html.ep:33
msgid "Please wait while we are getting your file. We first need to download and decrypt all parts before you can get it."
msgstr ""
#: lib/Lufi/Controller/Auth.pm:38
msgid "Please, check your credentials or your right to access this service: unable to authenticate."
msgstr ""
#: themes/default/templates/about.html.ep:5
msgid "Privacy"
msgstr "Personuppgiftsskydd"
#: themes/default/templates/files.html.ep:13
msgid "Purge expired files from localStorage"
msgstr "Ta bort gamla filer från localStorage"
#: themes/default/templates/invitations/notification_files_sent.mail.ep:20
msgid "Regards,"
msgstr "Med vänliga hälsningar,"
#: themes/default/templates/invitations/invite.mail.ep:15
msgid "Regards."
msgstr "Med vänliga hälsningar."
#: themes/default/templates/layouts/default.html.ep:31 themes/default/templates/layouts/default.html.ep:64
msgid "Report file"
msgstr "Anmäl fil"
#: themes/default/templates/invitations/my_invitations.html.ep:15
msgid "Resend invitation mail"
msgstr "Skicka inbjudning igen"
#: themes/default/templates/invitations/my_invitations.html.ep:9
msgid "Rows in purple mean that the invitations have expired."
msgstr "Lila rad betyder att inbjudningen har gått ut."
#: themes/default/templates/files.html.ep:9
msgid "Rows in red mean that the files have expired and are no longer available."
msgstr ""
"Röd rad betyder att filen har gått ut och inte finns tillgänglig längre."
#: themes/default/templates/partial/index.js.ep:26
msgid "Send all links by email"
msgstr "Skicka alla länkar via e-post"
#: themes/default/templates/invitations/invite.html.ep:50
msgid "Send the invitation"
msgstr "Skicka inbjudningen"
#: themes/default/templates/mail.html.ep:46
msgid "Send with this server"
msgstr "Skicka från den här servern"
#: themes/default/templates/mail.html.ep:47
msgid "Send with your own mail software"
msgstr "Skicka från din egen e-posttjänst"
#: themes/default/templates/partial/index.js.ep:29
msgid "Sending part XX1 of XX2. Please, be patient, the progress bar can take a while to move."
msgstr ""
"Överför del XX1 av XX2. Det kan ta en stund innan statsindikatorn börjar "
"röra sig."
#. (url_for('/')
#: themes/default/templates/partial/mail.js.ep:48
msgid "Share your files in total privacy on %1"
msgstr "Dela dina filer helt skyddat med %1"
#: themes/default/templates/invitations/my_invitations.html.ep:13 themes/default/templates/partial/invitations.js.ep:9
msgid "Show hidden invitations"
msgstr "Visa dolda inbjudningar"
#: themes/default/templates/partial/render.js.ep:11
msgid "Show zip content"
msgstr "Visa ZIP-arkivets innehåll"
#: themes/default/templates/layouts/default.html.ep:40 themes/default/templates/layouts/default.html.ep:73 themes/default/templates/login.html.ep:28 themes/default/templates/logout.html.ep:17
msgid "Signin"
msgstr "Logga in"
#: lib/Lufi/Controller/Invitation.pm:283 themes/default/templates/invitations/exception.html.ep:16
msgid "Sorry, the invitation doesnt exist. Are you sure you are on the right URL?"
msgstr ""
"Den här inbjudan existerar tyvärr inte. Är du säker på att du har kommit "
"till rätt adress?"
#: themes/default/templates/index.html.ep:46
msgid "Sorry, the uploading is currently disabled. Please try again later."
msgstr "Uppladdning är inte tillåtet för tillfället. Försök gärna igen senare."
#: lib/Lufi/Controller/Files.pm:82
msgid "Sorry, uploading is disabled."
msgstr "Det går tyvärr inte att ladda upp för tillfället."
#: themes/default/templates/invitations/exception.html.ep:7
msgid "Sorry, your invitation has expired or has been deleted."
msgstr "Din inbjudan har antingen gått ut eller raderats."
#. ($invit->ldap_user_mail)
#: lib/Lufi/Controller/Files.pm:122
msgid "Sorry, your invitation has expired or has been deleted. Please contact %1 to have another invitation."
msgstr ""
"Din inbjudan har dessvärre gått ut eller raderats. Du kan kontakta %1 för "
"att få en ny inbjudan."
#. ($invitation->ldap_user_mail)
#: lib/Lufi/Controller/Invitation.pm:276
msgid "The URLs of your files have been sent by email to %1."
msgstr "Länken till dina filer har skickats med e-post till %1."
#: themes/default/templates/about.html.ep:7
msgid "The administrator can only see the file's name, its size and its mimetype (what kind of file it is: video, text, etc.)."
msgstr ""
"Administratören kan endast se filens namn, storlek och mime-typ (om det är "
"en video, textfil eller något annat)."
#: lib/Lufi/Controller/Mail.pm:53
msgid "The body of the mail must contain at least one URL pointing to a file hosted on this instance."
msgstr ""
"E-postmeddelandet måste innehålla minst en länk till en fil som lagras på "
"den här instansen."
#: themes/default/templates/partial/files.js.ep:11
msgid "The data has been successfully imported."
msgstr "All data har importerats."
#: lib/Lufi/Controller/Mail.pm:73
msgid "The email body can't be empty."
msgstr "E-postmeddelandet får inte lämnas tomt."
#: lib/Lufi/Controller/Mail.pm:72
msgid "The email subject can't be empty."
msgstr "Ämnesraden får inte lämnas tom."
#. ($expire_at, $max_expire_at)
#: lib/Lufi/Controller/Invitation.pm:51
msgid "The expiration delay (%1) is not between 1 and %2 days."
msgstr ""
#: lib/Lufi/Controller/Files.pm:468
msgid "The file has already been deleted"
msgstr "Filen har redan raderats"
#: themes/default/templates/about.html.ep:6
msgid "The files uploaded on a Lufi instance are encrypted before the upload to the server: the administrator of the server can not see the file's content."
msgstr ""
"Filerna krypteras innan de laddas upp till Lufi-serveren. Därför kan inte "
"ens serverns administratör se filens innehåll."
#. (join(', ', @bad)
#: lib/Lufi/Controller/Mail.pm:68
msgid "The following email addresses are not valid: %1"
msgstr "Följande e-postadresser är inte giltiga: %1"
#. ($guest_mail)
#: lib/Lufi/Controller/Invitation.pm:48
msgid "The guest email address (%1) is unvalid."
msgstr ""
#. ($i->token, $i->guest_mail)
#: lib/Lufi/Controller/Invitation.pm:150
msgid "The invitation %1 cant be resent: %2 has already sent files.<br>Please create a new invitation."
msgstr ""
#. ($i->token)
#: lib/Lufi/Controller/Invitation.pm:130
msgid "The invitation %1 has been deleted."
msgstr "Inbjudan %1 har raderats."
#. (stash('user_mail')
#: themes/default/templates/invitations/invite.html.ep:34
msgid "The invitation mail will be send from your email address (%1)."
msgstr "Inbjudan kommer skickas från din e-postadress (%1)."
#: themes/default/templates/partial/index.js.ep:16
msgid "The link(s) has been copied to your clipboard"
msgstr "Länkarna har kopierats till urklipp"
#. (stash('invitation')
#: themes/default/templates/index.html.ep:30
msgid "The link(s) of your file(s) will automatically be sent by mail to %1 (%2)"
msgstr ""
"Länkarna till dina filer kommer skickas per e-post till %1 (%2) automatiskt"
#. (stash('ldap_user')
#: themes/default/templates/invitations/invite.mail.ep:11
msgid "The links of your file(s) will automatically be sent by mail to %1."
msgstr "Länkarna till dina filer kommer skickas till %1 automatiskt."
#: lib/Lufi/Controller/Mail.pm:97
msgid "The mail has been sent."
msgstr "E-postmeddelandet har skickats."
#: themes/default/templates/about.html.ep:15
msgid "The original (and only for now) author is <a href=\"https://fiat-tux.fr\" class=\"classic\">Luc Didry</a>."
msgstr ""
#: lib/Lufi/Controller/Files.pm:236
msgid "The server was unable to find the file record to add your file part to. Please, contact the administrator."
msgstr ""
#: lib/Lufi/Controller/Files.pm:295
msgid "This file has been deactivated by the admins. Contact them to know why."
msgstr ""
"Den här filen har avaktiverats av administratörerna. Kontakta dem för att få "
"veta anledningen."
#: themes/default/templates/invitations/my_invitations.html.ep:46 themes/default/templates/partial/invitations.js.ep:6
msgid "This invitation is normally hidden"
msgstr ""
#. (stash('expires')
#: themes/default/templates/invitations/invite.mail.ep:13
msgid "This invitation is valid until %1."
msgstr "Den här inbjudan är giltig tills %1."
#: themes/default/templates/delays.html.ep:10
msgid "This server sets limitations according to the file size. The expiration delay of your file will be the minimum between what you choose and the following limitations:"
msgstr ""
#: themes/default/templates/invitations/my_invitations.html.ep:16
msgid "Toggle visibility"
msgstr ""
#: themes/default/templates/invitations/my_invitations.html.ep:25
msgid "URL"
msgstr "Länk"
#: themes/default/templates/partial/index.js.ep:17
msgid "Unable to copy the link(s) to your clipboard"
msgstr "Kunde inte kopiera länkarna till urklipp"
#. ($short)
#: lib/Lufi/Controller/Files.pm:439
msgid "Unable to get counter for %1. The file does not exists. It will be removed from your localStorage."
msgstr ""
"Kunde inte hämta räknaren för %1 eftersom filen inte existerar. Den kommer "
"tas bort från ditt localStorage."
#. ($short)
#: lib/Lufi/Controller/Files.pm:429
msgid "Unable to get counter for %1. The token is invalid."
msgstr "Kunde inte ladda in räknaren för %1. Ogiltig token."
#. ($short)
#: lib/Lufi/Controller/Files.pm:449
msgid "Unable to get counter for %1. You are not authenticated."
msgstr "Kunde inte ladda in räknaren för %1. Du är inte behörig."
#: themes/default/templates/layouts/default.html.ep:33 themes/default/templates/layouts/default.html.ep:66
msgid "Upload files"
msgstr "Ladda upp filer"
#: themes/default/templates/index.html.ep:145
msgid "Upload generated zip file"
msgstr "Ladda upp det genererade ZIP-arkivet"
#: themes/default/templates/files.html.ep:31
msgid "Uploaded at"
msgstr "Uppladdad"
#: themes/default/templates/index.html.ep:153
msgid "Uploaded files"
msgstr "Uppladdade filer"
#: themes/default/templates/partial/index.js.ep:30
msgid "Websocket communication error"
msgstr "Kommunikationsfel (websocket)"
#: themes/default/templates/about.html.ep:3
msgid "What is Lufi?"
msgstr "Vad är Lufi?"
#: themes/default/templates/about.html.ep:14
msgid "Who wrote this software?"
msgstr "Vem skrev den här mjukvaran?"
#: themes/default/templates/partial/index.js.ep:13
msgid "XXX file has been added to upload queue."
msgstr "Filen XXX har lagts till i uppladdningskön."
#: themes/default/templates/invitations/invite.html.ep:30
msgid "You can invite someone to send you files through this Lufi instance even if they dont have an account on it."
msgstr ""
#: themes/default/templates/about.html.ep:11
msgid "You can see the list of your files by clicking on the \"My files\" link at the top right of this page."
msgstr ""
"Du kan se en lista över dina filer genom att klicka på länken ”Mina filer” "
"längst upp till höger på den här sidan."
#: lib/Lufi/Controller/Mail.pm:42
msgid "You can't add URLs that are not related to this instance."
msgstr "Du kan inte lägga in länkar som inte går till den här instansen."
#: themes/default/templates/about.html.ep:8
msgid "You don't need to register yourself to upload files but be aware that, for legal reasons, your IP address will be stored when you send a file. Don't panic, this is normally the case for all sites on which you send files."
msgstr ""
#: themes/default/templates/partial/render.js.ep:10
msgid "You don't seem to have a key in your URL. You won't be able to decrypt the file. Download canceled."
msgstr ""
#: themes/default/templates/partial/render.js.ep:7
msgid "You have attempted to leave this page. The download will be canceled. Are you sure?"
msgstr ""
#: themes/default/templates/partial/index.js.ep:14
msgid "You have attempted to leave this page. The upload will be canceled. Are you sure?"
msgstr ""
#: themes/default/templates/logout.html.ep:14
msgid "You have been successfully logged out."
msgstr "Du har loggats ut."
#: lib/Lufi/Controller/Mail.pm:71
msgid "You must give email addresses."
msgstr "Du måste uppge en e-postadress."
#: themes/default/templates/index.html.ep:38
msgid "Your browser does not have enough entropy to generate a strong encryption key. Please wait (it's better if you do things on your computer while waiting)."
msgstr ""
#. (format_bytes($json->{size})
#: lib/Lufi/Controller/Files.pm:95
msgid "Your file is too big: %1 (maximum size allowed: %2)"
msgstr ""
#: lib/Lufi/Controller/Files.pm:351
msgid "Your password is not valid. Please refresh the page to retry."
msgstr ""
#: themes/default/templates/partial/render.js.ep:12
msgid "Zip content:"
msgstr ""
#. (format_bytes($keys[$i])
#: themes/default/templates/delays.html.ep:20
msgid "between %1 and %2, the file will be kept %3 day(s)."
msgstr ""
#. (format_bytes($keys[$i])
#: themes/default/templates/delays.html.ep:22
msgid "between %1 and %2, the file will be kept forever."
msgstr ""
#: themes/default/templates/partial/mail.js.ep:42
msgid "deadline: "
msgstr ""
#: themes/default/templates/partial/invitations.js.ep:5
msgid "expires on XXX"
msgstr "Går ut den XXX"
#. (format_bytes($keys[$i])
#: themes/default/templates/delays.html.ep:26
msgid "for %1 and more, the file will be kept %2 day(s)"
msgstr ""
#. (format_bytes($keys[$i])
#: themes/default/templates/delays.html.ep:28
msgid "for %1 and more, the file will be kept forever."
msgstr ""
#: themes/default/templates/index.html.ep:3
msgid "no time limit"
msgstr "ingen tidsbegränsning"
#: themes/default/templates/index.html.ep:124
msgid "or"
msgstr "eller"
#. ($e->{name}, format_bytes($e->{size})
#: themes/default/templates/invitations/notification_files_sent.mail.ep:12
msgid "— %1 (%2), that will expire on %3"
msgstr "— %1 (%2), som går ut den %3"
#: themes/default/templates/about.html.ep:18
msgid "Get the source code on <a href=\"https://framagit.org/fiat-tux/hat-softwares/lufi\" class=\"classic\">the official repository</a> or on its <a href=\"https://github.com/ldidry/lufi\" class=\"classic\">Github mirror</a>"
msgstr ""
"Hämta källkoden från <a href=\"https://framagit.org/fiat-tux/hat-softwares/"
"lufi\" class=\"classic\">det officiella arkivet</a> eller från <a href=\""
"https://github.com/ldidry/lufi\" class=\"classic\">spegelsidan på Github</a>"
#: themes/default/templates/about.html.ep:17
msgid "As Lufi is a free software licensed under of the terms of the <a href=\"https://gnu.org/licenses/agpl.html\" class=\"classic\">AGPLv3</a>, you can install it on you own server. Have a look on the <a href=\"https://framagit.org/fiat-tux/hat-softwares/lufi/wikis/home\" class=\"classic\">Wiki</a> for the procedure."
msgstr ""
"Du kan installera Lufi på din egen server eftersom det är en fri mjukvara "
"publicerad under licensen <a href=\"https://gnu.org/licenses/agpl.html\" "
"class=\"classic\">AGPLv3</a>. Ta en titt på <a href=\"https://framagit.org/"
"fiat-tux/hat-softwares/lufi/wikis/home\" class=\"classic\">wikin</a> för att "
"se hur."

View File

@ -1,3 +1,6 @@
body {
background-color: #ffffff;
}
#files {
border: 2px dashed #BBB;
border-radius: 5px;

View File

@ -95,6 +95,7 @@ function spawnWebsocket(pa) {
if (data.part + 1 === data.total) {
var blob = new Blob(a, {type: data.type});
notify(i18n.fileDownloaded, data.name);
$('#please-wait').remove();
$('#loading').remove();

View File

@ -0,0 +1,26 @@
function notify(title, body) {
if (!Notification) {
console.log("This browser does not support desktop notification, cannot send following message: "+title+" "+body);
return;
}
if (Notification.permission !== "granted") {
Notification.requestPermission();
} else {
let options = {
body: body,
icon: '/img/lufi196.png'
};
let n = new Notification(title, options);
}
}
document.addEventListener('DOMContentLoaded', function () {
if (!Notification) {
return;
}
if (Notification.permission !== "granted") {
Notification.requestPermission();
}
});

View File

@ -477,6 +477,8 @@ function updateProgressBar(data) {
console.log('Error on WebSocket connection but file has been fully send, so we don\'t care.');
}
notify(i18n.fileUploaded, data.name);
$('#parts-'+window.fc).remove();
var n = $('#name-'+window.fc);
var s = $('#size-'+window.fc);

View File

@ -14,8 +14,11 @@
<h3><%= l('Who wrote this software?') %></h3>
<p><%== l('The original (and only for now) author is <a href="https://fiat-tux.fr" class="classic">Luc Didry</a>.') %></p>
<h3><%= l('How to install the software on my server?') %></h3>
<p><%== l('As Lufi is a free software licensed under of the terms of the <a href="https://gnu.org/licenses/agpl.html" class="classic">AGPLv3</a>, you can install it on you own server. Have a look on the <a href="https://framagit.org/luc/lufi/wikis/home" class="classic">Wiki</a> for the procedure.') %><br>
<%== l('Get the source code on <a href="https://framagit.org/luc/lufi" class="classic">the official repository</a> or on its <a href="https://github.com/ldidry/lufi" class="classic">Github mirror</a>') %>
<p><%== l('As Lufi is a free software licensed under of the terms of the <a href="https://gnu.org/licenses/agpl.html" class="classic">AGPLv3</a>, you can install it on you own server. Have a look on the <a href="https://framagit.org/fiat-tux/hat-softwares/lufi/wikis/home" class="classic">Wiki</a> for the procedure.') %><br>
<%== l('Get the source code on <a href="https://framagit.org/fiat-tux/hat-softwares/lufi" class="classic">the official repository</a> or on its <a href="https://github.com/ldidry/lufi" class="classic">Github mirror</a>') %>
</p>
<h3><%= l('Version') %></h3>
<p><%== l('Latest tag of this instance: %1', sprintf('<a href="https://framagit.org/fiat-tux/hat-softwares/lufi/-/releases/%s" class="classic">%s</a>', stash('version')->{tag}, stash('version')->{tag})) %></p>
<p><%== l('Latest commit of this instance: %1', sprintf('<a href="https://framagit.org/fiat-tux/hat-softwares/lufi/-/commit/%s" class="classic">%s</a>', stash('version')->{commit}, stash('version')->{commit})) %></p>
<p><%= link_to url_for('/') => ( class => "btn waves-effect waves-light cyan" ) => begin %><%= l('Back to homepage') %><% end%></p>
</div>

View File

@ -165,5 +165,6 @@
%= javascript '/js/moment-with-locales.min.js'
%= javascript '/js/filesize.min.js'
%= javascript '/js/jszip.min.js'
%= javascript '/js/lufi-notifications.js'
%= javascript '/js/lufi-up.js'
% }

View File

@ -10,24 +10,25 @@ var baseURL = '<%= url_for('/')->to_abs() %>';
% }
var actionURL = '<%= url_for('/')->to_abs() %>';
var i18n = {
enqueued: '<%= l('XXX file has been added to upload queue.') %>',
confirmExit: '<%= l('You have attempted to leave this page. The upload will be canceled. Are you sure?') %>',
copyAll: '<%= l('Copy all links to clipboard') %>',
copySuccess: '<%= l('The link(s) has been copied to your clipboard') %>',
copyFail: '<%= l('Unable to copy the link(s) to your clipboard') %>',
cpText: '<%= l('Copy to clipboard') %>',
delText: '<%= l('Deletion link') %>',
dlText: '<%= l('Download link') %>',
download: '<%= l('Download') %>',
encrypting: '<%= l('Encrypting part XX1 of XX2') %>',
expiration: '<%= l('Expiration:') %>',
hit: '<%= l('Hit Enter, then Ctrl+C to copy the download link') %>',
hits: '<%= l('Hit Enter, then Ctrl+C to copy all the download links') %>',
mailTo: '<%= l('Send all links by email') %>',
maxSize: '<%= l('(max size: XXX)') %>',
noLimit: '<%= l('No expiration delay') %>',
sending: '<%= l('Sending part XX1 of XX2. Please, be patient, the progress bar can take a while to move.') %>',
wsProblem: '<%= l('Websocket communication error') %>',
enqueued: '<%= l('XXX file has been added to upload queue.') %>',
confirmExit: '<%= l('You have attempted to leave this page. The upload will be canceled. Are you sure?') %>',
copyAll: '<%= l('Copy all links to clipboard') %>',
copySuccess: '<%= l('The link(s) has been copied to your clipboard') %>',
copyFail: '<%= l('Unable to copy the link(s) to your clipboard') %>',
cpText: '<%= l('Copy to clipboard') %>',
delText: '<%= l('Deletion link') %>',
dlText: '<%= l('Download link') %>',
download: '<%= l('Download') %>',
encrypting: '<%= l('Encrypting part XX1 of XX2') %>',
expiration: '<%= l('Expiration:') %>',
fileUploaded: '<%= l('File uploaded') %>',
hit: '<%= l('Hit Enter, then Ctrl+C to copy the download link') %>',
hits: '<%= l('Hit Enter, then Ctrl+C to copy all the download links') %>',
mailTo: '<%= l('Send all links by email') %>',
maxSize: '<%= l('(max size: XXX)') %>',
noLimit: '<%= l('No expiration delay') %>',
sending: '<%= l('Sending part XX1 of XX2. Please, be patient, the progress bar can take a while to move.') %>',
wsProblem: '<%= l('Websocket communication error') %>',
};
var maxSize = <%= config('max_file_size') || 0 %>;

View File

@ -6,6 +6,7 @@ var i18n = {
badkey: '<%= l('It seems that the key in your URL is incorrect. Please, verify your URL.') %>',
confirmExit: '<%= l('You have attempted to leave this page. The download will be canceled. Are you sure?') %>',
download: '<%= l('Get the file') %>',
fileDownloaded: '<%= l('File downloaded') %>',
loading: '<%= l('Asking for file part XX1 of %1', stash('nbslices')) %>',
nokey: '<%= l('You don\'t seem to have a key in your URL. You won\'t be able to decrypt the file. Download canceled.') %>',
showZipContent: '<%= l('Show zip content') %>',

View File

@ -45,6 +45,7 @@
%= javascript '/js/filesize.min.js'
%= javascript '/js/sjcl.js'
%= javascript '/js/jszip.min.js'
%= javascript '/js/lufi-notifications.js'
%= javascript '/js/lufi-down.js'
% }
% }

View File

@ -51,3 +51,7 @@ DROP TABLE invitations;
ALTER TABLE files MODIFY filesize bigint;
-- 4 down
ALTER TABLE files MODIFY filesize integer;
-- 5 up
ALTER TABLE slices MODIFY path varchar(255);
-- 5 down
ALTER TABLE slices MODIFY path varchar(255) unique NOT NULL;

View File

@ -54,3 +54,9 @@ DROP TABLE invitations;
ALTER TABLE files ALTER COLUMN filesize TYPE bigint;
-- 5 down
ALTER TABLE files ALTER COLUMN filesize TYPE integer;
-- 6 up
ALTER TABLE slices ALTER COLUMN path DROP NOT NULL;
ALTER TABLE slices DROP CONSTRAINT slices_path_key;
-- 6 down
ALTER TABLE slices ADD CONSTRAINT slices_path_key UNIQUE (path) ;
ALTER TABLE slices ALTER COLUMN path SET NOT NULL;

View File

@ -1,8 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<config xmlns="http://zanata.org/namespace/config/">
<url>https://trad.framasoft.org/</url>
<project>lufi</project>
<project-type>gettext</project-type>
<src-dir>themes/default/lib/Lufi/I18N/</src-dir>
<trans-dir>themes/default/lib/Lufi/I18N/</trans-dir>
</config>