strings.cpp File Reference

Handling of translated strings. More...

#include "stdafx.h"
#include "currency.h"
#include "station_base.h"
#include "town.h"
#include "screenshot.h"
#include "waypoint_base.h"
#include "industry.h"
#include "newgrf_text.h"
#include "fileio_func.h"
#include "group.h"
#include "signs_base.h"
#include "cargotype.h"
#include "fontcache.h"
#include "gui.h"
#include "strings_func.h"
#include "rev.h"
#include "core/endian_func.hpp"
#include "date_func.h"
#include "vehicle_base.h"
#include "engine_base.h"
#include "strgen/strgen.h"
#include "townname_func.h"
#include "string_func.h"
#include "company_base.h"
#include "table/strings.h"
#include "table/control_codes.h"

Go to the source code of this file.

Data Structures

struct  LanguagePack
struct  Units

Functions

static char * StationGetSpecialString (char *buff, int x, const char *last)
static char * GetSpecialTownNameString (char *buff, int ind, uint32 seed, const char *last)
static char * GetSpecialNameString (char *buff, int ind, int64 *argv, const char *last)
static char * FormatString (char *buff, const char *str, int64 *argv, uint casei, const char *last)
static int64 GetInt64 (int64 **argv)
 Read an int64 from the argv array.
static int32 GetInt32 (int64 **argv)
 Read an int32 from the argv array.
static int64 * GetArgvPtr (int64 **argv, int n)
 Read an array from the argv array.
const char * GetStringPtr (StringID string)
char * GetStringWithArgs (char *buffr, uint string, int64 *argv, const char *last)
 The highest 8 bits of string contain the "case index".
char * GetString (char *buffr, StringID string, const char *last)
char * InlineString (char *buf, StringID string)
void SetDParamStr (uint n, const char *str)
 This function is used to "bind" a C string to a OpenTTD dparam slot.
void InjectDParam (uint amount)
 Shift the string parameters in the global string parameter array by amount positions, making room at the beginning.
static char * FormatNumber (char *buff, int64 number, const char *last, const char *separator, int zerofill_from=19)
static char * FormatCommaNumber (char *buff, int64 number, const char *last)
static char * FormatNoCommaNumber (char *buff, int64 number, const char *last)
static char * FormatZerofillNumber (char *buff, int64 number, int64 count, const char *last)
static char * FormatHexNumber (char *buff, int64 number, const char *last)
static char * FormatBytes (char *buff, int64 number, const char *last)
 Format a given number as a number of bytes with the SI prefix.
static char * FormatYmdString (char *buff, Date date, const char *last)
static char * FormatMonthAndYear (char *buff, Date date, const char *last)
static char * FormatTinyOrISODate (char *buff, Date date, StringID str, const char *last)
static char * FormatGenericCurrency (char *buff, const CurrencySpec *spec, Money number, bool compact, const char *last)
static int DeterminePluralForm (int64 count)
static const char * ParseStringChoice (const char *b, uint form, char **dst, const char *last)
uint ConvertSpeedToDisplaySpeed (uint speed)
 Convert the given (internal) speed to the display speed.
uint ConvertDisplaySpeedToSpeed (uint speed)
 Convert the given display speed to the (internal) speed.
static char * GenAndCoName (char *buff, uint32 arg, const char *last)
static char * GenPresidentName (char *buff, uint32 x, const char *last)
void SortNetworkLanguages ()
bool ReadLanguagePack (int lang_index)
const char * GetCurrentLocale (const char *param)
 Determine the current charset based on the environment First check some default values, after this one we passed ourselves and if none exist return the value for $LANG.
int CDECL StringIDSorter (const StringID *a, const StringID *b)
static bool UniqueLanguageFile (const Language *langs, uint max, const char *language)
 Checks whether the given language is already found.
static bool GetLanguageFileHeader (const char *file, LanguagePack *hdr)
 Reads the language file header and checks compatability.
static int GetLanguageList (Language *langs, int start, int max, const char *path)
 Gets a list of languages from the given directory.
