Implement code for internationalization
This commit is contained in:
parent
708841f9f5
commit
0c91ac7367
@ -16,6 +16,7 @@ import queue
|
|||||||
import threading
|
import threading
|
||||||
from typing import Tuple, Optional, List
|
from typing import Tuple, Optional, List
|
||||||
from urllib.parse import unquote
|
from urllib.parse import unquote
|
||||||
|
import gettext
|
||||||
|
|
||||||
import gi
|
import gi
|
||||||
gi.require_version('Nautilus', '3.0')
|
gi.require_version('Nautilus', '3.0')
|
||||||
@ -25,6 +26,8 @@ from gi.repository import Nautilus, GObject, Gtk, Gio, GLib, GdkPixbuf
|
|||||||
|
|
||||||
from libmat2 import parser_factory
|
from libmat2 import parser_factory
|
||||||
|
|
||||||
|
_ = gettext.gettext
|
||||||
|
|
||||||
|
|
||||||
def _remove_metadata(fpath) -> Tuple[bool, Optional[str]]:
|
def _remove_metadata(fpath) -> Tuple[bool, Optional[str]]:
|
||||||
""" This is a simple wrapper around libmat2, because it's
|
""" This is a simple wrapper around libmat2, because it's
|
||||||
@ -51,11 +54,11 @@ class Mat2Extension(GObject.GObject, Nautilus.MenuProvider, Nautilus.LocationWid
|
|||||||
self.infobar.set_show_close_button(True)
|
self.infobar.set_show_close_button(True)
|
||||||
self.infobar_hbox = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL)
|
self.infobar_hbox = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL)
|
||||||
|
|
||||||
btn = Gtk.Button("Show")
|
btn = Gtk.Button(_("Show"))
|
||||||
btn.connect("clicked", self.__cb_show_failed)
|
btn.connect("clicked", self.__cb_show_failed)
|
||||||
self.infobar_hbox.pack_end(btn, False, False, 0)
|
self.infobar_hbox.pack_end(btn, False, False, 0)
|
||||||
|
|
||||||
infobar_msg = Gtk.Label("Failed to clean some items")
|
infobar_msg = Gtk.Label(_("Failed to clean some items"))
|
||||||
self.infobar_hbox.pack_start(infobar_msg, False, False, 0)
|
self.infobar_hbox.pack_start(infobar_msg, False, False, 0)
|
||||||
|
|
||||||
self.infobar.get_content_area().pack_start(self.infobar_hbox, True, True, 0)
|
self.infobar.get_content_area().pack_start(self.infobar_hbox, True, True, 0)
|
||||||
@ -90,9 +93,9 @@ class Mat2Extension(GObject.GObject, Nautilus.MenuProvider, Nautilus.LocationWid
|
|||||||
window = Gtk.Window()
|
window = Gtk.Window()
|
||||||
headerbar = Gtk.HeaderBar()
|
headerbar = Gtk.HeaderBar()
|
||||||
window.set_titlebar(headerbar)
|
window.set_titlebar(headerbar)
|
||||||
headerbar.props.title = "Metadata removal failed"
|
headerbar.props.title = _("Metadata removal failed")
|
||||||
|
|
||||||
close_buton = Gtk.Button("Close")
|
close_buton = Gtk.Button(_("Close"))
|
||||||
close_buton.connect("clicked", lambda _: window.close())
|
close_buton.connect("clicked", lambda _: window.close())
|
||||||
headerbar.pack_end(close_buton)
|
headerbar.pack_end(close_buton)
|
||||||
|
|
||||||
@ -107,9 +110,9 @@ class Mat2Extension(GObject.GObject, Nautilus.MenuProvider, Nautilus.LocationWid
|
|||||||
""" Validate if a given file FileInfo `fileinfo` can be processed.
|
""" Validate if a given file FileInfo `fileinfo` can be processed.
|
||||||
Returns a boolean, and a textreason why"""
|
Returns a boolean, and a textreason why"""
|
||||||
if fileinfo.get_uri_scheme() != "file" or fileinfo.is_directory():
|
if fileinfo.get_uri_scheme() != "file" or fileinfo.is_directory():
|
||||||
return False, "Not a file"
|
return False, _("Not a file")
|
||||||
elif not fileinfo.can_write():
|
elif not fileinfo.can_write():
|
||||||
return False, "Not writeable"
|
return False, _("Not writeable")
|
||||||
return True, ""
|
return True, ""
|
||||||
|
|
||||||
def __create_treeview(self) -> Gtk.TreeView:
|
def __create_treeview(self) -> Gtk.TreeView:
|
||||||
@ -120,7 +123,7 @@ class Mat2Extension(GObject.GObject, Nautilus.MenuProvider, Nautilus.LocationWid
|
|||||||
column_pixbuf = Gtk.TreeViewColumn("Icon", renderer_pixbuf, pixbuf=0)
|
column_pixbuf = Gtk.TreeViewColumn("Icon", renderer_pixbuf, pixbuf=0)
|
||||||
treeview.append_column(column_pixbuf)
|
treeview.append_column(column_pixbuf)
|
||||||
|
|
||||||
for idx, name in enumerate(['File', 'Reason']):
|
for idx, name in enumerate([_('File'), _('Reason')]):
|
||||||
renderer_text = Gtk.CellRendererText()
|
renderer_text = Gtk.CellRendererText()
|
||||||
column_text = Gtk.TreeViewColumn(name, renderer_text, text=idx+1)
|
column_text = Gtk.TreeViewColumn(name, renderer_text, text=idx+1)
|
||||||
treeview.append_column(column_text)
|
treeview.append_column(column_text)
|
||||||
@ -180,7 +183,7 @@ class Mat2Extension(GObject.GObject, Nautilus.MenuProvider, Nautilus.LocationWid
|
|||||||
return False
|
return False
|
||||||
|
|
||||||
progressbar.pulse()
|
progressbar.pulse()
|
||||||
progressbar.set_text("Cleaning %s" % fname)
|
progressbar.set_text(_("Cleaning %s") % fname)
|
||||||
progressbar.show_all()
|
progressbar.show_all()
|
||||||
self.infobar_hbox.show_all()
|
self.infobar_hbox.show_all()
|
||||||
self.infobar.show_all()
|
self.infobar.show_all()
|
||||||
@ -202,7 +205,7 @@ class Mat2Extension(GObject.GObject, Nautilus.MenuProvider, Nautilus.LocationWid
|
|||||||
fpath = unquote(fileinfo.get_uri()[7:]) # `len('file://') = 7`
|
fpath = unquote(fileinfo.get_uri()[7:]) # `len('file://') = 7`
|
||||||
success, mtype = _remove_metadata(fpath)
|
success, mtype = _remove_metadata(fpath)
|
||||||
if not success:
|
if not success:
|
||||||
self.failed_items.append((fname, mtype, 'Unsupported/invalid'))
|
self.failed_items.append((fname, mtype, _('Unsupported/invalid')))
|
||||||
processing_queue.put(None) # signal that we processed all the files
|
processing_queue.put(None) # signal that we processed all the files
|
||||||
return True
|
return True
|
||||||
|
|
||||||
@ -236,8 +239,8 @@ class Mat2Extension(GObject.GObject, Nautilus.MenuProvider, Nautilus.LocationWid
|
|||||||
|
|
||||||
item = Nautilus.MenuItem(
|
item = Nautilus.MenuItem(
|
||||||
name="mat2::Remove_metadata",
|
name="mat2::Remove_metadata",
|
||||||
label="Remove metadata",
|
label=_("Remove metadata"),
|
||||||
tip="Remove metadata"
|
tip=_("Remove metadata")
|
||||||
)
|
)
|
||||||
item.connect('activate', self.__cb_menu_activate, files)
|
item.connect('activate', self.__cb_menu_activate, files)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user