[gst-debugger] gst-debugger: add gettext support



commit 194593c5befc5de7eca470461d1b4fdb4ba4edc7
Author: Marcin Kolny <marcin kolny gmail com>
Date:   Fri Oct 9 10:31:34 2015 +0200

    gst-debugger: add gettext support

 .gitignore                                         |   10 ++++++
 Makefile.am                                        |   12 +++++++-
 autogen.sh                                         |    3 +-
 configure.ac                                       |   14 ++++++++-
 po/LINGUAS                                         |    3 ++
 po/POTFILES.in                                     |   22 +++++++++++++
 po/POTFILES.skip                                   |    1 +
 src/gst-debugger/Makefile.am                       |    2 +-
 src/gst-debugger/controller/tcp_client.cpp         |    7 +++-
 .../dialogs/connection_properties_dialog.cpp       |    7 ++--
 src/gst-debugger/dialogs/enums_dialog.cpp          |   10 ++++--
 src/gst-debugger/dialogs/factories_dialog.cpp      |   10 ++++--
 src/gst-debugger/dialogs/klasses_dialog.cpp        |   18 ++++++-----
 src/gst-debugger/gvalue-converter/gvalue_enum.cpp  |    6 ++-
 src/gst-debugger/gvalue-converter/gvalue_flags.cpp |    6 ++-
 .../gvalue-converter/gvalue_unknown.cpp            |    5 ++-
 src/gst-debugger/main.cpp                          |    8 +++++
 src/gst-debugger/main_window.cpp                   |   10 ++++--
 src/gst-debugger/modules/base_main_module.cpp      |    6 ++-
 src/gst-debugger/modules/buffer_module.cpp         |   30 ++++++++++--------
 src/gst-debugger/modules/event_module.cpp          |   14 +++++----
 src/gst-debugger/modules/gst_properties_module.cpp |   22 +++++++------
 src/gst-debugger/modules/log_module.cpp            |   32 ++++++++++---------
 src/gst-debugger/modules/message_module.cpp        |   18 ++++++-----
 src/gst-debugger/modules/query_module.cpp          |   10 ++++--
 src/gst-debugger/pipeline-drawer/graph_module.cpp  |    6 ++-
 src/gst-debugger/ui/gst-debugger-dialogs.glade     |   14 +++++---
 src/gst-debugger/ui_utils.cpp                      |   18 ++++++-----
 28 files changed, 216 insertions(+), 108 deletions(-)
---
diff --git a/.gitignore b/.gitignore
index 6d104f3..fd8c8f5 100644
--- a/.gitignore
+++ b/.gitignore
@@ -54,3 +54,13 @@ Makefile
 /src/common/gstdebugger.pb.cc
 /src/common/gstdebugger.pb.h
 /src/common/libgst-debugger-common-0.1.pc
+
+# intltool/gettext
+*.gmo
+/build/glib-gettext.m4
+/build/nls.m4
+/build/pkg.m4
+/intltool-*.in
+/po/Makefile.in.in
+/po/stamp-it
+/po/POTFILES
\ No newline at end of file
diff --git a/Makefile.am b/Makefile.am
index 7de9d79..6ebba49 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1,8 +1,18 @@
 ACLOCAL_AMFLAGS = -I build -I common/m4
 
-SUBDIRS = src
+SUBDIRS = src po
+
+INTLTOOL_FILES = intltool-extract.in \
+                 intltool-merge.in \
+                 intltool-update.in
 
 dist_noinst_SCRIPTS = autogen.sh
 
 # Auto-generate the ChangeLog file from the git log on make dist
 include $(top_srcdir)/build/dist-changelog.am
+
+EXTRA_DIST = $(INTLTOOL_FILES)
+DISTCLEANFILES = intltool-extract \
+                 intltool-merge \
+                 intltool-update \
+                 po/.intltool-merge-cache
diff --git a/autogen.sh b/autogen.sh
index e31cb61..4597dc2 100755
--- a/autogen.sh
+++ b/autogen.sh
@@ -37,7 +37,8 @@ fi
 
 set -x
 
-#intltoolize --force --copy --automake || exit 1 todo
+aclocal --install || exit 1
+intltoolize --force --copy --automake || exit 1
 autoreconf --verbose --force --install -Wno-portability || exit 1
 automake --add-missing --copy >/dev/null 2>&1
 
diff --git a/configure.ac b/configure.ac
index 062e9d6..6a3535c 100644
--- a/configure.ac
+++ b/configure.ac
@@ -4,7 +4,7 @@ AC_INIT([gst-debugger], [0.90.0],
 
 AC_PREREQ([2.59])
 
-AC_CONFIG_MACRO_DIR([build])]
+AC_CONFIG_MACRO_DIR([build])
 AC_SUBST(ACLOCAL_AMFLAGS, "-I build -I common/m4")
 AC_CONFIG_HEADERS([src/config.h])
 
