aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/Wallabag/CoreBundle
diff options
context:
space:
mode:
Diffstat (limited to 'src/Wallabag/CoreBundle')
-rw-r--r--src/Wallabag/CoreBundle/Command/InstallCommand.php23
-rw-r--r--src/Wallabag/CoreBundle/Controller/EntryController.php4
-rw-r--r--src/Wallabag/CoreBundle/Entity/Entry.php2
-rw-r--r--src/Wallabag/CoreBundle/Helper/ContentProxy.php34
-rw-r--r--src/Wallabag/CoreBundle/Helper/EntriesExport.php34
-rw-r--r--src/Wallabag/CoreBundle/Resources/translations/messages.de.yml450
-rw-r--r--src/Wallabag/CoreBundle/Resources/translations/messages.pl.yml438
-rw-r--r--src/Wallabag/CoreBundle/Resources/views/themes/baggy/layout.html.twig2
-rw-r--r--src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/entry.html.twig2
-rw-r--r--src/Wallabag/CoreBundle/Tests/Helper/ContentProxyTest.php85
10 files changed, 582 insertions, 492 deletions
diff --git a/src/Wallabag/CoreBundle/Command/InstallCommand.php b/src/Wallabag/CoreBundle/Command/InstallCommand.php
index c9dad0df..2d73a9ad 100644
--- a/src/Wallabag/CoreBundle/Command/InstallCommand.php
+++ b/src/Wallabag/CoreBundle/Command/InstallCommand.php
@@ -83,7 +83,8 @@ class InstallCommand extends ContainerAwareCommand
83 $help = 'Needs one of sqlite, mysql or pgsql PDO drivers'; 83 $help = 'Needs one of sqlite, mysql or pgsql PDO drivers';
84 } 84 }
85 85
86 $rows[] = array($label, $status, $help); 86 $rows = [];
87 $rows[] = [$label, $status, $help];
87 88
88 foreach ($this->functionExists as $functionRequired) { 89 foreach ($this->functionExists as $functionRequired) {
89 $label = '<comment>'.$functionRequired.'</comment>'; 90 $label = '<comment>'.$functionRequired.'</comment>';
@@ -97,12 +98,12 @@ class InstallCommand extends ContainerAwareCommand
97 $help = 'You need the '.$functionRequired.' function activated'; 98 $help = 'You need the '.$functionRequired.' function activated';
98 } 99 }
99 100
100 $rows[] = array($label, $status, $help); 101 $rows[] = [$label, $status, $help];
101 } 102 }
102 103
103 $table = new Table($this->defaultOutput); 104 $table = new Table($this->defaultOutput);
104 $table 105 $table
105 ->setHeaders(array('Checked', 'Status', 'Recommendation')) 106 ->setHeaders(['Checked', 'Status', 'Recommendation'])
106 ->setRows($rows) 107 ->setRows($rows)
107 ->render(); 108 ->render();
108 109
@@ -126,7 +127,7 @@ class InstallCommand extends ContainerAwareCommand
126 $this->defaultOutput->writeln('Droping database, creating database and schema, clearing the cache'); 127 $this->defaultOutput->writeln('Droping database, creating database and schema, clearing the cache');
127 128
128 $this 129 $this
129 ->runCommand('doctrine:database:drop', array('--force' => true)) 130 ->runCommand('doctrine:database:drop', ['--force' => true])
130 ->runCommand('doctrine:database:create') 131 ->runCommand('doctrine:database:create')
131 ->runCommand('doctrine:schema:create') 132 ->runCommand('doctrine:schema:create')
132 ->runCommand('cache:clear') 133 ->runCommand('cache:clear')
@@ -158,7 +159,7 @@ class InstallCommand extends ContainerAwareCommand
158 $this->defaultOutput->writeln('Droping database, creating database and schema'); 159 $this->defaultOutput->writeln('Droping database, creating database and schema');
159 160
160 $this 161 $this
161 ->runCommand('doctrine:database:drop', array('--force' => true)) 162 ->runCommand('doctrine:database:drop', ['--force' => true])
162 ->runCommand('doctrine:database:create') 163 ->runCommand('doctrine:database:create')
163 ->runCommand('doctrine:schema:create') 164 ->runCommand('doctrine:schema:create')
164 ; 165 ;
@@ -168,7 +169,7 @@ class InstallCommand extends ContainerAwareCommand
168 $this->defaultOutput->writeln('Droping schema and creating schema'); 169 $this->defaultOutput->writeln('Droping schema and creating schema');
169 170
170 $this 171 $this
171 ->runCommand('doctrine:schema:drop', array('--force' => true)) 172 ->runCommand('doctrine:schema:drop', ['--force' => true])
172 ->runCommand('doctrine:schema:create') 173 ->runCommand('doctrine:schema:create')
173 ; 174 ;
174 } 175 }
@@ -388,19 +389,19 @@ class InstallCommand extends ContainerAwareCommand
388 * @param string $command 389 * @param string $command
389 * @param array $parameters Parameters to this command (usually 'force' => true) 390 * @param array $parameters Parameters to this command (usually 'force' => true)
390 */ 391 */
391 protected function runCommand($command, $parameters = array()) 392 protected function runCommand($command, $parameters = [])
392 { 393 {
393 $parameters = array_merge( 394 $parameters = array_merge(
394 array('command' => $command), 395 ['command' => $command],
395 $parameters, 396 $parameters,
396 array( 397 [
397 '--no-debug' => true, 398 '--no-debug' => true,
398 '--env' => $this->defaultInput->getOption('env') ?: 'dev', 399 '--env' => $this->defaultInput->getOption('env') ?: 'dev',
399 ) 400 ]
400 ); 401 );
401 402
402 if ($this->defaultInput->getOption('no-interaction')) { 403 if ($this->defaultInput->getOption('no-interaction')) {
403 $parameters = array_merge($parameters, array('--no-interaction' => true)); 404 $parameters = array_merge($parameters, ['--no-interaction' => true]);
404 } 405 }
405 406
406 $this->getApplication()->setAutoExit(false); 407 $this->getApplication()->setAutoExit(false);
diff --git a/src/Wallabag/CoreBundle/Controller/EntryController.php b/src/Wallabag/CoreBundle/Controller/EntryController.php
index 1a0b80ac..fa633031 100644
--- a/src/Wallabag/CoreBundle/Controller/EntryController.php
+++ b/src/Wallabag/CoreBundle/Controller/EntryController.php
@@ -92,13 +92,11 @@ class EntryController extends Controller
92 } 92 }
93 93
94 /** 94 /**
95 * @param Request $request
96 *
97 * @Route("/new", name="new") 95 * @Route("/new", name="new")
98 * 96 *
99 * @return \Symfony\Component\HttpFoundation\Response 97 * @return \Symfony\Component\HttpFoundation\Response
100 */ 98 */
101 public function addEntryAction(Request $request) 99 public function addEntryAction()
102 { 100 {
103 return $this->render('WallabagCoreBundle:Entry:new.html.twig'); 101 return $this->render('WallabagCoreBundle:Entry:new.html.twig');
104 } 102 }
diff --git a/src/Wallabag/CoreBundle/Entity/Entry.php b/src/Wallabag/CoreBundle/Entity/Entry.php
index 8f4ddf61..1271f1f5 100644
--- a/src/Wallabag/CoreBundle/Entity/Entry.php
+++ b/src/Wallabag/CoreBundle/Entity/Entry.php
@@ -187,7 +187,7 @@ class Entry
187 /* 187 /*
188 * @param User $user 188 * @param User $user
189 */ 189 */
190 public function __construct(\Wallabag\UserBundle\Entity\User $user) 190 public function __construct(User $user)
191 { 191 {
192 $this->user = $user; 192 $this->user = $user;
193 $this->tags = new ArrayCollection(); 193 $this->tags = new ArrayCollection();
diff --git a/src/Wallabag/CoreBundle/Helper/ContentProxy.php b/src/Wallabag/CoreBundle/Helper/ContentProxy.php
index ba90b731..ed4a220d 100644
--- a/src/Wallabag/CoreBundle/Helper/ContentProxy.php
+++ b/src/Wallabag/CoreBundle/Helper/ContentProxy.php
@@ -32,14 +32,21 @@ class ContentProxy
32 * Fetch content using graby and hydrate given entry with results information. 32 * Fetch content using graby and hydrate given entry with results information.
33 * In case we couldn't find content, we'll try to use Open Graph data. 33 * In case we couldn't find content, we'll try to use Open Graph data.
34 * 34 *
35 * @param Entry $entry Entry to update 35 * We can also force the content, in case of an import from the v1 for example, so the function won't
36 * @param string $url Url to grab content for 36 * fetch the content from the website but rather use information given with the $content parameter.
37 *
38 * @param Entry $entry Entry to update
39 * @param string $url Url to grab content for
40 * @param array $content An array with AT LEAST keys title, html, url, language & content_type to skip the fetchContent from the url
37 * 41 *
38 * @return Entry 42 * @return Entry
39 */ 43 */
40 public function updateEntry(Entry $entry, $url) 44 public function updateEntry(Entry $entry, $url, array $content = [])
41 { 45 {
42 $content = $this->graby->fetchContent($url); 46 // do we have to fetch the content or the provided one is ok?
47 if (empty($content) || false === $this->validateContent($content)) {
48 $content = $this->graby->fetchContent($url);
49 }
43 50
44 $title = $content['title']; 51 $title = $content['title'];
45 if (!$title && isset($content['open_graph']['og_title'])) { 52 if (!$title && isset($content['open_graph']['og_title'])) {
@@ -62,7 +69,11 @@ class ContentProxy
62 $entry->setLanguage($content['language']); 69 $entry->setLanguage($content['language']);
63 $entry->setMimetype($content['content_type']); 70 $entry->setMimetype($content['content_type']);
64 $entry->setReadingTime(Utils::getReadingTime($html)); 71 $entry->setReadingTime(Utils::getReadingTime($html));
65 $entry->setDomainName(parse_url($entry->getUrl(), PHP_URL_HOST)); 72
73 $domainName = parse_url($entry->getUrl(), PHP_URL_HOST);
74 if (false !== $domainName) {
75 $entry->setDomainName($domainName);
76 }
66 77
67 if (isset($content['open_graph']['og_image'])) { 78 if (isset($content['open_graph']['og_image'])) {
68 $entry->setPreviewPicture($content['open_graph']['og_image']); 79 $entry->setPreviewPicture($content['open_graph']['og_image']);
@@ -113,4 +124,17 @@ class ContentProxy
113 } 124 }
114 } 125 }
115 } 126 }
127
128 /**
129 * Validate that the given content as enough value to be used
130 * instead of fetch the content from the url.
131 *
132 * @param array $content
133 *
134 * @return bool true if valid otherwise false
135 */
136 private function validateContent(array $content)
137 {
138 return isset($content['title']) && isset($content['html']) && isset($content['url']) && isset($content['language']) && isset($content['content_type']);
139 }
116} 140}
diff --git a/src/Wallabag/CoreBundle/Helper/EntriesExport.php b/src/Wallabag/CoreBundle/Helper/EntriesExport.php
index 6ecdf019..82004a6d 100644
--- a/src/Wallabag/CoreBundle/Helper/EntriesExport.php
+++ b/src/Wallabag/CoreBundle/Helper/EntriesExport.php
@@ -81,27 +81,9 @@ class EntriesExport
81 */ 81 */
82 public function exportAs($format) 82 public function exportAs($format)
83 { 83 {
84 switch ($format) { 84 $functionName = 'produce'.ucfirst($format);
85 case 'epub': 85 if (method_exists($this, $functionName)) {
86 return $this->produceEpub(); 86 return $this->$functionName();
87
88 case 'mobi':
89 return $this->produceMobi();
90
91 case 'pdf':
92 return $this->producePDF();
93
94 case 'csv':
95 return $this->produceCSV();
96
97 case 'json':
98 return $this->produceJSON();
99
100 case 'xml':
101 return $this->produceXML();
102
103 case 'txt':
104 return $this->produceTXT();
105 } 87 }
106 88
107 throw new \InvalidArgumentException(sprintf('The format "%s" is not yet supported.', $format)); 89 throw new \InvalidArgumentException(sprintf('The format "%s" is not yet supported.', $format));
@@ -242,7 +224,7 @@ class EntriesExport
242 /** 224 /**
243 * Use TCPDF to dump a .pdf file. 225 * Use TCPDF to dump a .pdf file.
244 */ 226 */
245 private function producePDF() 227 private function producePdf()
246 { 228 {
247 $pdf = new \TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false); 229 $pdf = new \TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
248 230
@@ -296,7 +278,7 @@ class EntriesExport
296 /** 278 /**
297 * Inspired from CsvFileDumper. 279 * Inspired from CsvFileDumper.
298 */ 280 */
299 private function produceCSV() 281 private function produceCsv()
300 { 282 {
301 $delimiter = ';'; 283 $delimiter = ';';
302 $enclosure = '"'; 284 $enclosure = '"';
@@ -336,7 +318,7 @@ class EntriesExport
336 ); 318 );
337 } 319 }
338 320
339 private function produceJSON() 321 private function produceJson()
340 { 322 {
341 return Response::create( 323 return Response::create(
342 $this->prepareSerializingContent('json'), 324 $this->prepareSerializingContent('json'),
@@ -349,7 +331,7 @@ class EntriesExport
349 ); 331 );
350 } 332 }
351 333
352 private function produceXML() 334 private function produceXml()
353 { 335 {
354 return Response::create( 336 return Response::create(
355 $this->prepareSerializingContent('xml'), 337 $this->prepareSerializingContent('xml'),
@@ -362,7 +344,7 @@ class EntriesExport
362 ); 344 );
363 } 345 }
364 346
365 private function produceTXT() 347 private function produceTxt()
366 { 348 {
367 $content = ''; 349 $content = '';
368 $bar = str_repeat('=', 100); 350 $bar = str_repeat('=', 100);
diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.de.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.de.yml
index 34f567b1..ff6255b7 100644
--- a/src/Wallabag/CoreBundle/Resources/translations/messages.de.yml
+++ b/src/Wallabag/CoreBundle/Resources/translations/messages.de.yml
@@ -1,59 +1,59 @@
1security: 1security:
2 login: 2 login:
3 # page_title: 'Welcome to wallabag!' 3 page_title: 'Willkommen bei wallabag!'
4 keep_logged_in: 'Angemeldet bleiben' 4 keep_logged_in: 'Angemeldet bleiben'
5 forgot_password: 'Kennwort vergessen?' 5 forgot_password: 'Kennwort vergessen?'
6 submit: 'Anmelden' 6 submit: 'Anmelden'
7 # register: 'Register' 7 register: 'Registrieren'
8 username: 'Benutzername' 8 username: 'Benutzername'
9 password: 'Kennwort' 9 password: 'Kennwort'
10 # cancel: 'Cancel' 10 cancel: 'Abbrechen'
11 resetting: 11 resetting:
12 description: "Gib unten deine E-Mail-Adresse ein und wir senden dir eine Anleitung für das Zurücksetzen deines Kennworts." 12 description: "Gib unten deine E-Mail-Adresse ein und wir senden dir eine Anleitung für das Zurücksetzen deines Kennworts."
13 register: 13 register:
14 # page_title: 'Create an account' 14 page_title: 'Account erstellen'
15 # go_to_account: 'Go to your account' 15 go_to_account: 'Gehe zu deinem Account'
16 16
17menu: 17menu:
18 left: 18 left:
19 unread: 'Ungelesen' 19 unread: 'Ungelesen'
20 starred: 'Favoriten' 20 starred: 'Favoriten'
21 archive: 'Archiv' 21 archive: 'Archiv'
22 all_articles: 'Alle artikel' 22 all_articles: 'Alle Artikel'
23 config: 'Konfiguration' 23 config: 'Konfiguration'
24 tags: 'Tags' 24 tags: 'Tags'
25 # internal_settings: 'Internal Settings' 25 internal_settings: 'Interne Einstellungen'
26 # import: 'Import' 26 import: 'Importieren'
27 howto: 'How-to' 27 howto: 'How-To'
28 # developer: 'Developer' 28 developer: 'Entwickler'
29 logout: 'Abmelden' 29 logout: 'Abmelden'
30 about: 'Über' 30 about: 'Über'
31 search: 'Suche' 31 search: 'Suche'
32 # save_link: 'Save a link' 32 save_link: 'Link speichern'
33 back_to_unread: 'Zurück zu ungelesenen Artikeln' 33 back_to_unread: 'Zurück zu ungelesenen Artikeln'
34 top: 34 top:
35 add_new_entry: 'Neuen Artikel hinzufügen' 35 add_new_entry: 'Neuen Artikel hinzufügen'
36 search: 'Suche' 36 search: 'Suche'
37 filter_entries: 'Artikel filtern' 37 filter_entries: 'Artikel filtern'
38 # export: 'Export' 38 export: 'Exportieren'
39 search_form: 39 search_form:
40 input_label: 'Suchbegriff hier eingeben' 40 input_label: 'Suchbegriff hier eingeben'
41 41
42footer: 42footer:
43 wallabag: 43 wallabag:
44 # elsewhere: 'Take wallabag with you' 44 elsewhere: 'Nimm wallabag mit dir mit'
45 # social: 'Social' 45 social: 'Soziales'
46 # powered_by: 'powered by' 46 powered_by: 'angetrieben von'
47 about: 'Über' 47 about: 'Über'
48 48
49config: 49config:
50 page_title: 'Config' 50 page_title: 'Einstellungen'
51 tab_menu: 51 tab_menu:
52 settings: 'Einstellungen' 52 settings: 'Einstellungen'
53 rss: 'RSS' 53 rss: 'RSS'
54 user_info: 'Benutzer-Information' 54 user_info: 'Benutzer-Information'
55 password: 'Kennwort' 55 password: 'Kennwort'
56 # rules: 'Tagging rules' 56 rules: 'Tagging-Regeln'
57 new_user: 'Benutzer hinzufügen' 57 new_user: 'Benutzer hinzufügen'
58 form: 58 form:
59 save: 'Speichern' 59 save: 'Speichern'
@@ -62,12 +62,12 @@ config:
62 items_per_page_label: 'Einträge pro Seite' 62 items_per_page_label: 'Einträge pro Seite'
63 language_label: 'Sprache' 63 language_label: 'Sprache'
64 reading_speed: 64 reading_speed:
65 # label: 'Reading speed' 65 label: 'Lesegeschwindigkeit'
66 # help_message: 'You can use online tools to estimate your reading speed:' 66 help_message: 'Du kannst Online-Tools nutzen, um deine Lesegeschwindigkeit herauszufinden.'
67 # 100_word: 'I read ~100 words per minute' 67 100_word: 'Ich lese ~100 rter pro Minute'
68 # 200_word: 'I read ~200 words per minute' 68 200_word: 'Ich lese ~200 rter pro Minute'
69 # 300_word: 'I read ~300 words per minute' 69 300_word: 'Ich lese ~300 rter pro Minute'
70 # 400_word: 'I read ~400 words per minute' 70 400_word: 'Ich lese ~400 rter pro Minute'
71 form_rss: 71 form_rss:
72 description: 'Die RSS-Feeds von wallabag erlauben es dir, deine gespeicherten Artikel mit deinem bevorzugten RSS-Reader zu lesen. Vorher musst du jedoch einen Token erstellen.' 72 description: 'Die RSS-Feeds von wallabag erlauben es dir, deine gespeicherten Artikel mit deinem bevorzugten RSS-Reader zu lesen. Vorher musst du jedoch einen Token erstellen.'
73 token_label: 'RSS-token' 73 token_label: 'RSS-token'
@@ -79,53 +79,53 @@ config:
79 unread: 'ungelesen' 79 unread: 'ungelesen'
80 starred: 'favoriten' 80 starred: 'favoriten'
81 archive: 'archiv' 81 archive: 'archiv'
82 # rss_limit: 'Number of items in the feed' 82 rss_limit: 'Anzahl der Einträge im Feed'
83 form_user: 83 form_user:
84 # two_factor_description: "Enabling two factor authentication means you'll receive an email with a code on every new untrusted connexion" 84 two_factor_description: "Wenn du die Zwei-Faktor-Authentifizierung aktivierst, erhältst du eine E-Mail mit einem Code bei jeder nicht vertraulichen Verbindung"
85 name_label: 'Name' 85 name_label: 'Name'
86 email_label: 'E-Mail-Adresse' 86 email_label: 'E-Mail-Adresse'
87 # twoFactorAuthentication_label: 'Two factor authentication' 87 twoFactorAuthentication_label: 'Zwei-Faktor-Authentifizierung'
88 form_password: 88 form_password:
89 old_password_label: 'Altes Kennwort' 89 old_password_label: 'Altes Kennwort'
90 new_password_label: 'Neues Kennwort' 90 new_password_label: 'Neues Kennwort'
91 repeat_new_password_label: 'Neues Kennwort wiederholen' 91 repeat_new_password_label: 'Neues Kennwort wiederholen'
92 form_rules: 92 form_rules:
93 # if_label: 'if' 93 if_label: 'Wenn'
94 # then_tag_as_label: 'then tag as' 94 then_tag_as_label: 'dann tagge als'
95 # delete_rule_label: 'delete' 95 delete_rule_label: 'löschen'
96 # rule_label: 'Rule' 96 rule_label: 'Regel'
97 # tags_label: 'Tags' 97 tags_label: 'Tags'
98 # faq: 98 faq:
99 # title: 'FAQ' 99 title: 'FAQ'
100 # tagging_rules_definition_title: 'What does « tagging rules » mean?' 100 tagging_rules_definition_title: 'Was bedeuten die "Tagging-Regeln"?'
101 # tagging_rules_definition_description: 'They are rules used by Wallabag to automatically tag new entries.<br />Each time a new entry is added, all the tagging rules will be used to add the tags you configured, thus saving you the trouble to manually classify your entries.' 101 tagging_rules_definition_description: 'Dies sind Regeln von wallabag, um neu hinzugefügte Einträge autmatisch zu taggen.<br />Jedes Mal, wenn ein neuer Eintrag hinzufügt wird, werden die Tagging-Regeln angewandt. Dies erleichtert dir die Arbeit, deine Einträge manuell zu klassifizieren.'
102 # how_to_use_them_title: 'How do I use them?' 102 how_to_use_them_title: 'Wie nutze ich sie?'
103 # how_to_use_them_description: 'Let assume you want to tag new entries as « <i>short reading</i> » when the reading time is inferior to 3 minutes.<br />In that case, you should put « readingTime &lt;= 3 » in the <i>Rule</i> field and « <i>short reading</i> » in the <i>Tags</i> field.<br />Several tags can added simultaneously by separating them by a comma: « <i>short reading, must read</i> »<br />Complex rules can be written by using predefined operators: if « <i>readingTime &gt;= 5 AND domainName = "github.com"</i> » then tag as « <i>long reading, github </i> »' 103 how_to_use_them_description: 'Nehmen wir an, du möchtest deine Einträge als "<i>schnell lesbar</i>" taggen, wenn die Lesezeit kürzer als drei Minuten ist.<br />In diesem Falle solltest du "readingTime &lt;= 3" in das <i>Regel</i>-Feld und "<i>schnell lesbar</i>" in das <i>Tags</i>-Feld schreiben.<br />Mehrere Tags können gleichzeitig hinzugefügt werden, indem sie durch ein Kommata getrennt werden: "<i>schnell lesbar, interessant</i>"<br />Komplexe Regeln können durch vordefinierte Operatoren geschrieben werden: if "<i>readingTime &gt;= 5 AND domainName = "github.com"</i>" then tag as "<i>long reading, github </i>"'
104 # variables_available_title: 'Which variables and operators can I use to write rules?' 104 variables_available_title: 'Welche Variablen und Operatoren kann ich nutzen, um Regeln zu schreiben?'
105 # variables_available_description: 'The following variables and operators can be used to create tagging rules:' 105 variables_available_description: 'Die folgenden Variablen und Operatoren können genutzt werden, um Tagging-Regeln zu erstellen:'
106 # meaning: 'Meaning' 106 meaning: 'Bedeutung'
107 # variable_description: 107 variable_description:
108 # label: 'Variable' 108 label: 'Variable'
109 # title: 'Title of the entry' 109 title: 'Titel des Eintrags'
110 # url: 'URL of the entry' 110 url: 'URL des Eintrags'
111 # isArchived: 'Whether the entry is archived or not' 111 isArchived: 'gibt an, ob der Eintrag archiviert ist oder nicht'
112 # isStarred: 'Whether the entry is starred or not' 112 isStarred: 'gibt an, ob der Eintrag favorisiert ist oder nicht'
113 # content: "The entry's content" 113 content: "Inhalt des Eintrags"
114 # language: "The entry's language" 114 language: "Sprache des Eintrags"
115 # mimetype: "The entry's mime-type" 115 mimetype: "MIME-Typ des Eintrags"
116 # readingTime: "The estimated entry's reading time, in minutes" 116 readingTime: "Die geschätzte Lesezeit in Minuten"
117 # domainName: 'The domain name of the entry' 117 domainName: 'Der Domain-Name des Eintrags'
118 # operator_description: 118 operator_description:
119 # label: 'Operator' 119 label: 'Operator'
120 # less_than: 'Less than...' 120 less_than: 'Weniger oder gleich als…'
121 # strictly_less_than: 'Strictly less than...' 121 strictly_less_than: 'Weniger als…'
122 # greater_than: 'Greater than...' 122 greater_than: 'Größer oder gleich als…'
123 # strictly_greater_than: 'Strictly greater than...' 123 strictly_greater_than: 'Größer als…'
124 # equal_to: 'Equal to...' 124 equal_to: 'gleich'
125 # not_equal_to: 'Not equal to...' 125 not_equal_to: 'ungleich'
126 # or: 'One rule OR another' 126 or: 'Eine Regel ODER die andere'
127 # and: 'One rule AND another' 127 and: 'Eine Regel UND eine andere'
128 # matches: 'Tests that a <i>subject</i> is matches a <i>search</i> (case-insensitive).<br />Example: <code>title matches "football"</code>' 128 matches: 'Tests, ob eine <i>Variable</i> auf eine <i>Suche</i> zutrifft (Groß- und Kleinschreibung wird nicht berücksichtigt).<br />Beispiel: <code>title matches "Fußball"</code>'
129 form_new_user: 129 form_new_user:
130 username_label: 'Benutzername' 130 username_label: 'Benutzername'
131 password_label: 'Kennwort' 131 password_label: 'Kennwort'
@@ -135,12 +135,12 @@ config:
135 135
136entry: 136entry:
137 page_titles: 137 page_titles:
138 # unread: 'Unread entries' 138 unread: 'Ungelesene Einträge'
139 # starred: 'Starred entries' 139 starred: 'Favorisierte Einträge'
140 # archive: 'Archived entries' 140 archive: 'Archivierte Einträge'
141 # filtered: 'Filtered entries' 141 filtered: 'Gefilterte Einträge'
142 list: 142 list:
143 # number_on_the_page: '{0} There is no entry.|{1} There is one entry.|]1,Inf[ There are %count% entries.' 143 number_on_the_page: '{0} Es gibt keine Einträge.|{1} Es gibt einen Eintrag.|]1,Inf[ Es gibt %count% Einträge.'
144 reading_time: 'geschätzte Lesezeit' 144 reading_time: 'geschätzte Lesezeit'
145 reading_time_minutes: 'geschätzte Lesezeit: %readingTime% min' 145 reading_time_minutes: 'geschätzte Lesezeit: %readingTime% min'
146 reading_time_less_one_minute: 'geschätzte Lesezeit: <small class="inferieur">&lt;</small> 1 min' 146 reading_time_less_one_minute: 'geschätzte Lesezeit: <small class="inferieur">&lt;</small> 1 min'
@@ -148,7 +148,7 @@ entry:
148 toogle_as_read: 'Gelesen-Status ändern' 148 toogle_as_read: 'Gelesen-Status ändern'
149 toogle_as_star: 'Favoriten-Status ändern' 149 toogle_as_star: 'Favoriten-Status ändern'
150 delete: 'Löschen' 150 delete: 'Löschen'
151 # export_title: 'Export' 151 export_title: 'Exportieren'
152 filters: 152 filters:
153 title: 'Filters' 153 title: 'Filters'
154 status_label: 'Status' 154 status_label: 'Status'
@@ -171,35 +171,35 @@ entry:
171 filter: 'Filter' 171 filter: 'Filter'
172 view: 172 view:
173 left_menu: 173 left_menu:
174 # back_to_top: 'Back to top' 174 back_to_top: 'Nach oben'
175 back_to_homepage: 'Zurück' 175 back_to_homepage: 'Zurück'
176 set_as_read: 'Als gelesen markieren' 176 set_as_read: 'Als gelesen markieren'
177 # set_as_unread: 'Mark as unread' 177 set_as_unread: 'Als ungelesen markieren'
178 set_as_favorite: 'Favorisieren' 178 set_as_favorite: 'Favorisieren'
179 view_original_article: 'Original-Artikel' 179 view_original_article: 'Original-Artikel'
180 # re_fetch_content: 'Re-fetch content' 180 re_fetch_content: 'Inhalt neu laden'
181 delete: 'Löschen' 181 delete: 'Löschen'
182 add_a_tag: 'Tag hinzufügen' 182 add_a_tag: 'Tag hinzufügen'
183 share_content: 'Teilen' 183 share_content: 'Teilen'
184 # share_email_label: 'Email' 184 share_email_label: 'E-Mail'
185 download: 'Herunterladen' 185 download: 'Herunterladen'
186 # print: 'Print' 186 print: 'Drucken'
187 problem: 187 problem:
188 label: 'Probleme?' 188 label: 'Probleme?'
189 description: 'Erscheint dieser Artikel falsch?' 189 description: 'Erscheint dieser Artikel falsch?'
190 edit_title: 'Titel ändern' 190 edit_title: 'Titel ändern'
191 original_article: 'original' 191 original_article: 'original'
192 # annotations_on_the_entry: '{0} No annotations|{1} One annotation|]1,Inf[ %nbAnnotations% annotations' 192 annotations_on_the_entry: '{0} Keine Anmerkungen|{1} Eine Anmerkung|]1,Inf[ %nbAnnotations% Anmerkungen'
193 new: 193 new:
194 page_title: 'Neuen Artikel speichern' 194 page_title: 'Neuen Artikel speichern'
195 placeholder: 'http://website.com' 195 placeholder: 'https://website.de'
196 form_new: 196 form_new:
197 url_label: Url 197 url_label: URL
198 edit: 198 edit:
199 # page_title: 'Edit an entry' 199 page_title: 'Eintrag bearbeiten'
200 # title_label: 'Title' 200 title_label: 'Titel'
201 # url_label: 'Url' 201 url_label: 'URL'
202 # is_public_label: 'Public' 202 is_public_label: 'Öffentlich'
203 save_label: 'Speichern' 203 save_label: 'Speichern'
204 204
205about: 205about:
@@ -208,7 +208,7 @@ about:
208 who_behind_wallabag: 'Wer steht hinter wallabag' 208 who_behind_wallabag: 'Wer steht hinter wallabag'
209 getting_help: 'Hilfe bekommen' 209 getting_help: 'Hilfe bekommen'
210 helping: 'wallabag unterstützen' 210 helping: 'wallabag unterstützen'
211 contributors: 'Contributors' 211 contributors: 'Unterstützer'
212 third_party: 'Third-party libraries' 212 third_party: 'Third-party libraries'
213 who_behind_wallabag: 213 who_behind_wallabag:
214 developped_by: 'Entwickelt von' 214 developped_by: 'Entwickelt von'
@@ -225,17 +225,17 @@ about:
225 description: 'wallabag ist kostenlos und Open-Source. Du kannst uns helfen:' 225 description: 'wallabag ist kostenlos und Open-Source. Du kannst uns helfen:'
226 by_contributing: 'indem du zu dem Projekt beiträgst:' 226 by_contributing: 'indem du zu dem Projekt beiträgst:'
227 by_contributing_2: 'ein Issue listet alle unsere Bedürfnisse:' 227 by_contributing_2: 'ein Issue listet alle unsere Bedürfnisse:'
228 by_paypal: 'via Paypal' 228 by_paypal: 'via PayPal'
229 contributors: 229 contributors:
230 # description: 'Thank you to contributors on wallabag web application' 230 description: 'Ein Dankeschön an die Unterstützer von wallabag'
231 third_party: 231 third_party:
232 # description: 'Here are the list of third-party libraries used in wallabag (with their licenses):' 232 description: 'Hier ist eine Liste der verwendeten Bibliotheken in wallabag (mit den jeweiligen Lizenzen):'
233 # package: 'Package' 233 package: 'Paket'
234 license: 'Lizenz' 234 license: 'Lizenz'
235 235
236howto: 236howto:
237 page_title: 'How-to' 237 page_title: 'How-To'
238 # page_description: 'There are several ways to save an article:' 238 page_description: 'Es gibt mehrere Möglichkeiten, einen Artikel zu speichern:'
239 top_menu: 239 top_menu:
240 browser_addons: 'Browser-Addons' 240 browser_addons: 'Browser-Addons'
241 mobile_apps: 'Apps' 241 mobile_apps: 'Apps'
@@ -249,162 +249,162 @@ howto:
249 android: 249 android:
250 via_f_droid: 'via F-Droid' 250 via_f_droid: 'via F-Droid'
251 via_google_play: 'via Google Play' 251 via_google_play: 'via Google Play'
252 # ios: 'on the iTunes Store' 252 ios: 'im iTunes-Store'
253 # windows: 'on the Microsoft Store' 253 windows: 'im Microsoft-Store'
254 bookmarklet: 254 bookmarklet:
255 description: 'Ziehe diesen Link in deine Lesezeichenleiste:' 255 description: 'Ziehe diesen Link in deine Lesezeichenleiste:'
256 256
257quickstart: 257quickstart:
258 # page_title: 'Quickstart' 258 page_title: 'Schnelleinstieg'
259 # intro: 259 intro:
260 # title: 'Welcome to wallabag!' 260 title: 'Willkommen zu wallabag!'
261 # paragraph_1: "We'll accompany you to visit wallabag and show you some features which can interest you." 261 paragraph_1: "Wir werden dich bei der Benutzung von wallabag begleiten und dir einige Funktionen zeigen, die dich interessieren könnten."
262 # paragraph_2: 'Follow us!' 262 paragraph_2: 'Folge uns!'
263 # configure: 263 configure:
264 # title: 'Configure the application' 264 title: 'Anwendung konfigurieren'
265 # language: 'Change language and design' 265 language: 'Sprache und Design ändern'
266 # rss: 'Enable RSS feeds' 266 rss: 'RSS-Feeds aktivieren'
267 # tagging_rules: 'Write rules to automatically tag your articles' 267 tagging_rules: 'Schreibe Regeln, um deine Beiträge automatisch zu taggen (verschlagworten)'
268 # admin: 268 admin:
269 # title: 'Administration' 269 title: 'Administration'
270 # description: 'As an administrator, you have privileges on wallabag. You can:' 270 description: 'Als Adminstrator hast du einige Privilegien. Du kannst:'
271 # new_user: 'Create a new user' 271 new_user: 'Einen neuen Nutzer anlegen'
272 # analytics: 'Configure analytics' 272 analytics: 'das Tracking konfigurieren'
273 # sharing: 'Enable some parameters about article sharing' 273 sharing: 'Einige Parameter für das Teilen von Artikel setzen'
274 # export: 'Configure export' 274 export: 'Export-Einstellungen ändern'
275 # import: 'Configure import' 275 import: 'Import-Einstellungen ändern'
276 # first_steps: 276 first_steps:
277 # title: 'First steps' 277 title: 'Erste Schritte'
278 # new_article: 'Save your first article' 278 new_article: 'Speichere deinen ersten Artikel'
279 # unread_articles: 'And classify it!' 279 unread_articles: 'Und klassifiziere ihn!'
280 # migrate: 280 migrate:
281 # title: 'Migrate from an existing service' 281 title: 'Von einem anderen Dienst migrieren'
282 # description: "Are you using another service? We'll help you to retrieve your data on wallabag." 282 description: "Du nutzt einen anderen Dienst? Wir helfen dir, um deine Daten zu wallabag zu transportieren."
283 # pocket: 'Migrate from Pocket' 283 pocket: 'von Pocket migrieren'
284 # wallabag_v1: 'Migrate from wallabag v1' 284 wallabag_v1: 'von wallabag v1 migrieren'
285 # wallabag_v2: 'Migrate from wallabag v2' 285 wallabag_v2: 'von wallabag v2 migrieren'
286 # developer: 286 developer:
287 # title: 'Developers' 287 title: 'Entwickler'
288 # create_application: 'Create your third application' 288 create_application: 'Erstelle eine Anwendung und nutze die wallabag API'
289 # docs: 289 docs:
290 # title: 'Full documentation' 290 title: 'Komplette Dokumentation'
291 # annotate: 'Annotate your article' 291 annotate: 'Anmerkungen zu Artikeln hinzufügen'
292 # export: 'Convert your articles into ePUB or PDF' 292 export: 'Artikel nach ePUB oder PDF konvertieren'
293 # search_filters: 'See how you can look for an article by using search engine and filters' 293 search_filters: 'Schau nach, wie du nach einem Artikel über die Such- und Filterfunktion suchen kannst'
294 # fetching_errors: 'What can I do if an article encounters errors during fetching?' 294 fetching_errors: 'Was kann ich machen, wenn ein Artikel Fehler beim Herunterladen des Inhalts zeigt?'
295 # all_docs: 'And so many other articles!' 295 all_docs: 'Und viele weitere Artikel!'
296 # support: 296 support:
297 # title: 'Support' 297 title: 'Support'
298 # description: 'If you need some help, we are here for you.' 298 description: 'Wenn du Hilfe brauchst, wir sind für dich da.'
299 # github: 'On GitHub' 299 github: 'Auf GitHub'
300 # email: 'By email' 300 email: 'Über E-Mail'
301 # gitter: 'On Gitter' 301 gitter: 'Auf Gitter'
302 302
303tag: 303tag:
304 page_title: 'Tags' 304 page_title: 'Tags'
305 list: 305 list:
306 # number_on_the_page: '{0} There is no tag.|{1} There is one tag.|]1,Inf[ There are %count% tags.' 306 number_on_the_page: '{0} Es gibt keine Tags.|{1} Es gibt einen Tag.|]1,Inf[ Es gibt %count% Tags.'
307 307
308import: 308import:
309 # page_title: 'Import' 309 page_title: 'Importieren'
310 # page_description: 'Welcome to wallabag importer. Please select your previous service that you want to migrate.' 310 page_description: 'Willkommen beim wallabag-Importer. Wähle deinen vorherigen Service aus, von dem du die Daten migrieren willst.'
311 # action: 311 action:
312 # import_contents: 'Import contents' 312 import_contents: 'Inhalte importieren'
313 # form: 313 form:
314 # mark_as_read_title: 'Mark all as read?' 314 mark_as_read_title: 'Alle als gelesen markieren?'
315 # mark_as_read_label: 'Mark all imported entries as read' 315 mark_as_read_label: 'Alle importierten Einträge als gelesen markieren'
316 # file_label: 'File' 316 file_label: 'Datei'
317 # save_label: 'Upload file' 317 save_label: 'Datei hochladen'
318 # pocket: 318 pocket:
319 # page_title: 'Import > Pocket' 319 page_title: 'Aus Pocket importieren'
320 # description: "This importer will import all your Pocket data. Pocket doesn't allow us to retrieve content from their service, so the readable content of each article will be re-fetched by wallabag." 320 description: "Dieser Importer wird all deine Pocket-Daten importieren. Pocket erlaubt es uns nicht, den Inhalt zu migrieren, daher wird der lesbare Inhalt erneut von wallabag heruntergeladen."
321 # config_missing: 321 config_missing:
322 # description: "Pocket import isn't configured." 322 description: "Pocket-Import ist nicht konfiguriert."
323 # admin_message: 'You need to define %keyurls%a pocket_consumer_key%keyurle%.' 323 admin_message: 'Du musst noch den %keyurls%a pocket_consumer_key%keyurle% definieren.'
324 # user_message: 'Your server admin needs to define an API Key for Pocket.' 324 user_message: 'Der Server-Administrator muss noch einen API-Key für Pocket konfigurieren.'
325 # authorize_message: 'You can import your data from your Pocket account. You just have to click on the below button and authorize the application to connect to getpocket.com.' 325 authorize_message: 'Du kannst deine Daten von deinem Pocket-Account importieren. Dazu musst du nur den nachfolgenden Button klicken und die Anwendung authentifizieren, sich mit getpocket.com zu verbinden.'
326 # connect_to_pocket: 'Connect to Pocket and import data' 326 connect_to_pocket: 'Mit Pocket verbinden und Daten importieren'
327 # wallabag_v1: 327 wallabag_v1:
328 # page_title: 'Import > Wallabag v1' 328 page_title: 'Aus wallabag v1 importieren'
329 # description: 'This importer will import all your wallabag v1 articles. On your config page, click on "JSON export" in the "Export your wallabag data" section. You will have a "wallabag-export-1-xxxx-xx-xx.json" file.' 329 description: 'Dieser Import wird all deine Artikel aus wallabag v1 importieren. Klicke auf der Konfigurations-Seite auf "JSON-Export" im "wallabag-Daten exportieren"-Abschnitt. Du erhältst eine "wallabag-export-1-xxxx-xx-xx.json"-Datei.'
330 # how_to: 'Please select your wallabag export and click on the below button to upload and import it.' 330 how_to: 'Wähle die Export-Datei aus und klicke den nachfolgenden Button, um diese hochzuladen und zu importieren.'
331 # wallabag_v2: 331 wallabag_v2:
332 # page_title: 'Import > Wallabag v2' 332 page_title: 'Aus wallabag v2 importieren'
333 # description: 'This importer will import all your wallabag v2 articles. Go to All articles, then, on the export sidebar, click on "JSON". You will have a "All articles.json" file.' 333 description: 'Dieser Import wird all deine Artikel aus wallabag v2 importieren. Gehe auf "Alle Artikel" und dann, in der Exportieren-Seitenleiste auf "JSON". Dabei erhältst du eine "All articles.json"-Datei.'
334 334
335developer: 335developer:
336 # page_title: 'Developer' 336 page_title: 'Entwickler'
337 # welcome_message: 'Welcome to the wallabag API' 337 welcome_message: 'Willkomen zur wallabag-API'
338 # documentation: 'Documentation' 338 documentation: 'Dokumentation'
339 # how_to_first_app: 'How to create my first application' 339 how_to_first_app: 'Wie erstelle ich meine erste Anwendung'
340 # full_documentation: 'View full API documentation' 340 full_documentation: 'Komplette API-Dokumentation einsehen'
341 # clients: 341 clients:
342 # title: 'Clients' 342 title: 'Clients'
343 # create_new: 'Create a new client' 343 create_new: 'Neuen Client erstellen'
344 # existing_clients: 344 existing_clients:
345 # title: 'Existing clients' 345 title: 'Bestehende Clients'
346 # field_id: 'Client ID' 346 field_id: 'Client-ID'
347 # field_secret: 'Client secret' 347 field_secret: 'Client-Secret'
348 # field_uris: 'Redirect URIs' 348 field_uris: 'Weiterleitungs-URIs'
349 # field_grant_types: 'Grant type allowed' 349 field_grant_types: "Erlaubte grant_types"
350 # no_client: 'No client yet.' 350 no_client: 'Bisher kein Client.'
351 # remove: 351 remove:
352 # warn_message_1: 'You have the ability to remove this client. This action is IRREVERSIBLE !' 352 warn_message_1: 'Du hast die Möglichkeit, diesen Client zu entfernen. DIESE AKTION IST NICHT WIDERRUFBAR!'
353 # warn_message_2: "If you remove it, every app configured with that client won't be able to auth on your wallabag." 353 warn_message_2: "Wenn du ihn entfernst, hat keine der damit konfigurierten Anwendungen mehr die Möglichkeit, sich in deinen wallabag-Account anzumelden."
354 # action: 'Remove this client' 354 action: 'Client entfernen'
355 # client: 355 client:
356 # page_title: 'Developer > New client' 356 page_title: 'Entwickler > Neuer Client'
357 # page_description: 'You are about to create a new client. Please fill the field below for the redirect URI of your application.' 357 page_description: 'Du bist dabei, einen neuen Client zu erstellen. Fülle das nachfolgende Feld für die Weiterleitungs-URIs deiner Anwendung aus.'
358 # form: 358 form:
359 # redirect_uris_label: 'Redirect URIs' 359 redirect_uris_label: 'Weiterleitungs-URIs'
360 # save_label: 'Create a new client' 360 save_label: 'Neuen Client erstellen'
361 # action_back: 'Back' 361 action_back: 'Zurück'
362 # client_parameter: 362 client_parameter:
363 # page_title: 'Developer > Client parameters' 363 page_title: 'Entwickler > Client-Parameter'
364 # page_description: 'Here are your client parameters.' 364 page_description: 'Dies sind deine Client-Parameter.'
365 # field_id: 'Client ID' 365 field_id: 'Client-ID'
366 # field_secret: 'Client secret' 366 field_secret: 'Client-Secret'
367 # back: 'Back' 367 back: 'Zurück'
368 # read_howto: 'Read the howto "Create my first application"' 368 read_howto: 'Lese des How-To zu "Wie erstelle ich meine erste Anwendung"'
369 # howto: 369 howto:
370 # page_title: 'Developer > How to create my first application' 370 page_title: 'Entwickler > Wie erstelle ich meine erste Anwendung'
371 # description: 371 description:
372 # paragraph_1: 'The following commands make use of the <a href="https://github.com/jkbrzt/httpie">HTTPie library</a>. Make sure it is installed on your system before using it.' 372 paragraph_1: 'Die folgenden Befehle machen Gebrauch von der <a href="https://github.com/jkbrzt/httpie">HTTPie-Bibliothek</a>. Stelle sicher, dass sie auf deinem System installiert ist, bevor du fortfährst.'
373 # paragraph_2: 'You need a token to communicate between your 3rd application and wallabag API.' 373 paragraph_2: 'Du benötigst einen Token, damit deine Anwendung mit der wallabag-API kommunizieren kann.'
374 # paragraph_3: 'To create this token, you need <a href="%link%">to create a new client</a>.' 374 paragraph_3: 'Um diesen Token zu erstellen, muss <a href="%link%">ein neuer Client erstellt werden</a>.'
375 # paragraph_4: 'Now, create your token (replace client_id, client_secret, username and password with the good values):' 375 paragraph_4: 'Nun erstelle deinen Token (ersetze client_id, client_secret, username und password mit deinen Werten):'
376 # paragraph_5: 'The API will return a response like this:' 376 paragraph_5: 'Die API wird eine Antwort der folgenden Art zurückgeben:'
377 # paragraph_6: 'The access_token is useful to do a call to the API endpoint. For example:' 377 paragraph_6: 'Der access_token ist nützlich, um die API aufzurufen. Beispiel:'
378 # paragraph_7: 'This call will return all the entries for your user.' 378 paragraph_7: 'Dieser Aufruf wird alle Einträge für den Nutzer zurückgeben.'
379 # paragraph_8: 'If you want to see all the API endpoints, you can have a look <a href="%link%">to our API documentation</a>.' 379 paragraph_8: 'Wenn du alle API-Endpunkte sehen willst, werfe einen Blick auf die <a href="%link%">API-Dokumentation</a>.'
380 # back: 'Back' 380 back: 'Zurück'
381 381
382validator: 382validator:
383 # password_must_match: 'The password fields must match.' 383 password_must_match: 'Die Kennwort-Felder müssen übereinstimmen.'
384 # password_too_short: 'Password should by at least 8 chars long' 384 password_too_short: 'Kennwort-Mindestlänge von acht Zeichen nicht erfüllt'
385 # password_wrong_value: 'Wrong value for your current password' 385 password_wrong_value: 'Falscher Wert r dein aktuelles Kennwort'
386 # item_per_page_too_high: 'This will certainly kill the app' 386 item_per_page_too_high: 'Dies wird die Anwendung möglicherweise beenden'
387 # rss_limit_too_hight: 'This will certainly kill the app' 387 rss_limit_too_hight: 'Dies wird die Anwendung möglicherweise beenden'
388 388
389flashes: 389flashes:
390 config: 390 config:
391 notice: 391 notice:
392 config_saved: 'Konfiguration gespeichert. Einige Einstellungen werden erst nach einer erneuten Anmeldung übernommen.' 392 config_saved: 'Konfiguration gespeichert. Einige Einstellungen werden erst nach einer erneuten Anmeldung übernommen.'
393 password_updated: 'Kennwort aktualisiert' 393 password_updated: 'Kennwort aktualisiert'
394 # password_not_updated_demo: "In demonstration mode, you can't change password for this user." 394 password_not_updated_demo: "Im Test-Modus kannst du das Kennwort nicht ändern."
395 user_updated: 'Information aktualisiert' 395 user_updated: 'Information aktualisiert'
396 rss_updated: 'RSS-Informationen aktualisiert' 396 rss_updated: 'RSS-Informationen aktualisiert'
397 # tagging_rules_updated: 'Tagging rules updated' 397 tagging_rules_updated: 'Tagging-Regeln aktualisiert'
398 # tagging_rules_deleted: 'Tagging rule deleted' 398 tagging_rules_deleted: 'Tagging-Regel gelöscht'
399 # user_added: 'User "%username%" added' 399 user_added: 'Benutzer "%username%" erstellt'
400 # rss_token_updated: 'RSS token updated' 400 rss_token_updated: 'RSS-Token aktualisiert'
401 entry: 401 entry:
402 notice: 402 notice:
403 # entry_already_saved: 'Entry already saved on %date%' 403 entry_already_saved: 'Eintrag bereits am %date% gespeichert'
404 # entry_saved: 'Entry saved' 404 entry_saved: 'Eintag gespeichert'
405 # entry_updated: 'Entry updated' 405 entry_updated: 'Eintrag aktualisiert'
406 # entry_reloaded: 'Entry reloaded' 406 entry_reloaded: 'Eintrag neugeladen'
407 # entry_reload_failed: 'Failed to reload entry' 407 entry_reload_failed: 'Neuladen des Eintrags fehlgeschlagen'
408 entry_archived: 'Artikel archiviert' 408 entry_archived: 'Artikel archiviert'
409 entry_unarchived: 'Artikel dearchiviert' 409 entry_unarchived: 'Artikel dearchiviert'
410 entry_starred: 'Artikel favorisiert' 410 entry_starred: 'Artikel favorisiert'
@@ -412,13 +412,13 @@ flashes:
412 entry_deleted: 'Artikel gelöscht' 412 entry_deleted: 'Artikel gelöscht'
413 tag: 413 tag:
414 notice: 414 notice:
415 # tag_added: 'Tag added' 415 tag_added: 'Tag hinzugefügt'
416 import: 416 import:
417 notice: 417 notice:
418 # failed: 'Import failed, please try again.' 418 failed: 'Import fehlgeschlagen, bitte erneut probieren.'
419 # failed_on_file: 'Error while processing import. Please verify your import file.' 419 failed_on_file: 'Fehler während des Imports. Bitte überprüfe deine Import-Datei.'
420 # summary: 'Import summary: %imported% imported, %skipped% already saved.' 420 summary: 'Import-Zusammenfassung: %imported% importiert, %skipped% bereits gespeichert.'
421 developer: 421 developer:
422 notice: 422 notice:
423 # client_created: 'New client created.' 423 client_created: 'Neuer Client erstellt.'
424 # client_deleted: 'Client deleted' 424 client_deleted: 'Client gelöscht'
diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.pl.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.pl.yml
index daeac4bf..1ca3e6b0 100644
--- a/src/Wallabag/CoreBundle/Resources/translations/messages.pl.yml
+++ b/src/Wallabag/CoreBundle/Resources/translations/messages.pl.yml
@@ -1,18 +1,18 @@
1security: 1security:
2 login: 2 login:
3 # page_title: 'Welcome to wallabag!' 3 page_title: 'Witaj w wallabag!'
4 keep_logged_in: 'Zapamiętaj mnie' 4 keep_logged_in: 'Zapamiętaj mnie'
5 forgot_password: 'Zapomniałeś hasła' 5 forgot_password: 'Zapomniałeś hasła'
6 submit: 'Loguj' 6 submit: 'Loguj'
7 # register: 'Register' 7 register: 'Zarejestruj'
8 username: 'Nazwa użytkownika' 8 username: 'Nazwa użytkownika'
9 password: 'Hasło' 9 password: 'Hasło'
10 # cancel: 'Cancel' 10 cancel: 'Anuluj'
11 resetting: 11 resetting:
12 description: "Wpisz swój adres email poniżej. Wyślemy Ci instrukcję resetowania hasła" 12 description: "Wpisz swój adres email poniżej. Wyślemy Ci instrukcję resetowania hasła"
13 register: 13 register:
14 # page_title: 'Create an account' 14 page_title: 'Utwórz konto'
15 # go_to_account: 'Go to your account' 15 go_to_account: 'Idź do konta'
16 16
17menu: 17menu:
18 left: 18 left:
@@ -22,38 +22,38 @@ menu:
22 all_articles: 'Wszystkie' 22 all_articles: 'Wszystkie'
23 config: 'Konfiguracja' 23 config: 'Konfiguracja'
24 tags: 'Tagi' 24 tags: 'Tagi'
25 # internal_settings: 'Internal Settings' 25 internal_settings: 'Wewnętrzne ustawienia'
26 # import: 'Import' 26 import: 'Importuj'
27 howto: 'Howto' 27 howto: 'Howto'
28 # developer: 'Developer' 28 developer: 'Deweloper'
29 logout: 'Wyloguj' 29 logout: 'Wyloguj'
30 about: 'O nas' 30 about: 'O nas'
31 search: 'Szukaj' 31 search: 'Szukaj'
32 # save_link: 'Save a link' 32 save_link: 'Zapisz link'
33 back_to_unread: 'Powrót do nieprzeczytanych artykułów' 33 back_to_unread: 'Powrót do nieprzeczytanych artykułów'
34 top: 34 top:
35 add_new_entry: 'Dodaj nowy wpis' 35 add_new_entry: 'Dodaj nowy wpis'
36 search: 'Szukaj' 36 search: 'Szukaj'
37 filter_entries: 'Filtruj wpisy' 37 filter_entries: 'Filtruj wpisy'
38 # export: 'Export' 38 export: 'Eksportuj'
39 search_form: 39 search_form:
40 input_label: 'Wpisz swoje zapytanie tutaj' 40 input_label: 'Wpisz swoje zapytanie tutaj'
41 41
42footer: 42footer:
43 wallabag: 43 wallabag:
44 # elsewhere: 'Take wallabag with you' 44 elsewhere: 'Weż wallabag ze so'
45 # social: 'Social' 45 social: 'Społeczność'
46 # powered_by: 'powered by' 46 powered_by: 'Kontrolowany przez'
47 about: 'O nas' 47 about: 'O nas'
48 48
49config: 49config:
50 page_title: 'Konfiguracja' 50 page_title: 'Konfiguracja'
51 tab_menu: 51 tab_menu:
52 # settings: 'Settings' 52 settings: 'Ustawienia'
53 rss: 'Kanał RSS' 53 rss: 'Kanał RSS'
54 user_info: 'Informacje o użytkowniku' 54 user_info: 'Informacje o użytkowniku'
55 password: 'Hasło' 55 password: 'Hasło'
56 # rules: 'Tagging rules' 56 rules: 'Zasady tagowania'
57 new_user: 'Dodaj użytkownika' 57 new_user: 'Dodaj użytkownika'
58 form: 58 form:
59 save: 'Zapisz' 59 save: 'Zapisz'
@@ -62,12 +62,12 @@ config:
62 items_per_page_label: 'Ilość elementóœ na stronie' 62 items_per_page_label: 'Ilość elementóœ na stronie'
63 language_label: 'Język' 63 language_label: 'Język'
64 reading_speed: 64 reading_speed:
65 # label: 'Reading speed' 65 label: 'Prędkość czytania'
66 # help_message: 'You can use online tools to estimate your reading speed:' 66 help_message: 'Możesz skorzystać z narzędzi online do określenia twojej prędkości czytania:'
67 # 100_word: 'I read ~100 words per minute' 67 100_word: 'Czytam ~100 słów na minutę'
68 # 200_word: 'I read ~200 words per minute' 68 200_word: 'Czytam ~200 słów na minutę'
69 # 300_word: 'I read ~300 words per minute' 69 300_word: 'Czytam ~300 słów na minutę'
70 # 400_word: 'I read ~400 words per minute' 70 400_word: 'Czytam ~400 słów na minutę'
71 form_rss: 71 form_rss:
72 description: 'Kanały RSS prowadzone przez wallabag pozwalają Ci na czytanie twoich zapisanych artykułów w twoium ulubionym czytniku RSS. Musisz najpierw wynegenerować tokena.‌' 72 description: 'Kanały RSS prowadzone przez wallabag pozwalają Ci na czytanie twoich zapisanych artykułów w twoium ulubionym czytniku RSS. Musisz najpierw wynegenerować tokena.‌'
73 token_label: 'Token RSS' 73 token_label: 'Token RSS'
@@ -81,66 +81,66 @@ config:
81 archive: 'archiwum' 81 archive: 'archiwum'
82 rss_limit: 'Link do RSS' 82 rss_limit: 'Link do RSS'
83 form_user: 83 form_user:
84 # two_factor_description: "Enabling two factor authentication means you'll receive an email with a code on every new untrusted connexion" 84 two_factor_description: "Włączenie autoryzacji dwuetapowej oznacza, że będziesz otrzymywał maile z kodem przy każdym nowym, niezaufanyum połączeniu"
85 name_label: 'Nazwa' 85 name_label: 'Nazwa'
86 email_label: 'Adres email' 86 email_label: 'Adres email'
87 # twoFactorAuthentication_label: 'Two factor authentication' 87 twoFactorAuthentication_label: 'Autoryzacja dwuetapowa'
88 form_password: 88 form_password:
89 old_password_label: 'Stare hasło' 89 old_password_label: 'Stare hasło'
90 new_password_label: 'Nowe hasło' 90 new_password_label: 'Nowe hasło'
91 repeat_new_password_label: 'Powtórz nowe hasło' 91 repeat_new_password_label: 'Powtórz nowe hasło'
92 form_rules: 92 form_rules:
93 # if_label: 'if' 93 if_label: 'jeżeli'
94 # then_tag_as_label: 'then tag as' 94 then_tag_as_label: 'wtedy otaguj jako'
95 delete_rule_label: 'usuń' 95 delete_rule_label: 'usuń'
96 # rule_label: 'Rule' 96 rule_label: 'Reguła'
97 # tags_label: 'Tags' 97 tags_label: 'Tagi'
98 # faq: 98 faq:
99 # title: 'FAQ' 99 title: 'FAQ'
100 # tagging_rules_definition_title: 'What does « tagging rules » mean?' 100 tagging_rules_definition_title: 'Co oznaczają « reguły tagowania » ?'
101 # tagging_rules_definition_description: 'They are rules used by Wallabag to automatically tag new entries.<br />Each time a new entry is added, all the tagging rules will be used to add the tags you configured, thus saving you the trouble to manually classify your entries.' 101 tagging_rules_definition_description: 'Istnieją reguły używane przez wallabag służące do automatycznego tagowania nowych wpisów.<br />Za każdym razem kiedy dodasz nowi wpis, zostaną użyte wszystkie skonfigurowane przez ciebie regułu. Dzięki temu unikniesz konieczności ręcznego ich klasyfikowania.'
102 # how_to_use_them_title: 'How do I use them?' 102 how_to_use_them_title: 'Jak ich użyć?'
103 # how_to_use_them_description: 'Let assume you want to tag new entries as « <i>short reading</i> » when the reading time is inferior to 3 minutes.<br />In that case, you should put « readingTime &lt;= 3 » in the <i>Rule</i> field and « <i>short reading</i> » in the <i>Tags</i> field.<br />Several tags can added simultaneously by separating them by a comma: « <i>short reading, must read</i> »<br />Complex rules can be written by using predefined operators: if « <i>readingTime &gt;= 5 AND domainName = "github.com"</i> » then tag as « <i>long reading, github </i> »' 103 how_to_use_them_description: 'Załóżmy, że chcesz otagować nowe wpisy jako « <i>do szybkiego przeczytania</i> » jeżeli czas czytania wynosi mniej niż 3 minuty.<br />W tym przypadku ponienieneś umieścić « czasCzytania &lt;= 3 » w polu <i>Reguła</i> i « <i><do szybkiego przeczytania/i> » w polu <i>Tagi</i>.<br />Wiele tagów może zostać dodanych jednocześnie rozdzielając je przecinkami: « <i>do szybkiego przeczytania, koniecznie przeczytać</i> »<br />Kompleksowe reguły mogą być napisane przy użyciu operatorów: jeżeli « <i>czasCzytania &gt;= 5 I nazwaDomeny = "github.com"</i> » wtedy otagój jako « <i>dłuższy tekst, github </i> »'
104 # variables_available_title: 'Which variables and operators can I use to write rules?' 104 variables_available_title: 'Jakich zmiennych i operatorów mogę użyć przy pisaniu reguł?'
105 # variables_available_description: 'The following variables and operators can be used to create tagging rules:' 105 variables_available_description: 'Następujące zmienne i operatory mogą być użyte przy tworzeniu reguł tagowania:'
106 # meaning: 'Meaning' 106 meaning: 'Znaczenie'
107 # variable_description: 107 variable_description:
108 # label: 'Variable' 108 label: 'Zmienna'
109 # title: 'Title of the entry' 109 title: 'Tyt wpisu'
110 # url: 'URL of the entry' 110 url: 'Adres URL wpisu'
111 # isArchived: 'Whether the entry is archived or not' 111 isArchived: 'Czy wpis został zarchiwizowany czy nie'
112 # isStarred: 'Whether the entry is starred or not' 112 isStarred: 'Czy wpis został oznaczony gwiazdką czy nie'
113 # content: "The entry's content" 113 content: 'Zawartość wpisu'
114 # language: "The entry's language" 114 language: 'Język wpisu'
115 # mimetype: "The entry's mime-type" 115 mimetype: 'Mime-type wpisu'
116 # readingTime: "The estimated entry's reading time, in minutes" 116 readingTime: 'Szacunkowy czas czytania wpisu w minutach'
117 # domainName: 'The domain name of the entry' 117 domainName: 'Nazwa domeny wpisu'
118 # operator_description: 118 operator_description:
119 # label: 'Operator' 119 label: 'Operator'
120 # less_than: 'Less than...' 120 less_than: 'Mniej n...'
121 # strictly_less_than: 'Strictly less than...' 121 strictly_less_than: 'Wyłącznie mniej n...'
122 # greater_than: 'Greater than...' 122 greater_than: 'Więcej n...'
123 # strictly_greater_than: 'Strictly greater than...' 123 strictly_greater_than: 'Wyłącznie więcej n...'
124 # equal_to: 'Equal to...' 124 equal_to: 'Równe...'
125 # not_equal_to: 'Not equal to...' 125 not_equal_to: 'Nierówny...'
126 # or: 'One rule OR another' 126 or: 'Jedna reguła LUB inna'
127 # and: 'One rule AND another' 127 and: 'Jedna reguła I inna'
128 # matches: 'Tests that a <i>subject</i> is matches a <i>search</i> (case-insensitive).<br />Example: <code>title matches "football"</code>' 128 matches: 'Sprawdź czy <i>temat</i> pasuje <i>szukaj</i> (duże lub małe litery).<br />Przykład: <code>tytuł zawiera "piłka nożna"</code>'
129 form_new_user: 129 form_new_user:
130 username_label: 'Nazwa użytkownika' 130 username_label: 'Nazwa użytkownika'
131 password_label: 'Hasło' 131 password_label: 'Hasło'
132 repeat_new_password_label: 'Powtórz nowe hasło' 132 repeat_new_password_label: 'Powtórz nowe hasło'
133 plain_password_label: '????' 133 plain_password_label: 'Jawne hasło'
134 email_label: 'Adres email' 134 email_label: 'Adres email'
135 135
136entry: 136entry:
137 page_titles: 137 page_titles:
138 # unread: 'Unread entries' 138 unread: 'Nieprzeczytane wpisy'
139 # starred: 'Starred entries' 139 starred: 'Wpisy oznaczone gwiazdką'
140 # archive: 'Archived entries' 140 archive: 'Zarchiwizowane wpisy'
141 # filtered: 'Filtered entries' 141 filtered: 'Odfiltrowane wpisy'
142 list: 142 list:
143 # number_on_the_page: '{0} There is no entry.|{1} There is one entry.|]1,Inf[ There are %count% entries.' 143 number_on_the_page: '{0} Nie ma wpisów.|{1} Jest jeden wpis.|]1,Inf[ %count% wpisy.'
144 reading_time: 'szacunkowy czas czytania' 144 reading_time: 'szacunkowy czas czytania'
145 reading_time_minutes: 'szacunkowy czas czytania: %readingTime% min' 145 reading_time_minutes: 'szacunkowy czas czytania: %readingTime% min'
146 reading_time_less_one_minute: 'szacunkowy czas czytania: <small class="inferieur">&lt;</small> 1 min' 146 reading_time_less_one_minute: 'szacunkowy czas czytania: <small class="inferieur">&lt;</small> 1 min'
@@ -148,7 +148,7 @@ entry:
148 toogle_as_read: 'Oznacz jako przeczytane' 148 toogle_as_read: 'Oznacz jako przeczytane'
149 toogle_as_star: 'Oznacz jako ulubione' 149 toogle_as_star: 'Oznacz jako ulubione'
150 delete: 'Usuń' 150 delete: 'Usuń'
151 # export_title: 'Export' 151 export_title: 'Export'
152 filters: 152 filters:
153 title: 'Filtry' 153 title: 'Filtry'
154 status_label: 'Status' 154 status_label: 'Status'
@@ -171,35 +171,35 @@ entry:
171 filter: 'Filtruj' 171 filter: 'Filtruj'
172 view: 172 view:
173 left_menu: 173 left_menu:
174 # back_to_top: 'Back to top' 174 back_to_top: 'Wróć na górę'
175 back_to_homepage: 'Cofnij' 175 back_to_homepage: 'Cofnij'
176 set_as_read: 'Oznacz jako przeczytane' 176 set_as_read: 'Oznacz jako przeczytane'
177 # set_as_unread: 'Mark as unread' 177 set_as_unread: 'Oznacz jako nieprzeczytane'
178 set_as_favorite: 'Ulubione' 178 set_as_favorite: 'Ulubione'
179 view_original_article: 'Oryginalny artykuł' 179 view_original_article: 'Oryginalny artykuł'
180 # re_fetch_content: 'Re-fetch content' 180 re_fetch_content: 'Pobierz ponownie treść'
181 delete: 'Usuń' 181 delete: 'Usuń'
182 add_a_tag: 'Dodaj tag' 182 add_a_tag: 'Dodaj tag'
183 share_content: 'Udostępnij' 183 share_content: 'Udostępnij'
184 share_email_label: 'Adres email' 184 share_email_label: 'Adres email'
185 download: 'Pobierz' 185 download: 'Pobierz'
186 # print: 'Print' 186 print: 'Drukuj'
187 problem: 187 problem:
188 label: 'Problemy' 188 label: 'Problemy'
189 description: 'Czy ten artykuł wygląda źle?' 189 description: 'Czy ten artykuł wygląda źle?'
190 edit_title: 'Edytuj tytuł' 190 edit_title: 'Edytuj tytuł'
191 original_article: 'oryginalny' 191 original_article: 'oryginalny'
192 # annotations_on_the_entry: '{0} No annotations|{1} One annotation|]1,Inf[ %nbAnnotations% annotations' 192 annotations_on_the_entry: '{0} Nie ma adnotacji |{1} Jedna adnotacja |]1,Inf[ %nbAnnotations% adnotacji'
193 new: 193 new:
194 page_title: 'Zapisz nowy wpis' 194 page_title: 'Zapisz nowy wpis'
195 placeholder: 'http://website.com' 195 placeholder: 'http://website.com'
196 form_new: 196 form_new:
197 url_label: Url 197 url_label: Url
198 edit: 198 edit:
199 # page_title: 'Edit an entry' 199 page_title: 'Edytuj wpis'
200 # title_label: 'Title' 200 title_label: 'Tyt'
201 # url_label: 'Url' 201 url_label: 'Adres URL'
202 # is_public_label: 'Public' 202 is_public_label: 'Publiczny'
203 save_label: 'Zapisz' 203 save_label: 'Zapisz'
204 204
205about: 205about:
@@ -208,8 +208,8 @@ about:
208 who_behind_wallabag: 'Kto stoi za wallabag' 208 who_behind_wallabag: 'Kto stoi za wallabag'
209 getting_help: 'Pomoc' 209 getting_help: 'Pomoc'
210 helping: 'Pomóż wallabag' 210 helping: 'Pomóż wallabag'
211 # contributors: 'Contributors' 211 contributors: 'Osoby, które pomogły przy projekcie'
212 # third_party: 'Third-party libraries' 212 third_party: 'Biblioteki Third-party'
213 who_behind_wallabag: 213 who_behind_wallabag:
214 developped_by: 'Stworzony przez' 214 developped_by: 'Stworzony przez'
215 website: 'strona internetowa' 215 website: 'strona internetowa'
@@ -220,22 +220,22 @@ about:
220 getting_help: 220 getting_help:
221 documentation: 'Dokumentacja' 221 documentation: 'Dokumentacja'
222 bug_reports: 'Raportuj błędy' 222 bug_reports: 'Raportuj błędy'
223 support: '<a href="https://support.wallabag.org">Na naszeej stronie wsparcia technicznego</a> lub <a href="https://github.com/wallabag/wallabag/issues">na GitHubie</a>' 223 support: '<a href="https://support.wallabag.org">Na naszej stronie wsparcia technicznego</a> lub <a href="https://github.com/wallabag/wallabag/issues">na GitHubie</a>'
224 helping: 224 helping:
225 description: 'wallabag jest darmowy i otwartoźródłowy. Możesz nam pomóc:' 225 description: 'wallabag jest darmowy i otwartoźródłowy. Możesz nam pomóc:'
226 by_contributing: 'przez przyłączenie się do projektu:' 226 by_contributing: 'przez przyłączenie się do projektu:'
227 by_contributing_2: 'lista wszystkich naszych potrzeb' 227 by_contributing_2: 'lista wszystkich naszych potrzeb'
228 by_paypal: 'przez Paypal' 228 by_paypal: 'przez Paypal'
229 contributors: 229 contributors:
230 # description: 'Thank you to contributors on wallabag web application' 230 description: 'Podziękuj osobą, które przyczyniły s do projektu przez aplikację webo'
231 third_party: 231 third_party:
232 # description: 'Here are the list of third-party libraries used in wallabag (with their licenses):' 232 description: 'Tutaj znajduje się lista Third-party bibliotek użytych w wallabag (z ich licencjami):'
233 # package: 'Package' 233 package: 'Paczka'
234 license: 'Licencja' 234 license: 'Licencja'
235 235
236howto: 236howto:
237 page_title: 'Howto' 237 page_title: 'Howto'
238 # page_description: 'There are several ways to save an article:' 238 page_description: 'Sposoby zapisania artykułu:'
239 top_menu: 239 top_menu:
240 browser_addons: 'Wtyczki dla przeglądarki' 240 browser_addons: 'Wtyczki dla przeglądarki'
241 mobile_apps: 'Aplikacje mobilne' 241 mobile_apps: 'Aplikacje mobilne'
@@ -243,148 +243,148 @@ howto:
243 form: 243 form:
244 description: 'Podziękuj przez ten formularz' 244 description: 'Podziękuj przez ten formularz'
245 browser_addons: 245 browser_addons:
246 firefox: 'Standardowe rozszerzenia dla Firefox' 246 firefox: 'Standardowe rozszerzenie dla Firefox'
247 chrome: 'Rozszerzenie dla Chrome' 247 chrome: 'Rozszerzenie dla Chrome'
248 mobile_apps: 248 mobile_apps:
249 android: 249 android:
250 via_f_droid: 'przez F-Droid' 250 via_f_droid: 'w F-Droid'
251 via_google_play: 'przez Google Play' 251 via_google_play: 'w Google Play'
252 ios: 'przez iTunes Store' 252 ios: 'w iTunes Store'
253 windows: 'przez Microsoft Store' 253 windows: 'w Microsoft Store'
254 bookmarklet: 254 bookmarklet:
255 description: 'Przeciągnij i upuść ten link na swój pasek zakładek' 255 description: 'Przeciągnij i upuść ten link na swój pasek zakładek'
256 256
257quickstart: 257quickstart:
258 # page_title: 'Quickstart' 258 page_title: 'Szybki start'
259 # intro: 259 intro:
260 # title: 'Welcome to wallabag!' 260 title: 'Witaj w wallabag!'
261 # paragraph_1: "We'll accompany you to visit wallabag and show you some features which can interest you." 261 paragraph_1: "Będziemy ci towarzyszyli w Twojej poznaniu wallabag i pokażemy możliwości, które mogą cię zainteresować."
262 # paragraph_2: 'Follow us!' 262 paragraph_2: 'Śledź nas!'
263 # configure: 263 configure:
264 # title: 'Configure the application' 264 title: 'Konfiguruj aplikację'
265 # language: 'Change language and design' 265 language: 'Zmień język i wygląd'
266 # rss: 'Enable RSS feeds' 266 rss: 'Włącz kanały RSS'
267 # tagging_rules: 'Write rules to automatically tag your articles' 267 tagging_rules: 'Napisz reguły pozwalające na automatyczne otagowanie twoich artykułów'
268 # admin: 268 admin:
269 # title: 'Administration' 269 title: 'Administracja'
270 # description: 'As an administrator, you have privileges on wallabag. You can:' 270 description: 'Jako administrator wallabag, możesz:'
271 # new_user: 'Create a new user' 271 new_user: 'Tworzyć nowego użytkownika'
272 # analytics: 'Configure analytics' 272 analytics: 'Configure analytics'
273 # sharing: 'Enable some parameters about article sharing' 273 sharing: 'Włączyć pewne parametry dotyczące udostępniania artykułów'
274 # export: 'Configure export' 274 export: 'Skonfigurować eksport'
275 # import: 'Configure import' 275 import: 'Skonfigurować import'
276 # first_steps: 276 first_steps:
277 # title: 'First steps' 277 title: 'Pierwsze kroki'
278 # new_article: 'Save your first article' 278 new_article: 'Zapisz swój pierwszy artukuł'
279 # unread_articles: 'And classify it!' 279 unread_articles: 'I sklasyfikuj go!'
280 # migrate: 280 migrate:
281 # title: 'Migrate from an existing service' 281 title: 'Migruj w istniejącej usługi'
282 # description: "Are you using another service? We'll help you to retrieve your data on wallabag." 282 description: "ywasz innej usługi? Pomożemy ci pobrać twoje dane do wallabag."
283 # pocket: 'Migrate from Pocket' 283 pocket: 'Migruj z Pocket'
284 # wallabag_v1: 'Migrate from wallabag v1' 284 wallabag_v1: 'Migruj z wallabag v1'
285 # wallabag_v2: 'Migrate from wallabag v2' 285 wallabag_v2: 'Migruj z wallabag v2'
286 # developer: 286 developer:
287 # title: 'Developers' 287 title: 'Deweloperzy'
288 # create_application: 'Create your third application' 288 create_application: 'Strz swoją aplikację'
289 # docs: 289 docs:
290 # title: 'Full documentation' 290 title: 'Pełna Dokumentacja'
291 # annotate: 'Annotate your article' 291 annotate: 'Dadaj adnotację do swojego artykułu'
292 # export: 'Convert your articles into ePUB or PDF' 292 export: 'Konwertuj swoje artykuły do ePUB lub PDF'
293 # search_filters: 'See how you can look for an article by using search engine and filters' 293 search_filters: 'Zabacz jak możesz znaleźć artykuł dzięku yciu silnika wyszukiwarki i filtrów'
294 # fetching_errors: 'What can I do if an article encounters errors during fetching?' 294 fetching_errors: 'Co mo zrobić jeżeli artukuł napotka błędy podczas pobierania?'
295 # all_docs: 'And so many other articles!' 295 all_docs: 'I wiele innych artykułów!'
296 # support: 296 support:
297 # title: 'Support' 297 title: 'Wsparcie'
298 # description: 'If you need some help, we are here for you.' 298 description: 'Jeżeli potrzebujesz pomocy, jesteśmy tutaj dla ciebie.'
299 # github: 'On GitHub' 299 github: 'na GitHubie'
300 # email: 'By email' 300 email: 'przez email'
301 # gitter: 'On Gitter' 301 gitter: 'na Gitterze'
302 302
303tag: 303tag:
304 page_title: 'Tagi' 304 page_title: 'Tagi'
305 list: 305 list:
306 # number_on_the_page: '{0} There is no tag.|{1} There is one tag.|]1,Inf[ There are %count% tags.' 306 number_on_the_page: '{0} Nie ma tagów.|{1} Jest jeden tag.|]1,Inf[ %count% tagi.'
307 307
308import: 308import:
309 # page_title: 'Import' 309 page_title: 'Import'
310 # page_description: 'Welcome to wallabag importer. Please select your previous service that you want to migrate.' 310 page_description: 'Witaj w importerze Wallabag. Wybierz swo poprzednią usługę, z której chcech migrować.'
311 # action: 311 action:
312 # import_contents: 'Import contents' 312 import_contents: 'Import zawartości'
313 # form: 313 form:
314 # mark_as_read_title: 'Mark all as read?' 314 mark_as_read_title: 'Oznaczyć wszystkie jako przeczytane?'
315 # mark_as_read_label: 'Mark all imported entries as read' 315 mark_as_read_label: 'Oznacz wszystkie zaimportowane wpisy jako przeczytane'
316 # file_label: 'File' 316 file_label: 'Plik'
317 # save_label: 'Upload file' 317 save_label: 'aduj plik'
318 # pocket: 318 pocket:
319 # page_title: 'Import > Pocket' 319 page_title: 'Import > Pocket'
320 # description: "This importer will import all your Pocket data. Pocket doesn't allow us to retrieve content from their service, so the readable content of each article will be re-fetched by wallabag." 320 description: "Ten importer, zaimportuje dane z usługi Pocket. Pocket nie pozwala na nam na pobranie zawartości ze swojej usługi, więc kontent każdego arthykuł\u zostanie ponownie pobrany przez wallabag."
321 # config_missing: 321 config_missing:
322 # description: "Pocket import isn't configured." 322 description: "Import z Pocket nie jest skonfigurowany."
323 # admin_message: 'You need to define %keyurls%a pocket_consumer_key%keyurle%.' 323 admin_message: 'Musisz zdefiniować %keyurls%a pocket_consumer_key%keyurle%.'
324 # user_message: 'Your server admin needs to define an API Key for Pocket.' 324 user_message: 'Admin twojego servera musi zdefiniować API Key dla Pocket.'
325 # authorize_message: 'You can import your data from your Pocket account. You just have to click on the below button and authorize the application to connect to getpocket.com.' 325 authorize_message: 'Możesz zaimportować dane ze swojego konta Pocket. Kliknij poniższy przycisk i autoryzuj aplikacje aby połączyć się z getpocket.com.'
326 # connect_to_pocket: 'Connect to Pocket and import data' 326 connect_to_pocket: 'Połącz z Pocket i importuj dane'
327 # wallabag_v1: 327 wallabag_v1:
328 # page_title: 'Import > Wallabag v1' 328 page_title: 'Import > Wallabag v1'
329 # description: 'This importer will import all your wallabag v1 articles. On your config page, click on "JSON export" in the "Export your wallabag data" section. You will have a "wallabag-export-1-xxxx-xx-xx.json" file.' 329 description: 'Ten importer, zaimportuje wszystkie twoje artykułu z wallabag v1. Na swojej stronie konfiguracyjnej kliknij "JSON eksport" w sekcji "Eksportuj swoje dane wallabag". Otrzymasz plik "wallabag-export-1-xxxx-xx-xx.json".'
330 # how_to: 'Please select your wallabag export and click on the below button to upload and import it.' 330 how_to: 'Wybierz swój plik eksportu z wallabag i kliknij poniższy przycisk, aby go załadować.'
331 # wallabag_v2: 331 wallabag_v2:
332 # page_title: 'Import > Wallabag v2' 332 page_title: 'Import > Wallabag v2'
333 # description: 'This importer will import all your wallabag v2 articles. Go to All articles, then, on the export sidebar, click on "JSON". You will have a "All articles.json" file.' 333 description: 'Ten importer, zaimportuje wszystkie twoje artykułu z wallabag v2. Idź do wszystkich artykułów, a następnie na panelu exportu kliknij na "JSON". Otrzymasz plik "All articles.json".'
334 334
335developer: 335developer:
336 # page_title: 'Developer' 336 page_title: 'Deweloper'
337 # welcome_message: 'Welcome to the wallabag API' 337 welcome_message: 'Witaj w API wallabag'
338 # documentation: 'Documentation' 338 documentation: 'Dokumentacja'
339 # how_to_first_app: 'How to create my first application' 339 how_to_first_app: 'Jak stworzyć moją pierws aplikację'
340 # full_documentation: 'View full API documentation' 340 full_documentation: 'Pokaż pełne API'
341 # clients: 341 clients:
342 # title: 'Clients' 342 title: 'Klienci'
343 # create_new: 'Create a new client' 343 create_new: 'Utwórz nowego klienta'
344 # existing_clients: 344 existing_clients:
345 # title: 'Existing clients' 345 title: 'Istniejący klienci'
346 # field_id: 'Client ID' 346 field_id: 'Client ID'
347 # field_secret: 'Client secret' 347 field_secret: 'Client secret'
348 # field_uris: 'Redirect URIs' 348 field_uris: 'Przekieruj URIs'
349 # field_grant_types: 'Grant type allowed' 349 field_grant_types: 'Przyznaj pozwolenie'
350 # no_client: 'No client yet.' 350 no_client: 'Nie ma jeszcze klienta.'
351 # remove: 351 remove:
352 # warn_message_1: 'You have the ability to remove this client. This action is IRREVERSIBLE !' 352 warn_message_1: 'Masz możliwość usunięcia tego klienta. Ta akcja jest NIEODWRACALNA !'
353 # warn_message_2: "If you remove it, every app configured with that client won't be able to auth on your wallabag." 353 warn_message_2: "Jeżeli go usuniesz, aplikacje skonfigurowane z tym klientem nię będa w stanie autoryzować twojego wallabag."
354 # action: 'Remove this client' 354 action: 'Usuń tego klienta'
355 # client: 355 client:
356 # page_title: 'Developer > New client' 356 page_title: 'Deweloper > Nowy klient'
357 # page_description: 'You are about to create a new client. Please fill the field below for the redirect URI of your application.' 357 page_description: 'Tworzysz nowego klienta. Wypełnij poniższe pole w celu przekierowania URI twojej aplikacji.'
358 # form: 358 form:
359 # redirect_uris_label: 'Redirect URIs' 359 redirect_uris_label: 'Przekieruj adresy URI'
360 # save_label: 'Create a new client' 360 save_label: 'Stwórz nowego klienta'
361 # action_back: 'Cofnij' 361 action_back: 'Cofnij'
362 # client_parameter: 362 client_parameter:
363 # page_title: 'Developer > Client parameters' 363 page_title: 'Deweloper > Parametry klienta'
364 # page_description: 'Here are your client parameters.' 364 page_description: 'Tutaj znajdu się parametry klienta.'
365 # field_id: 'Client ID' 365 field_id: 'Client ID'
366 # field_secret: 'Client secret' 366 field_secret: 'Client secret'
367 # back: 'Cofnij' 367 back: 'Cofnij'
368 # read_howto: 'Read the howto "Create my first application"' 368 read_howto: 'Przeczytaj jak "Stworzyć moją pierws aplikację"'
369 # howto: 369 howto:
370 # page_title: 'Developer > How to create my first application' 370 page_title: 'Deweloper > Jak stworzyć moją pierws aplikację'
371 # description: 371 description:
372 # paragraph_1: 'The following commands make use of the <a href="https://github.com/jkbrzt/httpie">HTTPie library</a>. Make sure it is installed on your system before using it.' 372 paragraph_1: 'Następujące komendy korzystają <a href="https://github.com/jkbrzt/httpie">Biblioteka HTTPie</a>. Upewnij się, czy zainstalowałeś ją w swoim systemie zanim z niej skorzystasz'
373 # paragraph_2: 'You need a token to communicate between your 3rd application and wallabag API.' 373 paragraph_2: 'Potrzebujesz tokena w celu nawiązania komunikacji między swoją aplikacją a API wallabag.'
374 # paragraph_3: 'To create this token, you need <a href="%link%">to create a new client</a>.' 374 paragraph_3: 'W celu stworzenia tokena musisz <a href="%link%">strz nowego klienta</a>.'
375 # paragraph_4: 'Now, create your token (replace client_id, client_secret, username and password with the good values):' 375 paragraph_4: 'Teraz, utwórz tokena (zmień client_id, client_secret, username i password z poprawnymi wartościami):'
376 # paragraph_5: 'The API will return a response like this:' 376 paragraph_5: 'API powinno zwrócić taką informację:'
377 # paragraph_6: 'The access_token is useful to do a call to the API endpoint. For example:' 377 paragraph_6: 'access_token jest użyteczny do wywołania API endpoint. Na przykład:'
378 # paragraph_7: 'This call will return all the entries for your user.' 378 paragraph_7: 'To wywołanie zwróci wszystkie twoje wpisy.'
379 # paragraph_8: 'If you want to see all the API endpoints, you can have a look <a href="%link%">to our API documentation</a>.' 379 paragraph_8: 'Jeżeli chcesz wyświetlić wszystkie punkty końcowe API, zobacz <a href="%link%">Dokumentacja naszego API</a>.'
380 # back: 'Cofnij' 380 back: 'Cofnij'
381 381
382validator: 382validator:
383 password_must_match: 'Hasło w polach musi być takie same' 383 password_must_match: 'Hasło w polach musi być takie same'
384 password_too_short: 'Hasło powinno mieć minimum 8 znaków długości' 384 password_too_short: 'Hasło powinno mieć minimum 8 znaków długości'
385 # password_wrong_value: 'Wrong value for your current password' 385 password_wrong_value: 'Twoje obecne hasło jest błędne'
386 # item_per_page_too_high: 'This will certainly kill the app' 386 item_per_page_too_high: 'To może spowodować problemy z aplikacją'
387 # rss_limit_too_hight: 'This will certainly kill the app' 387 rss_limit_too_hight: 'To może spowodować problemy z aplikacją'
388 388
389flashes: 389flashes:
390 config: 390 config:
@@ -394,17 +394,17 @@ flashes:
394 password_not_updated_demo: "In demonstration mode, you can't change password for this user." 394 password_not_updated_demo: "In demonstration mode, you can't change password for this user."
395 user_updated: 'Informacje zaktualizowane' 395 user_updated: 'Informacje zaktualizowane'
396 rss_updated: 'Informacje RSS zaktualizowane' 396 rss_updated: 'Informacje RSS zaktualizowane'
397 # tagging_rules_updated: 'Tagging rules updated' 397 tagging_rules_updated: 'Reguły tagowania zaktualizowane'
398 # tagging_rules_deleted: 'Tagging rule deleted' 398 tagging_rules_deleted: 'Reguła tagowania usunięta'
399 # user_added: 'User "%username%" added' 399 user_added: 'Użytkownik "%username%" dodany'
400 # rss_token_updated: 'RSS token updated' 400 rss_token_updated: 'Token kanału RSS zaktualizowany'
401 entry: 401 entry:
402 notice: 402 notice:
403 # entry_already_saved: 'Entry already saved on %date%' 403 entry_already_saved: 'Wpis już został dodany %date%'
404 # entry_saved: 'Entry saved' 404 entry_saved: 'Wpis zapisany'
405 # entry_updated: 'Entry updated' 405 entry_updated: 'Wpis zaktualizowany'
406 # entry_reloaded: 'Entry reloaded' 406 entry_reloaded: 'Wpis ponownie załadowany'
407 # entry_reload_failed: 'Failed to reload entry' 407 entry_reload_failed: 'Błąd ponownego załadowania'
408 entry_archived: 'Wpis dodany do archiwum' 408 entry_archived: 'Wpis dodany do archiwum'
409 entry_unarchived: 'Wpis usunięty z archiwum' 409 entry_unarchived: 'Wpis usunięty z archiwum'
410 entry_starred: 'Wpis oznaczony gwiazdką' 410 entry_starred: 'Wpis oznaczony gwiazdką'
@@ -412,13 +412,13 @@ flashes:
412 entry_deleted: 'Wpis usunięty' 412 entry_deleted: 'Wpis usunięty'
413 tag: 413 tag:
414 notice: 414 notice:
415 # tag_added: 'Tag added' 415 tag_added: 'Tag dodany'
416 import: 416 import:
417 notice: 417 notice:
418 # failed: 'Import failed, please try again.' 418 failed: 'Nieudany import, prosimy spróbować ponownie.'
419 # failed_on_file: 'Error while processing import. Please verify your import file.' 419 failed_on_file: 'Błąd podczas ptrzetwarzania pliku. Sprawdż swój importowany plik.'
420 # summary: 'Import summary: %imported% imported, %skipped% already saved.' 420 summary: 'Podsumowanie importu: %imported% zaimportowane, %skipped% już zapisane.'
421 developer: 421 developer:
422 notice: 422 notice:
423 # client_created: 'New client created.' 423 client_created: 'Nowy klient utworzony.'
424 # client_deleted: 'Client deleted' 424 client_deleted: 'Klient usunięty'
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/layout.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/layout.html.twig
index 0ce06962..bac92ffa 100644
--- a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/layout.html.twig
+++ b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/layout.html.twig
@@ -66,7 +66,7 @@
66 {% for flashMessage in app.session.flashbag.get('notice') %} 66 {% for flashMessage in app.session.flashbag.get('notice') %}
67 <div class="messages success"> 67 <div class="messages success">
68 <a href="#" class="closeMessage">×</a> 68 <a href="#" class="closeMessage">×</a>
69 <p>{{ flashMessage }}</p> 69 <p>{{ flashMessage|trans }}</p>
70 </div> 70 </div>
71 {% endfor %} 71 {% endfor %}
72{% endblock %} 72{% endblock %}
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/entry.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/entry.html.twig
index 4eebf18f..032d2d9b 100644
--- a/src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/entry.html.twig
+++ b/src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/entry.html.twig
@@ -116,7 +116,7 @@
116 {% if craue_setting('share_diaspora') %} 116 {% if craue_setting('share_diaspora') %}
117 <li> 117 <li>
118 <a href="{{ craue_setting('diaspora_url') }}/bookmarklet?url={{ entry.url|url_encode }}&title={{ entry.title|url_encode }}&notes=&v=1&noui=1&jump=doclose" target="_blank" class="tool diaspora icon-image icon-image--diaspora" title="diaspora}"> 118 <a href="{{ craue_setting('diaspora_url') }}/bookmarklet?url={{ entry.url|url_encode }}&title={{ entry.title|url_encode }}&notes=&v=1&noui=1&jump=doclose" target="_blank" class="tool diaspora icon-image icon-image--diaspora" title="diaspora}">
119 <span>diaspora}</span> 119 <span>diaspora*</span>
120 </a> 120 </a>
121 </li> 121 </li>
122 {% endif %} 122 {% endif %}
diff --git a/src/Wallabag/CoreBundle/Tests/Helper/ContentProxyTest.php b/src/Wallabag/CoreBundle/Tests/Helper/ContentProxyTest.php
index f58b5828..74bfb054 100644
--- a/src/Wallabag/CoreBundle/Tests/Helper/ContentProxyTest.php
+++ b/src/Wallabag/CoreBundle/Tests/Helper/ContentProxyTest.php
@@ -10,6 +10,40 @@ use Wallabag\UserBundle\Entity\User;
10 10
11class ContentProxyTest extends \PHPUnit_Framework_TestCase 11class ContentProxyTest extends \PHPUnit_Framework_TestCase
12{ 12{
13 public function testWithBadUrl()
14 {
15 $tagger = $this->getTaggerMock();
16 $tagger->expects($this->once())
17 ->method('tag');
18
19 $graby = $this->getMockBuilder('Graby\Graby')
20 ->setMethods(array('fetchContent'))
21 ->disableOriginalConstructor()
22 ->getMock();
23
24 $graby->expects($this->any())
25 ->method('fetchContent')
26 ->willReturn(array(
27 'html' => false,
28 'title' => '',
29 'url' => '',
30 'content_type' => '',
31 'language' => '',
32 ));
33
34 $proxy = new ContentProxy($graby, $tagger, $this->getTagRepositoryMock(), $this->getLogger());
35 $entry = $proxy->updateEntry(new Entry(new User()), 'http://user@:80');
36
37 $this->assertEquals('http://user@:80', $entry->getUrl());
38 $this->assertEmpty($entry->getTitle());
39 $this->assertEquals('<p>Unable to retrieve readable content.</p>', $entry->getContent());
40 $this->assertEmpty($entry->getPreviewPicture());
41 $this->assertEmpty($entry->getMimetype());
42 $this->assertEmpty($entry->getLanguage());
43 $this->assertEquals(0.0, $entry->getReadingTime());
44 $this->assertEquals(false, $entry->getDomainName());
45 }
46
13 public function testWithEmptyContent() 47 public function testWithEmptyContent()
14 { 48 {
15 $tagger = $this->getTaggerMock(); 49 $tagger = $this->getTaggerMock();
@@ -121,6 +155,57 @@ class ContentProxyTest extends \PHPUnit_Framework_TestCase
121 $this->assertEquals('1.1.1.1', $entry->getDomainName()); 155 $this->assertEquals('1.1.1.1', $entry->getDomainName());
122 } 156 }
123 157
158 public function testWithForcedContent()
159 {
160 $tagger = $this->getTaggerMock();
161 $tagger->expects($this->once())
162 ->method('tag');
163
164 $graby = $this->getMockBuilder('Graby\Graby')->getMock();
165
166 $proxy = new ContentProxy($graby, $tagger, $this->getTagRepositoryMock(), $this->getLogger());
167 $entry = $proxy->updateEntry(new Entry(new User()), 'http://0.0.0.0', [
168 'html' => str_repeat('this is my content', 325),
169 'title' => 'this is my title',
170 'url' => 'http://1.1.1.1',
171 'content_type' => 'text/html',
172 'language' => 'fr',
173 ]);
174
175 $this->assertEquals('http://1.1.1.1', $entry->getUrl());
176 $this->assertEquals('this is my title', $entry->getTitle());
177 $this->assertContains('this is my content', $entry->getContent());
178 $this->assertEquals('text/html', $entry->getMimetype());
179 $this->assertEquals('fr', $entry->getLanguage());
180 $this->assertEquals(4.0, $entry->getReadingTime());
181 $this->assertEquals('1.1.1.1', $entry->getDomainName());
182 }
183
184 public function testTaggerThrowException()
185 {
186 $graby = $this->getMockBuilder('Graby\Graby')
187 ->disableOriginalConstructor()
188 ->getMock();
189
190 $tagger = $this->getTaggerMock();
191 $tagger->expects($this->once())
192 ->method('tag')
193 ->will($this->throwException(new \Exception()));
194
195 $tagRepo = $this->getTagRepositoryMock();
196 $proxy = new ContentProxy($graby, $tagger, $tagRepo, $this->getLogger());
197
198 $entry = $proxy->updateEntry(new Entry(new User()), 'http://0.0.0.0', [
199 'html' => str_repeat('this is my content', 325),
200 'title' => 'this is my title',
201 'url' => 'http://1.1.1.1',
202 'content_type' => 'text/html',
203 'language' => 'fr',
204 ]);
205
206 $this->assertCount(0, $entry->getTags());
207 }
208
124 public function testAssignTagsWithArrayAndExtraSpaces() 209 public function testAssignTagsWithArrayAndExtraSpaces()
125 { 210 {
126 $graby = $this->getMockBuilder('Graby\Graby') 211 $graby = $this->getMockBuilder('Graby\Graby')