From 8d17f291e0a015420bffad1eee6e55d7a67d85bd Mon Sep 17 00:00:00 2001 From: mishas Date: Wed, 21 Mar 2007 20:19:10 +0000 Subject: [PATCH 1/1] * read text domain from the .desktop file (if available) * perform translation for name and comment according to locale git-svn-id: file:///svnroot/simple-launcher/trunk@100 3ba93dab-e023-0410-b42a-de7732cf370a --- launcher-item.cc | 16 +++++++++++++++- launcher-item.h | 8 +++++--- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/launcher-item.cc b/launcher-item.cc index 999da20..ee230f2 100644 --- a/launcher-item.cc +++ b/launcher-item.cc @@ -17,6 +17,8 @@ #include +#include + #include #include @@ -29,7 +31,10 @@ static const char *DESKTOP_ENTRY_GROUP = "Desktop Entry", *DESKTOP_ENTRY_ICON_FIELD = "Icon", *DESKTOP_ENTRY_NAME_FIELD = "Name", *DESKTOP_ENTRY_COMMENT_FIELD = "Comment", - *DESKTOP_ENTRY_SERVICE_FIELD = "X-Osso-Service"; + *DESKTOP_ENTRY_SERVICE_FIELD = "X-Osso-Service", + *DESKTOP_ENTRY_TEXT_DOMAIN = "X-Text-Domain"; + +static const char *DEFAULT_TEXT_DOMAIN = "osso-applet-tasknavigator"; class GKeyFileWrapper { public: @@ -90,6 +95,14 @@ LauncherItem::LauncherItem(): myEnabled(false) { LauncherItem::~LauncherItem() { } +std::string LauncherItem::translateString(const std::string& what) const { + if (what.empty()) { + return what; + } else { + return dgettext(myTextDomain.empty() ? DEFAULT_TEXT_DOMAIN : myTextDomain.c_str(), what.c_str()); + } +} + bool LauncherItem::load(const std::string& filename) { GKeyFileWrapper key_file; @@ -108,6 +121,7 @@ bool LauncherItem::load(const std::string& filename) { myComment = key_file.getLocaleString(DESKTOP_ENTRY_GROUP, DESKTOP_ENTRY_COMMENT_FIELD); myIcon = key_file.getString(DESKTOP_ENTRY_GROUP, DESKTOP_ENTRY_ICON_FIELD); myService = key_file.getString(DESKTOP_ENTRY_GROUP, DESKTOP_ENTRY_SERVICE_FIELD); + myTextDomain = key_file.getString(DESKTOP_ENTRY_GROUP, DESKTOP_ENTRY_TEXT_DOMAIN); break; } diff --git a/launcher-item.h b/launcher-item.h index 3b4065e..ec53bb9 100644 --- a/launcher-item.h +++ b/launcher-item.h @@ -36,8 +36,8 @@ public: GdkPixbuf *getIcon(int icon_size) const; const std::string& getFileName() const { return myFileName; } - const std::string& getName() const { return myName; } - const std::string& getComment() const { return myComment; } + std::string getName(bool translate = true) const { return translate ? translateString(myName) : myName; } + std::string getComment(bool translate = true) const { return translate ? translateString(myComment) : myComment; } const std::string& getService() const { return myService; } bool isEnabled(void) const { return myEnabled; } @@ -53,10 +53,12 @@ public: } private: + std::string translateString(const std::string& what) const; + bool checkSanity(void) { return !(myName.empty() || myIcon.empty() || myService.empty()); } private: - std::string myFileName, myName, myComment, myIcon, myService; + std::string myFileName, myName, myComment, myIcon, myService, myTextDomain; bool myEnabled; static GtkIconTheme *ourTheme; -- 1.7.9.5