#include <string>
+#include <libintl.h>
+
#include <glib/gmem.h>
#include <glib/gkeyfile.h>
*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:
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;
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;
}
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; }
}
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;