diff options
-rw-r--r-- | ChangeLog | 10 | ||||
-rw-r--r-- | po/fr.po | 33 | ||||
-rw-r--r-- | po/tmw.pot | 30 | ||||
-rw-r--r-- | src/Makefile.am | 2 | ||||
-rw-r--r-- | src/gui/inventorywindow.cpp | 50 | ||||
-rw-r--r-- | src/utils/strprintf.cpp | 53 | ||||
-rw-r--r-- | src/utils/strprintf.h | 37 |
7 files changed, 173 insertions, 42 deletions
@@ -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, @@ -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" @@ -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 |