using System;
using System.Runtime.CompilerServices;
namespace BansheeEngine
{
///
/// Manages string tables used for localizing text. Allows you to add and remove different tables and change the
/// active language.
///
public static class StringTables
{
///
/// Currently active language that determines the translations retrieved from localized strings.
///
public static Language ActiveLanguage
{
get
{
Language value;
Internal_GetActiveLanguage(out value);
return value;
}
set
{
Internal_SetActiveLanguage(value);
}
}
///
/// Returns the string table with the specified id. If the table doesn't exist new one is created.
///
/// Identifier of the string table.
/// String table with the specified identifier.
public static StringTable GetTable(int id)
{
return Internal_GetTable(id);
}
///
/// Registers a new string table or replaces an old one at the specified id.
///
/// Id of the string table to add/replace.
/// New string table to assign to the specified identifier.
public static void RegisterTable(int id, StringTable table)
{
Internal_SetTable(id, table);
}
///
/// Removes the string table with the specified id.
///
/// Identifier of the table to remove.
public static void UnregisterTable(int id)
{
Internal_RemoveTable(id);
}
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern void Internal_GetActiveLanguage(out Language value);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern void Internal_SetActiveLanguage(Language value);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern StringTable Internal_GetTable(int id);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern void Internal_SetTable(int id, StringTable table);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern void Internal_RemoveTable(int id);
}
///
/// A set of all languages that localized strings can be translated to. Loosely based on ISO 639-1 two letter language
/// codes.
///
public enum Language
{
Afar,
Abkhazian,
Avestan,
Afrikaans,
Akan,
Amharic,
Aragonese,
Arabic,
Assamese,
Avaric,
Aymara,
Azerbaijani,
Bashkir,
Belarusian,
Bulgarian,
Bihari,
Bislama,
Bambara,
Bengali,
Tibetan,
Breton,
Bosnian,
Catalan,
Chechen,
Chamorro,
Corsican,
Cree,
Czech,
ChurchSlavic,
Chuvash,
Welsh,
Danish,
German,
Maldivian,
Bhutani,
Ewe,
Greek,
EnglishUK,
EnglishUS,
Esperanto,
Spanish,
Estonian,
Basque,
Persian,
Fulah,
Finnish,
Fijian,
Faroese,
French,
WesternFrisian,
Irish,
ScottishGaelic,
Galician,
Guarani,
Gujarati,
Manx,
Hausa,
Hebrew,
Hindi,
HiriMotu,
Croatian,
Haitian,
Hungarian,
Armenian,
Herero,
Interlingua,
Indonesian,
Interlingue,
Igbo,
SichuanYi,
Inupiak,
Ido,
Icelandic,
Italian,
Inuktitut,
Japanese,
Javanese,
Georgian,
Kongo,
Kikuyu,
Kuanyama,
Kazakh,
Kalaallisut,
Cambodian,
Kannada,
Korean,
Kanuri,
Kashmiri,
Kurdish,
Komi,
Cornish,
Kirghiz,
Latin,
Luxembourgish,
Ganda,
Limburgish,
Lingala,
Laotian,
Lithuanian,
LubaKatanga,
Latvian,
Malagasy,
Marshallese,
Maori,
Macedonian,
Malayalam,
Mongolian,
Moldavian,
Marathi,
Malay,
Maltese,
Burmese,
Nauru,
NorwegianBokmal,
Ndebele,
Nepali,
Ndonga,
Dutch,
NorwegianNynorsk,
Norwegian,
Navaho,
Nyanja,
Provençal,
Ojibwa,
Oromo,
Oriya,
Ossetic,
Punjabi,
Pali,
Polish,
Pushto,
Portuguese,
Quechua,
Romansh,
Kirundi,
Romanian,
Russian,
Kinyarwanda,
Sanskrit,
Sardinian,
Sindhi,
NorthernSami,
Sangro,
Sinhalese,
Slovak,
Slovenian,
Samoan,
Shona,
Somali,
Albanian,
Serbian,
Swati,
Sesotho,
Sundanese,
Swedish,
Swahili,
Tamil,
Telugu,
Tajik,
Thai,
Tigrinya,
Turkmen,
Tagalog,
Setswana,
Tonga,
Turkish,
Tsonga,
Tatar,
Twi,
Tahitian,
Uighur,
Ukrainian,
Urdu,
Uzbek,
Venda,
Vietnamese,
Volapuk,
Walloon,
Wolof,
Xhosa,
Yiddish,
Yoruba,
Zhuang,
Chinese,
Zulu,
Count // Number of entries
};
}