diff --git a/CMakeLists.txt b/CMakeLists.txt index a80e7d32..399ae965 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -7,6 +7,32 @@ cmake_minimum_required(VERSION 2.8) project(colobot C CXX) +## +# Project version +## +set(COLOBOT_VERSION_CODENAME "Gold") +set(COLOBOT_VERSION_MAJOR 0) +set(COLOBOT_VERSION_MINOR 1) +set(COLOBOT_VERSION_REVISION 0) + +# Comment out when releasing +set(COLOBOT_VERSION_UNRELEASED "~pre-alpha") + +# Append git characteristics to version +if(DEFINED COLOBOT_VERSION_UNRELEASED AND EXISTS "${CMAKE_SOURCE_DIR}/.git") + find_package(Git) + execute_process(COMMAND ${GIT_EXECUTABLE} rev-parse --abbrev-ref HEAD + OUTPUT_VARIABLE GIT_BRANCH + OUTPUT_STRIP_TRAILING_WHITESPACE) + execute_process(COMMAND ${GIT_EXECUTABLE} rev-parse --short HEAD + OUTPUT_VARIABLE GIT_REVISION + OUTPUT_STRIP_TRAILING_WHITESPACE) + set(COLOBOT_VERSION_UNRELEASED "${COLOBOT_VERSION_UNRELEASED}-git-${GIT_BRANCH}~r${GIT_REVISION}") +endif() + +set(COLOBOT_VERSION_FULL "${COLOBOT_VERSION_MAJOR}.${COLOBOT_VERSION_MINOR}.${COLOBOT_VERSION_REVISION}${COLOBOT_VERSION_UNRELEASED}") +message(STATUS "Building Colobot \"${COLOBOT_VERSION_CODENAME}\" (${COLOBOT_VERSION_FULL})") + # Include cmake directory with some additional scripts set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${colobot_SOURCE_DIR}/cmake") @@ -127,7 +153,7 @@ if(${TESTS}) add_definitions(-DTEST_VIRTUAL=virtual) enable_testing() else() - add_definitions(-DTEST_VIRTUAL) + add_definitions(-DTEST_VIRTUAL=) endif() @@ -183,11 +209,11 @@ if(${TESTS}) endif() # Installation paths defined before compiling sources -set(COLOBOT_INSTALL_BIN_DIR ${CMAKE_INSTALL_PREFIX}/games CACHE PATH "Colobot binary directory") -set(COLOBOT_INSTALL_DATA_DIR ${CMAKE_INSTALL_PREFIX}/share/games/colobot CACHE PATH "Colobot shared data directory") -set(COLOBOT_INSTALL_LIB_DIR ${CMAKE_INSTALL_PREFIX}/lib/colobot CACHE PATH "Colobot libraries directory") -set(COLOBOT_INSTALL_DOC_DIR ${CMAKE_INSTALL_PREFIX}/share/doc/colobot CACHE PATH "Colobot documentation directory") -set(COLOBOT_INSTALL_I18N_DIR ${CMAKE_INSTALL_PREFIX}/share/locale CACHE PATH "Colobot translations directory") +set(COLOBOT_INSTALL_BIN_DIR games CACHE PATH "Colobot binary directory") +set(COLOBOT_INSTALL_DATA_DIR share/games/colobot CACHE PATH "Colobot shared data directory") +set(COLOBOT_INSTALL_LIB_DIR lib/colobot CACHE PATH "Colobot libraries directory") +set(COLOBOT_INSTALL_DOC_DIR share/doc/colobot CACHE PATH "Colobot documentation directory") +set(COLOBOT_INSTALL_I18N_DIR share/locale CACHE PATH "Colobot translations directory") # Subdirectory with sources add_subdirectory(src bin) diff --git a/src/CBot/CBotString.cpp b/src/CBot/CBotString.cpp index 4795b637..b1b5fc46 100644 --- a/src/CBot/CBotString.cpp +++ b/src/CBot/CBotString.cpp @@ -127,7 +127,8 @@ CBotString::CBotString() CBotString::~CBotString() { - free(m_ptr); //we can call free on null pointer as it's save + delete[] m_ptr; + m_ptr = nullptr; } @@ -138,7 +139,7 @@ CBotString::CBotString(const char* p) m_ptr = NULL; if (m_lg>0) { - m_ptr = static_cast<char*>(malloc(m_lg+1)); + m_ptr = new char[m_lg+1]; strcpy(m_ptr, p); } } @@ -150,7 +151,7 @@ CBotString::CBotString(const CBotString& srcString) m_ptr = NULL; if (m_lg>0) { - m_ptr = static_cast<char*>(malloc(m_lg+1)); + m_ptr = new char[m_lg+1]; strcpy(m_ptr, srcString.m_ptr); } } @@ -285,12 +286,12 @@ CBotString CBotString::Mid(int start, int lg) if ( lg < 0 ) lg = m_lg - start; - char* p = static_cast<char*>(malloc(m_lg+1)); + char* p = new char[m_lg+1]; strcpy(p, m_ptr+start); p[lg] = 0; res = p; - free(p); + delete[] p; return res; } @@ -314,15 +315,16 @@ void CBotString::MakeLower() bool CBotString::LoadString(unsigned int id) { - const char * str = NULL; + const char * str = nullptr; str = MapIdToString(static_cast<EID>(id)); - if (m_ptr != NULL) free(m_ptr); + if (m_ptr != nullptr) + delete[] m_ptr; m_lg = strlen(str); m_ptr = NULL; if (m_lg > 0) { - m_ptr = static_cast<char*>(malloc(m_lg+1)); + m_ptr = new char[m_lg+1]; strcpy(m_ptr, str); return true; } @@ -332,14 +334,14 @@ bool CBotString::LoadString(unsigned int id) const CBotString& CBotString::operator=(const CBotString& stringSrc) { - free(m_ptr); - m_ptr = NULL; + delete[] m_ptr; + m_ptr = nullptr; m_lg = stringSrc.m_lg; if (m_lg > 0) { - m_ptr = static_cast<char*>(malloc(m_lg+1)); + m_ptr = new char[m_lg+1]; strcpy(m_ptr, stringSrc.m_ptr); } @@ -355,13 +357,13 @@ CBotString operator+(const CBotString& string, const char * lpsz) const CBotString& CBotString::operator+(const CBotString& stringSrc) { - char* p = static_cast<char*>(malloc(m_lg+stringSrc.m_lg+1)); + char* p = new char[m_lg+stringSrc.m_lg+1]; if (m_ptr!=NULL) strcpy(p, m_ptr); char* pp = p + m_lg; if (stringSrc.m_ptr!=NULL) strcpy(pp, stringSrc.m_ptr); - free(m_ptr); + delete[] m_ptr; m_ptr = p; m_lg += stringSrc.m_lg; @@ -370,11 +372,11 @@ const CBotString& CBotString::operator+(const CBotString& stringSrc) const CBotString& CBotString::operator=(const char ch) { - free(m_ptr); + delete[] m_ptr; m_lg = 1; - m_ptr = static_cast<char*>(malloc(2)); + m_ptr = new char[2]; m_ptr[0] = ch; m_ptr[1] = 0; @@ -383,16 +385,16 @@ const CBotString& CBotString::operator=(const char ch) const CBotString& CBotString::operator=(const char* pString) { - free(m_ptr); - m_ptr = NULL; + delete[] m_ptr; + m_ptr = nullptr; - if (pString != NULL) + if (pString != nullptr) { m_lg = strlen(pString); if (m_lg != 0) { - m_ptr = static_cast<char*>(malloc(m_lg+1)); + m_ptr = new char[m_lg+1]; strcpy(m_ptr, pString); } } @@ -403,13 +405,13 @@ const CBotString& CBotString::operator=(const char* pString) const CBotString& CBotString::operator+=(const char ch) { - char* p = static_cast<char*>(malloc(m_lg+2)); + char* p = new char[m_lg+2]; - if (m_ptr!=NULL) strcpy(p, m_ptr); + if (m_ptr != nullptr) strcpy(p, m_ptr); p[m_lg++] = ch; p[m_lg] = 0; - free(m_ptr); + delete[] m_ptr; m_ptr = p; @@ -418,7 +420,7 @@ const CBotString& CBotString::operator+=(const char ch) const CBotString& CBotString::operator+=(const CBotString& str) { - char* p = static_cast<char*>(malloc(m_lg+str.m_lg+1)); + char* p = new char[m_lg+str.m_lg+1]; strcpy(p, m_ptr); char* pp = p + m_lg; @@ -426,7 +428,7 @@ const CBotString& CBotString::operator+=(const CBotString& str) m_lg = m_lg + str.m_lg; - free(m_ptr); + delete[] m_ptr; m_ptr = p; @@ -500,8 +502,8 @@ bool CBotString::IsEmpty() const void CBotString::Empty() { - free(m_ptr); - m_ptr = NULL; + delete[] m_ptr; + m_ptr = nullptr; m_lg = 0; } diff --git a/src/app/app.cpp b/src/app/app.cpp index 118e1006..c936ac11 100644 --- a/src/app/app.cpp +++ b/src/app/app.cpp @@ -246,7 +246,7 @@ ParseArgsStatus CApplication::ParseArguments(int argc, char *argv[]) else if (arg == "-help") { GetLogger()->Message("\n"); - GetLogger()->Message("COLOBOT GOLD pre-alpha\n"); + GetLogger()->Message("Colobot %s (%s)\n",COLOBOT_CODENAME,COLOBOT_VERSION); GetLogger()->Message("\n"); GetLogger()->Message("List of available options:\n"); GetLogger()->Message(" -help this help\n"); @@ -285,67 +285,32 @@ bool CApplication::Create() return false; } - /* Gettext initialization */ - - std::string locale = ""; - switch (m_language) - { - default: - case LANGUAGE_ENV: - locale = ""; - break; - - case LANGUAGE_ENGLISH: - locale = "en_US.utf8"; - break; - - case LANGUAGE_GERMAN: - locale = "de_DE.utf8"; - break; - - case LANGUAGE_FRENCH: - locale = "fr_FR.utf8"; - break; - - case LANGUAGE_POLISH: - locale = "pl_PL.utf8"; - break; - } - - std::string langStr = "LANGUAGE="; - langStr += locale; - strcpy(S_LANGUAGE, langStr.c_str()); - putenv(S_LANGUAGE); - setlocale(LC_ALL, locale.c_str()); - GetLogger()->Debug("Set locale to '%s'\n", locale.c_str()); - - bindtextdomain("colobot", COLOBOT_I18N_DIR); - bind_textdomain_codeset("colobot", "UTF-8"); - textdomain("colobot"); - - GetLogger()->Debug("Testing gettext translation: '%s'\n", gettext("Colobot rules!")); + SetLanguage(m_language); //Create the sound instance. - if (!GetProfile().InitCurrentDirectory()) { + if (!GetProfile().InitCurrentDirectory()) + { GetLogger()->Warn("Config not found. Default values will be used!\n"); m_sound = new CSoundInterface(); - } else { + } + else + { std::string path; if (GetProfile().GetLocalProfileString("Resources", "Data", path)) m_dataPath = path; - #ifdef OPENAL_SOUND - m_sound = static_cast<CSoundInterface *>(new ALSound()); - #else - GetLogger()->Info("No sound support.\n"); - m_sound = new CSoundInterface(); - #endif + #ifdef OPENAL_SOUND + m_sound = static_cast<CSoundInterface *>(new ALSound()); + #else + GetLogger()->Info("No sound support.\n"); + m_sound = new CSoundInterface(); + #endif m_sound->Create(true); if (GetProfile().GetLocalProfileString("Resources", "Sound", path)) m_sound->CacheAll(path); else - m_sound->CacheAll(m_dataPath); + m_sound->CacheAll(GetDataSubdirPath(DIR_SOUND)); } std::string standardInfoMessage = @@ -1418,9 +1383,20 @@ std::string CApplication::GetDataDirPath() return m_dataPath; } -std::string CApplication::GetDataFilePath(DataDir dataDir, const std::string& subpath) +std::string CApplication::GetDataSubdirPath(DataDir stdDir) { - int index = static_cast<int>(dataDir); + int index = static_cast<int>(stdDir); + assert(index >= 0 && index < DIR_MAX); + std::stringstream str; + str << m_dataPath; + str << "/"; + str << m_dataDirs[index]; + return str.str(); +} + +std::string CApplication::GetDataFilePath(DataDir stdDir, const std::string& subpath) +{ + int index = static_cast<int>(stdDir); assert(index >= 0 && index < DIR_MAX); std::stringstream str; str << m_dataPath; @@ -1431,23 +1407,104 @@ std::string CApplication::GetDataFilePath(DataDir dataDir, const std::string& su return str.str(); } -std::string CApplication::GetDataFilePath(const std::string& subpath) -{ - std::stringstream str; - str << m_dataPath; - str << "/"; - str << subpath; - return str.str(); -} - Language CApplication::GetLanguage() { return m_language; } +char CApplication::GetLanguageChar() +{ + char langChar = 'E'; + switch (m_language) + { + default: + case LANGUAGE_ENV: + case LANGUAGE_ENGLISH: + langChar = 'E'; + break; + + case LANGUAGE_GERMAN: + langChar = 'D'; + break; + + case LANGUAGE_FRENCH: + langChar = 'F'; + break; + + case LANGUAGE_POLISH: + langChar = 'P'; + break; + } + return langChar; +} + void CApplication::SetLanguage(Language language) { m_language = language; + + /* Gettext initialization */ + + std::string locale = ""; + switch (m_language) + { + default: + case LANGUAGE_ENV: + locale = ""; + break; + + case LANGUAGE_ENGLISH: + locale = "en_US.utf8"; + break; + + case LANGUAGE_GERMAN: + locale = "de_DE.utf8"; + break; + + case LANGUAGE_FRENCH: + locale = "fr_FR.utf8"; + break; + + case LANGUAGE_POLISH: + locale = "pl_PL.utf8"; + break; + } + + if (locale.empty()) + { + char *envLang = getenv("LANGUAGE"); + if (strncmp(envLang,"en",2) == 0) + { + m_language = LANGUAGE_ENGLISH; + } + else if (strncmp(envLang,"de",2) == 0) + { + m_language = LANGUAGE_GERMAN; + } + else if (strncmp(envLang,"fr",2) == 0) + { + m_language = LANGUAGE_FRENCH; + } + else if (strncmp(envLang,"po",2) == 0) + { + m_language = LANGUAGE_POLISH; + } + GetLogger()->Trace("SetLanguage: Inherit LANGUAGE=%s from environment\n", envLang); + } + else + { + std::string langStr = "LANGUAGE="; + langStr += locale; + strcpy(S_LANGUAGE, langStr.c_str()); + putenv(S_LANGUAGE); + GetLogger()->Trace("SetLanguage: Set LANGUAGE=%s in environment\n", locale.c_str()); + } + setlocale(LC_ALL, ""); + + bindtextdomain("colobot", COLOBOT_I18N_DIR); + bind_textdomain_codeset("colobot", "UTF-8"); + textdomain("colobot"); + + GetLogger()->Debug("SetLanguage: Test gettext translation: '%s'\n", gettext("Colobot rules!")); } void CApplication::SetLowCPU(bool low) diff --git a/src/app/app.h b/src/app/app.h index 5bf68676..2da20d35 100644 --- a/src/app/app.h +++ b/src/app/app.h @@ -285,15 +285,16 @@ public: //! Returns the full path to data directory std::string GetDataDirPath(); - //! Returns the full path to a file in data directory given standard dir and subpath - std::string GetDataFilePath(DataDir dir, const std::string &subpath); + //! Returns the full path to a standard dir in data directory + std::string GetDataSubdirPath(DataDir stdDir); - //! Returns the full path to a file in data directory given custom subpath in data dir - std::string GetDataFilePath(const std::string &subpath); + //! Returns the full path to a file in data directory given standard dir and subpath + std::string GetDataFilePath(DataDir stdDir, const std::string &subpath); //! Management of language //@{ Language GetLanguage(); + char GetLanguageChar(); void SetLanguage(Language language); //@} diff --git a/src/common/config.h.cmake b/src/common/config.h.cmake index dd280a38..022bb692 100644 --- a/src/common/config.h.cmake +++ b/src/common/config.h.cmake @@ -8,6 +8,10 @@ #cmakedefine USE_GLEW @USE_GLEW@ #cmakedefine GLEW_STATIC +#define COLOBOT_VERSION "@COLOBOT_VERSION_FULL@" +#define COLOBOT_CODENAME "@COLOBOT_VERSION_CODENAME@" +#define COLOBOT_FULLNAME "Colobot @COLOBOT_VERSION_CODENAME@" + #define COLOBOT_DEFAULT_DATADIR "@COLOBOT_INSTALL_DATA_DIR@" #define COLOBOT_I18N_DIR "@COLOBOT_INSTALL_I18N_DIR@" diff --git a/src/common/image.cpp b/src/common/image.cpp index f3cfa347..ef8097ea 100644 --- a/src/common/image.cpp +++ b/src/common/image.cpp @@ -124,14 +124,14 @@ bool PNGSaveSurface(const char *filename, SDL_Surface *surf) png_write_info(png_ptr, info_ptr); png_set_packing(png_ptr); - row_pointers = static_cast<png_bytep*>( malloc(sizeof(png_bytep)*surf->h) ); + row_pointers = new png_bytep[surf->h]; for (i = 0; i < surf->h; i++) row_pointers[i] = static_cast<png_bytep>( static_cast<Uint8 *>(surf->pixels) ) + i*surf->pitch; png_write_image(png_ptr, row_pointers); png_write_end(png_ptr, info_ptr); /* Cleaning out... */ - free(row_pointers); + delete[] row_pointers; png_destroy_write_struct(&png_ptr, &info_ptr); fclose(fp); diff --git a/src/common/restext.cpp b/src/common/restext.cpp index da061313..4c56ae5d 100644 --- a/src/common/restext.cpp +++ b/src/common/restext.cpp @@ -17,6 +17,8 @@ #include "common/restext.h" +#include "common/config.h" + #include "common/global.h" #include "common/event.h" #include "common/logger.h" @@ -39,7 +41,7 @@ const char* stringsCbot[TX_MAX] = { nullptr }; void InitializeRestext() { - stringsText[RT_VERSION_ID] = "Colobot Gold"; + stringsText[RT_VERSION_ID] = COLOBOT_FULLNAME; stringsText[RT_DISINFO_TITLE] = "SatCom"; stringsText[RT_WINDOW_MAXIMIZED] = "Maximize"; diff --git a/src/desktop/.gitignore b/src/desktop/.gitignore new file mode 100644 index 00000000..bade6f32 --- /dev/null +++ b/src/desktop/.gitignore @@ -0,0 +1 @@ +lang/ diff --git a/src/desktop/CMakeLists.txt b/src/desktop/CMakeLists.txt index cc159a9c..ce4f48d5 100644 --- a/src/desktop/CMakeLists.txt +++ b/src/desktop/CMakeLists.txt @@ -37,6 +37,41 @@ if(RSVG_CONVERT) endforeach() endif() +# Create manpage from pod-formatted file +find_program(POD2MAN pod2man) +if(POD2MAN) + set(COLOBOT_MANPAGE_SECTION 6) + + macro(podman) + cmake_parse_arguments(PM "" "PODFILE;LOCALE;" "" ${ARGN}) + if(PM_LOCALE) + # This copes with the fact that english has no "/LANG" in the paths and filenames. + set(SLASHLOCALE /${PM_LOCALE}) + endif() + file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}${SLASHLOCALE}) + add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}${SLASHLOCALE}/colobot.${COLOBOT_MANPAGE_SECTION} + DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${PM_PODFILE} + COMMAND ${POD2MAN} ARGS --section=${COLOBOT_MANPAGE_SECTION} + --center="Colobot" --stderr --utf8 + --release="${COLOBOT_VERSION_FULL}" + ${CMAKE_CURRENT_SOURCE_DIR}/${PM_PODFILE} + ${CMAKE_CURRENT_BINARY_DIR}${SLASHLOCALE}/colobot.${COLOBOT_MANPAGE_SECTION} + COMMENT "Create ${SLASHLOCALE}/colobot.${COLOBOT_MANPAGE_SECTION} manpage" + ) + add_custom_target(man${PM_LOCALE} ALL DEPENDS ${CMAKE_CURRENT_BINARY_DIR}${SLASHLOCALE}/colobot.${COLOBOT_MANPAGE_SECTION}) + + install( + FILES ${CMAKE_CURRENT_BINARY_DIR}${SLASHLOCALE}/colobot.${COLOBOT_MANPAGE_SECTION} + DESTINATION ${CMAKE_INSTALL_PREFIX}/share/man${SLASHLOCALE}/man${COLOBOT_MANPAGE_SECTION}/ ) + + add_dependencies(man man${PM_LOCALE}) + endmacro() + + # Create the english manpage + podman(PODFILE colobot.pod) + +endif() + # Translate translatable material find_program(PO4A po4a) @@ -46,4 +81,17 @@ if(PO4A) WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} ) add_dependencies(desktopfile desktop_po4a) + + if(POD2MAN) + add_custom_target(man_po4a + COMMAND ${PO4A} po4a.cfg + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} + ) + add_dependencies(man man_po4a) + file(GLOB LINGUAS_PO RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}/po/ ${CMAKE_CURRENT_SOURCE_DIR}/po/*.po) + string(REGEX REPLACE ".po$" "" LINGUAS ${LINGUAS_PO}) + foreach(LOCALE ${LINGUAS}) + podman(PODFILE lang/${LOCALE}/colobot.pod LOCALE ${LOCALE}) + endforeach() + endif() endif() diff --git a/src/desktop/colobot.pod b/src/desktop/colobot.pod new file mode 100644 index 00000000..2fc3a00c --- /dev/null +++ b/src/desktop/colobot.pod @@ -0,0 +1,47 @@ +=encoding utf8 + +=head1 COLOBOT + +colobot - educational programming strategy game + +=head1 SYNOPSIS + +B<colobot> [B<-datadir> I<path>] [B<-debug>] [B<-loglevel> I<level>] [B<-language> I<lang>] + +=head1 DESCRIPTION + +Colobot (Colonize with Bots) is an educational game aiming to teach +programming through entertainment. You are playing as an astronaut on a +journey with robot helpers to find a planet for colonization. It features 3D +real-time graphics and a C++ and Java-like, object-oriented language, CBOT, +which can be used to program the robots available in the game. + +=head1 OPTIONS + +=over 8 + +=item B<-help> + +Display a short help text + +=item B<-datadir> F</path/to/data/> + +Set custom data directory path + +=item B<-debug> + +Enable debug mode (more info printed in logs) + +=item B<-loglevel> I<level> + +Set log level. Possible choices are: trace, debug, info, warn, error, none. + +=item B<-language> I<lang> + +Set language. Note that you can also fill the B<LANG> environment variable. + +=back + +=head1 AUTHOR + +This manpage was written by Didier Raboud <S<odyx@debian.org>>. diff --git a/src/desktop/po/colobot-desktop.pot b/src/desktop/po/colobot-desktop.pot index e74136a9..17e60c3b 100644 --- a/src/desktop/po/colobot-desktop.pot +++ b/src/desktop/po/colobot-desktop.pot @@ -7,13 +7,13 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2012-12-26 15:05+0100\n" +"POT-Creation-Date: 2012-12-27 10:59+0100\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" "Language: \n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=CHARSET\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: colobot.ini:1 @@ -30,3 +30,105 @@ msgstr "" #, no-wrap msgid "Colonize with bots" msgstr "" + +#. type: =head1 +#: colobot.pod:3 +msgid "COLOBOT" +msgstr "" + +#. type: textblock +#: colobot.pod:5 +msgid "colobot - educational programming strategy game" +msgstr "" + +#. type: =head1 +#: colobot.pod:7 +msgid "SYNOPSIS" +msgstr "" + +#. type: textblock +#: colobot.pod:9 +msgid "" +"B<colobot> [B<-datadir> I<path>] [B<-debug>] [B<-loglevel> I<level>] " +"[B<-language> I<lang>]" +msgstr "" + +#. type: =head1 +#: colobot.pod:11 +msgid "DESCRIPTION" +msgstr "" + +#. type: textblock +#: colobot.pod:13 +msgid "" +"Colobot (Colonize with Bots) is an educational game aiming to teach " +"programming through entertainment. You are playing as an astronaut on a " +"journey with robot helpers to find a planet for colonization. It features 3D " +"real-time graphics and a C++ and Java-like, object-oriented language, CBOT, " +"which can be used to program the robots available in the game." +msgstr "" + +#. type: =head1 +#: colobot.pod:19 +msgid "OPTIONS" +msgstr "" + +#. type: =item +#: colobot.pod:23 +msgid "B<-help>" +msgstr "" + +#. type: textblock +#: colobot.pod:25 +msgid "Display a short help text" +msgstr "" + +#. type: =item +#: colobot.pod:27 +msgid "B<-datadir> F</path/to/data/>" +msgstr "" + +#. type: textblock +#: colobot.pod:29 +msgid "Set custom data directory path" +msgstr "" + +#. type: =item +#: colobot.pod:31 +msgid "B<-debug>" +msgstr "" + +#. type: textblock +#: colobot.pod:33 +msgid "Enable debug mode (more info printed in logs)" +msgstr "" + +#. type: =item +#: colobot.pod:35 +msgid "B<-loglevel> I<level>" +msgstr "" + +#. type: textblock +#: colobot.pod:37 +msgid "Set log level. Possible choices are: trace, debug, info, warn, error, none." +msgstr "" + +#. type: =item +#: colobot.pod:39 +msgid "B<-language> I<lang>" +msgstr "" + +#. type: textblock +#: colobot.pod:41 +msgid "Set language. Note that you can also fill the B<LANG> environment variable." +msgstr "" + +#. type: =head1 +#: colobot.pod:45 +msgid "AUTHOR" +msgstr "" + +#. type: textblock +#: colobot.pod:47 +msgid "This manpage was written by Didier Raboud <S<odyx@debian.org>>." +msgstr "" diff --git a/src/desktop/po/fr.po b/src/desktop/po/fr.po index 63dbb239..4709d491 100644 --- a/src/desktop/po/fr.po +++ b/src/desktop/po/fr.po @@ -1,13 +1,13 @@ # French translations for PACKAGE package # Copyright (C) 2012 Free Software Foundation, Inc. # This file is distributed under the same license as the PACKAGE package. -# Automatically generated, 2012. # +# Didier Raboud <odyx@debian.org>, 2012. msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2012-12-26 15:05+0100\n" -"PO-Revision-Date: 2012-12-26 15:05+0100\n" +"POT-Creation-Date: 2012-12-27 10:55+0100\n" +"PO-Revision-Date: 2012-12-27 11:00+0100\n" "Last-Translator: Didier Raboud <odyx@debian.org>\n" "Language-Team: none\n" "Language: fr\n" @@ -30,3 +30,124 @@ msgstr "Apprentissage de la programmation par le jeu" #, no-wrap msgid "Colonize with bots" msgstr "Colonise avec des roBots" + +#. type: =head1 +#: colobot.pod:3 +msgid "COLOBOT" +msgstr "COLOBOT" + +#. type: textblock +#: colobot.pod:5 +msgid "colobot - educational programming strategy game" +msgstr "colobot - Jeu éducatif de stratégie et de programmation" + +#. type: =head1 +#: colobot.pod:7 +msgid "SYNOPSIS" +msgstr "RÉSUMÉ" + +#. type: textblock +#: colobot.pod:9 +msgid "" +"B<colobot> [B<-datadir> I<path>] [B<-debug>] [B<-loglevel> I<level>] [B<-" +"language> I<lang>]" +msgstr "" +"B<colobot> [B<-datadir> I<chemin>] [B<-debug>] [B<-loglevel> I<niveau>] [B<-" +"language> I<code-de-langue>]" + +#. type: =head1 +#: colobot.pod:11 +msgid "DESCRIPTION" +msgstr "DESCRIPTION" + +#. type: textblock +#: colobot.pod:13 +msgid "" +"Colobot (Colonize with Bots) is an educational game aiming to teach " +"programming through entertainment. You are playing as an astronaut on a " +"journey with robot helpers to find a planet for colonization. It features 3D " +"real-time graphics and a C++ and Java-like, object-oriented language, CBOT, " +"which can be used to program the robots available in the game." +msgstr "" +"Colobot (Colonise avec des roBots) est un jeu éducatif visant à " +"l'enseignement de la programmation par le jeu. Vous jouez un astronaute en " +"voyage avec des robots à la recherche d'une planète à coloniser. Son " +"interface est en trois-dimensions et en temps réel; le language utilisé " +"(CBOT) ressemble au C++ et à Java et peut être utilisé pour programmer les " +"robots disponibles dans le jeu." + +#. type: =head1 +#: colobot.pod:19 +msgid "OPTIONS" +msgstr "OPTIONS" + +#. type: =item +#: colobot.pod:23 +msgid "B<-help>" +msgstr "B<-help>" + +#. type: textblock +#: colobot.pod:25 +msgid "Display a short help text" +msgstr "Affiche un court texte d'aide" + +#. type: =item +#: colobot.pod:27 +msgid "B<-datadir> F</path/to/data/>" +msgstr "B<-datadir> F</chemin/vers/les/donnes/>" + +#. type: textblock +#: colobot.pod:29 +msgid "Set custom data directory path" +msgstr "Définit le chemin vers un répertoire de données spécifique" + +#. type: =item +#: colobot.pod:31 +msgid "B<-debug>" +msgstr "B<-debug>" + +#. type: textblock +#: colobot.pod:33 +msgid "Enable debug mode (more info printed in logs)" +msgstr "" +"Active le mode de déboguage (plus d'informations sont affichées dans le " +"journal)" + +#. type: =item +#: colobot.pod:35 +msgid "B<-loglevel> I<level>" +msgstr "B<-loglevel> I<niveau>" + +#. type: textblock +#: colobot.pod:37 +msgid "" +"Set log level. Possible choices are: trace, debug, info, warn, error, none." +msgstr "" +"Définit le niveau de journalisation parmi: trace, debug, info, warn, error, " +"none." + +#. type: =item +#: colobot.pod:39 +msgid "B<-language> I<lang>" +msgstr "B<-language> I<langue>" + +#. type: textblock +#: colobot.pod:41 +msgid "" +"Set language. Note that you can also fill the B<LANG> environment variable." +msgstr "" +"Définit la langue. Il est aussi possible d'utiliser la variable " +"d'environnement B<LANG>." + +#. type: =head1 +#: colobot.pod:45 +msgid "AUTHOR" +msgstr "Auteur" + +#. type: textblock +#: colobot.pod:47 +msgid "This manpage was written by Didier Raboud <S<odyx@debian.org>>." +msgstr "" +"Cette page de manuel a été écrite et traduite par Didier Raboud " +"<S<odyx@debian.org>>." + diff --git a/src/desktop/po4a.cfg b/src/desktop/po4a.cfg index eda29859..c2519590 100644 --- a/src/desktop/po4a.cfg +++ b/src/desktop/po4a.cfg @@ -1,3 +1,4 @@ [po_directory] po/ [type:ini] colobot.ini $lang:lang/$lang/colobot.ini +[type:pod] colobot.pod $lang:lang/$lang/colobot.pod diff --git a/src/graphics/engine/text.cpp b/src/graphics/engine/text.cpp index 66c73a9f..101e01a4 100644 --- a/src/graphics/engine/text.cpp +++ b/src/graphics/engine/text.cpp @@ -677,7 +677,7 @@ void CText::DrawCharAndAdjustPos(UTF8Char ch, FontType font, float size, Math::P return; int width = 1; - if (ch.c1 < 32) { // FIXME add support for chars with code 9 10 23 + if (ch.c1 > 0 && ch.c1 < 32) { // FIXME add support for chars with code 9 10 23 ch.c1 = ' '; ch.c2 = 0; ch.c3 = 0; diff --git a/src/object/brain.cpp b/src/object/brain.cpp index 4ce1bf88..ef7309d5 100644 --- a/src/object/brain.cpp +++ b/src/object/brain.cpp @@ -99,7 +99,7 @@ CBrain::CBrain(CInstanceManager* iMan, CObject* object) m_selScript = 0; m_bTraceRecord = false; - m_traceRecordBuffer = 0; + m_traceRecordBuffer = nullptr; } // Object's destructor. @@ -111,12 +111,21 @@ CBrain::~CBrain() for ( i=0 ; i<BRAINMAXSCRIPT ; i++ ) { delete m_script[i]; + m_script[i] = nullptr; } delete m_primaryTask; + m_primaryTask = nullptr; + delete m_secondaryTask; + m_secondaryTask = nullptr; + delete m_studio; - delete m_traceRecordBuffer; + m_studio = nullptr; + + delete[] m_traceRecordBuffer; + m_traceRecordBuffer = nullptr; + m_iMan->DeleteInstance(CLASS_BRAIN, this); } @@ -2791,8 +2800,8 @@ void CBrain::TraceRecordStart() m_traceColor = -1; } - delete m_traceRecordBuffer; - m_traceRecordBuffer = static_cast<TraceRecord*>(malloc(sizeof(TraceRecord)*MAXTRACERECORD)); + delete[] m_traceRecordBuffer; + m_traceRecordBuffer = new TraceRecord[MAXTRACERECORD]; m_traceRecordIndex = 0; } @@ -2858,10 +2867,10 @@ void CBrain::TraceRecordStop() int max, i; char* buffer; - if ( m_traceRecordBuffer == 0 ) return; + if ( m_traceRecordBuffer == nullptr ) return; max = 10000; - buffer = static_cast<char*>(malloc(max)); + buffer = new char[max]; *buffer = 0; strncat(buffer, "extern void object::AutoDraw()\n{\n", max-1); @@ -2892,8 +2901,8 @@ void CBrain::TraceRecordStop() } TraceRecordPut(buffer, max, lastOper, lastParam); - delete m_traceRecordBuffer; - m_traceRecordBuffer = 0; + delete[] m_traceRecordBuffer; + m_traceRecordBuffer = nullptr; strncat(buffer, "}\n", max-1); buffer[max-1] = 0; @@ -2904,7 +2913,7 @@ void CBrain::TraceRecordStop() m_script[i] = new CScript(m_iMan, m_object, &m_secondaryTask); } m_script[i]->SendScript(buffer); - delete buffer; + delete[] buffer; } // Saves an instruction CBOT. diff --git a/src/object/robotmain.cpp b/src/object/robotmain.cpp index d5805d0b..aa2fe225 100644 --- a/src/object/robotmain.cpp +++ b/src/object/robotmain.cpp @@ -3808,16 +3808,16 @@ void CRobotMain::CreateScene(bool soluce, bool fixScene, bool resetObject) } } - // TODO: language letters - sprintf(op, "Title.%c", 'E' /*GetLanguageLetter()*/); + // TODO: Fallback to an non-localized entry + sprintf(op, "Title.%c", m_app->GetLanguageChar()); if (Cmd(line, op) && !resetObject) OpString(line, "text", m_title); - sprintf(op, "Resume.%c", 'E' /*GetLanguageLetter()*/); + sprintf(op, "Resume.%c", m_app->GetLanguageChar()); if (Cmd(line, op) && !resetObject) OpString(line, "text", m_resume); - sprintf(op, "ScriptName.%c", 'E' /*GetLanguageLetter()*/); + sprintf(op, "ScriptName.%c", m_app->GetLanguageChar()); if (Cmd(line, op) && !resetObject) OpString(line, "text", m_scriptName); diff --git a/src/object/task/taskgoto.cpp b/src/object/task/taskgoto.cpp index ce778ef4..cab57f1c 100644 --- a/src/object/task/taskgoto.cpp +++ b/src/object/task/taskgoto.cpp @@ -2119,7 +2119,7 @@ bool CTaskGoto::BitmapOpen() BitmapClose(); m_bmSize = static_cast<int>(3200.0f/BM_DIM_STEP); - m_bmArray = static_cast<unsigned char*>(malloc(m_bmSize*m_bmSize/8*2)); + m_bmArray = new unsigned char[m_bmSize*m_bmSize/8*2]; memset(m_bmArray, 0, m_bmSize*m_bmSize/8*2); m_bmOffset = m_bmSize/2; @@ -2137,7 +2137,7 @@ bool CTaskGoto::BitmapOpen() bool CTaskGoto::BitmapClose() { - free(m_bmArray); + delete[] m_bmArray; m_bmArray = 0; return true; } diff --git a/src/po/CMakeLists.txt b/src/po/CMakeLists.txt index 3b26571f..df667dd1 100644 --- a/src/po/CMakeLists.txt +++ b/src/po/CMakeLists.txt @@ -6,14 +6,13 @@ find_program(XGETTEXT_CMD xgettext) add_custom_command(OUTPUT ${_potFile} COMMAND ${XGETTEXT_CMD} ../app/app.cpp --output=${_potFile} - COMMAND ${XGETTEXT_CMD} ../common/restext_strings.c --output=${_potFile} --join-existing --extract-all --no-location + COMMAND ${XGETTEXT_CMD} ../common/restext.cpp --output=${_potFile} --join-existing --extract-all --no-location WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} COMMENT "Extract translatable messages to ${_potFile}" ) -add_custom_target(_${potFile} ${_all} DEPENDS ${_potFile}) +add_custom_target(update-pot DEPENDS ${_potFile}) file(GLOB _poFiles *.po) - gettext_create_translations(${_potFile} ALL ${_poFiles}) diff --git a/src/po/colobot.pot b/src/po/colobot.pot index d0a9c128..e1f9dc74 100644 --- a/src/po/colobot.pot +++ b/src/po/colobot.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-12-13 21:46+0100\n" +"POT-Creation-Date: 2012-12-27 17:09+0100\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" @@ -20,9 +20,6 @@ msgstr "" msgid "Colobot rules!" msgstr "" -msgid "Colobot Gold" -msgstr "" - msgid "SatCom" msgstr "" @@ -1436,7 +1433,7 @@ msgstr "" msgid "Program infected by a virus" msgstr "" -msgid "Infected by a virus, temporarily out of order" +msgid "Infected by a virus; temporarily out of order" msgstr "" msgid "Impossible when swimming" @@ -1464,7 +1461,7 @@ msgstr "" msgid "Building destroyed" msgstr "" -msgid "Can not create this, there are too many objects" +msgid "Can not create this; there are too many objects" msgstr "" #, c-format @@ -1528,10 +1525,10 @@ msgstr "" msgid "Found a site for a derrick" msgstr "" -msgid "<<< Well done, mission accomplished >>>" +msgid "<<< Well done; mission accomplished >>>" msgstr "" -msgid "<<< Sorry, mission failed >>>" +msgid "<<< Sorry; mission failed >>>" msgstr "" msgid "Current mission saved" @@ -1612,7 +1609,7 @@ msgstr "" msgid "Instruction \"break\" outside a loop" msgstr "" -msgid "A label must be followed by \"for\", \"while\", \"do\" or \"switch\"" +msgid "A label must be followed by \"for\"; \"while\"; \"do\" or \"switch\"" msgstr "" msgid "This label does not exist" @@ -1734,3 +1731,88 @@ msgstr "" msgid "Write error" msgstr "" + +msgid "left;" +msgstr "" + +msgid "right;" +msgstr "" + +msgid "up;" +msgstr "" + +msgid "down;" +msgstr "" + +msgid "gup;" +msgstr "" + +msgid "gdown;" +msgstr "" + +msgid "camera;" +msgstr "" + +msgid "desel;" +msgstr "" + +msgid "action;" +msgstr "" + +msgid "near;" +msgstr "" + +msgid "away;" +msgstr "" + +msgid "next;" +msgstr "" + +msgid "human;" +msgstr "" + +msgid "quit;" +msgstr "" + +msgid "help;" +msgstr "" + +msgid "prog;" +msgstr "" + +msgid "cbot;" +msgstr "" + +msgid "visit;" +msgstr "" + +msgid "speed10;" +msgstr "" + +msgid "speed15;" +msgstr "" + +msgid "speed20;" +msgstr "" + +#, c-format +msgid "GetResource event num out of range: %d\n" +msgstr "" + +msgid "Ctrl" +msgstr "" + +msgid "Shift" +msgstr "" + +msgid "Alt" +msgstr "" + +msgid "Win" +msgstr "" + +msgid "Button %1" +msgstr "" + +msgid "%1" +msgstr "" diff --git a/src/po/de.po b/src/po/de.po index bbd0b776..2992cb1b 100644 --- a/src/po/de.po +++ b/src/po/de.po @@ -1,7 +1,7 @@ msgid "" msgstr "" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-12-13 21:46+0100\n" +"POT-Creation-Date: 2012-12-27 17:09+0100\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -64,6 +64,9 @@ msgstr "Es fehlt eine geschlossene eckige Klammer \" ] \"" msgid "\"%s\" missing in this exercise" msgstr "Es fehlt \"%s\" in Ihrem Programm" +msgid "%1" +msgstr "" + msgid "..behind" msgstr "..hinten" @@ -85,13 +88,16 @@ msgstr "3D-Geräusche\\Orten der Geräusche im Raum" msgid "<< Back \\Back to the previous screen" msgstr "<< Zurück \\Zurück zum Hauptmenü" -msgid "<<< Sorry, mission failed >>>" +#, fuzzy +msgid "<<< Sorry; mission failed >>>" msgstr "<<< Mission gescheitert >>>" -msgid "<<< Well done, mission accomplished >>>" +#, fuzzy +msgid "<<< Well done; mission accomplished >>>" msgstr "<<< Bravo, Mission vollendet >>>" -msgid "A label must be followed by \"for\", \"while\", \"do\" or \"switch\"" +#, fuzzy +msgid "A label must be followed by \"for\"; \"while\"; \"do\" or \"switch\"" msgstr "" "Ein Label kann nur vor den Anweisungen \"for\", \"while\", \"do\" oder " "\"switch\" vorkommen" @@ -122,6 +128,9 @@ msgstr "Insektenkönigin tödlich verwundet" msgid "Already carrying something" msgstr "Trägt schon etwas" +msgid "Alt" +msgstr "Alt" + msgid "Analysis already performed" msgstr "Analyse schon durchgeführt" @@ -299,6 +308,9 @@ msgstr "Gebäude zerstört" msgid "Building too close" msgstr "Gebäude zu nahe" +msgid "Button %1" +msgstr "Knopf %1" + msgid "COLOBOT" msgstr "COLOBOT" @@ -326,7 +338,8 @@ msgstr "Kamera links" msgid "Camera to right" msgstr "Kamera rechts" -msgid "Can not create this, there are too many objects" +#, fuzzy +msgid "Can not create this; there are too many objects" msgstr "Kein neues Objekt kann erstellt werden (zu viele vorhanden)" msgid "Can't open file" @@ -365,9 +378,6 @@ msgstr "Schließen" msgid "Closing bracket missing " msgstr "Es fehlt eine geschlossene Klammer \")\"" -msgid "Colobot Gold" -msgstr "Colobot Gold" - msgid "Colobot rules!" msgstr "Colobot ist wunderbar!" @@ -404,6 +414,9 @@ msgstr "Kopieren" msgid "Copy (Ctrl+c)" msgstr "Kopieren (Ctrl+c)" +msgid "Ctrl" +msgstr "Ctrl" + msgid "Current mission saved" msgstr "Mission gespeichert" @@ -610,6 +623,10 @@ msgstr "Spiel\\Gameplay Einstellungen" msgid "Gantry crane" msgstr "Träger" +#, c-format +msgid "GetResource event num out of range: %d\n" +msgstr "" + msgid "Goto: destination occupied" msgstr "Ziel ist schon besetzt" @@ -682,7 +699,8 @@ msgstr "Falscher Batterietyp" msgid "Incorrect index type" msgstr "Falscher Typ für einen Index" -msgid "Infected by a virus, temporarily out of order" +#, fuzzy +msgid "Infected by a virus; temporarily out of order" msgstr "Von Virus infiziert, zeitweise außer Betrieb" msgid "Information exchange post" @@ -1256,6 +1274,9 @@ msgstr "Reichweite Schutzschild" msgid "Shielder" msgstr "Schutzschild" +msgid "Shift" +msgstr "Shift" + msgid "Shoot (\\key action;)" msgstr "Feuer (\\key action;)" @@ -1565,6 +1586,9 @@ msgstr "Shooter" msgid "Wheeled sniffer" msgstr "Schnüffler" +msgid "Win" +msgstr "" + msgid "Winged grabber" msgstr "Transporter" @@ -1730,6 +1754,69 @@ msgstr "\\b;Liste der Roboter\n" msgid "\\c; (none)\\n;\n" msgstr "\\c; (keine)\\n;\n" +msgid "action;" +msgstr "" + +msgid "away;" +msgstr "" + +msgid "camera;" +msgstr "" + +msgid "cbot;" +msgstr "" + +msgid "desel;" +msgstr "" + +msgid "down;" +msgstr "" + +msgid "gdown;" +msgstr "" + +msgid "gup;" +msgstr "" + +msgid "help;" +msgstr "" + +msgid "human;" +msgstr "" + +msgid "left;" +msgstr "" + +msgid "near;" +msgstr "" + +msgid "next;" +msgstr "" + +msgid "prog;" +msgstr "" + +msgid "quit;" +msgstr "" + +msgid "right;" +msgstr "" + +msgid "speed10;" +msgstr "" + +msgid "speed15;" +msgstr "" + +msgid "speed20;" +msgstr "" + +msgid "up;" +msgstr "" + +msgid "visit;" +msgstr "" + msgid "www.epsitec.com" msgstr "www.epsitec.com" @@ -1739,9 +1826,6 @@ msgstr "www.epsitec.com" #~ msgid "<--" #~ msgstr "<--" -#~ msgid "Alt" -#~ msgstr "Alt" - #~ msgid "Application key" #~ msgstr "Application key" @@ -1760,9 +1844,6 @@ msgstr "www.epsitec.com" #~ msgid "Attn" #~ msgstr "Attn" -#~ msgid "Button %1" -#~ msgstr "Knopf %1" - #~ msgid "Caps Lock" #~ msgstr "Caps Lock" @@ -1775,9 +1856,6 @@ msgstr "www.epsitec.com" #~ msgid "CrSel" #~ msgstr "CrSel" -#~ msgid "Ctrl" -#~ msgstr "Ctrl" - #~ msgid "Delete Key" #~ msgstr "Delete" @@ -1961,9 +2039,6 @@ msgstr "www.epsitec.com" #~ msgid "Select" #~ msgstr "Select" -#~ msgid "Shift" -#~ msgstr "Shift" - #~ msgid "Space" #~ msgstr "Leertaste" diff --git a/src/po/fr.po b/src/po/fr.po index bda683d6..662fb93b 100644 --- a/src/po/fr.po +++ b/src/po/fr.po @@ -1,13 +1,18 @@ +# Didier Raboud <odyx@debian.org>, 2012. msgid "" msgstr "" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-12-13 21:46+0100\n" +"POT-Creation-Date: 2012-12-27 17:09+0100\n" +"PO-Revision-Date: 2012-12-27 14:07+0100\n" +"Last-Translator: Didier Raboud <odyx@debian.org>\n" +"Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" "X-Language: fr_FR\n" "X-Source-Language: en_US\n" +"X-Generator: Lokalize 1.4\n" msgid " " msgstr " " @@ -37,7 +42,7 @@ msgid " Missions on this planet:" msgstr " Liste des missions du chapitre :" msgid " Planets:" -msgstr " Liste des plančtes :" +msgstr " Liste des planètes :" msgid " Prototypes on this planet:" msgstr " Liste des prototypes du chapitre :" @@ -64,8 +69,11 @@ msgstr "\" ] \" attendu" msgid "\"%s\" missing in this exercise" msgstr "Il manque \"%s\" dans le programme" +msgid "%1" +msgstr "%1" + msgid "..behind" -msgstr "..derričre" +msgstr "..derrière" msgid "..in front" msgstr "..devant" @@ -74,7 +82,7 @@ msgid "..power cell" msgstr "..pile" msgid "1) First click on the key you want to redefine." -msgstr "1) Cliquez d'abord sur la touche ŕ redéfinir." +msgstr "1) Cliquez d'abord sur la touche à redéfinir." msgid "2) Then press the key you want to use instead." msgstr "2) Appuyez ensuite sur la nouvelle touche souhaitée." @@ -85,15 +93,15 @@ msgstr "Bruitages 3D\\Positionnement sonore dans l'espace" msgid "<< Back \\Back to the previous screen" msgstr "<< Retour \\Retour au niveau précédent" -msgid "<<< Sorry, mission failed >>>" -msgstr "<<< Désolé, mission échouée >>>" +msgid "<<< Sorry; mission failed >>>" +msgstr "<<< Désolé; mission échouée >>>" -msgid "<<< Well done, mission accomplished >>>" -msgstr "<<< Bravo, mission terminée >>>" +msgid "<<< Well done; mission accomplished >>>" +msgstr "<<< Bravo; mission terminée >>>" -msgid "A label must be followed by \"for\", \"while\", \"do\" or \"switch\"" +msgid "A label must be followed by \"for\"; \"while\"; \"do\" or \"switch\"" msgstr "" -"Un label ne peut se placer que devant un \"for\", un \"while\", un \"do\" ou " +"Un label ne peut se placer que devant un \"for\"; un \"while\"; un \"do\" ou " "un \"switch\"" msgid "A variable can not be declared twice" @@ -103,14 +111,14 @@ msgid "Abort\\Abort the current mission" msgstr "Abandonner\\Abandonner la mission en cours" msgid "Access beyond array limit" -msgstr "Accčs hors du tableau" +msgstr "Accès hors du tableau" msgid "" "Access to solution\\Shows the solution (detailed instructions for missions)" -msgstr "Accčs ŕ la solution\\Donne la solution" +msgstr "Accès à la solution\\Donne la solution" msgid "Access to solutions\\Show program \"4: Solution\" in the exercises" -msgstr "Accčs aux solutions\\Programme \"4: Solution\" dans les exercices" +msgstr "Accès aux solutions\\Programme \"4: Solution\" dans les exercices" msgid "Alien Queen" msgstr "Pondeuse" @@ -119,16 +127,19 @@ msgid "Alien Queen killed" msgstr "Pondeuse mortellement touchée" msgid "Already carrying something" -msgstr "Porte déjŕ quelque chose" +msgstr "Porte déjà quelque chose" + +msgid "Alt" +msgstr "Alt" msgid "Analysis already performed" -msgstr "Analyse déjŕ effectuée" +msgstr "Analyse déjà effectuée" msgid "Analysis performed" msgstr "Analyse terminée" msgid "Analyzes only organic matter" -msgstr "N'analyse que la matičre organique" +msgstr "N'analyse que la matière organique" msgid "Ant" msgstr "Fourmi" @@ -149,7 +160,7 @@ msgid "Assignment impossible" msgstr "Assignation impossible" msgid "Autolab" -msgstr "Laboratoire de matičres organiques" +msgstr "Laboratoire de matières organiques" msgid "Automatic indent\\When program editing" msgstr "Indentation automatique\\Pendant l'édition d'un programme" @@ -164,7 +175,7 @@ msgid "Backward (\\key down;)" msgstr "Recule (\\key down;)" msgid "Backward\\Moves backward" -msgstr "Reculer\\Moteur en arričre" +msgstr "Reculer\\Moteur en arrière" msgid "Bad argument for \"new\"" msgstr "Mauvais argument pour \"new\"" @@ -203,16 +214,16 @@ msgid "Build a exchange post" msgstr "Construit une borne d'information" msgid "Build a legged grabber" -msgstr "Fabrique un déménageur ŕ pattes" +msgstr "Fabrique un déménageur à pattes" msgid "Build a legged orga shooter" -msgstr "Fabrique un orgaShooter ŕ pattes" +msgstr "Fabrique un orgaShooter à pattes" msgid "Build a legged shooter" -msgstr "Fabrique un shooter ŕ pattes" +msgstr "Fabrique un shooter à pattes" msgid "Build a legged sniffer" -msgstr "Fabrique un renifleur ŕ pattes" +msgstr "Fabrique un renifleur à pattes" msgid "Build a lightning conductor" msgstr "Construit un paratonnerre" @@ -251,28 +262,28 @@ msgid "Build a thumper" msgstr "Fabrique un robot secoueur" msgid "Build a tracked grabber" -msgstr "Fabrique un déménageur ŕ chenilles" +msgstr "Fabrique un déménageur à chenilles" msgid "Build a tracked orga shooter" -msgstr "Fabrique un orgaShooter ŕ chenilles" +msgstr "Fabrique un orgaShooter à chenilles" msgid "Build a tracked shooter" -msgstr "Fabrique un shooter ŕ chenilles" +msgstr "Fabrique un shooter à chenilles" msgid "Build a tracked sniffer" -msgstr "Fabrique un renifleur ŕ chenilles" +msgstr "Fabrique un renifleur à chenilles" msgid "Build a wheeled grabber" -msgstr "Fabrique un déménageur ŕ roues" +msgstr "Fabrique un déménageur à roues" msgid "Build a wheeled orga shooter" -msgstr "Fabrique un orgaShooter ŕ roues" +msgstr "Fabrique un orgaShooter à roues" msgid "Build a wheeled shooter" -msgstr "Fabrique un shooter ŕ roues" +msgstr "Fabrique un shooter à roues" msgid "Build a wheeled sniffer" -msgstr "Fabrique un renifleur ŕ roues" +msgstr "Fabrique un renifleur à roues" msgid "Build a winged grabber" msgstr "Fabrique un déménageur volant" @@ -298,6 +309,9 @@ msgstr "Bâtiment détruit" msgid "Building too close" msgstr "Bâtiment trop proche" +msgid "Button %1" +msgstr "Bouton %1" + msgid "COLOBOT" msgstr "COLOBOT" @@ -320,13 +334,13 @@ msgid "Camera nearest" msgstr "Caméra plus proche" msgid "Camera to left" -msgstr "Caméra ŕ gauche" +msgstr "Caméra à gauche" msgid "Camera to right" -msgstr "Caméra ŕ droite" +msgstr "Caméra à droite" -msgid "Can not create this, there are too many objects" -msgstr "Création impossible, il y a trop d'objets" +msgid "Can not create this; there are too many objects" +msgstr "Création impossible; il y a trop d'objets" msgid "Can't open file" msgstr "Ouverture du fichier impossible" @@ -362,10 +376,7 @@ msgid "Close" msgstr "Fermer" msgid "Closing bracket missing " -msgstr "Il manque une parenthčse fermante" - -msgid "Colobot Gold" -msgstr "Colobot Gold" +msgstr "Il manque une parenthèse fermante" msgid "Colobot rules!" msgstr "Colobot est super!" @@ -403,6 +414,9 @@ msgstr "Copier" msgid "Copy (Ctrl+c)" msgstr "Copier (Ctrl+c)" +msgid "Ctrl" +msgstr "Ctrl" + msgid "Current mission saved" msgstr "Enregistrement effectué" @@ -477,10 +491,10 @@ msgid "Dust\\Dust and dirt on bots and buildings" msgstr "Salissures\\Salissures des robots et bâtiments" msgid "Dynamic lighting\\Mobile light sources" -msgstr "Lumičres dynamiques\\Eclairages mobiles" +msgstr "Lumières dynamiques\\Éclairages mobiles" msgid "Edit the selected program" -msgstr "Edite le programme sélectionné" +msgstr "Édite le programme sélectionné" msgid "Egg" msgstr "Oeuf" @@ -531,7 +545,7 @@ msgid "Filename:" msgstr "Nom du fichier :" msgid "Film sequences\\Films before and after the missions" -msgstr "Séquences cinématiques\\Films avant ou aprčs une mission" +msgstr "Séquences cinématiques\\Films avant ou après une mission" msgid "Finish" msgstr "But" @@ -553,7 +567,7 @@ msgid "Folder: %s" msgstr "Dossier: %s" msgid "Font size" -msgstr "Taille des caractčres" +msgstr "Taille des caractères" msgid "Forward" msgstr "Page suivante" @@ -589,13 +603,13 @@ msgid "Free game\\Free game without a specific goal" msgstr "Jeu libre\\Jeu libre sans but précis" msgid "Friendly fire\\Your shooting can damage your own objects " -msgstr "Dégâts ŕ soi-męme\\Vos tirs infligent des dommages ŕ vos unités" +msgstr "Dégâts à soi-même\\Vos tirs infligent des dommages à vos unités" msgid "Full screen\\Full screen or window mode" -msgstr "Plein écran\\Plein écran ou fenętré" +msgstr "Plein écran\\Plein écran ou fenêtré" msgid "Function already exists" -msgstr "Cette fonction existe déjŕ" +msgstr "Cette fonction existe déjà" msgid "Function name missing" msgstr "Nom de la fonction attendu" @@ -609,8 +623,12 @@ msgstr "Jeu\\Options de jouabilité" msgid "Gantry crane" msgstr "Portique" +#, c-format +msgid "GetResource event num out of range: %d\n" +msgstr "" + msgid "Goto: destination occupied" -msgstr "Destination occupée" +msgstr "Goto: Destination occupée" msgid "Goto: inaccessible destination" msgstr "Chemin introuvable" @@ -637,7 +655,7 @@ msgid "Hair color:" msgstr "Couleur des cheveux :" msgid "Head\\Face and hair" -msgstr "Tęte\\Visage et cheveux" +msgstr "Tête\\Visage et cheveux" msgid "Help about selected object" msgstr "Instructions sur la sélection" @@ -681,8 +699,8 @@ msgstr "Pas le bon type de pile" msgid "Incorrect index type" msgstr "Mauvais type d'index" -msgid "Infected by a virus, temporarily out of order" -msgstr "Infecté par un virus, ne fonctionne plus temporairement" +msgid "Infected by a virus; temporarily out of order" +msgstr "Infecté par un virus; ne fonctionne plus temporairement" msgid "Information exchange post" msgstr "Borne d'information" @@ -703,7 +721,7 @@ msgid "Instructions (\\key help;)" msgstr "Instructions (\\key help;)" msgid "Instructions after the final closing brace" -msgstr "Instructions aprčs la fin" +msgstr "Instructions après la fin" msgid "Instructions for the mission (\\key help;)" msgstr "Instructions sur la mission (\\key help;)" @@ -712,7 +730,7 @@ msgid "Instructions from Houston" msgstr "Instructions de Houston" msgid "Instructions\\Shows the instructions for the current mission" -msgstr "Instructions mission\\Marche ŕ suivre" +msgstr "Instructions mission\\Marche à suivre" msgid "Jet temperature" msgstr "Température du réacteur" @@ -843,16 +861,16 @@ msgid "No energy in the subsoil" msgstr "Pas d'énergie en sous-sol" msgid "No flag nearby" -msgstr "Aucun drapeau ŕ proximité" +msgstr "Aucun drapeau à proximité" msgid "No function running" msgstr "Pas de fonction en exécution" msgid "No function with this name accepts this kind of parameter" -msgstr "Aucune fonction de ce nom n'accepte ce(s) type(s) de paramčtre(s)" +msgstr "Aucune fonction de ce nom n'accepte ce(s) type(s) de paramètre(s)" msgid "No function with this name accepts this number of parameters" -msgstr "Aucune fonction de ce nom n'accepte ce nombre de paramčtres" +msgstr "Aucune fonction de ce nom n'accepte ce nombre de paramètres" msgid "No information exchange post within range" msgstr "Pas trouvé de borne d'information" @@ -876,13 +894,13 @@ msgid "No titanium around" msgstr "Titanium inexistant" msgid "No titanium ore to convert" -msgstr "Pas de minerai de titanium ŕ convertir" +msgstr "Pas de minerai de titanium à convertir" msgid "No titanium to transform" -msgstr "Pas de titanium ŕ transformer" +msgstr "Pas de titanium à transformer" msgid "No uranium to transform" -msgstr "Pas d'uranium ŕ transformer" +msgstr "Pas d'uranium à transformer" msgid "Normal size" msgstr "Taille normale" @@ -903,16 +921,16 @@ msgid "Not yet enough energy" msgstr "Pas encore assez d'énergie" msgid "Nothing to analyze" -msgstr "Rien ŕ analyser" +msgstr "Rien à analyser" msgid "Nothing to drop" -msgstr "Rien ŕ déposer" +msgstr "Rien à déposer" msgid "Nothing to grab" -msgstr "Rien ŕ prendre" +msgstr "Rien à prendre" msgid "Nothing to recycle" -msgstr "Rien ŕ recycler" +msgstr "Rien à recycler" msgid "Nuclear power cell" msgstr "Pile nucléaire" @@ -933,7 +951,7 @@ msgid "Number of insects detected" msgstr "Nombre d'insectes détectés" msgid "Number of particles\\Explosions, dust, reflections, etc." -msgstr "Quantité de particules\\Explosions, poussičres, reflets, etc." +msgstr "Quantité de particules\\Explosions, poussières, reflets, etc." msgid "OK" msgstr "D'accord" @@ -963,7 +981,7 @@ msgid "Opening brace missing " msgstr "Début d'un bloc attendu" msgid "Opening bracket missing" -msgstr "Il manque une parenthčse ouvrante" +msgstr "Il manque une parenthèse ouvrante" msgid "Operation impossible with value \"nan\"" msgstr "Opération sur un \"nan\"" @@ -975,13 +993,13 @@ msgid "Options\\Preferences" msgstr "Options\\Réglages" msgid "Organic matter" -msgstr "Matičre organique" +msgstr "Matière organique" msgid "Origin of last message\\Shows where the last message was sent from" msgstr "Montrer le lieu d'un message\\Montrer le lieu du dernier message" msgid "Parameters missing " -msgstr "Pas assez de paramčtres" +msgstr "Pas assez de paramètres" msgid "Particles in the interface\\Steam clouds and sparks in the interface" msgstr "Particules dans l'interface\\Pluie de particules" @@ -1002,7 +1020,7 @@ msgid "Place occupied" msgstr "Emplacement occupé" msgid "Planets and stars\\Astronomical objects in the sky" -msgstr "Plančtes et étoiles\\Motifs mobiles dans le ciel" +msgstr "Planètes et étoiles\\Motifs mobiles dans le ciel" msgid "Plans for defense tower available" msgstr "Construction d'une tour de défense possible" @@ -1023,7 +1041,7 @@ msgid "Plans for thumper available" msgstr "Fabrication d'un robot secoueur possible" msgid "Plans for tracked robots available " -msgstr "Fabrication d'un robot ŕ chenilles possible" +msgstr "Fabrication d'un robot à chenilles possible" msgid "Plant a flag" msgstr "Pose un drapeau de couleur" @@ -1086,10 +1104,10 @@ msgid "Programming exercises" msgstr "Programmation" msgid "Programming help" -msgstr "Aide ŕ la programmation" +msgstr "Aide à la programmation" msgid "Programming help (\\key prog;)" -msgstr "Aide ŕ la programmation (\\key prog;)" +msgstr "Aide à la programmation (\\key prog;)" msgid "Programming help\\Gives more detailed help with programming" msgstr "Instructions programmation\\Explication sur la programmation" @@ -1107,7 +1125,7 @@ msgid "Public required" msgstr "Public requis" msgid "Public\\Common folder" -msgstr "Public\\Dossier commun ŕ tous les joueurs" +msgstr "Public\\Dossier commun à tous les joueurs" msgid "Quake at explosions\\The screen shakes at explosions" msgstr "Secousses lors d'explosions\\L'écran vibre lors d'une explosion" @@ -1125,7 +1143,7 @@ msgid "Radar station" msgstr "Radar" msgid "Read error" -msgstr "Erreur ŕ la lecture" +msgstr "Erreur à la lecture" msgid "Recorder" msgstr "Enregistreur" @@ -1149,7 +1167,7 @@ msgid "Remains of Apollo mission" msgstr "Vestige d'une mission Apollo" msgid "Remove a flag" -msgstr "Enlčve un drapeau" +msgstr "Enlève un drapeau" msgid "Repair center" msgstr "Centre de réparation" @@ -1158,7 +1176,7 @@ msgid "Research center" msgstr "Centre de recherches" msgid "Research program already performed" -msgstr "Recherche déjŕ effectuée" +msgstr "Recherche déjà effectuée" msgid "Research program completed" msgstr "Recherche terminée" @@ -1258,6 +1276,9 @@ msgstr "Rayon du bouclier" msgid "Shielder" msgstr "Robot bouclier" +msgid "Shift" +msgstr "Shift" + msgid "Shoot (\\key action;)" msgstr "Tir (\\key action;)" @@ -1350,7 +1371,7 @@ msgid "Still working ..." msgstr "Travail en cours ..." msgid "String missing" -msgstr "Une chaîne de caractčre est attendue" +msgstr "Une chaîne de caractère est attendue" msgid "Strip color:" msgstr "Couleur des bandes :" @@ -1405,7 +1426,7 @@ msgid "The types of the two operands are incompatible " msgstr "Les deux opérandes ne sont pas de types compatibles" msgid "This class already exists" -msgstr "Cette classe existe déjŕ" +msgstr "Cette classe existe déjà" msgid "This class does not exist" msgstr "Cette classe n'existe pas" @@ -1456,7 +1477,7 @@ msgid "Too many flags of this color (maximum 5)" msgstr "Trop de drapeaux de cette couleur (maximum 5)" msgid "Too many parameters" -msgstr "Trop de paramčtres" +msgstr "Trop de paramètres" msgid "Tracked grabber" msgstr "Robot déménageur" @@ -1480,16 +1501,16 @@ msgid "Transmitted information" msgstr "Informations diffusées" msgid "Turn left (\\key left;)" -msgstr "Tourne ŕ gauche (\\key left;)" +msgstr "Tourne à gauche (\\key left;)" msgid "Turn left\\turns the bot to the left" -msgstr "Tourner ŕ gauche\\Moteur ŕ gauche" +msgstr "Tourner à gauche\\Moteur à gauche" msgid "Turn right (\\key right;)" -msgstr "Tourne ŕ droite (\\key right;)" +msgstr "Tourne à droite (\\key right;)" msgid "Turn right\\turns the bot to the right" -msgstr "Tourner ŕ droite\\Moteur ŕ droite" +msgstr "Tourner à droite\\Moteur à droite" msgid "Type declaration missing" msgstr "Déclaration de type attendu" @@ -1543,7 +1564,7 @@ msgid "Violet flag" msgstr "Drapeau violet" msgid "Void parameter" -msgstr "Paramčtre void" +msgstr "Paramètre void" msgid "Wasp" msgstr "Guępe" @@ -1566,6 +1587,9 @@ msgstr "Robot shooter" msgid "Wheeled sniffer" msgstr "Robot renifleur" +msgid "Win" +msgstr "Gagné" + msgid "Winged grabber" msgstr "Robot déménageur" @@ -1591,7 +1615,7 @@ msgid "Wreckage" msgstr "Epave de robot" msgid "Write error" -msgstr "Erreur ŕ l'écriture" +msgstr "Erreur à l'écriture" msgid "Wrong type for the assignment" msgstr "Mauvais type de résultat pour l'assignation" @@ -1652,13 +1676,13 @@ msgid "\\Green flags" msgstr "\\Drapeaux verts" msgid "\\New player name" -msgstr "\\Nom du joueur ŕ créer" +msgstr "\\Nom du joueur à créer" msgid "\\No eyeglasses" msgstr "\\Pas de lunettes" msgid "\\Raise the pencil" -msgstr "\\Relčve le crayon" +msgstr "\\Relève le crayon" msgid "\\Red flags" msgstr "\\Drapeaux rouges" @@ -1676,10 +1700,10 @@ msgid "\\Stop recording" msgstr "\\Stoppe l'enregistrement" msgid "\\Turn left" -msgstr "\\Rotation ŕ gauche" +msgstr "\\Rotation à gauche" msgid "\\Turn right" -msgstr "\\Rotation ŕ droite" +msgstr "\\Rotation à droite" msgid "\\Use the black pencil" msgstr "\\Abaisse le crayon noir" @@ -1732,6 +1756,69 @@ msgstr "\\b;Listes des robots\n" msgid "\\c; (none)\\n;\n" msgstr "\\c; (aucun)\\n;\n" +msgid "action;" +msgstr "" + +msgid "away;" +msgstr "" + +msgid "camera;" +msgstr "" + +msgid "cbot;" +msgstr "" + +msgid "desel;" +msgstr "" + +msgid "down;" +msgstr "" + +msgid "gdown;" +msgstr "" + +msgid "gup;" +msgstr "" + +msgid "help;" +msgstr "" + +msgid "human;" +msgstr "" + +msgid "left;" +msgstr "" + +msgid "near;" +msgstr "" + +msgid "next;" +msgstr "" + +msgid "prog;" +msgstr "" + +msgid "quit;" +msgstr "" + +msgid "right;" +msgstr "" + +msgid "speed10;" +msgstr "" + +msgid "speed15;" +msgstr "" + +msgid "speed20;" +msgstr "" + +msgid "up;" +msgstr "" + +msgid "visit;" +msgstr "" + msgid "www.epsitec.com" msgstr "www.epsitec.com" @@ -1741,30 +1828,24 @@ msgstr "www.epsitec.com" #~ msgid "<--" #~ msgstr "<--" -#~ msgid "Alt" -#~ msgstr "Alt" - #~ msgid "Application key" #~ msgstr "Application key" #~ msgid "Arrow down" -#~ msgstr "Flčche Bas" +#~ msgstr "Flèche Bas" #~ msgid "Arrow left" -#~ msgstr "Flčche Gauche" +#~ msgstr "Flèche Gauche" #~ msgid "Arrow right" -#~ msgstr "Flčche Droite" +#~ msgstr "Flèche Droite" #~ msgid "Arrow up" -#~ msgstr "Flčche Haut" +#~ msgstr "Flèche Haut" #~ msgid "Attn" #~ msgstr "Attn" -#~ msgid "Button %1" -#~ msgstr "Bouton %1" - #~ msgid "Caps Lock" #~ msgstr "Caps Lock" @@ -1777,9 +1858,6 @@ msgstr "www.epsitec.com" #~ msgid "CrSel" #~ msgstr "CrSel" -#~ msgid "Ctrl" -#~ msgstr "Ctrl" - #~ msgid "Delete Key" #~ msgstr "Delete" @@ -1963,9 +2041,6 @@ msgstr "www.epsitec.com" #~ msgid "Select" #~ msgstr "Select" -#~ msgid "Shift" -#~ msgstr "Shift" - #~ msgid "Space" #~ msgstr "Espace" diff --git a/src/po/pl.po b/src/po/pl.po index 700ee9ea..9bab529d 100644 --- a/src/po/pl.po +++ b/src/po/pl.po @@ -1,7 +1,7 @@ msgid "" msgstr "" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-12-13 21:46+0100\n" +"POT-Creation-Date: 2012-12-27 17:09+0100\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -65,6 +65,9 @@ msgstr "Brak \" ] \"" msgid "\"%s\" missing in this exercise" msgstr "It misses \"%s\" in this exercise" +msgid "%1" +msgstr "" + msgid "..behind" msgstr "..za" @@ -86,13 +89,16 @@ msgstr "Dźwięk 3D\\Przestrzenne pozycjonowanie dźwięków" msgid "<< Back \\Back to the previous screen" msgstr "<< Wstecz \\Wraca do poprzedniego ekranu" -msgid "<<< Sorry, mission failed >>>" +#, fuzzy +msgid "<<< Sorry; mission failed >>>" msgstr "<<< Niestety, misja nie powiodła się >>>" -msgid "<<< Well done, mission accomplished >>>" +#, fuzzy +msgid "<<< Well done; mission accomplished >>>" msgstr "<<< Dobra robota, misja wypełniona >>>" -msgid "A label must be followed by \"for\", \"while\", \"do\" or \"switch\"" +#, fuzzy +msgid "A label must be followed by \"for\"; \"while\"; \"do\" or \"switch\"" msgstr "Po etykiecie musi wystąpić \"for\", \"while\", \"do\" lub \"switch\"" msgid "A variable can not be declared twice" @@ -122,6 +128,9 @@ msgstr "Królowa Obcych została zabita" msgid "Already carrying something" msgstr "Nie można nieść więcej przedmiotów" +msgid "Alt" +msgstr "Alt" + msgid "Analysis already performed" msgstr "Analiza została już wykonana" @@ -301,6 +310,9 @@ msgstr "Budynek zniszczony" msgid "Building too close" msgstr "Budynek za blisko" +msgid "Button %1" +msgstr "Przycisk %1" + msgid "COLOBOT" msgstr "COLOBOT" @@ -328,7 +340,8 @@ msgstr "Camera to left" msgid "Camera to right" msgstr "Camera to right" -msgid "Can not create this, there are too many objects" +#, fuzzy +msgid "Can not create this; there are too many objects" msgstr "Nie można tego utworzyć, za dużo obiektów" msgid "Can't open file" @@ -367,9 +380,6 @@ msgstr "Zamknij" msgid "Closing bracket missing " msgstr "Brak nawiasu zamykającego" -msgid "Colobot Gold" -msgstr "Colobot Gold" - msgid "Colobot rules!" msgstr "Colobot rządzi!" @@ -406,6 +416,9 @@ msgstr "Kopiuj" msgid "Copy (Ctrl+c)" msgstr "Kopiuj (Ctrl+C)" +msgid "Ctrl" +msgstr "Ctrl" + msgid "Current mission saved" msgstr "Bieżąca misja zapisana" @@ -612,6 +625,10 @@ msgstr "Gra\\Ustawienia gry" msgid "Gantry crane" msgstr "Żuraw przesuwalny" +#, c-format +msgid "GetResource event num out of range: %d\n" +msgstr "" + msgid "Goto: destination occupied" msgstr "Goto: miejsce docelowe zajęte" @@ -685,7 +702,8 @@ msgstr "Nieodpowiedni rodzaj ogniw" msgid "Incorrect index type" msgstr "Nieprawidłowy typ indeksu" -msgid "Infected by a virus, temporarily out of order" +#, fuzzy +msgid "Infected by a virus; temporarily out of order" msgstr "Zainfekowane wirusem, chwilowo niesprawne" msgid "Information exchange post" @@ -1264,6 +1282,9 @@ msgstr "Zasięg osłony" msgid "Shielder" msgstr "Osłaniacz" +msgid "Shift" +msgstr "Shift" + msgid "Shoot (\\key action;)" msgstr "Strzelaj (\\key action;)" @@ -1575,6 +1596,9 @@ msgstr "Działo na kołach" msgid "Wheeled sniffer" msgstr "Szperacz na kołach" +msgid "Win" +msgstr "" + msgid "Winged grabber" msgstr "Transporter latający" @@ -1740,6 +1764,69 @@ msgstr "\\b;Roboty\n" msgid "\\c; (none)\\n;\n" msgstr "\\c; (brak)\\n;\n" +msgid "action;" +msgstr "" + +msgid "away;" +msgstr "" + +msgid "camera;" +msgstr "" + +msgid "cbot;" +msgstr "" + +msgid "desel;" +msgstr "" + +msgid "down;" +msgstr "" + +msgid "gdown;" +msgstr "" + +msgid "gup;" +msgstr "" + +msgid "help;" +msgstr "" + +msgid "human;" +msgstr "" + +msgid "left;" +msgstr "" + +msgid "near;" +msgstr "" + +msgid "next;" +msgstr "" + +msgid "prog;" +msgstr "" + +msgid "quit;" +msgstr "" + +msgid "right;" +msgstr "" + +msgid "speed10;" +msgstr "" + +msgid "speed15;" +msgstr "" + +msgid "speed20;" +msgstr "" + +msgid "up;" +msgstr "" + +msgid "visit;" +msgstr "" + msgid "www.epsitec.com" msgstr "www.epsitec.com" @@ -1749,9 +1836,6 @@ msgstr "www.epsitec.com" #~ msgid "<--" #~ msgstr "<--" -#~ msgid "Alt" -#~ msgstr "Alt" - #~ msgid "Application key" #~ msgstr "Klawisz menu kontekstowego" @@ -1770,9 +1854,6 @@ msgstr "www.epsitec.com" #~ msgid "Attn" #~ msgstr "Attn" -#~ msgid "Button %1" -#~ msgstr "Przycisk %1" - #~ msgid "Caps Lock" #~ msgstr "Caps Lock" @@ -1785,9 +1866,6 @@ msgstr "www.epsitec.com" #~ msgid "CrSel" #~ msgstr "CrSel" -#~ msgid "Ctrl" -#~ msgstr "Ctrl" - #~ msgid "Delete Key" #~ msgstr "Delete" @@ -1971,9 +2049,6 @@ msgstr "www.epsitec.com" #~ msgid "Select" #~ msgstr "Zaznacz" -#~ msgid "Shift" -#~ msgstr "Shift" - #~ msgid "Space" #~ msgstr "Spacja" diff --git a/src/script/script.cpp b/src/script/script.cpp index 8471df54..57d638eb 100644 --- a/src/script/script.cpp +++ b/src/script/script.cpp @@ -1571,7 +1571,7 @@ bool CScript::rGrab(CBotVar* var, CBotVar* result, int& exception, void* user) if ( script->m_primaryTask == 0 ) // no task in progress? { script->m_primaryTask = new CTaskManager(script->m_iMan, script->m_object); - if ( var == 0 ) + if ( var == 0 ) { type = TMA_FFRONT; } @@ -2753,9 +2753,14 @@ void CScript::InitFonctions() CScript::~CScript() { delete m_botProg; + m_botProg = nullptr; + delete m_primaryTask; - delete m_script; - m_script = 0; + m_primaryTask = nullptr; + + delete[] m_script; + m_script = nullptr; + m_len = 0; m_iMan->DeleteInstance(CLASS_SCRIPT, this); @@ -2766,7 +2771,7 @@ CScript::~CScript() void CScript::PutScript(Ui::CEdit* edit, const char* name) { - if ( m_script == 0 ) + if ( m_script == nullptr ) { New(edit, name); } @@ -2785,11 +2790,11 @@ bool CScript::GetScript(Ui::CEdit* edit) { int len; - delete m_script; - m_script = 0; + delete[] m_script; + m_script = nullptr; len = edit->GetTextLength(); - m_script = static_cast<char*>(malloc(sizeof(char)*(len+1))); + m_script = new char[len+1]; edit->GetText(m_script, len+1); edit->GetCursor(m_cursor2, m_cursor1); @@ -2997,7 +3002,7 @@ void CScript::SetStepMode(bool bStep) bool CScript::Run() { if( m_botProg == 0 ) return false; - if ( m_script == 0 || m_len == 0 ) return false; + if ( m_script == nullptr || m_len == 0 ) return false; if ( !m_botProg->Start(m_title) ) return false; @@ -3475,9 +3480,9 @@ bool CScript::IntroduceVirus() start = found[i+1]; i = found[i+0]; - newScript = static_cast<char*>(malloc(sizeof(char)*(m_len+strlen(names[i+1])+1))); + newScript = new char[m_len+strlen(names[i+1])+1]; strcpy(newScript, m_script); - delete m_script; + delete[] m_script; m_script = newScript; DeleteToken(m_script, start, strlen(names[i])); @@ -3638,7 +3643,7 @@ void CScript::New(Ui::CEdit* edit, const char* name) bool CScript::SendScript(char* text) { m_len = strlen(text); - m_script = static_cast<char*>(malloc(sizeof(char)*(m_len+1))); + m_script = new char[m_len+1]; strcpy(m_script, text); if ( !CheckToken() ) return false; if ( !Compile() ) return false; @@ -3669,8 +3674,8 @@ bool CScript::ReadScript(const char* filename) if ( file == NULL ) return false; fclose(file); - delete m_script; - m_script = 0; + delete[] m_script; + m_script = nullptr; edit = m_interface->CreateEdit(Math::Point(0.0f, 0.0f), Math::Point(0.0f, 0.0f), 0, EVENT_EDIT9); edit->SetMaxChar(Ui::EDITSTUDIOMAX); @@ -3697,7 +3702,7 @@ bool CScript::WriteScript(const char* filename) name = filename; } - if ( m_script == 0 ) + if ( m_script == nullptr ) { remove(filename); return false; diff --git a/src/sound/oalsound/alsound.cpp b/src/sound/oalsound/alsound.cpp index 02014174..f683a62d 100644 --- a/src/sound/oalsound/alsound.cpp +++ b/src/sound/oalsound/alsound.cpp @@ -296,6 +296,8 @@ int ALSound::Play(Sound sound, Math::Vector pos, float amplitude, float frequenc GetLogger()->Warn("Sound %d was not loaded!\n", sound); return -1; } + + GetLogger()->Trace("ALSound::Play sound: %d volume: %f frequency: %f\n", sound, amplitude, frequency); int channel; bool bAlreadyLoaded; @@ -308,12 +310,12 @@ int ALSound::Play(Sound sound, Math::Vector pos, float amplitude, float frequenc Position(channel, pos); // setting initial values - mChannels[channel]->SetStartAmplitude(amplitude); + mChannels[channel]->SetStartAmplitude(mAudioVolume); mChannels[channel]->SetStartFrequency(frequency); mChannels[channel]->SetChangeFrequency(1.0f); mChannels[channel]->ResetOper(); - mChannels[channel]->AdjustFrequency(frequency); - mChannels[channel]->AdjustVolume(mAudioVolume); + mChannels[channel]->AdjustFrequency(frequency); + mChannels[channel]->AdjustVolume(amplitude * mAudioVolume); mChannels[channel]->Play(); return channel; } @@ -451,17 +453,17 @@ void ALSound::FrameMove(float delta) it.second->AdjustVolume(volume * mAudioVolume); // setting frequency - frequency = progress * (oper.finalFrequency - it.second->GetStartFrequency()) * it.second->GetStartFrequency() * it.second->GetChangeFrequency(); + frequency = progress * abs(oper.finalFrequency - it.second->GetStartFrequency()) * it.second->GetStartFrequency() * it.second->GetChangeFrequency(); it.second->AdjustFrequency(frequency); if (it.second->GetEnvelope().totalTime <= it.second->GetCurrentTime()) { if (oper.nextOper == SOPER_LOOP) { - GetLogger()->Trace("Sound oper: replay.\n"); + GetLogger()->Trace("ALSound::FrameMove oper: replay.\n"); it.second->SetCurrentTime(0.0f); it.second->Play(); } else { - GetLogger()->Trace("Sound oper: next.\n"); + GetLogger()->Trace("ALSound::FrameMove oper: next.\n"); it.second->SetStartAmplitude(oper.finalAmplitude); it.second->SetStartFrequency(oper.finalFrequency); it.second->PopEnvelope(); diff --git a/src/sound/oalsound/channel.cpp b/src/sound/oalsound/channel.cpp index 2285414a..7d8244b9 100644 --- a/src/sound/oalsound/channel.cpp +++ b/src/sound/oalsound/channel.cpp @@ -39,7 +39,7 @@ Channel::~Channel() { alSourcei(mSource, AL_BUFFER, 0); alDeleteSources(1, &mSource); if (alCheck()) - GetLogger()->Warn("Failed to delete sound source. Code: %s\n", alGetCode()); + GetLogger()->Warn("Failed to delete sound source. Code: %d\n", alGetCode()); } } @@ -50,7 +50,7 @@ bool Channel::Play() { alSourcePlay(mSource); if (alCheck()) - GetLogger()->Warn("Could not play audio sound source. Code: %s\n", alGetCode()); + GetLogger()->Warn("Could not play audio sound source. Code: %d\n", alGetCode()); return true; } @@ -61,7 +61,7 @@ bool Channel::SetPosition(Math::Vector pos) { alSource3f(mSource, AL_POSITION, pos.x, pos.y, pos.z); if (alCheck()) { - GetLogger()->Warn("Could not set sound position. Code: %s\n", alGetCode()); + GetLogger()->Warn("Could not set sound position. Code: %d\n", alGetCode()); return false; } return true; @@ -75,7 +75,7 @@ bool Channel::SetFrequency(float freq) alSourcef(mSource, AL_PITCH, freq); if (alCheck()) { - GetLogger()->Warn("Could not set sound pitch. Code: %s\n", alGetCode()); + GetLogger()->Warn("Could not set sound pitch to '%f'. Code: %d\n", freq, alGetCode()); return false; } return true; @@ -90,7 +90,7 @@ float Channel::GetFrequency() alGetSourcef(mSource, AL_PITCH, &freq); if (alCheck()) { - GetLogger()->Warn("Could not get sound pitch. Code: %s\n", alGetCode()); + GetLogger()->Warn("Could not get sound pitch. Code: %d\n", alGetCode()); return 0; } @@ -105,7 +105,7 @@ bool Channel::SetVolume(float vol) alSourcef(mSource, AL_GAIN, vol / MAXVOLUME); if (alCheck()) { - GetLogger()->Warn("Could not set sound volume. Code: %s\n", alGetCode()); + GetLogger()->Warn("Could not set sound volume to '%f'. Code: %d\n", vol, alGetCode()); return false; } return true; @@ -120,7 +120,7 @@ float Channel::GetVolume() alGetSourcef(mSource, AL_GAIN, &vol); if (alCheck()) { - GetLogger()->Warn("Could not get sound volume. Code: %s\n", alGetCode()); + GetLogger()->Warn("Could not get sound volume. Code: %d\n", alGetCode()); return 0; } @@ -213,7 +213,7 @@ bool Channel::SetBuffer(Buffer *buffer) { mBuffer = buffer; alSourcei(mSource, AL_BUFFER, buffer->GetBuffer()); if (alCheck()) { - GetLogger()->Warn("Could not set sound buffer. Code: %s\n", alGetCode()); + GetLogger()->Warn("Could not set sound buffer. Code: %d\n", alGetCode()); return false; } mInitFrequency = GetFrequency(); @@ -237,7 +237,7 @@ bool Channel::IsPlaying() { alGetSourcei(mSource, AL_SOURCE_STATE, &status); if (alCheck()) { - GetLogger()->Warn("Could not get sound status. Code: %s\n", alGetCode()); + GetLogger()->Warn("Could not get sound status. Code: %d\n", alGetCode()); return false; } @@ -253,7 +253,7 @@ bool Channel::IsReady() { bool Channel::Stop() { alSourceStop(mSource); if (alCheck()) { - GetLogger()->Warn("Could not stop sound. Code: %s\n", alGetCode()); + GetLogger()->Warn("Could not stop sound. Code: %d\n", alGetCode()); return false; } return true; @@ -265,7 +265,7 @@ float Channel::GetCurrentTime() ALfloat current; alGetSourcef(mSource, AL_SEC_OFFSET, ¤t); if (alCheck()) { - GetLogger()->Warn("Could not get source current play time. Code: %s\n", alGetCode()); + GetLogger()->Warn("Could not get source current play time. Code: %d\n", alGetCode()); return 0.0f; } return current; @@ -276,7 +276,7 @@ void Channel::SetCurrentTime(float current) { alSourcef(mSource, AL_SEC_OFFSET, current); if (alCheck()) - GetLogger()->Warn("Could not get source current play time. Code: %s\n", alGetCode()); + GetLogger()->Warn("Could not get source current play time. Code: %d\n", alGetCode()); } diff --git a/src/sound/sound.h b/src/sound/sound.h index 566f4150..518e2ada 100644 --- a/src/sound/sound.h +++ b/src/sound/sound.h @@ -168,7 +168,7 @@ class CSoundInterface * Function calls \link CSoundInterface::Cache() \endlink for each file */ inline void CacheAll(std::string path) { - for ( int i = 1; i < 69; i++ ) { + for ( int i = 1; i <= 81; i++ ) { std::stringstream filename; filename << path << "/sound" << std::setfill('0') << std::setw(3) << i << ".wav"; if ( !Cache(static_cast<Sound>(i), filename.str()) ) diff --git a/src/ui/edit.cpp b/src/ui/edit.cpp index e14b19df..639215ae 100644 --- a/src/ui/edit.cpp +++ b/src/ui/edit.cpp @@ -243,7 +243,7 @@ bool CEdit::EventProcess(const Event &event) Scroll(m_lineFirst-3, true); return true; } - if (event.type == EVENT_KEY_DOWN && + if (event.type == EVENT_MOUSE_WHEEL && event.mouseWheel.dir == WHEEL_DOWN && Detect(event.mousePos) ) { @@ -282,7 +282,7 @@ bool CEdit::EventProcess(const Event &event) } } - if ( m_scroll != 0 && !m_bGeneric ) + if ( m_scroll != nullptr && !m_bGeneric ) { m_scroll->EventProcess(event); @@ -1248,7 +1248,7 @@ void CEdit::SetText(const char *text, bool bNew) { int i, j, font; bool bBOL; - + if ( !bNew ) UndoMemorize(OPERUNDO_SPEC); m_len = strlen(text); @@ -2172,11 +2172,11 @@ void CEdit::Scroll() { float value; - if ( m_scroll != 0 ) + if ( m_scroll != nullptr ) { value = m_scroll->GetVisibleValue(); - value *= m_lineTotal-m_lineVisible; - Scroll(static_cast<int>(value+0.5f), true); + value *= m_lineTotal - m_lineVisible; + Scroll(static_cast<int>(value + 0.5f), true); } } @@ -3048,7 +3048,7 @@ bool CEdit::MinMaj(bool bMaj) void CEdit::Justif() { - float width, value, size, indentLength; + float width, size, indentLength; int i, j, line, indent; bool bDual, bString, bRem; @@ -3176,26 +3176,7 @@ void CEdit::Justif() m_lineFirst = 0; } - if ( m_scroll != 0 ) - { - if ( m_lineTotal <= m_lineVisible ) - { - m_scroll->SetVisibleRatio(1.0f); - m_scroll->SetVisibleValue(0.0f); - m_scroll->SetArrowStep(0.0f); - } - else - { - value = static_cast<float>(m_lineVisible/m_lineTotal); - m_scroll->SetVisibleRatio(value); - - value = static_cast<float>(m_lineFirst/(m_lineTotal-m_lineVisible)); - m_scroll->SetVisibleValue(value); - - value = static_cast<float>(1.0f/(m_lineTotal-m_lineVisible)); - m_scroll->SetArrowStep(value); - } - } + UpdateScroll(); m_timeBlink = 0.0f; // lights the cursor immediately } @@ -3326,5 +3307,30 @@ bool CEdit::SetFormat(int cursor1, int cursor2, int format) return true; } +void CEdit::UpdateScroll() +{ + float value; + + if ( m_scroll != nullptr ) + { + if ( m_lineTotal <= m_lineVisible ) + { + m_scroll->SetVisibleRatio(1.0f); + m_scroll->SetVisibleValue(0.0f); + m_scroll->SetArrowStep(0.0f); + } + else + { + value = static_cast<float>(m_lineVisible) / m_lineTotal; + m_scroll->SetVisibleRatio(value); + + value = static_cast<float>(m_lineFirst) / (m_lineTotal - m_lineVisible); + m_scroll->SetVisibleValue(value); + + value = 1.0f / (m_lineTotal - m_lineVisible); + m_scroll->SetArrowStep(value); + } + } +} } diff --git a/src/ui/edit.h b/src/ui/edit.h index 35d8b2c3..72471812 100644 --- a/src/ui/edit.h +++ b/src/ui/edit.h @@ -234,6 +234,8 @@ protected: void UndoFlush(); void UndoMemorize(OperUndo oper); bool UndoRecall(); + + void UpdateScroll(); protected: CScroll* m_scroll; // vertical scrollbar on the right diff --git a/src/ui/maindialog.cpp b/src/ui/maindialog.cpp index ebf7d106..68e78546 100644 --- a/src/ui/maindialog.cpp +++ b/src/ui/maindialog.cpp @@ -4305,8 +4305,8 @@ void CMainDialog::IOReadName() } } - // TODO: language letters - sprintf(op, "Title.%c", 'E' /*MAX_FNAME()*/ ); + // TODO: Fallback to an non-localized entry + sprintf(op, "Title.%c", m_app->GetLanguageChar() ); if ( Cmd(line, op) ) { OpString(line, "resume", resume); @@ -4701,8 +4701,8 @@ void CMainDialog::UpdateSceneChap(int &chap) } } - /* TODO: language letters */ - sprintf(op, "Title.%c", 'E' /*GetLanguageLetter()*/); + // TODO: Fallback to an non-localized entry + sprintf(op, "Title.%c", m_app->GetLanguageChar()); if ( Cmd(line, op) ) { OpString(line, "text", name); @@ -4748,8 +4748,8 @@ void CMainDialog::UpdateSceneChap(int &chap) } } - // TODO: language letters - sprintf(op, "Title.%c", 'E'/*GetLanguageLetter()*/); + // TODO: Fallback to an non-localized entry + sprintf(op, "Title.%c", m_app->GetLanguageChar()); if ( Cmd(line, op) ) { OpString(line, "text", name); @@ -4851,8 +4851,8 @@ void CMainDialog::UpdateSceneList(int chap, int &sel) } } - // TODO: language letters - sprintf(op, "Title.%c", 'E' /*MAX_FNAME()*/); + // TODO: Fallback to an non-localized entry + sprintf(op, "Title.%c", m_app->GetLanguageChar()); if ( Cmd(line, op) ) { OpString(line, "text", name); @@ -4996,8 +4996,8 @@ void CMainDialog::UpdateSceneResume(int rank) } } - // TODO: language letters - sprintf(op, "Resume.%c", 'E' /*MAX_FNAME()*/); + // TODO: Fallback to an non-localized entry + sprintf(op, "Resume.%c", m_app->GetLanguageChar()); if ( Cmd(line, op) ) { OpString(line, "text", name);