void InitializeLanguagePacks ()
 Make a list of the available language packs.
const char * GetCurrentLanguageIsoCode ()
 Get the ISO language code of the currently loaded language.
void CheckForMissingGlyphsInLoadedLanguagePack ()
 Check whether the currently loaded language pack uses characters that the currently loaded font does not support.

Variables

DynamicLanguages _dynlang
 Language information of the program.
uint64 _decode_parameters [20]
 Global array of string parameters. To access, use SetDParam.
static char ** _langpack_offs
static LanguagePack_langpack
static uint _langtab_num [32]
static uint _langtab_start [32]
static bool _keep_gender_data = false
 Should we retain the gender data in the current string?
static const Units units []
static const char *const _silly_company_names []
static const char *const _surname_list []
static const char *const _silly_surname_list []
static const char _initial_name_letters []

Detailed Description

Handling of translated strings.

Definition in file strings.cpp.


Function Documentation

void CheckForMissingGlyphsInLoadedLanguagePack (  ) 

Check whether the currently loaded language pack uses characters that the currently loaded font does not support.

If this is the case an error message will be shown in English. The error message will not be localized because that would mean it might use characters that are not in the font, which is the whole reason this check has been added.

Definition at line 1533 of file strings.cpp.

References FS_NORMAL, INVALID_STRING_ID, LanguagePackHeader::isocode, LoadStringWidthTable(), SetDParamStr(), SetFallbackFont(), ShowErrorMessage(), TD_LTR, DynamicLanguages::text_dir, UninitFreeType(), and LanguagePackHeader::winlangid.

Referenced by GameOptionsWindow::OnDropdownSelect().

uint ConvertDisplaySpeedToSpeed ( uint  speed  ) 

Convert the given display speed to the (internal) speed.

Parameters:
speed the speed to convert
Returns:
the converted speed.

Definition at line 545 of file strings.cpp.

References _settings_game, GameSettings::locale, Units::s_m, Units::s_s, and LocaleSettings::units.

Referenced by OrdersWindow::OnQueryTextFinished().

uint ConvertSpeedToDisplaySpeed ( uint  speed  ) 

Convert the given (internal) speed to the display speed.

Parameters:
speed the speed to convert
Returns:
the converted speed.

Definition at line 535 of file strings.cpp.

References _settings_game, GameSettings::locale, Units::s_m, and LocaleSettings::units.

Referenced by DrawOrderString(), OrdersWindow::OnClick(), and OrdersWindow::SetStringParameters().

static char* FormatBytes ( char *  buff,
int64  number,
const char *  last 
) [static]

Format a given number as a number of bytes with the SI prefix.

Parameters:
buff the buffer to write to
number the number of bytes to write down
last the last element in the buffer
Returns:
till where we wrote

Definition at line 246 of file strings.cpp.

References _settings_game, LanguagePackHeader::digit_decimal_separator, LocaleSettings::digit_decimal_separator, lengthof, GameSettings::locale, and seprintf().

static int64* GetArgvPtr ( int64 **  argv,
int  n 
) [inline, static]

Read an array from the argv array.

Definition at line 74 of file strings.cpp.

const char* GetCurrentLanguageIsoCode (  ) 

Get the ISO language code of the currently loaded language.

Returns:
the ISO code.

Definition at line 1518 of file strings.cpp.

References LanguagePackHeader::isocode.

Referenced by GameOptionsWindow::DrawWidget(), and GameOptionsWindow::UpdateWidgetSize().

const char* GetCurrentLocale ( const char *  param  ) 

Determine the current charset based on the environment First check some default values, after this one we passed ourselves and if none exist return the value for $LANG.

Parameters:
param environment variable to check conditionally if default ones are not set. Pass NULL if you don't want additional checks.
Returns:
return string containing current charset, or NULL if not-determinable

Definition at line 1340 of file strings.cpp.

static int32 GetInt32 ( int64 **  argv  )  [inline, static]

Read an int32 from the argv array.

Definition at line 68 of file strings.cpp.

References GetInt64().

Referenced by GetStringWithArgs().

