--- /dev/null
+<?php
+
+namespace Application\Migrations;
+
+use Doctrine\DBAL\Migrations\AbstractMigration;
+use Doctrine\DBAL\Schema\Schema;
+use Symfony\Component\DependencyInjection\ContainerAwareInterface;
+use Symfony\Component\DependencyInjection\ContainerInterface;
+
+/**
+ * Changed tags to lowercase.
+ */
+class Version20170719231144 extends AbstractMigration implements ContainerAwareInterface
+{
+ /**
+ * @var ContainerInterface
+ */
+ private $container;
+
+ public function setContainer(ContainerInterface $container = null)
+ {
+ $this->container = $container;
+ }
+
+ /**
+ * @param Schema $schema
+ */
+ public function up(Schema $schema)
+ {
+ $this->skipIf($this->connection->getDatabasePlatform()->getName() === 'sqlite', 'Migration can only be executed safely on \'mysql\' or \'postgresql\'.');
+
+ // Find tags which need to be merged
+ $dupTags = $this->connection->query('
+ SELECT LOWER(label)
+ FROM ' . $this->getTable('tag') . '
+ GROUP BY LOWER(label)
+ HAVING COUNT(*) > 1'
+ );
+ $dupTags->execute();
+
+ foreach ($dupTags->fetchAll() as $duplicates) {
+ $label = $duplicates['LOWER(label)'];
+
+ // Retrieve all duplicate tags for a given tag
+ $tags = $this->connection->query('
+ SELECT id
+ FROM ' . $this->getTable('tag') . "
+ WHERE LOWER(label) = '" . $label . "'
+ ORDER BY id ASC"
+ );
+ $tags->execute();
+
+ $first = true;
+ $newId = null;
+ $ids = [];
+
+ foreach ($tags->fetchAll() as $tag) {
+ // Ignore the first tag as we use it as the new reference tag
+ if ($first) {
+ $first = false;
+ $newId = $tag['id'];
+ } else {
+ $ids[] = $tag['id'];
+ }
+ }
+
+ // Just in case...
+ if (count($ids) > 0) {
+ // Merge tags
+ $this->addSql('
+ UPDATE ' . $this->getTable('entry_tag') . '
+ SET tag_id = ' . $newId . '
+ WHERE tag_id IN (' . implode(',', $ids) . ')'
+ );
+
+ // Delete unused tags
+ $this->addSql('
+ DELETE FROM ' . $this->getTable('tag') . '
+ WHERE id IN (' . implode(',', $ids) . ')'
+ );
+ }
+ }
+
+ // Iterate over all tags to lowercase them
+ $this->addSql('
+ UPDATE ' . $this->getTable('tag') . '
+ SET label = LOWER(label)'
+ );
+ }
+
+ /**
+ * @param Schema $schema
+ */
+ public function down(Schema $schema)
+ {
+ throw new SkipMigrationException('Too complex ...');
+ }
+
+ private function getTable($tableName)
+ {
+ return $this->container->getParameter('database_table_prefix') . $tableName;
+ }
+}
--- /dev/null
+<?php
+
+namespace Application\Migrations;
+
+use Doctrine\DBAL\Migrations\AbstractMigration;
+use Doctrine\DBAL\Schema\Schema;
+use Symfony\Component\DependencyInjection\ContainerAwareInterface;
+use Symfony\Component\DependencyInjection\ContainerInterface;
+
+/**
+ * Add starred_at column and set its value to updated_at for is_starred entries.
+ */
+class Version20170824113337 extends AbstractMigration implements ContainerAwareInterface
+{
+ /**
+ * @var ContainerInterface
+ */
+ private $container;
+
+ public function setContainer(ContainerInterface $container = null)
+ {
+ $this->container = $container;
+ }
+
+ /**
+ * @param Schema $schema
+ */
+ public function up(Schema $schema)
+ {
+ $entryTable = $schema->getTable($this->getTable('entry'));
+
+ $this->skipIf($entryTable->hasColumn('starred_at'), 'It seems that you already played this migration.');
+
+ $entryTable->addColumn('starred_at', 'datetime', [
+ 'notnull' => false,
+ ]);
+ }
+
+ public function postUp(Schema $schema)
+ {
+ $entryTable = $schema->getTable($this->getTable('entry'));
+ $this->skipIf(!$entryTable->hasColumn('starred_at'), 'Unable to add starred_at colum');
+
+ $this->connection->executeQuery('UPDATE ' . $this->getTable('entry') . ' SET starred_at = updated_at WHERE is_starred = true');
+ }
+
+ /**
+ * @param Schema $schema
+ */
+ public function down(Schema $schema)
+ {
+ $entryTable = $schema->getTable($this->getTable('entry'));
+
+ $this->skipIf(!$entryTable->hasColumn('starred_at'), 'It seems that you already played this migration.');
+
+ $entryTable->dropColumn('starred_at');
+ }
+
+ private function getTable($tableName)
+ {
+ return $this->container->getParameter('database_table_prefix') . $tableName;
+ }
+}
-# settings_changed: Configuration updated
-download_pictures: Bilder auf den Server herunterladen
-carrot: Teilen zu Carrot aktivieren
-diaspora_url: Diaspora-URL, sofern der Service aktiviert ist
-export_epub: ePUB-Export aktivieren
-export_mobi: mobi-Export aktivieren
-export_pdf: PDF-Export aktivieren
-export_csv: CSV-Export aktivieren
-export_json: JSON-Export aktivieren
-export_txt: TXT-Export aktivieren
-export_xml: XML-Export aktivieren
-import_with_rabbitmq: Aktiviere RabbitMQ, um Artikel asynchron zu importieren
-import_with_redis: Aktiviere Redis, um Artikel asynchron zu importieren
-shaarli_url: Shaarli-URL, sofern der Service aktiviert ist
-share_diaspora: Teilen zu Diaspora aktiveren
-share_mail: Teilen via E-Mail aktiveren
-share_shaarli: Teilen zu Shaarli aktiveren
-share_scuttle: Teilen zu Scuttle aktiveren
-share_twitter: Teilen zu Twitter aktiveren
-share_unmark: Teilen zu Unmark.it aktiveren
-show_printlink: Link anzeigen, um den Inhalt auszudrucken
-wallabag_support_url: Support-URL für wallabag
-entry: "Artikel"
-export: "Export"
-import: "Import"
-misc: "Verschiedenes"
-modify_settings: "Übernehmen"
-piwik_host: Host deiner Webseite in Piwik (ohne http:// oder https://)
-piwik_site_id: ID deiner Webseite in Piwik
-piwik_enabled: Piwik aktivieren
-demo_mode_enabled: "Test-Modus aktivieren? (nur für die öffentliche wallabag-Demo genutzt)"
-demo_mode_username: "Test-Benutzer"
-share_public: Erlaube eine öffentliche URL für Einträge
-# download_images_enabled: Download images locally
-# restricted_access: Enable authentication for websites with paywall
-# api_user_registration: Enable user to be registered using the API
+settings_changed: 'Konfiguration aktualisiert'
+download_pictures: 'Bilder auf den Server herunterladen'
+carrot: 'Teilen zu Carrot aktivieren'
+diaspora_url: 'Diaspora-URL, sofern der Service aktiviert ist'
+export_epub: 'ePUB-Export aktivieren'
+export_mobi: 'mobi-Export aktivieren'
+export_pdf: 'PDF-Export aktivieren'
+export_csv: 'CSV-Export aktivieren'
+export_json: 'JSON-Export aktivieren'
+export_txt: 'TXT-Export aktivieren'
+export_xml: 'XML-Export aktivieren'
+import_with_rabbitmq: 'Aktiviere RabbitMQ, um Artikel asynchron zu importieren'
+import_with_redis: 'Aktiviere Redis, um Artikel asynchron zu importieren'
+shaarli_url: 'Shaarli-URL, sofern der Service aktiviert ist'
+share_diaspora: 'Teilen zu Diaspora aktiveren'
+share_mail: 'Teilen via E-Mail aktiveren'
+share_shaarli: 'Teilen zu Shaarli aktiveren'
+share_twitter: 'Teilen zu Twitter aktiveren'
+share_unmark: 'Teilen zu Unmark.it aktiveren'
+show_printlink: 'Link anzeigen, um den Inhalt auszudrucken'
+wallabag_support_url: 'Support-URL für wallabag'
+wallabag_url: 'URL von *deiner* wallabag-Instanz'
+entry: 'Artikel'
+export: 'Export'
+import: 'Import'
+misc: 'Verschiedenes'
+modify_settings: 'Übernehmen'
+piwik_host: 'Host deiner Webseite in Piwik (ohne http:// oder https://)'
+piwik_site_id: 'ID deiner Webseite in Piwik'
+piwik_enabled: 'Piwik aktivieren'
+demo_mode_enabled: 'Test-Modus aktivieren? (nur für die öffentliche wallabag-Demo genutzt)'
+demo_mode_username: 'Test-Benutzer'
+share_public: 'Erlaube eine öffentliche URL für Einträge'
+download_images_enabled: 'Bilder lokal herunterladen'
+restricted_access: 'Authentifizierung für Webseiten mit Paywall aktivieren'
+api_user_registration: 'Registrierung eines Benutzers über die API ermöglichen'
import_with_rabbitmq: Activar RabbitMQ per importar de donadas de manièra asincròna
import_with_redis: Activar Redis per importar de donadas de manièra asincròna
shaarli_url: URL de Shaarli, se lo servici Shaarli es activat
-share_diaspora: Activar lo partatge cap a Diaspora
+share_diaspora: Activar lo partatge cap a Diaspora*
share_mail: Activar lo partatge per corrièl
share_shaarli: Activar lo partatge cap a Shaarli
share_scuttle: Activar lo partatge cap a Scuttle
}
if (null !== $data['isStarred']) {
- $entry->setStarred((bool) $data['isStarred']);
+ $entry->updateStar((bool) $data['isStarred']);
}
if (!empty($data['tags'])) {
}
if (null !== $data['isStarred']) {
- $entry->setStarred((bool) $data['isStarred']);
+ $entry->updateStar((bool) $data['isStarred']);
}
if (!empty($data['tags'])) {
$this->checkUserAction($entry);
$entry->toggleStar();
+ $entry->updateStar($entry->isStarred());
$this->getDoctrine()->getManager()->flush();
$message = 'flashes.entry.notice.entry_unstarred';
*/
private $publishedBy;
+ /**
+ * @var \DateTime
+ *
+ * @ORM\Column(name="starred_at", type="datetime", nullable=true)
+ *
+ * @Groups({"entries_for_user", "export_all"})
+ */
+ private $starredAt = null;
+
/**
* @ORM\OneToMany(targetEntity="Wallabag\AnnotationBundle\Entity\Annotation", mappedBy="entry", cascade={"persist", "remove"})
* @ORM\JoinTable
return $this->updatedAt;
}
+ /**
+ * @return \DateTime|null
+ */
+ public function getStarredAt()
+ {
+ return $this->starredAt;
+ }
+
+ /**
+ * @param \DateTime|null $starredAt
+ *
+ * @return Entry
+ */
+ public function setStarredAt($starredAt = null)
+ {
+ $this->starredAt = $starredAt;
+
+ return $this;
+ }
+
+ /**
+ * update isStarred and starred_at fields.
+ *
+ * @param bool $isStarred
+ *
+ * @return Entry
+ */
+ public function updateStar($isStarred = false)
+ {
+ $this->setStarred($isStarred);
+ $this->setStarredAt(null);
+ if ($this->isStarred()) {
+ $this->setStarredAt(new \DateTime());
+ }
+
+ return $this;
+ }
+
/**
* @return ArrayCollection<Annotation>
*/
*/
public function setLabel($label)
{
- $this->label = $label;
+ $this->label = mb_convert_case($label, MB_CASE_LOWER);
return $this;
}
}
foreach ($tags as $label) {
- $label = trim($label);
+ $label = trim(mb_convert_case($label, MB_CASE_LOWER));
// avoid empty tag
if (0 === strlen($label)) {
public function getBuilderForStarredByUser($userId)
{
return $this
- ->getBuilderByUser($userId)
+ ->getBuilderByUser($userId, 'starredAt', 'desc')
->andWhere('e.isStarred = true')
;
}
/**
* Return a query builder to used by other getBuilderFor* method.
*
- * @param int $userId
+ * @param int $userId
+ * @param string $sortBy
+ * @param string $direction
*
* @return QueryBuilder
*/
- private function getBuilderByUser($userId)
+ private function getBuilderByUser($userId, $sortBy = 'createdAt', $direction = 'desc')
{
return $this->createQueryBuilder('e')
->andWhere('e.user = :userId')->setParameter('userId', $userId)
- ->orderBy('e.createdAt', 'desc')
- ;
+ ->orderBy(sprintf('e.%s', $sortBy), $direction);
}
}
save_link: 'Link speichern'
back_to_unread: 'Zurück zu ungelesenen Artikeln'
users_management: 'Benutzerverwaltung'
- # site_credentials: 'Site credentials'
+ site_credentials: 'Zugangsdaten'
top:
add_new_entry: 'Neuen Artikel hinzufügen'
search: 'Suche'
social: 'Soziales'
powered_by: 'angetrieben von'
about: 'Über'
- stats: Seit %user_creation% hast du %nb_archives% Artikel gelesen. Das sind ungefähr %per_day% pro Tag!
+ stats: 'Seit %user_creation% hast du %nb_archives% Artikel gelesen. Das sind ungefähr %per_day% pro Tag!'
config:
page_title: 'Einstellungen'
label: 'Wohin soll nach dem Gelesenmarkieren eines Artikels weitergeleitet werden?'
redirect_homepage: 'Zur Homepage'
redirect_current_page: 'Zur aktuellen Seite'
- pocket_consumer_key_label: Consumer-Key für Pocket, um Inhalte zu importieren
- android_configuration: Konfiguriere deine Android Application
- # android_instruction: "Touch here to prefill your Android application"
+ pocket_consumer_key_label: 'Consumer-Key für Pocket, um Inhalte zu importieren'
+ android_configuration: 'Konfiguriere deine Android-App'
+ android_instruction: "Klicke hier, um deine Android-App auszufüllen"
help_theme: "wallabag ist anpassbar. Du kannst dein bevorzugtes Theme hier auswählen."
help_items_per_page: "Du kannst die Nummer von Artikeln pro Seite anpassen."
help_reading_speed: "wallabag berechnet eine Lesezeit pro Artikel. Hier kannst du definieren, ob du ein schneller oder langsamer Leser bist. wallabag wird die Lesezeiten danach neu berechnen."
unread: 'Ungelesene'
starred: 'Favoriten'
archive: 'Archivierte'
- # all: 'All'
+ all: 'Alle'
rss_limit: 'Anzahl der Einträge pro Feed'
form_user:
two_factor_description: "Wenn du die Zwei-Faktor-Authentifizierung aktivierst, erhältst du eine E-Mail mit einem Code bei jeder nicht vertrauenswürdigen Verbindung"
twoFactorAuthentication_label: 'Zwei-Faktor-Authentifizierung'
help_twoFactorAuthentication: "Wenn du 2FA aktivierst, wirst du bei jedem Login einen Code per E-Mail bekommen."
delete:
- title: Lösche mein Konto (a.k.a Gefahrenzone)
- description: Wenn du dein Konto löschst, werden ALL deine Artikel, ALL deine Tags, ALL deine Anmerkungen und dein Konto dauerhaft gelöscht (kann NICHT RÜCKGÄNGIG gemacht werden). Du wirst anschließend ausgeloggt.
- confirm: Bist du wirklich sicher? (DIES KANN NICHT RÜCKGÄNGIG GEMACHT WERDEN)
- button: Lösche mein Konto
+ title: 'Lösche mein Konto (a.k.a Gefahrenzone)'
+ description: 'Wenn du dein Konto löschst, werden ALL deine Artikel, ALL deine Tags, ALL deine Anmerkungen und dein Konto dauerhaft gelöscht (kann NICHT RÜCKGÄNGIG gemacht werden). Du wirst anschließend ausgeloggt.'
+ confirm: 'Bist du wirklich sicher? (DIES KANN NICHT RÜCKGÄNGIG GEMACHT WERDEN)'
+ button: 'Lösche mein Konto'
reset:
- title: Zurücksetzen (a.k.a Gefahrenzone)
- description: Beim Nutzen der folgenden Schaltflächenhast du die Möglichkeit, einige Informationen von deinem Konto zu entfernen. Sei dir bewusst, dass dies NICHT RÜCKGÄNGIG zu machen ist.
- annotations: Entferne ALLE Annotationen
- tags: Entferne ALLE Tags
- entries: Entferne ALLE Einträge
- archived: Entferne ALLE archivierten Einträge
- confirm: Bist du wirklich sicher? (DIES KANN NICHT RÜCKGÄNGIG GEMACHT WERDEN)
+ title: 'Zurücksetzen (a.k.a Gefahrenzone)'
+ description: 'Beim Nutzen der folgenden Schaltflächenhast du die Möglichkeit, einige Informationen von deinem Konto zu entfernen. Sei dir bewusst, dass dies NICHT RÜCKGÄNGIG zu machen ist.'
+ annotations: 'Entferne ALLE Annotationen'
+ tags: 'Entferne ALLE Tags'
+ entries: 'Entferne ALLE Einträge'
+ archived: 'Entferne ALLE archivierten Einträge'
+ confirm: 'Bist du wirklich sicher? (DIES KANN NICHT RÜCKGÄNGIG GEMACHT WERDEN)'
form_password:
description: "Hier kannst du dein Kennwort ändern. Dieses sollte mindestens acht Zeichen enthalten."
old_password_label: 'Altes Kennwort'
number_of_tags: '{1}und ein anderer Tag|]1,Inf[und %count% andere Tags'
reading_time_minutes_short: '%readingTime% min'
reading_time_less_one_minute_short: '< 1 min'
- original_article: 'Original'
+ original_article: 'Originalartikel'
toogle_as_read: 'Gelesen-Status ändern'
toogle_as_star: 'Favoriten-Status ändern'
delete: 'Löschen'
unread_label: 'Ungelesene'
preview_picture_label: 'Vorschaubild vorhanden'
preview_picture_help: 'Vorschaubild'
- # is_public_label: 'Has a public link'
- # is_public_help: 'Public link'
+ is_public_label: 'Hat einen öffentlichen Link'
+ is_public_help: 'Öffentlicher Link'
language_label: 'Sprache'
http_status_label: 'HTTP-Status'
reading_time:
label: 'Probleme?'
description: 'Erscheint dieser Artikel falsch?'
edit_title: 'Titel ändern'
- original_article: 'original'
+ original_article: 'Originalartikel'
annotations_on_the_entry: '{0} Keine Anmerkungen|{1} Eine Anmerkung|]1,Inf[ %count% Anmerkungen'
created_at: 'Erstellungsdatum'
published_at: 'Erscheinungsdatum'
url_label: 'URL'
save_label: 'Speichern'
public:
- shared_by_wallabag: "Dieser Artikel wurde von %username% mittels <a href='%wallabag_instance%'>wallabag</a> geteilt"
+ shared_by_wallabag: 'Dieser Artikel wurde von %username% mittels <a href="%wallabag_instance%">wallabag</a> geteilt'
confirm:
- delete: "Bist du sicher, dass du diesen Artikel löschen möchtest?"
- delete_tag: "Bist du sicher, dass du diesen Tag vom Artikel entfernen möchtest?"
+ delete: 'Bist du sicher, dass du diesen Artikel löschen möchtest?'
+ delete_tag: 'Bist du sicher, dass du diesen Tag vom Artikel entfernen möchtest?'
about:
page_title: 'Über'
bookmarklet:
description: 'Ziehe diesen Link in deine Lesezeichenleiste:'
shortcuts:
- page_description: Dies sind die verfügbaren Tastenkürzel in wallabag.
- shortcut: Tastenkürzel
- action: Aktion
- all_pages_title: Tastenkürzel auf allen Seiten
- go_unread: Zu ungelesen gehen
- go_starred: Zu Favoriten gehen
- go_archive: Zu archivierten gehen
- go_all: Zu allen Artikel gehen
- go_tags: Zu den Tags gehen
- go_config: Einstellungen öffnen
- go_import: Import-Sektion öffnen
- go_developers: Zur Entwickler-Seite gehen
- go_howto: Zum Howto gehen (diese Seite!)
- go_logout: Abmelden
- list_title: Tastenkürzel verfügbar auf den Listen-Seiten
- search: Suche
- article_title: Tastenkürzel verfügbar auf der Artikel-Seite
- open_original: Original-Artikel öffnen
- toggle_favorite: Favorit-Status für den Artikel ändern
- toggle_archive: Archiviert-Status für den Artikel ändern
- delete: Artikel löschen
- material_title: Tastenkürzel des Material-Theme
- add_link: Neuen Link hinzufügen
- hide_form: Aktuelles Formular verstecken (Suche oder neuer Link)
- arrows_navigation: Durch Artikel navigieren
- open_article: Gewählten Artikel anzeigen
+ page_description: 'Dies sind die verfügbaren Tastenkürzel in wallabag.'
+ shortcut: 'Tastenkürzel'
+ action: 'Aktion'
+ all_pages_title: 'Tastenkürzel auf allen Seiten'
+ go_unread: 'Zu ungelesen gehen'
+ go_starred: 'Zu Favoriten gehen'
+ go_archive: 'Zu archivierten gehen'
+ go_all: 'Zu allen Artikel gehen'
+ go_tags: 'Zu den Tags gehen'
+ go_config: 'Einstellungen öffnen'
+ go_import: 'Import-Sektion öffnen'
+ go_developers: 'Zur Entwickler-Seite gehen'
+ go_howto: 'Zum Howto gehen (diese Seite!)'
+ go_logout: 'Abmelden'
+ list_title: 'Tastenkürzel verfügbar auf den Listen-Seiten'
+ search: 'Suche'
+ article_title: 'Tastenkürzel verfügbar auf der Artikel-Seite'
+ open_original: 'Original-Artikel öffnen'
+ toggle_favorite: 'Favorit-Status für den Artikel ändern'
+ toggle_archive: 'Archiviert-Status für den Artikel ändern'
+ delete: 'Artikel löschen'
+ material_title: 'Tastenkürzel des Material-Theme'
+ add_link: 'Neuen Link hinzufügen'
+ hide_form: 'Aktuelles Formular verstecken (Suche oder neuer Link)'
+ arrows_navigation: 'Durch Artikel navigieren'
+ open_article: 'Gewählten Artikel anzeigen'
quickstart:
page_title: 'Schnelleinstieg'
field_id: 'Client-ID'
field_secret: 'Client-Secret'
back: 'Zurück'
- read_howto: 'Lese des How-To zu "Wie erstelle ich meine erste Anwendung"'
+ read_howto: 'Lese das How-To zu "Wie erstelle ich meine erste Anwendung"'
howto:
page_title: 'API-Client-Verwaltung > Wie erstelle ich meine erste Anwendung'
description:
back: 'Zurück'
user:
- page_title: Benutzerverwaltung
- new_user: Erstelle einen neuen Benutzer
- edit_user: Bearbeite einen existierenden Benutzer
+ page_title: 'Benutzerverwaltung'
+ new_user: 'Erstelle einen neuen Benutzer'
+ edit_user: 'Bearbeite einen existierenden Benutzer'
description: "Hier kannst du alle Benutzer verwalten (erstellen, bearbeiten und löschen)"
list:
- actions: Aktionen
- edit_action: Bearbeiten
- yes: Ja
- no: Nein
- create_new_one: Erstelle einen neuen Benutzer
+ actions: 'Aktionen'
+ edit_action: 'Bearbeiten'
+ yes: 'Ja'
+ no: 'Nein'
+ create_new_one: 'Erstelle einen neuen Benutzer'
form:
username_label: 'Benutzername'
name_label: 'Name'
email_label: 'E-Mail-Adresse'
enabled_label: 'Aktiviert'
last_login_label: 'Letzter Login'
- twofactor_label: Zwei-Faktor-Authentifizierung
- save: Speichern
- delete: Löschen
- delete_confirm: Bist du sicher?
- back_to_list: Zurück zur Liste
+ twofactor_label: 'Zwei-Faktor-Authentifizierung'
+ save: 'Speichern'
+ delete: 'Löschen'
+ delete_confirm: 'Bist du sicher?'
+ back_to_list: 'Zurück zur Liste'
search:
- placeholder: Filtere nach Benutzer oder E-Mail-Adresse
+ placeholder: 'Filtere nach Benutzer oder E-Mail-Adresse'
site_credential:
- # page_title: Site credentials management
- # new_site_credential: Create a credential
- # edit_site_credential: Edit an existing credential
- # description: "Here you can manage all credentials for sites which required them (create, edit and delete), like a paywall, an authentication, etc."
+ page_title: 'Verwaltung Zugangsdaten'
+ new_site_credential: 'Zugangsdaten anlegen'
+ edit_site_credential: 'Bestehende Zugangsdaten bearbeiten'
+ description: 'Hier kannst du alle Zugangsdaten für Webseiten verwalten, die diese benötigen (anlegen, bearbeiten und löschen), wie z. B. eine Paywall, eine Authentifizierung, etc.'
list:
- actions: Aktionen
- edit_action: Bearbeiten
- yes: Ja
- no: Nein
- # create_new_one: Create a new credential
+ actions: 'Aktionen'
+ edit_action: 'Bearbeiten'
+ yes: 'Ja'
+ no: 'Nein'
+ create_new_one: 'Einen neuen Seitenzugang anlegen'
form:
- # username_label: 'Username'
- # host_label: 'Host'
- # password_label: 'Password'
- save: Speichern
- delete: Löschen
- delete_confirm: Bist du sicher?
- back_to_list: Zurück zur Liste
+ username_label: 'Benutzername'
+ host_label: 'Host'
+ password_label: 'Passwort'
+ save: 'Speichern'
+ delete: 'Löschen'
+ delete_confirm: 'Bist du sicher?'
+ back_to_list: 'Zurück zur Liste'
error:
- page_title: Ein Fehler ist aufgetreten
+ page_title: 'Ein Fehler ist aufgetreten'
flashes:
config:
notice:
config_saved: 'Konfiguration gespeichert.'
password_updated: 'Kennwort aktualisiert'
- password_not_updated_demo: "Im Testmodus kannst du das Kennwort nicht ändern."
+ password_not_updated_demo: 'Im Testmodus kannst du das Kennwort nicht ändern.'
user_updated: 'Information aktualisiert'
rss_updated: 'RSS-Informationen aktualisiert'
tagging_rules_updated: 'Tagging-Regeln aktualisiert'
tagging_rules_deleted: 'Tagging-Regel gelöscht'
rss_token_updated: 'RSS-Token aktualisiert'
- annotations_reset: Anmerkungen zurücksetzen
- tags_reset: Tags zurücksetzen
- entries_reset: Einträge zurücksetzen
- archived_reset: Archiverte Einträge zurücksetzen
+ annotations_reset: 'Anmerkungen zurücksetzen'
+ tags_reset: 'Tags zurücksetzen'
+ entries_reset: 'Einträge zurücksetzen'
+ archived_reset: 'Archiverte Einträge zurücksetzen'
entry:
notice:
entry_already_saved: 'Eintrag bereits am %date% gespeichert'
deleted: 'Benutzer "%username%" gelöscht'
site_credential:
notice:
- # added: 'Site credential for "%host%" added'
- # updated: 'Site credential for "%host%" updated'
- # deleted: 'Site credential for "%host%" deleted'
+ added: 'Zugangsdaten für "%host%" hinzugefügt'
+ updated: 'Zugangsdaten für "%host%" aktualisiert'
+ deleted: 'Zugangsdaten für "%host%" gelöscht'
security:
login:
- page_title: 'Benvenguda sus wallabag !'
+ page_title: 'Vos desirem la benvenguda a wallabag !'
keep_logged_in: 'Demorar connectat'
- forgot_password: 'Senhal oblidat ?'
+ forgot_password: 'Senhal oblidat ?'
submit: 'Se connectar'
register: 'Crear un compte'
username: "Nom d'utilizaire"
resetting:
description: "Picatz vòstra adreça de corrièl çai-jos, vos mandarem las instruccions per reïnicializar vòstre senhal."
register:
- page_title: 'Se crear un compte'
+ page_title: 'Crear un compte'
go_to_account: 'Anar a vòstre compte'
menu:
social: 'Social'
powered_by: 'propulsat per'
about: 'A prepaus'
- stats: "Dempuèi %user_creation% avètz legit %nb_archives% articles. Es a l'entorn de %per_day% per jorn !"
+ stats: "Dempuèi %user_creation% avètz legit %nb_archives% articles. Es a l'entorn de %per_day% per jorn !"
config:
page_title: 'Configuracion'
language_label: 'Lenga'
reading_speed:
label: 'Velocitat de lectura'
- help_message: 'Podètz utilizar una aisina en linha per estimar vòstra velocitat de lectura :'
+ help_message: 'Podètz utilizar una aisina en linha per estimar vòstra velocitat de lectura :'
100_word: "Legissi a l'entorn de 100 mots per minuta"
200_word: "Legissi a l'entorn de 200 mots per minuta"
300_word: "Legissi a l'entorn de 300 mots per minuta"
400_word: "Legissi a l'entorn de 400 mots per minuta"
action_mark_as_read:
- label: 'Ont volètz èsser menat aprèp aver marcat un article coma legit ?'
- redirect_homepage: "A la pagina d'acuèlh"
+ label: 'Ont volètz èsser menat aprèp aver marcat un article coma legit ?'
+ redirect_homepage: "A la pagina d’acuèlh"
redirect_current_page: 'A la pagina actuala'
- pocket_consumer_key_label: Clau d'autentificacion Pocket per importar las donadas
+ pocket_consumer_key_label: Clau d’autentificacion Pocket per importar las donadas
android_configuration: Configuratz vòstra aplicacion Android
android_instruction: "Tocatz aquí per garnir las informacions de l'aplicacion Android"
help_theme: "wallabag es personalizable. Podètz causir vòstre tèma preferit aquí."
delete:
title: Suprimir mon compte (Mèfi zòna perilhosa)
description: Se confirmatz la supression de vòstre compte, TOTES vòstres articles, TOTAS vòstras etiquetas, TOTAS vòstras anotacions e vòstre compte seràn suprimits per totjorn. E aquò es IRREVERSIBLE. Puèi seretz desconnectat.
- confirm: Sètz vertadièrament segur ? (ES IRREVERSIBLE)
+ confirm: Sètz vertadièrament segur ? (AQUÒ ES IRREVERSIBLE)
button: Suprimir mon compte
reset:
title: Zòna de reïnicializacion (Mèfi zòna perilhosa)
tags: Levar TOTAS las etiquetas
entries: Levar TOTES los articles
archived: Levar TOTES los articles archivats
- confirm: Sètz vertadièrament segur ? (ES IRREVERSIBLE)
+ confirm: Sètz vertadièrament segur ? (AQUÒ ES IRREVERSIBLE)
form_password:
description: "Podètz cambiar vòstre senhal aquí. Vòstre senhal deu èsser long d'almens 8 caractèrs."
old_password_label: 'Senhal actual'
tags_label: 'Etiquetas'
faq:
title: 'FAQ'
- tagging_rules_definition_title: "Qué significa las règlas d'etiquetas automaticas ?"
+ tagging_rules_definition_title: "Qué significa las règlas d'etiquetas automaticas ?"
tagging_rules_definition_description: "Son de règlas utilizadas per wallabad per classar automaticament vòstres novèls articles.<br />Cada còp qu'un novèl article es apondut, totas las règlas d'etiquetas automaticas seràn utilizadas per ajustar d'etiquetas qu'avètz configuradas, en vos esparnhant l'esfòrç de classificar vòstres articles manualament."
- how_to_use_them_title: 'Cossí las utilizar ?'
- how_to_use_them_description: "Imaginem que volètz atribuir als novèls article l'etiqueta « <i>lectura corta</i> » quand lo temps per legir es inferior a 3 minutas.<br />Dins aquel cas, deuriatz metre « readingTime <= 3 » dins lo camp <i>Règla</i> e « <i>lectura corta</i> » dins lo camp <i>Etiqueta</i>.<br />Mai d'una etiquetas pòdon èsser apondudas simultanèament ne las separant amb de virgulas : « <i>lectura corta, per ligir</i> »<br />De règlas complèxas pòdon èsser creadas en emplegant d'operators predefinits : se « <i>readingTime >= 5 AND domainName = \"github.com\"</i> » alara atribuir las etiquetas « <i>lectura longa, github </i> »"
- variables_available_title: 'Quinas variablas e operators pòdi utilizar per escriure de règlas ?'
- variables_available_description: "Las variablas e operators seguents pòdon èsser utilizats per escriure de règlas d'etiquetas automaticas :"
+ how_to_use_them_title: 'Cossí las utilizar ?'
+ how_to_use_them_description: "Imaginem que volètz atribuir als novèls article l'etiqueta « <i>lectura corta</i> » quand lo temps per legir es inferior a 3 minutas.<br />Dins aquel cas, deuriatz metre « readingTime <= 3 » dins lo camp <i>Règla</i> e « <i>lectura corta</i> » dins lo camp <i>Etiqueta</i>.<br />Mai d'una etiquetas pòdon èsser apondudas simultanèament ne las separant amb de virgulas : « <i>lectura corta, per ligir</i> »<br />De règlas complèxas pòdon èsser creadas n'emplegant d'operators predefinits : se « <i>readingTime >= 5 AND domainName = \"github.com\"</i> » alara atribuir las etiquetas « <i>lectura longa, github </i> »"
+ variables_available_title: 'Quinas variablas e operators pòdi utilizar per escriure de règlas ?'
+ variables_available_description: "Las variablas e operators seguents pòdon èsser utilizats per escriure de règlas d'etiquetas automaticas : "
meaning: 'Significacion'
variable_description:
label: 'Variabla'
not_equal_to: 'Diferent de…'
or: "Una règla O l'autra"
and: "Una règla E l'autra"
- matches: 'Teste se un <i>subjècte</i> correspond a una <i>recèrca</i> (non sensibla a la cassa).<br />Exemple : <code>title matches \"football\"</code>'
- notmatches: 'Teste se <i>subjècte</i> correspond pas a una <i>recèrca</i> (sensibla a la cassa).<br />Example : <code>title notmatches "football"</code>'
+ matches: 'Teste se un <i>subjècte</i> correspond a una <i>recèrca</i> (non sensibla a la cassa).<br />Exemple : <code>title matches \"football\"</code>'
+ notmatches: 'Teste se <i>subjècte</i> correspond pas a una <i>recèrca</i> (sensibla a la cassa).<br />Example : <code>title notmatches "football"</code>'
entry:
page_titles:
starred: 'Articles favorits'
archived: 'Articles legits'
filtered: 'Articles filtrats'
- filtered_tags: 'Articles filtrats per etiquetas :'
- filtered_search: 'Articles filtrats per recèrca :'
+ filtered_tags: 'Articles filtrats per etiquetas :'
+ filtered_search: 'Articles filtrats per recèrca :'
untagged: 'Articles sens etiqueta'
all: 'Totes los articles'
list:
number_on_the_page: "{0} I a pas cap d'article.|{1} I a un article.|]1,Inf[ I a %count% articles."
reading_time: 'durada de lectura'
- reading_time_minutes: 'durada de lectura : %readingTime% min'
- reading_time_less_one_minute: 'durada de lectura : < 1 min'
+ reading_time_minutes: 'durada de lectura : %readingTime% min'
+ reading_time_less_one_minute: 'durada de lectura : < 1 min'
number_of_tags: '{1}e una autra etiqueta|]1,Inf[e %count% autras etiquetas'
reading_time_minutes_short: '%readingTime% min'
reading_time_less_one_minute_short: '< 1 min'
export: 'Exportar'
print: 'Imprimir'
problem:
- label: 'Un problèma ?'
- description: "Marca mal la presentacion d'aqueste article ?"
+ label: 'Un problèma ?'
+ description: "Marca mal la presentacion d'aqueste article ?"
edit_title: 'Modificar lo títol'
original_article: 'original'
annotations_on_the_entry: "{0} Pas cap d'anotacion|{1} Una anotacion|]1,Inf[ %count% anotacions"
form_new:
url_label: Url
search:
- placeholder: 'Qué cercatz ?'
+ placeholder: 'Qué cercatz ?'
edit:
page_title: 'Modificar un article'
title_label: 'Títol'
public:
shared_by_wallabag: "Aqueste article es estat partejat per <a href='%wallabag_instance%'>wallabag</a>"
confirm:
- delete: "Sètz segur de voler suprimir aqueste article ?"
- delete_tag: "Sètz segur de voler levar aquesta etiqueta de l'article ?"
+ delete: "Sètz segur de voler suprimir aqueste article ?"
+ delete_tag: "Sètz segur de voler levar aquesta etiqueta de l'article ?"
about:
page_title: 'A prepaus'
bug_reports: 'Rapòrt de bugs'
support: "<a href=\"https://github.com/wallabag/wallabag/issues\">sur GitHub</a>"
helping:
- description: 'wallabag es a gratuit e opensource. Nos podètz ajudar :'
- by_contributing: 'en ajudant lo projècte :'
+ description: 'wallabag es a gratuit e opensource. Nos podètz ajudar : '
+ by_contributing: 'en participant lo projècte : '
by_contributing_2: 'un bilhet recensa totes nòstres besonhs'
by_paypal: 'via Paypal'
contributors:
description: "Mercés als contributors de l'aplicacion web de wallabag"
third_party:
- description: 'Aquí la lista de las dependéncias utilizadas dins wallabag (e lor licéncia) :'
+ description: 'Aquí la lista de las dependéncias utilizadas dins wallabag (e lor licéncia) :'
package: 'Dependéncia'
license: 'Licéncia'
howto:
page_title: 'Ajuda'
- page_description: "I a mai d'un biais d'enregistrar un article :"
+ page_description: "I a mai d'un biais d'enregistrar un article :"
tab_menu:
add_link: "Ajustar un ligam"
shortcuts: "Utilizar d'acorchis"
top_menu:
browser_addons: 'Extensions de navigator'
mobile_apps: 'Aplicacions mobil'
- bookmarklet: 'Bookmarklet'
+ bookmarklet: 'Marcapaginas'
form:
description: 'Gràcias a aqueste formulari'
browser_addons:
ios: 'sus iTunes Store'
windows: 'sus Microsoft Store'
bookmarklet:
- description: 'Lisatz-depausatz aqueste ligam dins vòstra barra de favorits :'
+ description: 'Lisatz-depausatz aqueste ligam dins vòstra barra de favorits :'
shortcuts:
page_description: Aquí son los acorchis disponibles dins wallabag.
shortcut: Acorchis
go_config: Anar a la config
go_import: Anar per importar
go_developers: Anar al canton desvolopaires
- go_howto: Anar a l'ajuda (aquesta quita pagina !)
+ go_howto: Anar a l'ajuda (aquesta quita pagina !)
go_logout: Desconnexion
list_title: Acorchis disponibles dins las paginas de lista
search: Afichar lo formulari de recèrca
page_title: 'Per ben començar'
more: 'Mai…'
intro:
- title: 'Benvenguda sus wallabag !'
+ title: 'Benvenguda sus wallabag !'
paragraph_1: "Anem vos guidar per far lo torn de la proprietat e vos presentar unas foncionalitats que vos poirián interessar per vos apropriar aquesta aisina."
- paragraph_2: 'Seguètz-nos !'
+ paragraph_2: 'Seguètz-nos !'
configure:
title: "Configuratz l'aplicacion"
description: "Per fin d'aver una aplicacion que vos va ben, anatz veire la configuracion de wallabag."
tagging_rules: 'Escrivètz de règlas per classar automaticament vòstres articles'
admin:
title: 'Administracion'
- description: "En qualitat d'adminitrastor sus wallabag, avètz de privilègis que vos permeton de :"
+ description: "En qualitat d'adminitrastor sus wallabag, avètz de privilègis que vos permeton de :"
new_user: 'Crear un novèl utilizaire'
analytics: 'Configurar las estadisticas'
sharing: 'Activar de paramètres de partatge'
title: 'Primièrs passes'
description: "Ara wallabag es ben configurat, es lo moment d'archivar lo web. Podètz clicar sul signe + a man drecha amont per ajustar un ligam."
new_article: 'Ajustatz vòstre primièr article'
- unread_articles: 'E recaptatz-lo !'
+ unread_articles: 'E recaptatz-lo !'
migrate:
title: 'Migrar dempuèi un servici existent'
- description: "Sètz un ancian utilizaire d'un servici existent ? Vos ajudarem a trapar vòstras donadas sus wallabag."
+ description: "Sètz un ancian utilizaire d'un servici existent ? Vos ajudarem a trapar vòstras donadas sus wallabag."
pocket: 'Migrar dempuèi Pocket'
wallabag_v1: 'Migrar dempuèi wallabag v1'
wallabag_v2: 'Migrar dempuèi wallabag v2'
instapaper: 'Migrar dempuèi Instapaper'
developer:
title: 'Pels desvolopaires'
- description: 'Avèm tanben pensat als desvolopaires : Docker, API, traduccions, etc.'
+ description: 'Avèm tanben pensat als desvolopaires : Docker, API, traduccions, etc.'
create_application: 'Crear vòstra aplicacion tèrça'
use_docker: 'Utilizar Docker per installar wallabag'
docs:
annotate: 'Anotar vòstre article'
export: 'Convertissètz vòstres articles en ePub o en PDF'
search_filters: "Aprenètz a utilizar lo motor de recèrca e los filtres per retrobar l'article que vos interèssa"
- fetching_errors: "Qué far se mon article es pas recuperat coma cal ?"
- all_docs: "E encara plen de causas mai !"
+ fetching_errors: "Qué far se mon article es pas recuperat coma cal ?"
+ all_docs: "E encara plen de causas mai !"
support:
title: 'Assisténcia'
description: 'Perque avètz benlèu besonh de nos pausar una question, sèm disponibles per vosautres.'
page_title: 'Importar'
page_description: "Benvenguda sus l'aisina de migracion de wallabag. Causissètz çai-jos lo servici dempuèi lo qual volètz migrar."
action:
- import_contents: 'Importar los contenguts'
+ import_contents: 'Importar lo contengut'
form:
- mark_as_read_title: 'Tot marcar coma legit ?'
- mark_as_read_label: 'Marcar tot los contenguts importats coma legits'
+ mark_as_read_title: 'O marcar tot coma legit ?'
+ mark_as_read_label: 'Marcar tot lo contengut importats coma legit'
file_label: 'Fichièr'
save_label: 'Importar lo fichièr'
pocket:
description: "Aquesta aisina importarà totas vòstres articles de Readability. Sus la pagina de l'aisina (https://www.readability.com/tools/), clicatz sus \"Export your data\" dins la seccion \"Data Export\". Recebretz un corrièl per telecargar un json (qu'acaba pas amb un .json de fach)."
how_to: "Mercés de seleccionar vòstre Readability fichièr e de clicar sul boton dejós per lo telecargar e l'importar."
worker:
- enabled: "L'importacion se fa de manièra asincròna. Un còp l'importacion lançada, una aisina extèrna s'ocuparà dels messatges un per un. Lo servici actual es : "
+ enabled: "L'importacion se fa de manièra asincròna. Un còp l'importacion lançada, una aisina extèrna s'ocuparà dels articles un per un. Lo servici actual es : "
download_images_warning: "Avètz activat lo telecargament de los imatges de vòstres articles. Combinat amb l'importacion classica, aquò pòt tardar un long moment (o benlèu fracassar). <strong>Recomandem fòrtament</strong> l'activacion de l'importacion asincròna per evitar las errors."
firefox:
page_title: 'Importar > Firefox'
how_to: "Mercés de causir lo fichièr de salvagarda e de clicar sul boton dejós per l'importar. Notatz que lo tractament pòt durar un moment ja que totes los articles an d'èsser recuperats."
chrome:
page_title: 'Importar > Chrome'
- description: "Aquesta aisina importarà totas vòstres favorits de Chrome. L'emplaçament del fichièr depend de vòstre sistèma operatiu : <ul><li>Sus Linux, anatz al dorsièr <code>~/.config/chromium/Default/</code></li><li>Sus Windows, deu èsser dins <code>%LOCALAPPDATA%\\Google\\Chrome\\User Data\\Default</code></li><li>sus OS X, deu èsser dins <code>~/Library/Application Support/Google/Chrome/Default/Bookmarks</code></li></ul>Un còp enlà, copiatz lo fichièr de favorits dins un endrech que volètz.<em><br>Notatz que s'avètz Chromium al lòc de Chrome, vos cal cambiar lo camin segon aquesta situacion.</em></p>"
+ description: "Aquesta aisina importarà totas vòstres favorits de Chrome. L'emplaçament del fichièr depend de vòstre sistèma operatiu : <ul><li>Sus Linux, anatz al dorsièr <code>~/.config/chromium/Default/</code></li><li>Sus Windows, deu èsser dins <code>%LOCALAPPDATA%\\Google\\Chrome\\User Data\\Default</code></li><li>sus OS X, deu èsser dins <code>~/Library/Application Support/Google/Chrome/Default/Bookmarks</code></li></ul>Un còp enlà, copiatz lo fichièr de favorits dins un endrech que volètz.<em><br>Notatz que s'avètz Chromium al lòc de Chrome, vos cal cambiar lo camin segon aquesta situacion.</em></p>"
how_to: "Mercés de causir lo fichièr de salvagarda e de clicar sul boton dejós per l'importar. Notatz que lo tractament pòt durar un moment ja que totes los articles an d'èsser recuperats."
instapaper:
page_title: 'Importar > Instapaper'
developer:
page_title: 'Gestion dels clients API'
- welcome_message: "Benvenguda sus l'API de wallabag"
+ welcome_message: "Vos desirem la benvenguda sus l'API de wallabag"
documentation: 'Documentacion'
how_to_first_app: 'Cossí crear vòstra primièra aplicacion'
full_documentation: "Veire la documentacion completa de l'API"
field_grant_types: 'Tipe de privilègi acordat'
no_client: 'Pas cap de client pel moment.'
remove:
- warn_message_1: 'Avètz la possibilitat de suprimir un client. Aquesta accion es IRREVERSIBLA !'
+ warn_message_1: 'Avètz la possibilitat de suprimir un client. Aquesta accion es IRREVERSIBLA !'
warn_message_2: "Se suprimissètz un client, totas las aplicacions que l'emplegan foncionaràn pas mai amb vòstre compte wallabag."
action: 'Suprimir aqueste client'
client:
description:
paragraph_1: "Las comandas seguentas utilizan la <a href=\"https://github.com/jkbrzt/httpie\">bibliotèca HTTPie</a>. Asseguratz-vos que siasqueòu installadas abans de l'utilizar."
paragraph_2: "Vos cal un geton per escambiar entre vòstra aplicacion e l'API de wallabar."
- paragraph_3: 'Per crear un geton, vos cal crear <a href=\"%link%\">crear un novèl client</a>.'
- paragraph_4: 'Ara creatz un geton (remplaçar client_id, client_secret, username e password amb las bonas valors) :'
- paragraph_5: "L'API vos tornarà una responsa coma aquò :"
- paragraph_6: "L'access_token deu èsser emplegat per far una requèsta a l'API. Per exemple :"
+ paragraph_3: 'Per crear un geton, vos cal <a href=\"%link%\">crear un novèl client</a>.'
+ paragraph_4: 'Ara creatz un geton (remplaçar client_id, client_secret, username e password amb las bonas valors) :'
+ paragraph_5: "L'API vos tornarà una responsa coma aquò :"
+ paragraph_6: "L'access_token deu èsser emplegat per far una requèsta a l'API. Per exemple :"
paragraph_7: "Aquesta requèsta tornarà totes los articles de l'utilizaire."
paragraph_8: "Se volètz totas las adreças d'accès de l'API, donatz un còp d’uèlh <a href=\"%link%\">a la documentacion de l'API</a>."
back: 'Retorn'
twofactor_label: 'Autentificacion doble-factor'
save: 'Enregistrar'
delete: 'Suprimir'
- delete_confirm: 'Sètz segur ?'
+ delete_confirm: 'Sètz segur ?'
back_to_list: 'Tornar a la lista'
search:
placeholder: "Filtrar per nom d'utilizaire o corrièl"
password_label: 'Senhal'
save: 'Enregistrar'
delete: 'Suprimir'
- delete_confirm: 'Sètz segur ?'
+ delete_confirm: 'Sètz segur ?'
back_to_list: 'Tornar a la lista'
error:
failed: "L'importacion a fracassat, mercés de tornar ensajar."
failed_on_file: "Error en tractar l'impòrt. Mercés de verificar vòstre fichièr."
summary: "Rapòrt d'impòrt: %imported% importats, %skipped% ja presents."
- summary_with_queue: "Rapòrt d'impòrt : %queued% en espèra de tractament."
+ summary_with_queue: "Rapòrt d'impòrt : %queued% en espèra de tractament."
error:
redis_enabled_not_installed: "Redis es capable d'importar de manièra asincròna mai sembla que <u>podèm pas nos conectar amb el</u>. Mercés de verificar la configuracion de Redis."
rabbit_enabled_not_installed: "RabbitMQ es capable d'importar de manièra asincròna mai sembla que <u>podèm pas nos conectar amb el</u>. Mercés de verificar la configuracion de RabbitMQ."
validator:
- password_must_match: 'Cal que los dos senhals siasquen los meteisses'
+ password_must_match: 'Cal que los dos senhals correspondan'
password_too_short: 'Lo senhal deu aver almens 8 caractèrs'
password_wrong_value: 'Vòstre senhal actual es pas bon'
item_per_page_too_high: "Aquò li agradarà pas a l'aplicacion"
rss_limit_too_high: "Aquò li agradarà pas a l'aplicacion"
- # quote_length_too_high: 'The quote is too long. It should have {{ limit }} characters or less.'
+ quote_length_too_high: 'Aquesta citacion es tròpa longa. Cal que faga {{ limit }} caractèrs o mens.'
<!-- Export -->
<aside id="download-form">
- {% set currentTag = '' %}
+ {% set currentTag = null %}
{% if tag is defined %}
{% set currentTag = tag %}
{% endif %}
<!-- Export -->
<div id="export" class="side-nav right-aligned">
- {% set currentTag = '' %}
+ {% set currentTag = null %}
{% if tag is defined %}
{% set currentTag = tag.slug %}
{% endif %}
body:
hello: "Bonjorn %user%,"
first_para: "Estant qu'avètz activat l'autentificacion en dos temps sus vòstre compte wallabag e que venètz de vos connectar dempuèi un novèl periferic (ordinador, mobil, etc.) vos mandem un còdi per validar la connexion."
- second_para: "Vaquí lo còdi per dintrar :"
- support: "S'avètz un problèma de connexion, dobtetz pas a contactar l'assisténcia : "
+ second_para: "Vaquí lo còdi per dintrar : "
+ support: "S'avètz un problèma de connexion, dobtetz pas a contactar l'assisténcia : "
signature: "La còla de wallabag"
$this->assertSame('http://www.lemonde.fr/pixels/article/2015/03/28/plongee-dans-l-univers-d-ingress-le-jeu-de-google-aux-frontieres-du-reel_4601155_4408996.html', $content['url']);
$this->assertSame(0, $content['is_archived']);
$this->assertSame(0, $content['is_starred']);
+ $this->assertNull($content['starred_at']);
$this->assertSame('New title for my article', $content['title']);
$this->assertSame(1, $content['user_id']);
$this->assertCount(2, $content['tags']);
public function testPostArchivedAndStarredEntry()
{
+ $now = new \DateTime();
$this->client->request('POST', '/api/entries.json', [
'url' => 'http://www.lemonde.fr/idees/article/2016/02/08/preserver-la-liberte-d-expression-sur-les-reseaux-sociaux_4861503_3232.html',
'archive' => '1',
$this->assertSame('http://www.lemonde.fr/idees/article/2016/02/08/preserver-la-liberte-d-expression-sur-les-reseaux-sociaux_4861503_3232.html', $content['url']);
$this->assertSame(1, $content['is_archived']);
$this->assertSame(1, $content['is_starred']);
+ $this->assertGreaterThanOrEqual($now->getTimestamp(), (new \DateTime($content['starred_at']))->getTimestamp());
$this->assertSame(1, $content['user_id']);
}
public function testSaveIsStarredAfterPatch()
{
+ $now = new \DateTime();
$entry = $this->client->getContainer()
->get('doctrine.orm.entity_manager')
->getRepository('WallabagCoreBundle:Entry')
$content = json_decode($this->client->getResponse()->getContent(), true);
$this->assertSame(1, $content['is_starred']);
+ $this->assertGreaterThanOrEqual($now->getTimestamp(), (new \DateTime($content['starred_at']))->getTimestamp());
}
public function dataForEntriesExistWithUrl()
class TagControllerTest extends WallabagCoreTestCase
{
public $tagName = 'opensource';
+ public $caseTagName = 'OpenSource';
public function testList()
{
$form = $crawler->filter('form[name=tag]')->form();
$data = [
- 'tag[label]' => $this->tagName,
+ 'tag[label]' => $this->caseTagName,
];
$client->submit($form, $data);
// be sure to reload the entry
$entry = $this->getEntityManager()->getRepository(Entry::class)->find($entry->getId());
$this->assertCount(1, $entry->getTags());
+ $this->assertContains($this->tagName, $entry->getTags());
// tag already exists and already assigned
$client->submit($form, $data);
$form = $crawler->filter('form[name=tag]')->form();
$data = [
- 'tag[label]' => 'foo2, bar2',
+ 'tag[label]' => 'foo2, Bar2',
];
$client->submit($form, $data);
$tags = $content->getTags();
$this->assertContains('foot', $tags, 'It includes the "foot" tag');
$this->assertContains('varnish', $tags, 'It includes the "varnish" tag');
- $this->assertContains('PHP', $tags, 'It includes the "PHP" tag');
+ $this->assertContains('php', $tags, 'It includes the "php" tag');
$this->assertSame(3, count($tags));
$this->assertInstanceOf(\DateTime::class, $content->getCreatedAt());
$tags = $content->getTags();
$this->assertContains('foot', $tags, 'It includes the "foot" tag');
- $this->assertContains('Framabag', $tags, 'It includes the "Framabag" tag');
+ $this->assertContains('framabag', $tags, 'It includes the "framabag" tag');
$this->assertSame(2, count($tags));
$this->assertInstanceOf(\DateTime::class, $content->getCreatedAt());