From 08619b2ef2217b81398b1d43eeb8ea83edbb4038 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aliberk=20Sand=C4=B1k=C3=A7=C4=B1?= Date: Fri, 21 Jun 2024 20:39:24 +0300 Subject: [PATCH] Ders 4 --- .gitignore | 2 +- po/compile_translations.sh | 1 + po/en_US.po | 68 ++++++++++++++++++++++++++++++++++++++ po/files | 1 + po/generate_pot_file.sh | 2 ++ po/gtk4py.pot | 66 ++++++++++++++++++++++++++++++++++++ src/MainWindow.py | 65 ++++++++++++++++++++---------------- 7 files changed, 175 insertions(+), 30 deletions(-) create mode 100755 po/compile_translations.sh create mode 100644 po/en_US.po create mode 100644 po/files create mode 100755 po/generate_pot_file.sh create mode 100644 po/gtk4py.pot diff --git a/.gitignore b/.gitignore index 5d381cc..f0cb1a7 100644 --- a/.gitignore +++ b/.gitignore @@ -54,7 +54,7 @@ cover/ # Translations *.mo -*.pot +# *.pot # Django stuff: *.log diff --git a/po/compile_translations.sh b/po/compile_translations.sh new file mode 100755 index 0000000..493ef8d --- /dev/null +++ b/po/compile_translations.sh @@ -0,0 +1 @@ +msgfmt en_US.po -o en_US.mo \ No newline at end of file diff --git a/po/en_US.po b/po/en_US.po new file mode 100644 index 0000000..0a62110 --- /dev/null +++ b/po/en_US.po @@ -0,0 +1,68 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# FULL NAME , 2024. +# rstrstrstrst , 2024. +# +msgid "" +msgstr "" +"Project-Id-Version: 1.0.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-06-21 19:25+0300\n" +"PO-Revision-Date: 2024-06-21 19:33+0300\n" +"Last-Translator: rstrstrstrst \n" +"Language-Team: LANGUAGE \n" +"Language: en_US\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Gtranslator 46.1\n" + +#: ../src/MainWindow.py:54 +msgid "Metin Editörü" +msgstr "Text Editor" + +#: ../src/MainWindow.py:61 +msgid "Yeni Doküman" +msgstr "New Document" + +#: ../src/MainWindow.py:67 ../src/MainWindow.py:135 +msgid "Dosya Aç" +msgstr "Open File" + +#: ../src/MainWindow.py:73 +msgid "Kaydet" +msgstr "Save" + +#: ../src/MainWindow.py:79 +msgid "Farklı Kaydet" +msgstr "Save As" + +#: ../src/MainWindow.py:94 +msgid "Seçenekler" +msgstr "Preferences" + +#: ../src/MainWindow.py:130 +msgid "Yeni Dosya" +msgstr "New File" + +#: ../src/MainWindow.py:138 +msgid "_Aç" +msgstr "_Open" + +#: ../src/MainWindow.py:139 +msgid "_İptal" +msgstr "_Cancel" + +#: ../src/MainWindow.py:172 +msgid "Dosyayı Kaydet" +msgstr "Save File" + +#: ../src/MainWindow.py:175 +msgid "_Save" +msgstr "_Save" + +#: ../src/MainWindow.py:176 +msgid "_Cancel" +msgstr "_Cancels" diff --git a/po/files b/po/files new file mode 100644 index 0000000..8daffc0 --- /dev/null +++ b/po/files @@ -0,0 +1 @@ +../src/MainWindow.py \ No newline at end of file diff --git a/po/generate_pot_file.sh b/po/generate_pot_file.sh new file mode 100755 index 0000000..7305f3c --- /dev/null +++ b/po/generate_pot_file.sh @@ -0,0 +1,2 @@ +cd $(dirname "$0") +xgettext --files-from=files --language=Python -o gtk4py.pot \ No newline at end of file diff --git a/po/gtk4py.pot b/po/gtk4py.pot new file mode 100644 index 0000000..3167315 --- /dev/null +++ b/po/gtk4py.pot @@ -0,0 +1,66 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-06-21 19:25+0300\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ../src/MainWindow.py:54 +msgid "Metin Editörü" +msgstr "" + +#: ../src/MainWindow.py:61 +msgid "Yeni Doküman" +msgstr "" + +#: ../src/MainWindow.py:67 ../src/MainWindow.py:135 +msgid "Dosya Aç" +msgstr "" + +#: ../src/MainWindow.py:73 +msgid "Kaydet" +msgstr "" + +#: ../src/MainWindow.py:79 +msgid "Farklı Kaydet" +msgstr "" + +#: ../src/MainWindow.py:94 +msgid "Seçenekler" +msgstr "" + +#: ../src/MainWindow.py:130 +msgid "Yeni Dosya" +msgstr "" + +#: ../src/MainWindow.py:138 +msgid "_Aç" +msgstr "" + +#: ../src/MainWindow.py:139 +msgid "_İptal" +msgstr "" + +#: ../src/MainWindow.py:172 +msgid "Dosyayı Kaydet" +msgstr "" + +#: ../src/MainWindow.py:175 +msgid "_Save" +msgstr "" + +#: ../src/MainWindow.py:176 +msgid "_Cancel" +msgstr "" diff --git a/src/MainWindow.py b/src/MainWindow.py index 1846672..4557129 100644 --- a/src/MainWindow.py +++ b/src/MainWindow.py @@ -1,9 +1,19 @@ import gi, sys -gi.require_version('Gtk', '4.0') + +gi.require_version("Gtk", "4.0") from gi.repository import Gtk, Gio import FileOperations +import locale +from locale import gettext as _ + +APPNAME = "gtk4py" +TRANSLATIONS_PATH = "/usr/share/locale" +locale.bindtextdomain(APPNAME, TRANSLATIONS_PATH) +locale.textdomain(APPNAME) + + class MainWindow(Gtk.ApplicationWindow): def __init__(self, app): super().__init__(application=app) @@ -22,7 +32,6 @@ class MainWindow(Gtk.ApplicationWindow): def setup_variables(self): self._current_working_file = None - def setup_actions(self): new_action = Gio.SimpleAction(name="new") new_action.connect("activate", self.on_action_win_new_activated) @@ -33,43 +42,41 @@ class MainWindow(Gtk.ApplicationWindow): self.add_action(open_action) save_action = Gio.SimpleAction(name="save") - save_action.connect("activate" , self.on_action_win_save_activated) + save_action.connect("activate", self.on_action_win_save_activated) self.add_action(save_action) save_as_action = Gio.SimpleAction(name="save-as") save_as_action.connect("activate", self.on_action_win_save_as_activated) self.add_action(save_as_action) - - def setup_window(self): self.set_default_size(600, 400) - self.set_title("Metin Editörü") + self.set_title(_("Metin Editörü")) def setup_headerbar(self): btn_new = Gtk.Button( label="New", action_name="win.new", icon_name="document-new-symbolic", - tooltip_text="Yeni Doküman" + tooltip_text=_("Yeni Doküman"), ) btn_open = Gtk.Button( label="Open", action_name="win.open", icon_name="document-open-symbolic", - tooltip_text="Dosya Aç" + tooltip_text=_("Dosya Aç"), ) btn_save = Gtk.Button( label="Save", action_name="win.save", icon_name="document-save-symbolic", - tooltip_text="Kaydet" + tooltip_text=_("Kaydet"), ) btn_save_as = Gtk.Button( label="Save As", action_name="win.save-as", icon_name="document-save-as-symbolic", - tooltip_text="Farklı Kaydet" + tooltip_text=_("Farklı Kaydet"), ) box = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL) @@ -81,7 +88,11 @@ class MainWindow(Gtk.ApplicationWindow): headerbar = Gtk.HeaderBar() headerbar.pack_start(box) - btn_preferences = Gtk.Button(label="Preferences", icon_name="open-menu-symbolic", tooltip_text="Seçenekler") + btn_preferences = Gtk.Button( + label="Preferences", + icon_name="open-menu-symbolic", + tooltip_text=_("Seçenekler"), + ) box = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL) box.append(btn_preferences) headerbar.pack_end(box) @@ -89,11 +100,8 @@ class MainWindow(Gtk.ApplicationWindow): self.set_titlebar(headerbar) def setup_ui(self): - self.text_view = Gtk.TextView ( - monospace=True, - left_margin=5, - right_margin=5, - top_margin=5 + self.text_view = Gtk.TextView( + monospace=True, left_margin=5, right_margin=5, top_margin=5 ) scrolled_window = Gtk.ScrolledWindow(child=self.text_view) @@ -116,20 +124,19 @@ class MainWindow(Gtk.ApplicationWindow): start = buffer.get_start_iter() buffer.place_cursor(start) - # == CALLBACKS == def on_action_win_new_activated(self, action, params): self.set_textview_text("") - self.set_title("New File") + self.set_title(_("Yeni Dosya")) self._current_working_file = None def on_action_win_open_activated(self, action, params): - self._open_file_chooser = Gtk.FileChooserNative ( - title="Open File", + self._open_file_chooser = Gtk.FileChooserNative( + title=_("Dosya Aç"), transient_for=self, action=Gtk.FileChooserAction.OPEN, - accept_label="_Open", - cancel_label="_Cancel" + accept_label=_("_Aç"), + cancel_label=_("_İptal"), ) self._open_file_chooser.connect("response", self.on_open_dialog_response) @@ -154,17 +161,19 @@ class MainWindow(Gtk.ApplicationWindow): def on_action_win_save_activated(self, action, params): if self._current_working_file: text = self.get_textview_text() - FileOperations.save_file(self._current_working_file, text, self.on_file_saved) + FileOperations.save_file( + self._current_working_file, text, self.on_file_saved + ) else: self.activate_action("win.save-as") def on_action_win_save_as_activated(self, action, params): - self._save_file_chooser = Gtk.FileChooserNative ( - title="Save File", + self._save_file_chooser = Gtk.FileChooserNative( + title=_("Dosyayı Kaydet"), transient_for=self, action=Gtk.FileChooserAction.SAVE, - accept_label="_Save", - cancel_label="_Cancel" + accept_label=_("_Save"), + cancel_label=_("_Cancel"), ) self._save_file_chooser.connect("response", self.on_save_dialog_response) @@ -183,5 +192,3 @@ class MainWindow(Gtk.ApplicationWindow): filename = FileOperations.get_name(file) self.set_title(filename) self._current_working_file = file - -