Localizzazione EN di default: qsTr() su tutte le stringhe QML, catalogo italiano translations/harbour-calibreweb_it.ts, lrelease+install .qm nello spec (pattern quill), .pro aggiornato
This commit is contained in:
@@ -33,7 +33,7 @@ Page {
|
||||
|
||||
Button {
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
text: "Leggi (EPUB)"
|
||||
text: qsTr("Read (EPUB)")
|
||||
visible: page.hasEpubFormat()
|
||||
enabled: !page.downloading
|
||||
onClicked: startReading()
|
||||
@@ -57,7 +57,7 @@ Page {
|
||||
visible: text.length > 0
|
||||
}
|
||||
|
||||
SectionHeader { text: "Formati" }
|
||||
SectionHeader { text: qsTr("Formats") }
|
||||
|
||||
Repeater {
|
||||
model: bookData.formats
|
||||
@@ -109,7 +109,7 @@ Page {
|
||||
}
|
||||
Label {
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
text: "Download in corso…"
|
||||
text: qsTr("Downloading…")
|
||||
color: Theme.secondaryColor
|
||||
font.pixelSize: Theme.fontSizeSmall
|
||||
}
|
||||
@@ -258,12 +258,12 @@ Page {
|
||||
return
|
||||
}
|
||||
page.downloadError = ""
|
||||
page.downloadNotice = "Salvato in " + path
|
||||
page.downloadNotice = qsTr("Saved to ") + path
|
||||
hideNoticeTimer.restart()
|
||||
} else {
|
||||
page.downloadNotice = ""
|
||||
page.readingNow = false
|
||||
page.downloadError = "Errore: " + error
|
||||
page.downloadError = qsTr("Error: ") + error
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,7 +9,7 @@ Dialog {
|
||||
|
||||
SilicaListView {
|
||||
anchors.fill: parent
|
||||
header: DialogHeader { title: "Indice" }
|
||||
header: DialogHeader { title: qsTr("Table of contents") }
|
||||
model: dialog.model
|
||||
|
||||
delegate: ListItem {
|
||||
@@ -35,7 +35,7 @@ Dialog {
|
||||
|
||||
ViewPlaceholder {
|
||||
enabled: dialog.model.length === 0
|
||||
text: "Nessun capitolo"
|
||||
text: qsTr("No chapters")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -88,18 +88,18 @@ Page {
|
||||
|
||||
PullDownMenu {
|
||||
MenuItem {
|
||||
text: "Aggiorna"
|
||||
text: qsTr("Refresh")
|
||||
onClicked: reload()
|
||||
}
|
||||
MenuItem {
|
||||
text: "Impostazioni"
|
||||
text: qsTr("Settings")
|
||||
onClicked: pageStack.push(Qt.resolvedUrl("SettingsPage.qml"))
|
||||
}
|
||||
}
|
||||
|
||||
ViewPlaceholder {
|
||||
enabled: feedModel.count === 0 && !page.loading
|
||||
text: page.errorMessage.length > 0 ? page.errorMessage : "Nessun risultato"
|
||||
text: page.errorMessage.length > 0 ? page.errorMessage : qsTr("No results")
|
||||
}
|
||||
|
||||
BusyIndicator {
|
||||
@@ -168,7 +168,7 @@ Page {
|
||||
}
|
||||
page.nextUrl = nextUrl
|
||||
if (feedModel.count === 0 && page.errorMessage.length === 0)
|
||||
page.errorMessage = "Nessun risultato"
|
||||
page.errorMessage = qsTr("No results")
|
||||
}
|
||||
onFeedError: {
|
||||
page.loading = false
|
||||
|
||||
@@ -10,7 +10,7 @@ Page {
|
||||
SilicaListView {
|
||||
id: listView
|
||||
anchors.fill: parent
|
||||
header: PageHeader { title: "Calibre Web" }
|
||||
header: PageHeader { title: qsTr("Calibre Web") }
|
||||
model: sectionModel
|
||||
|
||||
delegate: ListItem {
|
||||
@@ -40,15 +40,15 @@ Page {
|
||||
|
||||
PullDownMenu {
|
||||
MenuItem {
|
||||
text: "Cerca"
|
||||
text: qsTr("Search")
|
||||
onClicked: pageStack.push(Qt.resolvedUrl("SearchPage.qml"))
|
||||
}
|
||||
MenuItem {
|
||||
text: "Impostazioni"
|
||||
text: qsTr("Settings")
|
||||
onClicked: pageStack.push(Qt.resolvedUrl("SettingsPage.qml"))
|
||||
}
|
||||
MenuItem {
|
||||
text: "Aggiorna"
|
||||
text: qsTr("Refresh")
|
||||
onClicked: loadIndex()
|
||||
}
|
||||
}
|
||||
@@ -57,7 +57,7 @@ Page {
|
||||
enabled: sectionModel.count === 0 && !page.loading
|
||||
text: page.errorMessage.length > 0
|
||||
? page.errorMessage
|
||||
: "Apri le impostazioni e inserisci l'indirizzo del tuo Calibre Web"
|
||||
: qsTr("Open the settings and enter your Calibre Web address")
|
||||
}
|
||||
|
||||
BusyIndicator {
|
||||
@@ -74,7 +74,7 @@ Page {
|
||||
function loadIndex() {
|
||||
var base = appSettings.baseUrl
|
||||
if (base.length === 0) {
|
||||
page.errorMessage = "Server non configurato"
|
||||
page.errorMessage = qsTr("Server not configured")
|
||||
return
|
||||
}
|
||||
page.loading = true
|
||||
@@ -97,7 +97,7 @@ Page {
|
||||
sectionModel.append({ title: e.title, linkUrl: e.linkUrl })
|
||||
}
|
||||
if (sectionModel.count === 0)
|
||||
page.errorMessage = "Nessuna sezione trovata nel feed OPDS"
|
||||
page.errorMessage = qsTr("No sections found in the OPDS feed")
|
||||
}
|
||||
onFeedError: {
|
||||
page.loading = false
|
||||
|
||||
@@ -22,14 +22,14 @@ Dialog {
|
||||
width: parent.width
|
||||
|
||||
DialogHeader {
|
||||
title: "Margini del testo"
|
||||
acceptText: "Applica"
|
||||
title: qsTr("Text margins")
|
||||
acceptText: qsTr("Apply")
|
||||
}
|
||||
|
||||
Slider {
|
||||
id: lrSlider
|
||||
width: parent.width
|
||||
label: "Margini laterali"
|
||||
label: qsTr("Side margins")
|
||||
minimumValue: 0
|
||||
maximumValue: 80
|
||||
stepSize: 4
|
||||
@@ -44,7 +44,7 @@ Dialog {
|
||||
Slider {
|
||||
id: tbSlider
|
||||
width: parent.width
|
||||
label: "Alto e basso"
|
||||
label: qsTr("Top and bottom")
|
||||
minimumValue: 0
|
||||
maximumValue: 80
|
||||
stepSize: 4
|
||||
@@ -59,7 +59,7 @@ Dialog {
|
||||
Label {
|
||||
x: Theme.horizontalPageMargin
|
||||
width: parent.width - 2 * Theme.horizontalPageMargin
|
||||
text: "Le modifiche si applicano subito al testo. Conferma per salvarle per tutti i libri."
|
||||
text: qsTr("Changes apply immediately. Confirm to save them for all books.")
|
||||
color: Theme.secondaryColor
|
||||
wrapMode: Text.Wrap
|
||||
font.pixelSize: Theme.fontSizeSmall
|
||||
|
||||
@@ -32,11 +32,11 @@ Page {
|
||||
// il PullDownMenu va DENTRO una vista Silica, non a livello di Page
|
||||
PullDownMenu {
|
||||
MenuItem {
|
||||
text: "Indice capitoli"
|
||||
text: qsTr("Table of contents")
|
||||
onClicked: showChapterList()
|
||||
}
|
||||
MenuItem {
|
||||
text: "Margini del testo"
|
||||
text: qsTr("Text margins")
|
||||
onClicked: {
|
||||
var dlg = pageStack.push(Qt.resolvedUrl("MarginDialog.qml"), {
|
||||
marginLr: appSettings.readerMargin,
|
||||
@@ -50,11 +50,11 @@ Page {
|
||||
}
|
||||
}
|
||||
MenuItem {
|
||||
text: "Impostazioni"
|
||||
text: qsTr("Settings")
|
||||
onClicked: pageStack.push(Qt.resolvedUrl("SettingsPage.qml"))
|
||||
}
|
||||
MenuItem {
|
||||
text: "Chiudi libro"
|
||||
text: qsTr("Close book")
|
||||
onClicked: {
|
||||
page.maybeSave(true)
|
||||
pageStack.popTo(null)
|
||||
@@ -164,7 +164,7 @@ Page {
|
||||
interval: 15000
|
||||
onTriggered: {
|
||||
if (!web.loaded && !page.ready) {
|
||||
page.errorMessage = "Il lettore non risponde (WebView). Il file EPUB potrebbe essere danneggiato."
|
||||
page.errorMessage = qsTr("The reader is not responding (WebView). The EPUB file may be damaged.")
|
||||
page.ready = true
|
||||
}
|
||||
}
|
||||
@@ -287,7 +287,7 @@ Page {
|
||||
var html = book.chapterHtml(page.currentChapter, page.fontPx(),
|
||||
appSettings.readerMargin, appSettings.readerMarginV)
|
||||
if (html.length === 0) {
|
||||
page.errorMessage = "Capitolo non leggibile"
|
||||
page.errorMessage = qsTr("Chapter unreadable")
|
||||
page.ready = true
|
||||
return
|
||||
}
|
||||
@@ -336,7 +336,7 @@ Page {
|
||||
Component.onCompleted: {
|
||||
page.ready = false
|
||||
if (!book.open(page.epubPath)) {
|
||||
page.errorMessage = "Impossibile aprire il libro EPUB"
|
||||
page.errorMessage = qsTr("Unable to open the EPUB file")
|
||||
page.ready = true
|
||||
return
|
||||
}
|
||||
|
||||
@@ -12,19 +12,19 @@ Page {
|
||||
id: column
|
||||
width: parent.width
|
||||
|
||||
PageHeader { title: "Cerca" }
|
||||
PageHeader { title: qsTr("Search") }
|
||||
|
||||
SearchField {
|
||||
id: searchField
|
||||
width: parent.width
|
||||
placeholderText: "Titolo o autore…"
|
||||
placeholderText: qsTr("Title or author…")
|
||||
EnterKey.enabled: text.length > 0
|
||||
EnterKey.onClicked: search()
|
||||
}
|
||||
|
||||
Button {
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
text: "Cerca"
|
||||
text: qsTr("Search")
|
||||
enabled: searchField.text.length > 0
|
||||
onClicked: search()
|
||||
}
|
||||
@@ -32,7 +32,7 @@ Page {
|
||||
Label {
|
||||
x: Theme.horizontalPageMargin
|
||||
width: parent.width - 2 * Theme.horizontalPageMargin
|
||||
text: "La ricerca usa il motore del server (OPDS search)."
|
||||
text: qsTr("Search uses the server engine (OPDS search).")
|
||||
color: Theme.secondaryColor
|
||||
font.pixelSize: Theme.fontSizeSmall
|
||||
wrapMode: Text.Wrap
|
||||
@@ -47,6 +47,6 @@ Page {
|
||||
return
|
||||
var url = base + "/opds/search?query=" + encodeURIComponent(query)
|
||||
pageStack.push(Qt.resolvedUrl("FeedPage.qml"),
|
||||
{ feedUrl: url, pageTitle: "Risultati: " + query })
|
||||
{ feedUrl: url, pageTitle: qsTr("Results: ") + query })
|
||||
}
|
||||
}
|
||||
|
||||
+15
-15
@@ -16,15 +16,15 @@ Page {
|
||||
id: column
|
||||
width: parent.width
|
||||
|
||||
PageHeader { title: "Impostazioni" }
|
||||
PageHeader { title: qsTr("Settings") }
|
||||
|
||||
SectionHeader { text: "Server" }
|
||||
SectionHeader { text: qsTr("Server") }
|
||||
|
||||
TextField {
|
||||
id: serverField
|
||||
anchors.left: parent.left
|
||||
anchors.right: parent.right
|
||||
label: "Indirizzo Calibre Web"
|
||||
label: qsTr("Calibre Web address")
|
||||
placeholderText: "https://calibre.example.com"
|
||||
text: appSettings.serverUrl
|
||||
inputMethodHints: Qt.ImhUrlCharactersOnly
|
||||
@@ -35,7 +35,7 @@ Page {
|
||||
id: userField
|
||||
anchors.left: parent.left
|
||||
anchors.right: parent.right
|
||||
label: "Utente (vuoto = accesso anonimo)"
|
||||
label: qsTr("User (empty = anonymous access)")
|
||||
text: appSettings.username
|
||||
onTextChanged: appSettings.username = text
|
||||
}
|
||||
@@ -44,25 +44,25 @@ Page {
|
||||
id: passField
|
||||
anchors.left: parent.left
|
||||
anchors.right: parent.right
|
||||
label: "Password"
|
||||
label: qsTr("Password")
|
||||
text: appSettings.password
|
||||
echoMode: TextInput.Password
|
||||
onTextChanged: appSettings.password = text
|
||||
}
|
||||
|
||||
TextSwitch {
|
||||
text: "Ignora errori certificato SSL"
|
||||
description: "Da attivare se il server usa un certificato autofirmato"
|
||||
text: qsTr("Ignore SSL certificate errors")
|
||||
description: qsTr("Enable if the server uses a self-signed certificate")
|
||||
checked: appSettings.ignoreSslErrors
|
||||
onCheckedChanged: appSettings.ignoreSslErrors = checked
|
||||
}
|
||||
|
||||
SectionHeader { text: "Lettore" }
|
||||
SectionHeader { text: qsTr("Reader") }
|
||||
|
||||
Slider {
|
||||
id: marginSlider
|
||||
width: parent.width
|
||||
label: "Margini laterali"
|
||||
label: qsTr("Side margins")
|
||||
minimumValue: 0
|
||||
maximumValue: 80
|
||||
stepSize: 4
|
||||
@@ -74,7 +74,7 @@ Page {
|
||||
Slider {
|
||||
id: marginVSlider
|
||||
width: parent.width
|
||||
label: "Margine alto e basso"
|
||||
label: qsTr("Top and bottom margin")
|
||||
minimumValue: 0
|
||||
maximumValue: 80
|
||||
stepSize: 4
|
||||
@@ -83,11 +83,11 @@ Page {
|
||||
onValueChanged: appSettings.readerMarginV = value
|
||||
}
|
||||
|
||||
SectionHeader { text: "Connessione" }
|
||||
SectionHeader { text: qsTr("Connection") }
|
||||
|
||||
Button {
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
text: "Prova connessione"
|
||||
text: qsTr("Test connection")
|
||||
enabled: !page.testing
|
||||
onClicked: testConnection()
|
||||
}
|
||||
@@ -118,7 +118,7 @@ Page {
|
||||
function testConnection() {
|
||||
var base = appSettings.serverUrl.trim()
|
||||
if (base.length === 0) {
|
||||
page.testResult = "Inserisci l'indirizzo del server"
|
||||
page.testResult = qsTr("Enter the server address")
|
||||
page.testOk = false
|
||||
return
|
||||
}
|
||||
@@ -127,7 +127,7 @@ Page {
|
||||
base = "https://" + base
|
||||
appSettings.serverUrl = base
|
||||
page.testing = true
|
||||
page.testResult = "Verifica in corso…"
|
||||
page.testResult = qsTr("Testing…")
|
||||
apiClient.getFeed(base + "/opds")
|
||||
}
|
||||
|
||||
@@ -138,7 +138,7 @@ Page {
|
||||
return
|
||||
page.testing = false
|
||||
page.testOk = true
|
||||
page.testResult = "Connessione OK: " + entries.length + " sezioni trovate"
|
||||
page.testResult = qsTr("Connection OK: %1 sections found").arg(entries.length)
|
||||
}
|
||||
onFeedError: {
|
||||
if (pageStack.currentPage !== page)
|
||||
|
||||
Reference in New Issue
Block a user