@@ -49,6 +49,7 @@ AG_GST_SET_PLUGINDIR
 
 AC_CONFIG_FILES([
        Makefile 
+       po/Makefile.in
        src/Makefile
        src/debugserver/Makefile
        src/gst-debugger/Makefile
@@ -62,6 +63,17 @@ AC_PROG_INSTALL
 AC_LIBTOOL_DLOPEN
 AC_PROG_LIBTOOL
 
+IT_PROG_INTLTOOL([0.35.0])
+
+GETTEXT_PACKAGE=gst-debugger
+AC_SUBST(GETTEXT_PACKAGE)
+AC_DEFINE_UNQUOTED([GETTEXT_PACKAGE], ["$GETTEXT_PACKAGE"],
+                   [The domain to use with gettext])
+AM_GLIB_GNU_GETTEXT
+
+GST_DEBUGGER_LOCALEDIR=[${datadir}/locale]
+AC_SUBST(GST_DEBUGGER_LOCALEDIR)
+
 AC_CHECK_PROG([PROTOC], [protoc], [protoc])
 AS_IF([test "x${PROTOC}" == "x"],
     [AC_MSG_ERROR([ProtoBuf compiler "protoc" not found.])])
diff --git a/po/LINGUAS b/po/LINGUAS
new file mode 100644
index 0000000..f7eed2b
--- /dev/null
+++ b/po/LINGUAS
@@ -0,0 +1,3 @@
+# please keep this list sorted alphabetically, one locale per line
+#
+
diff --git a/po/POTFILES.in b/po/POTFILES.in
new file mode 100644
index 0000000..278cb60
--- /dev/null
+++ b/po/POTFILES.in
@@ -0,0 +1,22 @@
+src/gst-debugger/main.cpp
+src/gst-debugger/main_window.cpp
+src/gst-debugger/ui_utils.cpp
+src/gst-debugger/dialogs/klasses_dialog.cpp
+src/gst-debugger/dialogs/factories_dialog.cpp
+src/gst-debugger/dialogs/enums_dialog.cpp
+src/gst-debugger/modules/base_main_module.cpp
+src/gst-debugger/dialogs/buffer_data_dialog.cpp
+src/gst-debugger/modules/gst_properties_module.cpp
+src/gst-debugger/dialogs/connection_properties_dialog.cpp
+src/gst-debugger/modules/event_module.cpp
+src/gst-debugger/modules/query_module.cpp
+src/gst-debugger/modules/buffer_module.cpp
+src/gst-debugger/modules/message_module.cpp
+src/gst-debugger/modules/log_module.cpp
+src/gst-debugger/controller/tcp_client.cpp
+src/gst-debugger/pipeline-drawer/graph_module.cpp
+src/gst-debugger/gvalue-converter/gvalue_flags.cpp
+src/gst-debugger/gvalue-converter/gvalue_enum.cpp
+src/gst-debugger/gvalue-converter/gvalue_unknown.cpp
+[type: gettext/glade]src/gst-debugger/ui/gst-debugger.glade
+[type: gettext/glade]src/gst-debugger/ui/gst-debugger-dialogs.glade
diff --git a/po/POTFILES.skip b/po/POTFILES.skip
new file mode 100644
index 0000000..30f1876
--- /dev/null
+++ b/po/POTFILES.skip
@@ -0,0 +1 @@
+src/gst-debugger/ui/gst-debugger-dialogs.glade
\ No newline at end of file
diff --git a/src/gst-debugger/Makefile.am b/src/gst-debugger/Makefile.am
index 31ee0f5..9e086da 100644
--- a/src/gst-debugger/Makefile.am
+++ b/src/gst-debugger/Makefile.am
@@ -97,6 +97,6 @@ gst_debugger_ GST_API_VERSION@_SOURCES =              \
 
 gst_debugger_ GST_API_VERSION@_LDFLAGS = $(GTKMM_LIBS) $(GSTMM_LIBS) $(GVC_LIBS) $(PROTOBUF_LIBS) -lX11
 gst_debugger_ GST_API_VERSION@_LDADD = ../common/libgst-debugger-common-cpp- GST_DEBUGGER_API_VERSION@.la
-gst_debugger_ GST_API_VERSION@_CXXFLAGS = $(GTKMM_CFLAGS) $(GSTMM_CFLAGS) $(GVC_CFLAGS)
+gst_debugger_ GST_API_VERSION@_CXXFLAGS = $(GTKMM_CFLAGS) $(GSTMM_CFLAGS) $(GVC_CFLAGS) 
-DGST_DEBUGGER_LOCALEDIR=\"${GST_DEBUGGER_LOCALEDIR}\"
 gst_debugger_ GST_API_VERSION@_CPPFLAGS = $(GVC_CFLAGS) -I$(top_srcdir)/src/
 gst_debugger_ GST_API_VERSION@_CFLAGS = $(GIO_CFLAGS) $(GTK_CFLAGS)
diff --git a/src/gst-debugger/controller/tcp_client.cpp b/src/gst-debugger/controller/tcp_client.cpp
index 9e2d9f6..2852a5f 100644
--- a/src/gst-debugger/controller/tcp_client.cpp
+++ b/src/gst-debugger/controller/tcp_client.cpp
@@ -7,9 +7,12 @@
 
 #include "tcp_client.h"
 
-#include <cassert>
 #include "../../common/protocol-utils.h"
 
+#include <glibmm/i18n.h>
+
+#include <cassert>
+
 bool TcpClient::connect(const std::string &address, int port)
 {
        try
@@ -87,7 +90,7 @@ void TcpClient::write_data(char *data, int size)
 void TcpClient::send_command(const GstDebugger::Command &cmd)
 {
        if (!is_connected())
-               throw Gio::Error(Gio::Error::FAILED, "No connection!");
+               throw Gio::Error(Gio::Error::FAILED, _("Client isn't connected to a server!"));
 
        gst_debugger_protocol_write_header(connection->get_output_stream()->gobj(), cmd.ByteSize());
        cmd.SerializeToFileDescriptor(connection->get_socket()->get_fd());
diff --git a/src/gst-debugger/dialogs/connection_properties_dialog.cpp 
b/src/gst-debugger/dialogs/connection_properties_dialog.cpp
index d16f4a7..7609546 100644
--- a/src/gst-debugger/dialogs/connection_properties_dialog.cpp
+++ b/src/gst-debugger/dialogs/connection_properties_dialog.cpp
@@ -7,6 +7,7 @@
 
 #include "connection_properties_dialog.h"
 
+#include <glibmm/i18n.h>
 #include <giomm.h>
 
 #include <string>
@@ -32,8 +33,8 @@ void ConnectionPropertiesDialog::pingButton_click_cb()
                auto connection = client->connect_to_host(get_ip_address(), get_port());
                if (connection->is_connected())
                {
-                       Gtk::MessageDialog dialog("Info");
-                       dialog.set_secondary_text("PING OK!");
+                       Gtk::MessageDialog dialog(_("Info"));
+                       dialog.set_secondary_text(_("PING OK!"));
                        dialog.run();
                        connection->close();
                }
@@ -43,7 +44,7 @@ void ConnectionPropertiesDialog::pingButton_click_cb()
        catch(const Gio::Error&)
        {
                Gtk::MessageDialog dialog("Info", false, Gtk::MESSAGE_ERROR);
-               dialog.set_secondary_text("Server doesn't response");
+               dialog.set_secondary_text(_("Server doesn't response"));
                dialog.run();
        }
 }
diff --git a/src/gst-debugger/dialogs/enums_dialog.cpp b/src/gst-debugger/dialogs/enums_dialog.cpp
index 6407a73..d5b9307 100644
--- a/src/gst-debugger/dialogs/enums_dialog.cpp
+++ b/src/gst-debugger/dialogs/enums_dialog.cpp
@@ -11,16 +11,18 @@
 
 #include "controller/controller.h"
 
+#include <glibmm/i18n.h>
+
 EnumsDialog::EnumsDialog(BaseObjectType* cobject, const Glib::RefPtr<Gtk::Builder>& builder)
 : RemoteDataDialog(cobject, builder)
 {
        tree_model = Gtk::TreeStore::create(enums_columns);
        data_tree_view->set_model(tree_model);
-       data_tree_view->append_column("Name", enums_columns.m_col_name);
-       data_tree_view->append_column("Value", enums_columns.m_col_value);
-       data_tree_view->append_column("Description", enums_columns.m_col_description);
+       data_tree_view->append_column(_("Name"), enums_columns.m_col_name);
+       data_tree_view->append_column(_("Value"), enums_columns.m_col_value);
+       data_tree_view->append_column(_("Description"), enums_columns.m_col_description);
 
-       set_title("Remote Enum Types");
+       set_title(_("Remote Enum Types"));
 }
 
 void EnumsDialog::set_controller(const std::shared_ptr<Controller> &controller)
diff --git a/src/gst-debugger/dialogs/factories_dialog.cpp b/src/gst-debugger/dialogs/factories_dialog.cpp
index c397fbf..d0047e7 100644
--- a/src/gst-debugger/dialogs/factories_dialog.cpp
+++ b/src/gst-debugger/dialogs/factories_dialog.cpp
@@ -10,15 +10,17 @@
 
 #include "controller/controller.h"
 
+#include <glibmm/i18n.h>
+
 FactoriesDialog::FactoriesDialog(BaseObjectType* cobject, const Glib::RefPtr<Gtk::Builder>& builder)
 : RemoteDataDialog(cobject, builder)
 {
        tree_model = Gtk::TreeStore::create(factories_columns);
        data_tree_view->set_model(tree_model);
-       data_tree_view->append_column("Property", factories_columns.m_col_name);
-       data_tree_view->append_column("Value", factories_columns.m_col_value);
+       data_tree_view->append_column(_("Property"), factories_columns.m_col_name);
+       data_tree_view->append_column(_("Value"), factories_columns.m_col_value);
 
-       set_title("Remote Factories");
+       set_title(_("Remote Factories"));
 }
 
 void FactoriesDialog::set_controller(const std::shared_ptr<Controller> &controller)
@@ -53,7 +55,7 @@ void FactoriesDialog::reload_list(const Glib::ustring &factory_name, bool add)
                        APPEND_SUB_ROW(meta.first, meta.second, row);
                }
 
-               auto tpl_row = APPEND_SUB_ROW("Pad templates", "", row);
+               auto tpl_row = APPEND_SUB_ROW(_("Pad templates"), "", row);
 
                for (auto tpl : factory.get_pad_templates())
                {
diff --git a/src/gst-debugger/dialogs/klasses_dialog.cpp b/src/gst-debugger/dialogs/klasses_dialog.cpp
index b9ed822..d38fe2f 100644
--- a/src/gst-debugger/dialogs/klasses_dialog.cpp
+++ b/src/gst-debugger/dialogs/klasses_dialog.cpp
@@ -10,6 +10,8 @@
 
 #include "controller/controller.h"
 
+#include <glibmm/i18n.h>
+
 #include <map>
 
 KlassesDialog::KlassesDialog(BaseObjectType* cobject, const Glib::RefPtr<Gtk::Builder>& builder)
@@ -17,8 +19,8 @@ KlassesDialog::KlassesDialog(BaseObjectType* cobject, const Glib::RefPtr<Gtk::Bu
 {
        tree_model = Gtk::TreeStore::create(klasses_columns);
        data_tree_view->set_model(tree_model);
-       data_tree_view->append_column("Property", klasses_columns.m_col_name);
-       data_tree_view->append_column("Value", klasses_columns.m_col_value);
+       data_tree_view->append_column(_("Property"), klasses_columns.m_col_name);
+       data_tree_view->append_column(_("Value"), klasses_columns.m_col_value);
 
        set_title("Remote Factories");
 }
@@ -58,7 +60,7 @@ std::string KlassesDialog::g_param_flags_to_string(GParamFlags v)
 
        std::string str;
        bool first = false;
-       if (values.empty()) str = "none";
+       if (values.empty()) str = _("none");
        for (auto value : values)
        {
                if (value.first & v)
@@ -85,7 +87,7 @@ void KlassesDialog::reload_list(const Glib::ustring &klass_name, bool add)
                row[klasses_columns.m_col_value] = "";
 
                auto childrow = *(tree_model->append(row.children()));
-               childrow[klasses_columns.m_col_name] = "Properties";
+               childrow[klasses_columns.m_col_name] = _("Properties");
 
                for (auto property : klass.get_properties())
                {
@@ -93,10 +95,10 @@ void KlassesDialog::reload_list(const Glib::ustring &klass_name, bool add)
 
                        cr[klasses_columns.m_col_name] = property.get_name();
 
-                       APPEND_SUB_ROW(cr, "Nick", property.get_nick());
-                       APPEND_SUB_ROW(cr, "Blurb", property.get_blurb());
-                       APPEND_SUB_ROW(cr, "Flags", g_param_flags_to_string(property.get_flags()));
-                       APPEND_SUB_ROW(cr, "Default value", property.get_default_value()->to_string());
+                       APPEND_SUB_ROW(cr, _("Nick"), property.get_nick());
+                       APPEND_SUB_ROW(cr, _("Blurb"), property.get_blurb());
+                       APPEND_SUB_ROW(cr, _("Flags"), g_param_flags_to_string(property.get_flags()));
+                       APPEND_SUB_ROW(cr, _("Default value"), property.get_default_value()->to_string());
                }
        }
 }
diff --git a/src/gst-debugger/gvalue-converter/gvalue_enum.cpp 
b/src/gst-debugger/gvalue-converter/gvalue_enum.cpp
index 5fca979..dac4477 100644
--- a/src/gst-debugger/gvalue-converter/gvalue_enum.cpp
+++ b/src/gst-debugger/gvalue-converter/gvalue_enum.cpp
@@ -7,9 +7,11 @@
 
 #include "gvalue_enum.h"
 
-#include <glibmm.h>
 #include "../../common/gst-utils.h"
 
+#include <glibmm.h>
+#include <glibmm/i18n.h>
+
 GValueEnum::GValueEnum(GValue *gobj)
 : GValueBase(gobj)
 {}
@@ -24,7 +26,7 @@ std::string GValueEnum::to_string() const
        gint value = get_value();
        if (!type)
        {
-               return std::to_string(value) + " (press 'refresh' button)";
+               return std::to_string(value) + _(" (press 'refresh' button)"); // todo move somewhere else
        }
        try
        {
diff --git a/src/gst-debugger/gvalue-converter/gvalue_flags.cpp 
b/src/gst-debugger/gvalue-converter/gvalue_flags.cpp
index 6da7d7a..560527f 100644
--- a/src/gst-debugger/gvalue-converter/gvalue_flags.cpp
+++ b/src/gst-debugger/gvalue-converter/gvalue_flags.cpp
@@ -8,9 +8,11 @@
 #include "gvalue_flags.h"
 #include "ui_utils.h"
 
-#include <glibmm.h>
 #include "../../common/gst-utils.h"
 
+#include <glibmm/i18n.h>
+#include <glibmm.h>
+
 GValueFlags::GValueFlags(GValue *gobj)
 : GValueBase(gobj)
 {}
@@ -25,7 +27,7 @@ std::string GValueFlags::to_string() const
        gint value = get_value();
        if (!type)
        {
-               return flags_value_to_string(value) + " (press 'refresh' button)";
+               return flags_value_to_string(value) + _(" (press 'refresh' button)"); // todo move somewhere 
else
        }
        try
        {
diff --git a/src/gst-debugger/gvalue-converter/gvalue_unknown.cpp 
b/src/gst-debugger/gvalue-converter/gvalue_unknown.cpp
index 3a8a4eb..d111ed1 100644
--- a/src/gst-debugger/gvalue-converter/gvalue_unknown.cpp
+++ b/src/gst-debugger/gvalue-converter/gvalue_unknown.cpp
@@ -8,6 +8,9 @@
 #include "gvalue_unknown.h"
 
 #include "../../common/gst-utils.h"
+
+#include <glibmm/i18n.h>
+
 GValueUnknown::GValueUnknown(GValue *gobj)
 : GValueBase(gobj)
 {}
@@ -15,7 +18,7 @@ GValueUnknown::GValueUnknown(GValue *gobj)
 std::string GValueUnknown::to_string() const
 {
        GstUnknownType *unknown_type = (GstUnknownType*)g_value_get_boxed(g_value);
-       return "unsupported type: " + std::string(unknown_type->type_name);
+       return _("unsupported type: ") + std::string(unknown_type->type_name);
 }
 
 Gtk::Widget* GValueUnknown::create_widget()
diff --git a/src/gst-debugger/main.cpp b/src/gst-debugger/main.cpp
index b8e7839..d605374 100644
--- a/src/gst-debugger/main.cpp
+++ b/src/gst-debugger/main.cpp
@@ -9,11 +9,19 @@
 #include "controller/controller.h"
 #include "main_window.h"
 
+#include "config.h"
+
+#include <glibmm/i18n.h>
 #include <gtkmm.h>
 #include <gstreamermm.h>
 
 int main(int argc, char** argv)
 {
+
+       bindtextdomain(GETTEXT_PACKAGE, GST_DEBUGGER_LOCALEDIR);
+       bind_textdomain_codeset(GETTEXT_PACKAGE, "UTF-8");
+       textdomain(GETTEXT_PACKAGE);
+
        Gst::init(argc, argv);
        Gtk::Main kit(argc, argv);
        Glib::RefPtr<Gtk::Builder> builder = 
Gtk::Builder::create_from_resource("/eu/cookandcommit/gst-debugger/ui/gst-debugger.glade");
diff --git a/src/gst-debugger/main_window.cpp b/src/gst-debugger/main_window.cpp
index e043b92..fa0e81e 100644
--- a/src/gst-debugger/main_window.cpp
+++ b/src/gst-debugger/main_window.cpp
@@ -14,6 +14,8 @@
 
 #include "controller/controller.h"
 
+#include <glib/gi18n.h>
+
 MainWindow::MainWindow(BaseObjectType* cobject, const Glib::RefPtr<Gtk::Builder>& builder)
 : IMainView(cobject),
   builder(builder),
@@ -115,12 +117,12 @@ void MainWindow::connection_status_changed(bool connected)
        auto id = main_statusbar->get_context_id("connection-status");
        if (connected)
        {
-               main_statusbar->push("Connected", id);
-               ((Gtk::Label*)connect_menu_item->get_child())->set_text("Disconnect");
+               main_statusbar->push(_("Connected"), id);
+               ((Gtk::Label*)connect_menu_item->get_child())->set_text(_("Disconnect"));
        }
        else
        {
-               main_statusbar->push("Disconnected", id);
-               ((Gtk::Label*)connect_menu_item->get_child())->set_text("Connect");
+               main_statusbar->push(_("Disconnected"), id);
+               ((Gtk::Label*)connect_menu_item->get_child())->set_text(_("Connect"));
        }
 }
diff --git a/src/gst-debugger/modules/base_main_module.cpp b/src/gst-debugger/modules/base_main_module.cpp
index 4a74a64..a8e8121 100644
--- a/src/gst-debugger/modules/base_main_module.cpp
+++ b/src/gst-debugger/modules/base_main_module.cpp
@@ -9,6 +9,8 @@
 
 #include "controller/controller.h"
 
+#include <glibmm/i18n.h>
+
 DetailsModelColumns BaseMainModule::detail_columns;
 
 inline void free_data(GstDebugger::GStreamerData* data) { delete data; }
@@ -51,8 +53,8 @@ void BaseMainModule::load_details(Gtk::TreeView *view, const Gtk::TreeModel::Pat
 void BaseMainModule::configure_details_view(Gtk::TreeView *view)
 {
        view->remove_all_columns();
-       view->append_column("Name", detail_columns.name);
-       view->append_column("Value", detail_columns.value);
+       view->append_column(_("Name"), detail_columns.name);
+       view->append_column(_("Value"), detail_columns.value);
 }
 
 void BaseMainModule::append_details_row(const std::string &name, const std::string &value)
diff --git a/src/gst-debugger/modules/buffer_module.cpp b/src/gst-debugger/modules/buffer_module.cpp
index bbe7e6e..ca9df0d 100644
--- a/src/gst-debugger/modules/buffer_module.cpp
+++ b/src/gst-debugger/modules/buffer_module.cpp
@@ -13,8 +13,10 @@
 
 #include "controller/controller.h"
 
+#include <glibmm/i18n.h>
+
 BufferModule::BufferModule()
-: BaseMainModule(GstDebugger::GStreamerData::kBufferInfo, "buffers")
+: BaseMainModule(GstDebugger::GStreamerData::kBufferInfo, _("Buffers"))
 {
        data_dialog = load_dialog<BufferDataDialog>("bufferDataDialog");
 }
@@ -23,18 +25,18 @@ void BufferModule::load_details(gpointer data)
 {
        auto buffer_info = (GstDebugger::BufferInfo*)data;
 
-       append_details_row("Pts", std::to_string(buffer_info->pts()));
-       append_details_row("Dts", std::to_string(buffer_info->dts()));
-       append_details_row("Duration", std::to_string(buffer_info->duration()));
-       append_details_row("Offset", std::to_string(buffer_info->offset()));
-       append_details_row("Offset End", std::to_string(buffer_info->offset_end()));
-       append_details_row("Data Size", std::to_string(buffer_info->size()));
-       append_details_row("Object path", buffer_info->pad());
+       append_details_row(_("Pts"), std::to_string(buffer_info->pts()));
+       append_details_row(_("Dts"), std::to_string(buffer_info->dts()));
+       append_details_row(_("Duration"), std::to_string(buffer_info->duration()));
+       append_details_row(_("Offset"), std::to_string(buffer_info->offset()));
+       append_details_row(_("Offset End"), std::to_string(buffer_info->offset_end()));
+       append_details_row(_("Data Size"), std::to_string(buffer_info->size()));
+       append_details_row(_("Object path"), buffer_info->pad());
 
        if (buffer_info->has_data())
        {
                buffer = buffer_info->data();
-               append_details_row("Data", buffer_data_to_string(StringDataFormat::HEX, buffer, 1024, 16));
+               append_details_row(_("Data"), buffer_data_to_string(StringDataFormat::HEX, buffer, 1024, 16));
        }
 }
 
@@ -48,7 +50,7 @@ void BufferModule::details_activated(const Gtk::TreeModel::Path &path)
        }
 
        Gtk::TreeModel::Row row = *iter;
-       if (row[detail_columns.name] == "Data")
+       if (row[detail_columns.name] == _("Data"))
        {
                data_dialog->set_data(buffer);
                data_dialog->show();
@@ -57,14 +59,14 @@ void BufferModule::details_activated(const Gtk::TreeModel::Path &path)
 
 void BufferModule::data_received(const Gtk::TreeModel::Row& row, GstDebugger::GStreamerData *data)
 {
-       row[columns.header] = "Buffer of size " + std::to_string(data->buffer_info().size());
+       row[columns.header] = _("Buffer of size ") + std::to_string(data->buffer_info().size());
        row[columns.data] = new GstDebugger::BufferInfo(data->buffer_info());
 }
 
 BufferControlModule::BufferControlModule()
 : ControlModule()
 {
-       data_check_button = Gtk::manage(new Gtk::CheckButton("Send data"));
+       data_check_button = Gtk::manage(new Gtk::CheckButton(_("Send data")));
        main_box->pack_start(*data_check_button, false, true);
        main_box->reorder_child(*data_check_button, 1);
 
@@ -74,7 +76,7 @@ BufferControlModule::BufferControlModule()
        create_dispatcher("selected-object", [this] {
                auto pad_path = controller->get_selected_pad_path();
                if (pad_path.empty())
-                       pad_path = "none (any path)";
+                       pad_path = _("none (any path)");
                pad_path_label->set_text(pad_path);
        }, nullptr);
 
@@ -105,7 +107,7 @@ void BufferControlModule::confirmation_received(GstDebugger::Command* cmd)
        {
                Gtk::TreeModel::Row row = *(hooks_model->append());
                row[hooks_model_columns.str1] = confirmation.pad();
-               row[hooks_model_columns.str2] = confirmation.buffer().send_data() ? "yes" : "no";
+               row[hooks_model_columns.str2] = confirmation.buffer().send_data() ? _("yes") : _("no");
        }
        else
        {
diff --git a/src/gst-debugger/modules/event_module.cpp b/src/gst-debugger/modules/event_module.cpp
index 28cd766..309554f 100644
--- a/src/gst-debugger/modules/event_module.cpp
+++ b/src/gst-debugger/modules/event_module.cpp
@@ -9,8 +9,10 @@
 
 #include "controller/controller.h"
 
+#include <glibmm/i18n.h>
+
 EventModule::EventModule()
-: BaseMainModule(GstDebugger::GStreamerData::kEventInfo, "Events")
+: BaseMainModule(GstDebugger::GStreamerData::kEventInfo, _("Events"))
 {
 }
 
@@ -18,14 +20,14 @@ void EventModule::load_details(gpointer data)
 {
        auto evt_info = (GstDebugger::EventInfo*)data;
 
-       append_details_row("event type", Gst::Enums::get_name((Gst::EventType)evt_info->type()));
+       append_details_row(_("event type"), Gst::Enums::get_name((Gst::EventType)evt_info->type()));
        {
                gchar buffer[20];
                snprintf(buffer, 20, "%" GST_TIME_FORMAT, GST_TIME_ARGS(evt_info->timestamp()));
-               append_details_row("event timestamp", buffer);
+               append_details_row(_("event timestamp"), buffer);
        }
-       append_details_row("event sequence number", std::to_string(evt_info->seqnum()));
-       append_details_row("sent from pad", evt_info->pad());
+       append_details_row(_("event sequence number"), std::to_string(evt_info->seqnum()));
+       append_details_row(_("sent from pad"), evt_info->pad());
 
        auto structure = Glib::wrap(gst_structure_from_string(evt_info->structure_data().c_str(), NULL), 
false);
        append_details_from_structure(structure);
@@ -33,7 +35,7 @@ void EventModule::load_details(gpointer data)
 
 void EventModule::data_received(const Gtk::TreeModel::Row& row, GstDebugger::GStreamerData *data)
 {
-       row[columns.header] = "Event of type: " + 
Gst::Enums::get_name((Gst::EventType)data->event_info().type());
+       row[columns.header] = _("Event of type: ") + 
Gst::Enums::get_name((Gst::EventType)data->event_info().type());
        row[columns.data] = new GstDebugger::EventInfo(data->event_info());
 }
 
diff --git a/src/gst-debugger/modules/gst_properties_module.cpp 
b/src/gst-debugger/modules/gst_properties_module.cpp
index 94f34dc..52cb506 100644
--- a/src/gst-debugger/modules/gst_properties_module.cpp
+++ b/src/gst-debugger/modules/gst_properties_module.cpp
@@ -11,6 +11,8 @@
 #include "controller/element_path_processor.h"
 #include "ui_utils.h"
 
+#include <glibmm/i18n.h>
+
 #include <gst/gst.h>
 
 static void free_properties(GstDebugger::PropertyInfo *property) { delete property; }
@@ -202,8 +204,8 @@ void GstPropertiesModule::show_pad_properties()
        PadPropertyModelColumns cols;
        auto model = Gtk::TreeStore::create(cols);
        Gtk::TreeView *tree = Gtk::manage(new Gtk::TreeView());
-       tree->append_column("Property Name", cols.m_col_name);
-       tree->append_column("Property Value", cols.m_col_value);
+       tree->append_column(_("Property Name"), cols.m_col_name);
+       tree->append_column(_("Property Value"), cols.m_col_value);
        tree->set_model(model);
 
 #define APPEND_ROW(name, value) \
@@ -216,35 +218,35 @@ void GstPropertiesModule::show_pad_properties()
        std::string peer_pad = pad->get_peer() ? ElementPathProcessor::get_object_path(pad->get_peer()) : 
std::string("NO PEER PAD");
 
        Gtk::TreeModel::Row row;
-       APPEND_ROW("Name", pad->get_name());
+       APPEND_ROW(_("Name"), pad->get_name());
 
        if (pad->get_template())
        {
                display_template_info(pad->get_template(), model, cols.m_col_name, cols.m_col_value);
        }
 
-       APPEND_ROW("Presence", get_presence_str(pad->get_presence()));
-       APPEND_ROW("Direction", get_direction_str(pad->get_direction()));
-       APPEND_ROW("Peer pad", peer_pad);
+       APPEND_ROW(_("Presence"), get_presence_str(pad->get_presence()));
+       APPEND_ROW(_("Direction"), get_direction_str(pad->get_direction()));
+       APPEND_ROW(_("Peer pad"), peer_pad);
 
        if (pad->get_current_caps())
        {
-               APPEND_ROW("Current caps", "");
+               APPEND_ROW(_("Current caps"), "");
                display_caps(pad->get_current_caps(), model, cols.m_col_name, cols.m_col_value, row);
        }
        else
        {
-               APPEND_ROW("Current caps", "unknown");
+               APPEND_ROW(_("Current caps"), _("unknown"));
        }
 
        if (pad->get_allowed_caps())
        {
-               APPEND_ROW("Allowed caps", "");
+               APPEND_ROW(_("Allowed caps"), "");
                display_caps(pad->get_allowed_caps(), model, cols.m_col_name, cols.m_col_value, row);
        }
        else
        {
-               APPEND_ROW("Allowed caps", "unknown");
+               APPEND_ROW(_("Allowed caps"), _("unknown"));
        }
 
 #undef APPEND_ROW
diff --git a/src/gst-debugger/modules/log_module.cpp b/src/gst-debugger/modules/log_module.cpp
index f34bf44..ffbd1e7 100644
--- a/src/gst-debugger/modules/log_module.cpp
+++ b/src/gst-debugger/modules/log_module.cpp
@@ -9,8 +9,10 @@
 
 #include "controller/controller.h"
 
+#include <glibmm/i18n.h>
+
 LogModule::LogModule()
-: BaseMainModule(GstDebugger::GStreamerData::kLogInfo, "logs")
+: BaseMainModule(GstDebugger::GStreamerData::kLogInfo, _("Debug logs"))
 {
 }
 
@@ -18,13 +20,13 @@ void LogModule::load_details(gpointer data)
 {
        auto log_info = (GstDebugger::LogInfo*)data;
 
-       append_details_row("Level", std::to_string(log_info->level()));
-       append_details_row("Category name", log_info->category());
-       append_details_row("File", log_info->file());
-       append_details_row("Function", log_info->function());
-       append_details_row("Line", std::to_string(log_info->line()));
-       append_details_row("Object path", log_info->object());
-       append_details_row("Message", log_info->message());
+       append_details_row(_("Level"), std::to_string(log_info->level()));
+       append_details_row(_("Category name"), log_info->category());
+       append_details_row(_("File"), log_info->file());
+       append_details_row(_("Function"), log_info->function());
+       append_details_row(_("Line"), std::to_string(log_info->line()));
+       append_details_row(_("Object path"), log_info->object());
+       append_details_row(_("Message"), log_info->message());
 }
 
 void LogModule::data_received(const Gtk::TreeModel::Row& row, GstDebugger::GStreamerData *data)
@@ -38,28 +40,28 @@ LogControlModule::LogControlModule()
 {
        debug_categories_combobox = Gtk::manage(new Gtk::ComboBoxText());
 
-       create_description_box("Debug category: ", debug_categories_combobox, 0);
+       create_description_box(_("Debug category: "), debug_categories_combobox, 0);
 
        log_levels_combobox = Gtk::manage(new Gtk::ComboBoxText());
-       create_description_box("Log level: ", log_levels_combobox, 0);
+       create_description_box(_("Log level: "), log_levels_combobox, 0);
 
-       main_box->pack_start(*Gtk::manage(new Gtk::Label("Log threshold:")), false, true);
+       main_box->pack_start(*Gtk::manage(new Gtk::Label(_("Log threshold:"))), false, true);
 
        threshold_entry = Gtk::manage(new Gtk::Entry());
        main_box->pack_start(*threshold_entry, false, true);
 
-       overwrite_threshold_check_button = Gtk::manage(new Gtk::CheckButton("Overwrite current threshold"));
+       overwrite_threshold_check_button = Gtk::manage(new Gtk::CheckButton(_("Overwrite current 
threshold")));
        main_box->pack_start(*overwrite_threshold_check_button, false, true);
 
-       set_threshold_button = Gtk::manage(new Gtk::Button("Set threshold"));
+       set_threshold_button = Gtk::manage(new Gtk::Button(_("Set threshold")));
        set_threshold_button->signal_clicked().connect([this] {
                controller->send_set_threshold_command(threshold_entry->get_text(),
                        overwrite_threshold_check_button->get_active());
        });
        main_box->pack_start(*set_threshold_button, false, true);
 
-       hooks_tree_view->append_column("Level", hooks_model_columns.str1);
-       hooks_tree_view->append_column("Category", hooks_model_columns.str2);
+       hooks_tree_view->append_column(_("Level"), hooks_model_columns.str1);
+       hooks_tree_view->append_column(_("Category"), hooks_model_columns.str2);
 }
 
 void LogControlModule::set_controller(const std::shared_ptr<Controller> &controller)
diff --git a/src/gst-debugger/modules/message_module.cpp b/src/gst-debugger/modules/message_module.cpp
index 99f01e6..d03a95a 100644
--- a/src/gst-debugger/modules/message_module.cpp
+++ b/src/gst-debugger/modules/message_module.cpp
@@ -9,8 +9,10 @@
 
 #include "controller/controller.h"
 
+#include <glibmm/i18n.h>
+
 MessageModule::MessageModule()
-: BaseMainModule(GstDebugger::GStreamerData::kMessageInfo, "Messages")
+: BaseMainModule(GstDebugger::GStreamerData::kMessageInfo, _("Messages"))
 {
 }
 
@@ -18,14 +20,14 @@ void MessageModule::load_details(gpointer data)
 {
        auto msg_info = (GstDebugger::MessageInfo*)data;
 
-       append_details_row("message type", Gst::Enums::get_name((Gst::MessageType)msg_info->type()));
+       append_details_row(_("message type"), Gst::Enums::get_name((Gst::MessageType)msg_info->type()));
        {
                gchar buffer[20];
                snprintf(buffer, 20, "%" GST_TIME_FORMAT, GST_TIME_ARGS(msg_info->timestamp()));
-               append_details_row("message timestamp", buffer);
+               append_details_row(_("message timestamp"), buffer);
        }
-       append_details_row("message sequence number", std::to_string(msg_info->seqnum()));
-       append_details_row("object", "todo"); // todo
+       append_details_row(_("message sequence number"), std::to_string(msg_info->seqnum()));
+       append_details_row(_("object"), "todo"); // todo
 
        auto structure = Glib::wrap(gst_structure_from_string(msg_info->structure_data().c_str(), NULL), 
false);
        append_details_from_structure(structure);
@@ -33,7 +35,7 @@ void MessageModule::load_details(gpointer data)
 
 void MessageModule::data_received(const Gtk::TreeModel::Row& row, GstDebugger::GStreamerData *data)
 {
-       row[columns.header] = "Message of type: " + 
Gst::Enums::get_name((Gst::MessageType)data->message_info().type());
+       row[columns.header] = _("Message of type: ") + 
Gst::Enums::get_name((Gst::MessageType)data->message_info().type());
        row[columns.data] = new GstDebugger::MessageInfo(data->message_info());
 }
 
@@ -46,9 +48,9 @@ MessageControlModule::MessageControlModule()
        types_combobox->set_model(types_model);
        types_combobox->pack_start(types_model_columns.type_name);
 
-       create_description_box("Type: ", types_combobox, 0);
+       create_description_box(_("Type: "), types_combobox, 0);
 
-       hooks_tree_view->append_column("Type", hooks_model_columns.str1);
+       hooks_tree_view->append_column(_("Type"), hooks_model_columns.str1);
 }
 
 void MessageControlModule::add_hook()
diff --git a/src/gst-debugger/modules/query_module.cpp b/src/gst-debugger/modules/query_module.cpp
index ea4287d..1cb436d 100644
--- a/src/gst-debugger/modules/query_module.cpp
+++ b/src/gst-debugger/modules/query_module.cpp
@@ -9,8 +9,10 @@
 
 #include "controller/controller.h"
 
+#include <glibmm/i18n.h>
+
 QueryModule::QueryModule()
-: BaseMainModule(GstDebugger::GStreamerData::kQueryInfo, "Queries")
+: BaseMainModule(GstDebugger::GStreamerData::kQueryInfo, _("Queries"))
 {
 }
 
@@ -18,8 +20,8 @@ void QueryModule::load_details(gpointer data)
 {
        auto query_info = (GstDebugger::QueryInfo*)data;
 
-       append_details_row("query type", Gst::Enums::get_name((Gst::QueryType)query_info->type()));
-       append_details_row("sent from pad", query_info->pad());
+       append_details_row(_("query type"), Gst::Enums::get_name((Gst::QueryType)query_info->type()));
+       append_details_row(_("sent from pad"), query_info->pad());
 
        auto structure = Glib::wrap(gst_structure_from_string(query_info->structure_data().c_str(), NULL), 
false);
        append_details_from_structure(structure);
@@ -27,7 +29,7 @@ void QueryModule::load_details(gpointer data)
 
 void QueryModule::data_received(const Gtk::TreeModel::Row& row, GstDebugger::GStreamerData *data)
 {
-       row[columns.header] = "Query of type: " + 
Gst::Enums::get_name((Gst::QueryType)data->query_info().type());
+       row[columns.header] = _("Query of type: ") + 
Gst::Enums::get_name((Gst::QueryType)data->query_info().type());
        row[columns.data] = new GstDebugger::QueryInfo(data->query_info());
 }
 
diff --git a/src/gst-debugger/pipeline-drawer/graph_module.cpp 
b/src/gst-debugger/pipeline-drawer/graph_module.cpp
index 52b61a9..dde13ba 100644
--- a/src/gst-debugger/pipeline-drawer/graph_module.cpp
+++ b/src/gst-debugger/pipeline-drawer/graph_module.cpp
@@ -11,6 +11,8 @@
 
 #include "graphviz-plugin/graphviz-gstdebugger.h"
 
+#include <glibmm/i18n.h>
+
 #include <boost/algorithm/string.hpp>
 #include "../../common/gst-utils.h"
 
@@ -168,12 +170,12 @@ void GraphModule::jump_to_selected_model()
 
        if (selected_element.empty())
        {
-               controller->log("cannot jump to element. element is not selected.");
+               controller->log(_("Can't get into the element. Element is not selected."));
                return;
        }
        else if (selected_element.find(':') != std::string::npos)
        {
-               controller->log("cannot jump into element. selected element is a pad.");
+               controller->log(_("Can't get into the element. Selected element is a pad."));
                return;
        }
 
diff --git a/src/gst-debugger/ui/gst-debugger-dialogs.glade b/src/gst-debugger/ui/gst-debugger-dialogs.glade
index 37a5b99..a4b1271 100644
--- a/src/gst-debugger/ui/gst-debugger-dialogs.glade
+++ b/src/gst-debugger/ui/gst-debugger-dialogs.glade
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!-- Generated with glade 3.19.0 -->
+<!-- Generated with glade 3.18.3 -->
 <interface>
   <requires lib="gtk+" version="3.14"/>
   <object class="GtkAboutDialog" id="aboutDialog">
@@ -97,10 +97,11 @@
                 </child>
                 <child>
                   <object class="GtkRadioButton" id="binFormatRadioButton">
-                    <property name="label" translatable="yes">BIN</property>
+                    <property name="label">BIN</property>
                     <property name="visible">True</property>
                     <property name="can_focus">True</property>
                     <property name="receives_default">False</property>
+                    <property name="xalign">0.5</property>
                     <property name="draw_indicator">True</property>
                     <property name="group">hexFormatRadioButton</property>
                   </object>
@@ -112,10 +113,11 @@
                 </child>
                 <child>
                   <object class="GtkRadioButton" id="octFormatRadioButton">
-                    <property name="label" translatable="yes">OCT</property>
+                    <property name="label">OCT</property>
                     <property name="visible">True</property>
                     <property name="can_focus">True</property>
                     <property name="receives_default">False</property>
+                    <property name="xalign">0.5</property>
                     <property name="draw_indicator">True</property>
                     <property name="group">hexFormatRadioButton</property>
                   </object>
@@ -127,10 +129,11 @@
                 </child>
                 <child>
                   <object class="GtkRadioButton" id="decFormatRadioButton">
-                    <property name="label" translatable="yes">DEC</property>
+                    <property name="label">DEC</property>
                     <property name="visible">True</property>
                     <property name="can_focus">True</property>
                     <property name="receives_default">False</property>
+                    <property name="xalign">0.5</property>
                     <property name="draw_indicator">True</property>
                     <property name="group">hexFormatRadioButton</property>
                   </object>
@@ -142,10 +145,11 @@
                 </child>
                 <child>
                   <object class="GtkRadioButton" id="hexFormatRadioButton">
-                    <property name="label" translatable="yes">HEX</property>
+                    <property name="label">HEX</property>
                     <property name="visible">True</property>
                     <property name="can_focus">True</property>
                     <property name="receives_default">False</property>
+                    <property name="xalign">0.5</property>
                     <property name="active">True</property>
                     <property name="draw_indicator">True</property>
                   </object>
diff --git a/src/gst-debugger/ui_utils.cpp b/src/gst-debugger/ui_utils.cpp
index 6398a74..aacab46 100644
--- a/src/gst-debugger/ui_utils.cpp
+++ b/src/gst-debugger/ui_utils.cpp
@@ -8,6 +8,8 @@
 #include "ui_utils.h"
 #include "gst-debugger-resources.h"
 
+#include <glib/gi18n.h>
+
 #include <iomanip>
 #include <bitset>
 
@@ -19,7 +21,7 @@ std::string get_presence_str(Gst::PadPresence p)
        case Gst::PAD_ALWAYS: presence = "ALWAYS"; break;
        case Gst::PAD_SOMETIMES: presence = "SOMETIMES"; break;
        case Gst::PAD_REQUEST: presence = "REQUEST"; break;
-       default: presence = "UNKNOWN";
+       default: presence = _("UNKNOWN");
        }
        return presence;
 }
@@ -31,7 +33,7 @@ std::string get_direction_str(Gst::PadDirection d)
        {
        case Gst::PAD_SINK: direction = "SINK"; break;
        case Gst::PAD_SRC: direction = "SRC"; break;
-       default: direction = "UNKNOWN";
+       default: direction = _("UNKNOWN");
        }
        return direction;
 }
@@ -51,16 +53,16 @@ void display_template_info(const Glib::RefPtr<Gst::PadTemplate> &tpl,
        Gtk::TreeRow row;
        if (parent_row)
        {
-               row = APPEND_SUB_ROW("Template", tpl->get_name_template(), parent_row.get());
+               row = APPEND_SUB_ROW(_("Template"), tpl->get_name_template(), parent_row.get());
        }
        else
        {
                row = *(model->append());
-               row[col_name] = "Template";
+               row[col_name] = _("Template");
                row[col_value] = tpl->get_name_template();
        }
-       APPEND_SUB_ROW("Presence", get_presence_str(tpl->get_presence()), row);
-       APPEND_SUB_ROW("Direction", get_direction_str(tpl->get_direction()), row);
+       APPEND_SUB_ROW(_("Presence"), get_presence_str(tpl->get_presence()), row);
+       APPEND_SUB_ROW(_("Direction"), get_direction_str(tpl->get_direction()), row);
        row = APPEND_SUB_ROW("Caps", "", row);
        display_caps(tpl->get_caps(), model, col_name, col_value, row);
 }
@@ -72,7 +74,7 @@ void display_caps(const Glib::RefPtr<Gst::Caps> &caps,
        std::string caps_str;
 
        if (!caps)
-               caps_str = "UNKNOWN";
+               caps_str = _("UNKNOWN");
        else if (caps->is_any() || caps->empty())
                caps_str = caps->to_string();
 
@@ -140,7 +142,7 @@ std::string buffer_data_to_string(StringDataFormat format, const std::string &bu
 
        if (display_size < buffer.length())
        {
-               ss << std::endl << "more...";
+               ss << std::endl << _("more...");
        }
 
        return ss.str();



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]