diff --git a/frontend/apps/filemanager/filemanagermenu.lua b/frontend/apps/filemanager/filemanagermenu.lua index 8b4c668d5..64af5d676 100644 --- a/frontend/apps/filemanager/filemanagermenu.lua +++ b/frontend/apps/filemanager/filemanagermenu.lua @@ -8,6 +8,7 @@ local Device = require("ui/device") local GestureRange = require("ui/gesturerange") local Geom = require("ui/geometry") local Screen = require("ui/screen") +local Language = require("ui/language") local _ = require("gettext") local FileManagerMenu = InputContainer:extend{ @@ -85,6 +86,7 @@ function FileManagerMenu:setUpdateItemTable() }) end }) + table.insert(self.tab_item_table.main, Language:getLangMenuTable()) end function FileManagerMenu:onShowMenu() diff --git a/frontend/ui/language.lua b/frontend/ui/language.lua new file mode 100644 index 000000000..db6a62c6f --- /dev/null +++ b/frontend/ui/language.lua @@ -0,0 +1,53 @@ +-- high level wrapper module for gettext + +local UIManager = require("ui/uimanager") +local InfoMessage = require("ui/widget/infomessage") +local _ = require("gettext") + +Language = {} + +function Language:changeLanguage(lang_po) + _.changeLang(lang_po) + G_reader_settings:saveSetting("language_po", lang_po) + UIManager:show(InfoMessage:new{ + text = _("Please restart reader for new language setting to take effect."), + timeout = 3, + }) +end + +function Language:genLanguageSubItem(lang, lang_po) + return { + text = lang, + callback = function() + self:changeLanguage(lang_po) + end + } +end + +function Language:getLangMenuTable() + -- cache menu table + if not self.LangMenuTable then + self.LangMenuTable = { + text = _("Language"), + -- NOTE: language with no translation are commented out for now + sub_item_table = { + self:genLanguageSubItem("English", ""), + self:genLanguageSubItem("čeština", "cs_CZ"), + self:genLanguageSubItem("Deutsch", "de"), + self:genLanguageSubItem("français", "fr"), + --self:genLanguageSubItem("magyar", "hu"), + self:genLanguageSubItem("Italiano", "it_IT"), + self:genLanguageSubItem("język polski", "pl"), + self:genLanguageSubItem("Português do Brasil", "pt_BR"), + self:genLanguageSubItem("Русский язык", "ru"), + --self:genLanguageSubItem("svenska", "sv"), + self:genLanguageSubItem("Türkçe", "tr"), + --self:genLanguageSubItem("Tiếng Việt", "vi"), + self:genLanguageSubItem("简体中文", "zh_CN"), + } + } + end + return self.LangMenuTable +end + +return Language diff --git a/frontend/ui/reader/readermenu.lua b/frontend/ui/reader/readermenu.lua index 243c26d0d..d41ff313c 100644 --- a/frontend/ui/reader/readermenu.lua +++ b/frontend/ui/reader/readermenu.lua @@ -9,6 +9,7 @@ local Event = require("ui/event") local Screen = require("ui/screen") local Menu = require("ui/widget/menu") local InfoMessage = require("ui/widget/infomessage") +local Language = require("ui/language") local _ = require("gettext") local ReaderMenu = InputContainer:new{ @@ -66,6 +67,7 @@ function ReaderMenu:setUpdateItemTable() for _, widget in pairs(self.registered_widgets) do widget:addToMainMenu(self.tab_item_table) end + table.insert(self.tab_item_table.main, { text = _("Help"), callback = function() @@ -82,6 +84,7 @@ function ReaderMenu:setUpdateItemTable() }) end }) + table.insert(self.tab_item_table.main, Language:getLangMenuTable()) end function ReaderMenu:onShowReaderMenu() diff --git a/reader.lua b/reader.lua index 8928a8b01..965f355c7 100755 --- a/reader.lua +++ b/reader.lua @@ -154,13 +154,20 @@ if Device:hasNoKeyboard() then Menu.is_enable_shortcut = false end --- set up reader's setting: font +-- read some global reader setting here: G_reader_settings = DocSettings:open(".reader") -fontmap = G_reader_settings:readSetting("fontmap") +-- font +local fontmap = G_reader_settings:readSetting("fontmap") if fontmap ~= nil then Font.fontmap = fontmap end +-- last file local last_file = G_reader_settings:readSetting("lastfile") +-- language +local lang_po = G_reader_settings:readSetting("language_po") +if lang_po then + _.changeLang(lang_po) +end --@TODO we can read version here, refer to commit in master tree: (houqp)