static int64 GetInt64 ( int64 **  argv  )  [inline, static]

Read an int64 from the argv array.

Definition at line 61 of file strings.cpp.

Referenced by GetInt32().

static bool GetLanguageFileHeader ( const char *  file,
LanguagePack hdr 
) [static]

Reads the language file header and checks compatability.

Parameters:
file the file to read
hdr the place to write the header information to
Returns:
true if and only if the language file is of a compatible version

Definition at line 1394 of file strings.cpp.

References LanguagePackHeader::ident, LanguagePackHeader::version, and LanguagePackHeader::winlangid.

Referenced by GetLanguageList(), and InitializeLanguagePacks().

static int GetLanguageList ( Language langs,
int  start,
int  max,
const char *  path 
) [static]

Gets a list of languages from the given directory.

Parameters:
langs the list to write to
start the initial offset in the list
max the length of the language list
path the base directory to search in
Returns:
the number of added languages

Definition at line 1419 of file strings.cpp.

References Language::file, FS2OTTD(), GetLanguageFileHeader(), ttd_opendir(), and UniqueLanguageFile().

Referenced by InitializeLanguagePacks().

char* GetStringWithArgs ( char *  buffr,
uint  string,
int64 *  argv,
const char *  last 
)

The highest 8 bits of string contain the "case index".

These 8 bits will only be set when FormatString wants to print the string in a different case. No one else except FormatString should set those bits, therefore string CANNOT be StringID, but uint32.

Parameters:
buffr 
string 
argv 
last 
Returns:
a formatted string of char

Definition at line 104 of file strings.cpp.

References error(), GB(), GetGRFStringID(), GetInt32(), GetStringWithArgs(), and HasBit().

Referenced by GetStringWithArgs(), and GetTownName().

void InitializeLanguagePacks (  ) 

Make a list of the available language packs.

put the data in _dynlang struct.

< Matching the language in the configuartion file or the current locale

< Using pt_PT for pt_BR locale when pt_BR is not available

< Fallback when no locale-matching language has been found

Definition at line 1456 of file strings.cpp.

References DynamicLanguages::curr_file, DynamicLanguages::ent, Language::file, FOR_ALL_SEARCHPATHS, GetCurrentLocale(), GetLanguageFileHeader(), GetLanguageList(), LanguagePackHeader::isocode, LANG_DIR, lengthof, MAX_LANG, LanguagePackHeader::name, Language::name, DynamicLanguages::num, and usererror().

void InjectDParam ( uint  amount  ) 

Shift the string parameters in the global string parameter array by amount positions, making room at the beginning.

Parameters:
amount Number of positions to shift.

Definition at line 181 of file strings.cpp.

References _decode_parameters, and lengthof.

Referenced by Subsidy::AwardTo().

void SetDParamStr ( uint  n,
const char *  str 
)

This function is used to "bind" a C string to a OpenTTD dparam slot.

Parameters:
n slot of the string
str string to bind

Definition at line 172 of file strings.cpp.

References SetDParam().

Referenced by Subsidy::AwardTo(), CheckForMissingGlyphsInLoadedLanguagePack(), CmdCompanyCtrl(), CmdFoundTown(), DrawCargoListText(), NetworkContentListWindow::DrawDetails(), IndustryViewWindow::DrawInfo(), GameOptionsWindow::DrawWidget(), NewsWindow::DrawWidget(), NetworkContentDownloadStatusWindow::DrawWidget(), NetworkChatWindow::DrawWidget(), MusicWindow::DrawWidget(), MusicTrackSelectionWindow::DrawWidget(), LandInfoWindow::DrawWidget(), BuildIndustryWindow::DrawWidget(), AIConfigWindow::DrawWidget(), AIListWindow::DrawWidget(), IndustryDirectoryWindow::GetIndustryString(), GetSaveLoadErrorString(), IndustryProductionCallback(), MakeScreenshot(), CustomCurrencyWindow::OnClick(), NewGRFWindow::OnClick(), NetworkStartServerWindow::OnClick(), NetworkGameWindow::OnClick(), SaveFileError(), CustomCurrencyWindow::SetStringParameters(), GameOptionsWindow::SetStringParameters(), NewGRFWindow::SetStringParameters(), NetworkLobbyWindow::SetStringParameters(), AboutWindow::SetStringParameters(), AIDebugWindow::SetStringParameters(), ShowNewGRFError(), ShowNewGrfVehicleError(), ShowRefitOptionsList(), StartScenario(), GameOptionsWindow::UpdateWidgetSize(), NewGRFWindow::UpdateWidgetSize(), NetworkChatWindow::UpdateWidgetSize(), MusicWindow::UpdateWidgetSize(), MusicTrackSelectionWindow::UpdateWidgetSize(), LandInfoWindow::UpdateWidgetSize(), BuildIndustryWindow::UpdateWidgetSize(), and WarnCorruptSprite().

