1
0
mirror of https://github.com/chylex/Nextcloud-News.git synced 2025-04-09 10:15:44 +02:00

Merge branch 'master' into filesystem

This commit is contained in:
Robin Appelman 2012-11-15 00:38:46 +01:00
commit d31f396111
49 changed files with 369 additions and 75 deletions

View File

@ -10,32 +10,50 @@
*
*/
// Check if we are a user
OCP\JSON::checkLoggedIn();
OCP\JSON::checkAppEnabled('news');
OCP\JSON::callCheck();
session_write_close();
global $l;
$l = OC_L10N::get('news');
function bailOut($msg) {
OCP\JSON::error(array('data' => array('message' => $msg)));
global $eventSource;
$eventSource->send('error', $msg);
$eventSource->close();
OCP\Util::writeLog('news','ajax/importopml.php: '.$msg, OCP\Util::ERROR);
exit();
}
if (isset($_POST['path'])) {
$raw = file_get_contents($_POST['path']);
}
elseif (isset($_FILES['file'])) {
$raw = file_get_contents($_FILES['file']['tmp_name']);
}
else {
bailOut($l->t('No file was submitted.'));
}
global $eventSource;
$eventSource=new OC_EventSource();
require_once 'news/opmlparser.php';
$source = isset( $_REQUEST['source'] ) ? $_REQUEST['source'] : '';
$path = isset( $_REQUEST['path'] ) ? $_REQUEST['path'] : '';
if($path == '') {
bailOut($l->t('Empty filename'));
exit();
}
if($source == 'cloud') {
$raw = file_get_contents($path);
} elseif ($source == 'local') {
$storage = \OCP\Files::getStorage('news');
$raw = $storage->file_get_contents($path);
} else {
bailOut($l->t('No source argument passed'));
}
if ($raw == false) {
bailOut($l->t('Error while reading file'));
}
try {
$parsed = OPMLParser::parse($raw);
} catch (Exception $e) {
@ -48,17 +66,30 @@ if ($parsed == null) {
$data = $parsed->getData();
function importFeed($feedurl, $folderid) {
function importFeed($feedurl, $folderid, $feedtitle) {
global $eventSource;
global $l;
$feedmapper = new OCA\News\FeedMapper();
$feedid = $feedmapper->findIdFromUrl($feedurl);
$l = OC_L10N::get('news');
if ($feedid === null) {
$feed = OCA\News\Utils::slimFetch($feedurl);
if ($feed !== null) {
$feed->setTitle($feedtitle); //we want the title of the feed to be the one from the opml file
$feedid = $feedmapper->save($feed, $folderid);
$itemmapper = new OCA\News\ItemMapper(OCP\USER::getUser());
$unreadItemsCount = $itemmapper->countAllStatus($feedid, OCA\News\StatusFlag::UNREAD);
$tmpl_listfeed = new OCP\Template("news", "part.listfeed");
$tmpl_listfeed->assign('feed', $feed);
$tmpl_listfeed->assign('unreadItemsCount', $unreadItemsCount);
$listfeed = $tmpl_listfeed->fetchPage();
$eventSource->send('progress', array('data' => array('type'=>'feed', 'folderid'=>$folderid, 'listfeed'=>$listfeed)));
}
} else {
OCP\Util::writeLog('news','ajax/importopml.php: This feed is already here: '. $feedurl, OCP\Util::WARN);
@ -74,6 +105,10 @@ function importFeed($feedurl, $folderid) {
}
function importFolder($name, $parentid) {
global $eventSource;
global $l;
$foldermapper = new OCA\News\FolderMapper();
if($parentid != 0) {
@ -84,8 +119,12 @@ function importFolder($name, $parentid) {
$folderid = $foldermapper->save($folder);
$l = OC_L10N::get('news');
$tmpl = new OCP\Template("news" , "part.listfolder");
$tmpl->assign("folder", $folder);
$listfolder = $tmpl->fetchPage();
$eventSource->send('progress', array('data' => array('type'=>'folder', 'listfolder'=>$listfolder)));
if(!$folderid) {
OCP\Util::writeLog('news','ajax/importopml.php: Error adding folder' . $name, OCP\Util::ERROR);
return null;
@ -99,7 +138,8 @@ function importList($data, $parentid) {
foreach($data as $collection) {
if ($collection instanceOf OCA\News\Feed) {
$feedurl = $collection->getUrl();
if (importFeed($feedurl, $parentid)) {
$feedtitle = $collection->getTitle();
if (importFeed($feedurl, $parentid, $feedtitle)) {
$countsuccess++;
}
}
@ -119,5 +159,6 @@ function importList($data, $parentid) {
$countsuccess = importList($data, 0);
OCP\JSON::success(array('data' => array('title'=>$parsed->getTitle(), 'count'=>$parsed->getCount(),
$eventSource->send('success', array('data' => array('title'=>$parsed->getTitle(), 'count'=>$parsed->getCount(),
'countsuccess'=>$countsuccess)));
$eventSource->close();

View File

@ -41,5 +41,5 @@ if(!file_exists($localpath)) {
if (file_put_contents($tmpfname, file_get_contents($localpath))) {
OCP\JSON::success(array('data' => array('tmp'=>$tmpfname, 'path'=>$localpath)));
} else {
bailOut(bailOut('Couldn\'t save temporary image: '.$tmpfname));
bailOut($l->t('Couldn\'t save temporary image: ').$tmpfname);
}

42
ajax/uploadopml.php Normal file
View File

@ -0,0 +1,42 @@
<?php
/**
* ownCloud - News app
*
* @author Alessandro Cosentino
* Copyright (c) 2012 - Alessandro Cosentino <cosenal@gmail.com>
*
* This file is licensed under the Affero General Public License version 3 or later.
* See the COPYING-README file
*
*/
// Check if we are a user
OCP\JSON::checkLoggedIn();
OCP\JSON::checkAppEnabled('news');
OCP\JSON::callCheck();
$l = OC_L10N::get('news');
function bailOut($msg) {
OCP\JSON::error(array('data' => array('message' => $msg)));
OCP\Util::writeLog('news','ajax/uploadopml.php: '.$msg, OCP\Util::ERROR);
exit();
}
if (isset($_POST['path'])) {
OCP\JSON::success(array('data' => array('source'=> 'cloud', 'path' => $_POST['path'])));
}
elseif (isset($_FILES['file'])) {
$storage = \OCP\Files::getStorage('news');
$filename = 'opmlfile.xml';
if ($storage->fromTmpFile($_FILES['file']['tmp_name'], $filename)) {
OCP\JSON::success(array('data' => array('source'=> 'local', 'path' => $filename)));
} else {
bailOut('Could not create the temporary file');
}
}
else {
bailOut('No file loaded');
}

View File

@ -41,7 +41,6 @@ class NewsController extends Controller {
$this->addScript('news');
$this->addScript('menu');
$this->addScript('items');
$this->add3rdPartyScript('jquery.timeago');
$this->addStyle('news');
$this->addStyle('settings');

View File

@ -632,7 +632,7 @@ var News = News || {};
self._toggleKeepUnread();
});
this._$html.find('time.timeago').timeago();
//this._$html.find('time.timeago').timeago();
};
/**

View File

@ -43,13 +43,26 @@ News.Settings={
}
param = {
url: OC.filePath('news', 'ajax', 'importopml.php'),
url: OC.filePath('news', 'ajax', 'uploadopml.php'),
data: ajaxData,
type: 'POST',
success: function(jsondata){
if (jsondata.status == 'success') {
$('#notification').html(t('files', '{n_success} out of {n_total} feeds imported successfully!',
{n_success: jsondata.data.countsuccess, n_total: jsondata.data.count}));
var eventSource=new OC.EventSource(OC.filePath('news','ajax','importopml.php'),{source:jsondata.data.source, path:jsondata.data.path});
eventSource.listen('progress',function(progress){
if (progress.data.type == 'feed') {
News.Objects.Menu.addNode(progress.data.folderid, progress.data.listfeed);
} else if (progress.data.type == 'folder') {
News.Objects.Menu.addNode(0, progress.data.listfolder);
}
});
eventSource.listen('success',function(data){
$('#notification').html(t('news', 'Importing done'));
});
eventSource.listen('error',function(error){
$('#notification').fadeOut('400');
OC.dialogs.alert(error, t('news', 'Error while importing feeds.'));
});
}
else {
OC.dialogs.alert(jsondata.data.message, t('news', 'Error'));

View File

@ -9,12 +9,15 @@
"Error removing feed." => "Error en eliminar la font.",
"Error removing folder." => "Error en eliminar la carpeta.",
"Error updating feeds." => "Error en actualitzar les fonts.",
"No file was submitted." => "No s'ha enviat cap fitxer",
"Empty filename" => "Elimina el nom del fitxer",
"No source argument passed" => "No heu passat cap argument origen",
"Error while reading file" => "Error en llegir el fitxer",
"An error occurred while parsing the file." => "S'ha produït un error en processar el fitxer.",
"Feed loaded!" => "S'ha carregat la font!",
"Error moving feed into folder." => "Error en moure la font dins la carpeta.",
"No file path was submitted." => "No heu enviat cap camí al fitxer",
"File doesn't exist:" => "El fitxer no existeix:",
"Couldn't save temporary image: " => "No s'ha pogut desar la imatge temporal: ",
"Error setting all items as read." => "Error en establir tots els elements com a llegits.",
"Error marking item as read." => "Error en marcar l'element com a llegit.",
"Error updating feed." => "rror en actualitzar la font.",
@ -38,6 +41,10 @@
"Error while parsing the feed" => "Error en processar la font",
"Fatal Error" => "Error fatal",
"No files selected." => "No hi ha fitxers seleccionats",
"Importing OPML file..." => "Important el fitxer OPML...",
"Not a valid type" => "No és un tipus vàlid",
"Importing done" => "La importació ha acabat",
"Error while importing feeds." => "Error en importar les fonts.",
"Select file" => "Selecciona fitxer",
"no title" => "sense títol",
"no name" => "sense nom",

View File

@ -9,12 +9,15 @@
"Error removing feed." => "Chyba při odstraňování příspěvku.",
"Error removing folder." => "Chyba při odstraňování složky.",
"Error updating feeds." => "Chyba při aktualizaci kanálů.",
"No file was submitted." => "Nebyl odeslán žádný soubor.",
"Empty filename" => "Prázdný název souboru",
"No source argument passed" => "Nepředán žádný parametr se zdrojem",
"Error while reading file" => "Chyba při čtení souboru",
"An error occurred while parsing the file." => "Nastala chyba při zpracování souboru.",
"Feed loaded!" => "Kanály načteny.",
"Error moving feed into folder." => "Chyba při přesunu kanálu do adresáře",
"No file path was submitted." => "Neuvedena cesta k souboru.",
"File doesn't exist:" => "Soubor neexistuje:",
"Couldn't save temporary image: " => "Nelze uložit dočasný obrázek: ",
"Error setting all items as read." => "Chyba při označování všech položek jako přečtené.",
"Error marking item as read." => "Chyba při nastavení položky jako přečtené.",
"Error updating feed." => "Chyba při aktualizaci kanálu.",
@ -40,7 +43,8 @@
"No files selected." => "Nebyly vybrány žádné soubory.",
"Importing OPML file..." => "Importuji soubor OPML...",
"Not a valid type" => "Neplatný typ",
"{n_success} out of {n_total} feeds imported successfully!" => "{n_success} z {n_total} kanálů importováno úspěšně.",
"Importing done" => "Import dokončen",
"Error while importing feeds." => "Chyba při importování kanálů",
"Select file" => "Vybrat soubor",
"no title" => "bez názvu",
"no name" => "bez názvu",

View File

@ -14,6 +14,7 @@
"Error moving feed into folder." => "Fejl ved flytning af feed til mappe.",
"No file path was submitted." => "Der var ingen sti til filen i forespørgslen.",
"File doesn't exist:" => "Filen eksisterer ikke:",
"Couldn't save temporary image: " => "Kunne ikke gemme midlertidigt billede: ",
"Error setting all items as read." => "Kunne ikke markére alle artikler som læst.",
"Error marking item as read." => "Kunne ikke markére artikel som læst.",
"Error updating feed." => "Der opstod en fejl under opdateringen af feedet.",

View File

@ -9,12 +9,15 @@
"Error removing feed." => "Fehler beim Entfernen des Feeds.",
"Error removing folder." => "Fehler beim Entfernen des Ordners.",
"Error updating feeds." => "Fehler bei der Aktualisierung der Feeds.",
"No file was submitted." => "Es wurde keine Datei übertragen.",
"Empty filename" => "Leerer Dateiname",
"No source argument passed" => "Es wurde kein Quell-Argument übergeben.",
"Error while reading file" => "Fehler beim Lesen der Datei",
"An error occurred while parsing the file." => "Es ist ein Fehler beim Einlesen der Datei aufgetreten.",
"Feed loaded!" => "Feed geladen!",
"Error moving feed into folder." => "Fehler beim Verschieben des Feeds in den Ordner.",
"No file path was submitted." => "Es wurde kein Dateipfad übermittelt.",
"File doesn't exist:" => "Die Datei existiert nicht:",
"Couldn't save temporary image: " => "Das temporäre Bild konnte nicht gespeichert werden:",
"Error setting all items as read." => "Der Versuch, alle Artikel als gelesen zu markieren, ist fehlgeschlagen.",
"Error marking item as read." => "Der Versuch, den Artikel als gelesen zu markieren, ist fehlgeschlagen.",
"Error updating feed." => "Fehler bei der Aktualisierung der Feeds.",
@ -38,9 +41,10 @@
"Error while parsing the feed" => "Fehler beim Einlesen des Feed.",
"Fatal Error" => "Schwerer Fehler",
"No files selected." => "Keine Dateien ausgewählt.",
"Importing OPML file..." => "Importiere OPML-Datei ...",
"Importing OPML file..." => "OPML Datei wird importiert...",
"Not a valid type" => "Kein gültiger Typ",
"{n_success} out of {n_total} feeds imported successfully!" => "{n_success} von {n_total} Feeds erfolgreich importiert.",
"Importing done" => "Import abgeschlossen",
"Error while importing feeds." => "Fehler beim Importieren des Feeds",
"Select file" => "Datei auswählen",
"no title" => "kein Titel",
"no name" => "kein Name",

View File

@ -9,12 +9,15 @@
"Error removing feed." => "Fehler beim Entfernen des Feeds.",
"Error removing folder." => "Fehler beim Entfernen des Ordners.",
"Error updating feeds." => "Fehler bei der Aktualisierung der Feeds.",
"No file was submitted." => "Es wurde keine Datei übertragen.",
"Empty filename" => "Leerer Dateiname",
"No source argument passed" => "Es wurde kein Quell-Argument übergeben.",
"Error while reading file" => "Fehler beim Lesen der Datei",
"An error occurred while parsing the file." => "Es ist ein Fehler beim Einlesen der Datei aufgetreten.",
"Feed loaded!" => "Feed geladen!",
"Error moving feed into folder." => "Fehler beim Verschieben des Feeds in den Ordner.",
"No file path was submitted." => "Es wurde kein Dateipfad übermittelt.",
"File doesn't exist:" => "Die Datei existiert nicht:",
"Couldn't save temporary image: " => "Das temporäre Bild konnte nicht gespeichert werden:",
"Error setting all items as read." => "Der Versuch, alle Artikel als gelesen zu markieren, ist fehlgeschlagen.",
"Error marking item as read." => "Der Versuch, den Artikel als gelesen zu markieren, ist fehlgeschlagen.",
"Error updating feed." => "Fehler bei der Aktualisierung der Feeds.",
@ -40,7 +43,8 @@
"No files selected." => "Keine Dateien ausgewählt.",
"Importing OPML file..." => "OPML Datei wird importiert...",
"Not a valid type" => "Kein gültiger Typ.",
"{n_success} out of {n_total} feeds imported successfully!" => "{n_success} von {n_total} Feeds wurden erfolgreich importiert!",
"Importing done" => "Import abgeschlossen",
"Error while importing feeds." => "Fehler beim Importieren des Feeds",
"Select file" => "Datei auswählen",
"no title" => "kein Titel",
"no name" => "kein Name",

View File

@ -9,11 +9,14 @@
"Error removing feed." => "Σφάλμα αφαίρεσης ροής.",
"Error removing folder." => "Σφάλμα αφαίρεσης φακέλου.",
"Error updating feeds." => "Σφάλμα ενημέρωσης ροών.",
"Empty filename" => "Κενό όνομα αρχείου",
"Error while reading file" => "Σφάλμα κατά την ανάγνωση του αρχείου",
"An error occurred while parsing the file." => "Παρουσιάστηκε σφάλμα κατά την ανάλυση του αρχείου.",
"Feed loaded!" => "Φορτώθηκε η ροή!",
"Error moving feed into folder." => "Σφάλμα μετακίνησης ροής σε φάκελο.",
"No file path was submitted." => "Δεν υποβλήθηκε διαδρομή αρχείου.",
"File doesn't exist:" => "Το αρχείο δεν υπάρχει",
"Couldn't save temporary image: " => "Δεν ήταν δυνατή η αποθήκευση της προσωρινής εικόνας: ",
"Error setting all items as read." => "Σφάλμα ορισμού όλων ως ανεγνωσμένων.",
"Error marking item as read." => "Σφάλμα σήμανσης ως ανεγνωσμένου.",
"Error updating feed." => "Σφάλμα ενημέρωσης ροής.",
@ -37,6 +40,10 @@
"Error while parsing the feed" => "Σφάλμα κατά την ανάλυση της ροής",
"Fatal Error" => "Μοιραίο Σφάλμα",
"No files selected." => "Δεν επιλέχθηκαν αρχεία.",
"Importing OPML file..." => "Εισαγωγή αρχείου OPML...",
"Not a valid type" => "Μη έγκυρος τύπος",
"Importing done" => "Η εισαγωγή ολοκληρώθηκε",
"Error while importing feeds." => "Σφάλμα κατά την εισαγωγή ροών.",
"Select file" => "Επιλογή αρχείου",
"no title" => "χωρίς τίτλο",
"no name" => "χωρίς όνομα",

View File

@ -14,6 +14,7 @@
"Error moving feed into folder." => "Eraro dum movo de fluo en dosierujon.",
"No file path was submitted." => "Neniu dosiervojo sendiĝis.",
"File doesn't exist:" => "Dosiero ne ekzistas:",
"Couldn't save temporary image: " => "Ne eblis konservi provizoran bildon: ",
"Error setting all items as read." => "Eraro dum markiĝis ĉiuj eroj kiel legitaj.",
"Error marking item as read." => "Eraro dum markiĝis ero kiel legita.",
"Error updating feed." => "Eraro dum ĝusdatigo de fluo.",

View File

@ -9,12 +9,15 @@
"Error removing feed." => "Error al borrar la fuente.",
"Error removing folder." => "Error al borrar la carpeta.",
"Error updating feeds." => "Error actualizando las fuentes",
"No file was submitted." => "No se envío ningún archivo",
"Empty filename" => "Nombre de archivo vacío",
"No source argument passed" => "No se ha pasado argumentos",
"Error while reading file" => "Error al leer el archivo",
"An error occurred while parsing the file." => "Se produjo un error al analizar el archivo.",
"Feed loaded!" => "Fuente cargada!",
"Error moving feed into folder." => "Error al mover la fuente hacia la carpeta",
"No file path was submitted." => "No se presentó la ruta del archivo.",
"File doesn't exist:" => "El fichero no existe.",
"Couldn't save temporary image: " => "No se pudo salvar una imagen temporal",
"Error setting all items as read." => "Error al configurar todos los elementos como leídos.",
"Error marking item as read." => "Error al marcar elemento como leído.",
"Error updating feed." => "Error actualizando la fuente.",
@ -29,22 +32,26 @@
"Are you sure you want to delete this folder and all its feeds?" => "¿Está seguro de que desea borrar esta carpeta y todas las fuentes?",
"Warning" => "Atención",
"Name of the folder cannot be empty." => "El nombre de la carpeta no puede estar vacio.",
"Adding..." => "Adicionando...",
"Adding..." => "Añadiendo...",
"Add folder" => "Añadir carpeta",
"Changing..." => "Cambiando...",
"Change folder name" => "Cambiar nombre de carpeta",
"URL cannot be empty." => "URL no puede estar vacio",
"Add feed" => "Adicionar fuente",
"URL cannot be empty." => "URL no puede estar vacia",
"Add feed" => "Añadir fuente",
"Error while parsing the feed" => "Error mientras se analizaba la fuente",
"Fatal Error" => "Error fatal.",
"No files selected." => "No hay ficheros seleccionados.",
"Importing OPML file..." => "Importando archivo OPML...",
"Not a valid type" => "No es un tipo válido",
"Importing done" => "Importación realizada",
"Error while importing feeds." => "Error importando las fuentes.",
"Select file" => "Seleccionar archivo",
"no title" => "sin título",
"no name" => "sin nombre",
"no body" => "sin cuerpo",
"subscriptions in ownCloud - News" => "suscripciones en ownCloud - Noticias",
"An error occurred" => "Ocurrió un error",
"Nice! You have subscribed to " => "¡Bien! Te has suscribido a",
"Nice! You have subscribed to " => "¡Bien! Te has suscrito a",
"You had already subcribed to this feed!" => "Ya está subscrito a esta fuente!",
"You don't have any feed in your reader." => "Usted no tiene ninguna fuente en el lector.",
"Address" => "Dirección",
@ -57,18 +64,18 @@
"Select file from <a href=\"#\" class=\"settings\" id=\"browselink\">local filesystem</a> or <a href=\"#\" class=\"settings\" id=\"cloudlink\">cloud</a>" => "Seleccionar archivo desde <a href=\"#\" class=\"settings\" id=\"browselink\">sistema de archivo local</a> o <a href=\"#\" class=\"settings\" id=\"cloudlink\">nube</a>",
"Import" => "Importar",
"Or..." => "O...",
"Add feed or folder" => "Adicionar fuente o carpeta",
"Add Feed/Folder" => "Adicionar Fuente/Carpeta",
"Add feed or folder" => "Añadir fuente o carpeta",
"Add Feed/Folder" => "Añadir Fuente/Carpeta",
"Feed" => "Fuente",
"Folder" => "Carpeta",
"Settings" => "Configuración",
"Add Folder" => "Adicionar carpeta",
"Add Folder" => "Añadir carpeta",
"Add new folder" => "Añadir nueva carpeta",
"Folder name" => "Nombre de la carpeta",
"Add Subscription" => "Adicionar subcripción",
"Add Subscription" => "Añadir subcripción",
"Add new feed" => "Añadir nueva fuente",
"Choose folder" => "Seleccionar carpeta",
"Add" => "Adicionar",
"Add" => "Añadir",
"New articles" => "Nuevo artículo",
"Mark all read" => "Marcar como leido",
"Starred" => "Favoritos",

View File

@ -9,11 +9,15 @@
"Error removing feed." => "Error al borrar la fuente.",
"Error removing folder." => "Error al borrar el directorio.",
"Error updating feeds." => "Error actualizando las fuentes",
"Empty filename" => "Nombre de archivo vacío",
"No source argument passed" => "No se pasaron argumentos a la fuente",
"Error while reading file" => "Error al leer el archivo",
"An error occurred while parsing the file." => "Se produjo un error al analizar el archivo.",
"Feed loaded!" => "¡Fuente cargada!",
"Error moving feed into folder." => "Error al mover la fuente hacia el directorio.",
"No file path was submitted." => "No se transmitió la ruta del archivo.",
"File doesn't exist:" => "El archivo no existe.",
"Couldn't save temporary image: " => "No fue posible guardar la imagen temporal",
"Error setting all items as read." => "Error al configurar todos los elementos como leídos.",
"Error marking item as read." => "Error al marcar elemento como leído.",
"Error updating feed." => "Error actualizando la fuente.",
@ -37,6 +41,10 @@
"Error while parsing the feed" => "Error mientras se analizaba la fuente",
"Fatal Error" => "Error fatal.",
"No files selected." => "No hay archivos seleccionados.",
"Importing OPML file..." => "Importando archivo OPML...",
"Not a valid type" => "No es de un tipo válido.",
"Importing done" => "Importación terminada",
"Error while importing feeds." => "Error al importar fuentes.",
"Select file" => "Seleccionar archivo",
"no title" => "sin título",
"no name" => "sin nombre",

View File

@ -14,6 +14,7 @@
"Error moving feed into folder." => "Viga uudisvoo liigutamisel kausta.",
"No file path was submitted." => "Faili asukohta ei sisestatud.",
"File doesn't exist:" => "Faili pole olemas:",
"Couldn't save temporary image: " => "Ajutise pildi salvestamine ebaõnnestus: ",
"Error setting all items as read." => "Viga kõigi kirjete loetuks märkimisel.",
"Error marking item as read." => "Viga kirje loetuks märkimisel.",
"Error updating feed." => "Viga uudisvoo uuendamisel.",

View File

@ -14,6 +14,7 @@
"Error moving feed into folder." => "Errorea iturburua karpetara mugitzean.",
"No file path was submitted." => "Ez da fitxategi bidea zehaztu.",
"File doesn't exist:" => "Fitxategia ez da existitzen:",
"Couldn't save temporary image: " => "Ezin izan da aldi bateko irudia gorde:",
"Error setting all items as read." => "Errorea elementu guztiak irakurrita bezala ezartzean.",
"Error marking item as read." => "Errorea elementua irakurrita bezala ezartzean.",
"Error updating feed." => "Errorea iturburua eguneratzerakoan.",

View File

@ -1,5 +1,6 @@
<?php $TRANSLATIONS = array(
"File doesn't exist:" => "پرونده وجود ندارد",
"Couldn't save temporary image: " => "قابلیت ذخیره تصویر موقت وجود ندارد:",
"Error" => "خطا",
"None" => "هیچ‌کدام",
"Warning" => "اخطار",

View File

@ -8,11 +8,14 @@
"Error removing feed." => "Virhe syötettä poistaessa.",
"Error removing folder." => "Virhe kansiota poistaessa.",
"Error updating feeds." => "Virhe syötteitä päivittäessä.",
"Empty filename" => "Tyhjä tiedostonimi",
"Error while reading file" => "Virhe tiedostoa luettaessa",
"An error occurred while parsing the file." => "Tiedostoa jäsennettäessä tapahtui virhe.",
"Feed loaded!" => "Syöte ladattu!",
"Error moving feed into folder." => "Virhe siirrettäessä syötettä kansioon.",
"No file path was submitted." => "Tiedoston polkua ei annettu.",
"File doesn't exist:" => "Tiedostoa ei ole olemassa",
"Couldn't save temporary image: " => "Väliaikaiskuvan tallennus epäonnistui:",
"Error setting all items as read." => "Virhe tapahtui kun yritettiin merkitä kaikki luetuksi.",
"Error marking item as read." => "Virhe tapahtui kun yritettiin merkitä artikkeli luetuksi.",
"Error updating feed." => "Virhe syötettä päivittäessä.",
@ -36,6 +39,8 @@
"Error while parsing the feed" => "Virhe syötettä jäsennettäessä.",
"Fatal Error" => "Vakava virhe",
"No files selected." => "Tiedostoja ei valittu.",
"Importing OPML file..." => "Tuodaan OPML-tiedostoa...",
"Not a valid type" => "Virheellinen tyyppi",
"Select file" => "Valitse tiedosto",
"no title" => "ei otsikkoa",
"no name" => "ei nimeä",

View File

@ -9,12 +9,14 @@
"Error removing feed." => "Erreur lors de la suppression du flux.",
"Error removing folder." => "Erreur lors de la suppression du répertoire.",
"Error updating feeds." => "Erreur lors de la mise à jour des flux.",
"No file was submitted." => "Aucun fichier n'a été soumis.",
"Empty filename" => "Nom de fichier manquant",
"Error while reading file" => "Erreur lors de la lecture du fichier",
"An error occurred while parsing the file." => "Une erreur est apparue lors de l'analyse du fichier.",
"Feed loaded!" => "Flux chargé !",
"Error moving feed into folder." => "Erreur lors du déplacement du flux dans le répertoire.",
"No file path was submitted." => "Aucun chemin vers un fichier n'a été indiqué.",
"File doesn't exist:" => "Ce fichier n'existe pas :",
"Couldn't save temporary image: " => "Impossible de sauvegarder l'image temporaire :",
"Error setting all items as read." => "Erreur lors du marquage de tous les articles comme lus.",
"Error marking item as read." => "Erreur lors du marquage de l'article comme lu.",
"Error updating feed." => "Erreur lors de la mise à jour du flux.",
@ -40,7 +42,8 @@
"No files selected." => "Aucun fichier selectionné.",
"Importing OPML file..." => "Importation du fichier OPML...",
"Not a valid type" => "Ce n'est pas un type valide",
"{n_success} out of {n_total} feeds imported successfully!" => "{n_success} sur {n_total} flux importés avec succès !",
"Importing done" => "importation terminée",
"Error while importing feeds." => "Erreur lors de l'importation des flux",
"Select file" => "Sélectionnez le fichier",
"no title" => "sans titre",
"no name" => "sans nom",

View File

@ -14,6 +14,7 @@
"Error moving feed into folder." => "Erro movendo a fonte a carpeta.",
"No file path was submitted." => "Non se enviou a ruta ao ficheiro.",
"File doesn't exist:" => "Non existe o ficheiro:",
"Couldn't save temporary image: " => "Non se puido gardar a imaxe temporal: ",
"Error setting all items as read." => "Erro ao marcar todos como lidos.",
"Error marking item as read." => "Erro marcando o elemento como lido.",
"Error updating feed." => "Erro actualizando a fonte",

View File

@ -1,5 +1,6 @@
<?php $TRANSLATIONS = array(
"File doesn't exist:" => "A fájl nem létezik:",
"Couldn't save temporary image: " => "Ideiglenes kép létrehozása sikertelen",
"Error" => "Hiba",
"None" => "Egyik sem",
"Warning" => "Figyelmeztetés",

View File

@ -9,12 +9,15 @@
"Error removing feed." => "Errore durante la rimozione della fonte.",
"Error removing folder." => "Errore durante la rimozione della cartella.",
"Error updating feeds." => "Errore durante l'aggiornamento delle fonti.",
"No file was submitted." => "Non è stato inviato alcun file.",
"Empty filename" => "Nome file vuoto",
"No source argument passed" => "Non è stato fornito alcun argomento sorgente",
"Error while reading file" => "Errore durante la lettura del file",
"An error occurred while parsing the file." => "Si è verificato un errore durante l'elaborazione del file.",
"Feed loaded!" => "Fonte caricata!",
"Error moving feed into folder." => "Errore durante lo spostamento della fonte in una cartella.",
"No file path was submitted." => "Non è stato fornito alcun percorso al file.",
"File doesn't exist:" => "Il file non esiste:",
"Couldn't save temporary image: " => "Impossibile salvare l'immagine temporanea: ",
"Error setting all items as read." => "Errore durante l'impostazione di tutti gli elementi come letti.",
"Error marking item as read." => "Errore durante la marcatura dell'elemento come letto.",
"Error updating feed." => "Errore durante l'aggiornamento della fonte.",
@ -40,7 +43,8 @@
"No files selected." => "Nessun file selezionato.",
"Importing OPML file..." => "Importazione file OPML...",
"Not a valid type" => "Non è un tipo valido",
"{n_success} out of {n_total} feeds imported successfully!" => "{n_success} su {n_total} fonti sono state importate correttamente!",
"Importing done" => "Importazione completata",
"Error while importing feeds." => "Errore durante l'importazione delle fonti.",
"Select file" => "Seleziona file",
"no title" => "nessun titolo",
"no name" => "nessun nome",

View File

@ -9,11 +9,15 @@
"Error removing feed." => "フィードの削除エラー",
"Error removing folder." => "フォルダの削除エラー",
"Error updating feeds." => "フィードの更新エラー",
"Empty filename" => "空のファイル名",
"No source argument passed" => "ソースの引数が入力されていません",
"Error while reading file" => "ファイルの読み込みエラー",
"An error occurred while parsing the file." => "ファイルの解析中にエラーが発生しました。",
"Feed loaded!" => "フィードを読み込みました!",
"Error moving feed into folder." => "フォルダへのフィードの移動エラー",
"No file path was submitted." => "ファイルパスは送信されませんでした。",
"File doesn't exist:" => "ファイルは存在しません:",
"Couldn't save temporary image: " => "一時的な画像の保存ができませんでした: ",
"Error setting all items as read." => "すべての項目の既読設定エラー",
"Error marking item as read." => "アイテムの既読設定エラー",
"Error updating feed." => "フィードの更新エラー",
@ -37,6 +41,10 @@
"Error while parsing the feed" => "フィードの解析エラー",
"Fatal Error" => "致命的なエラー",
"No files selected." => "ファイルが選択されていません。",
"Importing OPML file..." => "OPML ファイルをインポート中...",
"Not a valid type" => "有効なタイプではありません",
"Importing done" => "インポート完了",
"Error while importing feeds." => "フィードのインポート時のエラー。",
"Select file" => "ファイルを選択",
"no title" => "タイトル無し",
"no name" => "名前無し",

View File

@ -1,5 +1,6 @@
<?php $TRANSLATIONS = array(
"File doesn't exist:" => "파일이 존재하지 않습니다. ",
"Couldn't save temporary image: " => "임시 이미지를 저장할 수 없습니다:",
"Error" => "에러",
"Warning" => "경고",
"Address" => "주소",

View File

@ -1,5 +1,6 @@
<?php $TRANSLATIONS = array(
"File doesn't exist:" => "Не постои датотеката:",
"Couldn't save temporary image: " => "Не можеше да се сними привремената фотографија:",
"Error" => "Грешка",
"Warning" => "Предупредување",
"Address" => "Адреса",

View File

@ -1,5 +1,6 @@
<?php $TRANSLATIONS = array(
"File doesn't exist:" => "Fail tidak wujud:",
"Couldn't save temporary image: " => "Tidak boleh menyimpan imej sementara: ",
"Error" => "Ralat",
"Warning" => "Amaran",
"Address" => "Alamat",

View File

@ -14,6 +14,7 @@
"Error moving feed into folder." => "Kunne ikke flytte nyhetskilden til mappen.",
"No file path was submitted." => "Ingen filbane ble funnet",
"File doesn't exist:" => "Filen eksisterer ikke:",
"Couldn't save temporary image: " => "Kunne ikke lagre midlertidig bilde:",
"Error setting all items as read." => "Kunne ikke merke filene som lest",
"Error marking item as read." => "Kunne ikke merke filen som lest.",
"Error updating feed." => "Kunne ikke oppdatere nyhetskilde.",

View File

@ -9,11 +9,15 @@
"Error removing feed." => "Feed kon niet verwijderd worden.",
"Error removing folder." => "Map kon niet verwijderd worden.",
"Error updating feeds." => "Fout tijdens het updaten van feeds.",
"Empty filename" => "Lege bestandnaam",
"No source argument passed" => "Geen goede argumenten",
"Error while reading file" => "Fout tijdens het lezen van het bestand",
"An error occurred while parsing the file." => "Fout tijdens het valideren van bestand.",
"Feed loaded!" => "Feed geladen!",
"Error moving feed into folder." => "Kon feed niet in map plaatsen.",
"No file path was submitted." => "Er werd geen bestandslocatie meegegeven.",
"File doesn't exist:" => "Bestand bestaat niet: ",
"Couldn't save temporary image: " => "Kan tijdelijk plaatje niet op slaan:",
"Error setting all items as read." => "Fout tijdens alle items als gelezen instellen.",
"Error marking item as read." => "Fout tijdens item markeren als gelezen.",
"Error updating feed." => "Fout tijdens het updaten van feed.",
@ -37,6 +41,10 @@
"Error while parsing the feed" => "Fout tijdens het valideren van feed",
"Fatal Error" => "Fatale fout",
"No files selected." => "Geen bestanden geselecteerd.",
"Importing OPML file..." => "OPML bestand wordt geïmporteerd...",
"Not a valid type" => "Geen geldig type",
"Importing done" => "Import uitgevoerd",
"Error while importing feeds." => "Er ging iets fout tijdens het importeren van feeds.",
"Select file" => "Selecteer bestand",
"no title" => "geen titel",
"no name" => "geen naam",

View File

@ -9,11 +9,14 @@
"Error removing feed." => "Błąd usuwania kanału.",
"Error removing folder." => "Nie wprowadzono ścieżki do pliku",
"Error updating feeds." => "Błąd aktualizacji kanałów.",
"Empty filename" => "Pusta nazwa pliku",
"Error while reading file" => "Błąd przy odczycie pliku",
"An error occurred while parsing the file." => "Wystąpił błąd podczas analizowania pliku.",
"Feed loaded!" => "Plik załadowany!",
"Error moving feed into folder." => "Wystąpił błąd podczas przenoszenia kanału do folderu.",
"No file path was submitted." => "Ścieżka do pliku nie została podana.",
"File doesn't exist:" => "Plik nie istnieje:",
"Couldn't save temporary image: " => "Nie można zapisać obrazu tymczasowego: ",
"Error setting all items as read." => "Błąd podczas ustawiania wszystkich elementów jako przeczytanych.",
"Error marking item as read." => "Błąd oznaczenia elementu jako przeczytanego.",
"Error updating feed." => "Błąd aktualizacji kanału",
@ -37,6 +40,8 @@
"Error while parsing the feed" => "Błąd podczas analizowania kanału",
"Fatal Error" => "Błąd systemu",
"No files selected." => "Nie wybrano plików",
"Importing OPML file..." => "Importuje plik OPML...",
"Not a valid type" => "Niepoprawny typ",
"Select file" => "Wybierz plik",
"no title" => "brak tytułu",
"no name" => "brak nazwy",

View File

@ -9,12 +9,15 @@
"Error removing feed." => "Erro ao remover feed.",
"Error removing folder." => "Erro ao remover pasta.",
"Error updating feeds." => "Erro ao atualizar feeds.",
"No file was submitted." => "Nenhum arquivo foi enviado.",
"Empty filename" => "Nome de arquivo vazio",
"No source argument passed" => "Nenhum argumento fonte foi passado",
"Error while reading file" => "Erro durante leitura do arquivo",
"An error occurred while parsing the file." => "Um erro ocorreu ao analisar o arquivo.",
"Feed loaded!" => "Feed carregado!",
"Error moving feed into folder." => "Erro ao mover feed para pasta.",
"No file path was submitted." => "Nenhum caminho de arquivo foi submetido.",
"File doesn't exist:" => "Arquivo não existe:",
"Couldn't save temporary image: " => "Não foi possível salvar a imagem temporária:",
"Error setting all items as read." => "Erro ao marcar todos os itens como lidos.",
"Error marking item as read." => "Erro ao marcar item como lido.",
"Error updating feed." => "Erro ao atualizar feed.",
@ -38,6 +41,10 @@
"Error while parsing the feed" => "Erro ao ler feed",
"Fatal Error" => "Erro Fatal",
"No files selected." => "Nenhum arquivo selecionado.",
"Importing OPML file..." => "Importando arquivo OPML...",
"Not a valid type" => "Tipo inválido",
"Importing done" => "Importação concluída",
"Error while importing feeds." => "Erro durante importação de feeds.",
"Select file" => "Selecionar arquivo",
"no title" => "sem título",
"no name" => "sem nome",

View File

@ -9,12 +9,15 @@
"Error removing feed." => "Erro ao remover o feed.",
"Error removing folder." => "Erro a remover pasta.",
"Error updating feeds." => "Erro a actualizar o feed.",
"No file was submitted." => "Nenhum ficheiros foi submetido",
"Empty filename" => "Ficheiro vazio",
"No source argument passed" => "Nenhum argumento inicial passado",
"Error while reading file" => "Erro ao ler o ficheiro.",
"An error occurred while parsing the file." => "Ocorreu um erro ao analisar o ficheiro.",
"Feed loaded!" => "Feed carregado.",
"Error moving feed into folder." => "Erro ao mover o feed para a pasta.",
"No file path was submitted." => "Nenhum caminho de arquivo foi submetido.",
"File doesn't exist:" => "Ficheiro não existe:",
"Couldn't save temporary image: " => "Não foi possível guardar a imagem temporária: ",
"Error setting all items as read." => "Erro ao definir todos como lidos.",
"Error marking item as read." => "Erro ao definir item como lido.",
"Error updating feed." => "Erro ao actualizar o feed.",
@ -40,7 +43,8 @@
"No files selected." => "Nenhum ficheiro seleccionado.",
"Importing OPML file..." => "A importar ficheiro OPML...",
"Not a valid type" => "Tipo inválido!",
"{n_success} out of {n_total} feeds imported successfully!" => "{n_success} de {n_total} feeds importados com sucesso!",
"Importing done" => "Concluída a importação",
"Error while importing feeds." => "Erro a importar feeds",
"Select file" => "Escolher ficheiro",
"no title" => "sem titulo",
"no name" => "sem nome",

View File

@ -9,11 +9,15 @@
"Error removing feed." => "Ошибка удаления ленты.",
"Error removing folder." => "Ошибка удаления ленты.",
"Error updating feeds." => "Ошибка обновления лент.",
"Empty filename" => "Пустое имя файла",
"No source argument passed" => "Нет исходного аргумента",
"Error while reading file" => "Ошибка при чтении файла",
"An error occurred while parsing the file." => "При обработке файла возникла ошибка.",
"Feed loaded!" => "Лента загружена!",
"Error moving feed into folder." => "Ошибка перемещения ленты в папку.",
"No file path was submitted." => "Не было указано пути к файлу.",
"File doesn't exist:" => "Файл не существует:",
"Couldn't save temporary image: " => "Не удалось сохранить временное изображение:",
"Error setting all items as read." => "Ошибка установки элементов как прочитанных.",
"Error marking item as read." => "Ошибка отметки элемента как прочитанного.",
"Error updating feed." => "Ошибка обновления ленты.",
@ -37,6 +41,10 @@
"Error while parsing the feed" => "Ошибка обработки ленты",
"Fatal Error" => "Неисправимая ошибка",
"No files selected." => "Нет выбранных файлов.",
"Importing OPML file..." => "Импортирование OPML файла...",
"Not a valid type" => "Недопустимый тип",
"Importing done" => "Импорт завершен",
"Error while importing feeds." => "Возникла ошибка при импортировании данных",
"Select file" => "Выберите файл",
"no title" => "без заголовка",
"no name" => "без имени",

View File

@ -9,12 +9,15 @@
"Error removing feed." => "Ошибка при удалении потока.",
"Error removing folder." => "Ошибка при удалении папки.",
"Error updating feeds." => "Ошибка обновления потоков.",
"No file was submitted." => "Файлы не были отправлены.",
"Empty filename" => "Пустое имя файла",
"No source argument passed" => "Нет годного параметра источника",
"Error while reading file" => "Ошибка при чтении файла",
"An error occurred while parsing the file." => "При парсинге файла произошла ошибка.",
"Feed loaded!" => "Поток загружен!",
"Error moving feed into folder." => "Ошибка при перемещении потока в папку. ",
"No file path was submitted." => "Не был задан путь к файлу.",
"File doesn't exist:" => "Файл не существует:",
"Couldn't save temporary image: " => "Не удалось сохранить временное изображение:",
"Error setting all items as read." => "Ошибка при отметке всех пунктов прочитанными.",
"Error marking item as read." => "Ошибка при отметке пункта прочитанным.",
"Error updating feed." => "Ошибка при обновлении потока.",
@ -40,7 +43,8 @@
"No files selected." => "Не выбран файл.",
"Importing OPML file..." => "Импортирование OPML-файла...",
"Not a valid type" => "Недопустимый тип",
"{n_success} out of {n_total} feeds imported successfully!" => "{n_success} из {n_total} потоков импортированы успешно!",
"Importing done" => "Импортирование выполнено",
"Error while importing feeds." => "Ошибка при импортировании потоков.",
"Select file" => "Выбрать файл",
"no title" => "заголовок отсутствует",
"no name" => "имя отсутствует",

View File

@ -9,12 +9,15 @@
"Error removing feed." => "සංග්‍රහය ඉවත් කිරීමේදී දෝෂයක් සිදුවිය",
"Error removing folder." => "ෆොල්ඩරය ඉවත් කිරීමේදී දෝෂයක් සිදුවිය",
"Error updating feeds." => "සංග්‍රහ යාවත්කාලීන කිරීමේදී දෝෂයක් සිදුවිය",
"No file was submitted." => "කිසිම ගොනුවක් යොමු කර නැත",
"Empty filename" => "ගොනු නාමය හිස්",
"No source argument passed" => "මුල් තර්කයක් ලබාදී නැත",
"Error while reading file" => "ගොනුව කියවීමේදී දෝෂයක්",
"An error occurred while parsing the file." => "ගොනුවේ ව්‍යාකරණ විග්‍රහ කිරීමේදී දෝෂයක් සිදුවිය",
"Feed loaded!" => "සංග්‍රහය පූරණය කරන ලදි!",
"Error moving feed into folder." => "සංග්‍රහය ෆොල්ඩරයට ගෙනයෑමේදී දෝෂයක් සිදුවිය",
"No file path was submitted." => "ගොනු පෙතක් ලබාදී නැත",
"File doesn't exist:" => "ගොනුව නොපවතී",
"Couldn't save temporary image: " => "තාවකාලික රූපය සුරැකීමට නොහැකි විය",
"Error setting all items as read." => "සියලු අයිතම කියවන ලදී යයි සලකුණු කිරීමේදි දෝෂයක් සිදුවිය",
"Error marking item as read." => "මෙම අයිතමය කියවන ලදී යයි සලකුණු කිරීමේදි දෝෂයක් සිදුවිය",
"Error updating feed." => "සංග්‍රහය යාවත්කාලීන කිරීමේදී දෝෂයක් සිදුවිය",
@ -40,7 +43,6 @@
"No files selected." => "ගොනුවක් තෝරා නැත",
"Importing OPML file..." => "OPML ගොනුවක් ආයාත කරනවා...",
"Not a valid type" => "වලංගු වර්ගයක් නොවේ",
"{n_success} out of {n_total} feeds imported successfully!" => "{n_total} වලින් {n_success} සංග්‍රහයන් ආයාත කරන ලදී!",
"Select file" => "ගොනුව තෝරන්න",
"no title" => "මාතෘකාවක් නැත",
"no name" => "නමක් නැත",

View File

@ -14,6 +14,7 @@
"Error moving feed into folder." => "Chyba pri presune kanálu do priečinka.",
"No file path was submitted." => "Neuvedené cesta k súboru.",
"File doesn't exist:" => "Súbor neexistuje.",
"Couldn't save temporary image: " => "Nemôžem uložiť dočasný obrázok: ",
"Error setting all items as read." => "Chyba pri označovaní všetkých položiek ako prečítané.",
"Error marking item as read." => "Chyba pri označení položky ako prečítané.",
"Error updating feed." => "Chyba pri aktualizácií kanála.",

View File

@ -14,6 +14,7 @@
"Error moving feed into folder." => "Napaka med premikanjem vira v mapo.",
"No file path was submitted." => "Pot do datoteke ni poslana.",
"File doesn't exist:" => "Datoteka ne obstaja:",
"Couldn't save temporary image: " => "Začasne slike ni mogoče shraniti: ",
"Error setting all items as read." => "Napaka med označevanjem vseh predmetov kot prebrane.",
"Error marking item as read." => "Napaka med označevanjem predmeta kot prebranega.",
"Error updating feed." => "Napaka med posodabljanjem vira.",

View File

@ -1,7 +1,10 @@
<?php $TRANSLATIONS = array(
"Error" => "Грешка",
"Address" => "Адреса",
"Upload" => "Пошаљи",
"Import" => "Увези",
"Folder" => "фасцикла",
"Settings" => "Подешавања",
"Add" => "Додај"
"Add" => "Додај",
"Share" => "Дељење"
);

View File

@ -9,12 +9,15 @@
"Error removing feed." => "Kunde inte radera flöde.",
"Error removing folder." => "Fel vid radering av mapp.",
"Error updating feeds." => "Fel vid uppdatering av flöden.",
"No file was submitted." => "Ingen fil angavs.",
"Empty filename" => "Tomt filnamn",
"No source argument passed" => "Inget argument för källa angavs",
"Error while reading file" => "Fel vid läsning av fil",
"An error occurred while parsing the file." => "Ett fel uppstod vid läsning av filen.",
"Feed loaded!" => "Flöde inläst!",
"Error moving feed into folder." => "Fel vid flyttning av flöde till mapp.",
"No file path was submitted." => "Inga sökvägar angivna.",
"File doesn't exist:" => "Filen existerar inte:",
"Couldn't save temporary image: " => "Kunde inte spara tillfällig bild:",
"Error setting all items as read." => "Ett fel uppstod när alla objekt skulle markeras som lästa.",
"Error marking item as read." => "Ett fel uppstod när objektet skulle markeras som läst.",
"Error updating feed." => "Fel vid uppdatering av flöde.",
@ -38,6 +41,10 @@
"Error while parsing the feed" => "Problem med att analysera flöde",
"Fatal Error" => "Allvarligt fel",
"No files selected." => "Inga filer valda.",
"Importing OPML file..." => "Importerar OPML-fil...",
"Not a valid type" => "Inte en giltig typ",
"Importing done" => "Import klar",
"Error while importing feeds." => "Fel vid import av flöden.",
"Select file" => "Välj fil",
"no title" => "ingen titel",
"no name" => "inget namn",

View File

@ -14,6 +14,7 @@
"Error moving feed into folder." => "เกิดข้อผิดพลาดในการย้าย feed ไปที่โฟลเดอร์",
"No file path was submitted." => "ยังไม่ได้ส่งข้อมูลตำแหน่งพาธของไฟล์",
"File doesn't exist:" => "ไม่มีไฟล์ดังกล่าวอยู่ในระบบ",
"Couldn't save temporary image: " => "ไม่สามารถบันทึกรูปภาพชั่วคราวได้: ",
"Error setting all items as read." => "เกิดข้อผิดพลาดในการตั้งค่ารายการทั้งหมดว่าอ่านแล้ว",
"Error marking item as read." => "เกิดข้อผิดพลาดในระหว่างการทำเครื่องหมายรายการว่าอ่านแล้ว",
"Error updating feed." => "เกิดข้อผิดพลาดในการอัพเดท feed",

View File

@ -1,5 +1,6 @@
<?php $TRANSLATIONS = array(
"File doesn't exist:" => "Dosya mevcut değil:",
"Couldn't save temporary image: " => "Geçici resmi saklayamadı : ",
"Error" => "Hata",
"Warning" => "Uyarı",
"Address" => "Adres",

View File

@ -1,39 +1,97 @@
<?php $TRANSLATIONS = array(
"Error changing name of folder " => "Lỗi khi thay đổi tên của thư mục",
"Error collapsing folder." => "Error collapsing folder.",
"Feed already exists." => "Feed đã tồn tại",
"Error adding feed." => " Lỗi khi thêm feed.",
"Feed added!" => "Feed đã được thêm",
"Error adding folder." => "Thêm thư mục bị lỗi.",
"Folder added!" => "Thư mục đã được thêm",
"Error removing feed." => "Lỗi khi xóa feed",
"Error removing folder." => "Lỗi xoá thư mục",
"Error updating feeds." => "Lỗi khi cập nhật feeds",
"Empty filename" => "tên tập tin trống",
"No source argument passed" => "Không có đối số nguồn thông qua",
"Error while reading file" => "Lỗi khi đọc tập tin",
"An error occurred while parsing the file." => "Một lỗi xảy ra trong khi phân tích các tập tin.",
"Feed loaded!" => "feed đang được nạp !",
"Error moving feed into folder." => "Lỗi di chuyển feed vào thư mục.",
"No file path was submitted." => "Không có đường dẫn tập tin đã được gửi.",
"File doesn't exist:" => "Tập tin không tồn tại",
"Couldn't save temporary image: " => "Không thể lưu ảnh tạm thời:",
"Error setting all items as read." => "Lỗi cài đặt tất cả tin là đã đọc.",
"Error marking item as read." => "Lỗi đánh dấu mục đã đọc.",
"Error updating feed." => "Lỗi khi cập nhập feed",
"Feed updated!" => "Cập nhập feed!",
"News" => "Tin tức",
"Error while loading the feed" => " Lỗi trong khi tải feed",
"Error" => "Lỗi",
"None" => "none",
"Show only unread" => "Hiển thị chưa đọc",
"Show everything" => "Hiện tất cả",
"Are you sure you want to delete this feed?" => "Bạn có muốn xóa feed này ?",
"Are you sure you want to delete this folder and all its feeds?" => "Bạn có muốn xóa thư mục và tất cả feed",
"Warning" => "Cảnh báo",
"Name of the folder cannot be empty." => " Tên của thự mục không được để trống.",
"Adding..." => "Đang thêm...",
"Add folder" => "Thêm thư mục",
"Changing..." => "Đang thay đổi...",
"Change folder name" => "Thay đổi tên thư mục",
"URL cannot be empty." => "URL không được để trống.",
"Add feed" => "Tâp",
"Error while parsing the feed" => "Lỗi trong khi phân tích các feed",
"Fatal Error" => "Lỗi nghiêm trọng",
"No files selected." => "Không có tập tin được chọn.",
"Importing OPML file..." => "Importing OPML tập tin...",
"Not a valid type" => "kiểu không hợp lệ",
"Importing done" => "import thành công",
"Error while importing feeds." => "Lỗi trong khi import feed.",
"Select file" => "Chọn tập tin",
"no title" => " không có tiêu đề",
"no name" => "không có tên",
"no body" => "no body",
"subscriptions in ownCloud - News" => "đăng ký trong ownCloud - Tin tức",
"An error occurred" => "Một lỗi đã xảy ra",
"Nice! You have subscribed to " => "Tuyệt! Bạn đã đăng ký",
"You had already subcribed to this feed!" => "Bạn đã subcribed với feed này!",
"You don't have any feed in your reader." => "Bạn không có bất kỳ feed nào .",
"Address" => "Địa chỉ",
"Subscribe" => "Theo dõi",
"Import OPML" => "Import OPML",
"Upload file from desktop" => "Tải tập tin từ Desktop",
"Upload" => "Tải lên",
"Select file from ownCloud" => "Chọn tập tin từ ownCloud",
"Select" => "chọn",
"Select file from <a href=\"#\" class=\"settings\" id=\"browselink\">local filesystem</a> or <a href=\"#\" class=\"settings\" id=\"cloudlink\">cloud</a>" => "Chọn tập tin từ <a href=\"#\" class=\"settings\" id=\"browselink\">hệ thống tập tin trên máy tính</a> hoặc <a href=\"#\" class=\"settings\" id=\"cloudlink\">điện toán đám mây</a>",
"Import" => "Nhập",
"Or..." => "or...",
"Add feed or folder" => "Thêm feed hoặc thư mục ",
"Add Feed/Folder" => "Thêm feed/thư mục ",
"Feed" => "Feed",
"Folder" => "Thư mục",
"Settings" => "Cài đặt",
"Add Folder" => "Thêm thư mục",
"Add new folder" => "Thêm thư mục mới",
"Folder name" => "Tên thư mục",
"Add Subscription" => "Thêm Subscription",
"Add new feed" => "Thêm feed mới",
"Choose folder" => "Chọn thư mục",
"Add" => "Thêm",
"New articles" => "Bài viết mới",
"Mark all read" => "Đánh dấu tất cả đã đọc",
"Starred" => "Starred",
"Mark as unimportant" => "Đánh dấu là không quan trọng",
"Mark as important" => "Đánh dấu là quan trọng",
"from" => "từ",
"by" => "bởi",
"Share" => "Chia sẻ",
"Keep unread" => "Giữ chưa đọc",
"Collapse" => "Thu gọn"
"Delete feed" => "Xóa feed",
"Collapse" => "Thu gọn",
"Delete folder" => "Xóa thư mục",
"Rename folder" => "Đổi tên thư mục",
"Import feeds" => "Import feeds",
"Export feeds" => "Export feeds",
"Download OPML" => "Tải về OPML",
"Subscribelet" => "Subscribelet",
"Drag this to your browser bookmarks and click on it whenever you want to subscribe to a webpage quickly:" => "Kéo vào bookmark trình duyệt của bạn và click vào nó bất cứ khi nào bạn muốn để theo dõi trang web một cách nhanh chóng:"
);

View File

@ -14,6 +14,7 @@
"Error moving feed into folder." => "移动种子到文件夹出错。",
"No file path was submitted." => "没有提交文件路径。",
"File doesn't exist:" => "文件不存在。",
"Couldn't save temporary image: " => "不能保存临时相片:",
"Error setting all items as read." => "全部标记为已读出错。",
"Error marking item as read." => "标记条目为已读出错。",
"Error updating feed." => "更新种子出错。",
@ -37,6 +38,8 @@
"Error while parsing the feed" => "解析种子出错",
"Fatal Error" => "致命错误",
"No files selected." => "没有选择文件。",
"Importing OPML file..." => "正在导入 OPML 文件...",
"Not a valid type" => "不是一个有效的类型",
"Select file" => "选择文件",
"no title" => "无主题",
"no name" => "无名称",

View File

@ -14,6 +14,7 @@
"Error moving feed into folder." => "移动Feed时出错",
"No file path was submitted." => "没有提交文件路径。",
"File doesn't exist:" => "文件不存在",
"Couldn't save temporary image: " => "无法保存临时图像: ",
"Error setting all items as read." => "标识所有已读时出错。",
"Error marking item as read." => "标志为已读时出错。",
"Error updating feed." => "更新Feed时出错。",

View File

@ -17,7 +17,7 @@ class OC_Search_Provider_News extends OC_Search_Provider{
foreach($allFeeds as $feed) {
if(substr_count(strtolower($feed['title']), strtolower($query)) > 0) {
$link = OCP\Util::linkTo('news', 'index.php').'&feedid='.urlencode($feed['id']);
$link = OCP\Util::linkTo('news', 'index.php').'?feedid='.urlencode($feed['id']);
$results[]=new OC_Search_Result($feed['title'], '', $link, (string)$l->t('News'));
}
}

View File

@ -20,21 +20,33 @@ class Utils {
/**
* @brief Transform a date from UNIX timestamp format to MDB2 timestamp format
* @param dbtimestamp
* @returns
* @param dbtimestamp a date in the UNIX timestamp format
* @returns a date in the MDB2 timestamp format, or NULL if an error occurred
*/
public static function unixtimeToDbtimestamp($unixtime) {
if ($unixtime === null) {
return null;
}
$dt = \DateTime::createFromFormat('U', $unixtime);
if ($dt === false) {
return null;
}
return $dt->format('Y-m-d H:i:s');
}
/**
* @brief Transform a date from MDB2 timestamp format to UNIX timestamp format
* @param dbtimestamp
* @returns
* @param dbtimestamp a date in the MDB2 timestamp format
* @returns a date in the UNIX timestamp format, or NULL if an error occurred
*/
public static function dbtimestampToUnixtime($dbtimestamp) {
if ($dbtimestamp === null) {
return null;
}
$dt = \DateTime::createFromFormat('Y-m-d H:i:s', $dbtimestamp);
if ($dt === false) {
return null;
}
return $dt->format('U');
}

View File

@ -22,8 +22,9 @@ foreach($items as $item) {
echo '<li class="feed_item ' . $newsItemClass .'" data-id="' . $item->getId() . '" data-feedid="' . $item->getFeedId() . '">';
echo '<span class="timestamp">' . $item->getDate() . '</span>';
$relative_modified_date = OCP\relative_modified_date($item->getDate());
echo '<h2 class="item_date"><time class="timeago" datetime="' .
date('c', $item->getDate()) . '">' . date('F j, Y, g:i a', $item->getDate()) . '</time>' . '</h2>';
date('c', $item->getDate()) . '">' . $relative_modified_date . '</time>' . '</h2>';
echo '<div class="utils">';
echo '<ul class="primary_item_utils">';
@ -38,7 +39,7 @@ foreach($items as $item) {
} else {
$feedTitle = '';
}
if(($item->getAuthor() !== null) && (trim($item->getAuthor()) !== '')) {
$author = $l->t('by') . ' ' . htmlspecialchars($item->getAuthor(), ENT_QUOTES, 'UTF-8');
} else {
@ -53,12 +54,12 @@ foreach($items as $item) {
echo '<div class="bottom_utils">';
echo '<ul class="secondary_item_utils">';
echo '<li class="share_link"><a class="share" data-item-type="news_item" data-item="' . $item->getId() . '" title="' . $l->t('Share') .
'" data-possible-permissions="' . (OCP\Share::PERMISSION_READ | OCP\Share::PERMISSION_SHARE) . '" href="#">' . $l->t('Share') . '</a></li>';
echo '<li class="share_link"><a class="share" data-item-type="news_item" data-item="' . $item->getId() . '" title="' . $l->t('Share') .
'" data-possible-permissions="' . (OCP\PERMISSION_READ | OCP\PERMISSION_SHARE) . '" href="#">' . $l->t('Share') . '</a></li>';
echo '<li class="keep_unread">' . $l->t('Keep unread') . '<input type="checkbox" /></li>';
echo '</ul>';
echo '</div>';
echo '</li>';

View File

@ -39,7 +39,7 @@ foreach($items as $item) {
} else {
$feedTitle = '';
}
if(($item->getAuthor() !== null) && (trim($item->getAuthor()) !== '')) {
$author = $l->t('by') . ' ' . htmlspecialchars($item->getAuthor(), ENT_QUOTES, 'UTF-8');
} else {
@ -52,15 +52,15 @@ foreach($items as $item) {
echo '<div class="body">' . $item->getBody() . '</div>';
echo '<div><a class="share" data-item-type="news_item" data-item="' . $item->getId() . '" title="' . $l->t('Share') .
'" data-possible-permissions="' . (OCP\Share::PERMISSION_READ | OCP\Share::PERMISSION_SHARE) . '"/></div>';
echo '<div><a class="share" data-item-type="news_item" data-item="' . $item->getId() . '" title="' . $l->t('Share') .
'" data-possible-permissions="' . (OCP\PERMISSION_READ | OCP\PERMISSION_SHARE) . '"/></div>';
echo '<div class="bottom_utils">';
echo '<ul class="secondary_item_utils">';
echo '<ul class="secondary_item_utils">';
echo '<li class="keep_unread">' . $l->t('Keep unread') . '<input type="checkbox" /></li>';
echo '</ul>';
echo '</div>';
echo '</li>';

View File

@ -2,7 +2,6 @@
/**
*
*/
OC_App::loadApp('news');
class Test_News_MyTest extends UnitTestCase
{
@ -11,3 +10,4 @@ class Test_News_MyTest extends UnitTestCase
$this->assertTrue(false);
}
}
*/