-
Notifications
You must be signed in to change notification settings - Fork 0
/
LangInfo.h
147 lines (121 loc) · 4.15 KB
/
LangInfo.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
#pragma once
/*
* Copyright (C) 2005-2008 Team XBMC
* http://www.xbmc.org
*
* This Program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2, or (at your option)
* any later version.
*
* This Program 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 XBMC; see the file COPYING. If not, write to
* the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
* http://www.gnu.org/copyleft/gpl.html
*
*/
#include "utils/StdString.h"
#include <map>
class TiXmlNode;
class CLangInfo
{
public:
CLangInfo();
virtual ~CLangInfo();
bool Load(const CStdString& strFileName);
CStdString GetGuiCharSet() const;
CStdString GetSubtitleCharSet() const;
const CStdString& GetDVDMenuLanguage() const;
const CStdString& GetDVDAudioLanguage() const;
const CStdString& GetDVDSubtitleLanguage() const;
const CStdString& GetTimeZone() const;
const CStdString& GetRegionLocale() const;
const CStdString& GetLanguageLocale() const;
bool ForceUnicodeFont() const { return m_currentRegion->m_forceUnicodeFont; }
const CStdString& GetDateFormat(bool bLongDate=false) const;
typedef enum _MERIDIEM_SYMBOL
{
MERIDIEM_SYMBOL_PM=0,
MERIDIEM_SYMBOL_AM,
MERIDIEM_SYMBOL_MAX
} MERIDIEM_SYMBOL;
const CStdString& GetTimeFormat() const;
const CStdString& GetMeridiemSymbol(MERIDIEM_SYMBOL symbol) const;
typedef enum _TEMP_UNIT
{
TEMP_UNIT_FAHRENHEIT=0,
TEMP_UNIT_KELVIN,
TEMP_UNIT_CELSIUS,
TEMP_UNIT_REAUMUR,
TEMP_UNIT_RANKINE,
TEMP_UNIT_ROMER,
TEMP_UNIT_DELISLE,
TEMP_UNIT_NEWTON
} TEMP_UNIT;
const CStdString& GetTempUnitString() const;
CLangInfo::TEMP_UNIT GetTempUnit() const;
typedef enum _SPEED_UNIT
{
SPEED_UNIT_KMH=0, // kilemetre per hour
SPEED_UNIT_MPMIN, // metres per minute
SPEED_UNIT_MPS, // metres per second
SPEED_UNIT_FTH, // feet per hour
SPEED_UNIT_FTMIN, // feet per minute
SPEED_UNIT_FTS, // feet per second
SPEED_UNIT_MPH, // miles per hour
SPEED_UNIT_KTS, // knots
SPEED_UNIT_BEAUFORT, // beaufort
SPEED_UNIT_INCHPS, // inch per second
SPEED_UNIT_YARDPS, // yard per second
SPEED_UNIT_FPF // Furlong per Fortnight
} SPEED_UNIT;
const CStdString& GetSpeedUnitString() const;
CLangInfo::SPEED_UNIT GetSpeedUnit() const;
void GetRegionNames(CStdStringArray& array);
void SetCurrentRegion(const CStdString& strName);
const CStdString& GetCurrentRegion() const;
static void LoadTokens(const TiXmlNode* pTokens, std::vector<CStdString>& vecTokens);
protected:
void SetDefaults();
protected:
class CRegion
{
public:
CRegion(const CRegion& region);
CRegion();
virtual ~CRegion();
void SetDefaults();
void SetTempUnit(const CStdString& strUnit);
void SetSpeedUnit(const CStdString& strUnit);
void SetTimeZone(const CStdString& strTimeZone);
void SetGlobalLocale();
CStdString m_strGuiCharSet;
CStdString m_strSubtitleCharSet;
CStdString m_strDVDMenuLanguage;
CStdString m_strDVDAudioLanguage;
CStdString m_strDVDSubtitleLanguage;
CStdString m_strLangLocaleName;
CStdString m_strRegionLocaleName;
bool m_forceUnicodeFont;
CStdString m_strName;
CStdString m_strDateFormatLong;
CStdString m_strDateFormatShort;
CStdString m_strTimeFormat;
CStdString m_strMeridiemSymbols[MERIDIEM_SYMBOL_MAX];
CStdString m_strTimeZone;
TEMP_UNIT m_tempUnit;
SPEED_UNIT m_speedUnit;
};
typedef std::map<CStdString, CRegion> MAPREGIONS;
typedef std::map<CStdString, CRegion>::iterator ITMAPREGIONS;
typedef std::pair<CStdString, CRegion> PAIR_REGIONS;
MAPREGIONS m_regions;
CRegion* m_currentRegion; // points to the current region
CRegion m_defaultRegion; // default, will be used if no region available via langinfo.xml
};
extern CLangInfo g_langInfo;