2008-11-24 11:20:07 +00:00
|
|
|
/* $Id$ */
|
|
|
|
|
2009-08-21 21:21:05 +01:00
|
|
|
/*
|
|
|
|
* This file is part of OpenTTD.
|
|
|
|
* OpenTTD 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, version 2.
|
|
|
|
* OpenTTD 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 OpenTTD. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
*/
|
|
|
|
|
2010-11-13 11:11:02 +00:00
|
|
|
/** @file language.h Information about languages and their files. */
|
2008-11-24 11:20:07 +00:00
|
|
|
|
2010-11-13 11:11:02 +00:00
|
|
|
#ifndef LANGUAGE_H
|
|
|
|
#define LANGUAGE_H
|
2008-11-24 11:20:07 +00:00
|
|
|
|
2009-04-23 22:05:00 +01:00
|
|
|
/** Header of a language file. */
|
2008-11-24 11:20:07 +00:00
|
|
|
struct LanguagePackHeader {
|
2010-11-07 18:35:59 +00:00
|
|
|
static const uint32 IDENT = 0x474E414C; ///< Identifier for OpenTTD language files, big endian for "LANG"
|
|
|
|
|
2009-04-23 22:05:00 +01:00
|
|
|
uint32 ident; ///< 32-bits identifier
|
|
|
|
uint32 version; ///< 32-bits of auto generated version info which is basically a hash of strings.h
|
|
|
|
char name[32]; ///< the international name of this language
|
|
|
|
char own_name[32]; ///< the localized name of this language
|
|
|
|
char isocode[16]; ///< the ISO code for the language (not country code)
|
|
|
|
uint16 offsets[32]; ///< the offsets
|
|
|
|
|
|
|
|
/** Thousand separator used for anything not currencies */
|
|
|
|
char digit_group_separator[8];
|
|
|
|
/** Thousand separator used for currencies */
|
|
|
|
char digit_group_separator_currency[8];
|
2009-08-12 02:28:11 +01:00
|
|
|
/** Decimal separator */
|
|
|
|
char digit_decimal_separator[8];
|
2009-04-23 22:05:00 +01:00
|
|
|
byte plural_form; ///< plural form index
|
|
|
|
byte text_dir; ///< default direction of the text
|
2008-11-24 18:53:17 +00:00
|
|
|
/**
|
|
|
|
* Windows language ID:
|
|
|
|
* Windows cannot and will not convert isocodes to something it can use to
|
|
|
|
* determine whether a font can be used for the language or not. As a result
|
|
|
|
* of that we need to pass the language id via strgen to OpenTTD to tell
|
|
|
|
* what language it is in "Windows". The ID is the 'locale identifier' on:
|
|
|
|
* http://msdn.microsoft.com/en-us/library/ms776294.aspx
|
|
|
|
*/
|
2009-04-23 22:05:00 +01:00
|
|
|
uint16 winlangid; ///< windows language id
|
|
|
|
uint8 newgrflangid; ///< newgrf language id
|
|
|
|
byte pad[3]; ///< pad header to be a multiple of 4
|
2010-11-10 17:48:31 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Check whether the header is a valid header for OpenTTD.
|
|
|
|
* @return true iff the header is deemed valid.
|
|
|
|
*/
|
|
|
|
bool IsValid() const;
|
2008-11-24 11:20:07 +00:00
|
|
|
};
|
|
|
|
assert_compile(sizeof(LanguagePackHeader) % 4 == 0);
|
|
|
|
|
2010-11-13 11:11:02 +00:00
|
|
|
/** Metadata about a single language. */
|
|
|
|
struct LanguageMetadata : public LanguagePackHeader {
|
|
|
|
char file[MAX_PATH]; ///< Name of the file we read this data from.
|
|
|
|
};
|
|
|
|
|
|
|
|
#endif /* LANGUAGE_H */
|