Add localization support (borrowed from Calibre2OPDS)
This commit is contained in:
parent
656d2e67cc
commit
e30513b0b3
7
README
7
README
|
@ -98,6 +98,13 @@ On the OPDS client side I mainly tested with FBReader and Aldiko on Android.
|
||||||
|
|
||||||
It also seems to work with Stanza.
|
It also seems to work with Stanza.
|
||||||
|
|
||||||
|
= Credits =
|
||||||
|
|
||||||
|
* All localization informations come from Calibre2OPDS (http://calibre2opds.com/)
|
||||||
|
* Locale message handling is inspired of http://www.mind-it.info/2010/02/22/a-simple-approach-to-localization-in-php/
|
||||||
|
* str_format function come from http://tmont.com/blargh/2010/1/string-format-in-php
|
||||||
|
* All testers
|
||||||
|
|
||||||
= Copyright & License =
|
= Copyright & License =
|
||||||
|
|
||||||
COPS - 2012 (c) Sébastien Lucas <sebastien@slucas.fr>
|
COPS - 2012 (c) Sébastien Lucas <sebastien@slucas.fr>
|
||||||
|
|
|
@ -31,8 +31,8 @@ class Author extends Base {
|
||||||
|
|
||||||
public static function getCount() {
|
public static function getCount() {
|
||||||
$nAuthors = parent::getDb ()->query('select count(*) from authors')->fetchColumn();
|
$nAuthors = parent::getDb ()->query('select count(*) from authors')->fetchColumn();
|
||||||
$entry = new Entry ("Authors", self::ALL_AUTHORS_ID,
|
$entry = new Entry (localize("authors.title"), self::ALL_AUTHORS_ID,
|
||||||
"Alphabetical index of the $nAuthors authors", "text",
|
str_format (localize("authors.alphabetical"), $nAuthors), "text",
|
||||||
array ( new LinkNavigation ("?page=".parent::PAGE_ALL_AUTHORS)));
|
array ( new LinkNavigation ("?page=".parent::PAGE_ALL_AUTHORS)));
|
||||||
return $entry;
|
return $entry;
|
||||||
}
|
}
|
||||||
|
@ -48,7 +48,7 @@ order by sort');
|
||||||
{
|
{
|
||||||
$author = new Author ($post->id, $post->sort);
|
$author = new Author ($post->id, $post->sort);
|
||||||
array_push ($entryArray, new Entry ($post->sort, $author->getEntryId (),
|
array_push ($entryArray, new Entry ($post->sort, $author->getEntryId (),
|
||||||
"$post->count books", "text",
|
str_format (localize("bookword.many"), $post->count), "text",
|
||||||
array ( new LinkNavigation ($author->getUri ()))));
|
array ( new LinkNavigation ($author->getUri ()))));
|
||||||
}
|
}
|
||||||
return $entryArray;
|
return $entryArray;
|
||||||
|
|
66
base.php
66
base.php
|
@ -13,6 +13,56 @@ function getURLParam ($name, $default = NULL) {
|
||||||
return $default;
|
return $default;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This method is a direct copy-paste from
|
||||||
|
* http://tmont.com/blargh/2010/1/string-format-in-php
|
||||||
|
*/
|
||||||
|
function str_format($format) {
|
||||||
|
$args = func_get_args();
|
||||||
|
$format = array_shift($args);
|
||||||
|
|
||||||
|
preg_match_all('/(?=\{)\{(\d+)\}(?!\})/', $format, $matches, PREG_OFFSET_CAPTURE);
|
||||||
|
$offset = 0;
|
||||||
|
foreach ($matches[1] as $data) {
|
||||||
|
$i = $data[0];
|
||||||
|
$format = substr_replace($format, @$args[$i], $offset + $data[1] - 1, 2 + strlen($i));
|
||||||
|
$offset += strlen(@$args[$i]) - 2 - strlen($i);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $format;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This method is based on this page
|
||||||
|
* http://www.mind-it.info/2010/02/22/a-simple-approach-to-localization-in-php/
|
||||||
|
*/
|
||||||
|
function localize($phrase) {
|
||||||
|
/* Static keyword is used to ensure the file is loaded only once */
|
||||||
|
static $translations = NULL;
|
||||||
|
/* If no instance of $translations has occured load the language file */
|
||||||
|
if (is_null($translations)) {
|
||||||
|
$lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
|
||||||
|
$lang_file_en = NULL;
|
||||||
|
$lang_file = 'lang/Localization_' . $lang . '.json';
|
||||||
|
if (!file_exists($lang_file)) {
|
||||||
|
$lang_file = 'lang/' . 'Localization_en.json';
|
||||||
|
}
|
||||||
|
elseif ($lang != "en") {
|
||||||
|
$lang_file_en = 'lang/' . 'Localization_en.json';
|
||||||
|
}
|
||||||
|
$lang_file_content = file_get_contents($lang_file);
|
||||||
|
/* Load the language file as a JSON object and transform it into an associative array */
|
||||||
|
$translations = json_decode($lang_file_content, true);
|
||||||
|
if ($lang_file_en)
|
||||||
|
{
|
||||||
|
$lang_file_content = file_get_contents($lang_file_en);
|
||||||
|
$translations_en = json_decode($lang_file_content, true);
|
||||||
|
$translations = array_merge ($translations_en, $translations);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $translations[$phrase];
|
||||||
|
}
|
||||||
|
|
||||||
class Link
|
class Link
|
||||||
{
|
{
|
||||||
const OPDS_THUMBNAIL_TYPE = "http://opds-spec.org/image/thumbnail";
|
const OPDS_THUMBNAIL_TYPE = "http://opds-spec.org/image/thumbnail";
|
||||||
|
@ -183,7 +233,7 @@ class PageAllAuthors extends Page
|
||||||
{
|
{
|
||||||
public function InitializeContent ()
|
public function InitializeContent ()
|
||||||
{
|
{
|
||||||
$this->title = "All authors";
|
$this->title = localize("authors.title");
|
||||||
$this->entryArray = Author::getAllAuthors();
|
$this->entryArray = Author::getAllAuthors();
|
||||||
$this->idPage = Author::ALL_AUTHORS_ID;
|
$this->idPage = Author::ALL_AUTHORS_ID;
|
||||||
}
|
}
|
||||||
|
@ -204,7 +254,7 @@ class PageAllTags extends Page
|
||||||
{
|
{
|
||||||
public function InitializeContent ()
|
public function InitializeContent ()
|
||||||
{
|
{
|
||||||
$this->title = "All tags";
|
$this->title = localize("tags.title");
|
||||||
$this->entryArray = Tag::getAllTags();
|
$this->entryArray = Tag::getAllTags();
|
||||||
$this->idPage = Tag::ALL_TAGS_ID;
|
$this->idPage = Tag::ALL_TAGS_ID;
|
||||||
}
|
}
|
||||||
|
@ -225,7 +275,7 @@ class PageAllSeries extends Page
|
||||||
{
|
{
|
||||||
public function InitializeContent ()
|
public function InitializeContent ()
|
||||||
{
|
{
|
||||||
$this->title = "All series";
|
$this->title = localize("series.title");
|
||||||
$this->entryArray = Serie::getAllSeries();
|
$this->entryArray = Serie::getAllSeries();
|
||||||
$this->idPage = Serie::ALL_SERIES_ID;
|
$this->idPage = Serie::ALL_SERIES_ID;
|
||||||
}
|
}
|
||||||
|
@ -236,7 +286,7 @@ class PageSerieDetail extends Page
|
||||||
public function InitializeContent ()
|
public function InitializeContent ()
|
||||||
{
|
{
|
||||||
$serie = Serie::getSerieById ($this->idGet);
|
$serie = Serie::getSerieById ($this->idGet);
|
||||||
$this->title = "Series : " . $serie->name;
|
$this->title = $serie->name;
|
||||||
$this->entryArray = Book::getBooksBySeries ($this->idGet);
|
$this->entryArray = Book::getBooksBySeries ($this->idGet);
|
||||||
$this->idPage = $serie->getEntryId ();
|
$this->idPage = $serie->getEntryId ();
|
||||||
}
|
}
|
||||||
|
@ -246,7 +296,7 @@ class PageAllBooks extends Page
|
||||||
{
|
{
|
||||||
public function InitializeContent ()
|
public function InitializeContent ()
|
||||||
{
|
{
|
||||||
$this->title = "All books by starting letter";
|
$this->title = localize ("allbooks.title");
|
||||||
$this->entryArray = Book::getAllBooks ();
|
$this->entryArray = Book::getAllBooks ();
|
||||||
$this->idPage = Book::ALL_BOOKS_ID;
|
$this->idPage = Book::ALL_BOOKS_ID;
|
||||||
}
|
}
|
||||||
|
@ -256,7 +306,7 @@ class PageAllBooksLetter extends Page
|
||||||
{
|
{
|
||||||
public function InitializeContent ()
|
public function InitializeContent ()
|
||||||
{
|
{
|
||||||
$this->title = "All books starting by " . $this->idGet;
|
$this->title = str_format (localize ("splitByLetter.letter"), localize ("bookword.title"), $this->idGet);
|
||||||
$this->entryArray = Book::getBooksByStartingLetter ($this->idGet);
|
$this->entryArray = Book::getBooksByStartingLetter ($this->idGet);
|
||||||
$this->idPage = Book::getEntryIdByLetter ($this->idGet);
|
$this->idPage = Book::getEntryIdByLetter ($this->idGet);
|
||||||
}
|
}
|
||||||
|
@ -266,7 +316,7 @@ class PageRecentBooks extends Page
|
||||||
{
|
{
|
||||||
public function InitializeContent ()
|
public function InitializeContent ()
|
||||||
{
|
{
|
||||||
$this->title = "Most recent books";
|
$this->title = localize ("recent.title");
|
||||||
$this->entryArray = Book::getAllRecentBooks ();
|
$this->entryArray = Book::getAllRecentBooks ();
|
||||||
$this->idPage = Book::ALL_RECENT_BOOKS_ID;
|
$this->idPage = Book::ALL_RECENT_BOOKS_ID;
|
||||||
}
|
}
|
||||||
|
@ -276,7 +326,7 @@ class PageQueryResult extends Page
|
||||||
{
|
{
|
||||||
public function InitializeContent ()
|
public function InitializeContent ()
|
||||||
{
|
{
|
||||||
$this->title = "Search result for query *" . $this->query . "*";
|
$this->title = "Search result for query *" . $this->query . "*"; // TODO I18N
|
||||||
$this->entryArray = Book::getBooksByQuery ($this->query);
|
$this->entryArray = Book::getBooksByQuery ($this->query);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
16
book.php
16
book.php
|
@ -121,7 +121,7 @@ class Book extends Base {
|
||||||
$addition = "";
|
$addition = "";
|
||||||
$se = $this->getSerie ();
|
$se = $this->getSerie ();
|
||||||
if (!is_null ($se)) {
|
if (!is_null ($se)) {
|
||||||
$addition = $addition . "<strong>Series : </strong>Book $this->seriesIndex in $se->name<br />\n";
|
$addition = $addition . "<strong>" . localize("content.series") . "</strong>" . str_format (localize ("content.series.data"), $this->seriesIndex, $se->name) . "<br />\n";
|
||||||
}
|
}
|
||||||
return $addition . strip_tags ($this->comment, '<div>');
|
return $addition . strip_tags ($this->comment, '<div>');
|
||||||
}
|
}
|
||||||
|
@ -188,12 +188,12 @@ class Book extends Base {
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach ($this->getAuthors () as $author) {
|
foreach ($this->getAuthors () as $author) {
|
||||||
array_push ($linkArray, new LinkNavigation ($author->getUri (), "related", "Other books by $author->name"));
|
array_push ($linkArray, new LinkNavigation ($author->getUri (), "related", str_format (localize ("bookentry.author"), localize ("splitByLetter.book.other"), $author->name)));
|
||||||
}
|
}
|
||||||
|
|
||||||
$serie = $this->getSerie ();
|
$serie = $this->getSerie ();
|
||||||
if (!is_null ($serie)) {
|
if (!is_null ($serie)) {
|
||||||
array_push ($linkArray, new LinkNavigation ($serie->getUri (), "related", "Other books by the serie $serie->name"));
|
array_push ($linkArray, new LinkNavigation ($serie->getUri (), "related", str_format (localize ("content.series.data"), $this->seriesIndex, $serie->name)));
|
||||||
}
|
}
|
||||||
|
|
||||||
return $linkArray;
|
return $linkArray;
|
||||||
|
@ -210,14 +210,14 @@ class Book extends Base {
|
||||||
global $config;
|
global $config;
|
||||||
$nBooks = parent::getDb ()->query('select count(*) from books')->fetchColumn();
|
$nBooks = parent::getDb ()->query('select count(*) from books')->fetchColumn();
|
||||||
$result = array();
|
$result = array();
|
||||||
$entry = new Entry ("Books",
|
$entry = new Entry (localize ("allbooks.title"),
|
||||||
self::ALL_BOOKS_ID,
|
self::ALL_BOOKS_ID,
|
||||||
"Alphabetical index of the $nBooks books", "text",
|
str_format (localize ("allbooks.alphabetical"), $nBooks), "text",
|
||||||
array ( new LinkNavigation ("?page=".parent::PAGE_ALL_BOOKS)));
|
array ( new LinkNavigation ("?page=".parent::PAGE_ALL_BOOKS)));
|
||||||
array_push ($result, $entry);
|
array_push ($result, $entry);
|
||||||
$entry = new Entry ("Recents books",
|
$entry = new Entry (localize ("recent.title"),
|
||||||
self::ALL_RECENT_BOOKS_ID,
|
self::ALL_RECENT_BOOKS_ID,
|
||||||
"Alphabetical index of the " . $config['cops_recentbooks_limit'] . " most recent books", "text",
|
str_format (localize ("recent.list"), $config['cops_recentbooks_limit']), "text",
|
||||||
array ( new LinkNavigation ("?page=".parent::PAGE_ALL_RECENT_BOOKS)));
|
array ( new LinkNavigation ("?page=".parent::PAGE_ALL_RECENT_BOOKS)));
|
||||||
array_push ($result, $entry);
|
array_push ($result, $entry);
|
||||||
return $result;
|
return $result;
|
||||||
|
@ -309,7 +309,7 @@ order by substr (upper (sort), 1, 1)");
|
||||||
while ($post = $result->fetchObject ())
|
while ($post = $result->fetchObject ())
|
||||||
{
|
{
|
||||||
array_push ($entryArray, new Entry ($post->title, Book::getEntryIdByLetter ($post->title),
|
array_push ($entryArray, new Entry ($post->title, Book::getEntryIdByLetter ($post->title),
|
||||||
"$post->count books", "text",
|
str_format (localize("bookword.many"), $post->count), "text",
|
||||||
array ( new LinkNavigation ("?page=".parent::PAGE_ALL_BOOKS_LETTER."&id=".$post->title))));
|
array ( new LinkNavigation ("?page=".parent::PAGE_ALL_BOOKS_LETTER."&id=".$post->title))));
|
||||||
}
|
}
|
||||||
return $entryArray;
|
return $entryArray;
|
||||||
|
|
172
lang/Localization_de.json
Normal file
172
lang/Localization_de.json
Normal file
|
@ -0,0 +1,172 @@
|
||||||
|
{
|
||||||
|
"boolean.no":"nein",
|
||||||
|
"boolean.yes":"ja",
|
||||||
|
"splitByLetter.letter":"{0} unter {1}",
|
||||||
|
"home.title":"Hauptkatalog",
|
||||||
|
"link.fullentry":"Vollständiger Eintrag",
|
||||||
|
"title.nextpage":"nächste Seite ({0} von {1})",
|
||||||
|
"title.lastpage":"nächste Seite (letzte)",
|
||||||
|
"title.numberOfPages":"{0} ({1} Seiten)",
|
||||||
|
"bookword.title":"Bücher",
|
||||||
|
"bookword.none":"Kein Buch",
|
||||||
|
"bookword.one":"1 Buch",
|
||||||
|
"bookword.many":"{0} Bücher",
|
||||||
|
"authorword.title":"Autoren",
|
||||||
|
"authorword.none":"Kein Autor",
|
||||||
|
"authorword.one":"1 Autor",
|
||||||
|
"authorword.many":"{0} Autoren",
|
||||||
|
"taglevelword.title":"Schlagwortebenen",
|
||||||
|
"taglevelword.none":"Keine Schlagwortebene",
|
||||||
|
"taglevelword.one":"1 Schlagwortebene",
|
||||||
|
"taglevelword.many":"{0} Schlagwortebenen",
|
||||||
|
"seriesword.title":"Serien",
|
||||||
|
"seriesword.none":"Keine Serie",
|
||||||
|
"seriesword.one":"1 Serie",
|
||||||
|
"seriesword.many":"{0} Serien",
|
||||||
|
"tagword.title":"Schlagwörter",
|
||||||
|
"tagword.none":"Kein Schlagwort",
|
||||||
|
"tagword.one":"1 Schlagwort",
|
||||||
|
"tagword.many":"{0} Schlagwörter",
|
||||||
|
"content.tags":"Schlagwörter: ",
|
||||||
|
"content.series":"Serien: ",
|
||||||
|
"content.series.data":"Buch {0} der {1} - Reihe",
|
||||||
|
"content.publisher":"Verlag: ",
|
||||||
|
"content.publisher.data":"Veröffentlicht {1} von {0}",
|
||||||
|
"content.summary":"Inhalt: ",
|
||||||
|
"bookentry.series":"Buch {0} der {1} - Reihe",
|
||||||
|
"bookentry.author":"{0} von {1}",
|
||||||
|
"bookentry.tags":"{0} unter {1}",
|
||||||
|
"bookentry.ratings":"{0} bewertet mit {1}",
|
||||||
|
"bookentry.goodreads":"Dieses Buch bei Goodreads",
|
||||||
|
"bookentry.goodreads.review":"Rezensiere dieses Buch bei Goodreads",
|
||||||
|
"bookentry.goodreads.author":"{0} bei Goodreads",
|
||||||
|
"bookentry.wikipedia":"Dieses Buch bei Wikipedia",
|
||||||
|
"bookentry.wikipedia.author":"{0} bei Wikipedia",
|
||||||
|
"bookentry.librarything":"Dieses Buch bei LibraryThing",
|
||||||
|
"bookentry.librarything.author":"{0} bei LibraryThing",
|
||||||
|
"bookentry.amazon":"Dieses Buch bei Amazon",
|
||||||
|
"bookentry.amazon.author":"{0} bei Amazon",
|
||||||
|
"bookentry.isfdb.author":"{0} bei ISFDB",
|
||||||
|
"bookentry.download":"Lade dieses eBook als {0}",
|
||||||
|
"bookentry.rated":"{0} {1}",
|
||||||
|
"bookentry.fullentrylink":"Vollständiger Eintrag",
|
||||||
|
"tags.title":"Schlagwörter",
|
||||||
|
"tags.categorized":"Index der {0} Schlagwörter nach Kategorien",
|
||||||
|
"tags.categorized.single":"Index des Schlagworts nach Kategorien - sehr nützlich ;)",
|
||||||
|
"tags.alphabetical":"Alphabetischer Index der {0} Schlagwörter",
|
||||||
|
"tags.alphabetical.single":"Alphabetischer Index des Schlagworts ;)",
|
||||||
|
"splitByLetter.tag.other":"Andere Schlagwörter",
|
||||||
|
"authors.series.title":"Serien: {0}",
|
||||||
|
"authors.title":"Autoren",
|
||||||
|
"authors.alphabetical":"Alphabetischer Index der {0} Autoren",
|
||||||
|
"authors.alphabetical.single":"Alphabetischer Index des Autors - unglaublich nützlich ;)",
|
||||||
|
"splitByLetter.author.other":"Andere Autoren",
|
||||||
|
"series.title":"Serien",
|
||||||
|
"series.alphabetical":"Alphabetischer Index der {0} Serien",
|
||||||
|
"series.alphabetical.single":"Alphabetischer Index der Serie - äußerst nützlich ;)",
|
||||||
|
"splitByLetter.series.other":"Andere Serien",
|
||||||
|
"recent.title":"Neuzugänge",
|
||||||
|
"recent.list":"{0} neue Bücher",
|
||||||
|
"recent.list.single":"Das neueste einzige Buch - der Trend geht zum Zweitbuch ;)",
|
||||||
|
"rating.title":"Bewertung",
|
||||||
|
"rating.summary":"{0}, gruppiert nach Bewertung",
|
||||||
|
"allbooks.title":"Alle Bücher",
|
||||||
|
"allbooks.alphabetical":"Alphabetischer Index der {0} Bücher",
|
||||||
|
"allbooks.alphabetical.single":"Alphabetischer Index des einzigen Buchs - unverzichtbar ;)",
|
||||||
|
"splitByLetter.book.other":"Andere Bücher",
|
||||||
|
"main.title":"Calibre Bibliothek",
|
||||||
|
"main.summary":"{0} hat {1} katalogisierte Bücher",
|
||||||
|
"info.databasefolderset":"Das Datenbankverzeichnis wurde gesetzt",
|
||||||
|
"info.targetfolderset":"Der Zielordner wurde gesetzt",
|
||||||
|
"info.started":"Gestartet",
|
||||||
|
"info.completed":"Fertig",
|
||||||
|
"error.cannotTransform":"kann {0} nicht verarbeiten",
|
||||||
|
"error.notYetReady":"Noch nicht bereit",
|
||||||
|
"error.nodatabase":"Die Calibre Datenbank (metadata.db) kann bei {0} nicht gefunden werden",
|
||||||
|
"error.nogeneratetype":"Es wurden weder ODPS noch HTML Optionen zur Katalog-Erstellung gesetzt.",
|
||||||
|
"error.nocatalog":"Katalogverzeichnis nicht ausgewählt ",
|
||||||
|
"error.targetdoesnotexist":"Das Zielverzeichnis existiert nicht; soll es erstellt werden ?",
|
||||||
|
"error.targetsame":"Das Zielverzeichnis darf nicht identisch mit dem Datenbankverzeichnis sein",
|
||||||
|
"error.targetparent":"Das Zielverzeichnis darf das Datenbankverzeichnis nicht enthalten",
|
||||||
|
"error.noSubcatalog":"Der Katalog kann nicht erstellt werden, da alle Subsektionen abgewählt sind.",
|
||||||
|
"error.nobooks":"In der Calibre Bibliothek konnte kein Buch gefunden werden, das den Aufnahmekriterien entspricht. Ist die Liste der Formate korrekt ?",
|
||||||
|
"error.loadingThumbnail":"Fehler beim Laden der Bild-Datei {0}",
|
||||||
|
"error.savingThumbnail":"Fehler beim Speichern der Vorschaubilderdatei {0}",
|
||||||
|
"error.generatingThumbnail":"Fehler beim Erzeugen des Vorschaubilds für {0}",
|
||||||
|
"error.noPublishedDate":"Das Publikationsdatum des Buchs ist nicht gesetzt",
|
||||||
|
"error.noAddedDate":"Das Eintragsdatum des Buchs ist nicht gesetzt",
|
||||||
|
"error.loadingProperties":"Fehler beim Laden der Eigenschaften",
|
||||||
|
"error.userAbort":"Katalogerstellung abgebrochen",
|
||||||
|
"error.crashAbort":"Fürchterlicher Fehler während der Katalogerstellung. Für Details siehe Log-Datei",
|
||||||
|
"error.unexpectedFatal":"Unerwarteter grausamer Fehler während der Katalogerstellung",
|
||||||
|
"error.cause":"Ursache",
|
||||||
|
"error.message":"Nachricht",
|
||||||
|
"error.stackTrace":"Stapelrückverfolgung",
|
||||||
|
"i18n.downloads":"Downloads, Links und andere Kataloge",
|
||||||
|
"i18n.links":"Links und andere Kataloge",
|
||||||
|
"i18n.coversection":"Cover",
|
||||||
|
"i18n.downloadfile":"Download Datei",
|
||||||
|
"i18n.downloadsection":"Downloads",
|
||||||
|
"i18n.relatedsection":"Verwandte Kataloge",
|
||||||
|
"i18n.linksection":"Externe Links",
|
||||||
|
"i18n.backToMain":"Zurück zur Hauptseite des Katalogs",
|
||||||
|
"i18n.summarysection":"Zusammenfassung",
|
||||||
|
"i18n.dateGenerated":"Katalog erstellt am {0}",
|
||||||
|
"deeplevel.summary":"{0} aufgeschlüsselt nach Autoren, Schlagwörter, etc.",
|
||||||
|
"about.title":"Calibre2Opds Dokumentation",
|
||||||
|
"about.summary":"Anmerkungen zur Verwendung von Calibre2Opds",
|
||||||
|
"usage.intro":"Die Optionen werden der Konfigurationsdatei in {0} entnommen",
|
||||||
|
"intro.goal":"Erstelle OPDS und HTML Kataloge der Calibre eBooks Datenbank",
|
||||||
|
"intro.wiki.title":"Calibre2opds Projektseite:",
|
||||||
|
"intro.wiki.url":"http://calibre2opds.com",
|
||||||
|
"intro.team.title":"Das Calibre2Opds Team:",
|
||||||
|
"intro.team.list1":"David Pierron - Hauptprogrammer",
|
||||||
|
"intro.team.list2":"Dave Walker - Guru, Manager der Features und Tester der Extraklasse",
|
||||||
|
"intro.team.list3":"Farid Soussi - CSS und HTML Guru",
|
||||||
|
"intro.team.list4":"Douglas Steele - Programmierung",
|
||||||
|
"intro.team.list5":"Jane Litte - Beta Tests und moralische Unterstützung",
|
||||||
|
"intro.thanks.1":"Speziellen Dank an Kb Sriram, der nicht nur Trook, eine exzellente und OPDS kompatible ",
|
||||||
|
"intro.thanks.2":"Bibliotheksverwaltung programmierte, sondern auch einen Nook spendete !",
|
||||||
|
"info.step.started":"Beginne Katalogerstellung",
|
||||||
|
"info.step.database":"Datenbank wird geladen und gefiltert",
|
||||||
|
"info.steo.books":"Erstelle Bucheinträge",
|
||||||
|
"info.step.tags":"Erstelle Schlagwortkatalog",
|
||||||
|
"info.step.authors":"Erstelle Autorenkatalog",
|
||||||
|
"info.step.series":"Erstelle Serienkatalog",
|
||||||
|
"info.step.recent":"Erstelle Katalog für Neuzugänge",
|
||||||
|
"info.step.rated":"Erstelle Bewertungskatalog",
|
||||||
|
"info.step.allbooks":"Erstelle Katalog aller Bücher",
|
||||||
|
"info.step.covers":"Erstelle Cover Dateien",
|
||||||
|
"info.step.index":"Erstelle Suchindex",
|
||||||
|
"info.step.reprocessingEpubMetadata":"Bearbeite ePub Metadaten",
|
||||||
|
"info.step.thumbnails":"Erstelle Vorschaubilder",
|
||||||
|
"info.step.copycat":"Katalog kopieren",
|
||||||
|
"info.step.copylib":"Bibliothek kopieren",
|
||||||
|
"info.step.donein":"Erledigt in {0} Millisekunden",
|
||||||
|
"info.thumbnails.donein":"{0} Sekunden zur Erzeugung der Vorschaubilder benötigt",
|
||||||
|
"info.html.donein":"{0} Sekunden zur Erzeugung der HTML Kataloge benötigt",
|
||||||
|
"info.step.done":"{0} enthält nun die Kataloge",
|
||||||
|
"info.step.done.gui":"Kataloge wurden erstellt",
|
||||||
|
"info.step.done.nook":"Dein Nook",
|
||||||
|
"info.step.done.andYourDb":" und dein Calibreverzeichnis",
|
||||||
|
"info.step.tidyingtarget":"Nicht mehr benötigte Dateien im Zielverzeichnis werden entfernt",
|
||||||
|
"info.step.deletingfiles":"Temporäre Dateien werden gelöscht",
|
||||||
|
"info.step.loadingcache":"Lade Cache",
|
||||||
|
"info.step.savingcache":"Speichere Cache",
|
||||||
|
"info.step.featuredbooks":"Katalog der vorgestellten Bücher wird erstellt",
|
||||||
|
"info.step.customcatalogs":"Benutzerdefinierte Kataloge werden erstellt",
|
||||||
|
"stats.library.header":"Bibliotheksstatistik",
|
||||||
|
"stats.run.header":"Statistik starten",
|
||||||
|
"stats.run.metadata":"ePub Metadaten geändert",
|
||||||
|
"stats.run.thumbnails":"Vorschaubilder erstellt",
|
||||||
|
"stats.run.covers":"Cover reformatiert",
|
||||||
|
"stats.copy.header":"Datei Kopiestatistik",
|
||||||
|
"stats.copy.notexist":"JA: Ziel existiert nicht",
|
||||||
|
"stats.copy.lengthdiffer":"JA: Grösse differiert",
|
||||||
|
"stats.copy.unchecked":"JA: CRC nicht geprüft",
|
||||||
|
"stats.copy.crcdiffer":"JA: CRC differiert",
|
||||||
|
"stats.copy.crcsame":"NEIN: CRC ident",
|
||||||
|
"stats.copy.older":"NEIN: Ursprung älter",
|
||||||
|
"stats.copy.toself":"NEIN: Ursprungsdatei und Zieldatei sind ident",
|
||||||
|
"fin":"fin"
|
||||||
|
}
|
196
lang/Localization_en.json
Normal file
196
lang/Localization_en.json
Normal file
|
@ -0,0 +1,196 @@
|
||||||
|
{
|
||||||
|
"boolean.no":"no",
|
||||||
|
"boolean.yes":"yes",
|
||||||
|
"splitByLetter.letter":"{0} starting with {1}",
|
||||||
|
"home.title":"Main catalog",
|
||||||
|
"link.fullentry":"Full entry",
|
||||||
|
"title.nextpage":"next page ({0} of {1})",
|
||||||
|
"title.lastpage":"next page (last)",
|
||||||
|
"title.numberOfPages":"{0} ({1} pages)",
|
||||||
|
"bookword.title":"Books",
|
||||||
|
"bookword.none":"No book",
|
||||||
|
"bookword.one":"1 book",
|
||||||
|
"bookword.many":"{0} books",
|
||||||
|
"authorword.title":"Authors",
|
||||||
|
"authorword.none":"No author",
|
||||||
|
"authorword.one":"1 author",
|
||||||
|
"authorword.many":"{0} authors",
|
||||||
|
"taglevelword.title":"Tag levels",
|
||||||
|
"taglevelword.none":"No tag level",
|
||||||
|
"taglevelword.one":"1 tag level",
|
||||||
|
"taglevelword.many":"{0} tag levels",
|
||||||
|
"seriesword.title":"Series",
|
||||||
|
"seriesword.none":"No series",
|
||||||
|
"seriesword.one":"1 series",
|
||||||
|
"seriesword.many":"{0} series",
|
||||||
|
"tagword.title":"Tags",
|
||||||
|
"tagword.none":"No tag",
|
||||||
|
"tagword.one":"1 tag",
|
||||||
|
"tagword.many":"{0} tags",
|
||||||
|
"content.tags":"Tags:",
|
||||||
|
"content.series":"Series:",
|
||||||
|
"content.series.data":"Book {0} in the {1} series",
|
||||||
|
"content.publisher":"Publisher:",
|
||||||
|
"content.published":"Published:",
|
||||||
|
"content.publisher.data":"Published {1} by {0}",
|
||||||
|
"content.summary":"Summary:",
|
||||||
|
"bookentry.series":"Book {0} in the {1} series",
|
||||||
|
"bookentry.author":"{0} by {1}",
|
||||||
|
"bookentry.tags":"{0} in {1}",
|
||||||
|
"bookentry.ratings":"{0} rated {1}",
|
||||||
|
"bookentry.goodreads":"This book on Goodreads",
|
||||||
|
"bookentry.goodreads.review":"Review this book on Goodreads",
|
||||||
|
"bookentry.goodreads.author":"{0} on Goodreads",
|
||||||
|
"bookentry.wikipedia":"This book on Wikipedia",
|
||||||
|
"bookentry.wikipedia.author":"{0} on Wikipedia",
|
||||||
|
"bookentry.librarything":"This book on LibraryThing",
|
||||||
|
"bookentry.librarything.author":"{0} on LibraryThing",
|
||||||
|
"bookentry.amazon":"This book on Amazon",
|
||||||
|
"bookentry.amazon.author":"{0} on Amazon",
|
||||||
|
"bookentry.isfdb.author":"{0} on ISFDB",
|
||||||
|
"bookentry.download":"Download this ebook as {0}",
|
||||||
|
"bookentry.rated":"{0} {1}",
|
||||||
|
"bookentry.fullentrylink":"Full entry",
|
||||||
|
"tags.title":"Tags",
|
||||||
|
"tags.categorized":"Categorized index of the {0} tags",
|
||||||
|
"tags.categorized.single":"Categorized index of the single tag - very useful indeed ;)",
|
||||||
|
"tags.alphabetical":"Alphabetical index of the {0} tags",
|
||||||
|
"tags.alphabetical.single":"Alphabetical index of the single tag ;)",
|
||||||
|
"splitByLetter.tag.other":"Other tags",
|
||||||
|
"authors.series.title":"Series: {0}",
|
||||||
|
"authors.title":"Authors",
|
||||||
|
"authors.alphabetical":"Alphabetical index of the {0} authors",
|
||||||
|
"authors.alphabetical.single":"Alphabetical index of the single author - very useful indeed ;)",
|
||||||
|
"splitByLetter.author.other":"Other authors",
|
||||||
|
"series.title":"Series",
|
||||||
|
"series.alphabetical":"Alphabetical index of the {0} series",
|
||||||
|
"series.alphabetical.single":"Alphabetical index of the single series - very useful indeed ;)",
|
||||||
|
"splitByLetter.series.other":"Other series",
|
||||||
|
"recent.title":"Recent additions",
|
||||||
|
"recent.list":"{0} most recent books",
|
||||||
|
"recent.list.single":"Most recent single book - very useful indeed ;)",
|
||||||
|
"rating.title":"Rating",
|
||||||
|
"rating.summary":"{0}, grouped by rating",
|
||||||
|
"allbooks.title":"All books",
|
||||||
|
"allbooks.alphabetical":"Alphabetical index of the {0} books",
|
||||||
|
"allbooks.alphabetical.single":"Alphabetical index of the single book - very useful indeed ;)",
|
||||||
|
"splitByLetter.book.other":"Other books",
|
||||||
|
"main.title":"Calibre library",
|
||||||
|
"main.summary":"{0} has catalogued {1}",
|
||||||
|
"info.databasefolderset":"The database folder has been set",
|
||||||
|
"info.targetfolderset":"The target folder has been set",
|
||||||
|
"info.started":"Started",
|
||||||
|
"info.completed":"Completed",
|
||||||
|
"startup.newhome":"Default configuration folder home redirected to {0}",
|
||||||
|
"startup.redirectfound":".redirect file found in {0}",
|
||||||
|
"startup.redirectreadfail":"... failure reading .redirect file",
|
||||||
|
"startup.redirectnotfound":"... unable to find redirect folder {0}",
|
||||||
|
"startup.redirectabandoned":"... so redirect abandoned",
|
||||||
|
"startup.redirecting":"redirecting home folder to {0}",
|
||||||
|
"startup.configusing":"Using configuration folder {0}",
|
||||||
|
"startup.folderuserhome":"Try configuration folder in user home folder {0}",
|
||||||
|
"startup.foldertilde":"Try configuration folder from tilde folder {0}",
|
||||||
|
"startup.folderjar":"Try configuration folder from .jar location {0}",
|
||||||
|
"startup.foldernotexist":"... but specified folder does not exist",
|
||||||
|
"error.cannotTransform":"cannot transform {0}",
|
||||||
|
"error.notYetReady":"Not yet ready for use",
|
||||||
|
"error.searchnotfound":"Cannot find the specified search in the Calibre database",
|
||||||
|
"error.searchparsefailure":"Cannot interpret the search. Check that you have limited yourself to the fields and syntax described in the documentation.",
|
||||||
|
"error.databasenotset":"The database folder must be specified. This is the same as the Calibre library folder.",
|
||||||
|
"error.nodatabase":"The Calibre database (a file named metadata.db) cannot be found at {0}. This file is always located in the calibre library folder.",
|
||||||
|
"error.nogeneratetype":"Neither OPDS or HTML catalog generation options are set.",
|
||||||
|
"error.nocatalog":"Catalog folder not specified",
|
||||||
|
"error.badcatalog":"Catalog folder name invalid",
|
||||||
|
"error.targetdoesnotexist":"The target folder does not exist; create it ?",
|
||||||
|
"error.targetnotset":"The target folder is not set and this is mandatory in Publish mode. You are expected to use an existing folder (typically on a network server)",
|
||||||
|
"error.nooktargetnot set":"The target folder is not set and this is mandatory in Nook mode. In Nook mode you are expected to use an existing folder on the Nook (typically My Documents)",
|
||||||
|
"error.nooktargetdoesnotexist":"The target folder does not exist. In Nook mode you are expected to use an existing folder on the Nook (typically My Documents)",
|
||||||
|
"error.targetsame":"The target folder cannot be the same as the Database folder",
|
||||||
|
"error.targetparent":"The target folder cannot be a folder that contains the Database folder",
|
||||||
|
"error.noSubcatalog":"Cannot generate a catalog as you have disabled the generation of all normal sub-catalog sections and no external custom catalogs have been specified. ",
|
||||||
|
"error.nobooks":"No books found in Calibre Library meeting criteria for inclusion in Catalog. Is your list of formats correct?",
|
||||||
|
"error.loadingThumbnail":"An error occured while loading the image file {0}",
|
||||||
|
"error.savingThumbnail":"An error occured while saving the thumbnail file {0}",
|
||||||
|
"error.generatingThumbnail":"An error occured while generating the thumbnail for {0}",
|
||||||
|
"error.noPublishedDate":"The Published Date is not set for book",
|
||||||
|
"error.noAddedDate":"The Date added is not set for book",
|
||||||
|
"error.loadingProperties":"Error while loading properties",
|
||||||
|
"error.badComment":"Invalid XHTML in the comment field for Book (Id={0}) {1}",
|
||||||
|
"error.userAbort":"User stopped the catalog generation",
|
||||||
|
"error.crashAbort":"Fatal error during catalog generation. See log file for more detail.",
|
||||||
|
"error.unexpectedFatal":"Unexpected fatal error during catalog generation. See log file for more detail.",
|
||||||
|
"error.cause":"cause",
|
||||||
|
"error.message":"message",
|
||||||
|
"error.stackTrace":"stack trace",
|
||||||
|
"i18n.and":"and",
|
||||||
|
"i18n.downloads":"Downloads, links and other catalogs",
|
||||||
|
"i18n.links":"Links and other catalogs",
|
||||||
|
"i18n.coversection":"Cover",
|
||||||
|
"i18n.downloadfile":"Download file",
|
||||||
|
"i18n.downloadsection":"Downloads",
|
||||||
|
"i18n.relatedsection":"Related catalogs",
|
||||||
|
"i18n.linksection":"External links",
|
||||||
|
"i18n.backToMain":"Back to the main page of the catalog",
|
||||||
|
"i18n.summarysection":"Summary",
|
||||||
|
"i18n.dateGenerated":"Catalog generated on {0}",
|
||||||
|
"deeplevel.summary":"{0} broken up by authors, tags, etc. ",
|
||||||
|
"about.title":"Calibre2Opds Documentation",
|
||||||
|
"about.summary":"Notes on using Calibre2Opds",
|
||||||
|
"usage.intro":"The options are taken from the configuration file located at {0}",
|
||||||
|
"intro.goal":"Generate OPDS and HTML catalogs from your Calibre ebooks database",
|
||||||
|
"intro.wiki.title":"The project''s home : ",
|
||||||
|
"intro.wiki.url":"http://calibre2opds.com",
|
||||||
|
"intro.team.title":"The Calibre2Opds team :",
|
||||||
|
"intro.team.list1":"David Pierron - main programmer",
|
||||||
|
"intro.team.list2":"Dave Walker - guru, features manager and tester extraordinaire",
|
||||||
|
"intro.team.list3":"Farid Soussi - css and html guru",
|
||||||
|
"intro.team.list4":"Douglas Steele - programmer",
|
||||||
|
"intro.team.list5":"Jane Litte - beta tester and moral support",
|
||||||
|
"intro.thanks.1":"Special thanks to Kb Sriram, who not only programmed Trook, an excellent and OPDS compatible ",
|
||||||
|
"intro.thanks.2":"library manager for the Nook, but also was kind enough to donate a Nook !",
|
||||||
|
"info.step.started":"started catalog generation",
|
||||||
|
"info.step.database":"loading and filtering database",
|
||||||
|
"info.steo.books":"generating book entries",
|
||||||
|
"info.step.tags":"generating tags catalog",
|
||||||
|
"info.step.authors":"generating authors catalog",
|
||||||
|
"info.step.series":"generating series catalog",
|
||||||
|
"info.step.recent":"generating recent books catalog",
|
||||||
|
"info.step.rated":"generating books rating catalog",
|
||||||
|
"info.step.allbooks":"generating all books catalog",
|
||||||
|
"info.step.covers":"generating the cover files",
|
||||||
|
"info.step.index":"generating the search index",
|
||||||
|
"info.step.reprocessingEpubMetadata":"reprocessing the ePub metadata",
|
||||||
|
"info.step.thumbnails":"generating the thumbnail files",
|
||||||
|
"info.step.copycat":"copy the catalog",
|
||||||
|
"info.step.copylib":"copy the library",
|
||||||
|
"info.step.donein":"done in {0} millisec.",
|
||||||
|
"info.thumbnails.donein":"spent {0} sec. creating thumbnails",
|
||||||
|
"info.html.donein":"spent {0} sec. creating HTML catalogs",
|
||||||
|
"info.step.done":"{0} now contains the catalogs",
|
||||||
|
"info.step.done.gui":"created the catalogs",
|
||||||
|
"info.step.done.nook":"Your Nook",
|
||||||
|
"info.step.done.andYourDb":" and your Calibre folder",
|
||||||
|
"info.step.tidyingtarget":"Removing superflous files on target",
|
||||||
|
"info.step.deletingfiles":"Deleting temporary Files",
|
||||||
|
"info.step.loadingcache":"Loading cache",
|
||||||
|
"info.step.savingcache":"Saving cache",
|
||||||
|
"info.step.featuredbooks":"generating featured books catalog",
|
||||||
|
"info.step.customcatalogs":"generating custom catalogs",
|
||||||
|
"stats.library.header":"Library Statistics",
|
||||||
|
"stats.run.header":"Run Statistics",
|
||||||
|
"stats.run.metadata":"ePub Metadata updated",
|
||||||
|
"stats.run.thumbnails":"thumbnails generated",
|
||||||
|
"stats.run.covers":"resized covers generated",
|
||||||
|
"stats.copy.header":"File Copying Statistics",
|
||||||
|
"stats.copy.notexist":"YES: Target does not exist",
|
||||||
|
"stats.copy.lengthdiffer":"YES: Length different",
|
||||||
|
"stats.copy.unchecked":"YES: CRC not checked",
|
||||||
|
"stats.copy.crcdiffer":"YES: CRC different",
|
||||||
|
"stats.copy.crcsame":"NO: CRC same",
|
||||||
|
"stats.copy.older":"NO: Source older ",
|
||||||
|
"stats.copy.toself":"NO: Source and Target same file",
|
||||||
|
"stats.search.header":"Search Database Statistics",
|
||||||
|
"stats.search.dbsize":"Bytes",
|
||||||
|
"stats.search.keywords":"Keywords",
|
||||||
|
"fin":"fin"
|
||||||
|
}
|
125
lang/Localization_es.json
Normal file
125
lang/Localization_es.json
Normal file
|
@ -0,0 +1,125 @@
|
||||||
|
{
|
||||||
|
"boolean.yes":"si",
|
||||||
|
"splitByLetter.letter":"{0} que empiezan por {1}",
|
||||||
|
"home.title":"Catalogo principal",
|
||||||
|
"link.fullentry":"Entrada completa",
|
||||||
|
"title.nextpage":"next page ({0} de {1})",
|
||||||
|
"title.lastpage":"pagina siguiente (ultima)",
|
||||||
|
"title.numberOfPages":"{0} ({1} paginas)",
|
||||||
|
"bookword.title":"Libros",
|
||||||
|
"bookword.none":"Sin libros",
|
||||||
|
"bookword.one":"1 libro",
|
||||||
|
"bookword.many":"{0} libros",
|
||||||
|
"authorword.title":"Autores",
|
||||||
|
"authorword.none":"Sin autor",
|
||||||
|
"authorword.one":"1 autor",
|
||||||
|
"authorword.many":"{0} autores",
|
||||||
|
"taglevelword.title":"Niveles de Etiquetas",
|
||||||
|
"taglevelword.none":"Sin nivel de etiquetas",
|
||||||
|
"taglevelword.one":"1 nivel de etiqueta",
|
||||||
|
"taglevelword.many":"{0} niveles de etiquetas",
|
||||||
|
"seriesword.none":"Sin series",
|
||||||
|
"seriesword.one":"1 serie",
|
||||||
|
"seriesword.many":"series",
|
||||||
|
"tagword.title":"Etiquetas",
|
||||||
|
"tagword.none":"Sin etiquetas",
|
||||||
|
"tagword.one":"1 etiqueta",
|
||||||
|
"tagword.many":"etiquetas",
|
||||||
|
"content.tags":"Etiquetas:",
|
||||||
|
"content.series.data":"Libro {0} en la {1} serie",
|
||||||
|
"content.publisher":"Editorial:",
|
||||||
|
"content.publisher.data":"Publicado {1} por {0}",
|
||||||
|
"content.summary":"Sumario:",
|
||||||
|
"bookentry.series":"Libro {0} en la {1} serie",
|
||||||
|
"bookentry.author":"{0} de {1}",
|
||||||
|
"bookentry.tags":"{0} en {1}",
|
||||||
|
"bookentry.ratings":"{0} puntuados {1}",
|
||||||
|
"bookentry.goodreads":"Este libro en Goodreads",
|
||||||
|
"bookentry.goodreads.review":"Comenta este libro en Goodreads",
|
||||||
|
"bookentry.goodreads.author":"{0} en Goodreads",
|
||||||
|
"bookentry.wikipedia":"Este libro en Wikipedia",
|
||||||
|
"bookentry.wikipedia.author":"{0} en Wikipedia",
|
||||||
|
"bookentry.librarything":"Este libro en LibraryThing",
|
||||||
|
"bookentry.librarything.author":"{0} en LibraryThing",
|
||||||
|
"bookentry.amazon":"Este libro en Amazon",
|
||||||
|
"bookentry.amazon.author":"{0} en Amazon",
|
||||||
|
"bookentry.isfdb.author":"{0} en ISFDB",
|
||||||
|
"bookentry.download":"Descargar este libro como {0}",
|
||||||
|
"bookentry.rated":"{0} {1}",
|
||||||
|
"bookentry.fullentrylink":"Entrada completa",
|
||||||
|
"tags.title":"etiquetas",
|
||||||
|
"tags.categorized":"Listado por categorias de las {0} etiquetas",
|
||||||
|
"tags.categorized.single":"Listado por categorias de la unica etiqueta - muy util ;)",
|
||||||
|
"tags.alphabetical":"Listado alfabético de las {0} etiquetas",
|
||||||
|
"tags.alphabetical.single":"Listado Alfabético de la unica etiqueta ;)",
|
||||||
|
"splitByLetter.tag.other":"Otras etiquetas",
|
||||||
|
"authors.series.title":"Series",
|
||||||
|
"authors.title":"Autores",
|
||||||
|
"authors.alphabetical":"Indice alfabético de {0}",
|
||||||
|
"authors.alphabetical.single":"Indice de un solo autor",
|
||||||
|
"splitByLetter.author.other":"Otros Autores",
|
||||||
|
"series.title":"Series:",
|
||||||
|
"series.alphabetical":"Indice alfabético de {0}",
|
||||||
|
"series.alphabetical.single":"Indice de una sola serie",
|
||||||
|
"splitByLetter.series.other":"Otras series",
|
||||||
|
"recent.title":"Añadidos recientemente",
|
||||||
|
"recent.list":"{0} libros más recientes",
|
||||||
|
"recent.list.single":"El libro más reciente",
|
||||||
|
"rating.title":"Valoración",
|
||||||
|
"rating.summary":"{0}, agrupados por valoración",
|
||||||
|
"allbooks.title":"Todos los libros",
|
||||||
|
"allbooks.alphabetical":"Indice alfabético de {0} libros",
|
||||||
|
"allbooks.alphabetical.single":"Indice de un solo ",
|
||||||
|
"splitByLetter.book.other":"Otros libros",
|
||||||
|
"main.title":"Biblioteca generada de calibre",
|
||||||
|
"main.summary":"{0} ha catalogado {1}",
|
||||||
|
"info.databasefolderset":"El directorio de la base de datos",
|
||||||
|
"info.targetfolderset":"Se ha establecido el directorio de destino",
|
||||||
|
"error.cannotTransform":"Error transformando {0}",
|
||||||
|
"error.nodatabase":"La base de datos de calibre (un fichero llamadometadata.db) no se puede encontrar en {0}",
|
||||||
|
"error.targetdoesnotexist":"El directorio de destino no existe, ¿crearlo?",
|
||||||
|
"error.loadingThumbnail":"Ocurrio un error cargando la imagen {0}",
|
||||||
|
"error.savingThumbnail":"Ocurrio un error guardando la miniatura de la imagen {0}",
|
||||||
|
"error.generatingThumbnail":"Ocurrio un error generando la miniatura de la imagen {0}",
|
||||||
|
"i18n.downloads":"Descargas, enlaces y otros catálogos",
|
||||||
|
"i18n.links":"Enlaces y otros catálogos",
|
||||||
|
"i18n.downloadfile":"Descargar fichero",
|
||||||
|
"i18n.downloadsection":"Descargas, enlaces y otros",
|
||||||
|
"i18n.relatedsection":"Catálogos relacionados",
|
||||||
|
"i18n.linksection":"Enlaces externos",
|
||||||
|
"i18n.backToMain":"Volver a la página de inicio del catálogo",
|
||||||
|
"i18n.summarysection":"Resumen",
|
||||||
|
"i18n.dateGenerated":"Catálogo creado el {0}",
|
||||||
|
"deeplevel.summary":"{0} por autores, etiquetas, etc.",
|
||||||
|
"about.title":"Documentación de Calibre2Opds",
|
||||||
|
"about.summary":"Notas de Uso",
|
||||||
|
"usage.intro":"Las opciones provienen del fichero de configuración presente en: {0}",
|
||||||
|
"intro.goal":"Genear catálogos OPDS y HTML desde la biblioteca de calibre",
|
||||||
|
"intro.team.title":"El equipo de Calibre2Opds:",
|
||||||
|
"intro.team.list1":"David Pierron - Programador principal",
|
||||||
|
"intro.team.list2":"Dave Walker - guru, opciones, gestión y tester extraordinaire",
|
||||||
|
"intro.team.list4":"Douglas Steele - programador",
|
||||||
|
"intro.team.list5":"Jane Litte - beta tester y apoyo moral",
|
||||||
|
"intro.thanks.1":"Gracias especiales a Kb Sriram, que no solo ha programado Trook, un gestor de bibliotecas OPDS excelente y compatible",
|
||||||
|
"intro.thanks.2":"con el Nook, sino que además ha sido tan amable de donar un Nook",
|
||||||
|
"info.step.database":"cargando y filtrando la base de datos",
|
||||||
|
"info.step.tags":"generando catálogo de etiquetas",
|
||||||
|
"info.step.authors":"generando catálogo de autores",
|
||||||
|
"info.step.series":"generando catálogo de series",
|
||||||
|
"info.step.recent":"generando catálogo de libros recientes",
|
||||||
|
"info.step.rated":"generando catálogo de valoraciones",
|
||||||
|
"info.step.allbooks":"generando catálogo de todos los libros",
|
||||||
|
"info.step.covers":"generando las portadas",
|
||||||
|
"info.step.reprocessingEpubMetadata":"procesando los metadatos de los ePUBs",
|
||||||
|
"info.step.thumbnails":"generando las miniaturas de imágenes",
|
||||||
|
"info.step.copycat":"copia del catálogo",
|
||||||
|
"info.step.copylib":"copia la biblioteca",
|
||||||
|
"info.step.donein":"terminado en {0} ms.",
|
||||||
|
"info.thumbnails.donein":"Tardó {0} seg. en crear las miniaturas",
|
||||||
|
"info.html.donein":"Tardó {0} sec. en crear el catálogo HTML",
|
||||||
|
"info.step.done":"{0} contiene ahora el catálogo",
|
||||||
|
"info.step.done.gui":"catálogo creado",
|
||||||
|
"info.step.done.nook":"Su Nook",
|
||||||
|
"info.step.done.andYourDb":"y su directorio de calibre",
|
||||||
|
"fin":"fin"
|
||||||
|
}
|
169
lang/Localization_fr.json
Normal file
169
lang/Localization_fr.json
Normal file
|
@ -0,0 +1,169 @@
|
||||||
|
{
|
||||||
|
"boolean.no":"non",
|
||||||
|
"boolean.yes":"oui",
|
||||||
|
"splitByLetter.letter":"{0} débutant par {1}",
|
||||||
|
"home.title":"Catalogue principal",
|
||||||
|
"link.fullentry":"Entrée complète",
|
||||||
|
"title.nextpage":"page suivante ({0} sur {1})",
|
||||||
|
"title.lastpage":"page suivante (dernière)",
|
||||||
|
"title.numberOfPages":"{0} ({1} pages)",
|
||||||
|
"bookword.title":"Livres",
|
||||||
|
"bookword.none":"Aucun livre",
|
||||||
|
"bookword.one":"1 livre",
|
||||||
|
"bookword.many":"{0} livres",
|
||||||
|
"authorword.title":"Auteurs",
|
||||||
|
"authorword.none":"Pas d'auteur",
|
||||||
|
"authorword.one":"1 auteur",
|
||||||
|
"authorword.many":"{0} auteurs",
|
||||||
|
"taglevelword.title":"Niveaux",
|
||||||
|
"taglevelword.none":"Pas de niveau",
|
||||||
|
"taglevelword.one":"1 niveau",
|
||||||
|
"taglevelword.many":"{0} niveaux",
|
||||||
|
"seriesword.title":"Collections",
|
||||||
|
"seriesword.none":"Pas de collection",
|
||||||
|
"seriesword.one":"1 collection",
|
||||||
|
"seriesword.many":"{0} collections",
|
||||||
|
"tagword.title":"Étiquettes",
|
||||||
|
"tagword.none":"Sans étiquette",
|
||||||
|
"tagword.one":"1 étiquette",
|
||||||
|
"tagword.many":"{0} étiquettes",
|
||||||
|
"content.tags":"Étiquettes:",
|
||||||
|
"content.series":"Collection:",
|
||||||
|
"content.series.data":"Livre {0} dans la collection {1}",
|
||||||
|
"content.publisher":"Editeur:",
|
||||||
|
"content.publisher.data":"Publié {0} le {1}",
|
||||||
|
"content.summary":"Résumé:",
|
||||||
|
"bookentry.series":"Livre {0} dans la collection {1}",
|
||||||
|
"bookentry.author":"{0} de {1}",
|
||||||
|
"bookentry.tags":"{0} dans {1}",
|
||||||
|
"bookentry.ratings":"{0} notés {1}",
|
||||||
|
"bookentry.goodreads":"Ce livre sur Goodreads",
|
||||||
|
"bookentry.goodreads.review":"Critique du livre sur Goodreads",
|
||||||
|
"bookentry.goodreads.author":"{0} sur Goodreads",
|
||||||
|
"bookentry.wikipedia":"Ce livre sur Wikipedia",
|
||||||
|
"bookentry.wikipedia.author":"{0} sur Wikipedia",
|
||||||
|
"bookentry.librarything":"Ce livre sur LibraryThing",
|
||||||
|
"bookentry.librarything.author":"{0} sur LibraryThing",
|
||||||
|
"bookentry.amazon":"Ce livre sur Amazon",
|
||||||
|
"bookentry.amazon.author":"{0} sur Amazon",
|
||||||
|
"bookentry.isfdb.author":"{0} sur ISFDB",
|
||||||
|
"bookentry.download":"Télécharger ce livre au format {0}",
|
||||||
|
"bookentry.rated":"{0} {1}",
|
||||||
|
"bookentry.fullentrylink":"Entrée complète",
|
||||||
|
"tags.title":"Étiquettes",
|
||||||
|
"tags.categorized":"Index ordonné des {0} étiquettes",
|
||||||
|
"tags.categorized.single":"Index ordonné de la seule étiquette disponible",
|
||||||
|
"tags.alphabetical":"Index alphabétique des {0} étiquettes",
|
||||||
|
"tags.alphabetical.single":"Index alphabétique de la seule étiquette ;)",
|
||||||
|
"splitByLetter.tag.other":"Autres étiquettes",
|
||||||
|
"authors.series.title":"Collection: {0}",
|
||||||
|
"authors.title":"Auteurs",
|
||||||
|
"authors.alphabetical":"Index alphabétique des {0} auteurs",
|
||||||
|
"authors.alphabetical.single":"Index alphabétique du seul auteur ;)",
|
||||||
|
"splitByLetter.author.other":"Autres auteurs",
|
||||||
|
"series.title":"Collections",
|
||||||
|
"series.alphabetical":"Index alphabétique de {0} collections",
|
||||||
|
"series.alphabetical.single":"Index alphabétique de la seule collection ;)",
|
||||||
|
"splitByLetter.series.other":"Autres collections",
|
||||||
|
"recent.title":"Ajouts récents",
|
||||||
|
"recent.list":"{0} livres les plus récents",
|
||||||
|
"recent.list.single":"Ajouté récemment - ;)",
|
||||||
|
"rating.title":"Appréciations",
|
||||||
|
"rating.summary":"{0}, par appréciation",
|
||||||
|
"allbooks.title":"Tous les livres",
|
||||||
|
"allbooks.alphabetical":"Index alphabétique des {0} livres",
|
||||||
|
"allbooks.alphabetical.single":"Index alphabétique du seul livre ;)",
|
||||||
|
"splitByLetter.book.other":"Autres livres",
|
||||||
|
"main.title":"Bibliothèque gérée par Calibre",
|
||||||
|
"main.summary":"{0} a catalogué {1}",
|
||||||
|
"info.databasefolderset":"Le répertoire de la base de données a été mis à jour",
|
||||||
|
"info.targetfolderset":"Le répertoire de destination a été mis à jour",
|
||||||
|
"info.started":"Démarré",
|
||||||
|
"info.completed":"Terminé",
|
||||||
|
"error.cannotTransform":"Conversion de {0} impossible",
|
||||||
|
"error.notYetReady":"Pas encore prêt à être utilisé",
|
||||||
|
"error.nodatabase":"La base de données de Calibre (un fichier nommé metadata.db) n''est pas à l''endroit indiqué ({0})",
|
||||||
|
"error.nogeneratetype":"Au moins un type de catalogue doit être généré (OPDS et/ou HTML)",
|
||||||
|
"error.nocatalog":"Le répertoire du catalogue n'est pas spécifié",
|
||||||
|
"error.targetdoesnotexist":"Le répertoire de destination n''existe pas; le créer ?",
|
||||||
|
"error.targetsame":"Le répertoire cible ne peut pas être le même que le répertoire de la base de données",
|
||||||
|
"error.targetparent":"Le répertoire cible ne peut pas contenir le répertoire de la base de données",
|
||||||
|
"error.nobooks":"Aucun livre de la bibliothèque Calibre n'a satisfait aux critères pour être inclus dans le catalogue. Est-ce que votre liste de formats est correcte ?",
|
||||||
|
"error.loadingThumbnail":"Une erreur s''est produite pendant le chargement de l''image {0}",
|
||||||
|
"error.savingThumbnail":"Une erreur s''est produite pendant la sauvegarde de la miniature {0}",
|
||||||
|
"error.generatingThumbnail":"Une erreur s''est produite pendant la génération de la minitature {0}",
|
||||||
|
"error.noPublishedDate":"La date de publication n'est pas renseignée pour le livre",
|
||||||
|
"error.noAddedDate":"La date d'ajout n'est pas renseignée pour le livre",
|
||||||
|
"error.loadingProperties":"Erreur durant le chargement de la configuration",
|
||||||
|
"error.userAbort":"L''utilisateur a stoppé la génération du catalogue",
|
||||||
|
"error.crashAbort":"Erreur durant la génération du catalogue. Voir le fichier journal pour plus de détails.",
|
||||||
|
"error.unexpectedFatal":"Erreur fatale durant la génération du catalogue. Voir le fichier journal pour plus de détails.",
|
||||||
|
"error.cause":"cause",
|
||||||
|
"error.message":"message",
|
||||||
|
"error.stackTrace":"extrait de la pile d'appels",
|
||||||
|
"i18n.downloads":"Téléchargements, liens et autres catalogues",
|
||||||
|
"i18n.links":"Liens et autres catalogues",
|
||||||
|
"i18n.coversection":"Couverture",
|
||||||
|
"i18n.downloadfile":"Télécharger fichier",
|
||||||
|
"i18n.downloadsection":"Téléchargements",
|
||||||
|
"i18n.relatedsection":"Catalogues similaires",
|
||||||
|
"i18n.linksection":"Liens externes",
|
||||||
|
"i18n.backToMain":"Page principale du catalogue",
|
||||||
|
"i18n.summarysection":"Résumé",
|
||||||
|
"i18n.dateGenerated":"Catalogue généré le {0}",
|
||||||
|
"deeplevel.summary":"{0} par auteur, étiquette, etc.",
|
||||||
|
"about.title":"Documentation de Calibre2Opds",
|
||||||
|
"about.summary":"Notes d'utilisation",
|
||||||
|
"usage.intro":"Les options sont tirées du fichier de configuration qui se trouve ici : {0}",
|
||||||
|
"intro.goal":"Génère des catalogues OPDS et HTML à partir de votre base de données de Calibre",
|
||||||
|
"intro.wiki.title":"Le site du projet :",
|
||||||
|
"intro.team.title":"L'équipe Calibre2Opds :",
|
||||||
|
"intro.team.list1":"David Pierron - programmeur principal",
|
||||||
|
"intro.team.list2":"Dave Walker - guru, responsable des fonctionnalités et testeur extraordinaire",
|
||||||
|
"intro.team.list3":"Farid Soussi - guru HTML et CSS",
|
||||||
|
"intro.team.list4":"Douglas Steele - programmeur",
|
||||||
|
"intro.team.list5":"Jane Litte - beta testeuse et soutien moral",
|
||||||
|
"intro.thanks.1":"Remerciements particuliers à Kb Sriram, qui est l'auteur de Trook, un excellent",
|
||||||
|
"intro.thanks.2":"gestionnaire de bibliothèque pour Nook, et a m'a fait cadeau d'un Nook !",
|
||||||
|
"info.step.started":"génération du catalogue démarrée",
|
||||||
|
"info.step.database":"chargement et filtrage de la base de données",
|
||||||
|
"info.step.tags":"génération du catalogue des étiquettes",
|
||||||
|
"info.step.authors":"génération du catalogue des auteurs",
|
||||||
|
"info.step.series":"génération du catalogue des collections",
|
||||||
|
"info.step.recent":"génération du catalogue des livres récents",
|
||||||
|
"info.step.rated":"génération du catalogue des appréciations",
|
||||||
|
"info.step.allbooks":"génération du catalogue de tous les livres",
|
||||||
|
"info.step.covers":"génération des couvertures",
|
||||||
|
"info.step.index":"génération de l'index de recherche",
|
||||||
|
"info.step.reprocessingEpubMetadata":"mise à jour des métadonnées des ePub",
|
||||||
|
"info.step.thumbnails":"génération des miniatures",
|
||||||
|
"info.step.copycat":"copie du catalogue",
|
||||||
|
"info.step.copylib":"copie de la bibliothèque",
|
||||||
|
"info.step.donein":"exécuté en {0} millisec.",
|
||||||
|
"info.thumbnails.donein":"la création des aperçus a nécessité {0} sec.",
|
||||||
|
"info.html.donein":"la création des catalogues HTML a nécessité {0} sec.",
|
||||||
|
"info.step.done":"{0} contient à présent les catalogues",
|
||||||
|
"info.step.done.gui":"les catalogues ont été correctement créés",
|
||||||
|
"info.step.done.nook":"Votre Nook",
|
||||||
|
"info.step.done.andYourDb":" et votre répertoire Calibre",
|
||||||
|
"info.step.tidyingtarget":"effacement des fichiers superflus de la destination",
|
||||||
|
"info.step.deletingfiles":"effacement des fichiers temporaires",
|
||||||
|
"info.step.loadingcache":"chargement du cache",
|
||||||
|
"info.step.savingcache":"sauvegarde du cache",
|
||||||
|
"info.step.featuredbooks":"génération du catalogue des livres mis en avant",
|
||||||
|
"info.step.customcatalogs":"génération des catalogues personnalisés",
|
||||||
|
"stats.library.header":"Statistiques de la bibliothèque",
|
||||||
|
"stats.run.header":"Statistiques de la génération",
|
||||||
|
"stats.run.metadata":"nombre d'ePub mis à jour",
|
||||||
|
"stats.run.thumbnails":"Nombre d'aperçus générés",
|
||||||
|
"stats.run.covers":"Nombre de couvertures retaillées",
|
||||||
|
"stats.copy.header":"Statistiques de la copie de fichiers",
|
||||||
|
"stats.copy.notexist":"OUI: la cible n'existe pas",
|
||||||
|
"stats.copy.lengthdiffer":"OUI: les tailles diffèrent",
|
||||||
|
"stats.copy.unchecked":"OUI: CRC non vérifiés",
|
||||||
|
"stats.copy.crcdiffer":"OUI: CRC différents",
|
||||||
|
"stats.copy.crcsame":"NON: CRC identiques",
|
||||||
|
"stats.copy.older":"NON: source plus ancienne",
|
||||||
|
"stats.copy.toself":"NON: la source et la cible sont le même fichier",
|
||||||
|
"fin":"fin"
|
||||||
|
}
|
127
lang/Localization_it.json
Normal file
127
lang/Localization_it.json
Normal file
|
@ -0,0 +1,127 @@
|
||||||
|
{
|
||||||
|
"boolean.yes":"sì",
|
||||||
|
"splitByLetter.letter":"{0} che iniziano per {1}",
|
||||||
|
"home.title":"Catalogo principale",
|
||||||
|
"link.fullentry":"Scheda completa",
|
||||||
|
"title.nextpage":"pagina seguente ({0} di {1})",
|
||||||
|
"title.lastpage":"pagina seguente (ultima)",
|
||||||
|
"title.numberOfPages":"{0} ({1} pagine)",
|
||||||
|
"bookword.title":"Libri",
|
||||||
|
"bookword.none":"Nessun libro",
|
||||||
|
"bookword.one":"1 libro",
|
||||||
|
"bookword.many":"{0} libri",
|
||||||
|
"authorword.title":"Autori",
|
||||||
|
"authorword.none":"Senza autore",
|
||||||
|
"authorword.one":"1 autore",
|
||||||
|
"authorword.many":"{0} autori",
|
||||||
|
"taglevelword.title":"Livelli",
|
||||||
|
"taglevelword.none":"Nessun livello",
|
||||||
|
"taglevelword.one":"1 livello",
|
||||||
|
"taglevelword.many":"{0} livelli",
|
||||||
|
"seriesword.title":"Collane",
|
||||||
|
"seriesword.none":"Nessuna collana",
|
||||||
|
"seriesword.one":"1 collana",
|
||||||
|
"seriesword.many":"{0} collane",
|
||||||
|
"tagword.title":"Argomenti",
|
||||||
|
"tagword.none":"Senza argomento",
|
||||||
|
"tagword.one":"1 argomento",
|
||||||
|
"tagword.many":"{0} argomenti",
|
||||||
|
"content.tags":"Argomenti:",
|
||||||
|
"content.series":"Collana:",
|
||||||
|
"content.series.data":"Libro {0} nella collana {1}",
|
||||||
|
"content.publisher":"Editore:",
|
||||||
|
"content.publisher.data":"Pubblicato {0} il {1}",
|
||||||
|
"content.summary":"Riassunto:",
|
||||||
|
"bookentry.series":"Libro {0} nella collana {1}",
|
||||||
|
"bookentry.author":"{0} di {1}",
|
||||||
|
"bookentry.ratings":"{0} annotati {1}",
|
||||||
|
"bookentry.goodreads":"Questo libro su Goodreads",
|
||||||
|
"bookentry.goodreads.review":"Commenta questo libro su Goodreads",
|
||||||
|
"bookentry.goodreads.author":"{0} su Goodreads",
|
||||||
|
"bookentry.wikipedia":"Questo libro su Wikipedia",
|
||||||
|
"bookentry.wikipedia.author":"{0} su Wikipedia",
|
||||||
|
"bookentry.librarything":"Questo libro su LibraryThing",
|
||||||
|
"bookentry.librarything.author":"{0} su LibraryThing",
|
||||||
|
"bookentry.amazon":"Questo libro su Amazon",
|
||||||
|
"bookentry.amazon.author":"{0} su Amazon",
|
||||||
|
"bookentry.isfdb.author":"{0} su ISFDB",
|
||||||
|
"bookentry.download":"Scarica questo libro nel formato {0}",
|
||||||
|
"bookentry.rated":"{0} {1}",
|
||||||
|
"bookentry.fullentrylink":"Scheda completa",
|
||||||
|
"tags.title":"Argomenti",
|
||||||
|
"tags.categorized":"Indice ordinato di {0} argomenti",
|
||||||
|
"tags.categorized.single":"Indice ordinato del solo argomento disponibile",
|
||||||
|
"tags.alphabetical":"Indice alfabetico di {0} argomenti",
|
||||||
|
"tags.alphabetical.single":"Indice alfabetico del solo argomento ;)",
|
||||||
|
"splitByLetter.tag.other":"Altri argomenti",
|
||||||
|
"authors.series.title":"Collane: {0}",
|
||||||
|
"authors.title":"Autori",
|
||||||
|
"authors.alphabetical":"Indice alfabetico di {0} autori",
|
||||||
|
"authors.alphabetical.single":"Indice alfabetico di un solo autore ;)",
|
||||||
|
"splitByLetter.author.other":"Altri autori",
|
||||||
|
"series.title":"Collane",
|
||||||
|
"series.alphabetical":"Indice alfabetico di {0} collane",
|
||||||
|
"series.alphabetical.single":"Indice alfabetico di una sola collana ;)",
|
||||||
|
"splitByLetter.series.other":"Altre collane",
|
||||||
|
"recent.title":"Ultime aggiunte",
|
||||||
|
"recent.list":" I {0} libri più recenti",
|
||||||
|
"recent.list.single":"Il libro più recente - ;)",
|
||||||
|
"rating.title":"Valutazioni",
|
||||||
|
"rating.summary":"{0}, per valutazioni",
|
||||||
|
"allbooks.title":"Tutti i libri",
|
||||||
|
"allbooks.alphabetical":"Indice alfabetico di {0} libri",
|
||||||
|
"allbooks.alphabetical.single":"Indice alfabetico di un solo libro ;)",
|
||||||
|
"splitByLetter.book.other":"Altri libri",
|
||||||
|
"main.title":"Biblioteca generata da Calibre",
|
||||||
|
"main.summary":"{0} ha catalogato {1}",
|
||||||
|
"info.databasefolderset":"La cartella della base di",
|
||||||
|
"info.targetfolderset":"La cartella di destinazione è stata aggiornata",
|
||||||
|
"error.cannotTransform":"Errore nella conversione di {0} ",
|
||||||
|
"error.nodatabase":"La banca dati di Calibre (il file metadata.db) non è nel posto previsto {0}",
|
||||||
|
"error.targetdoesnotexist":"La cartella di destinazione non esiste: crearla? ",
|
||||||
|
"error.loadingThumbnail":"C'è stato un errore nel caricamento dell'immagine {0}",
|
||||||
|
"error.savingThumbnail":"C'è stato un errore nel salvataggio della miniatura {0}",
|
||||||
|
"error.generatingThumbnail":"C'è stato un errore nella creazione della miniatura {0}",
|
||||||
|
"i18n.downloads":"Scarica, collegamenti e altri cataloghi",
|
||||||
|
"i18n.links":"Collegamenti e altri cataloghi",
|
||||||
|
"i18n.downloadfile":"Scarica il documento",
|
||||||
|
"i18n.downloadsection":"Scaricati",
|
||||||
|
"i18n.relatedsection":"Cataloghi simili",
|
||||||
|
"i18n.linksection":"Collegamenti esterni",
|
||||||
|
"i18n.backToMain":"Pagina principale del catalogo",
|
||||||
|
"i18n.summarysection":"Riassunto",
|
||||||
|
"i18n.dateGenerated":"Catalogo generato il {0}",
|
||||||
|
"deeplevel.summary":"{0} par autore, etichetta, ecc.",
|
||||||
|
"about.title":"Documentazione di Calibre2Opds",
|
||||||
|
"about.summary":"Note d'utilizzo",
|
||||||
|
"usage.intro":"Le opzioni sono prese dal file di configuraziones che si trova qui: {0}",
|
||||||
|
"intro.goal":"Crea cataloghi OPDS e HTML a partire dalla tua banca dati di Calibre",
|
||||||
|
"intro.wiki.title":"Il sito del progetto: ",
|
||||||
|
"intro.team.title":"Il team Calibre2Opds:",
|
||||||
|
"intro.team.list1":"David Pierron - programmatore principale",
|
||||||
|
"intro.team.list2":"Dave Walker - guru, responsabile delle funzionalità e collaudatore straordinario",
|
||||||
|
"intro.team.list4":"Douglas Steele - programmatore",
|
||||||
|
"intro.team.list5":"Jane Litte - collaudatrice beta e sostegno morale",
|
||||||
|
"intro.thanks.1":"Un ringraziamento particolare a Kb Sriram, autore di Trook, un eccellente ",
|
||||||
|
"intro.thanks.2":"gestore di biblioteche per Nook, che mi ha regalato un Nook!",
|
||||||
|
"info.step.database":"caricamento e filtraggio della banca dati",
|
||||||
|
"info.step.tags":"creazione del catalogo degli argomenti",
|
||||||
|
"info.step.authors":"creazione del catalogo degli autori",
|
||||||
|
"info.step.series":"creazione del catalogo delle collane",
|
||||||
|
"info.step.recent":"creazione del catalogo dei libri recenti",
|
||||||
|
"info.step.rated":"creazione del catalogo delle valutazioni",
|
||||||
|
"info.step.allbooks":"creazione del catalogo di tutti i libri ",
|
||||||
|
"info.step.covers":"creazione delle copertine",
|
||||||
|
"info.step.reprocessingEpubMetadata":"aggiornamento dei metadati degli epub",
|
||||||
|
"info.step.thumbnails":"creazione delle miniature",
|
||||||
|
"info.step.copycat":"copia del catalogo",
|
||||||
|
"info.step.copylib":"copia della biblioteca",
|
||||||
|
"info.step.donein":"esecuzione in {0} millisec.",
|
||||||
|
"info.thumbnails.donein":"la creazione delle miniature è durata {0} sec.",
|
||||||
|
"info.html.donein":"la creazione dei cataloghi HTML è durata {0} sec.",
|
||||||
|
"info.step.done":"{0} contiene ora i cataloghi",
|
||||||
|
"info.step.done.gui":"i cataloghi sono stati creati correttamente",
|
||||||
|
"info.step.done.nook":"Il tuo Nook",
|
||||||
|
"info.step.done.andYourDb":" e la tua cartella Calibre",
|
||||||
|
"fin":"fin"
|
||||||
|
}
|
140
lang/Localization_ru.json
Normal file
140
lang/Localization_ru.json
Normal file
|
@ -0,0 +1,140 @@
|
||||||
|
{
|
||||||
|
"boolean.no":"нет",
|
||||||
|
"boolean.yes":"да",
|
||||||
|
"splitByLetter.letter":"{0} начать с {1}",
|
||||||
|
"home.title":"Основной каталог",
|
||||||
|
"link.fullentry":"Полный перечень",
|
||||||
|
"title.nextpage":"следующая страница ({0} из {1})",
|
||||||
|
"title.lastpage":"следующая страница (последняя)",
|
||||||
|
"title.numberOfPages":"{0} ({1} страницы(а))",
|
||||||
|
"bookword.title":"Книги",
|
||||||
|
"bookword.none":"Нет книг",
|
||||||
|
"bookword.one":"1 книга",
|
||||||
|
"bookword.many":"{0} книг(и)",
|
||||||
|
"authorword.title":"Авторы",
|
||||||
|
"authorword.none":"Нет авторов",
|
||||||
|
"authorword.one":"1 автор",
|
||||||
|
"authorword.many":"{0} авторов(а)",
|
||||||
|
"taglevelword.title":"Уровни тэгов",
|
||||||
|
"taglevelword.none":"Нет уровней тэгов",
|
||||||
|
"taglevelword.one":"1 уровень тэгов",
|
||||||
|
"taglevelword.many":"{0} уровней(я) тэгов",
|
||||||
|
"seriesword.title":"Серии",
|
||||||
|
"seriesword.none":"Нет серий",
|
||||||
|
"seriesword.one":"1 серия",
|
||||||
|
"seriesword.many":"{0} серий(и)",
|
||||||
|
"tagword.title":"Тэги",
|
||||||
|
"tagword.none":"Нет тэгов",
|
||||||
|
"tagword.one":"1 тэг",
|
||||||
|
"tagword.many":"{0} тэгов(а)",
|
||||||
|
"content.tags":"Тэги:",
|
||||||
|
"content.series":"Серии:",
|
||||||
|
"content.series.data":"Книга {0} в {1} серии",
|
||||||
|
"content.publisher":"Издательство:",
|
||||||
|
"content.publisher.data":"Опубликовано {1} издательством {0}",
|
||||||
|
"content.summary":"Краткое содержание:",
|
||||||
|
"bookentry.series":"Книга {0} в {1} серии",
|
||||||
|
"bookentry.author":"{0} из {1}",
|
||||||
|
"bookentry.tags":"{0} в {1}",
|
||||||
|
"bookentry.ratings":"{0} оценено {1}",
|
||||||
|
"bookentry.goodreads":"Эта книга на Goodreads",
|
||||||
|
"bookentry.goodreads.review":"Обзор этой книги на Goodreads",
|
||||||
|
"bookentry.goodreads.author":"{0} на Goodreads",
|
||||||
|
"bookentry.wikipedia":"Эта книга на Wikipedia",
|
||||||
|
"bookentry.wikipedia.author":"{0} на Wikipedia",
|
||||||
|
"bookentry.librarything":"Эта книга на LibraryThing",
|
||||||
|
"bookentry.librarything.author":"{0} на LibraryThing",
|
||||||
|
"bookentry.amazon":"Эта книга на Amazon",
|
||||||
|
"bookentry.amazon.author":"{0} на Amazon",
|
||||||
|
"bookentry.isfdb.author":"{0} на ISFDB",
|
||||||
|
"bookentry.download":"Скачать эту электронную книгу в формате {0}",
|
||||||
|
"bookentry.rated":"{0} {1}",
|
||||||
|
"bookentry.fullentrylink":"Полный перечень",
|
||||||
|
"tags.title":"Тэги",
|
||||||
|
"tags.categorized":"Категорированный указатель для {0} тэгов",
|
||||||
|
"tags.categorized.single":"Категорированный указатель для одного тэга - действительно очень полезно ;)",
|
||||||
|
"tags.alphabetical":"Алфавитный указатель для {0} тэгов",
|
||||||
|
"tags.alphabetical.single":"Алфавитный указатель для одного тэга ;)",
|
||||||
|
"splitByLetter.tag.other":"Другие тэги",
|
||||||
|
"authors.series.title":"Серии: {0}",
|
||||||
|
"authors.title":"Авторы",
|
||||||
|
"authors.alphabetical":"Алфавитный указатель для {0} авторов",
|
||||||
|
"authors.alphabetical.single":"Алфавитный указатель для одного автора - действительно очень полезно ;)",
|
||||||
|
"splitByLetter.author.other":"Другие авторы",
|
||||||
|
"series.title":"Серии",
|
||||||
|
"series.alphabetical":"Алфавитный указатель для {0} серий",
|
||||||
|
"series.alphabetical.single":"Алфавитный указатель для одной серии - действительно очень полезно ;)",
|
||||||
|
"splitByLetter.series.other":"Другие серии",
|
||||||
|
"recent.title":"Недавние поступления",
|
||||||
|
"recent.list":"{0} недавно поступивших(ие) книг(и)",
|
||||||
|
"recent.list.single":"Недавно поступившая одна книга - действительно очень полезно ;)",
|
||||||
|
"rating.title":"Рейтинг",
|
||||||
|
"rating.summary":"{0}, сгруппировано по рейтингу",
|
||||||
|
"allbooks.title":"Все книги",
|
||||||
|
"allbooks.alphabetical":"Алфавитный указатель всех {0} книг",
|
||||||
|
"allbooks.alphabetical.single":"Алфавитный указатель одной книги - действительно очень полезно ;)",
|
||||||
|
"splitByLetter.book.other":"Другие книги",
|
||||||
|
"main.title":"Библиотека Calibre",
|
||||||
|
"main.summary":"{0} каталогизировано {1}",
|
||||||
|
"info.databasefolderset":"Папка базы данных указана",
|
||||||
|
"info.targetfolderset":"Папка расположения результатов указана",
|
||||||
|
"error.cannotTransform":"не может быть трансформировано {0}",
|
||||||
|
"error.nodatabase":"База данных библиотеки Calibre (файл metadata.db) не найден {0}",
|
||||||
|
"error.targetdoesnotexist":"Указанная для расположения результатов папка не существует. Создать ее?",
|
||||||
|
"error.loadingThumbnail":"Произошла ошибка при загрузке файла с изображением {0}",
|
||||||
|
"error.savingThumbnail":"Произошла ошибка при сохранении файла мини-описания {0}",
|
||||||
|
"error.generatingThumbnail":"Произошла ошибка при создании мини-описания для {0}",
|
||||||
|
"i18n.downloads":"Файлы для скачивания, ссылки и другие каталоги",
|
||||||
|
"i18n.links":"Ссылки и другие каталоги",
|
||||||
|
"i18n.downloadfile":"Скачать файл",
|
||||||
|
"i18n.downloadsection":"Файлы для скачивания",
|
||||||
|
"i18n.relatedsection":"Связанные каталоги",
|
||||||
|
"i18n.linksection":"Внешние ссылки",
|
||||||
|
"i18n.backToMain":"Назад на заглавную страницу каталога",
|
||||||
|
"i18n.summarysection":"Краткое содержание",
|
||||||
|
"i18n.dateGenerated":"Каталог создан {0}",
|
||||||
|
"deeplevel.summary":"{0} разбито по авторам, тэгам и т.д.",
|
||||||
|
"about.title":"Документация Calibre2Opds",
|
||||||
|
"about.summary":"Примечания по использованию Calibre2Opds",
|
||||||
|
"usage.intro":"Эта опция взята из файла конфигурации, расположенного в {0}",
|
||||||
|
"intro.goal":"Генерация OPDS и HTML каталогов вашей базы электронных книг Calibre",
|
||||||
|
"intro.team.title":"Команда Calibre2Opds :",
|
||||||
|
"intro.team.list1":"David Pierron - главный программист",
|
||||||
|
"intro.team.list2":"Dave Walker - гуру, менеджер по фукциональности и исключительный тестер",
|
||||||
|
"intro.team.list4":"Douglas Steele - программист",
|
||||||
|
"intro.team.list5":"Jane Litte - бэта-тестер и моральная поддержка",
|
||||||
|
"intro.thanks.1":"Особые благодарности Kb Sriram, который программировал Trook, отличный и OPDS-совместимый",
|
||||||
|
"intro.thanks.2":"менеджер библиотеки Nook, для благодарности достаточно оказать спонсорскую помощь Nook !",
|
||||||
|
"info.step.database":"загрузка и фильтрация базы данных",
|
||||||
|
"info.step.tags":"генерация каталога "Тэги"",
|
||||||
|
"info.step.authors":"генерация каталога "Авторы"",
|
||||||
|
"info.step.series":"генерация каталога "Серии"",
|
||||||
|
"info.step.recent":"генерация каталога "Недавние поступления"",
|
||||||
|
"info.step.rated":"генерация каталога "Рейтинг"",
|
||||||
|
"info.step.allbooks":"генерация каталога "Все книги"",
|
||||||
|
"info.step.covers":"генерация файлов обложек",
|
||||||
|
"info.step.reprocessingEpubMetadata":"переработка метаданных ePub",
|
||||||
|
"info.step.thumbnails":"генерация файлов мини-образов",
|
||||||
|
"info.step.copycat":"копировать каталог",
|
||||||
|
"info.step.copylib":"копировать библиотеку",
|
||||||
|
"info.step.donein":"выполнено за {0} миллисек.",
|
||||||
|
"info.thumbnails.donein":"создание мини-образов заняло {0} сек. ",
|
||||||
|
"info.html.donein":"создание HTML каталогов заняло {0} сек.",
|
||||||
|
"info.step.done":"{0} теперь содержит каталоги",
|
||||||
|
"info.step.done.gui":"созданные каталоги",
|
||||||
|
"info.step.done.nook":"Ваш Nook",
|
||||||
|
"info.step.done.andYourDb":"и ваша папка Calibre",
|
||||||
|
"info.step.tidyingtarget":"Удаление лишних файлов в папке расположения результатов",
|
||||||
|
"info.step.deletingfiles":"Удаление временных файлов",
|
||||||
|
"info.step.loadingcache":"Загрузить кэш",
|
||||||
|
"info.step.savingcache":"Сохранить кэш",
|
||||||
|
"stats.copy.header":"Статистика копирования файла",
|
||||||
|
"stats.copy.notexist":"ДА: Результат не существует",
|
||||||
|
"stats.copy.lengthdiffer":"ДА: Длина различается",
|
||||||
|
"stats.copy.unchecked":"ДА: CRC не проверялись",
|
||||||
|
"stats.copy.crcdiffer":"ДА: CRC различны",
|
||||||
|
"stats.copy.crcsame":"НЕТ: CRC одинаковы",
|
||||||
|
"stats.copy.older":"НЕТ: Источник более ранний",
|
||||||
|
"stats.copy.toself":"НЕТ: Источник и Результат - одинаковые файлы",
|
||||||
|
"fin":"fin"
|
||||||
|
}
|
|
@ -29,8 +29,8 @@ class Serie extends Base {
|
||||||
|
|
||||||
public static function getCount() {
|
public static function getCount() {
|
||||||
$nSeries = parent::getDb ()->query('select count(*) from series')->fetchColumn();
|
$nSeries = parent::getDb ()->query('select count(*) from series')->fetchColumn();
|
||||||
$entry = new Entry ("Series", self::ALL_SERIES_ID,
|
$entry = new Entry (localize("series.title"), self::ALL_SERIES_ID,
|
||||||
"Alphabetical index of the $nSeries series", "text",
|
str_format (localize("series.alphabetical"), $nSeries), "text",
|
||||||
array ( new LinkNavigation ("?page=".parent::PAGE_ALL_SERIES)));
|
array ( new LinkNavigation ("?page=".parent::PAGE_ALL_SERIES)));
|
||||||
return $entry;
|
return $entry;
|
||||||
}
|
}
|
||||||
|
@ -66,7 +66,7 @@ order by series.sort');
|
||||||
{
|
{
|
||||||
$serie = new Serie ($post->id, $post->sort);
|
$serie = new Serie ($post->id, $post->sort);
|
||||||
array_push ($entryArray, new Entry ($serie->name, $serie->getEntryId (),
|
array_push ($entryArray, new Entry ($serie->name, $serie->getEntryId (),
|
||||||
"$post->count books", "text",
|
str_format (localize("bookword.many"), $post->count), "text",
|
||||||
array ( new LinkNavigation ($serie->getUri ()))));
|
array ( new LinkNavigation ($serie->getUri ()))));
|
||||||
}
|
}
|
||||||
return $entryArray;
|
return $entryArray;
|
||||||
|
|
6
tag.php
6
tag.php
|
@ -29,8 +29,8 @@ class tag extends Base {
|
||||||
|
|
||||||
public static function getCount() {
|
public static function getCount() {
|
||||||
$nTags = parent::getDb ()->query('select count(*) from tags')->fetchColumn();
|
$nTags = parent::getDb ()->query('select count(*) from tags')->fetchColumn();
|
||||||
$entry = new Entry ("Tags", self::ALL_TAGS_ID,
|
$entry = new Entry (localize("tags.title"), self::ALL_TAGS_ID,
|
||||||
"Alphabetical index of the $nTags tags", "text",
|
str_format (localize("tags.alphabetical"), $nTags), "text",
|
||||||
array ( new LinkNavigation ("?page=".parent::PAGE_ALL_TAGS)));
|
array ( new LinkNavigation ("?page=".parent::PAGE_ALL_TAGS)));
|
||||||
return $entry;
|
return $entry;
|
||||||
}
|
}
|
||||||
|
@ -55,7 +55,7 @@ order by tags.name');
|
||||||
{
|
{
|
||||||
$tag = new Tag ($post->id, $post->name);
|
$tag = new Tag ($post->id, $post->name);
|
||||||
array_push ($entryArray, new Entry ($tag->name, $tag->getEntryId (),
|
array_push ($entryArray, new Entry ($tag->name, $tag->getEntryId (),
|
||||||
"$post->count books", "text",
|
str_format (localize("bookword.many"), $post->count), "text",
|
||||||
array ( new LinkNavigation ($tag->getUri ()))));
|
array ( new LinkNavigation ($tag->getUri ()))));
|
||||||
}
|
}
|
||||||
return $entryArray;
|
return $entryArray;
|
||||||
|
|
Loading…
Reference in a new issue