summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog10
-rw-r--r--po/fr.po33
-rw-r--r--po/tmw.pot30
-rw-r--r--src/Makefile.am2
-rw-r--r--src/gui/inventorywindow.cpp50
-rw-r--r--src/utils/strprintf.cpp53
-rw-r--r--src/utils/strprintf.h37
7 files changed, 173 insertions, 42 deletions
diff --git a/ChangeLog b/ChangeLog
index 267e0e5e..7602a9df 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+2007-08-06 Guillaume Melquiond <guillaume.melquiond@gmail.com>
+
+ * src/Makefile.am, src/utils/strprintf.h, src/utils/strprintf.cpp:
+ Added a helper function for printf-formatting a (gettext) C string into
+ a dynamically-sized C++ string.
+ * src/gui/inventory.cpp: Completed marking of translatable strings for
+ inventory window.
+ * po/tmw.pot: Updated with new translatable strings.
+ * po/fr.po: Completed translation of inventory window in french.
+
2007-08-05 Guillaume Melquiond <guillaume.melquiond@gmail.com>
* configure.ac, Makefile.am, po, src/Makefile.am, src/main.cpp,
diff --git a/po/fr.po b/po/fr.po
index d6c07b78..c23f558b 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -9,25 +9,46 @@ msgid ""
msgstr ""
"Project-Id-Version: The Mana World 0.1.0\n"
"Report-Msgid-Bugs-To: themanaworld-devel@lists.sourceforge.net\n"
-"POT-Creation-Date: 2007-08-05 18:09+0200\n"
-"PO-Revision-Date: 2007-08-05 17:42+0200\n"
+"POT-Creation-Date: 2007-08-06 08:03+0200\n"
+"PO-Revision-Date: 2007-08-06 08:04+0200\n"
+"Last-Translator: Guillaume Melquiond <guillaume.melquiond@gmail.com>\n"
"Language-Team: French\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-#: src/gui/inventorywindow.cpp:48
+#: src/gui/inventorywindow.cpp:49
msgid "Inventory"
msgstr "Inventaire"
-#: src/gui/inventorywindow.cpp:56 src/gui/inventorywindow.cpp:216
+#: src/gui/inventorywindow.cpp:57 src/gui/inventorywindow.cpp:205
msgid "Use"
msgstr "Utiliser"
-#: src/gui/inventorywindow.cpp:57
+#: src/gui/inventorywindow.cpp:58
msgid "Drop"
msgstr "Lâcher"
-#: src/gui/inventorywindow.cpp:213
+#: src/gui/inventorywindow.cpp:67 src/gui/inventorywindow.cpp:131
+#, c-format
+msgid "Name: %s"
+msgstr "Nom : %s"
+
+#: src/gui/inventorywindow.cpp:68 src/gui/inventorywindow.cpp:135
+#, c-format
+msgid "Description: %s"
+msgstr "Description : %s"
+
+#: src/gui/inventorywindow.cpp:69 src/gui/inventorywindow.cpp:133
+#, c-format
+msgid "Effect: %s"
+msgstr "Effet : %s"
+
+#: src/gui/inventorywindow.cpp:70 src/gui/inventorywindow.cpp:97
+#, c-format
+msgid "Total Weight: %d - Maximum Weight: %d"
+msgstr "Poids total : %d - Poids maximal : %d"
+
+#: src/gui/inventorywindow.cpp:202
msgid "Equip"
msgstr "Équiper"
diff --git a/po/tmw.pot b/po/tmw.pot
index 7fa6e432..e12b7d81 100644
--- a/po/tmw.pot
+++ b/po/tmw.pot
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: themanaworld-devel@lists.sourceforge.net\n"
-"POT-Creation-Date: 2007-08-05 18:09+0200\n"
+"POT-Creation-Date: 2007-08-06 08:03+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -16,18 +16,38 @@ msgstr ""
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
-#: src/gui/inventorywindow.cpp:48
+#: src/gui/inventorywindow.cpp:49
msgid "Inventory"
msgstr ""
-#: src/gui/inventorywindow.cpp:56 src/gui/inventorywindow.cpp:216
+#: src/gui/inventorywindow.cpp:57 src/gui/inventorywindow.cpp:205
msgid "Use"
msgstr ""
-#: src/gui/inventorywindow.cpp:57
+#: src/gui/inventorywindow.cpp:58
msgid "Drop"
msgstr ""
-#: src/gui/inventorywindow.cpp:213
+#: src/gui/inventorywindow.cpp:67 src/gui/inventorywindow.cpp:131
+#, c-format
+msgid "Name: %s"
+msgstr ""
+
+#: src/gui/inventorywindow.cpp:68 src/gui/inventorywindow.cpp:135
+#, c-format
+msgid "Description: %s"
+msgstr ""
+
+#: src/gui/inventorywindow.cpp:69 src/gui/inventorywindow.cpp:133
+#, c-format
+msgid "Effect: %s"
+msgstr ""
+
+#: src/gui/inventorywindow.cpp:70 src/gui/inventorywindow.cpp:97
+#, c-format
+msgid "Total Weight: %d - Maximum Weight: %d"
+msgstr ""
+
+#: src/gui/inventorywindow.cpp:202
msgid "Equip"
msgstr ""
diff --git a/src/Makefile.am b/src/Makefile.am
index b3142582..5866205e 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -232,6 +232,8 @@ tmw_SOURCES = gui/widgets/dropdown.cpp \
utils/dtor.h \
utils/fastsqrt.h \
utils/minmax.h \
+ utils/strprintf.h \
+ utils/strprintf.cpp \
utils/tostring.h \
utils/xml.cpp \
utils/xml.h \
diff --git a/src/gui/inventorywindow.cpp b/src/gui/inventorywindow.cpp
index 95a669a9..e31c87f6 100644
--- a/src/gui/inventorywindow.cpp
+++ b/src/gui/inventorywindow.cpp
@@ -42,7 +42,7 @@
#include "../resources/gettext.h"
#include "../resources/iteminfo.h"
-#include "../utils/tostring.h"
+#include "../utils/strprintf.h"
InventoryWindow::InventoryWindow():
Window(_("Inventory"))
@@ -63,10 +63,10 @@ InventoryWindow::InventoryWindow():
mInvenScroll->setPosition(8, 8);
mInvenScroll->setHorizontalScrollPolicy(gcn::ScrollArea::SHOW_NEVER);
- mItemNameLabel = new gcn::Label("Name:");
- mItemDescriptionLabel = new gcn::Label("Description:");
- mItemEffectLabel = new gcn::Label("Effect:");
- mWeightLabel = new gcn::Label("Total Weight: - Maximum Weight: ");
+ mItemNameLabel = new gcn::Label(strprintf(_("Name: %s"), ""));
+ mItemDescriptionLabel = new gcn::Label(strprintf(_("Description: %s"), ""));
+ mItemEffectLabel = new gcn::Label(strprintf(_("Effect: %s"), ""));
+ mWeightLabel = new gcn::Label(strprintf(_("Total Weight: %d - Maximum Weight: %d"), 0, 0));
mWeightLabel->setPosition(8, 8);
mInvenScroll->setPosition(8,
mWeightLabel->getY() + mWeightLabel->getHeight() + 5);
@@ -93,9 +93,8 @@ void InventoryWindow::logic()
updateButtons();
// Update weight information
- mWeightLabel->setCaption(
- "Total Weight: " + toString(player_node->getTotalWeight()) + " - "
- "Maximum Weight: " + toString(player_node->getMaxWeight()));
+ mWeightLabel->setCaption(strprintf(_("Total Weight: %d - Maximum Weight: %d"),
+ player_node->getTotalWeight(), player_node->getMaxWeight()));
mWeightLabel->adjustSize();
}
@@ -125,29 +124,18 @@ void InventoryWindow::action(const gcn::ActionEvent &event)
void InventoryWindow::selectionChanged(const SelectionEvent &event)
{
Item *item = mItems->getItem();
-
- // Update name, effect and description
- if (!item)
- {
- mItemNameLabel->setCaption("Name:");
- mItemEffectLabel->setCaption("Effect:");
- mItemDescriptionLabel->setCaption("Description:");
- }
- else
- {
- const ItemInfo& itemInfo = item->getInfo();
- std::string SomeText;
- SomeText = "Name: " + itemInfo.getName();
- mItemNameLabel->setCaption(SomeText);
- SomeText = "Effect: " + itemInfo.getEffect();
- mItemEffectLabel->setCaption(SomeText);
- SomeText = "Description: " + itemInfo.getDescription();
- mItemDescriptionLabel->setCaption(SomeText);
-
- mItemNameLabel->adjustSize();
- mItemEffectLabel->adjustSize();
- mItemDescriptionLabel->adjustSize();
- }
+ ItemInfo const *info = item ? &item->getInfo() : NULL;
+
+ mItemNameLabel->setCaption
+ (strprintf(_("Name: %s"), info ? info->getName().c_str() : ""));
+ mItemEffectLabel->setCaption
+ (strprintf(_("Effect: %s"), info ? info->getEffect().c_str() : ""));
+ mItemDescriptionLabel->setCaption
+ (strprintf(_("Description: %s"), info ? info->getDescription().c_str() : ""));
+
+ mItemNameLabel->adjustSize();
+ mItemEffectLabel->adjustSize();
+ mItemDescriptionLabel->adjustSize();
}
void InventoryWindow::mouseClicked(gcn::MouseEvent &event)
diff --git a/src/utils/strprintf.cpp b/src/utils/strprintf.cpp
new file mode 100644
index 00000000..27dd5462
--- /dev/null
+++ b/src/utils/strprintf.cpp
@@ -0,0 +1,53 @@
+/*
+ * The Mana World
+ * Copyright 2007 The Mana World Development Team
+ *
+ * This file is part of The Mana World.
+ *
+ * The Mana World is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * any later version.
+ *
+ * The Mana World is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with The Mana World; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ * $Id$
+ */
+
+#ifndef _TMW_UTILS_TOSTRING_H
+#define _TMW_UTISL_TOSTRING_H
+
+#include <cstdarg>
+
+#include "strprintf.h"
+
+std::string strprintf(char const *format, ...)
+{
+ char buf[256];
+ va_list(args);
+ va_start(args, format);
+ int nb = vsnprintf(buf, 256, format, args);
+ va_end(args);
+ if (nb < 256)
+ {
+ return buf;
+ }
+ // The static size was not big enough, try again with a dynamic allocation.
+ ++nb;
+ char *buf2 = new char[nb];
+ va_start(args, format);
+ vsnprintf(buf2, nb, format, args);
+ va_end(args);
+ std::string res(buf2);
+ delete [] buf2;
+ return res;
+}
+
+#endif
diff --git a/src/utils/strprintf.h b/src/utils/strprintf.h
new file mode 100644
index 00000000..4b5974a6
--- /dev/null
+++ b/src/utils/strprintf.h
@@ -0,0 +1,37 @@
+/*
+ * The Mana World
+ * Copyright 2007 The Mana World Development Team
+ *
+ * This file is part of The Mana World.
+ *
+ * The Mana World is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * any later version.
+ *
+ * The Mana World is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with The Mana World; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ * $Id$
+ */
+
+#ifndef _TMW_UTILS_STRPRINTF_H
+#define _TMW_UTISL_STRPRINTF_H
+
+#include <string>
+
+std::string strprintf(char const *, ...)
+#ifdef __GNUC__
+ /* This attribute is nice: it even works through gettext invokation. For
+ example, gcc will complain that strprintf(_("%s"), 42) is ill-formed. */
+ __attribute__((format(printf, 1, 2)))
+#endif
+;
+
+#endif