static bool UniqueLanguageFile ( const Language langs,
uint  max,
const char *  language 
) [static]

Checks whether the given language is already found.

Parameters:
langs languages we've found so fa
max the length of the language list
language name of the language to check
Returns:
true if and only if a language file with the same name has not been found

Definition at line 1378 of file strings.cpp.

Referenced by GetLanguageList().


Variable Documentation

const char _initial_name_letters[] [static]
Initial value:
 {
  'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J',
  'K', 'L', 'M', 'N', 'P', 'R', 'S', 'T', 'W',
}

Definition at line 1154 of file strings.cpp.

const char* const _silly_company_names[] [static]
Initial value:
 {
  "Bloggs Brothers",
  "Tiny Transport Ltd.",
  "Express Travel",
  "Comfy-Coach & Co.",
  "Crush & Bump Ltd.",
  "Broken & Late Ltd.",
  "Sam Speedy & Son",
  "Supersonic Travel",
  "Mike's Motors",
  "Lightning International",
  "Pannik & Loozit Ltd.",
  "Inter-City Transport",
  "Getout & Pushit Ltd."
}

Definition at line 1091 of file strings.cpp.

const char* const _silly_surname_list[] [static]
Initial value:
 {
  "Grumpy",
  "Dozy",
  "Speedy",
  "Nosey",
  "Dribble",
  "Mushroom",
  "Cabbage",
  "Sniffle",
  "Fishy",
  "Swindle",
  "Sneaky",
  "Nutkins"
}

Definition at line 1139 of file strings.cpp.

const Units units[] [static]
Initial value:
 {
  { 
       1,  0, STR_UNITS_VELOCITY_IMPERIAL,
       1,  0, STR_UNITS_POWER_IMPERIAL,
       1,  0, STR_UNITS_WEIGHT_SHORT_METRIC, STR_UNITS_WEIGHT_LONG_METRIC,
    1000,  0, STR_UNITS_VOLUME_SHORT_METRIC, STR_UNITS_VOLUME_LONG_METRIC,
       1,  0, STR_UNITS_FORCE_SI,
  },
  { 
     103,  6, STR_UNITS_VELOCITY_METRIC,
       1,  0, STR_UNITS_POWER_METRIC,
       1,  0, STR_UNITS_WEIGHT_SHORT_METRIC, STR_UNITS_WEIGHT_LONG_METRIC,
    1000,  0, STR_UNITS_VOLUME_SHORT_METRIC, STR_UNITS_VOLUME_LONG_METRIC,
       1,  0, STR_UNITS_FORCE_SI,
  },
  { 
    1831, 12, STR_UNITS_VELOCITY_SI,
     764, 10, STR_UNITS_POWER_SI,
    1000,  0, STR_UNITS_WEIGHT_SHORT_SI, STR_UNITS_WEIGHT_LONG_SI,
       1,  0, STR_UNITS_VOLUME_SHORT_SI, STR_UNITS_VOLUME_LONG_SI,
       1,  0, STR_UNITS_FORCE_SI,
  },
}

Definition at line 506 of file strings.cpp.


Generated on Wed Mar 3 23:32:41 2010 for OpenTTD by  doxygen 1.6.1