diff --git a/ClassicalCompendium.Tests/CryptoMethodsTests.cs b/ClassicalCompendium.Tests/CryptoMethodsTests.cs index ab85a43..91eca83 100644 --- a/ClassicalCompendium.Tests/CryptoMethodsTests.cs +++ b/ClassicalCompendium.Tests/CryptoMethodsTests.cs @@ -30,12 +30,5 @@ public void CodeAtBashTest() Assert.Equal("Z Y X W", CryptoMethods.EncodeWithAtBash("a B c D")); Assert.Equal("!()#%&|¢¬|¬|§°¬§|#{[]¨|¢§¬°", CryptoMethods.EncodeWithAtBash("!()#%&|¢¬|¬|§°¬§|#{[]¨|¢§¬°")); } - - [Fact] - public void DoSHA256Test() - { - Assert.Equal("e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", CryptoMethods.SHA256("")); - Assert.Equal("d7a8fbb307d7809469ca9abcb0082e4f8d5651e46d3cdb762d02d0bf37c9e592", CryptoMethods.SHA256("The quick brown fox jumps over the lazy dog")); - } } } \ No newline at end of file diff --git a/ClassicalCompendium.Tests/HashMethodsTests.cs b/ClassicalCompendium.Tests/HashMethodsTests.cs new file mode 100644 index 0000000..8644843 --- /dev/null +++ b/ClassicalCompendium.Tests/HashMethodsTests.cs @@ -0,0 +1,12 @@ +namespace ClassicalCompendium.Tests +{ + public class HashMethodsTests + { + [Fact] + public void SHA256Test() + { + Assert.Equal("e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", HashMethods.SHA256("")); + Assert.Equal("d7a8fbb307d7809469ca9abcb0082e4f8d5651e46d3cdb762d02d0bf37c9e592", HashMethods.SHA256("The quick brown fox jumps over the lazy dog")); + } + } +} diff --git a/ClassicalCompendium.Tests/PreSetListsTests.cs b/ClassicalCompendium.Tests/PreSetListsTests.cs new file mode 100644 index 0000000..053700d --- /dev/null +++ b/ClassicalCompendium.Tests/PreSetListsTests.cs @@ -0,0 +1,56 @@ +namespace ClassicalCompendium.Tests +{ + public class PreSetListsTests + { + [Fact] + public void MonthsTests() + { + Assert.Equal("January", PreSetLists.Time.Months[0]); + Assert.Equal("February", PreSetLists.Time.Months[1]); + Assert.Equal("March", PreSetLists.Time.Months[2]); + Assert.Equal(12, PreSetLists.Time.Months.Count); + } + + [Fact] + public void DaysOfWeekTests() + { + Assert.Equal("Monday", PreSetLists.Time.WeekDays[0]); + Assert.Equal("Tuesday", PreSetLists.Time.WeekDays[1]); + Assert.Equal("Wednesday", PreSetLists.Time.WeekDays[2]); + Assert.Equal(7, PreSetLists.Time.WeekDays.Count); + } + + [Fact] + public void HoursTests() + { + Assert.Equal("12 PM", PreSetLists.Time.Hours[0]); + Assert.Equal("1 AM", PreSetLists.Time.Hours[1]); + Assert.Equal("2 AM", PreSetLists.Time.Hours[2]); + Assert.Equal(24, PreSetLists.Time.Hours.Count); + } + + [Fact] + public void CountryISOTests() + { + Assert.Equal("AF", PreSetLists.Country.CountryISO[0].Item2); + } + + [Fact] + public void MostUsedLangagesTests() + { + Assert.Equal("English", PreSetLists.Country.MostUsedLangages[0]); + Assert.Equal("French", PreSetLists.Country.MostUsedLangages[1]); + Assert.Equal("Arabic", PreSetLists.Country.MostUsedLangages[2]); + Assert.Equal(10, PreSetLists.Country.MostUsedLangages.Count); + } + + [Fact] + public void OfficialLanguagesTests() + { + Assert.Equal("Abkhaz", PreSetLists.Country.OfficialLanguages[0]); + Assert.Equal("Armenian", PreSetLists.Country.OfficialLanguages[9]); + Assert.Equal("Bedik", PreSetLists.Country.OfficialLanguages[18]); + Assert.Equal(214, PreSetLists.Country.OfficialLanguages.Count); + } + } +} diff --git a/ClassicalCompendium.sln b/ClassicalCompendium.sln index 6f1ef0b..0743196 100644 --- a/ClassicalCompendium.sln +++ b/ClassicalCompendium.sln @@ -3,9 +3,9 @@ Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio Version 17 VisualStudioVersion = 17.10.35201.131 MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ClassicalCompendium", "ClassicalCompendium\ClassicalCompendium.csproj", "{645133BB-A893-4E8B-8963-F889582A4CE6}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ClassicalCompendium", "ClassicalCompendium\ClassicalCompendium.csproj", "{645133BB-A893-4E8B-8963-F889582A4CE6}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ClassicalCompendium.Tests", "ClassicalCompendium.Tests\ClassicalCompendium.Tests.csproj", "{A86ECB33-806C-4C08-ACEA-BD2709BD2851}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ClassicalCompendium.Tests", "ClassicalCompendium.Tests\ClassicalCompendium.Tests.csproj", "{A86ECB33-806C-4C08-ACEA-BD2709BD2851}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -18,6 +18,7 @@ Global {645133BB-A893-4E8B-8963-F889582A4CE6}.Release|Any CPU.ActiveCfg = Release|Any CPU {645133BB-A893-4E8B-8963-F889582A4CE6}.Release|Any CPU.Build.0 = Release|Any CPU {A86ECB33-806C-4C08-ACEA-BD2709BD2851}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A86ECB33-806C-4C08-ACEA-BD2709BD2851}.Debug|Any CPU.Build.0 = Debug|Any CPU {A86ECB33-806C-4C08-ACEA-BD2709BD2851}.Release|Any CPU.ActiveCfg = Release|Any CPU {A86ECB33-806C-4C08-ACEA-BD2709BD2851}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection diff --git a/ClassicalCompendium/ClassicalCompendium.csproj b/ClassicalCompendium/ClassicalCompendium.csproj index 3c41149..2a6bf72 100644 --- a/ClassicalCompendium/ClassicalCompendium.csproj +++ b/ClassicalCompendium/ClassicalCompendium.csproj @@ -7,7 +7,7 @@ A collection of widely-used C# utility methods true - Compendium; Random; Cryptography + Compendium; Random; Cryptography; Numeral; https://github.com/Miiraak/ClassicalCompendium README.md LICENSE diff --git a/ClassicalCompendium/CryptoMethods.cs b/ClassicalCompendium/CryptoMethods.cs index 2ff4332..967c124 100644 --- a/ClassicalCompendium/CryptoMethods.cs +++ b/ClassicalCompendium/CryptoMethods.cs @@ -1,6 +1,5 @@ using System; using System.Collections.Generic; -using System.Text; namespace ClassicalCompendium { @@ -61,15 +60,5 @@ public static string EncodeWithAtBash(string Text) } return output; } - - public static string SHA256(string text) - { - using (var sha256 = System.Security.Cryptography.SHA256.Create()) - { - byte[] bytes = Encoding.UTF8.GetBytes(text); - byte[] hash = sha256.ComputeHash(bytes); - return BitConverter.ToString(hash).Replace("-", "").ToLower(); - } - } } } diff --git a/ClassicalCompendium/HashMethods.cs b/ClassicalCompendium/HashMethods.cs new file mode 100644 index 0000000..cd6a963 --- /dev/null +++ b/ClassicalCompendium/HashMethods.cs @@ -0,0 +1,513 @@ +using System; +using System.Text; + +namespace ClassicalCompendium +{ + public class HashMethods + { + // Cyclic redundancy checks + /* + public static string CRC8(string input) + { + + } + + public static void CRC16() + { + + } + + public static void CRC32() + { + + } + + public static void CRC64() + { + + } + */ + + // Checksums + /* + public static void BSDchecksum() + { + + } + + public static void SYSVchecksum() + { + + } + + public static void InternetChecksum() + { + + } + + public static void Sum8() + { + + } + + public static void Sum24() + { + + } + + public static void Sum32() + { + + } + + public static void Fletcher4() + { + + } + + public static void Fletcher8() + { + + } + + public static void Fletcher16() + { + + } + + public static void Fletcher32() + { + + } + + public static void Adler32() + { + + } + + public static void Xor8() + { + + } + + public static void LuhnAlgorithm() + { + + } + + public static void VerhoeffAlgorithm() + { + + } + + public static void DammAlgorithm() + { + + } + */ + + // Universal hash function families + /* + public static void RabinFingerprint() + { + + } + + public static void TabulationHashing() + { + + } + + public static void ZobristHashing() + { + + } + + public static void UniversalOneWayHash() + { + + } + */ + + // Non-cryptographic hash functions + /* + public static void PearsonHash() + { + + } + + public static void PaulHsiehSuperFastHash() + { + + } + + public static void Buzhash() + { + + } + + public static void FNVHash() + { + + } + + public static void JenkinsHash() + { + + } + + public static void BernsteinHash() + { + + } + + public static void PJWHash() + { + + } + + public static void MurmurHash() + { + + } + + public static void SpookyHash() + { + + } + + public static void FastHash() + { + + } + + public static void CityHash() + { + + } + + public static void FarmHash() + { + + } + + public static void MetroHash() + { + + } + + public static void NHash() + { + + } + + public static void XXHash() + { + + } + + public static void GxHash() + { + + } + + public static void PHash() + { + + } + + public static void DHash() + { + + } + + public static void SDBM() + { + + } + + public static void OSDB() + { + + } + + public static void KomiHash() + { + + } + */ + + // Keyed cryptographic hash functions + /* + public static void BLAKE2() + { + + } + + public static void BLAKE3() + { + + } + + public static void HMAC() + { + + } + + public static void KMAC() + { + + } + + public static void MD6() + { + + } + + public static void OMAC() + { + + } + + public static void PMAC() + { + + } + + public static void Poly1305AES() + { + + } + + public static void SipHash() + { + + } + + public static void HighwayHash() + { + + } + + public static void UMAC() + { + + } + + public static void VMAC() + { + + } + */ + + // Unkeyed cryptographic hash functions + /* + public static void BLAKE256() + { + + } + + public static void BLAKE512() + { + + } + + public static void BLAKE2s() + { + + } + + public static void BLAKE2b() + { + + } + + public static void BLAKE2X() + { + + } + + public static void ECOH() + { + + } + + public static void FSB() + { + + } + + public static void GOST() + { + + } + + public static void Grostl() + { + + } + + public static void HAS160() + { + + } + + public static void HAVAL() + { + + } + + public static void JH() + { + + } + + public static void LSH() + { + + } + + public static void MD2() + { + + } + + public static void MD4() + { + + } + + public static void MD5() + { + + } + + public static void RadioGatun() + { + + } + + public static void RIPEMD() + { + + } + + public static void RIPEMD128() + { + + } + + public static void RIPEMD160() + { + + } + + public static void RIPEMD256() + { + + } + + public static void RIPEMD320() + { + + } + + public static void SHA1() + { + + } + + public static void SHA224() + { + + } + */ + + /// + /// This method will return the SHA256 hash of the text. + /// + /// is the string to hash + /// A string passed through SHA256 hash. + public static string SHA256(string text) + { + using (var sha256 = System.Security.Cryptography.SHA256.Create()) + { + byte[] bytes = Encoding.UTF8.GetBytes(text); + byte[] hash = sha256.ComputeHash(bytes); + return BitConverter.ToString(hash).Replace("-", "").ToLower(); + } + } + + /// + /// This method will return the SHA384 hash of the text. + /// + /// is the string to hash + /// A string passed through SHA384 hash + public static string SHA384(string text) + { + using (var sha384 = System.Security.Cryptography.SHA384.Create()) + { + byte[] bytes = Encoding.UTF8.GetBytes(text); + byte[] hash = sha384.ComputeHash(bytes); + return BitConverter.ToString(hash).Replace("-", "").ToLower(); + } + } + + /// + /// This method will return the SHA512 hash of the text. + /// + /// is the string to hash + /// A string passed throug SHA512 hash + public static string SHA512(string text) + { + using (var sha512 = System.Security.Cryptography.SHA512.Create()) + { + byte[] bytes = Encoding.UTF8.GetBytes(text); + byte[] hash = sha512.ComputeHash(bytes); + return BitConverter.ToString(hash).Replace("-", "").ToLower(); + } + } + + /* + public static void SHA3() + { + + } + + public static void Skein() + { + + } + + public static void Snefru() + { + + } + + public static void SpectralHash() + { + + } + + public static void Streebog() + { + + } + + public static void SWIFFT() + { + + } + + public static void Tiger() + { + + } + + public static void Whirlpool() + { + + } + */ + } +} diff --git a/ClassicalCompendium/PreSetLists.cs b/ClassicalCompendium/PreSetLists.cs new file mode 100644 index 0000000..6c6bd0e --- /dev/null +++ b/ClassicalCompendium/PreSetLists.cs @@ -0,0 +1,552 @@ +using System.Collections.Generic; + +namespace ClassicalCompendium +{ + public class PreSetLists + { + public class Time + { + public static List Months = new List + { + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + }; + + public static List WeekDays = new List + { + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday", + "Sunday" + }; + + public static List Hours = new List + { + "12 PM", + "1 AM", + "2 AM", + "3 AM", + "4 AM", + "5 AM", + "6 AM", + "7 AM", + "8 AM", + "9 AM", + "10 AM", + "11 AM", + "12 AM", + "1 PM", + "2 PM", + "3 PM", + "4 PM", + "5 PM", + "6 PM", + "7 PM", + "8 PM", + "9 PM", + "10 PM", + "11 PM" + }; + } + + public class Country + { + public static List<(string, string, string, int)> CountryISO = new List<(string, string, string, int)> + { + ("Afghanistan", "AF", "AFG", 4), + ("Ã…land Islands", "AX", "ALA", 248), + ("Albania", "AL", "ALB", 8), + ("Algeria", "DZ", "DZA", 12), + ("American Samoa", "AS", "ASM", 16), + ("Andorra", "AD", "AND", 20), + ("Angola", "AO", "AGO", 24), + ("Anguilla", "AI", "AIA", 660), + ("Antarctica", "AQ", "ATA", 10), + ("Antigua and Barbuda", "AG", "ATG", 28), + ("Argentina", "AR", "ARG", 32), + ("Armenia", "AM", "ARM", 51), + ("Aruba", "AW", "ABW", 533), + ("Australia", "AU", "AUS", 36), + ("Austria", "AT", "AUT", 40), + ("Azerbaijan", "AZ", "AZE", 31), + ("Bahamas", "BS", "BHS", 44), + ("Bahrain", "BH", "BHR", 48), + ("Bangladesh", "BD", "BGD", 50), + ("Barbados", "BB", "BRB", 52), + ("Belarus", "BY", "BLR", 112), + ("Belgium", "BE", "BEL", 56), + ("Belize", "BZ", "BLZ", 84), + ("Benin", "BJ", "BEN", 204), + ("Bermuda", "BM", "BMU", 60), + ("Bhutan", "BT", "BTN", 64), + ("Bolivia (Plurinational State of)", "BO", "BOL", 68), + ("Bonaire, Sint Eustatius and Saba", "BQ", "BES", 535), + ("Bosnia and Herzegovina", "BA", "BIH", 70), + ("Botswana", "BW", "BWA", 72), + ("Bouvet Island", "BV", "BVT", 74), + ("Brazil", "BR", "BRA", 76), + ("British Indian Ocean Territory", "IO", "IOT", 86), + ("Brunei Darussalam", "BN", "BRN", 96), + ("Bulgaria", "BG", "BGR", 100), + ("Burkina Faso", "BF", "BFA", 854), + ("Burundi", "BI", "BDI", 108), + ("Cabo Verde", "CV", "CPV", 132), + ("Cambodia", "KH", "KHM", 116), + ("Cameroon", "CM", "CMR", 120), + ("Canada", "CA", "CAN", 124), + ("Cayman Islands", "KY", "CYM", 136), + ("Central African Republic", "CF", "CAF", 140), + ("Chad", "TD", "TCD", 148), + ("Chile", "CL", "CHL", 152), + ("China", "CN", "CHN", 156), + ("Christmas Island", "CX", "CXR", 162), + ("Cocos (Keeling) Islands", "CC", "CCK", 166), + ("Colombia", "CO", "COL", 170), + ("Comoros", "KM", "COM", 174), + ("Congo", "CG", "COG", 178), + ("Congo, Democratic Republic of the", "CD", "COD", 180), + ("Cook Islands", "CK", "COK", 184), + ("Costa Rica", "CR", "CRI", 188), + ("Côte d'Ivoire", "CI", "CIV", 384), + ("Croatia", "HR", "HRV", 191), + ("Cuba", "CU", "CUB", 192), + ("Curaçao", "CW", "CUW", 531), + ("Cyprus", "CY", "CYP", 196), + ("Czechia", "CZ", "CZE", 203), + ("Denmark", "DK", "DNK", 208), + ("Djibouti", "DJ", "DJI", 262), + ("Dominica", "DM", "DMA", 212), + ("Dominican Republic", "DO", "DOM", 214), + ("Ecuador", "EC", "ECU", 218), + ("Egypt", "EG", "EGY", 818), + ("El Salvador", "SV", "SLV", 222), + ("Equatorial Guinea", "GQ", "GNQ", 226), + ("Eritrea", "ER", "ERI", 232), + ("Estonia", "EE", "EST", 233), + ("Eswatini", "SZ", "SWZ", 748), + ("Ethiopia", "ET", "ETH", 231), + ("Falkland Islands (Malvinas)", "FK", "FLK", 238), + ("Faroe Islands", "FO", "FRO", 234), + ("Fiji", "FJ", "FJI", 242), + ("Finland", "FI", "FIN", 246), + ("France", "FR", "FRA", 250), + ("French Guiana", "GF", "GUF", 254), + ("French Polynesia", "PF", "PYF", 258), + ("French Southern Territories", "TF", "ATF", 260), + ("Gabon", "GA", "GAB", 266), + ("Gambia", "GM", "GMB", 270), + ("Georgia", "GE", "GEO", 268), + ("Germany", "DE", "DEU", 276), + ("Ghana", "GH", "GHA", 288), + ("Gibraltar", "GI", "GIB", 292), + ("Greece", "GR", "GRC", 300), + ("Greenland", "GL", "GRL", 304), + ("Grenada", "GD", "GRD", 308), + ("Guadeloupe", "GP", "GLP", 312), + ("Guam", "GU", "GUM", 316), + ("Guatemala", "GT", "GTM", 320), + ("Guernsey", "GG", "GGY", 831), + ("Guinea", "GN", "GIN", 324), + ("Guinea-Bissau", "GW", "GNB", 624), + ("Guyana", "GY", "GUY", 328), + ("Haiti", "HT", "HTI", 332), + ("Heard Island and McDonald Islands", "HM", "HMD", 334), + ("Holy See", "VA", "VAT", 336), + ("Honduras", "HN", "HND", 340), + ("Hong Kong", "HK", "HKG", 344), + ("Hungary", "HU", "HUN", 348), + ("Iceland", "IS", "ISL", 352), + ("India", "IN", "IND", 356), + ("Indonesia", "ID", "IDN", 360), + ("Iran (Islamic Republic of)", "IR", "IRN", 364), + ("Iraq", "IQ", "IRQ", 368), + ("Ireland", "IE", "IRL", 372), + ("Isle of Man", "IM", "IMN", 833), + ("Israel", "IL", "ISR", 376), + ("Italy", "IT", "ITA", 380), + ("Jamaica", "JM", "JAM", 388), + ("Japan", "JP", "JPN", 392), + ("Jersey", "JE", "JEY", 832), + ("Jordan", "JO", "JOR", 400), + ("Kazakhstan", "KZ", "KAZ", 398), + ("Kenya", "KE", "KEN", 404), + ("Kiribati", "KI", "KIR", 296), + ("Korea (Democratic People's Republic of)", "KP", "PRK", 408), + ("Korea, Republic of", "KR", "KOR", 410), + ("Kuwait", "KW", "KWT", 414), + ("Kyrgyzstan", "KG", "KGZ", 417), + ("Lao People's Democratic Republic", "LA", "LAO", 418), + ("Latvia", "LV", "LVA", 428), + ("Lebanon", "LB", "LBN", 422), + ("Lesotho", "LS", "LSO", 426), + ("Liberia", "LR", "LBR", 430), + ("Libya", "LY", "LBY", 434), + ("Liechtenstein", "LI", "LIE", 438), + ("Lithuania", "LT", "LTU", 440), + ("Luxembourg", "LU", "LUX", 442), + ("Macao", "MO", "MAC", 446), + ("Madagascar", "MG", "MDG", 450), + ("Malawi", "MW", "MWI", 454), + ("Malaysia", "MY", "MYS", 458), + ("Maldives", "MV", "MDV", 462), + ("Mali", "ML", "MLI", 466), + ("Malta", "MT", "MLT", 470), + ("Marshall Islands", "MH", "MHL", 584), + ("Martinique", "MQ", "MTQ", 474), + ("Mauritania", "MR", "MRT", 478), + ("Mauritius", "MU", "MUS", 480), + ("Mayotte", "YT", "MYT", 175), + ("Mexico", "MX", "MEX", 484), + ("Micronesia (Federated States of)", "FM", "FSM", 583), + ("Moldova, Republic of", "MD", "MDA", 498), + ("Monaco", "MC", "MCO", 492), + ("Mongolia", "MN", "MNG", 496), + ("Montenegro", "ME", "MNE", 499), + ("Montserrat", "MS", "MSR", 500), + ("Morocco", "MA", "MAR", 504), + ("Mozambique", "MZ", "MOZ", 508), + ("Myanmar", "MM", "MMR", 104), + ("Namibia", "NA", "NAM", 516), + ("Nauru", "NR", "NRU", 520), + ("Nepal", "NP", "NPL", 524), + ("Netherlands", "NL", "NLD", 528), + ("New Caledonia", "NC", "NCL", 540), + ("New Zealand", "NZ", "NZL", 554), + ("Nicaragua", "NI", "NIC", 558), + ("Niger", "NE", "NER", 562), + ("Nigeria", "NG", "NGA", 566), + ("Niue", "NU", "NIU", 570), + ("Norfolk Island", "NF", "NFK", 574), + ("North Macedonia", "MK", "MKD", 807), + ("Northern Mariana Islands", "MP", "MNP", 580), + ("Norway", "NO", "NOR", 578), + ("Oman", "OM", "OMN", 512), + ("Pakistan", "PK", "PAK", 586), + ("Palau", "PW", "PLW", 585), + ("Palestine", "PS", "PSE", 275), + ("Panama", "PA", "PAN", 591), + ("Papua New Guinea", "PG", "PNG", 598), + ("Paraguay", "PY", "PRY", 600), + ("Peru", "PE", "PER", 604), + ("Philippines", "PH", "PHL", 608), + ("Pitcairn", "PN", "PCN", 612), + ("Poland", "PL", "POL", 616), + ("Portugal", "PT", "PRT", 620), + ("Puerto Rico", "PR", "PRI", 630), + ("Qatar", "QA", "QAT", 634), + ("Réunion", "RE", "REU", 638), + ("Romania", "RO", "ROU", 642), + ("Russian Federation", "RU", "RUS", 643), + ("Rwanda", "RW", "RWA", 646), + ("Saint Barthelemy", "BL", "BLM", 652), + ("Saint Helena, Ascension and Tristan da Cunha", "SH", "SHN", 654), + ("Saint Kitts and Nevis", "KN", "KNA", 659), + ("Saint Lucia", "LC", "LCA", 662), + ("Saint Martin (French part)", "MF", "MAF", 663), + ("Saint Pierre and Miquelon", "PM", "SPM", 666), + ("Saint Vincent and the Grenadines", "VC", "VCT", 670), + ("Samoa", "WS", "WSM", 882), + ("San Marino", "SM", "SMR", 674), + ("Sao Tome and Principe", "ST", "STP", 678), + ("Saudi Arabia", "SA", "SAU", 682), + ("Senegal", "SN", "SEN", 686), + ("Serbia", "RS", "SRB", 688), + ("Seychelles", "SC", "SYC", 690), + ("Sierra Leone", "SL", "SLE", 694), + ("Singapore", "SG", "SGP", 702), + ("Sint Maarten (Dutch part)", "SX", "SXM", 534), + ("Slovakia", "SK", "SVK", 703), + ("Slovenia", "SI", "SVN", 705), + ("Solomon Islands", "SB", "SLB", 90), + ("Somalia", "SO", "SOM", 706), + ("South Africa", "ZA", "ZAF", 710), + ("South Georgia and the South Sandwich Islands", "GS", "SGS", 239), + ("South Sudan", "SS", "SSD", 728), + ("Spain", "ES", "ESP", 724), + ("Sri Lanka", "LK", "LKA", 144), + ("Sudan", "SD", "SDN", 729), + ("Suriname", "SR", "SUR", 740), + ("Svalbard and Jan Mayen", "SJ", "SJM", 744), + ("Sweden", "SE", "SWE", 752), + ("Switzerland", "CH", "CHE", 756), + ("Syrian Arab Republic", "SY", "SYR", 760), + ("Taiwan", "TW", "TWN", 158), + ("Tajikistan", "TJ", "TJK", 762), + ("Tanzania, United Republic of", "TZ", "TZA", 834), + ("Thailand", "TH", "THA", 764), + ("Timor-Leste", "TL", "TLS", 626), + ("Togo", "TG", "TGO", 768), + ("Tokelau", "TK", "TKL", 772), + ("Tonga", "TO", "TON", 776), + ("Trinidad and Tobago", "TT", "TTO", 780), + ("Tunisia", "TN", "TUN", 788), + ("Turkey", "TR", "TUR", 792), + ("Turkmenistan", "TM", "TKM", 795), + ("Turks and Caicos Islands", "TC", "TCA", 796), + ("Tuvalu", "TV", "TUV", 798), + ("Uganda", "UG", "UGA", 800), + ("Ukraine", "UA", "UKR", 804), + ("United Arab Emirates", "AE", "ARE", 784), + ("United Kingdom of Great Britain and Northern Ireland", "GB", "GBR", 826), + ("United States of America", "US", "USA", 840), + ("Uruguay", "UY", "URY", 858), + ("Uzbekistan", "UZ", "UZB", 860), + ("Vanuatu", "VU", "VUT", 548), + ("Venezuela (Bolivarian Republic of)", "VE", "VEN", 862), + ("Viet Nam", "VN", "VNM", 704), + ("Virgin Islands (British)", "VG", "VGB", 92), + ("Virgin Islands (U.S.)", "VI", "VIR", 850), + ("Wallis and Futuna", "WF", "WLF", 876), + ("Western Sahara", "EH", "ESH", 732), + ("Yemen", "YE", "YEM", 887), + ("Zambia", "ZM", "ZMB", 894), + ("Zimbabwe", "ZW", "ZWE", 716) + }; + + public static List MostUsedLangages = new List + { + "English", + "French", + "Arabic", + "Standard Chinese", + "Spanish", + "Persian", + "German", + "Russian", + "Malay", + "Portuguese" + }; + + public static List OfficialLanguages = new List + { + "Abkhaz", + "Afar", + "Afrikaans", + "Aja-Gbe", + "Akan", + "Albanian", + "Amharic", + "Anii", + "Arabic", + "Armenian", + "Assamese", + "Aymara", + "Azerbaijani", + "Balanta", + "Bambara", + "Bariba", + "Basque", + "Bassari", + "Bedik", + "Belarusian", + "Bengali", + "Berber", + "Biali", + "Bislama", + "Boko", + "Bomu", + "Bosnian", + "Bozo", + "Buduma", + "Bulgarian", + "Burmese", + "Cantonese", + "Catalan", + "Chinese (Mandarin)", + "Chichewa", + "Chirbawe", + "Comorian", + "Corsican", + "Croatian", + "Czech", + "Dagaare", + "Dagbani", + "Dangme", + "Danish", + "Dari", + "Dendi", + "Dhivehi", + "Dioula", + "Dogon", + "Dutch", + "Dzongkha", + "English", + "Estonian", + "Ewe-Gbe", + "Faroese", + "Fijian", + "Filipino", + "Finnish", + "Fon-Gbe", + "Foodo", + "Formosan", + "French", + "Fula", + "Ga", + "Gàidhlig", + "Gbe", + "Gen-Gbe", + "Georgian", + "German", + "Gonja", + "Gourmanché", + "Greek", + "Guarani", + "Gujarati", + "Haitian Creole", + "Hakka", + "Hassaniya", + "Hausa", + "Hebrew", + "Hindi", + "Hiri Motu", + "Hungarian", + "Igbo", + "Icelandic", + "Indonesian", + "Irish", + "Italian", + "Japanese", + "Javanese", + "Jola", + "Kabye", + "Kalanga", + "Kannada", + "Kanuri", + "Kasem", + "Kazakh", + "Khmer", + "Kinyarwanda", + "Kirundi", + "Kissi", + "Koisan", + "Korean", + "Kpelle", + "Kurdish", + "Kyrgyz", + "Lao", + "Latin", + "Latvian", + "Lituanian", + "Lukpa", + "Luxembourgish", + "Macedonian", + "Malagasy", + "Malay", + "Malinke", + "Maltese", + "Mamara", + "Manding", + "Mandinka", + "Mandjak", + "Mankanya", + "Manx Gaelic", + "Maori", + "Marshallese", + "Mauritian Creole", + "Mbelime", + "Meitei", + "Mongolian", + "Montenegrin", + "Mossi", + "Nambya", + "Nateni", + "Nauruan", + "Ndau", + "Ndebele", + "Nepali", + "Noon", + "Northern Sotho", + "Norwegian", + "Nzema", + "Oniyan", + "Oriya", + "Oromo", + "Ossetian", + "Palauan", + "Papiamento", + "Pashto", + "Persian", + "Polish", + "Portuguese", + "Punjabi", + "Quechua", + "Romanian", + "Romansch", + "Russian", + "Safen", + "Samoa", + "Sango", + "Sena", + "Scots", + "Serbian", + "Serer", + "Seychellois Creole", + "Shona", + "Sinhala", + "Slovak", + "Slovene", + "Somali", + "Songhay-Zarma", + "Soninke", + "Sotho", + "Spanish", + "Susu", + "Swahili", + "Swati", + "Swedish", + "Syenara", + "Taiwanese Hokkien", + "Tajik", + "Tagalog", + "Tamasheq", + "Tamil", + "Tammari", + "Tasawaq", + "Tebu", + "Telugu", + "Tetum", + "Thai", + "Tigrinya", + "Tok Pisin", + "Toma", + "Tonga", + "Tongan", + "Tsonga", + "Tswana", + "Turkish", + "Turkmen", + "Tuvaluan", + "Ukrainian", + "Urdu", + "Uzbek", + "Venda", + "Vietnamese", + "Waama", + "Waci-Gbe", + "Wamey", + "Welsh", + "Wolof", + "Xhosa", + "Xwela-Gbe", + "Yobe", + "Yom", + "Yoruba", + "Zulu" + }; + } + } +}