├── .gitattributes
├── l10n
├── ca
│ ├── koreader.mo
│ └── koreader.po
├── de
│ ├── koreader.mo
│ └── koreader.po
├── es
│ ├── koreader.mo
│ └── koreader.po
├── fr
│ ├── koreader.mo
│ └── koreader.po
├── hu
│ ├── koreader.mo
│ └── koreader.po
├── pl
│ ├── koreader.mo
│ └── koreader.po
├── ro
│ ├── koreader.mo
│ └── koreader.po
├── ru
│ ├── koreader.mo
│ └── koreader.po
├── sv
│ ├── koreader.mo
│ └── koreader.po
├── tr
│ ├── koreader.mo
│ └── koreader.po
├── uk
│ ├── koreader.mo
│ └── koreader.po
├── bg_BG
│ ├── koreader.mo
│ └── koreader.po
├── it_IT
│ ├── koreader.mo
│ └── koreader.po
├── pt_BR
│ ├── koreader.mo
│ └── koreader.po
├── ro_MD
│ ├── koreader.mo
│ └── koreader.po
├── zh_CN
│ ├── koreader.mo
│ └── koreader.po
├── zh_TW
│ ├── koreader.mo
│ └── koreader.po
├── template.txt
└── gettext.lua
├── resources
├── collage.jpg
├── pause.svg
├── 2-reader-footer-font-override.lua
├── large_book.svg
├── trophy.svg
├── 2-font-override.lua
├── licenses.txt
├── new.svg
├── file-unsupported.svg
├── 2-userpatch-template.lua
├── file.svg
└── folder.svg
├── fonts
└── source
│ ├── SourceSans3-It.ttf
│ ├── SourceSerif4-It.ttf
│ ├── SourceSans3-Bold.ttf
│ ├── SourceSerif4-Bold.ttf
│ ├── SourceSans3-BoldIt.ttf
│ ├── SourceSans3-Regular.ttf
│ ├── SourceSerif4-BoldIt.ttf
│ └── SourceSerif4-Regular.ttf
├── _meta.lua
├── icons
├── plus.svg
├── go_up.svg
├── favorites.svg
├── history.svg
├── last_document.svg
└── hero.svg
├── .github
└── ISSUE_TEMPLATE
│ ├── feature_request.md
│ └── bug-report.md
├── ptdbg.lua
├── README.md
├── titlebar.lua
├── altbookstatuswidget.lua
└── ptutil.lua
/.gitattributes:
--------------------------------------------------------------------------------
1 | *.po eol=lf
2 |
--------------------------------------------------------------------------------
/l10n/ca/koreader.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/joshuacant/ProjectTitle/HEAD/l10n/ca/koreader.mo
--------------------------------------------------------------------------------
/l10n/de/koreader.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/joshuacant/ProjectTitle/HEAD/l10n/de/koreader.mo
--------------------------------------------------------------------------------
/l10n/es/koreader.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/joshuacant/ProjectTitle/HEAD/l10n/es/koreader.mo
--------------------------------------------------------------------------------
/l10n/fr/koreader.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/joshuacant/ProjectTitle/HEAD/l10n/fr/koreader.mo
--------------------------------------------------------------------------------
/l10n/hu/koreader.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/joshuacant/ProjectTitle/HEAD/l10n/hu/koreader.mo
--------------------------------------------------------------------------------
/l10n/pl/koreader.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/joshuacant/ProjectTitle/HEAD/l10n/pl/koreader.mo
--------------------------------------------------------------------------------
/l10n/ro/koreader.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/joshuacant/ProjectTitle/HEAD/l10n/ro/koreader.mo
--------------------------------------------------------------------------------
/l10n/ru/koreader.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/joshuacant/ProjectTitle/HEAD/l10n/ru/koreader.mo
--------------------------------------------------------------------------------
/l10n/sv/koreader.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/joshuacant/ProjectTitle/HEAD/l10n/sv/koreader.mo
--------------------------------------------------------------------------------
/l10n/tr/koreader.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/joshuacant/ProjectTitle/HEAD/l10n/tr/koreader.mo
--------------------------------------------------------------------------------
/l10n/uk/koreader.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/joshuacant/ProjectTitle/HEAD/l10n/uk/koreader.mo
--------------------------------------------------------------------------------
/l10n/bg_BG/koreader.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/joshuacant/ProjectTitle/HEAD/l10n/bg_BG/koreader.mo
--------------------------------------------------------------------------------
/l10n/it_IT/koreader.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/joshuacant/ProjectTitle/HEAD/l10n/it_IT/koreader.mo
--------------------------------------------------------------------------------
/l10n/pt_BR/koreader.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/joshuacant/ProjectTitle/HEAD/l10n/pt_BR/koreader.mo
--------------------------------------------------------------------------------
/l10n/ro_MD/koreader.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/joshuacant/ProjectTitle/HEAD/l10n/ro_MD/koreader.mo
--------------------------------------------------------------------------------
/l10n/zh_CN/koreader.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/joshuacant/ProjectTitle/HEAD/l10n/zh_CN/koreader.mo
--------------------------------------------------------------------------------
/l10n/zh_TW/koreader.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/joshuacant/ProjectTitle/HEAD/l10n/zh_TW/koreader.mo
--------------------------------------------------------------------------------
/resources/collage.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/joshuacant/ProjectTitle/HEAD/resources/collage.jpg
--------------------------------------------------------------------------------
/fonts/source/SourceSans3-It.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/joshuacant/ProjectTitle/HEAD/fonts/source/SourceSans3-It.ttf
--------------------------------------------------------------------------------
/fonts/source/SourceSerif4-It.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/joshuacant/ProjectTitle/HEAD/fonts/source/SourceSerif4-It.ttf
--------------------------------------------------------------------------------
/fonts/source/SourceSans3-Bold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/joshuacant/ProjectTitle/HEAD/fonts/source/SourceSans3-Bold.ttf
--------------------------------------------------------------------------------
/fonts/source/SourceSerif4-Bold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/joshuacant/ProjectTitle/HEAD/fonts/source/SourceSerif4-Bold.ttf
--------------------------------------------------------------------------------
/fonts/source/SourceSans3-BoldIt.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/joshuacant/ProjectTitle/HEAD/fonts/source/SourceSans3-BoldIt.ttf
--------------------------------------------------------------------------------
/fonts/source/SourceSans3-Regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/joshuacant/ProjectTitle/HEAD/fonts/source/SourceSans3-Regular.ttf
--------------------------------------------------------------------------------
/fonts/source/SourceSerif4-BoldIt.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/joshuacant/ProjectTitle/HEAD/fonts/source/SourceSerif4-BoldIt.ttf
--------------------------------------------------------------------------------
/fonts/source/SourceSerif4-Regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/joshuacant/ProjectTitle/HEAD/fonts/source/SourceSerif4-Regular.ttf
--------------------------------------------------------------------------------
/resources/pause.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/_meta.lua:
--------------------------------------------------------------------------------
1 | local _ = require("l10n.gettext")
2 | return {
3 | -- we have to lie here and claim to be coverbrowser now that there are explicit calls from core koreader
4 | -- name = "projecttitle",
5 | name = "coverbrowser",
6 | fullname = _("Project: Title"),
7 | description = _([[Alternative display modes for file browser and history.]]),
8 | }
9 |
--------------------------------------------------------------------------------
/icons/plus.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/icons/go_up.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/feature_request.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Feature request
3 | about: Use this to suggest a feature
4 | title: 'FR: Add Short Title Here'
5 | labels: ''
6 | assignees: ''
7 |
8 | ---
9 |
10 | **Describe the feature you'd like**
11 | A clear and concise description of what you want to happen.
12 |
13 | **Describe the use or benefit of the feature**
14 | A clear and concise description of any alternative solutions or features you've considered.
15 |
--------------------------------------------------------------------------------
/resources/2-reader-footer-font-override.lua:
--------------------------------------------------------------------------------
1 | --[[
2 | This user patch is primarily for use with the Project: Title plugin.
3 |
4 | It sets the "Status Bar" (Footer) font to the serif font used in the plugin.
5 | --]]
6 |
7 | local ReaderFooter = require("apps/reader/modules/readerfooter")
8 | local _ReaderFooter_init_orig = ReaderFooter.init
9 | ReaderFooter.init = function(self)
10 | self.text_font_face = "source/SourceSerif4-Regular.ttf"
11 | _ReaderFooter_init_orig(self)
12 | end
13 |
--------------------------------------------------------------------------------
/resources/large_book.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/resources/trophy.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/icons/favorites.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/resources/2-font-override.lua:
--------------------------------------------------------------------------------
1 | --[[
2 | This user patch is primarily for use with the Project: Title plugin.
3 |
4 | It sets the UI fonts to the sans serif font used in the plugin.
5 | --]]
6 |
7 | local Font = require("ui/font")
8 | for k, v in pairs(Font.fontmap) do
9 | if v == "NotoSans-Regular.ttf" then
10 | Font.fontmap[k] = "source/SourceSans3-Regular.ttf"
11 | elseif v == "NotoSans-Bold.ttf" then
12 | Font.fontmap[k] = "source/SourceSans3-Bold.ttf"
13 | end
14 | end
15 | for k, v in pairs(Font.sizemap) do
16 | Font.sizemap[k] = Font.sizemap[k] + 1
17 | end
18 |
--------------------------------------------------------------------------------
/resources/licenses.txt:
--------------------------------------------------------------------------------
1 | Additional licenses for files bundled with this plugin:
2 |
3 | Fonts:
4 | https://github.com/adobe-fonts/source-serif?tab=License-1-ov-file
5 | https://github.com/adobe-fonts/source-sans?tab=OFL-1.1-1-ov-file
6 |
7 | SVG Icons:
8 | Material Design Light: https://pictogrammers.com/docs/general/license/
9 | SVG Repo CC0: https://www.svgrepo.com/page/licensing/#CC0
10 | Anton Kalashnyk CC BY 4.0: https://www.iconfinder.com/Kalash
11 |
12 | Code:
13 | 2-foldercover.lua by ebanDev AGPL v2: https://github.com/ebanDev
14 | 2-filemanager-titlebar.lua by sebdelsol MIT: https://github.com/sebdelsol
--------------------------------------------------------------------------------
/ptdbg.lua:
--------------------------------------------------------------------------------
1 | local EventListener = require("ui/widget/eventlistener")
2 | local time = require("ui/time")
3 | local logger = require("logger")
4 |
5 | local ptdbg = EventListener:extend{
6 | start_time = nil
7 | }
8 |
9 | ptdbg.enabled = false
10 |
11 | ptdbg.logprefix = "Project: Title -"
12 |
13 | function ptdbg:init()
14 | if ptdbg.enabled then
15 | self.start_time = time.now()
16 | end
17 | end
18 |
19 | function ptdbg:report(description)
20 | if ptdbg.enabled then
21 | logger.info(ptdbg.logprefix, description, string.format("done in %.3f", time.to_ms(time.since(self.start_time))))
22 | end
23 | end
24 |
25 | return ptdbg
--------------------------------------------------------------------------------
/icons/history.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/resources/new.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/bug-report.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Bug report
3 | about: Use this when reporting a crash, issues installing, or visual glitches.
4 | title: 'Bug: Add Short Title Here'
5 | labels: ''
6 | assignees: ''
7 |
8 | ---
9 |
10 | **Before sending this issue:**
11 | - Take a couple seconds and search to see if there is already an issue (open or closed) for the problem you're having.
12 | - If Project: Title suddenly stopped working, did you just upgrade KOReader? Project: Title versions are locked to specific releases of KOReader. Your options are to downgrade or wait. I try my best to get new versions of the plugin out quickly when KOReader updates but there is always a delay.
13 |
14 | **Describe the bug**
15 | Please give a description of what the bug is, and include as much detail as you can.
16 |
17 | **To Reproduce**
18 | Steps to reproduce the behavior:
19 | 1. Go to...
20 | 2. Click on...
21 | 3. etc...
22 |
23 | **Expected behavior**
24 | Please say what you were expecting to happen.
25 |
26 | **Device
27 | - Kobo? Kindle? Android?
28 |
29 | **Screenshots**
30 | If your issue is a something showing up incorrectly, please add screenshots (photos taken with your phone are fine, too!)
31 |
32 | **Logs**
33 | If your issue is a crash or the plugin not working at all, please find the `crash.log` file on your device (usually in the same folder KOReader is installed to) and attach it.
34 |
--------------------------------------------------------------------------------
/icons/last_document.svg:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
--------------------------------------------------------------------------------
/resources/file-unsupported.svg:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
--------------------------------------------------------------------------------
/resources/2-userpatch-template.lua:
--------------------------------------------------------------------------------
1 | --[[
2 |
3 | This is a template for writing a user patch to modify Project: Title itself.
4 |
5 | It is similar to ones written targeting Cover Browser, so many of those will still
6 | work on this plugin, and many of the methods used are identical. We tried to leave
7 | file, function, and variable names unchanged. However, please look at the code for
8 | this plugin first, as there are some changes and additions.
9 |
10 | To learn about user patches, please visit the KOReader wiki article:
11 | https://github.com/koreader/koreader/wiki/User-patches
12 |
13 | --]]
14 |
15 | local userpatch = require("userpatch")
16 | local logger = require ("logger")
17 |
18 | local function patchCoverBrowser(plugin)
19 | -- Modify functionality in ptutil:
20 | local ptutil = require("ptutil")
21 | -- Override a formatting or setting
22 | -- ptutil.list_defaults.max_items_per_page = 20
23 |
24 | -- Replace a function from ptutil:
25 | -- function ptutil.formatSeries(series, series_index)
26 | -- return string.format("Book %s of %s", series_index, series)
27 | -- end
28 |
29 | -- Grab Cover Grid mode and the individual Cover Grid items:
30 | local MosaicMenu = require("mosaicmenu")
31 | local MosaicMenuItem = userpatch.getUpValue(MosaicMenu._updateItemsBuildUI, "MosaicMenuItem")
32 |
33 | -- Grab Cover List mode and the individual Cover List items:
34 | local ListMenu = require("listmenu")
35 | local ListMenuItem = userpatch.getUpValue(ListMenu._updateItemsBuildUI, "ListMenuItem")
36 |
37 | -- Grab Cover Menu which sets up top bar, bottom bar, and generates the item table:
38 | local CoverMenu = require("covermenu")
39 | -- CoverMenu:setupLayout() has the top bar
40 | -- CoverMenu:updatePageInfo(select_number) has the bottom bar
41 | -- CoverMenu:genItemTable(dirs, files, path) generates the item table
42 | end
43 |
44 | userpatch.registerPatchPluginFunc("coverbrowser", patchCoverBrowser)
--------------------------------------------------------------------------------
/resources/file.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/l10n/template.txt:
--------------------------------------------------------------------------------
1 | # This is the template for localizing the additional strings found in Project: Title.
2 | # The strings below will be added to the full l10n file from KOReader.
3 |
4 | # When submitting this file, please indicate what KOReader language code the
5 | # translation is for. See: https://github.com/koreader/koreader-translations for a list.
6 |
7 | # Keep translations concise. Due to screen space limits, long strings may be truncated.
8 | # This is especially true of the setting names located in main.lua
9 |
10 | # covermenu.lua
11 | msgid "Library"
12 | msgstr ""
13 |
14 | # listmenu.lua
15 | msgid "Folders"
16 | msgstr ""
17 |
18 | msgid "Book"
19 | msgstr ""
20 |
21 | # main.lua
22 | msgid "Project: Title"
23 | msgstr ""
24 |
25 | msgid "Decrease Items Per Page"
26 | msgstr ""
27 |
28 | msgid "Increase Items Per Page"
29 | msgstr ""
30 |
31 | msgid "Cover List"
32 | msgstr ""
33 |
34 | msgid "Cover Grid"
35 | msgstr ""
36 |
37 | msgid "Details List"
38 | msgstr ""
39 |
40 | msgid "Filenames List"
41 | msgstr ""
42 |
43 | msgid "Project: Title settings"
44 | msgstr ""
45 |
46 | msgid "Portrait cover grid mode"
47 | msgstr ""
48 |
49 | msgid "Landscape cover grid mode"
50 | msgstr ""
51 |
52 | msgid "List modes"
53 | msgstr ""
54 |
55 | msgid "Folder display"
56 | msgstr ""
57 |
58 | msgid "Auto-generate cover images from books"
59 | msgstr ""
60 |
61 | msgid "Show auto-generated cover images as a stack"
62 | msgstr ""
63 |
64 | msgid "Overlay name and details in cover grid"
65 | msgstr ""
66 |
67 | msgid "Book display"
68 | msgstr ""
69 |
70 | msgid "Show series"
71 | msgstr ""
72 |
73 | msgid "Show pages read instead of progress %"
74 | msgstr ""
75 |
76 | msgid "Show file info instead of pages or progress %"
77 | msgstr ""
78 |
79 | msgid "Show progress % instead of progress bars"
80 | msgstr ""
81 |
82 | msgid "Always show maximum length progress bars"
83 | msgstr ""
84 |
85 | msgid "Show calibre tags/keywords"
86 | msgstr ""
87 |
88 | msgid "Use custom book status screen"
89 | msgstr ""
90 |
91 | msgid "Footer"
92 | msgstr ""
93 |
94 | msgid "Replace folder name with device info"
95 | msgstr ""
96 |
97 | msgid "Show page controls in left corner"
98 | msgstr ""
99 |
100 | msgid "Library mode"
101 | msgstr ""
102 |
103 | msgid "Show opened books first"
104 | msgstr ""
105 |
106 | msgid "Cache database"
107 | msgstr ""
108 |
109 | msgid "Scan home folder for new books automatically"
110 | msgstr ""
111 |
112 | msgid "Empty cache"
113 | msgstr ""
114 |
115 | msgid "Are you sure that you want to delete cover and metadata cache?"
116 | msgstr ""
117 |
118 | msgid "Cache emptied."
119 | msgstr ""
120 |
121 | msgid "Show last item indicator on touchscreen devices"
122 | msgstr ""
123 |
124 | # bookinfomanager.lua
125 | msgid ""
126 | "This will extract metadata and cover images from books in the current "
127 | "directory.\n"
128 | "Once extraction has started, you can abort at any moment by tapping on the "
129 | "screen.\n"
130 | "\n"
131 | "This extraction may take time and use some battery power: you may wish to "
132 | "keep your device plugged in."
133 | msgstr ""
134 |
135 | msgid "Found %1 books.\nLooking for new books…"
136 | msgstr ""
137 |
138 | msgid "No new books found."
139 | msgstr ""
140 |
141 | msgid "Do you want to stop?"
142 | msgstr ""
143 |
144 | msgid "Continue Indexing"
145 | msgstr ""
146 |
147 | msgid "Stop Indexing"
148 | msgstr ""
149 |
150 | msgid "Tap anywhere to stop"
151 | msgstr ""
--------------------------------------------------------------------------------
/l10n/tr/koreader.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "projecttitle/tr/>\n"
4 | "Language: tr\n"
5 | "MIME-Version: 1.0\n"
6 | "Content-Type: text/plain; charset=UTF-8\n"
7 | "Content-Transfer-Encoding: 8bit\n"
8 | "Plural-Forms: nplurals=2; plural=n > 1;\n"
9 |
10 | # covermenu.lua
11 | msgid "Library"
12 | msgstr "Kütüphane"
13 |
14 | # listmenu.lua
15 | msgid "Folders"
16 | msgstr "Klasörler"
17 |
18 | msgid "Book"
19 | msgstr "Kitap"
20 |
21 | # main.lua
22 | msgid "Cover List"
23 | msgstr "Kapak Listesi"
24 |
25 | msgid "Cover Grid"
26 | msgstr "Kapak Izgarası"
27 |
28 | msgid "Details List"
29 | msgstr "Detay Listesi"
30 |
31 | msgid "Filenames List"
32 | msgstr "Dosya Adları Listesi"
33 |
34 | msgid "Project: Title settings"
35 | msgstr "Proje: Başlık ayarları"
36 |
37 | msgid "Portrait cover grid mode"
38 | msgstr "Dikey kapak ızgarası modu"
39 |
40 | msgid "Landscape cover grid mode"
41 | msgstr "Yatay kapak ızgarası modu"
42 |
43 | msgid "List modes"
44 | msgstr "Liste modları"
45 |
46 | msgid "Folder display"
47 | msgstr "Klasör görünümü"
48 |
49 | msgid "Auto-generate cover images from books"
50 | msgstr "Kitaplardan otomatik kapak görseli oluştur"
51 |
52 | msgid "Overlay name and details in cover grid"
53 | msgstr "Kapak ızgarasında isim ve detayları göster"
54 |
55 | msgid "Book display"
56 | msgstr "Kitap görünümü"
57 |
58 | msgid "Show series"
59 | msgstr "Serileri göster"
60 |
61 | msgid "Show pages read instead of progress %"
62 | msgstr "İlerleme yüzdesi yerine okunan sayfa sayısını göster"
63 |
64 | msgid "Show file info instead of pages or progress %"
65 | msgstr "Sayfa veya ilerleme yüzdesi yerine dosya bilgisini göster"
66 |
67 | msgid "Always show maximum length progress bars"
68 | msgstr "Her zaman maksimum uzunlukta ilerleme çubukları göster"
69 |
70 | msgid "Use custom book status screen"
71 | msgstr "Özel kitap durumu ekranı kullan"
72 |
73 | msgid "Footer"
74 | msgstr "Alt bilgi"
75 |
76 | msgid "Replace folder name with device info"
77 | msgstr "Klasör adını cihaz bilgisiyle değiştir"
78 |
79 | msgid "Show page controls in left corner"
80 | msgstr "Sayfa kontrollerini sol köşede göster"
81 |
82 | msgid "Library mode"
83 | msgstr "Kütüphane modu"
84 |
85 | msgid "Show opened books first"
86 | msgstr "İlk önce açılan kitapları göster"
87 |
88 | msgid "Cache database"
89 | msgstr "Önbellek veritabanı"
90 |
91 | msgid "Scan home folder for new books automatically"
92 | msgstr "Yeni kitaplar için ana klasörü otomatik tara"
93 |
94 | msgid "Empty cache"
95 | msgstr "Önbelleği boşalt"
96 |
97 | msgid "Are you sure that you want to delete cover and metadata cache?"
98 | msgstr "Kapak ve meta veri önbelleğini silmek istediğinizden emin misiniz?"
99 |
100 | msgid "Cache emptied."
101 | msgstr "Önbellek boşaltıldı."
102 |
103 | # bookinfomanager.lua
104 | msgid ""
105 | "This will extract metadata and cover images from books in the current "
106 | "directory.\n"
107 | "Once extraction has started, you can abort at any moment by tapping on the "
108 | "screen.\n"
109 | "\n"
110 | "This extraction may take time and use some battery power: you may wish to "
111 | "keep your device plugged in."
112 | msgstr ""
113 | "Bu işlem, mevcut dizindeki kitaplardan meta veri ve kapak görsellerini "
114 | "çıkaracaktır.\n"
115 | "Çıkarma işlemi başladıktan sonra, ekrana dokunarak istediğiniz zaman iptal "
116 | "edebilirsiniz.\n"
117 | "\n"
118 | "Bu çıkarma işlemi zaman alabilir ve biraz pil gücü tüketebilir: cihazınızı "
119 | "prize takılı tutmak isteyebilirsiniz."
120 |
121 | msgid "Found %1 books.\nLooking for new books…"
122 | msgstr "%1 kitap bulundu.\nYeni kitaplar aranıyor…"
123 |
124 | msgid "No new books found."
125 | msgstr "Yeni kitap bulunamadı."
126 |
127 | msgid "Do you want to stop?"
128 | msgstr "Durdurmak istiyor misiniz?"
129 |
130 | msgid "Continue Indexing"
131 | msgstr "Dizinlemeye Devam Et"
132 |
133 | msgid "Stop Indexing"
134 | msgstr "Dizinlemeyi Durdur"
135 |
136 | msgid "Tap anywhere to stop"
137 | msgstr "Durdurmak için herhangi bir yere dokunun"
138 |
--------------------------------------------------------------------------------
/l10n/pt_BR/koreader.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "projecttitle/pt_BR/>\n"
4 | "Language: pt_BR\n"
5 | "MIME-Version: 1.0\n"
6 | "Content-Type: text/plain; charset=UTF-8\n"
7 | "Content-Transfer-Encoding: 8bit\n"
8 | "Plural-Forms: nplurals=2; plural=n > 1;\n"
9 |
10 | # covermenu.lua
11 | msgid "Library"
12 | msgstr "Biblioteca"
13 |
14 | # listmenu.lua
15 | msgid "Folders"
16 | msgstr "Pastas"
17 |
18 | msgid "Book"
19 | msgstr "Livros"
20 |
21 | # main.lua
22 | msgid "Cover List"
23 | msgstr "Lista de Capas"
24 |
25 | msgid "Cover Grid"
26 | msgstr "Grade de Capas"
27 |
28 | msgid "Details List"
29 | msgstr "Lista Detalhada"
30 |
31 | msgid "Filenames List"
32 | msgstr "Lista de Arquivos"
33 |
34 | msgid "Project: Title settings"
35 | msgstr "Project Title: Ajustes"
36 |
37 | msgid "Portrait cover grid mode"
38 | msgstr "Layout de capas no modo retrato"
39 |
40 | msgid "Landscape cover grid mode"
41 | msgstr "Layout de capas no modo paisagem"
42 |
43 | msgid "List modes"
44 | msgstr "Quantidade no modo lista"
45 |
46 | msgid "Folder display"
47 | msgstr "Exibição de pastas"
48 |
49 | msgid "Auto-generate cover images from books"
50 | msgstr "Gerar automaticamente capas dos livros"
51 |
52 | msgid "Overlay name and details in cover grid"
53 | msgstr "Sobrepor nome e detalhes na grade de capa"
54 |
55 | msgid "Book display"
56 | msgstr "Exibição de livro"
57 |
58 | msgid "Show series"
59 | msgstr "Mostrar séries"
60 |
61 | msgid "Show pages read instead of progress %"
62 | msgstr "Mostrar páginas lidas em vez de % de progresso"
63 |
64 | msgid "Show file info instead of pages or progress %"
65 | msgstr "Mostrar informações do arquivo em vez de páginas ou % de progresso"
66 |
67 | msgid "Always show maximum length progress bars"
68 | msgstr "Sempre mostrar barras de progresso de comprimento máximo"
69 |
70 | msgid "Use custom book status screen"
71 | msgstr "Use a tela de status do livro personalizada"
72 |
73 | msgid "Footer"
74 | msgstr "Rodapé"
75 |
76 | msgid "Replace folder name with device info"
77 | msgstr "Substituir o nome da pasta pelas informações do dispositivo"
78 |
79 | msgid "Show page controls in left corner"
80 | msgstr "Mostrar controles de página no canto esquerdo"
81 |
82 | msgid "Library mode"
83 | msgstr "Modo biblioteca"
84 |
85 | msgid "Show opened books first"
86 | msgstr "Mostrar livros abertos primeiro"
87 |
88 | msgid "Cache database"
89 | msgstr "Banco de dados de cache"
90 |
91 | msgid "Scan home folder for new books automatically"
92 | msgstr "Verificar automaticamente a pasta inicial em busca de novos livros"
93 |
94 | msgid "Empty cache"
95 | msgstr "Excluir o cache"
96 |
97 | msgid "Are you sure that you want to delete cover and metadata cache?"
98 | msgstr "Tem certeza de que deseja excluir o cache de capa e metadados?"
99 |
100 | msgid "Cache emptied."
101 | msgstr "Cache esvaziado"
102 |
103 | # bookinfomanager.lua
104 | msgid ""
105 | "This will extract metadata and cover images from books in the current "
106 | "directory.\n"
107 | "Once extraction has started, you can abort at any moment by tapping on the "
108 | "screen.\n"
109 | "\n"
110 | "This extraction may take time and use some battery power: you may wish to "
111 | "keep your device plugged in."
112 | msgstr ""
113 | "Isso extrairá metadados e imagens de capa dos livros no diretório atual.\n"
114 | "Após o início da extração, você pode interrompê-la a qualquer momento tocando na tela.\n"
115 | "\n"
116 | "Esta extração pode levar algum tempo e consumir um pouco da bateria:"
117 | "mantenha o dispositivo conectado."
118 |
119 | msgid "Found %1 books.\nLooking for new books…"
120 | msgstr "Encontrados %1 livros. \nProcurando por novos livros..."
121 |
122 | msgid "No new books found."
123 | msgstr "Não foram encontrados novos livros"
124 |
125 | msgid "Do you want to stop?"
126 | msgstr "Você quer parar?"
127 |
128 | msgid "Continue Indexing"
129 | msgstr "Continuar indexação"
130 |
131 | msgid "Stop Indexing"
132 | msgstr "Parar indexação"
133 |
134 | msgid "Tap anywhere to stop"
135 | msgstr "Toque em qualquer lugar para parar"
136 |
--------------------------------------------------------------------------------
/l10n/uk/koreader.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "projecttitle/uk/>\n"
4 | "Language: uk\n"
5 | "MIME-Version: 1.0\n"
6 | "Content-Type: text/plain; charset=UTF-8\n"
7 | "Content-Transfer-Encoding: 8bit\n"
8 | "Plural-Forms: nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != "
9 | "11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % "
10 | "100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || "
11 | "(n % 100 >=11 && n % 100 <=14 )) ? 2: 3);\n"
12 |
13 | # covermenu.lua
14 | msgid "Library"
15 | msgstr "Бібліотека"
16 |
17 | # listmenu.lua
18 | msgid "Folders"
19 | msgstr "Теки"
20 |
21 | msgid "Book"
22 | msgstr "Книга"
23 |
24 | # main.lua
25 | msgid "Cover List"
26 | msgstr "Список з обкладинками"
27 |
28 | msgid "Cover Grid"
29 | msgstr "Сітка з обкладинками"
30 |
31 | msgid "Details List"
32 | msgstr "Детальний список"
33 |
34 | msgid "Filenames List"
35 | msgstr "Список файлів"
36 |
37 | msgid "Project: Title settings"
38 | msgstr "Проєкт: Налаштування заголовків"
39 |
40 | msgid "Portrait cover grid mode"
41 | msgstr "Портретна сітка обкладинок"
42 |
43 | msgid "Landscape cover grid mode"
44 | msgstr "Альбомна сітка обкладинок"
45 |
46 | msgid "List modes"
47 | msgstr "Режими списку"
48 |
49 | msgid "Folder display"
50 | msgstr "Відображення теки"
51 |
52 | msgid "Auto-generate cover images from books"
53 | msgstr "Автоматично створювати обкладинки з книг"
54 |
55 | msgid "Overlay name and details in cover grid"
56 | msgstr "Показувати назву та деталі на обкладинці"
57 |
58 | msgid "Book display"
59 | msgstr "Відображення книги"
60 |
61 | msgid "Show series"
62 | msgstr "Показувати серії"
63 |
64 | msgid "Show pages read instead of progress %"
65 | msgstr "Показувати прочитані сторінки замість відсотків"
66 |
67 | msgid "Show file info instead of pages or progress %"
68 | msgstr "Показувати дані файлу замість сторінок або %"
69 |
70 | msgid "Always show maximum length progress bars"
71 | msgstr "Завжди показувати максимальну довжину прогрес-бару"
72 |
73 | msgid "Use custom book status screen"
74 | msgstr "Використовувати власний екран статусу книги"
75 |
76 | msgid "Footer"
77 | msgstr "Нижня панель"
78 |
79 | msgid "Replace folder name with device info"
80 | msgstr "Замінити назву теки на інформацію про пристрій"
81 |
82 | msgid "Show page controls in left corner"
83 | msgstr "Показувати керування сторінками в лівому куті"
84 |
85 | msgid "Library mode"
86 | msgstr "Режим бібліотеки"
87 |
88 | msgid "Show opened books first"
89 | msgstr "Показувати спочатку відкриті книги"
90 |
91 | msgid "Cache database"
92 | msgstr "Кешувати базу даних"
93 |
94 | msgid "Scan home folder for new books automatically"
95 | msgstr "Автоматично шукати нові книги в домашній теці"
96 |
97 | msgid "Empty cache"
98 | msgstr "Очистити кеш"
99 |
100 | msgid "Are you sure that you want to delete cover and metadata cache?"
101 | msgstr "Ви впевнені, що хочете видалити кеш обкладинок та метаданих?"
102 |
103 | msgid "Cache emptied."
104 | msgstr "Кеш очищено."
105 |
106 | # bookinfomanager.lua
107 | msgid ""
108 | "This will extract metadata and cover images from books in the current "
109 | "directory.\n"
110 | "Once extraction has started, you can abort at any moment by tapping on the "
111 | "screen.\n"
112 | "\n"
113 | "This extraction may take time and use some battery power: you may wish to "
114 | "keep your device plugged in."
115 | msgstr ""
116 | "Буде витягнуто метадані та обкладинки з книг у цій теці.\n"
117 | "Після початку можна зупинити процес у будь-який момент, просто торкнувшись екрана.\n"
118 | "\n"
119 | "Процес може бути довгим і витрачати заряд — краще тримати пристрій на зарядці."
120 |
121 | msgid "Found %1 books.\nLooking for new books…"
122 | msgstr "Знайдено книг: %1.\nШукаємо нові…"
123 |
124 | msgid "No new books found."
125 | msgstr "Нових книг не знайдено."
126 |
127 | msgid "Do you want to stop?"
128 | msgstr "Ви хочете зупинити?"
129 |
130 | msgid "Continue Indexing"
131 | msgstr "Продовжити індексацію"
132 |
133 | msgid "Stop Indexing"
134 | msgstr "Зупинити індексацію"
135 |
136 | msgid "Tap anywhere to stop"
137 | msgstr "Торкніться будь-де, щоб зупинити"
138 |
--------------------------------------------------------------------------------
/l10n/sv/koreader.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "projecttitle/sv/>\n"
4 | "Language: sv\n"
5 | "MIME-Version: 1.0\n"
6 | "Content-Type: text/plain; charset=UTF-8\n"
7 | "Content-Transfer-Encoding: 8bit\n"
8 | "Plural-Forms: nplurals=2; plural=n != 1;\n"
9 |
10 | # covermenu.lua
11 | msgid "Library"
12 | msgstr "Bibliotek"
13 |
14 | # listmenu.lua
15 | msgid "Folders"
16 | msgstr "Mappar"
17 |
18 | msgid "Book"
19 | msgstr "Bok"
20 |
21 | # main.lua
22 | msgid "Project: Title"
23 | msgstr "Project: Title"
24 |
25 | msgid "Decrease Items Per Page"
26 | msgstr "Minska antalet objekt per sida"
27 |
28 | msgid "Increase Items Per Page"
29 | msgstr "Öka antalet objekt per sida"
30 |
31 | msgid "Cover List"
32 | msgstr "Omslagslista"
33 |
34 | msgid "Cover Grid"
35 | msgstr "Omslagsrutnät"
36 |
37 | msgid "Details List"
38 | msgstr "Detaljerad lista"
39 |
40 | msgid "Filenames List"
41 | msgstr "Filnamnslista"
42 |
43 | msgid "Project: Title settings"
44 | msgstr "Project: Title-inställningar"
45 |
46 | msgid "Portrait cover grid mode"
47 | msgstr "Omslagsrutnät i porträttläge"
48 |
49 | msgid "Landscape cover grid mode"
50 | msgstr "Omslagsrutnät i landskapsläge"
51 |
52 | msgid "List modes"
53 | msgstr "Listlägen"
54 |
55 | msgid "Folder display"
56 | msgstr "Mappvisning"
57 |
58 | msgid "Auto-generate cover images from books"
59 | msgstr "Autogenerera mappomslag från böcker"
60 |
61 | msgid "Overlay name and details in cover grid"
62 | msgstr "Visa namn och detaljer i omslagsrutnätet"
63 |
64 | msgid "Book display"
65 | msgstr "Bokvisning"
66 |
67 | msgid "Show series"
68 | msgstr "Visa serier"
69 |
70 | msgid "Show pages read instead of progress %"
71 | msgstr "Visa antalet lästa sidor i stället för %"
72 |
73 | msgid "Show file info instead of pages or progress %"
74 | msgstr "Visa filinformation i stället för läsprogression"
75 |
76 | msgid "Show progress % instead of progress bars"
77 | msgstr "Visa % i stället för förloppsstaplar"
78 |
79 | msgid "Always show maximum length progress bars"
80 | msgstr "Visa alltid förloppsstaplar med maximal längd "
81 |
82 | msgid "Use custom book status screen"
83 | msgstr "Använd anpassad bokstatusskärm"
84 |
85 | msgid "Footer"
86 | msgstr "Sidfot"
87 |
88 | msgid "Replace folder name with device info"
89 | msgstr "Ersätt mappnamn med enhetsinformation"
90 |
91 | msgid "Show page controls in left corner"
92 | msgstr "Visa sidkontroller i vänstra hörnet"
93 |
94 | msgid "Library mode"
95 | msgstr "Biblioteksläge"
96 |
97 | msgid "Show opened books first"
98 | msgstr "Visa öppnade böcker först"
99 |
100 | msgid "Cache database"
101 | msgstr "Cache-databas"
102 |
103 | msgid "Scan home folder for new books automatically"
104 | msgstr "Skanna hemmappen efter nya böcker automatiskt"
105 |
106 | msgid "Empty cache"
107 | msgstr "Rensa cache"
108 |
109 | msgid "Are you sure that you want to delete cover and metadata cache?"
110 | msgstr "Är du säker på att du vill radera omslag och metadata-cachen?"
111 |
112 | msgid "Cache emptied."
113 | msgstr "Cachen rensad"
114 |
115 | # bookinfomanager.lua
116 | msgid ""
117 | "This will extract metadata and cover images from books in the current "
118 | "directory.\n"
119 | "Once extraction has started, you can abort at any moment by tapping on the "
120 | "screen.\n"
121 | "\n"
122 | "This extraction may take time and use some battery power: you may wish to "
123 | "keep your device plugged in."
124 | msgstr ""
125 | "Detta kommer att extrahera metadata och omslagsbilder från böcker i den aktuella "
126 | "mappen.\n"
127 | "När extraheringen har startat kan du avbryta när som helst genom att trycka på "
128 | "skärmen.\n"
129 | "\n"
130 | "Denna extrahering kan ta tid och använda en del batteri: du kanske vill "
131 | "koppla in din enhet."
132 |
133 | msgid "Found %1 books.\nLooking for new books…"
134 | msgstr "Hittade %1 böcker.\nLetar efter nya böcker…"
135 |
136 | msgid "No new books found."
137 | msgstr "Inga nya böcker hittade."
138 |
139 | msgid "Do you want to stop?"
140 | msgstr "Vill du avbryta?"
141 |
142 | msgid "Continue Indexing"
143 | msgstr "Fortsätt indexera"
144 |
145 | msgid "Stop Indexing"
146 | msgstr "Avsluta indexering"
147 |
148 | msgid "Tap anywhere to stop"
149 | msgstr "Tryck var som helst för att avbryta"
--------------------------------------------------------------------------------
/l10n/hu/koreader.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "projecttitle/hu/>\n"
4 | "Language: hu\n"
5 | "MIME-Version: 1.0\n"
6 | "Content-Type: text/plain; charset=UTF-8\n"
7 | "Content-Transfer-Encoding: 8bit\n"
8 | "Plural-Forms: nplurals=2; plural=n != 1;\n"
9 |
10 | # covermenu.lua
11 | msgid "Library"
12 | msgstr "Könyvtár"
13 |
14 | # listmenu.lua
15 | msgid "Folders"
16 | msgstr "Mappák"
17 |
18 | msgid "Book"
19 | msgstr "Könyv"
20 |
21 | # main.lua
22 | msgid "Project: Title"
23 | msgstr "Project: Title"
24 |
25 | msgid "Decrease Items Per Page"
26 | msgstr "Oldalankénti elemszám csökkentése"
27 |
28 | msgid "Increase Items Per Page"
29 | msgstr "Oldalankénti elemszám növelése"
30 |
31 | msgid "Cover List"
32 | msgstr "Borítólista"
33 |
34 | msgid "Cover Grid"
35 | msgstr "Borítórács"
36 |
37 | msgid "Details List"
38 | msgstr "Részletes lista"
39 |
40 | msgid "Filenames List"
41 | msgstr "Fájlnévlista"
42 |
43 | msgid "Project: Title settings"
44 | msgstr "Project: Title beállítások"
45 |
46 | msgid "Portrait cover grid mode"
47 | msgstr "Borítórács álló mód"
48 |
49 | msgid "Landscape cover grid mode"
50 | msgstr "Borítórács fekvő mód"
51 |
52 | msgid "List modes"
53 | msgstr "Lista módok"
54 |
55 | msgid "Folder display"
56 | msgstr "Mappamegjelenés"
57 |
58 | msgid "Auto-generate cover images from books"
59 | msgstr "Borítóképek automatikus generálása könyvekből"
60 |
61 | msgid "Overlay name and details in cover grid"
62 | msgstr "Név és részletek megjelenítése a borítórácsban"
63 |
64 | msgid "Book display"
65 | msgstr "Könyvmegjelenés"
66 |
67 | msgid "Show series"
68 | msgstr "Könyvsorozat megjelenítése"
69 |
70 | msgid "Show pages read instead of progress %"
71 | msgstr "Olvasott oldalak számának megjelenítése"
72 |
73 | msgid "Show file info instead of pages or progress %"
74 | msgstr "Fájlinfó megjelenítése"
75 |
76 | msgid "Show progress % instead of progress bars"
77 | msgstr "Olvasott százalék megjelenítése"
78 |
79 | msgid "Always show maximum length progress bars"
80 | msgstr "Haladásjelző sáv megjelenítése"
81 |
82 | msgid "Use custom book status screen"
83 | msgstr "Egyedi könyvállapot-képernyő használata"
84 |
85 | msgid "Footer"
86 | msgstr "Lábléc"
87 |
88 | msgid "Replace folder name with device info"
89 | msgstr "Készülékinfó megjelenítése mappanév helyett"
90 |
91 | msgid "Show page controls in left corner"
92 | msgstr "Oldalnavigáció megjelenítése a bal sarokban"
93 |
94 | msgid "Library mode"
95 | msgstr "Könyvtár mód"
96 |
97 | msgid "Show opened books first"
98 | msgstr "Megnyitott könyvek megjelenítése először"
99 |
100 | msgid "Cache database"
101 | msgstr "Gyorsítótár-adatbázis"
102 |
103 | msgid "Scan home folder for new books automatically"
104 | msgstr "Új könyvek automatikus beolvasása a kezdőmappában"
105 |
106 | msgid "Empty cache"
107 | msgstr "Gyorsítótár ürítése"
108 |
109 | msgid "Are you sure that you want to delete cover and metadata cache?"
110 | msgstr "Biztosan törölni szeretnéd a borító és a metaadatok gyorsítótárát?"
111 |
112 | msgid "Cache emptied."
113 | msgstr "Gyorsítótár ürítve."
114 |
115 | # bookinfomanager.lua
116 | msgid ""
117 | "This will extract metadata and cover images from books in the current "
118 | "directory.\n"
119 | "Once extraction has started, you can abort at any moment by tapping on the "
120 | "screen.\n"
121 | "\n"
122 | "This extraction may take time and use some battery power: you may wish to "
123 | "keep your device plugged in."
124 | msgstr ""
125 | "Ez kigyűjti a metaadatokat és a borítóképeket a mappában lévő könyvekből. "
126 | "A folyamat bármikor megszakítható koppintással.\n"
127 | "\n"
128 | "Mivel a folyamat hosszabb időt is igénybe vehet az esetlegesen megnövekedett "
129 | "akkumulátorfogyasztás miatt, érdemes a készüléket töltőre helyezni."
130 |
131 | msgid "Found %1 books.\nLooking for new books…"
132 | msgstr "%1 könyv megtalálva.\nÚj könyvek keresése…"
133 |
134 | msgid "No new books found."
135 | msgstr "Nem található új könyv."
136 |
137 | msgid "Do you want to stop?"
138 | msgstr "Szeretnéd leállítani?"
139 |
140 | msgid "Continue Indexing"
141 | msgstr "Indexelés folytatása"
142 |
143 | msgid "Stop Indexing"
144 | msgstr "Indexelés leállítása"
145 |
146 | msgid "Tap anywhere to stop"
147 | msgstr "Koppintson a leállításhoz"
148 |
--------------------------------------------------------------------------------
/l10n/it_IT/koreader.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "projecttitle/it/>\n"
4 | "Language: it_IT\n"
5 | "MIME-Version: 1.0\n"
6 | "Content-Type: text/plain; charset=UTF-8\n"
7 | "Content-Transfer-Encoding: 8bit\n"
8 | "Plural-Forms: nplurals=2; plural=n != 1;\n"
9 |
10 | # covermenu.lua
11 | msgid "Library"
12 | msgstr "Libreria"
13 |
14 | # listmenu.lua
15 | msgid "Folders"
16 | msgstr "Cartelle"
17 |
18 | msgid "Book"
19 | msgstr "Libro"
20 |
21 | # main.lua
22 | msgid "Project: Title"
23 | msgstr "Project: Title"
24 |
25 | msgid "Decrease Items Per Page"
26 | msgstr "Riduci elementi per pagina"
27 |
28 | msgid "Increase Items Per Page"
29 | msgstr "Aumenta elementi per pagina"
30 |
31 | msgid "Cover List"
32 | msgstr "Lista Copertine"
33 |
34 | msgid "Cover Grid"
35 | msgstr "Griglia Copertine"
36 |
37 | msgid "Details List"
38 | msgstr "Lista Dettagliata"
39 |
40 | msgid "Filenames List"
41 | msgstr "Lista Nomi File"
42 |
43 | msgid "Project: Title settings"
44 | msgstr "Impostazioni Project: Title"
45 |
46 | msgid "Portrait cover grid mode"
47 | msgstr "Modalità griglia copertine verticale"
48 |
49 | msgid "Landscape cover grid mode"
50 | msgstr "Modalità griglia copertine orizzontale"
51 |
52 | msgid "List modes"
53 | msgstr "Modalità lista"
54 |
55 | msgid "Folder display"
56 | msgstr "Visualizzazione cartelle"
57 |
58 | msgid "Auto-generate cover images from books"
59 | msgstr "Genera automaticamente le copertine dai libri"
60 |
61 | msgid "Overlay name and details in cover grid"
62 | msgstr "Sovrapponi nome e dettagli nella griglia copertine"
63 |
64 | msgid "Book display"
65 | msgstr "Visualizzazione libri"
66 |
67 | msgid "Show series"
68 | msgstr "Mostra le serie"
69 |
70 | msgid "Show pages read instead of progress %"
71 | msgstr "Mostra pagine lette invece del progresso %"
72 |
73 | msgid "Show progress % instead of progress bars"
74 | msgstr "Mostra progresso % al posto della barra di progresso"
75 |
76 | msgid "Show file info instead of pages or progress %"
77 | msgstr "Mostra info file invece di pagine o progresso %"
78 |
79 | msgid "Always show maximum length progress bars"
80 | msgstr "Mostra barre di avanzamento a lunghezza massima"
81 |
82 | msgid "Use custom book status screen"
83 | msgstr "Usa schermata personalizzata di stato libro"
84 |
85 | msgid "Footer"
86 | msgstr "Piè di pagina"
87 |
88 | msgid "Replace folder name with device info"
89 | msgstr "Sostituisci nome cartella con info dispositivo"
90 |
91 | msgid "Show page controls in left corner"
92 | msgstr "Mostra controlli di pagina nell'angolo sinistro"
93 |
94 | msgid "Library mode"
95 | msgstr "Modalità libreria"
96 |
97 | msgid "Show opened books first"
98 | msgstr "Mostra libri aperti per primi"
99 |
100 | msgid "Cache database"
101 | msgstr "Cache del database"
102 |
103 | msgid "Scan home folder for new books automatically"
104 | msgstr "Scansiona automaticamente la home per nuovi libri"
105 |
106 | msgid "Empty cache"
107 | msgstr "Svuota cache"
108 |
109 | msgid "Are you sure that you want to delete cover and metadata cache?"
110 | msgstr "Vuoi eliminare la cache delle copertine e dei metadati?"
111 |
112 | msgid "Cache emptied."
113 | msgstr "Cache svuotata."
114 |
115 | # bookinfomanager.lua
116 | msgid ""
117 | "This will extract metadata and cover images from books in the current "
118 | "directory.\n"
119 | "Once extraction has started, you can abort at any moment by tapping on the "
120 | "screen.\n"
121 | "\n"
122 | "This extraction may take time and use some battery power: you may wish to "
123 | "keep your device plugged in."
124 | msgstr ""
125 | "Questo estrarrà metadati e copertine dai libri nella directory corrente.\n"
126 | "Una volta iniziata l'estrazione, puoi interromperla in qualsiasi momento toccando lo schermo.\n"
127 | "\n"
128 | "L'estrazione potrebbe richiedere tempo e consumare batteria: potresti voler tenere il dispositivo collegato all'alimentazione."
129 |
130 | msgid "Found %1 books.\nLooking for new books…"
131 | msgstr "Trovati %1 libri.\nRicerca nuovi libri…"
132 |
133 | msgid "No new books found."
134 | msgstr "Nessun nuovo libro trovato."
135 |
136 | msgid "Do you want to stop?"
137 | msgstr "Vuoi interrompere?"
138 |
139 | msgid "Continue Indexing"
140 | msgstr "Continua Indicizzazione"
141 |
142 | msgid "Stop Indexing"
143 | msgstr "Interrompi Indicizzazione"
144 |
145 | msgid "Tap anywhere to stop"
146 | msgstr "Tocca ovunque per interrompere"
147 |
--------------------------------------------------------------------------------
/l10n/ru/koreader.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "projecttitle/ru/>\n"
4 | "Language: ru\n"
5 | "MIME-Version: 1.0\n"
6 | "Content-Type: text/plain; charset=UTF-8\n"
7 | "Content-Transfer-Encoding: 8bit\n"
8 | "Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
9 | "n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || "
10 | "(n%100>=11 && n%100<=14)? 2 : 3);\n"
11 |
12 | # covermenu.lua
13 | msgid "Library"
14 | msgstr "Библиотека"
15 |
16 | # listmenu.lua
17 | msgid "Folders"
18 | msgstr "Папки"
19 |
20 | msgid "Book"
21 | msgstr "Книга"
22 |
23 | # main.lua
24 | msgid "Project: Title"
25 | msgstr "Project: Title"
26 |
27 | msgid "Decrease Items Per Page"
28 | msgstr "Уменьшить кол-во элементов на стр."
29 |
30 | msgid "Increase Items Per Page"
31 | msgstr "Увеличить кол-во элементов на стр."
32 |
33 | msgid "Cover List"
34 | msgstr "Список с обложками"
35 |
36 | msgid "Cover Grid"
37 | msgstr "Сетка обложек"
38 |
39 | msgid "Details List"
40 | msgstr "Детальный список"
41 |
42 | msgid "Filenames List"
43 | msgstr "Список файлов"
44 |
45 | msgid "Project: Title settings"
46 | msgstr "Проект: Настройки заголовков"
47 |
48 | msgid "Portrait cover grid mode"
49 | msgstr "Портретная сетка обложек"
50 |
51 | msgid "Landscape cover grid mode"
52 | msgstr "Альбомная сетка обложек"
53 |
54 | msgid "List modes"
55 | msgstr "Режимы списка"
56 |
57 | msgid "Folder display"
58 | msgstr "Отображение папки"
59 |
60 | msgid "Auto-generate cover images from books"
61 | msgstr "Автоматически создавать обложки из книг"
62 |
63 | msgid "Overlay name and details in cover grid"
64 | msgstr "Показывать название и детали на обложке"
65 |
66 | msgid "Book display"
67 | msgstr "Отображение книги"
68 |
69 | msgid "Show series"
70 | msgstr "Показывать серии"
71 |
72 | msgid "Show pages read instead of progress %"
73 | msgstr "Показывать прочитанные страницы вместо процентов"
74 |
75 | msgid "Show progress % instead of progress bars"
76 | msgstr "Показать прогресс в % вместо прогресс-бара"
77 |
78 | msgid "Show file info instead of pages or progress %"
79 | msgstr "Показывать информацию о файле вместо страниц или %"
80 |
81 | msgid "Always show maximum length progress bars"
82 | msgstr "Всегда показывать максимальную длину прогресс-бара"
83 |
84 | msgid "Use custom book status screen"
85 | msgstr "Использовать собственный экран статуса книги"
86 |
87 | msgid "Footer"
88 | msgstr "Нижняя панель"
89 |
90 | msgid "Replace folder name with device info"
91 | msgstr "Заменить имя папки на информацию об устройстве"
92 |
93 | msgid "Show page controls in left corner"
94 | msgstr "Показывать управление страницами в левом углу"
95 |
96 | msgid "Library mode"
97 | msgstr "Режим библиотеки"
98 |
99 | msgid "Show opened books first"
100 | msgstr "Показывать сначала открытые книги"
101 |
102 | msgid "Cache database"
103 | msgstr "Кешировать базу данных"
104 |
105 | msgid "Scan home folder for new books automatically"
106 | msgstr "Автоматически искать новые книги в домашней папке"
107 |
108 | msgid "Empty cache"
109 | msgstr "Очистить кеш метаданных"
110 |
111 | msgid "Are you sure that you want to delete cover and metadata cache?"
112 | msgstr "Вы уверенны, что хотите удалить кеш обложек и метаданных?"
113 |
114 | msgid "Cache emptied."
115 | msgstr "Кеш очищен."
116 |
117 | # bookinfomanager.lua
118 | msgid ""
119 | "This will extract metadata and cover images from books in the current "
120 | "directory.\n"
121 | "Once extraction has started, you can abort at any moment by tapping on the "
122 | "screen.\n"
123 | "\n"
124 | "This extraction may take time and use some battery power: you may wish to "
125 | "keep your device plugged in."
126 | msgstr ""
127 | "Будут извлечены метаданные и обложки из книг в текущей папке.\n"
128 | "После начала можно остановить процесс в любой момент, просто нажав на экран.\n"
129 | "\n"
130 | "Процесс может быть долгим и разряжать батарею — лучше держать устройство на зарядке."
131 |
132 | msgid "Found %1 books.\nLooking for new books…"
133 | msgstr "Найдено книг: %1.\nИщем новые…"
134 |
135 | msgid "No new books found."
136 | msgstr "Новых книг не найдено."
137 |
138 | msgid "Do you want to stop?"
139 | msgstr "Вы хотите остановить?"
140 |
141 | msgid "Continue Indexing"
142 | msgstr "Продолжить индексацию"
143 |
144 | msgid "Stop Indexing"
145 | msgstr "Остановить индексацию"
146 |
147 | msgid "Tap anywhere to stop"
148 | msgstr "Нажмите в любом месте, чтобы остановить"
149 |
--------------------------------------------------------------------------------
/l10n/pl/koreader.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "projecttitle/pl/>\n"
4 | "Language: pl\n"
5 | "MIME-Version: 1.0\n"
6 | "Content-Type: text/plain; charset=UTF-8\n"
7 | "Content-Transfer-Encoding: 8bit\n"
8 | "Plural-Forms: nplurals=2; plural=(n != 1);\n"
9 |
10 | # covermenu.lua
11 | msgid "Library"
12 | msgstr "Biblioteka"
13 |
14 | # listmenu.lua
15 | msgid "Folders"
16 | msgstr "Foldery"
17 |
18 | msgid "Book"
19 | msgstr "Książka"
20 |
21 | # main.lua
22 | msgid "Project: Title"
23 | msgstr "Projekt: Tytuł"
24 |
25 | msgid "Decrease Items Per Page"
26 | msgstr "Zmniejsz elementy na stronę"
27 |
28 | msgid "Increase Items Per Page"
29 | msgstr "Zwiększ elementy na stronę"
30 |
31 | msgid "Cover List"
32 | msgstr "Lista okładek"
33 |
34 | msgid "Cover Grid"
35 | msgstr "Siatka okładek"
36 |
37 | msgid "Details List"
38 | msgstr "Lista szczegółów"
39 |
40 | msgid "Filenames List"
41 | msgstr "Lista nazw plików"
42 |
43 | msgid "Project: Title settings"
44 | msgstr "Ustawienia projektu: Tytuł"
45 |
46 | msgid "Portrait cover grid mode"
47 | msgstr "Tryb siatki okładek w orientacji pionowej"
48 |
49 | msgid "Landscape cover grid mode"
50 | msgstr "Tryb siatki okładek w orientacji poziomej"
51 |
52 | msgid "List modes"
53 | msgstr "Tryby list"
54 |
55 | msgid "Folder display"
56 | msgstr "Wyświetlanie folderów"
57 |
58 | msgid "Auto-generate cover images from books"
59 | msgstr "Automatycznie generuj obrazy okładek z książek"
60 |
61 | msgid "Overlay name and details in cover grid"
62 | msgstr "Nałóż nazwę i szczegóły w siatce okładek"
63 |
64 | msgid "Book display"
65 | msgstr "Wyświetlanie książek"
66 |
67 | msgid "Show series"
68 | msgstr "Pokaż serie"
69 |
70 | msgid "Show pages read instead of progress %"
71 | msgstr "Pokaż przeczytane strony zamiast postępu %"
72 |
73 | msgid "Show file info instead of pages or progress %"
74 | msgstr "Pokaż informacje o pliku zamiast stron lub postępu %"
75 |
76 | msgid "Show progress % instead of progress bars"
77 | msgstr "Pokaż postęp % zamiast pasków postępu"
78 |
79 | msgid "Always show maximum length progress bars"
80 | msgstr "Zawsze pokazuj paski postępu maksymalnej długości"
81 |
82 | msgid "Use custom book status screen"
83 | msgstr "Użyj niestandardowego ekranu statusu książki"
84 |
85 | msgid "Footer"
86 | msgstr "Stopka"
87 |
88 | msgid "Replace folder name with device info"
89 | msgstr "Zamień nazwę folderu na informacje o urządzeniu"
90 |
91 | msgid "Show page controls in left corner"
92 | msgstr "Pokaż kontrolki stron w lewym rogu"
93 |
94 | msgid "Library mode"
95 | msgstr "Tryb biblioteki"
96 |
97 | msgid "Show opened books first"
98 | msgstr "Pokaż najpierw otwarte książki"
99 |
100 | msgid "Cache database"
101 | msgstr "Baza danych pamięci podręcznej"
102 |
103 | msgid "Scan home folder for new books automatically"
104 | msgstr "Automatycznie zeskanuj folder główny w poszukiwaniu nowych książek"
105 |
106 | msgid "Empty cache"
107 | msgstr "Wyczyść pamięć podręczną"
108 |
109 | msgid "Are you sure that you want to delete cover and metadata cache?"
110 | msgstr "Czy na pewno chcesz usunąć pamięć podręczną okładek i metadanych?"
111 |
112 | msgid "Cache emptied."
113 | msgstr "Pamięć podręczna wyczyszczona."
114 |
115 | # bookinfomanager.lua
116 | msgid ""
117 | "This will extract metadata and cover images from books in the current "
118 | "directory.\n"
119 | "Once extraction has started, you can abort at any moment by tapping on the "
120 | "screen.\n"
121 | "\n"
122 | "This extraction may take time and use some battery power: you may wish to "
123 | "keep your device plugged in."
124 | msgstr ""
125 | "To wyodrębni metadane i obrazy okładek z książek w bieżącym katalogu.\n"
126 | "Gdy proces wyodrębniania się rozpocznie, możesz przerwać w każdej chwili, "
127 | "dotykając ekranu.\n"
128 | "\n"
129 | "Ten proces może potrwać chwilę i zużyć trochę energii: warto trzymać "
130 | "urządzenie podłączone do zasilania."
131 |
132 | msgid ""
133 | "Found %1 books.\n"
134 | "Looking for new books…"
135 | msgstr ""
136 | "Znaleziono %1 książek.\n"
137 | "Szukanie nowych książek…"
138 |
139 | msgid "No new books found."
140 | msgstr "Nie znaleziono nowych książek."
141 |
142 | msgid "Do you want to stop?"
143 | msgstr "Czy chcesz zatrzymać?"
144 |
145 | msgid "Continue Indexing"
146 | msgstr "Kontynuuj indeksowanie"
147 |
148 | msgid "Stop Indexing"
149 | msgstr "Zatrzymaj indeksowanie"
150 |
151 | msgid "Tap anywhere to stop"
152 | msgstr "Dotknij w dowolnym miejscu, aby zatrzymać"
153 |
--------------------------------------------------------------------------------
/l10n/bg_BG/koreader.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "projecttitle/bg/>\n"
4 | "Language: bg_BG\n"
5 | "MIME-Version: 1.0\n"
6 | "Content-Type: text/plain; charset=UTF-8\n"
7 | "Content-Transfer-Encoding: 8bit\n"
8 | "Plural-Forms: nplurals=2; plural=n != 1;\n"
9 |
10 | # covermenu.lua
11 | msgid "Library"
12 | msgstr "Библиотека"
13 |
14 | # listmenu.lua
15 | msgid "Folders"
16 | msgstr "Папки"
17 |
18 | msgid "Book"
19 | msgstr "Книга"
20 |
21 | # main.lua
22 | msgid "Project: Title"
23 | msgstr "Project: Title"
24 |
25 | msgid "Decrease Items Per Page"
26 | msgstr "Намаляване на елементите на страница"
27 |
28 | msgid "Increase Items Per Page"
29 | msgstr "Увеличаване на елементите на страница"
30 |
31 | msgid "Cover List"
32 | msgstr "Списък с корици"
33 |
34 | msgid "Cover Grid"
35 | msgstr "Решетка с корици"
36 |
37 | msgid "Details List"
38 | msgstr "Списък с подробности"
39 |
40 | msgid "Filenames List"
41 | msgstr "Списък с имена"
42 |
43 | msgid "Project: Title settings"
44 | msgstr "Project: Title настройки"
45 |
46 | msgid "Portrait cover grid mode"
47 | msgstr "Решетка с корици: портретен режим"
48 |
49 | msgid "Landscape cover grid mode"
50 | msgstr "Решетка с корици: пейзажен режим"
51 |
52 | msgid "List modes"
53 | msgstr "Режим списък"
54 |
55 | msgid "Folder display"
56 | msgstr "Режим папка"
57 |
58 | msgid "Auto-generate cover images from books"
59 | msgstr "Автоматично генериране на корици от книги"
60 |
61 | msgid "Overlay name and details in cover grid"
62 | msgstr "Наслагване на име и подробности в решетката"
63 |
64 | msgid "Book display"
65 | msgstr "Показване на книги"
66 |
67 | msgid "Show series"
68 | msgstr "Показване на серии"
69 |
70 | msgid "Show pages read instead of progress %"
71 | msgstr "Показване на прочетени страници вместо % напредък"
72 |
73 | msgid "Show file info instead of pages or progress %"
74 | msgstr "Показване на информация за файла вместо страници или % напредък"
75 |
76 | msgid "Show progress % instead of progress bars"
77 | msgstr "Показване на процент на напредък вместо индикатори за напредък"
78 |
79 | msgid "Always show maximum length progress bars"
80 | msgstr "Винаги показвай индикатори за напредък с максимална дължина"
81 |
82 | msgid "Use custom book status screen"
83 | msgstr "Използвай персонализиран екран за статуса на книгите"
84 |
85 | msgid "Footer"
86 | msgstr "Долен колонтитул"
87 |
88 | msgid "Replace folder name with device info"
89 | msgstr "Замени името на папката с информация за устройството"
90 |
91 | msgid "Show page controls in left corner"
92 | msgstr "Покажи контролите на страниците в левия ъгъл"
93 |
94 | msgid "Library mode"
95 | msgstr "Режим библиотека"
96 |
97 | msgid "Show opened books first"
98 | msgstr "Покажи първо отворените книги"
99 |
100 | msgid "Cache database"
101 | msgstr "Кеш база данни"
102 |
103 | msgid "Scan home folder for new books automatically"
104 | msgstr "Сканирай автоматично домашната папка за нови книги"
105 |
106 | msgid "Empty cache"
107 | msgstr "Изчисти кеша"
108 |
109 | msgid "Are you sure that you want to delete cover and metadata cache?"
110 | msgstr "Сигурен ли си, че искаш да изтриеш кеша с корици и метаданни?"
111 |
112 | msgid "Cache emptied."
113 | msgstr "Кешът е изчистен."
114 |
115 | # bookinfomanager.lua
116 | msgid ""
117 | "This will extract metadata and cover images from books in the current "
118 | "directory.\n"
119 | "Once extraction has started, you can abort at any moment by tapping on the "
120 | "screen.\n"
121 | "\n"
122 | "This extraction may take time and use some battery power: you may wish to "
123 | "keep your device plugged in."
124 | msgstr ""
125 | "Това ще извлече метаданни и изображения на корици от книгите в текущата "
126 | "директория.\n"
127 | "След като извличането започне, можете да го прекъснете по всяко време, като докоснете "
128 | "екрана.\n"
129 | "\n"
130 | "Извличането може да отнеме време и да изразходва част от батерията: добре е да "
131 | "оставите устройството си включено в зарядното."
132 |
133 | msgid "Found %1 books.\nLooking for new books…"
134 | msgstr "Намерени са %1 книги.\nТърсене на нови книги…"
135 |
136 | msgid "No new books found."
137 | msgstr "Няма намерени нови книги."
138 |
139 | msgid "Do you want to stop?"
140 | msgstr "Искате ли да спрете?"
141 |
142 | msgid "Continue Indexing"
143 | msgstr "Продължаване на индексирането"
144 |
145 | msgid "Stop Indexing"
146 | msgstr "Сприране на индексирането"
147 |
148 | msgid "Tap anywhere to stop"
149 | msgstr "Докоснете където и да е, за да спрете"
--------------------------------------------------------------------------------
/l10n/ca/koreader.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "projecttitle/ca/>\n"
4 | "Language: ca\n"
5 | "MIME-Version: 1.0\n"
6 | "Content-Type: text/plain; charset=UTF-8\n"
7 | "Content-Transfer-Encoding: 8bit\n"
8 | "Plural-Forms: nplurals=2; plural=n != 1;\n"
9 |
10 | # covermenu.lua
11 | msgid "Library"
12 | msgstr "Llibreria"
13 |
14 | # listmenu.lua
15 | msgid "Folders"
16 | msgstr "Carpetes"
17 |
18 | msgid "Book"
19 | msgstr "Llibre"
20 |
21 | # main.lua
22 | msgid "Project: Title"
23 | msgstr "Project: Title"
24 |
25 | msgid "Decrease Items Per Page"
26 | msgstr "Disminuir els elements per pàgina"
27 |
28 | msgid "Increase Items Per Page"
29 | msgstr "Incrementar els elements per pàgina"
30 |
31 | msgid "Cover List"
32 | msgstr "Llista de cobertes"
33 |
34 | msgid "Cover Grid"
35 | msgstr "Graella de cobertes"
36 |
37 | msgid "Details List"
38 | msgstr "Llista de detalls"
39 |
40 | msgid "Filenames List"
41 | msgstr "Llista de noms de fitxers"
42 |
43 | msgid "Project: Title settings"
44 | msgstr "Configuració de Project: Title"
45 |
46 | msgid "Portrait cover grid mode"
47 | msgstr "Mode de graella de cobertes en vertical"
48 |
49 | msgid "Landscape cover grid mode"
50 | msgstr "Mode de graella de cobertes en horitzontal"
51 |
52 | msgid "List modes"
53 | msgstr "Modes de llista"
54 |
55 | msgid "Folder display"
56 | msgstr "Mostrar carpetes"
57 |
58 | msgid "Auto-generate cover images from books"
59 | msgstr "Generar automàticament imatges de cobertes des de llibres"
60 |
61 | msgid "Overlay name and details in cover grid"
62 | msgstr "Superposar el nom i els detalls en la graella de cobertes"
63 |
64 | msgid "Book display"
65 | msgstr "Mostrar llibres"
66 |
67 | msgid "Show series"
68 | msgstr "Mostrar sèries"
69 |
70 | msgid "Show pages read instead of progress %"
71 | msgstr "Mostrar pàgines llegides en comptes de % de progrés"
72 |
73 | msgid "Show file info instead of pages or progress %"
74 | msgstr "Mostrar informació del fitxer en comptes de pàgines o % deprogrés"
75 |
76 | msgid "Show progress % instead of progress bars"
77 | msgstr "Mostrar % progrés en comptes de barres de progrés"
78 |
79 | msgid "Always show maximum length progress bars"
80 | msgstr "Mostrar sempre barres de progrés de longitud màxima"
81 |
82 | msgid "Use custom book status screen"
83 | msgstr "Utilitzar pantalla personalitzada d'estat de llibre"
84 |
85 | msgid "Footer"
86 | msgstr "Peu de pàgina"
87 |
88 | msgid "Replace folder name with device info"
89 | msgstr "Reemplaçar el nom de la carpeta amb la informació del dispositiu"
90 |
91 | msgid "Show page controls in left corner"
92 | msgstr "Mostrar controls de pàgina a l'angle esquerre"
93 |
94 | msgid "Library mode"
95 | msgstr "Mode de biblioteca"
96 |
97 | msgid "Show opened books first"
98 | msgstr "Mostrar primers els llibres oberts"
99 |
100 | msgid "Cache database"
101 | msgstr "Banc de dades de la memòria cau"
102 |
103 | msgid "Scan home folder for new books automatically"
104 | msgstr "Escanejar carpeta d'inici per a nous llibres automàticament"
105 |
106 | msgid "Empty cache"
107 | msgstr "Buidar memòria cau"
108 |
109 | msgid "Are you sure that you want to delete cover and metadata cache?"
110 | msgstr "Estàs segur que vols esborrar la memòria cau de les cobertes i metadades?"
111 |
112 | msgid "Cache emptied."
113 | msgstr "Memòria cau buida."
114 |
115 | # bookinfomanager.lua
116 | msgid ""
117 | "This will extract metadata and cover images from books in the current "
118 | "directory.\n"
119 | "Once extraction has started, you can abort at any moment by tapping on the "
120 | "screen.\n"
121 | "\n"
122 | "This extraction may take time and use some battery power: you may wish to "
123 | "keep your device plugged in."
124 | msgstr ""
125 | "Això extraurà les metadades i les imatges de portada dels llibres del directori "
126 | "actual.\n"
127 | "Un cop iniciada l'extracció, podeu interrompre-la en qualsevol moment tocant la "
128 | "pantalla.\n"
129 | "\n"
130 | "Aquesta extracció pot trigar temps i consumir part de la bateria: és recomanable "
131 | "mantenir el dispositiu connectat."
132 |
133 | msgid "Found %1 books.\nLooking for new books…"
134 | msgstr "S'han trobat %1 llibres.\nBuscant nous llibres…"
135 |
136 | msgid "No new books found."
137 | msgstr "No s'han trobat nous llibres."
138 |
139 | msgid "Do you want to stop?"
140 | msgstr "Vols aturar?"
141 |
142 | msgid "Continue Indexing"
143 | msgstr "Continuar l'indexació"
144 |
145 | msgid "Stop Indexing"
146 | msgstr "Aturar l'indexació"
147 |
148 | msgid "Tap anywhere to stop"
149 | msgstr "Toca qualsevol part per aturar"
150 |
--------------------------------------------------------------------------------
/l10n/es/koreader.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "projecttitle/es/>\n"
4 | "Language: es\n"
5 | "MIME-Version: 1.0\n"
6 | "Content-Type: text/plain; charset=UTF-8\n"
7 | "Content-Transfer-Encoding: 8bit\n"
8 | "Plural-Forms: nplurals=2; plural=n != 1;\n"
9 |
10 | # covermenu.lua
11 | msgid "Library"
12 | msgstr "Biblioteca"
13 |
14 | # listmenu.lua
15 | msgid "Folders"
16 | msgstr "Carpetas"
17 |
18 | msgid "Book"
19 | msgstr "Libro"
20 |
21 | # main.lua
22 | msgid "Project: Title"
23 | msgstr "Project: Title"
24 |
25 | msgid "Decrease Items Per Page"
26 | msgstr "Disminuir elementos por página"
27 |
28 | msgid "Increase Items Per Page"
29 | msgstr "Incrementar elementos por página"
30 |
31 | msgid "Cover List"
32 | msgstr "Lista de portadas"
33 |
34 | msgid "Cover Grid"
35 | msgstr "Cuadrícula de portadas"
36 |
37 | msgid "Details List"
38 | msgstr "Lista de detalles"
39 |
40 | msgid "Filenames List"
41 | msgstr "Lista de nombres de archivo"
42 |
43 | msgid "Project: Title settings"
44 | msgstr "Ajustes de ProjectTitle"
45 |
46 | msgid "Portrait cover grid mode"
47 | msgstr "Modo de cuadrícula de portadas en vertical"
48 |
49 | msgid "Landscape cover grid mode"
50 | msgstr "Modo de cuadrícula de portadas en horizontal"
51 |
52 | msgid "List modes"
53 | msgstr "Modos de lista"
54 |
55 | msgid "Folder display"
56 | msgstr "Vista de carpetas"
57 |
58 | msgid "Auto-generate cover images from books"
59 | msgstr "Auto-generar las portadas desde los libros"
60 |
61 | msgid "Overlay name and details in cover grid"
62 | msgstr "Superponer nombre y detalles en la vista de cuadrícula de portadas"
63 |
64 | msgid "Book display"
65 | msgstr "Vista de portadas"
66 |
67 | msgid "Show series"
68 | msgstr "Mostrar colecciones"
69 |
70 | msgid "Show pages read instead of progress %"
71 | msgstr "Mostrar páginas leídas en vez del progreso %"
72 |
73 | msgid "Show progress % instead of progress bars"
74 | msgstr "Mostrar porcentaje % en vez de barras de progreso"
75 |
76 | msgid "Show file info instead of pages or progress %"
77 | msgstr "Mostrar información del archivo en vez de las páginas o el progreso %"
78 |
79 | msgid "Always show maximum length progress bars"
80 | msgstr "Mostrar siempre la máxima longitud de las barras de progreso"
81 |
82 | msgid "Use custom book status screen"
83 | msgstr "Usar pantalla personalizada de estado del libro"
84 |
85 | msgid "Footer"
86 | msgstr "Pie de página"
87 |
88 | msgid "Replace folder name with device info"
89 | msgstr "Reemplazar el nombre de la carpeta con información sobre el dispositivo"
90 |
91 | msgid "Show page controls in left corner"
92 | msgstr "Mostrar controles de página en la esquina izquierda"
93 |
94 | msgid "Library mode"
95 | msgstr "Modo librería"
96 |
97 | msgid "Show opened books first"
98 | msgstr "Mostrar libros abiertos primero"
99 |
100 | msgid "Cache database"
101 | msgstr "Base de datos en caché"
102 |
103 | msgid "Scan home folder for new books automatically"
104 | msgstr "Escanear carpeta personal en busca de nuevos libros automáticamente"
105 |
106 | msgid "Empty cache"
107 | msgstr "Vacíar caché"
108 |
109 | msgid "Are you sure that you want to delete cover and metadata cache?"
110 | msgstr "¿Estás seguro de que deseas eliminar la portada y los metadatos en caché?"
111 |
112 | msgid "Cache emptied."
113 | msgstr "Caché vaciada"
114 |
115 | # bookinfomanager.lua
116 | msgid ""
117 | "This will extract metadata and cover images from books in the current "
118 | "directory.\n"
119 | "Once extraction has started, you can abort at any moment by tapping on the "
120 | "screen.\n"
121 | "\n"
122 | "This extraction may take time and use some battery power: you may wish to "
123 | "keep your device plugged in."
124 | msgstr ""
125 | "Esto extraerá los metadatos y las portadas de los libros en el directorio "
126 | "actual.\n"
127 | "Una vez iniciada la extracción, puedes cancelarla en cualquier momento "
128 | "tocando la pantalla.\n"
129 | "\n"
130 | "Esta extracción puede tardar y consumir algo de batería; quizás quieras "
131 | "mantener tu dispositivo conectado a la corriente."
132 |
133 | msgid "Found %1 books.\nLooking for new books…"
134 | msgstr "Encontrados %1 libros.\nBuscando libros…"
135 |
136 | msgid "No new books found."
137 | msgstr "No se han encontrado nuevos libros."
138 |
139 | msgid "Do you want to stop?"
140 | msgstr "¿Estás seguro de que quieres cancelarlo?"
141 |
142 | msgid "Continue Indexing"
143 | msgstr "Continuar indexando"
144 |
145 | msgid "Stop Indexing"
146 | msgstr "Detener indexación"
147 |
148 | msgid "Tap anywhere to stop"
149 | msgstr "Toca en cualquier lugar para detener"
150 |
--------------------------------------------------------------------------------
/l10n/fr/koreader.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "projecttitle/fr/>\n"
4 | "Language: fr\n"
5 | "MIME-Version: 1.0\n"
6 | "Content-Type: text/plain; charset=UTF-8\n"
7 | "Content-Transfer-Encoding: 8bit\n"
8 | "Plural-Forms: nplurals=2; plural=n > 1;\n"
9 |
10 | # covermenu.lua
11 | msgid "Library"
12 | msgstr "Bibliothèque"
13 |
14 | # listmenu.lua
15 | msgid "Folders"
16 | msgstr "Dossiers"
17 |
18 | msgid "Book"
19 | msgstr "Livre"
20 |
21 | # main.lua
22 | msgid "Project: Title"
23 | msgstr "Project: Title"
24 |
25 | msgid "Decrease Items Per Page"
26 | msgstr "Augmenter la taille des éléments"
27 |
28 | msgid "Increase Items Per Page"
29 | msgstr "Diminuer la taille des éléments"
30 |
31 | msgid "Cover List"
32 | msgstr "Liste détaillée avec couvertures"
33 |
34 | msgid "Cover Grid"
35 | msgstr "Mosaïque"
36 |
37 | msgid "Details List"
38 | msgstr "Liste détaillée sans couvertures"
39 |
40 | msgid "Filenames List"
41 | msgstr "Liste triée par noms de fichier"
42 |
43 | msgid "Project: Title settings"
44 | msgstr "Paramètres Project: Title"
45 |
46 | msgid "Portrait cover grid mode"
47 | msgstr "Mode mosaïque - Portrait"
48 |
49 | msgid "Landscape cover grid mode"
50 | msgstr "Mode mosaïque - Paysage"
51 |
52 | msgid "List modes"
53 | msgstr "Modes liste"
54 |
55 | msgid "Folder display"
56 | msgstr "Paramètres d'affichage des dossiers"
57 |
58 | msgid "Auto-generate cover images from books"
59 | msgstr "Génération auto des images de couverture à partir des livres"
60 |
61 | msgid "Overlay name and details in cover grid"
62 | msgstr "Afficher les noms et détails des dossiers en mode mosaïque"
63 |
64 | msgid "Book display"
65 | msgstr "Paramètres d'affichage des livres"
66 |
67 | msgid "Show series"
68 | msgstr "Montrer les séries"
69 |
70 | msgid "Show pages read instead of progress %"
71 | msgstr "Montrer les pages lues au lieu du % de progression"
72 |
73 | msgid "Show progress % instead of progress bars"
74 | msgstr "Montrer le % de progression au lieu de la barre de prog."
75 |
76 | msgid "Show file info instead of pages or progress %"
77 | msgstr "Montrer les infos du fichier au lieu des pages ou % de prog."
78 |
79 | msgid "Always show maximum length progress bars"
80 | msgstr "Toujours montrer la longueur maxi de la barre de prog."
81 |
82 | msgid "Use custom book status screen"
83 | msgstr "Utiliser un affichage de status du livre personnalisé"
84 |
85 | msgid "Footer"
86 | msgstr "Barre d'état inférieure"
87 |
88 | msgid "Replace folder name with device info"
89 | msgstr "Remplacer le nom du dossier par les infos de l'appareil"
90 |
91 | msgid "Show page controls in left corner"
92 | msgstr "Positionner les contrôles de changement de page à gauche"
93 |
94 | msgid "Library mode"
95 | msgstr "Mode Bibliothèque"
96 |
97 | msgid "Show opened books first"
98 | msgstr "Montrer les livres déjà ouverts en premier"
99 |
100 | msgid "Cache database"
101 | msgstr "Cache de la base de données"
102 |
103 | msgid "Scan home folder for new books automatically"
104 | msgstr "Scan auto. du dossier Accueil pour de nouveaux livres "
105 |
106 | msgid "Empty cache"
107 | msgstr "Vider le cache"
108 |
109 | msgid "Are you sure that you want to delete cover and metadata cache?"
110 | msgstr "Confirmer la suppression du cache (images et métadonnées) ?"
111 |
112 | msgid "Cache emptied."
113 | msgstr "Cache vidé"
114 |
115 | # bookinfomanager.lua
116 | msgid ""
117 | "This will extract metadata and cover images from books in the current "
118 | "directory.\n"
119 | "Once extraction has started, you can abort at any moment by tapping on the "
120 | "screen.\n"
121 | "\n"
122 | "This extraction may take time and use some battery power: you may wish to "
123 | "keep your device plugged in."
124 | msgstr "Ceci va extraire les métadonnées et les images de couverture "
125 | "à partir des livres situés dans le dossier courant.\n"
126 | "Une fois l'extraction commencée, vous pouvez annuler à n'importe quel"
127 | "moment en touchant l'écran.\n"
128 | "\n"
129 | "Cette extraction peut prendre du temps et utiliser de la batterie. "
130 | "Il est donc préférable de laisser l'appareil en charge."
131 |
132 | msgid "Found %1 books.\nLooking for new books…"
133 | msgstr "%1 livre(s) trouvé(s).\nRecherche de nouveaux livres"
134 |
135 | msgid "No new books found."
136 | msgstr "Aucun nouveau livre trouvé"
137 |
138 | msgid "Do you want to stop?"
139 | msgstr "Voulez vous arrêter ?"
140 |
141 | msgid "Continue Indexing"
142 | msgstr "Continuer l'indexation"
143 |
144 | msgid "Stop Indexing"
145 | msgstr "Arrêter l'indexation"
146 |
147 | msgid "Tap anywhere to stop"
148 | msgstr "Appuyer n'importe où pour arrêter"
149 |
--------------------------------------------------------------------------------
/l10n/de/koreader.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "projecttitle/de/>\n"
4 | "Language: de\n"
5 | "MIME-Version: 1.0\n"
6 | "Content-Type: text/plain; charset=UTF-8\n"
7 | "Content-Transfer-Encoding: 8bit\n"
8 | "Plural-Forms: nplurals=2; plural=n != 1;\n"
9 |
10 | # covermenu.lua
11 | msgid "Library"
12 | msgstr "Bibliothek"
13 |
14 | # listmenu.lua
15 | msgid "Folders"
16 | msgstr "Ordner"
17 |
18 | msgid "Book"
19 | msgstr "Buch"
20 |
21 | # main.lua
22 | msgid "Project: Title"
23 | msgstr "Project: Title"
24 |
25 | msgid "Decrease Items Per Page"
26 | msgstr "Elemente pro Seite reduzieren"
27 |
28 | msgid "Increase Items Per Page"
29 | msgstr "Elemente pro Seite erhöhen"
30 |
31 | msgid "Cover List"
32 | msgstr "Cover-Liste"
33 |
34 | msgid "Cover Grid"
35 | msgstr "Cover-Rasteransicht"
36 |
37 | msgid "Details List"
38 | msgstr "Detail-Liste"
39 |
40 | msgid "Filenames List"
41 | msgstr "Dateinamen-Liste"
42 |
43 | msgid "Project: Title settings"
44 | msgstr "Project: Title Einstellungen"
45 |
46 | msgid "Portrait cover grid mode"
47 | msgstr "Hochformat-Rasteransicht"
48 |
49 | msgid "Landscape cover grid mode"
50 | msgstr "Querformat-Rasteransicht"
51 |
52 | msgid "List modes"
53 | msgstr "Listenmodi"
54 |
55 | msgid "Folder display"
56 | msgstr "Ordneransicht"
57 |
58 | msgid "Auto-generate cover images from books"
59 | msgstr "Coverbilder automatisch aus Büchern generieren"
60 |
61 | msgid "Overlay name and details in cover grid"
62 | msgstr "Titel und Details über Rasterkacheln anzeigen"
63 |
64 | msgid "Book display"
65 | msgstr "Bücheransicht"
66 |
67 | msgid "Show series"
68 | msgstr "Serien anzeigen"
69 | # a better translation would be "Bücherreihen anzeigen" but in calibre it's translated with "Serien anzeigen"
70 |
71 | msgid "Show calibre tags/keywords"
72 | msgstr "Calibre Tags/Schlüsselwörter anzeigen"
73 |
74 | msgid "Show pages read instead of progress %"
75 | msgstr "Gelesene Seiten statt Prozent anzeigen"
76 |
77 | msgid "Show file info instead of pages or progress %"
78 | msgstr "Dateiinformationen statt Seiten oder Prozent anzeigen"
79 |
80 | msgid "Show progress % instead of progress bars"
81 | msgstr "Prozent statt Fortschrittsbalken anzeigen"
82 |
83 | msgid "Always show maximum length progress bars"
84 | msgstr "Fortschrittsbalken stets in voller Länge anzeigen"
85 |
86 | msgid "Use custom book status screen"
87 | msgstr "Benutzerdefinierten Bücherstatus benutzen"
88 |
89 | msgid "Show last item indicator on touchscreen devices"
90 | msgstr "Zuletzt ausgewähltes Element auf Touchscreen Geräten markieren"
91 |
92 | msgid "Footer"
93 | msgstr "Fußzeile"
94 |
95 | msgid "Replace folder name with device info"
96 | msgstr "Ordnernamen durch Geräteinformationen ersetzen"
97 |
98 | msgid "Show page controls in left corner"
99 | msgstr "Seiteneinstellungen in der linken Ecke anzeigen"
100 |
101 | msgid "Library mode"
102 | msgstr "Bibliotheksmodus"
103 |
104 | msgid "Show opened books first"
105 | msgstr "Geöffnete Bücher zuerst anzeigen"
106 |
107 | msgid "Cache database"
108 | msgstr "Datenbank in Cache laden"
109 |
110 | msgid "Scan home folder for new books automatically"
111 | msgstr "HOME-Verzeichnis automatisch nach neuen Büchern durchsuchen"
112 |
113 | msgid "Empty cache"
114 | msgstr "Cache leeren"
115 |
116 | msgid "Are you sure that you want to delete cover and metadata cache?"
117 | msgstr "Möchten Sie den Cover- und Metadaten-Cache wirklich löschen?"
118 |
119 | msgid "Cache emptied."
120 | msgstr "Cache geleert."
121 |
122 | # bookinfomanager.lua
123 | msgid ""
124 | "This will extract metadata and cover images from books in the current "
125 | "directory.\n"
126 | "Once extraction has started, you can abort at any moment by tapping on the "
127 | "screen.\n"
128 | "\n"
129 | "This extraction may take time and use some battery power: you may wish to "
130 | "keep your device plugged in."
131 | msgstr ""
132 | "Dies extrahiert Metadaten und Coverbilder aus den Büchern im aktuellen Verzeichnis.\n"
133 | "Sobald die Extraktion gestartet wurde, können Sie diese jederzeit durch Antippen des Bildschirms abbrechen.\n"
134 | "Dieser Prozess kann einige Zeit dauern und den Akku beanspruchen - es wird empfohlen, das Gerät an den Strom anzuschließen."
135 |
136 | msgid "Found %1 books.\nLooking for new books…"
137 | msgstr "%1 Bücher gefunden.\nSuche nach neuen Büchern..."
138 |
139 | msgid "No new books found."
140 | msgstr "Keine neuen Bücher gefunden."
141 |
142 | msgid "Do you want to stop?"
143 | msgstr "Möchten Sie abbrechen?"
144 |
145 | msgid "Continue Indexing"
146 | msgstr "Indizieren fortführen"
147 |
148 | msgid "Stop Indexing"
149 | msgstr "Indizieren abbrechen"
150 |
151 | msgid "Tap anywhere to stop"
152 | msgstr "Tippen, um abzubrechen"
153 |
--------------------------------------------------------------------------------
/l10n/ro/koreader.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "projecttitle/ro/>\n"
4 | "Language: ro\n"
5 | "MIME-Version: 1.0\n"
6 | "Content-Type: text/plain; charset=UTF-8\n"
7 | "Content-Transfer-Encoding: 8bit\n"
8 | "Plural-Forms: nplurals=3; plural=n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < "
9 | "20)) ? 1 : 2;\n"
10 |
11 | # covermenu.lua
12 | msgid "Library"
13 | msgstr "Bibliotecă"
14 |
15 | # listmenu.lua
16 | msgid "Folders"
17 | msgstr "Dosare"
18 |
19 | msgid "Book"
20 | msgstr "Carte"
21 |
22 | # main.lua
23 | msgid "Project: Title"
24 | msgstr "Project: Title"
25 |
26 | msgid "Decrease Items Per Page"
27 | msgstr "Micșorează elementele pe pagină"
28 |
29 | msgid "Increase Items Per Page"
30 | msgstr "Mărește elementele pe pagină"
31 |
32 | msgid "Cover List"
33 | msgstr "Coperte afișate ca Listă"
34 |
35 | msgid "Cover Grid"
36 | msgstr "Coperte afișate ca Grilă"
37 |
38 | msgid "Details List"
39 | msgstr "Coperte afișate ca Listă cu detalii"
40 |
41 | msgid "Filenames List"
42 | msgstr "Coperte afișate ca Listă cu nume fișiere"
43 |
44 | msgid "Project: Title settings"
45 | msgstr "Setări Project: Title"
46 |
47 | msgid "Portrait cover grid mode"
48 | msgstr "Mod Portret, grilă de coperte"
49 |
50 | msgid "Landscape cover grid mode"
51 | msgstr "Mod Peisaj, grilă coperte"
52 |
53 | msgid "List modes"
54 | msgstr "Mod Listă"
55 |
56 | msgid "Folder display"
57 | msgstr "Afișare dosare"
58 |
59 | msgid "Auto-generate cover images from books"
60 | msgstr "Generează automat imagini de copertă din cărți"
61 |
62 | msgid "Show auto-generated cover images as a stack"
63 | msgstr "Afișează ca stivă coperțile generate automat"
64 |
65 | msgid "Overlay name and details in cover grid"
66 | msgstr "Suprapune nume și detalii în grila de coperte"
67 |
68 | msgid "Book display"
69 | msgstr "Afișare cărți"
70 |
71 | msgid "Show series"
72 | msgstr "Afișează seriile"
73 |
74 | msgid "Show pages read instead of progress %"
75 | msgstr "Afișează pagini citite în loc de progres în %"
76 |
77 | msgid "Show file info instead of pages or progress %"
78 | msgstr "Afișează info fișier în loc de pagini sau progres în %"
79 |
80 | msgid "Show progress % instead of progress bars"
81 | msgstr "Afișează progresul în % în loc de bare de progres"
82 |
83 | msgid "Always show maximum length progress bars"
84 | msgstr "Afișează mereu bare de progres la lungime maximă"
85 |
86 | msgid "Show calibre tags/keywords"
87 | msgstr "Afișează etichete/cuvinte-cheie din Calibre"
88 |
89 | msgid "Use custom book status screen"
90 | msgstr "Folosește ecran personalizat pentru starea cărții"
91 |
92 | msgid "Footer"
93 | msgstr "Subsolul paginii"
94 |
95 | msgid "Replace folder name with device info"
96 | msgstr "Înlocuiește numele dosarului cu info a dispozitivului"
97 |
98 | msgid "Show page controls in left corner"
99 | msgstr "Afișează controalele paginii în colțul stâng"
100 |
101 | msgid "Library mode"
102 | msgstr "Mod bibliotecă"
103 |
104 | msgid "Show opened books first"
105 | msgstr "Afișează mai întâi cărțile deschise"
106 |
107 | msgid "Cache database"
108 | msgstr "Bază de date cache"
109 |
110 | msgid "Scan home folder for new books automatically"
111 | msgstr "Scanează dosarul principal automat pentru cărți noi"
112 |
113 | msgid "Empty cache"
114 | msgstr "Golește cache"
115 |
116 | msgid "Are you sure that you want to delete cover and metadata cache?"
117 | msgstr "Sigur doriți să ștergeți cache-ul de coperte și metadate?"
118 |
119 | msgid "Cache emptied."
120 | msgstr "Cache golit."
121 |
122 | msgid "Show last item indicator on touchscreen devices"
123 | msgstr "Arată Indicator ultim-element pe dispozitive touchscreen"
124 |
125 | # bookinfomanager.lua
126 | msgid ""
127 | "This will extract metadata and cover images from books in the current "
128 | "directory.\n"
129 | "Once extraction has started, you can abort at any moment by tapping on the "
130 | "screen.\n"
131 | "\n"
132 | "This extraction may take time and use some battery power: you may wish to "
133 | "keep your device plugged in."
134 | msgstr "Aceasta va extrage metadate și imagini de copertă din cărțile "
135 | "din dosarul curent.\n"
136 | "Odată ce extracția a început, puteți opri oricând apăsând pe ecran.\n"
137 | "\n"
138 | "Această extracție poate dura și consuma baterie: "
139 | "recomandăm să mențineți dispozitivul conectat la priză."
140 |
141 | msgid "Found %1 books.\nLooking for new books…"
142 | msgstr "S-au găsit %1 cărți.\nSe caută cărți noi…"
143 |
144 | msgid "No new books found."
145 | msgstr "Nu s-au găsit cărți noi."
146 |
147 | msgid "Do you want to stop?"
148 | msgstr "Doriți să opriți?"
149 |
150 | msgid "Continue Indexing"
151 | msgstr "Continuă indexarea"
152 |
153 | msgid "Stop Indexing"
154 | msgstr "Oprește indexarea"
155 |
156 | msgid "Tap anywhere to stop"
157 | msgstr "Apăsați oriunde pentru a opri"
--------------------------------------------------------------------------------
/l10n/ro_MD/koreader.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "projecttitle/ro_MD/>\n"
4 | "Language: ro_MD\n"
5 | "MIME-Version: 1.0\n"
6 | "Content-Type: text/plain; charset=UTF-8\n"
7 | "Content-Transfer-Encoding: 8bit\n"
8 | "Plural-Forms: nplurals=3; plural=(n == 1) ? 0 : ((n == 0 || n != 1 && n % "
9 | "100 >= 1 && n % 100 <= 19) ? 1 : 2);\n"
10 |
11 | # covermenu.lua
12 | msgid "Library"
13 | msgstr "Bibliotecă"
14 |
15 | # listmenu.lua
16 | msgid "Folders"
17 | msgstr "Dosare"
18 |
19 | msgid "Book"
20 | msgstr "Carte"
21 |
22 | # main.lua
23 | msgid "Project: Title"
24 | msgstr "Project: Title"
25 |
26 | msgid "Decrease Items Per Page"
27 | msgstr "Micșorează elementele pe pagină"
28 |
29 | msgid "Increase Items Per Page"
30 | msgstr "Mărește elementele pe pagină"
31 |
32 | msgid "Cover List"
33 | msgstr "Coperte afișate ca Listă"
34 |
35 | msgid "Cover Grid"
36 | msgstr "Coperte afișate ca Grilă"
37 |
38 | msgid "Details List"
39 | msgstr "Coperte afișate ca Listă cu detalii"
40 |
41 | msgid "Filenames List"
42 | msgstr "Coperte afișate ca Listă cu nume fișiere"
43 |
44 | msgid "Project: Title settings"
45 | msgstr "Setări Project: Title"
46 |
47 | msgid "Portrait cover grid mode"
48 | msgstr "Mod Portret, grilă de coperte"
49 |
50 | msgid "Landscape cover grid mode"
51 | msgstr "Mod Peisaj, grilă coperte"
52 |
53 | msgid "List modes"
54 | msgstr "Mod Listă"
55 |
56 | msgid "Folder display"
57 | msgstr "Afișare dosare"
58 |
59 | msgid "Auto-generate cover images from books"
60 | msgstr "Generează automat imagini de copertă din cărți"
61 |
62 | msgid "Show auto-generated cover images as a stack"
63 | msgstr "Afișează ca stivă coperțile generate automat"
64 |
65 | msgid "Overlay name and details in cover grid"
66 | msgstr "Suprapune nume și detalii în grila de coperte"
67 |
68 | msgid "Book display"
69 | msgstr "Afișare cărți"
70 |
71 | msgid "Show series"
72 | msgstr "Afișează seriile"
73 |
74 | msgid "Show pages read instead of progress %"
75 | msgstr "Afișează pagini citite în loc de progres în %"
76 |
77 | msgid "Show file info instead of pages or progress %"
78 | msgstr "Afișează info fișier în loc de pagini sau progres în %"
79 |
80 | msgid "Show progress % instead of progress bars"
81 | msgstr "Afișează progresul în % în loc de bare de progres"
82 |
83 | msgid "Always show maximum length progress bars"
84 | msgstr "Afișează mereu bare de progres la lungime maximă"
85 |
86 | msgid "Show calibre tags/keywords"
87 | msgstr "Afișează etichete/cuvinte-cheie din Calibre"
88 |
89 | msgid "Use custom book status screen"
90 | msgstr "Folosește ecran personalizat pentru starea cărții"
91 |
92 | msgid "Footer"
93 | msgstr "Subsolul paginii"
94 |
95 | msgid "Replace folder name with device info"
96 | msgstr "Înlocuiește numele dosarului cu info a dispozitivului"
97 |
98 | msgid "Show page controls in left corner"
99 | msgstr "Afișează controalele paginii în colțul stâng"
100 |
101 | msgid "Library mode"
102 | msgstr "Mod bibliotecă"
103 |
104 | msgid "Show opened books first"
105 | msgstr "Afișează mai întâi cărțile deschise"
106 |
107 | msgid "Cache database"
108 | msgstr "Bază de date cache"
109 |
110 | msgid "Scan home folder for new books automatically"
111 | msgstr "Scanează dosarul principal automat pentru cărți noi"
112 |
113 | msgid "Empty cache"
114 | msgstr "Golește cache"
115 |
116 | msgid "Are you sure that you want to delete cover and metadata cache?"
117 | msgstr "Sigur doriți să ștergeți cache-ul de coperte și metadate?"
118 |
119 | msgid "Cache emptied."
120 | msgstr "Cache golit."
121 |
122 | msgid "Show last item indicator on touchscreen devices"
123 | msgstr "Arată Indicator ultim-element pe dispozitive touchscreen"
124 |
125 | # bookinfomanager.lua
126 | msgid ""
127 | "This will extract metadata and cover images from books in the current "
128 | "directory.\n"
129 | "Once extraction has started, you can abort at any moment by tapping on the "
130 | "screen.\n"
131 | "\n"
132 | "This extraction may take time and use some battery power: you may wish to "
133 | "keep your device plugged in."
134 | msgstr "Aceasta va extrage metadate și imagini de copertă din cărțile "
135 | "din dosarul curent.\n"
136 | "Odată ce extracția a început, puteți opri oricând apăsând pe ecran.\n"
137 | "\n"
138 | "Această extracție poate dura și consuma baterie: "
139 | "recomandăm să mențineți dispozitivul conectat la priză."
140 |
141 | msgid "Found %1 books.\nLooking for new books…"
142 | msgstr "S-au găsit %1 cărți.\nSe caută cărți noi…"
143 |
144 | msgid "No new books found."
145 | msgstr "Nu s-au găsit cărți noi."
146 |
147 | msgid "Do you want to stop?"
148 | msgstr "Doriți să opriți?"
149 |
150 | msgid "Continue Indexing"
151 | msgstr "Continuă indexarea"
152 |
153 | msgid "Stop Indexing"
154 | msgstr "Oprește indexarea"
155 |
156 | msgid "Tap anywhere to stop"
157 | msgstr "Apăsați oriunde pentru a opri"
--------------------------------------------------------------------------------
/resources/folder.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/l10n/gettext.lua:
--------------------------------------------------------------------------------
1 | local util = require("util")
2 | local GetText = require("gettext")
3 | local logger = require("logger")
4 | local ptdbg = require("ptdbg")
5 |
6 | local full_source_path = debug.getinfo(1, "S").source
7 | if full_source_path:sub(1, 1) == "@" then
8 | full_source_path = full_source_path:sub(2)
9 | end
10 | local lib_path, _ = util.splitFilePathName(full_source_path)
11 | local plugin_path = lib_path:gsub("/+", "/"):gsub("[\\/]l10n[\\/]", "")
12 |
13 | local NewGetText = {
14 | dirname = string.format("%s/l10n", plugin_path)
15 | }
16 |
17 | local changeLang = function(new_lang)
18 | local original_l10n_dirname = GetText.dirname
19 | local original_context = GetText.context
20 | local original_translation = GetText.translation
21 | local original_wrapUntranslated_func = GetText.wrapUntranslated
22 | local original_current_lang = GetText.current_lang
23 |
24 | GetText.dirname = NewGetText.dirname
25 |
26 | local ok, err = pcall(GetText.changeLang, new_lang)
27 | if ok then
28 | if (GetText.translation and next(GetText.translation) ~= nil) or (GetText.context and next(GetText.context) ~= nil) then
29 | NewGetText = util.tableDeepCopy(GetText)
30 | -- reduce memory usage and prioritize using KOReader-translation
31 | if NewGetText.translation and original_translation then
32 | for k, v in pairs(NewGetText.translation) do
33 | if original_translation[k] then
34 | NewGetText.translation[k] = nil
35 | end
36 | end
37 | end
38 | end
39 | else
40 | logger.info(ptdbg.logprefix, string.format("Failed to parse the [PO|MO] file for lang %s: %s", tostring(new_lang), tostring(err)))
41 | end
42 |
43 | GetText.context = original_context
44 | GetText.translation = original_translation
45 | GetText.dirname = original_l10n_dirname
46 | GetText.wrapUntranslated = original_wrapUntranslated_func
47 | GetText.current_lang = original_current_lang
48 |
49 | original_translation = nil
50 | original_context = nil
51 | end
52 |
53 | local function createGetTextProxy(new_gettext, gettext)
54 | if not (new_gettext.wrapUntranslated and new_gettext.translation and new_gettext.current_lang) then
55 | logger.dbg(ptdbg.logprefix, string.format("NewGetText was not loaded correctly for lang %s", tostring(gettext.current_lang)))
56 | return gettext
57 | end
58 |
59 | local function getCompareStr(key, args)
60 | if key == "gettext" then
61 | return args[1]
62 | elseif key == "pgettext" then
63 | return args[2]
64 | elseif key == "ngettext" then
65 | local n = args[3]
66 | return (new_gettext.getPlural and new_gettext.getPlural(n) == 0) and args[1] or args[2]
67 | elseif key == "npgettext" then
68 | local n = args[4]
69 | return (new_gettext.getPlural and new_gettext.getPlural(n) == 0) and args[2] or args[3]
70 | end
71 | return nil
72 | end
73 |
74 | local mt = {
75 | __index = function(_, key)
76 | local value = new_gettext[key]
77 | if type(value) ~= "function" then
78 | return value
79 | end
80 |
81 | local fallback_func = gettext[key]
82 | return function(...)
83 | local args = {...}
84 | local msgstr = value(...)
85 | local compare_str = getCompareStr(key, args)
86 |
87 | if msgstr and compare_str and msgstr == compare_str then
88 | if type(fallback_func) == "function" then
89 | msgstr = fallback_func(...)
90 | end
91 | end
92 | return msgstr
93 | end
94 | end,
95 | __call = function(_, msgid)
96 | local msgstr = new_gettext(msgid)
97 | if msgstr and msgstr == msgid then
98 | msgstr = gettext(msgid)
99 | end
100 | return msgstr
101 | end
102 | }
103 |
104 | return setmetatable({
105 | -- dump the parsed data of the po file. For debugging only.
106 | -- If NewGetText is not loaded, this will be nil value when called
107 | debug_dump = function()
108 | local new_lang = new_gettext.current_lang
109 | local dump_path = string.format("%s/%s/%s", new_gettext.dirname, new_lang, "debug_logs.lua")
110 | require("luasettings"):open(dump_path):saveSetting("po", new_gettext):flush()
111 | logger.info(ptdbg.logprefix, string.format("debug_dump: %s.po to %s", new_lang, dump_path))
112 | end
113 | }, mt)
114 | end
115 |
116 | local current_lang = GetText.current_lang or G_reader_settings:readSetting("language")
117 | if current_lang then
118 | changeLang(current_lang)
119 | end
120 |
121 | return createGetTextProxy(NewGetText, GetText)
122 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | 
2 | A collage of screenshots showing KOReader with Project: Title installed demonstrating a variety of possible display settings.
3 | The books used are from the Standard Ebooks collection and the text visible is part of their cover design, not overlaid by this plugin.
4 |
5 | ## A new view for KOReader
6 | Project: Title is a plugin made by two people who love KOreader but wanted to expand upon the Cover Browser plugin. We desired an interface that would blend in with the very best that commercial eReaders have. Something that would make the time between books, looking for that next read, as pleasant as possible.
7 |
8 | ## Features
9 | * **A Speedy Title Bar**: Thinner with more functionality — adding Favorites, History, Open Last Book, and Up Folder buttons to help you get exactly where you need as fast as possible.
10 |
11 | * **A Fresh Book Listing**: New fonts, new text, new icons for books without covers and unsupported files. An optional variable-length progress bar that shows the relative size of each book. Books are presented in a tasteful, distinct manner that adjusts to the screen size and how many items are on screen.
12 |
13 | * **A Fitting Folder**: Folders no longer show slashes in their names, and instead are shown your choice of cover image, thumbnails, or a generic icon. The arrow to move up a folder has been moved up into the title bar, to give more space for your books.
14 |
15 | * **An Informative Footer**: Shows the page controls and your choice of either the current folder or a device status bar showing time, wifi, battery, and frontlight states. The location of the page controls can be set to either the lower right or the lower left.
16 |
17 | * **A Matching Book Status Page**: The default book status page (available as a screensaver) have been updated to show the book's description and your current progress, as well as having its design updated to match the new book listings. A setting is available to restore the original one, if desired.
18 |
19 | * **Endless Customization through User Patches**: We made this plugin to be what we want it to be so we can't implement everyone's feature requests or suggestions. However, we have tried to make it very easy to modify through what KOReader calls "user patches". There are already many available and if you want to learn a little Lua you can even make your own.
20 |
21 | * **A Few Nice Extras**: Autoscan for new books on USB eject, make list and grid items larger or smaller with gestures (pinch/spread), a trophy icon to mark finished books, and displaying the tags/keywords for books in list mode.
22 |
23 | ## Who this (hopefully) is for:
24 | * Kobo device owners. We designed this on two Kobos (Aura One, Sage) so we feel pretty confident about the experience there.
25 | * Jailbroken Kindle owners. Version 2025.04v1 added support and we've seen and heard from many Kindle owners running this plugin.
26 | * Android owners. As of version 2025.04v2, the Android edition of KOReader is supported.
27 | * Owners of Pocketbook, Boox, Bigme and more. These readers should work just as well now, too.
28 | * People with tidy EPUB/PDF libraries. We make sure every EPUB we sync has a title, author, series and cover image, so we designed around books always having that metadata. (We recommend Calibre for this.)
29 | * Readers who like browsing for their next book and being able to see how long a book is before starting it.
30 |
31 | ## Who this (probably) is not for:
32 | * KOReader users who prefer a barebones UI. If you are happy picking your next read from a list of filenames then KOReader already does this extremely well! (A "filenames only" display mode is included if you want to use the other parts of the plugin but retain a plain list.)
33 | * KOReader users who prize speed above all else. Pretty has a price and while it depends on your device and features you pick, Project: Title may be slower than sticking to a plain list or Cover Browser. A 4x4 grid with folder thumbnails enabled on an older Kindle will definitely see some longer page turns, but you'll just have to try it to see if it bothers you.
34 | * KOReader users who are completely happy with Cover Browser. Most of what we've done here is just a new coat of paint, so if you don't like the color then that's a good reason to give Project: Title a pass.
35 |
36 | ## Installation
37 | [Step-by-Step Install Guide](../../wiki/Installation)
38 |
39 | ## Instructions and Other Documentation
40 |
41 | **Documentation:**
42 |
43 | [Documentation Wiki Page](../../wiki/Documentation)
44 |
45 | **User patch info and links:**
46 |
47 | [User Patch Wiki Page](../../wiki/User-Patches-for-Project-Title)
48 |
49 | **To configure Calibre to add page counts to books:**
50 |
51 | [Calibre Page Counts Wiki Page](../../wiki/Configure-Calibre-Page-Counts)
52 |
53 |
54 | **Easy Uninstall:**
55 |
56 | To disable: Open the plugins menu, enable Cover Browser, then restart your device.
57 |
58 | To completely remove: Delete the projecttitle.koplugin folder from `koreader/plugins/`. Delete the `koreader/fonts/source/` folder to remove the additional fonts, and the `koreader/icons/` folder to remove the additional icons.
59 |
60 | ## Credits
61 | All code here started life as the Cover Browser plugin, written by @poire-z and other members of the KOReader team. The additional changes made here were done by @joshuacant and @elfbutt and all [contributors](../../graphs/contributors)
62 |
63 | ## Licenses
64 | The code is licensed under the same terms as KOReader itself, AGPL-3.0. The license information for any additional files (fonts, images, etc) is located in licenses.txt
65 |
--------------------------------------------------------------------------------
/l10n/zh_CN/koreader.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "projecttitle/zh_CN/>\n"
4 | "Language: zh_CN\n"
5 | "MIME-Version: 1.0\n"
6 | "Content-Type: text/plain; charset=UTF-8\n"
7 | "Content-Transfer-Encoding: 8bit\n"
8 | "Plural-Forms: nplurals=1; plural=0;\n"
9 |
10 | msgid "Progress"
11 | msgstr "进度"
12 |
13 | msgid "Description"
14 | msgstr "描述"
15 |
16 | msgid "%1 et al."
17 | msgstr "%1 等"
18 |
19 | msgid "Reading"
20 | msgstr "阅读中"
21 |
22 | msgid "%1%"
23 | msgstr "%1%"
24 |
25 | msgid "not readable by engine"
26 | msgstr "引擎无法读取"
27 |
28 | msgid "too many interruptions or crashes"
29 | msgstr "中断或崩溃次数过多"
30 |
31 | msgid "Books"
32 | msgstr "书籍"
33 |
34 | msgid "Book info cache database updated."
35 | msgstr "书籍信息缓存数据库已更新。"
36 |
37 | msgid "Failed compacting database: %1"
38 | msgstr "压缩数据库失败:%1"
39 |
40 | msgid "Cache database size reduced from %1 to %2."
41 | msgstr "缓存数据库大小已从 %1 缩减到 %2。"
42 |
43 | msgid "Cache is empty. Nothing to prune."
44 | msgstr "缓存为空,无需修剪。"
45 |
46 | msgid "Removed %1 / %2 entries from cache."
47 | msgstr "已从缓存中移除 %1 / %2 条目。"
48 |
49 | msgid ""
50 | "This will extract metadata and cover images from books in the current "
51 | "directory.\n"
52 | "Once extraction has started, you can abort at any moment by tapping on the "
53 | "screen.\n"
54 | "\n"
55 | "This extraction may take time and use some battery power: you may wish to "
56 | "keep your device plugged in."
57 | msgstr ""
58 | "这将从当前目录中的书籍提取元数据和封面图像。\n"
59 | "开始提取后,您可以随时点击屏幕中止操作。\n"
60 | "\n"
61 | "此过程可能需要一些时间并耗电,建议将设备连接电源。"
62 |
63 | msgid "Cancel"
64 | msgstr "取消"
65 |
66 | msgid "Continue"
67 | msgstr "继续"
68 |
69 | msgid "Also extract book information from books in subdirectories?"
70 | msgstr "是否同时提取子目录中的书籍信息?"
71 |
72 | msgid "Here only"
73 | msgstr "仅此处"
74 |
75 | msgid "Here and under"
76 | msgstr "此处及子目录"
77 |
78 | msgid ""
79 | "Do you want to refresh metadata and covers that have already been extracted?"
80 | msgstr "是否刷新已提取的元数据和封面?"
81 |
82 | msgid "Don't refresh"
83 | msgstr "不刷新"
84 |
85 | msgid "Refresh"
86 | msgstr "刷新"
87 |
88 | msgid ""
89 | "If you have removed many books, or have renamed some directories, it is good "
90 | "to remove them from the cache database.\n"
91 | "\n"
92 | "Do you want to prune the cache of removed books?"
93 | msgstr ""
94 | "如果您已删除了许多书籍或重命名了目录,建议从缓存数据库中移除它们。\n"
95 | "\n"
96 | "是否修剪已移除书籍的缓存?"
97 |
98 | msgid "Don't prune"
99 | msgstr "不修剪"
100 |
101 | msgid "Prune"
102 | msgstr "修剪"
103 |
104 | msgid "Do you want to stop?"
105 | msgstr "您确定要停止吗?"
106 |
107 | msgid "Continue Indexing"
108 | msgstr "继续索引"
109 |
110 | msgid "Stop Indexing"
111 | msgstr "停止索引"
112 |
113 | msgid "Pruning cache of removed books…"
114 | msgstr "正在修剪已移除书籍的缓存…"
115 |
116 | msgid "Looking for books to index…"
117 | msgstr "正在查找要索引的书籍…"
118 |
119 | msgid "No books were found."
120 | msgstr "未找到任何书籍。"
121 |
122 | msgid ""
123 | "Found %1 books.\n"
124 | "Looking for new books…"
125 | msgstr ""
126 | "已找到 %1 本书。\n"
127 | "正在查找新书…"
128 |
129 | msgid "No new books found."
130 | msgstr "未找到新书。"
131 |
132 | msgid ""
133 | "Indexing %1 / %2…\n"
134 | "\n"
135 | "%3"
136 | msgstr ""
137 | "索引中 %1 / %2…\n"
138 | "\n"
139 | "%3"
140 |
141 | msgid "Tap anywhere to stop"
142 | msgstr "点击任意位置以停止"
143 |
144 | msgid "Processed %1 / %2 books."
145 | msgstr "已处理 %1 / %2 本书。"
146 |
147 | msgid ""
148 | "Start-up of background extraction job failed.\n"
149 | "Please restart KOReader or your device."
150 | msgstr ""
151 | "后台提取任务启动失败。\n"
152 | "请重启 KOReader 或设备。"
153 |
154 | msgid "Select"
155 | msgstr "选择"
156 |
157 | msgid "Rename"
158 | msgstr "重命名"
159 |
160 | msgid "Delete"
161 | msgstr "删除"
162 |
163 | msgid "Cut"
164 | msgstr "剪切"
165 |
166 | msgid "Open with…"
167 | msgstr "使用…打开"
168 |
169 | msgid "Set as HOME folder"
170 | msgstr "设为主文件夹"
171 |
172 | msgid "%1Off"
173 | msgstr "%1关闭"
174 |
175 | msgid "Home"
176 | msgstr "主目录"
177 |
178 | msgid "Library"
179 | msgstr "书库"
180 |
181 | msgid "Folder"
182 | msgstr "文件夹"
183 |
184 | msgid "Book"
185 | msgstr "书籍"
186 |
187 | msgid "Folders"
188 | msgstr "文件夹"
189 |
190 | msgid "Finished"
191 | msgstr "已完成"
192 |
193 | msgid "On hold"
194 | msgstr "暂停中"
195 |
196 | msgid "New"
197 | msgstr "新书"
198 |
199 | msgid "Page %1 of %2"
200 | msgstr "第 %1 页,共 %2 页"
201 |
202 | msgid "%1 pages left"
203 | msgstr "剩余 %1 页"
204 |
205 | msgid "(no book information: %1)"
206 | msgstr "(无书籍信息:%1)"
207 |
208 | msgid "(deleted)"
209 | msgstr "(已删除)"
210 |
211 | msgid "Cover List"
212 | msgstr "封面列表"
213 |
214 | msgid "Cover Grid"
215 | msgstr "封面网格"
216 |
217 | msgid "Details List"
218 | msgstr "详细列表"
219 |
220 | msgid "Filenames List"
221 | msgstr "文件名列表"
222 |
223 | msgid "Project: Title - Decrease Items Per Page"
224 | msgstr "项目:标题 - 减少每页项目数"
225 |
226 | msgid "Project: Title - Increase Items Per Page"
227 | msgstr "项目:标题 - 增加每页项目数"
228 |
229 | msgid "Use this mode everywhere"
230 | msgstr "在所有地方使用此模式"
231 |
232 | msgid "History display mode"
233 | msgstr "历史显示模式"
234 |
235 | msgid "Collections display mode"
236 | msgstr "合集显示模式"
237 |
238 | msgid "Display mode"
239 | msgstr "显示模式"
240 |
241 | msgid "Project: Title settings"
242 | msgstr "项目:标题设置"
243 |
244 | msgid "Items per page"
245 | msgstr "每页项目数"
246 |
247 | msgid "Portrait cover grid mode"
248 | msgstr "竖屏封面网格模式"
249 |
250 | msgid ": %1 × %2"
251 | msgstr ":%1 × %2"
252 |
253 | msgid "Columns"
254 | msgstr "列数"
255 |
256 | msgid "Rows"
257 | msgstr "行数"
258 |
259 | msgid "Landscape cover grid mode"
260 | msgstr "横屏封面网格模式"
261 |
262 | msgid "List modes"
263 | msgstr "列表模式"
264 |
265 | msgid ": %1"
266 | msgstr ":%1"
267 |
268 | msgid "Folder display"
269 | msgstr "文件夹显示"
270 |
271 | msgid "Auto-generate cover images from books"
272 | msgstr "自动从书籍生成封面"
273 |
274 | msgid "Overlay name and details in cover grid"
275 | msgstr "在封面网格上覆盖名称和详情"
276 |
277 | msgid "Book display"
278 | msgstr "书籍显示"
279 |
280 | msgid "Show series"
281 | msgstr "显示系列"
282 |
283 | msgid "Show pages read instead of progress %"
284 | msgstr "显示已读页数而非进度百分比"
285 |
286 | msgid "Show file info instead of pages or progress %"
287 | msgstr "显示文件信息而非页数或进度"
288 |
289 | msgid "Always show maximum length progress bars"
290 | msgstr "始终显示全长进度条"
291 |
292 | msgid "Use custom book status screen"
293 | msgstr "使用自定义书籍状态界面"
294 |
295 | msgid "Footer"
296 | msgstr "页脚"
297 |
298 | msgid "Replace folder name with device info"
299 | msgstr "用设备信息替换文件夹名称"
300 |
301 | msgid "Show page controls in left corner"
302 | msgstr "在左下角显示页码控件"
303 |
304 | msgid "Library mode"
305 | msgstr "书库模式"
306 |
307 | msgid "Show opened books first"
308 | msgstr "优先显示已打开的书籍"
309 |
310 | msgid "Cache database"
311 | msgstr "缓存数据库"
312 |
313 | msgid "Scan home folder for new books automatically"
314 | msgstr "自动扫描主文件夹中的新书"
315 |
316 | msgid "Prune cache"
317 | msgstr "修剪缓存"
318 |
319 | msgid ""
320 | "Are you sure that you want to prune cache of removed books?\n"
321 | "(This may take a while.)"
322 | msgstr ""
323 | "确定要修剪已移除书籍的缓存吗?\n"
324 | "(此操作可能需要一些时间。)"
325 |
326 | msgid "Empty cache"
327 | msgstr "清空缓存"
328 |
329 | msgid "Are you sure that you want to delete cover and metadata cache?"
330 | msgstr "确定要删除封面和元数据缓存吗?"
331 |
332 | msgid "Cache emptied."
333 | msgstr "缓存已清空。"
334 |
335 | msgid "Cache size"
336 | msgstr "缓存大小"
337 |
338 | msgid "Extract and cache book information"
339 | msgstr "提取并缓存书籍信息"
340 |
341 | msgid "Refresh cached book information"
342 | msgstr "刷新已缓存的书籍信息"
343 |
344 | msgid "Unignore cover"
345 | msgstr "取消忽略封面"
346 |
347 | msgid "Ignore cover"
348 | msgstr "忽略封面"
349 |
350 | msgid "Unignore metadata"
351 | msgstr "取消忽略元数据"
352 |
353 | msgid "Ignore metadata"
354 | msgstr "忽略元数据"
355 |
356 | msgid " %1 of %2 "
357 | msgstr " %1 / %2 "
358 |
359 | msgid "Project: Title"
360 | msgstr "项目:标题"
361 |
362 | msgid "All new user interface for browsing books."
363 | msgstr "全新浏览书籍的用户界面。"
364 |
--------------------------------------------------------------------------------
/l10n/zh_TW/koreader.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "projecttitle/zh_TW/>\n"
4 | "Language: zh_TW\n"
5 | "MIME-Version: 1.0\n"
6 | "Content-Type: text/plain; charset=UTF-8\n"
7 | "Content-Transfer-Encoding: 8bit\n"
8 | "Plural-Forms: nplurals=1; plural=0;\n"
9 |
10 | msgid "Progress"
11 | msgstr "進度"
12 |
13 | msgid "Description"
14 | msgstr "描述"
15 |
16 | msgid "%1 et al."
17 | msgstr "%1 等"
18 |
19 | msgid "Reading"
20 | msgstr "閱讀中"
21 |
22 | msgid "%1%"
23 | msgstr "%1%"
24 |
25 | msgid "not readable by engine"
26 | msgstr "引擎無法讀取"
27 |
28 | msgid "too many interruptions or crashes"
29 | msgstr "中斷或當機次數過多"
30 |
31 | msgid "Books"
32 | msgstr "書籍"
33 |
34 | msgid "Book info cache database updated."
35 | msgstr "書籍資訊快取資料庫已更新。"
36 |
37 | msgid "Failed compacting database: %1"
38 | msgstr "壓縮資料庫失敗:%1"
39 |
40 | msgid "Cache database size reduced from %1 to %2."
41 | msgstr "快取資料庫大小已從 %1 減少至 %2。"
42 |
43 | msgid "Cache is empty. Nothing to prune."
44 | msgstr "快取為空,無需修剪。"
45 |
46 | msgid "Removed %1 / %2 entries from cache."
47 | msgstr "已從快取中移除 %1 / %2 筆資料。"
48 |
49 | msgid ""
50 | "This will extract metadata and cover images from books in the current "
51 | "directory.\n"
52 | "Once extraction has started, you can abort at any moment by tapping on the "
53 | "screen.\n"
54 | "\n"
55 | "This extraction may take time and use some battery power: you may wish to "
56 | "keep your device plugged in."
57 | msgstr ""
58 | "這將從目前目錄中的書籍擷取中繼資料與封面圖片。\n"
59 | "開始擷取後,您可隨時點擊螢幕中止操作。\n"
60 | "\n"
61 | "此過程可能需要一些時間並耗電,建議保持裝置連接電源。"
62 |
63 | msgid "Cancel"
64 | msgstr "取消"
65 |
66 | msgid "Continue"
67 | msgstr "繼續"
68 |
69 | msgid "Also extract book information from books in subdirectories?"
70 | msgstr "是否同時擷取子目錄中的書籍資訊?"
71 |
72 | msgid "Here only"
73 | msgstr "僅此處"
74 |
75 | msgid "Here and under"
76 | msgstr "此處及子目錄"
77 |
78 | msgid ""
79 | "Do you want to refresh metadata and covers that have already been extracted?"
80 | msgstr "是否要重新整理已擷取的中繼資料與封面?"
81 |
82 | msgid "Don't refresh"
83 | msgstr "不重新整理"
84 |
85 | msgid "Refresh"
86 | msgstr "重新整理"
87 |
88 | msgid ""
89 | "If you have removed many books, or have renamed some directories, it is good "
90 | "to remove them from the cache database.\n"
91 | "\n"
92 | "Do you want to prune the cache of removed books?"
93 | msgstr ""
94 | "如果您已刪除許多書籍或重新命名了目錄,建議將它們從快取資料庫中移除。\n"
95 | "\n"
96 | "是否要修剪已移除書籍的快取?"
97 |
98 | msgid "Don't prune"
99 | msgstr "不修剪"
100 |
101 | msgid "Prune"
102 | msgstr "修剪"
103 |
104 | msgid "Do you want to stop?"
105 | msgstr "您確定要停止嗎?"
106 |
107 | msgid "Continue Indexing"
108 | msgstr "繼續索引"
109 |
110 | msgid "Stop Indexing"
111 | msgstr "停止索引"
112 |
113 | msgid "Pruning cache of removed books…"
114 | msgstr "正在修剪已移除書籍的快取…"
115 |
116 | msgid "Looking for books to index…"
117 | msgstr "正在尋找要索引的書籍…"
118 |
119 | msgid "No books were found."
120 | msgstr "未找到任何書籍。"
121 |
122 | msgid ""
123 | "Found %1 books.\n"
124 | "Looking for new books…"
125 | msgstr ""
126 | "已找到 %1 本書。\n"
127 | "正在尋找新書…"
128 |
129 | msgid "No new books found."
130 | msgstr "未找到新書。"
131 |
132 | msgid ""
133 | "Indexing %1 / %2…\n"
134 | "\n"
135 | "%3"
136 | msgstr ""
137 | "索引中 %1 / %2…\n"
138 | "\n"
139 | "%3"
140 |
141 | msgid "Tap anywhere to stop"
142 | msgstr "點擊任意位置以停止"
143 |
144 | msgid "Processed %1 / %2 books."
145 | msgstr "已處理 %1 / %2 本書。"
146 |
147 | msgid ""
148 | "Start-up of background extraction job failed.\n"
149 | "Please restart KOReader or your device."
150 | msgstr ""
151 | "後台擷取任務啟動失敗。\n"
152 | "請重新啟動 KOReader 或裝置。"
153 |
154 | msgid "Select"
155 | msgstr "選取"
156 |
157 | msgid "Rename"
158 | msgstr "重新命名"
159 |
160 | msgid "Delete"
161 | msgstr "刪除"
162 |
163 | msgid "Cut"
164 | msgstr "剪切"
165 |
166 | msgid "Open with…"
167 | msgstr "使用…開啟"
168 |
169 | msgid "Set as HOME folder"
170 | msgstr "設為主資料夾"
171 |
172 | msgid "%1Off"
173 | msgstr "%1關閉"
174 |
175 | msgid "Home"
176 | msgstr "主目錄"
177 |
178 | msgid "Library"
179 | msgstr "書庫"
180 |
181 | msgid "Folder"
182 | msgstr "資料夾"
183 |
184 | msgid "Book"
185 | msgstr "書籍"
186 |
187 | msgid "Folders"
188 | msgstr "資料夾"
189 |
190 | msgid "Finished"
191 | msgstr "已完成"
192 |
193 | msgid "On hold"
194 | msgstr "暫停中"
195 |
196 | msgid "New"
197 | msgstr "新書"
198 |
199 | msgid "Page %1 of %2"
200 | msgstr "第 %1 頁,共 %2 頁"
201 |
202 | msgid "%1 pages left"
203 | msgstr "剩餘 %1 頁"
204 |
205 | msgid "(no book information: %1)"
206 | msgstr "(無書籍資訊:%1)"
207 |
208 | msgid "(deleted)"
209 | msgstr "(已刪除)"
210 |
211 | msgid "Cover List"
212 | msgstr "封面清單"
213 |
214 | msgid "Cover Grid"
215 | msgstr "封面網格"
216 |
217 | msgid "Details List"
218 | msgstr "詳細清單"
219 |
220 | msgid "Filenames List"
221 | msgstr "檔名清單"
222 |
223 | msgid "Project: Title - Decrease Items Per Page"
224 | msgstr "專案:標題 - 減少每頁項目數"
225 |
226 | msgid "Project: Title - Increase Items Per Page"
227 | msgstr "專案:標題 - 增加每頁項目數"
228 |
229 | msgid "Use this mode everywhere"
230 | msgstr "在所有地方使用此模式"
231 |
232 | msgid "History display mode"
233 | msgstr "歷史顯示模式"
234 |
235 | msgid "Collections display mode"
236 | msgstr "收藏顯示模式"
237 |
238 | msgid "Display mode"
239 | msgstr "顯示模式"
240 |
241 | msgid "Project: Title settings"
242 | msgstr "專案:標題設定"
243 |
244 | msgid "Items per page"
245 | msgstr "每頁項目數"
246 |
247 | msgid "Portrait cover grid mode"
248 | msgstr "直式封面網格模式"
249 |
250 | msgid ": %1 × %2"
251 | msgstr ":%1 × %2"
252 |
253 | msgid "Columns"
254 | msgstr "欄數"
255 |
256 | msgid "Rows"
257 | msgstr "列數"
258 |
259 | msgid "Landscape cover grid mode"
260 | msgstr "橫式封面網格模式"
261 |
262 | msgid "List modes"
263 | msgstr "清單模式"
264 |
265 | msgid ": %1"
266 | msgstr ":%1"
267 |
268 | msgid "Folder display"
269 | msgstr "資料夾顯示"
270 |
271 | msgid "Auto-generate cover images from books"
272 | msgstr "自動從書籍產生封面"
273 |
274 | msgid "Overlay name and details in cover grid"
275 | msgstr "在封面網格上疊加名稱與詳細資訊"
276 |
277 | msgid "Book display"
278 | msgstr "書籍顯示"
279 |
280 | msgid "Show series"
281 | msgstr "顯示系列"
282 |
283 | msgid "Show pages read instead of progress %"
284 | msgstr "顯示已讀頁數而非進度百分比"
285 |
286 | msgid "Show file info instead of pages or progress %"
287 | msgstr "顯示檔案資訊而非頁數或進度"
288 |
289 | msgid "Always show maximum length progress bars"
290 | msgstr "永遠顯示最大長度進度條"
291 |
292 | msgid "Use custom book status screen"
293 | msgstr "使用自訂書籍狀態畫面"
294 |
295 | msgid "Footer"
296 | msgstr "頁尾"
297 |
298 | msgid "Replace folder name with device info"
299 | msgstr "以裝置資訊取代資料夾名稱"
300 |
301 | msgid "Show page controls in left corner"
302 | msgstr "在左下角顯示頁面控制"
303 |
304 | msgid "Library mode"
305 | msgstr "書庫模式"
306 |
307 | msgid "Show opened books first"
308 | msgstr "優先顯示已開啟書籍"
309 |
310 | msgid "Cache database"
311 | msgstr "快取資料庫"
312 |
313 | msgid "Scan home folder for new books automatically"
314 | msgstr "自動掃描主目錄中的新書"
315 |
316 | msgid "Prune cache"
317 | msgstr "修剪快取"
318 |
319 | msgid ""
320 | "Are you sure that you want to prune cache of removed books?\n"
321 | "(This may take a while.)"
322 | msgstr ""
323 | "您確定要修剪已移除書籍的快取嗎?\n"
324 | "(此操作可能需要一些時間。)"
325 |
326 | msgid "Empty cache"
327 | msgstr "清空快取"
328 |
329 | msgid "Are you sure that you want to delete cover and metadata cache?"
330 | msgstr "您確定要刪除封面與中繼資料快取嗎?"
331 |
332 | msgid "Cache emptied."
333 | msgstr "快取已清空。"
334 |
335 | msgid "Cache size"
336 | msgstr "快取大小"
337 |
338 | msgid "Extract and cache book information"
339 | msgstr "擷取並快取書籍資訊"
340 |
341 | msgid "Refresh cached book information"
342 | msgstr "重新整理已快取的書籍資訊"
343 |
344 | msgid "Unignore cover"
345 | msgstr "取消忽略封面"
346 |
347 | msgid "Ignore cover"
348 | msgstr "忽略封面"
349 |
350 | msgid "Unignore metadata"
351 | msgstr "取消忽略中繼資料"
352 |
353 | msgid "Ignore metadata"
354 | msgstr "忽略中繼資料"
355 |
356 | msgid " %1 of %2 "
357 | msgstr " %1 / %2 "
358 |
359 | msgid "Project: Title"
360 | msgstr "專案:標題"
361 |
362 | msgid "All new user interface for browsing books."
363 | msgstr "全新瀏覽書籍的使用者介面。"
364 |
--------------------------------------------------------------------------------
/titlebar.lua:
--------------------------------------------------------------------------------
1 | local Device = require("device")
2 | local Geom = require("ui/geometry")
3 | local IconButton = require("ui/widget/iconbutton")
4 | local OverlapGroup = require("ui/widget/overlapgroup")
5 | local LeftContainer = require("ui/widget/container/leftcontainer")
6 | local HorizontalGroup = require("ui/widget/horizontalgroup")
7 | local HorizontalSpan = require("ui/widget/horizontalspan")
8 | local Screen = Device.screen
9 | local logger = require("logger")
10 | local ptutil = require("ptutil")
11 | local ptdbg = require("ptdbg")
12 |
13 | local DGENERIC_ICON_SIZE = G_defaults:readSetting("DGENERIC_ICON_SIZE")
14 |
15 | local TitleBar = OverlapGroup:extend {
16 | left1_icon = nil,
17 | left1_icon_tap_callback = function() end,
18 | left1_icon_hold_callback = function() end,
19 | left2_icon = nil,
20 | left2_icon_tap_callback = function() end,
21 | left2_icon_hold_callback = function() end,
22 | left3_icon = nil,
23 | left3_icon_tap_callback = function() end,
24 | left3_icon_hold_callback = function() end,
25 | center_icon = nil,
26 | center_icon_tap_callback = function() end,
27 | center_icon_hold_callback = function() end,
28 | right3_icon = nil,
29 | right3_icon_tap_callback = function() end,
30 | right3_icon_hold_callback = function() end,
31 | right2_icon = nil,
32 | right2_icon_tap_callback = function() end,
33 | right2_icon_hold_callback = function() end,
34 | right1_icon = nil,
35 | right1_icon_tap_callback = function() end,
36 | right1_icon_hold_callback = function() end,
37 | show_parent = nil,
38 | icon_size = Screen:scaleBySize(DGENERIC_ICON_SIZE),
39 | center_icon_size = nil,
40 | center_icon_size_ratio = 1.25,
41 | icon_padding_top = Screen:scaleBySize(5),
42 | icon_padding_bottom = Screen:scaleBySize(5),
43 | icon_margin_lr = Screen:scaleBySize(35),
44 | icon_reserved_width = nil,
45 | titlebar_margin_lr = Screen:scaleBySize(16),
46 | title = "",
47 | subtitle = "",
48 | fullscreen = "true",
49 | align = "center",
50 | }
51 |
52 | function TitleBar:init()
53 | self.width = Screen:getWidth()
54 | self.titlebar_height = self.icon_size + self.icon_padding_top + self.icon_padding_bottom
55 | self.dimen = Geom:new {
56 | x = 0,
57 | y = 0,
58 | w = self.width,
59 | h = self.titlebar_height,
60 | }
61 | self.icon_total_width = self.icon_size + self.icon_margin_lr
62 | local padding1 = self.titlebar_margin_lr
63 | local padding2 = self.titlebar_margin_lr + self.icon_total_width
64 | local padding3 = self.titlebar_margin_lr + (self.icon_total_width * 2)
65 | self.center_icon_size = math.ceil(self.icon_size * self.center_icon_size_ratio)
66 | local total_width = self.center_icon_size + (padding3 * 2) + (self.icon_total_width * 2)
67 |
68 | local function build_container(button, is_left_button, padding)
69 | local pre_padding
70 | local post_padding
71 | if is_left_button then
72 | pre_padding = padding
73 | post_padding = self.width - padding - button:getSize().w
74 | else
75 | pre_padding = self.width - padding - button:getSize().w
76 | post_padding = padding
77 | end
78 | return LeftContainer:new {
79 | dimen = self.dimen,
80 | HorizontalGroup:new {
81 | HorizontalSpan:new { width = pre_padding },
82 | button,
83 | HorizontalSpan:new { width = post_padding },
84 | },
85 | }
86 | end
87 |
88 | self.left1_button = IconButton:new {
89 | icon = self.left1_icon,
90 | icon_rotation_angle = 0,
91 | width = self.icon_size,
92 | height = self.icon_size,
93 | padding = 0,
94 | padding_bottom = self.icon_padding_bottom,
95 | padding_top = self.icon_padding_top,
96 | callback = self.left1_icon_tap_callback,
97 | hold_callback = self.left1_icon_hold_callback,
98 | show_parent = self.show_parent,
99 | }
100 | self.left1_button_container = build_container(self.left1_button, true, padding1)
101 |
102 | self.left2_button = IconButton:new {
103 | icon = self.left2_icon,
104 | width = self.icon_size,
105 | height = self.icon_size,
106 | padding = 0,
107 | padding_bottom = self.icon_padding_bottom,
108 | padding_top = self.icon_padding_top,
109 | callback = self.left2_icon_tap_callback,
110 | hold_callback = self.left2_icon_hold_callback,
111 | show_parent = self.show_parent,
112 | }
113 | self.left2_button_container = build_container(self.left2_button, true, padding2)
114 |
115 | self.left3_button = IconButton:new {
116 | icon = self.left3_icon,
117 | width = self.icon_size,
118 | height = self.icon_size,
119 | padding = 0,
120 | padding_bottom = self.icon_padding_bottom,
121 | padding_top = self.icon_padding_top,
122 | callback = self.left3_icon_tap_callback,
123 | hold_callback = self.left3_icon_hold_callback,
124 | show_parent = self.show_parent,
125 | }
126 | self.left3_button_container = build_container(self.left3_button, true, padding3)
127 |
128 | self.center_button = IconButton:new {
129 | icon = self.center_icon,
130 | width = self.center_icon_size,
131 | height = self.center_icon_size,
132 | padding = 0,
133 | padding_bottom = 0,
134 | padding_top = 0,
135 | overlap_align = "center", -- this does all the work of centering itself, no container needed
136 | callback = self.center_icon_tap_callback,
137 | hold_callback = self.center_icon_hold_callback,
138 | show_parent = self.show_parent,
139 | }
140 | self.center_button_container = self.center_button
141 |
142 | self.right3_button = IconButton:new {
143 | icon = self.right3_icon,
144 | width = self.icon_size,
145 | height = self.icon_size,
146 | padding = 0,
147 | padding_bottom = self.icon_padding_bottom,
148 | padding_top = self.icon_padding_top,
149 | callback = self.right3_icon_tap_callback,
150 | hold_callback = self.right3_icon_hold_callback,
151 | show_parent = self.show_parent,
152 | }
153 | self.right3_button_container = build_container(self.right3_button, false, padding3)
154 |
155 | self.right2_button = IconButton:new {
156 | icon = self.right2_icon,
157 | width = self.icon_size,
158 | height = self.icon_size,
159 | padding = 0,
160 | padding_bottom = self.icon_padding_bottom,
161 | padding_top = self.icon_padding_top,
162 | callback = self.right2_icon_tap_callback,
163 | hold_callback = self.right2_icon_hold_callback,
164 | show_parent = self.show_parent,
165 | }
166 | self.right2_button_container = build_container(self.right2_button, false, padding2)
167 |
168 | self.right1_button = IconButton:new {
169 | icon = self.right1_icon,
170 | width = self.icon_size,
171 | height = self.icon_size,
172 | padding = 0,
173 | padding_bottom = self.icon_padding_bottom,
174 | padding_top = self.icon_padding_top,
175 | callback = self.right1_icon_tap_callback,
176 | hold_callback = self.right1_icon_hold_callback,
177 | show_parent = self.show_parent,
178 | }
179 | self.right1_button_container = build_container(self.right1_button, false, padding1)
180 |
181 | -- insert buttons into final layout...
182 | table.insert(self, self.center_button_container)
183 | table.insert(self, self.left1_button_container)
184 | table.insert(self, self.right1_button_container)
185 | table.insert(self, self.left2_button_container)
186 | table.insert(self, self.right2_button_container)
187 | -- and check to make sure all buttons will fit, if not remove two
188 | if total_width < self.width then
189 | table.insert(self, self.left3_button_container)
190 | table.insert(self, self.right3_button_container)
191 | else
192 | self.left3_button = nil
193 | self.right3_button = nil
194 | end
195 |
196 | -- insert optional button pairs provided through user patches
197 | if self.left4_button and self.right4_button then
198 | table.insert(self, self.left4_button_container)
199 | table.insert(self, self.right4_button_container)
200 | end
201 | if self.left5_button and self.right5_button then
202 | table.insert(self, self.left5_button_container)
203 | table.insert(self, self.right5_button_container)
204 | end
205 |
206 | -- maintain compatibility with FileManager or anything else that might expect the stock 2 buttons
207 | self.left_button = self.left1_button
208 | self.right_button = self.right1_button
209 |
210 | -- Call our base class's init (especially since OverlapGroup has very peculiar self.dimen semantics...)
211 | OverlapGroup.init(self)
212 | end
213 |
214 | function TitleBar:paintTo(bb, x, y)
215 | -- We need to update self.dimen's x and y for any ges.pos:intersectWith(title_bar)
216 | -- to work. (This is done by FrameContainer, but not by most other widgets... It
217 | -- should probably be done in all of them, but not sure of side effects...)
218 | self.dimen.x = x
219 | self.dimen.y = y
220 | OverlapGroup.paintTo(self, bb, x, y)
221 | end
222 |
223 | function TitleBar:getHeight()
224 | return self.titlebar_height
225 | end
226 |
227 | function TitleBar:setTitle(title, no_refresh)
228 | self.title = ""
229 | end
230 |
231 | function TitleBar:setSubTitle(subtitle, no_refresh)
232 | self.subtitle = ""
233 | end
234 |
235 | function TitleBar:setLeftIcon(icon)
236 | -- do nothing, we don't want our icon changing
237 | end
238 |
239 | function TitleBar:setRightIcon(icon)
240 | -- do nothing, we don't want our icon changing
241 | end
242 |
243 | -- layout for FocusManager
244 | function TitleBar:generateHorizontalLayout()
245 | local row = {}
246 | if self.left1_button then
247 | table.insert(row, self.left1_button)
248 | end
249 | if self.left2_button then
250 | table.insert(row, self.left2_button)
251 | end
252 | if self.left3_button then
253 | table.insert(row, self.left3_button)
254 | end
255 | if self.center_button then
256 | table.insert(row, self.center_button)
257 | end
258 | if self.right3_button then
259 | table.insert(row, self.right3_button)
260 | end
261 | if self.right2_button then
262 | table.insert(row, self.right2_button)
263 | end
264 | if self.right1_button then
265 | table.insert(row, self.right1_button)
266 | end
267 | local layout = {}
268 | if #row > 0 then
269 | table.insert(layout, row)
270 | end
271 | return layout
272 | end
273 |
274 | -- layout for FocusManager
275 | function TitleBar:generateVerticalLayout()
276 | local layout = {}
277 | if self.left1_button then
278 | table.insert(layout, { self.left1_button })
279 | end
280 | if self.left2_button then
281 | table.insert(layout, { self.left2_button })
282 | end
283 | if self.left3_button then
284 | table.insert(layout, { self.left3_button })
285 | end
286 | if self.center_button then
287 | table.insert(layout, { self.center_button })
288 | end
289 | if self.right3_button then
290 | table.insert(layout, { self.right3_button })
291 | end
292 | if self.right2_button then
293 | table.insert(layout, { self.right2_button })
294 | end
295 | if self.right1_button then
296 | table.insert(layout, { self.right1_button })
297 | end
298 | return layout
299 | end
300 |
301 | return TitleBar
302 |
--------------------------------------------------------------------------------
/icons/hero.svg:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
--------------------------------------------------------------------------------
/altbookstatuswidget.lua:
--------------------------------------------------------------------------------
1 | local BD = require("ui/bidi")
2 | local Blitbuffer = require("ffi/blitbuffer")
3 | local CenterContainer = require("ui/widget/container/centercontainer")
4 | local Device = require("device")
5 | local FileManagerBookInfo = require("apps/filemanager/filemanagerbookinfo")
6 | local Font = require("ui/font")
7 | local Geom = require("ui/geometry")
8 | local FrameContainer = require("ui/widget/container/framecontainer")
9 | local HorizontalGroup = require("ui/widget/horizontalgroup")
10 | local HorizontalSpan = require("ui/widget/horizontalspan")
11 | local ImageWidget = require("ui/widget/imagewidget")
12 | local InputContainer = require("ui/widget/container/inputcontainer")
13 | local LeftContainer = require("ui/widget/container/leftcontainer")
14 | local LineWidget = require("ui/widget/linewidget")
15 | local ProgressWidget = require("ui/widget/progresswidget")
16 | local RenderImage = require("ui/renderimage")
17 | local Size = require("ui/size")
18 | local ScrollHtmlWidget = require("ui/widget/scrollhtmlwidget")
19 | local TextBoxWidget = require("ui/widget/textboxwidget")
20 | local TextWidget = require("ui/widget/textwidget")
21 | local VerticalGroup = require("ui/widget/verticalgroup")
22 | local VerticalSpan = require("ui/widget/verticalspan")
23 | local logger = require("logger")
24 | local util = require("util")
25 | local _ = require("l10n.gettext")
26 | local Screen = Device.screen
27 | local T = require("ffi/util").template
28 | local BookInfoManager = require("bookinfomanager")
29 | local ptutil = require("ptutil")
30 | local ptdbg = require("ptdbg")
31 |
32 | local AltBookStatusWidget = {}
33 |
34 | function AltBookStatusWidget:getStatusContent(width)
35 | self.padding = Screen:scaleBySize(22)
36 | local read_percentage = self.ui:getCurrentPage() / self.total_pages
37 | local content = VerticalGroup:new {
38 | align = "left",
39 | VerticalSpan:new { width = self.padding},
40 | self:genBookInfoGroup(),
41 | self:genHeader(_("Progress") .. ": " .. string.format("%1.f%%", read_percentage * 100)),
42 | self:genStatisticsGroup(width),
43 | self:genHeader(_("Description")),
44 | self:genSummaryGroup(width),
45 | }
46 | return content
47 | end
48 |
49 | function AltBookStatusWidget:genHeader(title)
50 | local header_title = TextWidget:new {
51 | text = title,
52 | face = Font:getFace(ptutil.good_sans, ptutil.bookstatus_defaults.header_font_size),
53 | fgcolor = Blitbuffer.COLOR_BLACK,
54 | }
55 |
56 | local width = Screen:getWidth()
57 | local height = header_title:getSize().h
58 | local padding_span = HorizontalSpan:new { width = self.padding }
59 | local line_width = (width - header_title:getSize().w) / 2 - self.padding * 2
60 | local line_container = LeftContainer:new {
61 | dimen = Geom:new { w = line_width, h = height },
62 | LineWidget:new {
63 | background = Blitbuffer.COLOR_GRAY_3,
64 | dimen = Geom:new {
65 | w = line_width,
66 | h = Size.border.thin,
67 | }
68 | }
69 | }
70 |
71 | local span_top = VerticalSpan:new { width = Size.margin.default }
72 | local span_bottom = VerticalSpan:new { width = Size.margin.tiny }
73 |
74 | return VerticalGroup:new {
75 | span_top,
76 | HorizontalGroup:new {
77 | align = "center",
78 | padding_span,
79 | line_container,
80 | padding_span,
81 | header_title,
82 | padding_span,
83 | line_container,
84 | padding_span,
85 | },
86 | span_bottom,
87 | }
88 | end
89 |
90 | function AltBookStatusWidget:genBookInfoGroup()
91 | local screen_width = Screen:getWidth()
92 | local screen_height = Screen:getHeight()
93 | local width = screen_width
94 | local height = screen_height * 0.40
95 | local max_img_h = height
96 | local max_img_w = height
97 | local avail_meta_width = width - (self.padding * 3)
98 | local avail_meta_height = height
99 |
100 | -- create the full infogroup widget
101 | local book_info_group = HorizontalGroup:new {
102 | align = "top",
103 | }
104 |
105 | -- insert cover column
106 | local thumbnail = FileManagerBookInfo:getCoverImage(self.ui.document)
107 | if thumbnail then
108 | -- Much like BookInfoManager, honor AR here
109 | local cbb_w, cbb_h = thumbnail:getWidth(), thumbnail:getHeight()
110 | if cbb_w > max_img_w or cbb_h > max_img_h then
111 | local scale_factor = math.min(max_img_w / cbb_w, max_img_h / cbb_h)
112 | cbb_w = math.min(math.floor(cbb_w * scale_factor) + 1, max_img_w)
113 | cbb_h = math.min(math.floor(cbb_h * scale_factor) + 1, max_img_h)
114 | thumbnail = RenderImage:scaleBlitBuffer(thumbnail, cbb_w, cbb_h, true)
115 | end
116 | local border_total = Size.border.thin * 2
117 | local dimen = Geom:new {
118 | w = cbb_w + border_total,
119 | h = cbb_h + border_total,
120 | }
121 | local image = ImageWidget:new {
122 | image = thumbnail,
123 | width = cbb_w,
124 | height = cbb_h,
125 | }
126 | table.insert(book_info_group, CenterContainer:new {
127 | dimen = dimen,
128 | FrameContainer:new {
129 | width = dimen.w,
130 | height = dimen.h,
131 | margin = 0,
132 | padding = 0,
133 | radius = Size.radius.default,
134 | bordersize = Size.border.thin,
135 | color = Blitbuffer.COLOR_GRAY_3,
136 | image,
137 | }
138 | })
139 | avail_meta_width = avail_meta_width - (cbb_w + border_total)
140 | avail_meta_height = (cbb_h + border_total)
141 | end
142 |
143 | local text_width = math.floor(avail_meta_width * 0.85)
144 | local bar_width = math.floor(avail_meta_width * 0.75)
145 |
146 | -- Get a chance to have title and authors rendered with alternate
147 | -- glyphs for the book language
148 | local props = self.ui.doc_props
149 | local lang = props.language
150 |
151 | -- progress info
152 | local current_page = self.ui:getCurrentPage() or 1
153 | local book_pages = self.total_pages or 1
154 | local chapter_pages = 1
155 | local current_chapter_page = 1
156 | if self.ui.toc then
157 | chapter_pages = self.ui.toc:getChapterPageCount(current_page) or 1
158 | current_chapter_page = (self.ui.toc:getChapterPagesDone(current_page) + 1) or 1
159 | end
160 |
161 | -- author(s) text
162 | local authors = ""
163 | if props.authors then
164 | authors = ptutil.formatAuthors(props.authors, 2)
165 | end
166 |
167 | -- series name and position (if available, if requested)
168 | local series_mode = BookInfoManager:getSetting("series_mode")
169 | local show_series = props.series and props.series_index
170 | local series
171 | if show_series then
172 | series = ptutil.formatSeries(props.series, props.series_index)
173 | -- if series comes back as blank, don't include it
174 | if series == "" then show_series = false end
175 | else
176 | series = ""
177 | end
178 |
179 | -- combine author and series
180 | local author_series_text = ptutil.formatAuthorSeries(authors, series, series_mode, false)
181 |
182 | -- author(s) and series combined box
183 | local author_series = TextBoxWidget:new {
184 | text = author_series_text,
185 | lang = lang,
186 | face = Font:getFace(ptutil.good_serif, ptutil.bookstatus_defaults.metainfo_font_size),
187 | width = text_width,
188 | height_adjust = true,
189 | height_overflow_show_ellipsis = true,
190 | alignment = "center",
191 | fgcolor = Blitbuffer.COLOR_GRAY_2,
192 | }
193 |
194 | -- book progress bar
195 | local book_percentage = current_page / book_pages
196 | local book_progress = ProgressWidget:new {
197 | width = bar_width,
198 | height = Screen:scaleBySize(16),
199 | percentage = book_percentage,
200 | margin_v = 0,
201 | margin_h = 0,
202 | bordersize = Screen:scaleBySize(0.5),
203 | bordercolor = Blitbuffer.COLOR_BLACK,
204 | bgcolor = Blitbuffer.COLOR_GRAY_E,
205 | fillcolor = Blitbuffer.COLOR_GRAY_6,
206 | }
207 |
208 | -- current chapter title (if available)
209 | local chapter_text = self.ui.toc:getTocTitleByPage(current_page) or ""
210 | local chapter_title = TextBoxWidget:new {
211 | text = chapter_text,
212 | lang = lang,
213 | face = Font:getFace(ptutil.good_serif_it, ptutil.bookstatus_defaults.metainfo_font_size),
214 | width = text_width,
215 | height_adjust = true,
216 | height_overflow_show_ellipsis = true,
217 | alignment = "center",
218 | fgcolor = Blitbuffer.COLOR_BLACK,
219 | }
220 |
221 | -- chapter progress bar
222 | local chapter_percentage = current_chapter_page / chapter_pages
223 | local chapter_progress = ProgressWidget:new {
224 | width = bar_width,
225 | height = Screen:scaleBySize(12),
226 | percentage = chapter_percentage,
227 | margin_v = 0,
228 | margin_h = 0,
229 | bordersize = Screen:scaleBySize(0.5),
230 | bordercolor = Blitbuffer.COLOR_BLACK,
231 | bgcolor = Blitbuffer.COLOR_GRAY_E,
232 | fillcolor = Blitbuffer.COLOR_GRAY_6,
233 | }
234 |
235 | -- title box (done last to calculate the max available height)
236 | local max_title_height = height - author_series:getSize().h - book_progress:getSize().h - chapter_title:getSize().h - Size.padding.default
237 | local book_title = TextBoxWidget:new {
238 | text = props.display_title,
239 | lang = lang,
240 | width = text_width,
241 | height = max_title_height,
242 | height_adjust = true,
243 | height_overflow_show_ellipsis = true,
244 | face = Font:getFace(ptutil.title_serif, ptutil.bookstatus_defaults.title_font_size),
245 | alignment = "center",
246 | }
247 |
248 | -- padding
249 | local meta_paddingsize = 0
250 | local meta_marginsize = 0
251 | local meta_bordersize = Size.border.thin
252 | local meta_padding_height = math.max(Size.padding.default,
253 | avail_meta_height - book_title:getSize().h -
254 | author_series:getSize().h - book_progress:getSize().h -
255 | chapter_progress:getSize().h - chapter_title:getSize().h -
256 | (meta_bordersize * 2) - (meta_paddingsize * 2) - (meta_marginsize * 2)
257 | )
258 |
259 | local dividing_line = LineWidget:new {
260 | background = Blitbuffer.COLOR_GRAY_3,
261 | dimen = Geom:new {
262 | w = avail_meta_width,
263 | h = Size.border.thin,
264 | }
265 | }
266 |
267 | -- build metadata column (adjacent to cover)
268 | local book_meta = VerticalGroup:new { align = "center" }
269 | table.insert(book_meta, VerticalSpan:new { width = meta_padding_height * 0.35 })
270 | table.insert(book_meta, book_title)
271 | table.insert(book_meta, book_progress)
272 | table.insert(book_meta, VerticalSpan:new { width = meta_padding_height * 0.2 })
273 | if chapter_text ~= "" then
274 | table.insert(book_meta, chapter_title)
275 | table.insert(book_meta, chapter_progress)
276 | end
277 | table.insert(book_meta, VerticalSpan:new { width = meta_padding_height * 0.45 })
278 | table.insert(book_meta, dividing_line)
279 | table.insert(book_meta, author_series)
280 |
281 | -- insert padding column
282 | table.insert(book_info_group, HorizontalSpan:new { width = self.padding })
283 |
284 | -- insert metadata column
285 | table.insert(book_info_group, FrameContainer:new {
286 | dimen = Geom:new { w = avail_meta_width, h = avail_meta_height },
287 | margin = meta_marginsize,
288 | padding = meta_paddingsize,
289 | radius = Size.radius.default,
290 | bordersize = meta_bordersize,
291 | color = Blitbuffer.COLOR_GRAY_3,
292 | book_meta,
293 | })
294 |
295 | local meta_container
296 | if not self.readonly then
297 | meta_container = InputContainer:new {
298 | CenterContainer:new {
299 | dimen = Geom:new { w = screen_width, h = height },
300 | book_info_group,
301 | }
302 | }
303 | meta_container:registerTouchZones({ {
304 | id = "meta_tap",
305 | ges = "tap",
306 | screen_zone = { ratio_x = 0, ratio_y = 0, ratio_w = 1, ratio_h = 0.5 },
307 | handler = function(ges) self:onClose() end,
308 | }, })
309 | else
310 | meta_container = CenterContainer:new {
311 | dimen = Geom:new { w = screen_width, h = height },
312 | book_info_group,
313 | }
314 | end
315 | return meta_container
316 | end
317 |
318 | function AltBookStatusWidget:genStatisticsGroup(width)
319 | local screen_height = Screen:getHeight()
320 | local height = screen_height * 0.075
321 | local statistics_container = CenterContainer:new{
322 | dimen = Geom:new{ w = width, h = height },
323 | }
324 | local statistics_group = VerticalGroup:new{ align = "left" }
325 | local tile_width = width * 0.33
326 | local tile_height = height * 0.5
327 | local titles_group = HorizontalGroup:new{
328 | align = "center",
329 | CenterContainer:new{
330 | dimen = Geom:new{ w = tile_width, h = tile_height },
331 | TextWidget:new{
332 | text = _("Days"),
333 | face = Font:getFace(ptutil.good_serif_bold, ptutil.bookstatus_defaults.metainfo_font_size),
334 | },
335 | },
336 | CenterContainer:new{
337 | dimen = Geom:new{ w = tile_width, h = tile_height },
338 | TextWidget:new{
339 | text = _("Time"),
340 | face = Font:getFace(ptutil.good_serif_bold, ptutil.bookstatus_defaults.metainfo_font_size),
341 | },
342 | },
343 | CenterContainer:new{
344 | dimen = Geom:new{ w = tile_width, h = tile_height },
345 | TextWidget:new{
346 | text = _("Read pages"),
347 | face = Font:getFace(ptutil.good_serif_bold, ptutil.bookstatus_defaults.metainfo_font_size),
348 | }
349 | }
350 | }
351 | local data_group = HorizontalGroup:new{
352 | align = "center",
353 | CenterContainer:new{
354 | dimen = Geom:new{ w = tile_width, h = tile_height },
355 | TextWidget:new{
356 | text = self:getStatDays(),
357 | face = Font:getFace(ptutil.good_serif, ptutil.bookstatus_defaults.metainfo_font_size),
358 | fgcolor = Blitbuffer.COLOR_GRAY_2,
359 | },
360 | },
361 | CenterContainer:new{
362 | dimen = Geom:new{ w = tile_width, h = tile_height },
363 | TextWidget:new{
364 | text = self:getStatHours(),
365 | face = Font:getFace(ptutil.good_serif, ptutil.bookstatus_defaults.metainfo_font_size),
366 | fgcolor = Blitbuffer.COLOR_GRAY_2,
367 | },
368 | },
369 | CenterContainer:new{
370 | dimen = Geom:new{ w = tile_width, h = tile_height },
371 | TextWidget:new{
372 | text = self:getStatReadPages(),
373 | face = Font:getFace(ptutil.good_serif, ptutil.bookstatus_defaults.metainfo_font_size),
374 | fgcolor = Blitbuffer.COLOR_GRAY_2,
375 | }
376 | }
377 | }
378 | table.insert(statistics_group, titles_group)
379 | table.insert(statistics_group, data_group)
380 | table.insert(statistics_container, statistics_group)
381 | return statistics_container
382 | end
383 |
384 | function AltBookStatusWidget:genSummaryGroup(width)
385 | local screen_height = Screen:getHeight()
386 | local height = screen_height * 0.35
387 | if Screen:getScreenMode() == "landscape" then
388 | height = height * 0.85
389 | end
390 |
391 | local html_contents = ""
392 | local props = self.ui.doc_props
393 | if props.description then
394 | html_contents = "