diff --git a/DATA-LICENSE b/DATA-LICENSE
new file mode 100644
index 0000000..e2d6019
--- /dev/null
+++ b/DATA-LICENSE
@@ -0,0 +1,47 @@
+# Data Licenses
+
+This project includes or derives data from the following sources.
+
+---
+
+## Unicode Common Locale Data Repository (CLDR)
+
+This project includes data derived from the **Unicode Common Locale Data Repository (CLDR)**.
+
+Unicode CLDR data is licensed under the **Unicode License Agreement**.
+
+Copyright © Unicode, Inc.
+All rights reserved.
+
+Unicode, Inc. hereby grants to any person obtaining a copy of the Unicode data
+files and any associated documentation (the "Data Files") a perpetual,
+worldwide, non-exclusive, no-charge, royalty-free, irrevocable license to use,
+copy, modify, merge, publish, distribute, and/or sell copies of the Data Files,
+and to permit persons to whom the Data Files are furnished to do so, provided
+that the above copyright notice(s) and this permission notice appear with all
+copies of the Data Files or substantial portions thereof.
+
+THE DATA FILES ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+
+Unicode License Agreement:
+https://www.unicode.org/license.html
+
+---
+
+## ISO 4217 Currency Codes Dataset
+
+This project also uses data derived from the **ISO 4217 currency codes dataset**
+provided by the `datasets/currency-codes` project.
+
+Source repository:
+https://github.com/datasets/currency-codes
+
+The dataset is licensed under the **Open Database License (ODbL) v1.0**.
+
+You are free to share, create, and adapt the data, provided that you attribute
+the source and comply with the terms of the ODbL.
+
+Open Database License (ODbL) v1.0:
+https://opendatacommons.org/licenses/odbl/1-0/
\ No newline at end of file
diff --git a/LICENSE b/LICENSE
index 7126546..e0789a8 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,6 +1,6 @@
MIT License
-Copyright (c) 2025 Nikolay Selyutin
+Copyright (c) 2026 Nikolay Selyutin
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
diff --git a/NOTICE b/NOTICE
new file mode 100644
index 0000000..0a57ef7
--- /dev/null
+++ b/NOTICE
@@ -0,0 +1,27 @@
+NOTICE
+
+HawkN.Iso.Currencies
+Copyright © 2026 Nikolay Selyutin (HawkN113)
+
+This product includes software developed by the HawkN.Iso.Currencies project.
+
+---
+
+THIRD-PARTY DATA ATTRIBUTIONS
+
+This product includes or derives data from the following third-party sources:
+
+1. Unicode Common Locale Data Repository (CLDR)
+ Copyright © Unicode, Inc.
+ Licensed under the Unicode License Agreement.
+ https://www.unicode.org/license.html
+
+2. ISO 4217 Currency Codes Dataset
+ Provided by the datasets/currency-codes project.
+ Licensed under the Open Database License (ODbL) v1.0.
+ https://opendatacommons.org/licenses/odbl/1-0/
+
+---
+
+The above notices must be included in all copies or substantial portions of
+the software where required by the applicable licenses.
\ No newline at end of file
diff --git a/README.md b/README.md
index 957575a..3f3c867 100644
--- a/README.md
+++ b/README.md
@@ -8,7 +8,9 @@
[](https://learn.microsoft.com/en-us/nuget/nuget-org/trusted-publishing)
[](https://dotnet.microsoft.com/download)
[](https://www.nuget.org/packages/HawkN.Iso.Currencies/)
-[](https://github.com/HawkN113/HawkN.Iso.Currencies/blob/main/LICENSE)
+[](LICENSE)
+[](https://unicode.org/license.html)
+[](https://opendatacommons.org/licenses/odbl/1-0/)
|  | **HawkN.Iso.Currencies** provides ISO 4217 currency codes, historical currency data, and replacement mappings. |
@@ -150,187 +152,219 @@ var validResult = currencyService.TryValidate(CurrencyCode.AFN, out var validate
```
---
-### Supported fiat currencies
+## Supported currencies
+
+Click to view the full list of supported fiat currencies
+
| Currency code | Currency name |
|:---------------:|:-----------------------------------------:|
| AED | UAE Dirham |
-| AFN | Afghan Afghani |
-| ALL | Albanian Lek |
-| AMD | Armenian Dram |
-| AOA | Angolan Kwanza |
-| ARS | Argentine Peso |
-| AUD | Australian Dollar |
-| AWG | Aruban Florin |
-| AZN | Azerbaijan Manat |
-| BAM | Convertible Mark |
-| BBD | Barbados Dollar |
-| BDT | Bangladeshi Taka |
-| BGN | Bulgarian Lev |
-| BHD | Bahraini Dinar |
-| BIF | Burundi Franc |
-| BMD | Bermudian Dollar |
-| BND | Brunei Dollar |
-| BOB | Bolivian Boliviano |
-| BOV | Bolivian Mvdol |
-| BRL | Brazilian Real |
-| BSD | Bahamian Dollar |
-| BTN | Bhutanese Ngultrum |
-| BWP | Botswana Pula |
-| BYN | Belarusian Ruble |
-| BZD | Belize Dollar |
-| CAD | Canadian Dollar |
-| CDF | Congolese Franc |
-| CHE | WIR Euro |
-| CHF | Swiss Franc |
-| CHW | WIR Franc |
-| CLF | Unidad de Fomento |
-| CLP | Chilean Peso |
-| CNY | Chinese Yuan |
-| COP | Colombian Peso |
-| COU | Unidad de Valor Real |
-| CRC | Costa Rican Colon |
+| AFN | Afghani |
+| ALL | Albanian Lek |
+| AMD | Armenian Dram |
+| AOA | Angolan Kwanza |
+| ARS | Argentine Peso |
+| AUD | Australian Dollar |
+| AWG | Aruban Florin |
+| AZN | Azerbaijan Manat |
+| BAM | Convertible Mark |
+| BBD | Barbados Dollar |
+| BDT | Bangladeshi Taka |
+| BHD | Bahraini Dinar |
+| BIF | Burundian Franc |
+| BMD | Bermudian Dollar |
+| BND | Brunei Dollar |
+| BOB | Bolivian Boliviano |
+| BOV | Bolivian Mvdol |
+| BRL | Brazilian Real |
+| BSD | Bahamian Dollar |
+| BTN | Bhutanese Ngultrum |
+| BWP | Botswana Pula |
+| BYN | Belarusian Ruble |
+| BZD | Belize Dollar |
+| CAD | Canadian Dollar |
+| CDF | Congolese Franc |
+| CHE | WIR Euro |
+| CHF | Swiss Franc |
+| CHW | WIR Franc |
+| CLF | Unidad de Fomento |
+| CLP | Chilean Peso |
+| CNY | Chinese Yuan |
+| COP | Colombian Peso |
+| COU | Unidad de Valor Real |
+| CRC | Costa Rican Colón |
| CUP | Cuban Peso |
-| CVE | Cape Verde Escudo |
-| CZK | Czech Koruna |
-| DJF | Djibouti Franc |
-| DKK | Danish Krone |
-| DOP | Dominican Peso |
-| DZD | Algerian Dinar |
-| EGP | Egyptian Pound |
-| ERN | Eritrean Nakfa |
-| ETB | Ethiopian Birr |
-| EUR | Euro |
-| FJD | Fiji Dollar |
-| FKP | Falkland Islands Pound |
-| GBP | Pound Sterling |
-| GEL | Georgian Lari |
-| GHS | Ghana Cedi |
-| GIP | Gibraltar Pound |
-| GMD | Gambian Dalasi |
-| GNF | Guinean Franc |
-| GTQ | Guatemalan Quetzal |
-| GYD | Guyanese Dollar |
-| HKD | Hong Kong Dollar |
-| HNL | Honduran Lempira |
-| HTG | Haitian Gourde |
-| HUF | Hungarian Forint |
-| IDR | Indonesian Rupiah |
-| ILS | New Israeli Sheqel |
-| INR | Indian Rupee |
-| IQD | Iraqi Dinar |
-| IRR | Iranian Rial |
-| ISK | Icelandic Krona |
-| JMD | Jamaican Dollar |
-| JOD | Jordanian Dinar |
-| JPY | Japanese Yen |
-| KES | Kenyan Shilling |
-| KGS | Kyrgyzstani Som |
-| KHR | Cambodian Riel |
-| KMF | Comorian Franc |
-| KPW | North Korean Won |
-| KRW | South Korean Won |
-| KWD | Kuwaiti Dinar |
-| KYD | Cayman Islands Dollar |
-| KZT | Kazakhstani Tenge |
-| LAK | Lao Kip |
-| LBP | Lebanese Pound |
-| LKR | Sri Lankan Rupee |
-| LRD | Liberian Dollar |
-| LSL | Lesotho Loti |
-| LYD | Libyan Dinar |
-| MAD | Moroccan Dirham |
-| MDL | Moldovan Leu |
-| MGA | Malagasy Ariary |
-| MKD | Macedonian Denar |
-| MMK | Myanmar Kyat |
-| MNT | Mongolian Tugrik |
-| MOP | Macanese Pataca |
-| MRU | Mauritanian Ouguiya |
-| MUR | Mauritian Rupee |
-| MVR | Maldivian Rufiyaa |
-| MWK | Malawi Kwacha |
-| MXN | Mexican Peso |
-| MXV | Mexican Unidad de Inversion (UDI) |
-| MYR | Malaysian Ringgit |
-| MZN | Mozambique Metical |
-| NAD | Namibian Dollar |
-| NGN | Nigerian Naira |
-| NIO | Cordoba Oro |
-| NOK | Norwegian Krone |
-| NPR | Nepalese Rupee |
-| NZD | New Zealand Dollar |
+| CVE | Cape Verde Escudo |
+| CZK | Czech Koruna |
+| DJF | Djiboutian Franc |
+| DKK | Danish Krone |
+| DOP | Dominican Peso |
+| DZD | Algerian Dinar |
+| EGP | Egyptian Pound |
+| ERN | Eritrean Nakfa |
+| ETB | Ethiopian Birr |
+| EUR | Euro |
+| FJD | Fiji Dollar |
+| FKP | Falkland Islands Pound |
+| GBP | British Pound |
+| GEL | Georgian Lari |
+| GHS | Ghanaian Cedi |
+| GIP | Gibraltar Pound |
+| GMD | Gambian Dalasi |
+| GNF | Guinean Franc |
+| GTQ | Guatemalan Quetzal |
+| GYD | Guyanese Dollar |
+| HKD | Hong Kong Dollar |
+| HNL | Honduran Lempira |
+| HTG | Haitian Gourde |
+| HUF | Hungarian Forint |
+| IDR | Indonesian Rupiah |
+| ILS | Israeli New Shekel |
+| INR | Indian Rupee |
+| IQD | Iraqi Dinar |
+| IRR | Iranian Rial |
+| ISK | Icelandic Krona |
+| JMD | Jamaican Dollar |
+| JOD | Jordanian Dinar |
+| JPY | Japanese Yen |
+| KES | Kenyan Shilling |
+| KGS | Kyrgyzstani Som |
+| KHR | Cambodian Riel |
+| KMF | Comorian Franc |
+| KPW | North Korean Won |
+| KRW | South Korean Won |
+| KWD | Kuwaiti Dinar |
+| KYD | Cayman Islands Dollar |
+| KZT | Kazakhstani Tenge |
+| LAK | Lao Kip |
+| LBP | Lebanese Pound |
+| LKR | Sri Lankan Rupee |
+| LRD | Liberian Dollar |
+| LSL | Lesotho Loti |
+| LYD | Libyan Dinar |
+| MAD | Moroccan Dirham |
+| MDL | Moldovan Leu |
+| MGA | Malagasy Ariary |
+| MKD | Macedonian Denar |
+| MMK | Myanmar Kyat |
+| MNT | Mongolian Tugrik |
+| MOP | Macanese Pataca |
+| MRU | Mauritanian Ouguiya |
+| MUR | Mauritian Rupee |
+| MVR | Maldivian Rufiyaa |
+| MWK | Malawian Kwacha |
+| MXN | Mexican Peso |
+| MXV | Mexican Investment Unit |
+| MYR | Malaysian Ringgit |
+| MZN | Mozambican Metical |
+| NAD | Namibian Dollar |
+| NGN | Nigerian Naira |
+| NIO | Nicaraguan Córdoba |
+| NOK | Norwegian Krone |
+| NPR | Nepalese Rupee |
+| NZD | New Zealand Dollar |
| OMR | Omani Rial |
-| PAB | Panamanian Balboa |
-| PEN | Peruvian Sol |
-| PGK | Papua New Guinean Kina |
-| PHP | Philippine Peso |
-| PKR | Pakistani Rupee |
-| PLN | Polish Zloty |
-| PYG | Paraguayan Guarani |
-| QAR | Qatari Riyal |
-| RON | Romanian Leu |
-| RSD | Serbian Dinar |
-| RUB | Russian Ruble |
-| RWF | Rwanda Franc |
-| SAR | Saudi Riyal |
-| SBD | Solomon Islands Dollar |
-| SCR | Seychelles Rupee |
-| SDG | Sudanese Pound |
-| SEK | Swedish Krona |
-| SGD | Singapore Dollar |
-| SHP | Saint Helena Pound |
-| SLE | Sierra Leonean Leone |
-| SOS | Somali Shilling |
-| SRD | Surinamese Dollar |
-| SSP | South Sudanese Pound |
-| STN | São Tomé and Príncipe Dobra |
-| SVC | El Salvador Colon |
-| SYP | Syrian Pound |
-| SZL | Swazi Lilangeni |
-| THB | Thai Baht |
-| TJS | Tajikistani Somoni |
-| TMT | Turkmenistan New Manat |
-| TND | Tunisian Dinar |
-| TOP | Tongan Pa?anga |
-| TRY | Turkish Lira |
-| TTD | Trinidad and Tobago Dollar |
-| TWD | New Taiwan Dollar |
-| TZS | Tanzanian Shilling |
-| UAH | Ukrainian Hryvnia |
-| UGX | Uganda Shilling |
-| USD | US Dollar |
-| USN | US Dollar (Next day) |
-| UYI | Uruguay Peso en Unidades Indexadas (UI) |
-| UYU | Peso Uruguayo |
-| UYW | Unidad Previsional |
-| UZS | Uzbekistan Sum |
-| VES | Bolívar Soberano |
-| VND | Vietnamese Dong |
-| VUV | Vanuatu Vatu |
-| WST | Samoan Tala |
-| XAF | CFA Franc BEAC |
-| XCD | East Caribbean Dollar |
-| XDR | SDR (Special Drawing Right) |
-| XOF | CFA Franc BCEAO |
-| XPF | CFP Franc |
-| YER | Yemeni Rial |
-| ZAR | South African Rand |
-| ZMW | Zambian Kwacha |
+| PAB | Panamanian Balboa |
+| PEN | Peruvian Sol |
+| PGK | Papua New Guinean Kina |
+| PHP | Philippine Peso |
+| PKR | Pakistani Rupee |
+| PLN | Polish Zloty |
+| PYG | Paraguayan Guarani |
+| QAR | Qatari Riyal |
+| RON | Romanian Leu |
+| RSD | Serbian Dinar |
+| RUB | Russian Ruble |
+| RWF | Rwandan Franc |
+| SAR | Saudi Riyal |
+| SBD | Solomon Islands Dollar |
+| SCR | Seychelles Rupee |
+| SDG | Sudanese Pound |
+| SEK | Swedish Krona |
+| SGD | Singapore Dollar |
+| SHP | Saint Helena Pound |
+| SLE | Sierra Leonean Leone |
+| SOS | Somali Shilling |
+| SRD | Surinamese Dollar |
+| SSP | South Sudanese Pound |
+| STN | São Tomé and Príncipe Dobra |
+| SYP | Syrian Pound |
+| SZL | Swazi Lilangeni |
+| THB | Thai Baht |
+| TJS | Tajikistani Somoni |
+| TMT | Turkmenistani Manat |
+| TND | Tunisian Dinar |
+| TOP | Tongan Pa?anga |
+| TRY | Turkish Lira |
+| TTD | Trinidad and Tobago Dollar |
+| TWD | New Taiwan Dollar |
+| TZS | Tanzanian Shilling |
+| UAH | Ukrainian Hryvnia |
+| UGX | Ugandan Shilling |
+| USD | US Dollar |
+| USN | US Dollar (Next day) |
+| UYI | Uruguayan Peso (Indexed Units) |
+| UYU | Uruguayan Peso |
+| UYW | Unidad Previsional |
+| UZS | Uzbekistani Som |
+| VES | Venezuelan Bolívar |
+| VND | Vietnamese Dong |
+| VUV | Vanuatu Vatu |
+| WST | Samoan Tala |
+| XAF | Central African CFA Franc |
+| XAG | Silver (one troy ounce) |
+| XAU | Gold (one troy ounce) |
+| XBA | European Composite Unit |
+| XBB | European Monetary Unit |
+| XBC | European Unit of Account (XBC) |
+| XBD | European Unit of Account (XBD) |
+| XCD | East Caribbean Dollar |
+| XDR | Special Drawing Rights |
+| XOF | West African CFA Franc |
+| XPD | Palladium (one troy ounce) |
+| XPF | CFP Franc |
+| XPT | Platinum (one troy ounce) |
+| XSU | Sucre (Unidad de Cuenta del ALBA) |
+| XTS | Testing Currency Code |
+| XUA | ADB Unit of Account |
+| XXX | Unknown Currency |
+| YER | Yemeni Rial |
+| ZAR | South African Rand |
+| ZMW | Zambian Kwacha |
+
+
+
---
-### Generated Types
+## Generated Types
- `CurrencyCode` – strongly-typed enum with all ISO 4217 codes.
- `Currency` – domain model representing a currency (code, name, numeric code, withdrawn date).
---
-### License
-This project is licensed under the MIT License.
-
+## License
+
+### Code
+This project’s source code is licensed under the [MIT License](LICENSE).
+
+### Data
+This project uses data derived from the following sources:
+
+- **Unicode Common Locale Data Repository (CLDR)**
+ Licensed under the [Unicode License Agreement](https://unicode.org/license.html).
+
+- **ISO 4217 currency codes dataset**
+ Source: https://github.com/datasets/currency-codes
+ Licensed under the **Open Database License (ODbL) v1.0**.
+
+The above data licenses are **permissive and compatible with MIT-licensed code**
+when used for reference and code generation.
+
+See [DATA-LICENSE](DATA-LICENSE) for details.
---
-### References
+## References
- [ISO 4217 Standard](https://www.iso.org/iso-4217-currency-codes.html)
- [GitHub Repository](https://github.com/HawkN113/HawkN.Iso.Currencies)
diff --git a/src/packages/HawkN.Iso.Currencies.Generators/BaseIncrementalGenerator.cs b/src/packages/HawkN.Iso.Currencies.Generators/BaseIncrementalGenerator.cs
index c2b0990..06ecf80 100644
--- a/src/packages/HawkN.Iso.Currencies.Generators/BaseIncrementalGenerator.cs
+++ b/src/packages/HawkN.Iso.Currencies.Generators/BaseIncrementalGenerator.cs
@@ -19,8 +19,14 @@ protected void AddStubIfErrors(SourceProductionContext spc, string hintName, str
spc.AddSource(hintName, SourceText.From(stubSource, Encoding.UTF8));
}
- protected static (string original, string replacement, string historical) LoadJsonResources(Assembly assembly)
+ protected static (string original, string translations, string replacement, string currencyCodesCsv) LoadResources(Assembly assembly)
{
+ return (
+ ReadResource("HawkN.Iso.Currencies.Generators.Content.SupplementalData.xml"),
+ ReadResource("HawkN.Iso.Currencies.Generators.Content.Translations.EN.xml"),
+ ReadResource("HawkN.Iso.Currencies.Generators.Content.list-replacement-currency-names.json"),
+ ReadResource("HawkN.Iso.Currencies.Generators.Content.СurrencyСodes.csv")
+ );
string ReadResource(string name)
{
using var stream = assembly.GetManifestResourceStream(name)
@@ -28,12 +34,6 @@ string ReadResource(string name)
using var reader = new StreamReader(stream, new UTF8Encoding(encoderShouldEmitUTF8Identifier: false));
return reader.ReadToEnd();
}
-
- return (
- ReadResource("HawkN.Iso.Currencies.Generators.Content.list-original-currencies.json"),
- ReadResource("HawkN.Iso.Currencies.Generators.Content.list-replacement-currency-names.json"),
- ReadResource("HawkN.Iso.Currencies.Generators.Content.list-historical-currencies.json")
- );
}
protected void GenerateSourceOutput((string, string, string) tuple, SourceProductionContext spc)
@@ -41,7 +41,7 @@ protected void GenerateSourceOutput((string, string, string) tuple, SourceProduc
ErrorFactory.Create(new ErrorDescription
{
DiagnosticDescriptor = new DiagnosticDescriptor(
- id: DiagnosticDescriptors.UnexpectedErrorId,
+ id: CreateDescriptorId("0"),
title: Constants.DiagnosticsTitle,
messageFormat: "Unexpected exception: Unexpected error",
category: string.Empty,
@@ -52,11 +52,23 @@ protected void GenerateSourceOutput((string, string, string) tuple, SourceProduc
ErrorFactory.ShowDiagnostics(spc, GeneratorType.Factory);
}
- internal static StringBuilder CreateSourceBuilder(string generatorName, string @namespace, string[]? references = null)
+ internal static string CreateDescriptorId(string number)
+ {
+ return string.Concat(Constants.ErrorPrefixName, number.PadLeft(3, '0'));
+ }
+
+ internal static StringBuilder CreateSourceBuilder(string generatorName, string @namespace, string[] extendedSourceData, string[]? references = null)
{
var sb = new StringBuilder();
sb.AppendLine("// ");
sb.AppendLine($"// This file was generated by {generatorName}");
+
+ if (extendedSourceData.Any())
+ {
+ foreach (var sourceData in extendedSourceData)
+ sb.AppendLine($"// {sourceData}");
+ }
+
sb.AppendLine("// Do not modify this file manually.");
sb.AppendLine("// ");
sb.AppendLine("#nullable enable");
diff --git a/src/packages/HawkN.Iso.Currencies.Generators/Constants.cs b/src/packages/HawkN.Iso.Currencies.Generators/Constants.cs
index cac6fde..90c5bec 100644
--- a/src/packages/HawkN.Iso.Currencies.Generators/Constants.cs
+++ b/src/packages/HawkN.Iso.Currencies.Generators/Constants.cs
@@ -6,4 +6,11 @@ internal static class Constants
public const string DiagnosticsTitle = "Generator error";
public const string ErrorMark = "#ERROR:";
public const string GeneratorName = "HawkN.Iso.Currencies.Generators source generator";
+ public const string ErrorPrefixName = "CURRENCY_";
+ public static readonly string[] ExtendedSourceData =
+ [
+ "Release: release-48",
+ "CLDR URL: https://github.com/unicode-org/cldr",
+ "Currency codes URL: https://raw.githubusercontent.com/datasets/currency-codes/main/data/codes-all.csv"
+ ];
}
\ No newline at end of file
diff --git a/src/packages/HawkN.Iso.Currencies.Generators/Content/SupplementalData.xml b/src/packages/HawkN.Iso.Currencies.Generators/Content/SupplementalData.xml
new file mode 100644
index 0000000..25684d3
--- /dev/null
+++ b/src/packages/HawkN.Iso.Currencies.Generators/Content/SupplementalData.xml
@@ -0,0 +1,5748 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ und
+ hu ja km ko mn si ta te vi yue zh
+
+
+
+ Dutch official
+ At most 6% are not fluent in English
+ Precise data not available, added so Balinese script defaults to Balinese
+ While Cyrillic is customary, the vast majority of the population can read both.For languages not customarily written, the writing populiation is artificially set to 5% in the absence of better information.
+ The figure includes 'Vlaams' population from Ethnologue
+ It is estimated that Walloon is used actively by 10-20% of the total population of Wallonia or between 300,000 and 600,000 people. For languages not customarily written, the writing population is artificially set to 5% in the absence of better information.
+ Precise data not available
+ Arabic official, the figure is derived from literacy * lang pop
+ Spanish is the official language, only about 60-70% of the population speaks it at all ;
+ English official, 81% literacy; the figure is derived from literacy * lang pop
+ [missing]
+ Ethnologue: 350k in CAF + 1.6 million 2nd lang speakers
+ Corsican has been recognized as a language by the French government. Speakers also use French but many are not fluent in it. For languages not customarily written, the writing population is artificially set to 5%
+ English 1/5 of pop, used 1/5 of pop * literacy rate
+ Spanish official
+ Languedocien = Occitan 'Everyone speaks French as first or second language.' For languages not customarily written, the writing population is artificially set to 5%
+ 100k+ native, plus 1.5 mil 2nd lang speakers. For languages not customarily written, the writing population is artificially set to 5% in the absence of better information.
+ For languages not customarily written, the writing population is artificially set to 5% in the absence of better information.
+ English official; the figure is derived from literacy * lang pop
+ Regelmässig verwendete Sprachen - Percent of people that regularly use the language; literacy is mostly in standard German. For languages not customarily written, the writing population is artificially set to 5% in the absence of better information.
+ [missing]
+ Actually literacy in Nko writing unknown but historically they used the Latin script
+ English official, the figure is derived from literacy * lang pop
+ Actually literacy in Nko writing unknown
+ Some 99% of users are literate in French or German. For languages not customarily written, the writing population is artificially set to 5% in the absence of better information.
+ 2nd lang literacy 15-25%
+ Nearly all speakers are literate in a 2nd language. For languages not customarily written, the writing population is artificially set to 5%
+ Many minor langs; Portuguese official
+ In this and other sources, such as Ethnologue, there is no estimate for number of users. http://en.wikipedia.org/wiki/Filipino_language http://www.ethnologue.com/show_language.asp?code=fil
+ Most of the population uses Creole; see also http://www.country-studies.com/haiti/creole,-literacy,-and-education.html http://en.wikipedia.org/wiki/French_language#Haiti
+ [missing]
+ Official language, 37-77% literacy
+ Official language, used in some schools.
+ http://www.censusindia.net/cendat/datatable26.html
+ 25% of pop
+ - Icelandic official
+ says: All Jordanians, regardless of ethnicity or religion, speak Arabic, the official language of Jordan
+ English official; Kiribati widespread
+ [missing]
+ German official
+ 2020 Russian Census
+ 2022 Census
+ Used CIA literacy figure times population, added 'Vlaams' population
+ [missing]
+ 70,000 in 1991, 100,000 who understand it, but do not speak it ; ethnic pop 530,000 in 2002
+ Melanesian pidgin in much of the country is lingua franca; English (official; but spoken by only 1%-2% of the population); 120 indigenous languages
+ English 20%
+ Lesotho English-using pop estimated at 5%, no figs available. Probably too low.
+ [missing]
+ Official language. Probably 2% of the population from East Timor worldwide can function in it
+ Ethnologue says 80k users of French. No other figures found yet, but this seems too low.
+ Russian 5.8%.
+ The figure is from Wikipedia article on English-speaking populations
+ Albanian 25.1%
+ English is an official language, not widely spoken
+ 42.6% of population
+ [missing]
+ 4mil 2nd lang speakers, 120k 1st lang, 20k monolinguals. English creole; 40-45% literacy.
+ A pidginizatino of Motu; 120k 2nd lang speakers, very few 1st lang.
+ English official on some islands, total 9.4%
+ http://astro.uchicago.edu/cara/vtour/mcmurdo/ http://www.usap.gov/videoclipsandmaps/mcmwebcam.cfm Winter population is listed.
+ 1.2mil 1st lang + 240k 2nd lang users, low literacy
+ Has rotating Norwegian population at Norvegia Station
+ http://www.mavicanet.com/directory/eng/2436.html
+ Uninhabited, barren, sub-Antarctic islands
+ [missing]
+ Figure for Hindi includes 2nd language users, India Census data.
+ [missing]
+ CIA Factbook entry on Kazakhstan
+ 50k Europeans, mostly French. The figure for writing population is derived from literacy * population, and may be too high.
+ The figure is from Wikipedia article on http://en.wikipedia.org/wiki/List_of_countries_by_English-speaking_population The figure is from Wikipedia article on English-speaking populations
+ [missing]
+ The figure is from Wikipedia article on English-speaking populations
+ Precise data not available -- listed with 2 speakers as a tie-breaker
+ CIA Factbook
+ [missing]
+ CIA Factbook. See also http://www.jsmp.minihub.org/Reports/jsmpreports/Language%20Report/LanguageReport(english).pdf
+ CIA Factbook.
+ The Tonga Chronicle is a government-owned newspaper... It publishes two editions, one in Tongan with a circulation of 5,000, and one in English with a circulation of 1,500; Writing pop figure shown for English is set to 30% of that for Tonga.
+ 96% bilingual in Turkish.
+ The Tuvaluan language is spoken by virtually everyone, while Gilbertese is spoken by some people on Nui. English is also an official language, but is not spoken in daily use. Writing pop set to 10% of Tuvalu.
+ English (official, primary language of commerce, administration, and higher education)
+ Ethnologue lists 1 million 2nd lang users of English; no other good figures found.
+ also: http://en.wikipedia.org/wiki/Bosnian_language
+ [missing]
+ 2021 Census, counting people who are fluent in the language
+ 5% writing pop estimated in absence of other data
+ [missing]
+ Crude estimate based on import partner data.
+ [missing]
+ More than 80 % of the total Thai population speaks the native Thai language.
+ [missing]
+ [missing]
+ [missing]
+ (= Tai Lu, Xishuangbanna Dai; New Tai Lue script)
+ [missing]
+ [missing]
+ Estimates Indian ethnic 44% ; see also http://en.wikipedia.org/wiki/Non-resident_Indian_and_Person_of_Indian_Origin and http://www.vanuatu.usp.ac.fj/paclangunit/English_South_Pacific.htm
+ [missing]
+ [missing]
+ [missing]
+ [missing]
+ Deva is the official script for sd in India; set to 55%. Arab, Guru, Khoj also used.
+ The lingua franca of 80% of the population
+ 2016 Census
+ and https://en.wikipedia.org/wiki/Mru_language
+ - More than 95% of Pakistanis can speak or understand Urdu as their second or third language
+ [missing]
+ http://www.stoletie.ru/vzglyad/derusifikacija_nabirajet_oboroty_934.htm
+ [missing]
+ [missing]
+ [missing]
+ [missing]
+ US 2005 census
+ [missing]
+ [missing]
+ CIA Factbook lists spoken language, the entry for Bokmål only on Svalbard and Jan Mayan is an assumption.
+ http://www.bfs.admin.ch/bfs/portal/de/index/infothek/lexikon/bienvenue___login/blank/zugang_lexikon.Document.62669.xls
+ No literacy figure available for English in Madagascar; newly adopted official language; 5% is an estimate.
+ - the script is an assumption, needs a reference
+ Latin script official, used 98.8% of pop * 10% for the usage figure
+ Latin script official, used 98.8% of pop * 90% for the usage figure
+ - five eastern provinces of the DRC are Swahili speaking. Nearly half the 66 million Congolese speak it.
+ [missing]
+ 2022 Census number of people in Ethnic group
+ [missing]
+ [missing]
+ - Most educated Kenyans are able to communicate fluently in Swahili, since it is a compulsory subject in school
+ [missing]
+ [missing]
+ 2019 Belarus Census
+ English is the first language learned by half the children by the time they reach preschool age; using 92.6% of pop for the English figure
+ Organisation internationale de la Francophonie Meta-study. Data from 2012 and 2016 Eurostat studies on first and second language usage across Europe
+ - 90 percent of approximately 39 million Tanzanians speak Swahili
+ - Baganda generally don't speak Swahili, but it is in common use among the 25 million people elsewhere in the country, and is currently being implemented in schools nationwide (use 75% of Cpop for this figure)
+ [missing]
+ [missing]
+ Salminen, T. (2007). Europe and North Asia. In Encyclopedia of the world’s endangered languages (pp. 211-280). Routledge.
+ http://www.ofis-bzh.org/fr/langue_bretonne/chiffres_cles/index.php France blocks other languages in state schools; 1.4% attended Breton schools and 3% is estimated as family transmission rate
+ 15.8% of population
+ The 2008 estimate is ~2000 speakers due to revival efforts
+ [missing]
+ The great majority of Equatorial Guineans speak Spanish, especially those living in the capital, Malabo. Spanish has been an official language since 1844.
+ Hans literacy is unknown; set to 5% artificially pending better or official figures.
+ http://www.statemaster.com/encyclopedia/Balinese-language widely used; taught in school as a main lang
+ widely used in its cultural areas, often in Latin script
+ http://www.indianetzone.com/7/haryanvi.htm little literature mostly folksongs; writers use std Hindi; claim of 55% literacy
+ 2nd lang literacy 25-50%, taught formally
+ 5% writing pop estimated in absence of other data; literacy rate reported at 12%
+ 5% writing pop estimated in absence of other data; literacy rate reported at ~8%
+ No estimate available.
+ 5% writing pop estimated in absence of other data; Japanese is lingua franca here
+ [missing]
+ Data completely unknown for Hausa in Arabic in Nigeria
+ almost all speakers bilingual in English
+ Pop decline to ~1398 in 2009
+ Low literacy, high linguistic diversity; English official (govt) but not widely spoken
+ [missing]
+ Spoken by 70% of population, assumed to use Arabic script in Pakistan
+ Reported to be (regional) official in Chuvashia, central Russia: taught at schools. However: http://cv.wikipedia.org/ Chuvash Wikipedia on-line.
+ [missing]
+ 2022 Belize Census
+ 'A lingua franca and a first language for 10% of the population but understood by 95%' http://en.wikipedia.org/wiki/Krio_language
+ Dutch is spoken as a mother tongue by about 60% of the Surinamese, while most others speak it as a second or third language.
+ main language of trade and comm. in Isan region, except ... media where it gives way to Thai; now largely an unwritten language. 10% writing pop estimated in absence of other data
+ - primarily written using an Arabic-derived alphabet
+ and https://islandstudies.com/files/2016/11/Guernsey-Herm-Sark.pdf - extrapolated GDP from per capita x population
+ understood by 10 million, perhaps. Figure is questionable writing pop artificially set to 5% see also: http://en.wikipedia.org/wiki/Low_German (understood by 10 million people, and native to about 3 million people all around northern Germany)
+ 2018 Census, counting both maternal and secondary language usage
+ See the 2006 language survey data for 2nd langs = Shimaore
+ 2018 Census, counting both maternal and secondary language usage. Co-official in Sacatepéquez
+ Common lingua franca, widely used. High literacy.
+ but subtracting 270,000 per https://en.wikipedia.org/wiki/Swiss_Italian
+ [missing]
+ [missing]
+ [missing]
+ 98.8% speak Spanish. Also, https://www.cia.gov/library/publications/the-world-factbook/geos/sp.html
+ [missing]
+ Colony of France but uninhabited
+ No indigenous inhabitants. http://en.wikipedia.org/wiki/British_Indian_Ocean_Territory
+ Many also use Swahili
+ Latin is not shown as being used, rather Arabic
+ Used in schools up to University.
+ Also called Sakha.
+ No indigenous inhabitants. http://en.wikipedia.org/wiki/French_Southern_Territories
+ 2022 Census language spoken at home
+ Shows 50% literacy
+ Most also use Swahili with 50% literacy. Only 5% monolingual.
+ Most also use Swahili
+ [missing]
+ basically unihabited, officially ; http://www.census.gov/prod/cen2000/phc3-us-pt1.pdf
+ http://lanic.utexas.edu/project/tilan/reports/rtf359/bolivia1.html Spanish is the official language, only about 60-70% of the population speaks it at all ;
+ Spanish ""universal"", set to 98%
+ https://www.cia.gov/library/publications/the-world-factbook/geos/cs.html
+ [missing]
+ [missing]
+ Sirmauri (srx) Mahasui = Himachali, Pahari, Sirmouri, Sirmuri
+ - 14k reported as native. Taught as elective subject in grades 5-8; not widely spoken as primary communication.
+ [missing]
+ [missing]
+ [missing]
+ native speaker pop is low, ~6200; but is most widely spoken 2nd language
+ [missing]
+ [missing]
+ (94% of studends in Russia receive primarily Russian-language ed)
+ Europeans and their languages survey, page 7
+ http://ec.europa.eu/public_opinion/archives/ebs/ebs_243_en.pdf Europeans and their languages survey, page 7
+ [missing]
+ 1st lang literacy 8%
+ low literacy
+ percentage calculated from http://www.spanishcourses.info/Mains/SpanishSpoken_EN.htm , see also http://www.spanishseo.org/resources/worldwide-spanish-speaking-population
+ [missing]
+ www.amar.org.ir
+ - regional lang community status, taught in some schools
+ - 52.9% of Tatarstan is ethnic Tatar, the pop figure is an upper bound
+ http://en.wikipedia.org/wiki/Interlingua#Community Has a regular conf in Sweden, also Brazil; an auxiliary language with tiny population worldwide
+ This is base pop for """"""""""""""""""""""""""""""""fub"""""""""""""""""""""""""""""""" lang code; ff shows as a macrolanguage
+ [missing]
+ (could be higher if 2nd lang included; no data yet)
+ [missing]
+ [missing]
+ [missing]
+ pop 7k. Figure is questionable writing pop artificially set to 5% see also http://en.wikipedia.org/wiki/Lower_Sorbian
+ Tigrinya ethnic pop is about 60%
+ [missing]
+ English official in education, 36.1% 2000 census
+ no other info available for now
+ [missing]
+ language also called Kamta in India
+ Modern use of Arabic (Jawi) seems to be minimal, but is co-official with ms; set to 5% for now.
+ [missing]
+ [missing]
+ [missing]
+ census data
+ - source for GDP
+ - source for GDP Level of English usage unclear, but official for govt and education
+ - estimate 90%of literate pop can use Arabic; Lpop = 99%
+ http://en.wikipedia.org/wiki/South_Sudan
+ [missing]
+ low literacy and >120 langs in country
+ (used lower figure)
+ 25-50% literacy
+ literacy 15-25%
+ 30% literacy
+ 2nd lang literacy 30%
+ 2nd lang literacy 25-50%
+ [missing]
+ protected minority, southern Jutland
+ etimate only based on literacy; no population data currently available
+ population figure from CLDR-17483 ticket
+ No Data Available at present.
+ co-official in South Tyrol
+ 2018 Census, counting both maternal and secondary language usage. Co-official in Quiché and Totonicapán
+ in Trieste and Gorizia
+ [missing]
+ Information on the Latin/Cyrillic script percentages for Montenegro not currently found.
+ most of population use Afrikaans commonly, about 89% literacy
+ CIA Factbook entry on Kazakhstan http://windowoneurasia2.blogspot.com/2013/12/window-on-eurasia-de-russianization.html http://www.stoletie.ru/vzglyad/derusifikacija_nabirajet_oboroty_934.htm http://www.stoletie.ru/vzglyad/derusifikacija_nabirajet_oboroty_934.htm
+ , Podlaskie Voivodeship
+ official in Vojvodina only
+ official in Vojvodina only; no pop data yet found
+ regional in Dagestan, population estimate
+ [missing]
+ https://www.cia.gov/library/publications/the-world-factbook/geos/uz.html Latin/Cyrillic balance is estimated, based on literacy; younger education now in Latin
+ Information on the Latin/Cyrillic script percentages for Kosovo not currently found.
+ Estimate based on 90% of literate pop > 15 years (71% of Cpop) can use English, for lack of official number of users
+ low litreracy ~5%
+ 2nd lang literacy 30%
+ http://en.wikipedia.org/wiki/Akademio_Internacia_de_la_Sciencoj_San_Marino - estimate 100% of the academy can use Esperanto; the language is used as 1st language of instruction; academy has 300 """"""""""""""""""""""""""""""""members"""""""""""""""""""""""""""""""".
+ recognized in West Java
+ Mainly unwritten
+ 2018 Census, counting both maternal and secondary language usage. Co-official in Quiché
+ Latin listed as being used (Scriptsource) but no pop figures available.
+ 2011 Census -- the language is not distinguished in the 2021 census
+ but no literacy data
+ Including 1st and 2nd lang speakers
+ [missing]
+ regional-official in part of Opole Voivodeship; in Poland 325 schools with primary instr in German, estimate 37000 students. Real figure probably higher.
+ Census figures cited there seem to put Armenian using pop between 50-75%. Using 50%.
+ [missing]
+ unknown literacy
+ only 10% monolingual
+ near zero literacy; pop ~80000 (2009) see David Lawrence, Tanzania and its People, page 121, Google books
+ (baseline)
+ No population figure yet on use of Latin in Vatican. Estimate 100% of Vatican residents can use Latin.
+ 2010 Census: Widely Spoken Language of Communication
+ No figures available for this language. Estimating at 5%.
+ [missing]
+ [missing]
+ [missing]
+ - near-zero Azeri population in last census http://en.wikipedia.org/wiki/Azerbaijanis_in_Armenia#Current_situation
+ No figures available for breakdown of Latin vs. N'Ko for Bambara. The 2% figure is an estimate.
+ pop 13k. Figure is questionable writing pop artificially set to 5% see also http://en.wikipedia.org/wiki/Upper_Sorbian
+ French mostly used in commerce
+ Indonesia high literacy; low written use of local languages
+ - est 50% pop of Veneto area
+ 5% mainly spoken
+ [missing]
+ http://www.interlingua.com/statutos leading Interlingua assoc (Union Mundial pro Interlingua) registered French non-profit - real user pop figure is unknown but low
+ [missing]
+ Moribund language
+ [missing]
+ Estimated. See http://en.wikipedia.org/wiki/Emilian_language
+ Estimate not available.
+ [missing]
+ [missing]
+ [missing]
+ Also called Moré
+ Newly designated official, not so widely used
+ [missing]
+ [missing]
+ syr is a macrolang containing cld and aii)
+ [missing]
+ [missing]
+ [missing]
+ [missing]
+ [missing]
+ No hard figures for this yet, so this is a placeholder figure.
+ Widely spoken less written, and most speakers know standard German as well
+ [missing]
+ and https://www.ethnologue.com/language/yue
+ [missing]
+ [missing]
+ [missing]
+ [missing]
+ [missing]
+ [missing]
+ [missing]
+ Mainly in Guangdong Prov, ~70-80 million. Script unspecified so both listed
+ 2018 Census, counting both maternal and secondary language usage. Co-official in Chiquimula
+ Analyzed from 2011 UK census and other sources
+ 2018 Census, counting both maternal and secondary language usage. Co-official in Suchitepéquez
+ 2014 Maldives: 98% literacy in Divehi, 75% in English
+ [missing]
+ [missing]
+ Greek population in Russia -- most ancestrally used Pontic Greek -- modern usage almost certainly has dropped off but we don't have clear statistics on current usage.
+ [missing]
+ Lower estimate of Coptic population, actual language literacy unknown
+ [missing]
+ Organisation internationale de la Francophonie Meta-study. Data from 2013 Census
+ Organisation internationale de la Francophonie Meta-study. Data from IVQ survey in 2009
+ 2021 Census Knowledge of Language
+ Organisation internationale de la Francophonie Meta-study. Data from 2014 study
+ Organisation internationale de la Francophonie Meta-study. Data from 1994 study
+ Organisation internationale de la Francophonie Meta-study. Data from 2009 and 2012 studies
+ Regelmässig verwendete Sprachen - Percent of people that regularly use the language
+ Latin alphabet usage for Kurdish also present but actual amount unknown
+ Organisation internationale de la Francophonie Meta-study. Data from 2014 census
+ Organisation internationale de la Francophonie Meta-study. Data from 2010 questionnaire
+ Organisation internationale de la Francophonie Meta-study. Data from 2008 Census
+ Organisation internationale de la Francophonie Meta-study. Data from 2017 survey from Gabon authorities
+ Organisation internationale de la Francophonie Meta-study. Data from 2011 IVQ survey
+ Organisation internationale de la Francophonie Meta-study. Data from 2005 Study
+ Organisation internationale de la Francophonie Meta-study. Data from 2012 Census
+ Organisation internationale de la Francophonie Meta-study. Data from 2014 questionnaire
+ Organisation internationale de la Francophonie Meta-study. Data from 2003 census
+ Organisation internationale de la Francophonie Meta-study. Data from 2012, mixed methods
+ Organisation internationale de la Francophonie Meta-study. Data from 2014 Census
+ Organisation internationale de la Francophonie Meta-study. Data from 2017 questionnaire
+ Organisation internationale de la Francophonie Meta-study. Data from 2018 census
+ Organisation internationale de la Francophonie Meta-study. Data from 2009 census
+ Organisation internationale de la Francophonie Meta-study. Data from IVQ survey in 2014
+ Organisation internationale de la Francophonie Meta-study. Data from 2009 Census
+ Organisation internationale de la Francophonie Meta-study. Data from 2012 census
+ Organisation internationale de la Francophonie Meta-study. Data from 2017 Census
+ Organisation internationale de la Francophonie Meta-study. Data from 2018 Census
+ Organisation internationale de la Francophonie Meta-study. Data from IVQ survey in 2007
+ Organisation internationale de la Francophonie Meta-study. Data from 2013 census. Literacy is based on the language of instruction
+ Organisation internationale de la Francophonie Meta-study. Data from 2014
+ Organisation internationale de la Francophonie Meta-study. Data from 2010 census
+ Organisation internationale de la Francophonie Meta-study. Data from 2007 Census
+ 1998 SIL study, cited in Ethnologue
+ from Instituto Cervantes 2021
+ from 2013 Honduras census
+ Canada 2021 Census language 'Knowledge of Language'; official status from Wikipedia Languages_of_Canada
+ Regis, Riccardo. 'Su pianificazione, standardizzazione, polinomia: due esempi' Zeitschrift für romanische Philologie, vol. 128, no. 1, 2012, pp. 88-133.
+ Number & script usage hard to pin down because of many speakers in contested Nagorno Karabakh region.
+ Latin alphabet usage also present but exact breakdown unknown
+ Cyrillic usage for Kurdish may no longer be as dominant but it used to be
+ citation from 2016
+ 2026 citation
+ Citation from 2016
+ [missing]
+ [missing]
+ [missing]
+ [missing]
+ [missing]
+ [missing]
+ Leclerc (2014)
+
+
diff --git a/src/packages/HawkN.Iso.Currencies.Generators/Content/Translations/EN.xml b/src/packages/HawkN.Iso.Currencies.Generators/Content/Translations/EN.xml
new file mode 100644
index 0000000..5031963
--- /dev/null
+++ b/src/packages/HawkN.Iso.Currencies.Generators/Content/Translations/EN.xml
@@ -0,0 +1,11523 @@
+
+
+
+
+
+
+
+
+
+
+ {0} ({1})
+ {0}, {1}
+ {0}: {1}
+
+
+ Afar
+ Abkhazian
+ Acehnese
+ Acoli
+ Adangme
+ Adyghe
+ Avestan
+ Tunisian Arabic
+ Afrikaans
+ Afrihili
+ Aghem
+ Ainu
+ Akan
+ Akkadian
+ Alabama
+ Aleut
+ Gheg Albanian
+ Southern Altai
+ Amharic
+ Aragonese
+ Old English
+ Obolo
+ Angika
+ Arabic
+ Modern Standard Arabic
+ Aramaic
+ Mapuche
+ Araona
+ Arapaho
+ Algerian Arabic
+ Najdi Arabic
+ Arabic, Najdi
+ Arawak
+ Moroccan Arabic
+ Egyptian Arabic
+ Assamese
+ Asu
+ American Sign Language
+ Asturian
+ Atikamekw
+ Avaric
+ Kotava
+ Awadhi
+ Aymara
+ Azerbaijani
+ Azeri
+ Bashkir
+ Baluchi
+ Balinese
+ Bavarian
+ Basaa
+ Bamun
+ Batak Toba
+ Ghomala
+ Belarusian
+ Beja
+ Bemba
+ Betawi
+ Bena
+ Bafut
+ Badaga
+ Bulgarian
+ Haryanvi
+ Western Balochi
+ Bhojpuri
+ Bislama
+ Bikol
+ Bini
+ Banjar
+ Kom
+ Siksiká
+ Anii
+ Tai Dam
+ Bambara
+ Bangla
+ Tibetan
+ Bishnupriya
+ Bakhtiari
+ Luri Bakhtiari
+ Breton
+ Braj
+ Brahui
+ Bodo
+ Bosnian
+ Akoose
+ Buriat
+ Buginese
+ Bulu
+ Blin
+ Medumba
+ Catalan
+ Caddo
+ Carib
+ Cayuga
+ Atsam
+ Chakma
+ Chechen
+ Cebuano
+ Chiga
+ Chamorro
+ Chibcha
+ Chagatai
+ Chuukese
+ Mari
+ Chinook Jargon
+ Choctaw
+ Chipewyan
+ Cherokee
+ Cheyenne
+ Chickasaw
+ Central Kurdish
+ Kurdish
+ Central
+ Kurdish, Central
+ Kurdish, Sorani
+ Chilcotin
+ Corsican
+ Coptic
+ Capiznon
+ Cree
+ Woods Cree
+ Michif
+ Crimean Tatar
+ Southern East Cree
+ Plains Cree
+ Northern East Cree
+ Moose Cree
+ Carolina Algonquian
+ Seselwa Creole French
+ Czech
+ Kashubian
+ Swampy Cree
+ Church Slavic
+ Chuvash
+ Welsh
+ Danish
+ Dakota
+ Dargwa
+ Taita
+ German
+ Austrian German
+ Swiss High German
+ Delaware
+ Slave
+ Dogrib
+ Dinka
+ Zarma
+ Dogri
+ Lower Sorbian
+ Central Dusun
+ Duala
+ Middle Dutch
+ Divehi
+ Jola-Fonyi
+ Dyula
+ Dzongkha
+ Dazaga
+ Embu
+ Ewe
+ Efik
+ Emilian
+ Ancient Egyptian
+ Ekajuk
+ Greek
+ Elamite
+ English
+ Australian English
+ Canadian English
+ British English
+ UK English
+ American English
+ US English
+ Middle English
+ Esperanto
+ Spanish
+ Latin American Spanish
+ European Spanish
+ Mexican Spanish
+ Central Yupik
+ Estonian
+ Basque
+ Ewondo
+ Extremaduran
+ Persian
+ Dari
+ Fang
+ Fanti
+ Fula
+ Finnish
+ Filipino
+ Tornedalen Finnish
+ Fijian
+ Faroese
+ Fon
+ French
+ Canadian French
+ Swiss French
+ Cajun French
+ Middle French
+ Old French
+ Arpitan
+ Northern Frisian
+ Eastern Frisian
+ Friulian
+ Western Frisian
+ Irish
+ Ga
+ Gagauz
+ Gan Chinese
+ Gayo
+ Gbaya
+ Zoroastrian Dari
+ Scottish Gaelic
+ Geez
+ Gilbertese
+ Galician
+ Gilaki
+ Middle High German
+ Guarani
+ Old High German
+ Gondi
+ Gorontalo
+ Gothic
+ Grebo
+ Ancient Greek
+ Swiss German
+ Gujarati
+ Wayuu
+ Frafra
+ Gusii
+ Manx
+ Gwichʼin
+ Hausa
+ Haida
+ Hakka Chinese
+ Hawaiian
+ Southern Haida
+ Hebrew
+ Hindi
+ Hindi (Latin)
+ Hinglish
+ Fiji Hindi
+ Hiligaynon
+ Hittite
+ Hmong
+ Hmong Njua
+ Hiri Motu
+ Croatian
+ Upper Sorbian
+ Xiang Chinese
+ Haitian Creole
+ Hungarian
+ Hupa
+ Halkomelem
+ Armenian
+ Herero
+ Interlingua
+ Iban
+ Ibibio
+ Indonesian
+ Interlingue
+ Igbo
+ Sichuan Yi
+ Inupiaq
+ Western Canadian Inuktitut
+ Iloko
+ Ingush
+ Ido
+ Icelandic
+ Italian
+ Inuktitut
+ Ingrian
+ Japanese
+ Jamaican Creole English
+ Lojban
+ Ngomba
+ Machame
+ Judeo-Persian
+ Judeo-Arabic
+ Jutish
+ Javanese
+ Georgian
+ Kara-Kalpak
+ Kabyle
+ Kachin
+ Jju
+ Kamba
+ Kawi
+ Kabardian
+ Kanembu
+ Tyap
+ Makonde
+ Kabuverdianu
+ Qʼeqchiʼ
+ Kenyang
+ Koro
+ Kongo
+ Kaingang
+ Khasi
+ Khotanese
+ Koyra Chiini
+ Khowar
+ Kikuyu
+ Kirmanjki
+ Kuanyama
+ Kazakh
+ Kako
+ Kalaallisut
+ Kalenjin
+ Khmer
+ Kimbundu
+ Kannada
+ Korean
+ Komi-Permyak
+ Konkani
+ Kosraean
+ Kpelle
+ Kanuri
+ Karachay-Balkar
+ Krio
+ Kinaray-a
+ Karelian
+ Kurukh
+ Kashmiri
+ Shambala
+ Bafia
+ Colognian
+ Kurdish
+ Kurdish
+ Kurmanji
+ Kumyk
+ Kutenai
+ Komi
+ Cornish
+ Kwakʼwala
+ Kuvi
+ Kyrgyz
+ Kirghiz
+ Latin
+ Ladino
+ Langi
+ Western Panjabi
+ Lamba
+ Luxembourgish
+ Lezghian
+ Lingua Franca Nova
+ Ganda
+ Limburgish
+ Ligurian
+ Lillooet
+ Livonian
+ Lakota
+ Lombard
+ Lingala
+ Lao
+ Mongo
+ Louisiana Creole
+ Lozi
+ Northern Luri
+ Saamia
+ Lithuanian
+ Latgalian
+ Luba-Katanga
+ Luba-Lulua
+ Luiseno
+ Lunda
+ Luo
+ Mizo
+ Luyia
+ Latvian
+ Literary Chinese
+ Laz
+ Madurese
+ Mafa
+ Magahi
+ Maithili
+ Makasar
+ Mandingo
+ Masai
+ Maba
+ Moksha
+ Mandar
+ Mende
+ Meru
+ Morisyen
+ Malagasy
+ Middle Irish
+ Makhuwa-Meetto
+ Metaʼ
+ Marshallese
+ Māori
+ Mi'kmaw
+ Minangkabau
+ Macedonian
+ Malayalam
+ Mongolian
+ Manchu
+ Manipuri
+ Innu-aimun
+ Mohawk
+ Mossi
+ Marathi
+ Western Mari
+ Malay
+ Maltese
+ Mundang
+ Multiple languages
+ Muscogee
+ Mvskoke
+ Muscogee
+ Mirandese
+ Marwari
+ Mentawai
+ Burmese
+ Myanmar Language
+ Myene
+ Erzya
+ Mazanderani
+ Nauru
+ Min Nan Chinese
+ Neapolitan
+ Nama
+ Norwegian Bokmål
+ North Ndebele
+ Low German
+ Low Saxon
+ Nepali
+ Newari
+ Ndonga
+ Nias
+ Niuean
+ Ao Naga
+ Dutch
+ Flemish
+ Kwasio
+ Norwegian Nynorsk
+ Ngiemboon
+ Norwegian
+ Nogai
+ Old Norse
+ Novial
+ N’Ko
+ South Ndebele
+ Northern Sotho
+ Nuer
+ Navajo
+ Classical Newari
+ Nyanja
+ Nyamwezi
+ Nyankole
+ Nyoro
+ Nzima
+ Occitan
+ Ojibwa
+ Northwestern Ojibwa
+ Central Ojibwa
+ Oji-Cree
+ Western Ojibwa
+ Okanagan
+ Colville Salish
+ Oromo
+ Odia
+ Ossetic
+ Osage
+ Ottoman Turkish
+ Punjabi
+ Pangasinan
+ Pahlavi
+ Pampanga
+ Papiamento
+ Palauan
+ Picard
+ Nigerian Pidgin
+ Pennsylvania German
+ Plautdietsch
+ Old Persian
+ Palatine German
+ Phoenician
+ Pali
+ Pāli
+ Pijin
+ Polish
+ Piedmontese
+ Pontic
+ Pohnpeian
+ Maliseet-Passamaquoddy
+ Prussian
+ Old Provençal
+ Pashto
+ Pushto
+ Portuguese
+ Brazilian Portuguese
+ European Portuguese
+ Quechua
+ Kʼicheʼ
+ Chimborazo Highland Quichua
+ Rajasthani
+ Rapanui
+ Rarotongan
+ Romagnol
+ Rohingya
+ Riffian
+ Romansh
+ Rundi
+ Romanian
+ Moldavian
+ Rombo
+ Romany
+ Rotuman
+ Russian
+ Rusyn
+ Roviana
+ Aromanian
+ Kinyarwanda
+ Rwa
+ Sanskrit
+ Sandawe
+ Yakut
+ Samaritan Aramaic
+ Samburu
+ Sasak
+ Santali
+ Saurashtra
+ Ngambay
+ Sangu
+ Sardinian
+ Sicilian
+ Scots
+ Sindhi
+ Sassarese Sardinian
+ Southern Kurdish
+ Kurdish
+ Southern
+ Northern Sami
+ Sami, Northern
+ Seneca
+ Sena
+ Seri
+ Selkup
+ Koyraboro Senni
+ Sango
+ Old Irish
+ Samogitian
+ Serbo-Croatian
+ Tachelhit
+ Shan
+ Chadian Arabic
+ Sinhala
+ Sidamo
+ Slovak
+ Slovenian
+ Southern Lushootseed
+ Lower Silesian
+ Selayar
+ Samoan
+ Southern Sami
+ Sami, Southern
+ Lule Sami
+ Sami, Lule
+ Inari Sami
+ Sami, Inari
+ Skolt Sami
+ Sami, Skolt
+ Shona
+ Soninke
+ Somali
+ Sogdien
+ Albanian
+ Serbian
+ Montenegrin
+ Sranan Tongo
+ Serer
+ Swati
+ Saho
+ Southern Sotho
+ Saterland Frisian
+ Straits Salish
+ Sundanese
+ Sukuma
+ Susu
+ Sumerian
+ Swedish
+ Swahili
+ Congo Swahili
+ Comorian
+ Classical Syriac
+ Syriac
+ Silesian
+ Tamil
+ Southern Tutchone
+ Tulu
+ Telugu
+ Timne
+ Teso
+ Tereno
+ Tetum
+ Tajik
+ Tagish
+ Thai
+ Tahltan
+ Tigrinya
+ Tigre
+ Tiv
+ Turkmen
+ Tokelauan
+ Tsakhur
+ Tagalog
+ Klingon
+ Tlingit
+ Talysh
+ Tamashek
+ Tswana
+ Tongan
+ Nyasa Tonga
+ Toki Pona
+ Tok Pisin
+ Turkish
+ Turoyo
+ Taroko
+ Torwali
+ Tsonga
+ Tsakonian
+ Tsimshian
+ Tatar
+ Northern Tutchone
+ Muslim Tat
+ Tumbuka
+ Tuvalu
+ Twi
+ Tasawaq
+ Tahitian
+ Tuvinian
+ Central Atlas Tamazight
+ Udmurt
+ Uyghur
+ Uighur
+ Ugaritic
+ Ukrainian
+ Umbundu
+ Unknown language
+ Urdu
+ Uzbek
+ Vai
+ Venda
+ Venetian
+ Veps
+ Vietnamese
+ West Flemish
+ Main-Franconian
+ Makhuwa
+ Volapük
+ Votic
+ Võro
+ Vunjo
+ Walloon
+ Walser
+ Wolaytta
+ Waray
+ Washo
+ Warlpiri
+ Wolof
+ Wu Chinese
+ Kalmyk
+ Xhosa
+ Mingrelian
+ Kangri
+ Soga
+ Yao
+ Yapese
+ Yangben
+ Yemba
+ Yiddish
+ Yoruba
+ Nheengatu
+ Cantonese
+ Chinese, Cantonese
+ Zhuang
+ Zapotec
+ Blissymbols
+ Zeelandic
+ Zenaga
+ Standard Moroccan Tamazight
+ Chinese
+ Mandarin Chinese
+ Chinese, Mandarin
+ Simplified Chinese
+ Simplified Mandarin Chinese
+ Traditional Chinese
+ Traditional Mandarin Chinese
+ Zulu
+ Zuni
+ No linguistic content
+ Zaza
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ world
+ Africa
+ North America
+ South America
+ Oceania
+ Western Africa
+ Central America
+ Eastern Africa
+ Northern Africa
+ Middle Africa
+ Southern Africa
+ Americas
+ Northern America
+ Caribbean
+ Eastern Asia
+ Southern Asia
+ Southeast Asia
+ Southern Europe
+ Australasia
+ Melanesia
+ Micronesian Region
+ Polynesia
+ Asia
+ Central Asia
+ Western Asia
+ Europe
+ Eastern Europe
+ Northern Europe
+ Western Europe
+ Sub-Saharan Africa
+ Latin America
+ Ascension Island
+ Andorra
+ United Arab Emirates
+ Afghanistan
+ Antigua & Barbuda
+ Anguilla
+ Albania
+ Armenia
+ Angola
+ Antarctica
+ Argentina
+ American Samoa
+ Austria
+ Australia
+ Aruba
+ Åland Islands
+ Azerbaijan
+ Bosnia & Herzegovina
+ Bosnia
+ Barbados
+ Bangladesh
+ Belgium
+ Burkina Faso
+ Bulgaria
+ Bahrain
+ Burundi
+ Benin
+ St. Barthélemy
+ Bermuda
+ Brunei
+ Bolivia
+ Caribbean Netherlands
+ Brazil
+ Bahamas
+ Bhutan
+ Bouvet Island
+ Botswana
+ Belarus
+ Belize
+ Canada
+ Cocos (Keeling) Islands
+ Cocos Islands
+ Congo - Kinshasa
+ Congo (DRC)
+ Central African Republic
+ Congo - Brazzaville
+ Congo (Republic)
+ Switzerland
+ Côte d’Ivoire
+ Ivory Coast
+ Cook Islands
+ Chile
+ Cameroon
+ China
+ Colombia
+ Clipperton Island
+ Sark
+ Costa Rica
+ Cuba
+ Cape Verde
+ Cabo Verde
+ Curaçao
+ Christmas Island
+ Cyprus
+ Czechia
+ Czech Republic
+ Germany
+ Diego Garcia
+ Djibouti
+ Denmark
+ Dominica
+ Dominican Republic
+ Algeria
+ Ceuta & Melilla
+ Ecuador
+ Estonia
+ Egypt
+ Western Sahara
+ Eritrea
+ Spain
+ Ethiopia
+ European Union
+ Eurozone
+ Finland
+ Fiji
+ Falkland Islands
+ Falkland Islands (Islas Malvinas)
+ Micronesia
+ Faroe Islands
+ France
+ Gabon
+ United Kingdom
+ UK
+ Grenada
+ Georgia
+ French Guiana
+ Guernsey
+ Ghana
+ Gibraltar
+ Greenland
+ Gambia
+ Guinea
+ Guadeloupe
+ Equatorial Guinea
+ Greece
+ South Georgia & South Sandwich Islands
+ Guatemala
+ Guam
+ Guinea-Bissau
+ Guyana
+ Hong Kong SAR China
+ Hong Kong
+ Heard & McDonald Islands
+ Honduras
+ Croatia
+ Haiti
+ Hungary
+ Canary Islands
+ Indonesia
+ Ireland
+ Israel
+ Isle of Man
+ India
+ British Indian Ocean Territory
+ British Indian Ocean Territory
+ Chagos Archipelago
+ Iraq
+ Iran
+ Iceland
+ Italy
+ Jersey
+ Jamaica
+ Jordan
+ Japan
+ Kenya
+ Kyrgyzstan
+ Cambodia
+ Kiribati
+ Comoros
+ St. Kitts & Nevis
+ North Korea
+ South Korea
+ Kuwait
+ Cayman Islands
+ Kazakhstan
+ Laos
+ Lebanon
+ St. Lucia
+ Liechtenstein
+ Sri Lanka
+ Liberia
+ Lesotho
+ Lithuania
+ Luxembourg
+ Latvia
+ Libya
+ Morocco
+ Monaco
+ Moldova
+ Montenegro
+ St. Martin
+ Madagascar
+ Marshall Islands
+ North Macedonia
+ Mali
+ Myanmar (Burma)
+ Myanmar
+ Mongolia
+ Macao SAR China
+ Macao
+ Northern Mariana Islands
+ Martinique
+ Mauritania
+ Montserrat
+ Malta
+ Mauritius
+ Maldives
+ Malawi
+ Mexico
+ Malaysia
+ Mozambique
+ Namibia
+ New Caledonia
+ Niger
+ Norfolk Island
+ Nigeria
+ Nicaragua
+ Netherlands
+ Norway
+ Nepal
+ Nauru
+ Niue
+ New Zealand
+ Aotearoa New Zealand
+ Oman
+ Panama
+ Peru
+ French Polynesia
+ Papua New Guinea
+ Philippines
+ Pakistan
+ Poland
+ St. Pierre & Miquelon
+ Pitcairn Islands
+ Pitcairn
+ Puerto Rico
+ Palestinian Territories
+ Palestine
+ Portugal
+ Palau
+ Paraguay
+ Qatar
+ Outlying Oceania
+ Réunion
+ Romania
+ Serbia
+ Russia
+ Rwanda
+ Saudi Arabia
+ Solomon Islands
+ Seychelles
+ Sudan
+ Sweden
+ Singapore
+ St. Helena
+ Slovenia
+ Svalbard & Jan Mayen
+ Slovakia
+ Sierra Leone
+ San Marino
+ Senegal
+ Somalia
+ Suriname
+ South Sudan
+ São Tomé & Príncipe
+ El Salvador
+ Sint Maarten
+ Syria
+ Eswatini
+ Swaziland
+ Tristan da Cunha
+ Turks & Caicos Islands
+ Chad
+ French Southern Territories
+ Togo
+ Thailand
+ Tajikistan
+ Tokelau
+ Timor-Leste
+ East Timor
+ Turkmenistan
+ Tunisia
+ Tonga
+ Türkiye
+ Turkey
+ Trinidad & Tobago
+ Tuvalu
+ Taiwan
+ Tanzania
+ Ukraine
+ Uganda
+ U.S. Outlying Islands
+ United Nations
+ UN
+ United States
+ US
+ Uruguay
+ Uzbekistan
+ Vatican City
+ St. Vincent & Grenadines
+ Venezuela
+ British Virgin Islands
+ U.S. Virgin Islands
+ Vietnam
+ Vanuatu
+ Wallis & Futuna
+ Samoa
+ Pseudo-Accents
+ Pseudo-Bidi
+ Kosovo
+ Yemen
+ Mayotte
+ South Africa
+ Zambia
+ Zimbabwe
+ Unknown Region
+
+
+ England
+ Scotland
+ Wales
+
+
+ Traditional German orthography
+ Standardized Resian orthography
+ German orthography of 1996
+ Late Middle French to 1606
+ Early Modern French
+ Academic
+ Orthographic formulation of 1943
+ ALA-LC Romanization, 1997 edition
+ Aluku dialect
+ Portuguese Language Orthographic Agreement of 1990
+ Eastern Armenian
+ Western Armenian
+ Unified Turkic Latin Alphabet
+ Balanka dialect of Anii
+ Barlavento dialect group of Kabuverdianu
+ San Giorgio/Bila dialect
+ Bohorič alphabet
+ Boontling
+ Portuguese-Brazilian Orthographic Convention of 1945
+ Dajnko alphabet
+ Serbian with Ekavian pronunciation
+ Early Modern English
+ IPA Phonetics
+ UPA Phonetics
+ Hepburn romanization
+ Serbian with Ijekavian pronunciation
+ Common Orthography
+ Standard Orthography
+ The Lipovaz dialect of Resian
+ Metelko alphabet
+ Monotonic
+ Ndyuka dialect
+ Natisone dialect
+ Gniva/Njiva dialect
+ Modern Volapük
+ Oseacco/Osojane dialect
+ Oxford English Dictionary spelling
+ Pamaka dialect
+ Pinyin romanization
+ Polytonic
+ Computer
+ Revised Orthography
+ Classic Volapük
+ Resian
+ Saho
+ Scottish Standard English
+ Scouse
+ Stolvizza/Solbica dialect
+ Sotavento dialect group of Kabuverdianu
+ Taraskievica orthography
+ Unified Orthography
+ Unified Revised Orthography
+ Unifon phonetic alphabet
+ Valencian
+ Wade-Giles romanization
+
+
+ Calendar
+ Currency Format
+ Ignore Symbols Sorting
+ Reversed Accent Sorting
+ Uppercase/Lowercase Ordering
+ Case Sensitive Sorting
+ Sort Order
+ Normalized Sorting
+ Numeric Sorting
+ Script/Block Reordering
+ Sorting Strength
+ Currency
+ Transform Destination
+ Dictionary Break Exclusions
+ Emoji Presentation
+ First day of week
+ Mixed-in
+ Hour Cycle (12 vs 24)
+ Input Method
+ Keyboard
+ Highest Ignored
+ CJK Line Break
+ Line Breaks within Words
+ Transform Rules
+ Measurement System
+ Measurement Unit
+ Numbers
+ Region For Supplemental Data
+ Transform Source
+ Region Subdivision
+ Sentence Break After Abbr.
+ Transform
+ Machine Translated
+ Time Zone
+ Locale Variant
+ Private-Use
+ Private-Use Transform
+
+
+ Buddhist Calendar
+ Buddhist
+ Chinese Calendar
+ Chinese
+ Coptic Calendar
+ Coptic
+ Dangi Calendar
+ Dangi
+ Ethiopic Calendar
+ Ethiopic
+ Ethiopic Amete Alem Calendar
+ Ethiopic Amete Alem
+ Gregorian Calendar
+ Gregorian
+ Hebrew Calendar
+ Hebrew
+ Indian National Calendar
+ Indian National
+ Hijri Calendar
+ Hijri
+ Hijri Calendar (tabular, civil epoch)
+ Hijri (tabular, civil epoch)
+ Hijri Calendar (Saudi Arabia, sighting)
+
+ Hijri, Saudi Arabia sighting
+ Hijri Calendar (tabular, astronomical epoch)
+ Hijri (tabular, astronomical epoch)
+ Hijri Calendar (Umm al-Qura)
+ Hijri (Umm al-Qura)
+ Gregorian Calendar (ISO 8601 Weeks)
+ ISO 8601 Weeks
+ Gregorian
+ Japanese Calendar
+ Japanese
+ Persian Calendar
+ Persian
+ Minguo Calendar
+ Minguo
+ Accounting Currency Format
+ Accounting
+ Standard Currency Format
+ Standard
+ Sort Symbols
+ Sort Ignoring Symbols
+ Sort Accents Normally
+ Sort Accents Reversed
+ Sort Lowercase First
+ Sort Normal Case Order
+ Sort Uppercase First
+ Sort Case Insensitive
+ Sort Case Sensitive
+ Previous Sort Order, for compatibility
+ Compatibility
+ Dictionary Sort Order
+ Dictionary
+ Default Unicode Sort Order
+ Default Unicode
+ Emoji Sort Order
+ Emoji
+ European Ordering Rules
+ European rules
+ Phonebook Sort Order
+ Phonebook
+ Phonetic Sort Order
+ Phonetic
+ Pinyin Sort Order
+ Pinyin
+ General-Purpose Search
+ Search
+ Search By Hangul Initial Consonant
+ Korean initial consonant
+ Standard Sort Order
+ Standard
+ Stroke Sort Order
+ Stroke
+ Traditional Sort Order
+ Traditional
+ Radical-Stroke Sort Order
+ Radical-Stroke
+ Zhuyin Sort Order
+ Zhuyin
+ Sort Without Normalization
+ Sort Unicode Normalized
+ Sort Digits Individually
+ Sort Digits Numerically
+ Currency
+ Digits
+ Punctuation
+ Whitespace
+ Symbol
+ Sort All
+ Sort Base Letters Only
+ Sort Accents/Case/Width/Kana
+ Sort Accents
+ Sort Accents/Case/Width
+ To Accented Characters From ASCII Sequence
+ To ASCII
+ To Casefolded
+ To Unicode Character Names
+ To Digit Form Of Accent
+ To Unicode FCC
+ To Unicode FCD
+ To Fullwidth
+ To Hexadecimal Codes
+ To Halfwidth
+ To Lowercase
+ To Morse Code
+ To Unicode NFC
+ To Unicode NFD
+ To Unicode NFKC
+ To Unicode NFKD
+ To Pinyin With Numeric Tones
+ No Change
+ To Publishing Characters From ASCII
+ To Empty String
+ To Titlecase
+ To Uppercase
+ To Zawgyi Myanmar Encoding
+ Default Presentation For Emoji
+ Default
+ Emoji Presentation For Emoji
+ Emoji
+ Text Presentation For Emoji
+ Text
+ First day of week: Friday
+ First day of week: Monday
+ First day of week: Saturday
+ First day of week: Sunday
+ First day of week: Thursday
+ First day of week: Tuesday
+ First day of week: Wednesday
+ Hybrid
+ 12 Hour System (0–11)
+ 12 (0–11)
+ 12 Hour System (1–12)
+ 12 (1–12)
+ 24 Hour System (0–23)
+ 24 (0–23)
+ 24 Hour System (1–24)
+ 24 (1–24)
+ Handwriting Input Method
+ Pinyin Input Method
+ Unspecified Input Method
+ Wubi Input Method
+ 101-Key Keyboard
+ 102-Key Keyboard
+ 600 dpi Keyboard
+ 768 dpi Keyboard
+ Android Keyboard
+ AZERTY-Based Keyboard
+ ChromeOS Keyboard
+ Colemak Keyboard
+ Dvorak Keyboard
+ Dvorak Left-Handed Keyboard
+ Dvorak Right-Handed Keyboard
+ Greek 220 Keyboard
+ Greek 319 Keyboard
+ Keyboard With Many Extra Characters
+ Google Virtual Keyboard
+ Persian ISIRI Keyboard
+ Legacy Keyboard
+ Lithuanian LST 1205 Keyboard
+ Lithuanian LST 1582 Keyboard
+ Inuktitut Nutaaq Keyboard
+ macOS Keyboard
+ Thai Pattachote Keyboard
+ QWERTY-Based Keyboard
+ QWERTZ-Based Keyboard
+ Tamil 99 Keyboard
+ Unspecified Keyboard
+ Keyboard Variant
+ Vietnamese VIQR Keyboard
+ Windows Keyboard
+ Ignore Symbols affects spaces, punctuation, all symbols
+
+ Shift Spaces, punctuation, all symbols
+ Ignore Symbols affects spaces and punctuation only
+ Shift spaces, punctuation
+ Ignore Symbols affects spaces only
+ Shift spaces, punctuation
+ Ignore Symbols affects spaces, punctuation, non-currency symbols
+ Shift spaces, punctuation, non-currency symbols
+ Loose Line Break Style
+ Loose
+ Normal Line Break Style
+ Normal
+ Strict Line Break Style
+ Strict
+ Allow Line Breaks In All Words
+ Break all
+ Prevent Line Breaks In All Words
+ Keep all
+ Normal Line Breaks For Words
+ Normal
+ Prevent Line Breaks In Phrases
+ Keep in phrases
+ Encylopedia Aethiopica Transliteration
+ US ALA-LOC Transliteration
+ Beta Maṣāḥǝft Transliteration
+ US BGN Transliteration
+ Buckwalter Arabic Transliteration
+ Hex transform using C11 syntax
+ Hex transform using CSS syntax
+ German DIN Transliteration
+ Ethiopian Standards Agency ES 3842:2014 Ethiopic-Latin Transliteration
+ Extended Wylie Transliteration Scheme
+ CIS GOST Transliteration
+ Gurage Legacy to Modern Transliteration
+ Yaros Gutgarts Ethiopic-Cyrillic Transliteration
+ International Alphabet of Sanskrit Transliteration
+ IES/JES Amharic Transliteration
+ ISO Transliteration
+ Hex transform using Java syntax
+ Thomas Oden Lambdin Ethiopic-Latin Transliteration
+ Korean MCST Transliteration
+ Mongolian National Standard Transliteration
+ Hex transform using percent syntax
+ Hex transform using Perl syntax
+ Hex transform with no surrounding syntax
+ Personal name transliteration variant
+ Standard Arabic Technical Transliteration
+ System for Ethiopic Representation in ASCII
+ Tekie Alibekit Blin-Latin Transliteration
+ UN GEGN Transliteration
+ Hex transform using Unicode syntax
+ Eritrean Ministry of Education Blin-Latin Transliteration
+ Hex transform using XML syntax
+ Hex transform using XML decimal syntax
+ Metric System
+ Metric
+ Imperial Measurement System
+ UK
+ US Measurement System
+ US
+ Celsius
+ Fahrenheit
+ Kelvin
+ Adlam Digits
+ Ahom Digits
+ Arabic-Indic Digits
+ Extended Arabic-Indic Digits
+ X Arabic-Indic Digits
+ Extended Arabic-Indic
+ Armenian Numerals
+ Armenian Lowercase Numerals
+ Armenian lowercase
+ Balinese Digits
+ Bangla Digits
+ Bhaiksuki Digits
+ Brahmi Digits
+ Chakma Digits
+ Cham Digits
+ Cyrillic Numerals
+ Devanagari Digits
+ Dives Akuru Digits
+ Ethiopic Numerals
+ Financial Numerals
+ Financial
+ Full-Width Digits
+ Full-width
+ Garay Digits
+ Georgian Numerals
+ Gunjala Gondi digits
+ Masaram Gondi digits
+ Greek Numerals
+ Greek Lowercase Numerals
+ Greek lowercase
+ Gujarati Digits
+ Gurung Khema Digits
+ Gurmukhi Digits
+ Chinese Calendar Day-of-Month Numerals
+ Han-character day-of-month numbering for traditional calendars
+ Chinese Decimal Numerals
+ Positional decimal system using Chinese number ideographs as digits
+ Simplified Chinese Numerals
+ Simplified Chinese Financial Numerals
+ Simplified Chinese financial
+ Traditional Chinese Numerals
+ Traditional Chinese Financial Numerals
+ Traditional Chinese financial
+ Hebrew Numerals
+ Pahawh Hmong Digits
+ Nyiakeng Puachue Hmong Digits
+ Javanese Digits
+ Japanese Numerals
+ Japanese Financial Numerals
+ Japanese financial
+ Japanese Calendar Gannen Year Numerals
+ Japanese first-year Gannen numbering
+ Kayah Li Digits
+ Kawi Digits
+ Khmer Digits
+ Kannada Digits
+ Kirat Rai Digits
+ Tai Tham Hora Digits
+ Tai Tham Tham Digits
+ Tai Tham Tham (ecclesiastical)
+ Lao Digits
+ Western Digits
+ Lepcha Digits
+ Limbu Digits
+ Mathematical Bold Digits
+ Mathematical bold
+ Mathematical Double-Struck Digits
+ Mathematical double-struck
+ Mathematical Monospace Digits
+ Mathematical monospace
+ Mathematical Sans-Serif Bold Digits
+ Mathematical sans-serif bold
+ Mathematical Sans-Serif Digits
+ Mathematical sans-serif
+ Malayalam Digits
+ Modi Digits
+ Mongolian Digits
+ Mro Digits
+ Meetei Mayek Digits
+ Myanmar Digits
+ Myanmar Eastern Pwo Karen Digits
+ Myanmar Eastern Pwo Karen
+ Myanmar Pao Digits
+ Myanmar Pao
+ Myanmar Shan Digits
+ Myanmar Shan
+ Myanmar Tai Laing Digits
+ Myanmar Tai Laing
+ Nag Mundari Digits
+ Native Digits
+ Native digits
+ Newa Digits
+ N’Ko Digits
+ Ol Chiki Digits
+ Ol Onal Digits
+ Odia Digits
+ Osmanya Digits
+ Outlined Digits
+ Outlined
+ Hanifi Rohingya digits
+ Roman Numerals
+ Roman uppercase
+ Roman Lowercase Numerals
+ Roman lowercase
+ Saurashtra Digits
+ Segmented Digits
+ Segmented
+ Sharada Digits
+ Khudawadi Digits
+ Sinhala Lith Digits
+ Sora Sompeng Digits
+ Sundanese Digits
+ Sunuwar Digits
+ Takri Digits
+ New Tai Lue Digits
+ Traditional Tamil Numerals
+ Tamil Digits
+ Modern Tamil
+ Telugu Digits
+ Thai Digits
+ Tibetan Digits
+ Tirhuta Digits
+ Tangsa Digits
+ Tolong Siki Digits
+ Traditional Numerals
+ Traditional numerals
+ Vai Digits
+ Warang Citi Digits
+ Wancho Digits
+ From Accented Characters To ASCII Sequence
+ From ASCII
+ From Hexadecimal Codes
+ From Morse Code
+ From Pinyin With Numeric Tones
+ From Publishing Punctuation To ASCII
+ From Zawgyi Myanmar Encoding
+ Sentence Breaks Without Abbreviation Handling
+ Off
+ Suppress Sentence Breaks After Standard Abbreviations
+ On
+ Unspecified Machine Translation
+ POSIX Compliant Locale
+ POSIX variant
+
+
+ Metric
+ UK
+ US
+
+
+ Language: {0}
+ Script: {0}
+ Region: {0}
+
+
+
+
+ titlecase-firstword
+ titlecase-firstword
+
+
+ titlecase-firstword
+ titlecase-firstword
+
+
+ titlecase-firstword
+ titlecase-firstword
+
+
+ titlecase-firstword
+ titlecase-firstword
+
+
+ titlecase-firstword
+ titlecase-firstword
+
+
+
+ [a b c d e f g h i j k l m n o p q r s t u v w x y z]
+ [áàăâåäãā æ ç éèĕêëē íìĭîïī ñ óòŏôöøō œ úùŭûüū ÿ]
+ [A B C D E F G H I J K L M N O P Q R S T U V W X Y Z]
+ [\- ‑ , . % ‰ + − 0 1 2 3 4 5 6 7 8 9]
+ [\- ‐‑ – — , ; \: ! ? . … '‘’ "“” ( ) \[ \] § @ * / \& # † ‡ ′ ″]
+ [\- ‐‑ , . /]
+
+
+ “
+ ”
+ ‘
+ ’
+
+
+
+
+
+
+ BE
+
+
+
+
+
+
+
+ Mo1
+ Mo2
+ Mo3
+ Mo4
+ Mo5
+ Mo6
+ Mo7
+ Mo8
+ Mo9
+ Mo10
+ Mo11
+ Mo12
+
+
+ 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+ 9
+ 10
+ 11
+ 12
+
+
+ First Month
+ Second Month
+ Third Month
+ Fourth Month
+ Fifth Month
+ Sixth Month
+ Seventh Month
+ Eighth Month
+ Ninth Month
+ Tenth Month
+ Eleventh Month
+ Twelfth Month
+
+
+
+
+ Mo1
+ Mo2
+ Mo3
+ Mo4
+ Mo5
+ Mo6
+ Mo7
+ Mo8
+ Mo9
+ Mo10
+ Mo11
+ Mo12
+
+
+ First Month
+ Second Month
+ Third Month
+ Fourth Month
+ Fifth Month
+ Sixth Month
+ Seventh Month
+ Eighth Month
+ Ninth Month
+ Tenth Month
+ Eleventh Month
+ Twelfth Month
+
+
+
+
+
+
+
+ Rat
+ Ox
+ Tiger
+ Rabbit
+ Dragon
+ Snake
+ Horse
+ Goat
+ Monkey
+ Rooster
+ Dog
+ Pig
+
+
+
+
+
+
+
+ EEEE, MMMM d, r(U)
+ rMMMMEEEEd
+
+
+
+
+ MMMM d, r(U)
+ rMMMMd
+
+
+
+
+ MMM d, r
+ rMMMd
+
+
+
+
+ M/d/r
+ rMd
+
+
+
+
+
+
+ {1}, {0}
+
+
+ {1} 'at' {0}
+
+
+ {1} 'at' {0}
+
+
+
+
+ {1}, {0}
+
+
+ {1} 'at' {0}
+
+
+ {1} 'at' {0}
+
+
+
+
+ {1}, {0}
+
+
+
+
+ {1}, {0}
+
+
+
+ h B
+ h:mm B
+ h:mm:ss B
+ d
+ ccc
+ E h B
+ E h:mm B
+ E h:mm:ss B
+ d E
+ E h a
+ E h a
+ E h:mm a
+ E h:mm a
+ E HH:mm
+ E h:mm:ss a
+ E h:mm:ss a
+ E HH:mm:ss
+ r(U)
+ MMM r
+ MMM d, r
+ E, MMM d, r
+ MMMM r(U)
+ MMMM d, r(U)
+ E, MMMM d, r(U)
+ h a
+ h a
+ HH
+ h:mm a
+ h:mm a
+ HH:mm
+ h:mm:ss a
+ h:mm:ss a
+ HH:mm:ss
+ h a v
+ h a v
+ HH'h' v
+ L
+ M/d
+ E, M/d
+ LLL
+ MMM d
+ E, MMM d
+ MMMM d
+ mm:ss
+ M/U
+ M/d/U
+ MMM U
+ MMM d, U
+ r(U)
+ r(U)
+ M/r
+ M/d/r
+ E, M/d/r
+ MMM r
+ MMM d, r
+ E, MMM d, r
+ MMMM r(U)
+ MMMM d, r(U)
+ E, MMMM d, r(U)
+ QQQ r(U)
+ QQQQ r(U)
+
+
+ {0} – {1}
+
+ h B – h B
+ h – h B
+
+
+ h:mm B – h:mm B
+ h:mm – h:mm B
+ h:mm – h:mm B
+
+
+ d – d
+
+
+ h a – h a
+ h – h a
+
+
+ HH – HH
+
+
+ h:mm a – h:mm a
+ h:mm – h:mm a
+ h:mm – h:mm a
+
+
+ HH:mm – HH:mm
+ HH:mm – HH:mm
+
+
+ h:mm a – h:mm a v
+ h:mm – h:mm a v
+ h:mm – h:mm a v
+
+
+ HH:mm – HH:mm v
+ HH:mm – HH:mm v
+
+
+ h a – h a v
+ h – h a v
+
+
+ HH – HH v
+
+
+ M – M
+
+
+ M/d – M/d
+ M/d – M/d
+
+
+ E, M/d – E, M/d
+ E, M/d – E, M/d
+
+
+ MMM – MMM
+
+
+ MMM d – d
+ MMM d – MMM d
+
+
+ E, MMM d – E, MMM d
+ E, MMM d – E, MMM d
+
+
+ U – U
+
+
+ M/y – M/y
+ M/y – M/y
+
+
+ M/d/y – M/d/y
+ M/d/y – M/d/y
+ M/d/y – M/d/y
+
+
+ E, M/d/y – E, M/d/y
+ E, M/d/y – E, M/d/y
+ E, M/d/y – E, M/d/y
+
+
+ MMM – MMM U
+ MMM U – MMM U
+
+
+ MMM d – d, U
+ MMM d – MMM d, U
+ MMM d, U – MMM d, U
+
+
+ E, MMM d – E, MMM d, U
+ E, MMM d – E, MMM d, U
+ E, MMM d, U – E, MMM d, U
+
+
+ MMMM – MMMM U
+ MMMM U – MMMM U
+
+
+
+
+
+
+
+ Anno Martyrum
+
+
+ AM
+
+
+
+
+
+
+
+ EEEE, MMMM d, y G
+ GyMMMMEEEEd
+
+
+
+
+ MMMM d, y G
+ GyMMMMd
+
+
+
+
+ MMM d, y G
+ GyMMMd
+
+
+
+
+ M/d/y G
+ GGGGGyMd
+
+
+
+
+
+
+ {1}, {0}
+
+
+ {1} 'at' {0}
+
+
+ {1} 'at' {0}
+
+
+
+
+ {1}, {0}
+
+
+ {1} 'at' {0}
+
+
+ {1} 'at' {0}
+
+
+
+
+ {1}, {0}
+
+
+ {1}, {0}
+
+
+ {1}, {0}
+
+
+
+
+ {1}, {0}
+
+
+ {1}, {0}
+
+
+ {1}, {0}
+
+
+
+ h B
+ h:mm B
+ h:mm:ss B
+ d
+ ccc
+ E h B
+ E h:mm B
+ E h:mm:ss B
+ d E
+ E h a
+ E h a
+ E h:mm a
+ E h:mm a
+ E HH:mm
+ E h:mm:ss a
+ E h:mm:ss a
+ E HH:mm:ss
+ y G
+ M/y G
+ M/d/y G
+ E, M/d/y G
+ MMM y G
+ MMM d, y G
+ E, MMM d, y G
+ h a
+ h a
+ HH
+ h:mm a
+ h:mm a
+ HH:mm
+ h:mm:ss a
+ h:mm:ss a
+ HH:mm:ss
+ h a v
+ h a v
+ HH'h' v
+ L
+ M/d
+ E, M/d
+ LLL
+ MMM d
+ E, MMM d
+ MMMM d
+ mm:ss
+ y G
+ y G
+ M/y G
+ M/d/y G
+ E, M/d/y G
+ MMM y G
+ MMM d, y G
+ E, MMM d, y G
+ MMMM y G
+ QQQ y G
+ QQQQ y G
+
+
+ {0} ({2}: {1})
+ {0} {1}
+ {0} {1}
+ {0} ({2}: {1})
+ {0} ({2}: {1})
+ {0} ({2}: {1})
+ {0} ({2}: {1})
+ {0} ({2}: {1})
+ {0} {1}
+ {0} ({2}: {1})
+ {0} {1}
+
+
+ {0} – {1}
+
+ h B – h B
+ h – h B
+
+
+ h:mm B – h:mm B
+ h:mm – h:mm B
+ h:mm – h:mm B
+
+
+ d – d
+
+
+ y G – y G
+ y – y G
+
+
+ M/y G – M/y G
+ M/y – M/y G
+ M/y – M/y G
+
+
+ M/d/y – M/d/y G
+ M/d/y G – M/d/y G
+ M/d/y – M/d/y G
+ M/d/y – M/d/y G
+
+
+ E, M/d/y – E, M/d/y G
+ E, M/d/y G – E, M/d/y G
+ E, M/d/y – E, M/d/y G
+ E, M/d/y – E, M/d/y G
+
+
+ MMM y G – MMM y G
+ MMM – MMM y G
+ MMM y – MMM y G
+
+
+ MMM d – d, y G
+ MMM d, y G – MMM d, y G
+ MMM d – MMM d, y G
+ MMM d, y – MMM d, y G
+
+
+ E, MMM d – E, MMM d, y G
+ E, MMM d, y G – E, MMM d, y G
+ E, MMM d – E, MMM d, y G
+ E, MMM d, y – E, MMM d, y G
+
+
+ h a – h a
+ h – h a
+
+
+ HH – HH
+
+
+ h:mm a – h:mm a
+ h:mm – h:mm a
+ h:mm – h:mm a
+
+
+ HH:mm – HH:mm
+ HH:mm – HH:mm
+
+
+ h:mm a – h:mm a v
+ h:mm – h:mm a v
+ h:mm – h:mm a v
+
+
+ HH:mm – HH:mm v
+ HH:mm – HH:mm v
+
+
+ h a – h a v
+ h – h a v
+
+
+ HH – HH v
+
+
+ M – M
+
+
+ M/d – M/d
+ M/d – M/d
+
+
+ E, M/d – E, M/d
+ E, M/d – E, M/d
+
+
+ MMM – MMM
+
+
+ MMM d – d
+ MMM d – MMM d
+
+
+ E, MMM d – E, MMM d
+ E, MMM d – E, MMM d
+
+
+ y – y G
+
+
+ M/y – M/y G
+ M/y – M/y G
+
+
+ M/d/y – M/d/y G
+ M/d/y – M/d/y G
+ M/d/y – M/d/y G
+
+
+ E, M/d/y – E, M/d/y G
+ E, M/d/y – E, M/d/y G
+ E, M/d/y – E, M/d/y G
+
+
+ MMM – MMM y G
+ MMM y – MMM y G
+
+
+ MMM d – d, y G
+ MMM d – MMM d, y G
+ MMM d, y – MMM d, y G
+
+
+ E, MMM d – E, MMM d, y G
+ E, MMM d – E, MMM d, y G
+ E, MMM d, y – E, MMM d, y G
+
+
+ MMMM – MMMM y G
+ MMMM y – MMMM y G
+
+
+
+
+
+
+
+
+ Jan
+ Feb
+ Mar
+ Apr
+ May
+ Jun
+ Jul
+ Aug
+ Sep
+ Oct
+ Nov
+ Dec
+
+
+ J
+ F
+ M
+ A
+ M
+ J
+ J
+ A
+ S
+ O
+ N
+ D
+
+
+ January
+ February
+ March
+ April
+ May
+ June
+ July
+ August
+ September
+ October
+ November
+ December
+
+
+
+
+ Jan
+ Feb
+ Mar
+ Apr
+ May
+ Jun
+ Jul
+ Aug
+ Sep
+ Oct
+ Nov
+ Dec
+
+
+ J
+ F
+ M
+ A
+ M
+ J
+ J
+ A
+ S
+ O
+ N
+ D
+
+
+ January
+ February
+ March
+ April
+ May
+ June
+ July
+ August
+ September
+ October
+ November
+ December
+
+
+
+
+
+
+ Sun
+ Mon
+ Tue
+ Wed
+ Thu
+ Fri
+ Sat
+
+
+ S
+ M
+ T
+ W
+ T
+ F
+ S
+
+
+ Su
+ Mo
+ Tu
+ We
+ Th
+ Fr
+ Sa
+
+
+ Sunday
+ Monday
+ Tuesday
+ Wednesday
+ Thursday
+ Friday
+ Saturday
+
+
+
+
+ Sun
+ Mon
+ Tue
+ Wed
+ Thu
+ Fri
+ Sat
+
+
+ S
+ M
+ T
+ W
+ T
+ F
+ S
+
+
+ Su
+ Mo
+ Tu
+ We
+ Th
+ Fr
+ Sa
+
+
+ Sunday
+ Monday
+ Tuesday
+ Wednesday
+ Thursday
+ Friday
+ Saturday
+
+
+
+
+
+
+ Q1
+ Q2
+ Q3
+ Q4
+
+
+ 1
+ 2
+ 3
+ 4
+
+
+ 1st quarter
+ 2nd quarter
+ 3rd quarter
+ 4th quarter
+
+
+
+
+ Q1
+ Q2
+ Q3
+ Q4
+
+
+ 1
+ 2
+ 3
+ 4
+
+
+ 1st quarter
+ 2nd quarter
+ 3rd quarter
+ 4th quarter
+
+
+
+
+
+
+ midnight
+ AM
+ am
+ noon
+ PM
+ pm
+ in the morning
+ in the afternoon
+ in the evening
+ at night
+
+
+ mi
+ a
+ n
+ p
+ in the morning
+ in the afternoon
+ in the evening
+ at night
+
+
+ midnight
+ AM
+ am
+ noon
+ PM
+ pm
+ in the morning
+ in the afternoon
+ in the evening
+ at night
+
+
+
+
+ midnight
+ AM
+ noon
+ PM
+ morning
+ afternoon
+ evening
+ night
+
+
+ midnight
+ AM
+ noon
+ PM
+ morning
+ afternoon
+ evening
+ night
+
+
+ midnight
+ AM
+ noon
+ PM
+ morning
+ afternoon
+ evening
+ night
+
+
+
+
+
+ Before Christ
+ Before Common Era
+ Anno Domini
+ Common Era
+
+
+ BC
+ BCE
+ AD
+ CE
+
+
+ B
+ A
+
+
+
+
+
+ EEEE, MMMM d, y
+ yMMMMEEEEd
+
+
+
+
+ MMMM d, y
+ yMMMMd
+
+
+
+
+ MMM d, y
+ yMMMd
+
+
+
+
+ M/d/yy
+ yyMd
+
+
+
+
+
+
+ h:mm:ss a zzzz
+ h:mm:ss a zzzz
+ ahmmsszzzz
+
+
+
+
+ h:mm:ss a z
+ h:mm:ss a z
+ ahmmssz
+
+
+
+
+ h:mm:ss a
+ h:mm:ss a
+ ahmmss
+
+
+
+
+ h:mm a
+ h:mm a
+ ahmm
+
+
+
+
+
+
+ {1}, {0}
+
+
+ {1} 'at' {0}
+
+
+ {1} 'at' {0}
+
+
+
+
+ {1}, {0}
+
+
+ {1} 'at' {0}
+
+
+ {1} 'at' {0}
+
+
+
+
+ {1}, {0}
+
+
+ {1}, {0}
+
+
+ {1}, {0}
+
+
+
+
+ {1}, {0}
+
+
+ {1}, {0}
+
+
+ {1}, {0}
+
+
+
+ h B
+ h:mm B
+ h:mm:ss B
+ d
+ ccc
+ E h B
+ E h:mm B
+ E h:mm:ss B
+ d E
+ E h a
+ E h a
+ E h:mm a
+ E h:mm a
+ E HH:mm
+ E h:mm:ss a
+ E h:mm:ss a
+ E HH:mm:ss
+ y G
+ M/y G
+ M/d/y G
+ E, M/d/y G
+ MMM y G
+ MMM d, y G
+ E, MMM d, y G
+ h a
+ h a
+ HH
+ h:mm a
+ h:mm a
+ HH:mm
+ h:mm:ss a
+ h:mm:ss a
+ HH:mm:ss
+ h:mm:ss a v
+ h:mm:ss a v
+ HH:mm:ss v
+ h:mm a v
+ h:mm a v
+ HH:mm v
+ h a v
+ h a v
+ HH'h' v
+ L
+ M/d
+ E, M/d
+ LLL
+ MMM d
+ E, MMM d
+ MMMM d
+ 'week' W 'of' MMMM
+ 'week' W 'of' MMMM
+ mm:ss
+ y
+ M/y
+ M/d/y
+ E, M/d/y
+ MMM y
+ MMM d, y
+ E, MMM d, y
+ MMMM y
+ QQQ y
+ QQQQ y
+ 'week' w 'of' Y
+ 'week' w 'of' Y
+
+
+ {0} ({2}: {1})
+ {0} {1}
+ {0} {1}
+ {0} ({2}: {1})
+ {0} ({2}: {1})
+ {0} ({2}: {1})
+ {0} ({2}: {1})
+ {0} ({2}: {1})
+ {0} {1}
+ {0} ({2}: {1})
+ {0} {1}
+
+
+ {0} – {1}
+
+ h B – h B
+ h – h B
+
+
+ h:mm B – h:mm B
+ h:mm – h:mm B
+ h:mm – h:mm B
+
+
+ d – d
+
+
+ y G – y G
+ y – y G
+
+
+ M/y G – M/y G
+ M/y – M/y G
+ M/y – M/y G
+
+
+ M/d/y – M/d/y G
+ M/d/y G – M/d/y G
+ M/d/y – M/d/y G
+ M/d/y – M/d/y G
+
+
+ E, M/d/y – E, M/d/y G
+ E, M/d/y G – E, M/d/y G
+ E, M/d/y – E, M/d/y G
+ E, M/d/y – E, M/d/y G
+
+
+ MMM y G – MMM y G
+ MMM – MMM y G
+ MMM y – MMM y G
+
+
+ MMM d – d, y G
+ MMM d, y G – MMM d, y G
+ MMM d – MMM d, y G
+ MMM d, y – MMM d, y G
+
+
+ E, MMM d – E, MMM d, y G
+ E, MMM d, y G – E, MMM d, y G
+ E, MMM d – E, MMM d, y G
+ E, MMM d, y – E, MMM d, y G
+
+
+ h a – h a
+ h – h a
+
+
+ HH – HH
+
+
+ h:mm a – h:mm a
+ h:mm – h:mm a
+ h:mm – h:mm a
+
+
+ HH:mm – HH:mm
+ HH:mm – HH:mm
+
+
+ h:mm a – h:mm a v
+ h:mm – h:mm a v
+ h:mm – h:mm a v
+
+
+ HH:mm – HH:mm v
+ HH:mm – HH:mm v
+
+
+ h a – h a v
+ h – h a v
+
+
+ HH – HH v
+
+
+ M – M
+
+
+ M/d – M/d
+ M/d – M/d
+
+
+ E, M/d – E, M/d
+ E, M/d – E, M/d
+
+
+ MMM – MMM
+
+
+ MMM d – d
+ MMM d – MMM d
+
+
+ E, MMM d – E, MMM d
+ E, MMM d – E, MMM d
+
+
+ y – y
+
+
+ M/y – M/y
+ M/y – M/y
+
+
+ M/d/y – M/d/y
+ M/d/y – M/d/y
+ M/d/y – M/d/y
+
+
+ E, M/d/y – E, M/d/y
+ E, M/d/y – E, M/d/y
+ E, M/d/y – E, M/d/y
+
+
+ MMM – MMM y
+ MMM y – MMM y
+
+
+ MMM d – d, y
+ MMM d – MMM d, y
+ MMM d, y – MMM d, y
+
+
+ E, MMM d – E, MMM d, y
+ E, MMM d – E, MMM d, y
+ E, MMM d, y – E, MMM d, y
+
+
+ MMMM – MMMM y
+ MMMM y – MMMM y
+
+
+
+
+
+
+
+
+ Tishri
+ Heshvan
+ Kislev
+ Tevet
+ Shevat
+ Adar I
+ Adar
+ Adar II
+ Nisan
+ Iyar
+ Sivan
+ Tamuz
+ Av
+ Elul
+
+
+
+
+ Tishri
+ Heshvan
+ Kislev
+ Tevet
+ Shevat
+ Adar I
+ Adar
+ Adar II
+ Nisan
+ Iyar
+ Sivan
+ Tamuz
+ Av
+ Elul
+
+
+ Tishri
+ Heshvan
+ Kislev
+ Tevet
+ Shevat
+ Adar I
+ Adar
+ Adar II
+ Nisan
+ Iyar
+ Sivan
+ Tamuz
+ Av
+ Elul
+
+
+
+
+
+ AM
+
+
+
+
+
+ EEEE, d MMMM y
+ yMMMMEEEEd
+
+
+
+
+ d MMMM y
+ yMMMMd
+
+
+
+
+ d MMM y
+ yMMMd
+
+
+
+
+ d MMM y
+ yMMMd
+
+
+
+
+
+ y G
+ d MMM y G
+ MMM y G
+ d MMM y G
+ E, d MMM y G
+ L
+ d MMM
+ E, d MMM
+ LLL
+ d MMM
+ E, d MMM
+ d MMMM
+ y
+ MMM y
+ d MMM y
+ E, d MMM y
+ MMM y
+ d MMM y
+ E, d MMM y
+ MMMM y
+ QQQ y
+ QQQQ y
+
+
+
+ MMM – MMM
+
+
+ d – d MMM
+ d MMM – d MMM
+
+
+ E, d MMM – E, d MMM
+ E, d MMM – E, d MMM
+
+
+ MMM – MMM
+
+
+ d – d MMM
+ d MMM – d MMM
+
+
+ E, d MMM – E, d MMM
+ E, d MMM – E, d MMM
+
+
+ y – y G
+
+
+ MMM – MMM y
+ MMM y – MMM y
+
+
+ d – d MMM y
+ d MMM – d MMM y
+ d MMM y – d MMM y
+
+
+ E, d MMM – E, d MMM y
+ E, d MMM – E, d MMM y
+ E, d MMM y – E, d MMM y
+
+
+ MMM – MMM y
+ MMM y – MMM y
+
+
+ d – d MMM y
+ d MMM – d MMM y
+ d MMM y – d MMM y
+
+
+ E, d MMM – E, d MMM y
+ E, d MMM – E, d MMM y
+ E, d MMM y – E, d MMM y
+
+
+ MMMM – MMMM y
+ MMMM y – MMMM y
+
+
+
+
+
+
+
+
+ Chaitra
+ Vaisakha
+ Jyaistha
+ Asadha
+ Sravana
+ Bhadra
+ Asvina
+ Kartika
+ Agrahayana
+ Pausa
+ Magha
+ Phalguna
+
+
+ 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+ 9
+ 10
+ 11
+ 12
+
+
+
+
+ Chaitra
+ Vaisakha
+ Jyaistha
+ Asadha
+ Sravana
+ Bhadra
+ Asvina
+ Kartika
+ Agrahayana
+ Pausa
+ Magha
+ Phalguna
+
+
+ Chaitra
+ Vaisakha
+ Jyaistha
+ Asadha
+ Sravana
+ Bhadra
+ Asvina
+ Kartika
+ Agrahayana
+ Pausa
+ Magha
+ Phalguna
+
+
+
+
+
+
+
+
+ 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+ 9
+ 10
+ 11
+ 12
+
+
+
+
+ Muh.
+ Saf.
+ Rab. I
+ Rab. II
+ Jum. I
+ Jum. II
+ Raj.
+ Sha.
+ Ram.
+ Shaw.
+ Dhuʻl-Q.
+ Dhuʻl-H.
+
+
+ Muharram
+ Safar
+ Rabiʻ I
+ Rabiʻ II
+ Jumada I
+ Jumada II
+ Rajab
+ Shaʻban
+ Ramadan
+ Shawwal
+ Dhuʻl-Qiʻdah
+ Dhuʻl-Hijjah
+
+
+
+
+
+ Anno Hegirae
+ Before Hijrah
+
+
+ AH
+ BH
+
+
+
+
+
+ EEEE, MMMM d, y G
+
+
+
+
+ MMMM d, y G
+
+
+
+
+ MMM d, y G
+
+
+
+
+ M/d/y G
+
+
+
+
+
+ d
+ ccc
+ d E
+ y G
+ M/y G
+ M/d/y G
+ E, M/d/y G
+ MMM y G
+ MMM d, y G
+ E, MMM d, y G
+ L
+ M/d
+ E, M/d
+ LLL
+ MMM d
+ E, MMM d
+ MMMM d
+ y G
+ y G
+ M/y G
+ M/d/y G
+ E, M/d/y G
+ MMM y G
+ MMM d, y G
+ E, MMM d, y G
+ MMMM y G
+ QQQ y G
+ QQQQ y G
+
+
+
+
+
+
+
+ EEEE, MMMM d, y G
+ GyMMMMEEEEd
+
+
+
+
+ MMMM d, y G
+ GyMMMMd
+
+
+
+
+ MMM d, y G
+ GyMMMd
+
+
+
+
+ M/d/y GGGGG
+ GGGGGyMd
+
+
+
+
+
+
+ {1} 'at' {0}
+
+
+ {1} 'at' {0}
+
+
+ {1} 'at' {0}
+
+
+
+
+ {1} 'at' {0}
+
+
+ {1} 'at' {0}
+
+
+ {1} 'at' {0}
+
+
+
+
+ {1}, {0}
+
+
+ {1}, {0}
+
+
+ {1}, {0}
+
+
+
+
+ {1}, {0}
+
+
+ {1}, {0}
+
+
+ {1}, {0}
+
+
+
+ d
+ ccc
+ d E
+ EEEE d
+ y G
+ M/y GGGGG
+ M/d/y GGGGG
+ E, M/d/y GGGGG
+ MMM y G
+ MMM d, y G
+ E, MMM d, y G
+ EEEE, MMM d, y G
+ ↑↑↑
+ ↑↑↑
+ ↑↑↑
+ ↑↑↑
+ ↑↑↑
+ ↑↑↑
+ L
+ M/d
+ E, M/d
+ EEEE, M/d
+ LLL
+ MMM d
+ E, MMM d
+ EEEE, MMM d
+ MMMM d
+ ↑↑↑
+ y G
+ y G
+ M/y GGGGG
+ M/d/y GGGGG
+ E, M/d/y GGGGG
+ EEEE, MMMM d, y G
+ MM y GGGGG
+ MMM y G
+ MMM d, y G
+ E, MMM d, y G
+ EEEE, MMMM d, y G
+ MMMM y G
+ QQQ y G
+ QQQQ y G
+
+
+
+
+
+
+ B.R.O.C.
+ Minguo
+
+
+
+
+
+
+ era
+
+
+ era
+
+
+ era
+
+
+ year
+ last year
+ this year
+ next year
+
+ in {0} year
+ in {0} years
+
+
+ {0} year ago
+ {0} years ago
+
+
+
+ yr.
+ last yr.
+ this yr.
+ next yr.
+
+ in {0} yr.
+ in {0} yr.
+
+
+ {0} yr. ago
+ {0} yr. ago
+
+
+
+ yr
+ last yr.
+ this yr.
+ next yr.
+
+ in {0}y
+ in {0}y
+
+
+ {0}y ago
+ {0}y ago
+
+
+
+ quarter
+ last quarter
+ this quarter
+ next quarter
+
+ in {0} quarter
+ in {0} quarters
+
+
+ {0} quarter ago
+ {0} quarters ago
+
+
+
+ qtr.
+ last qtr.
+ this qtr.
+ next qtr.
+
+ in {0} qtr.
+ in {0} qtrs.
+
+
+ {0} qtr. ago
+ {0} qtrs. ago
+
+
+
+ qtr
+
+ in {0}q
+ in {0}q
+
+
+ {0}q ago
+ {0}q ago
+
+
+
+ month
+ last month
+ this month
+ next month
+
+ in {0} month
+ in {0} months
+
+
+ {0} month ago
+ {0} months ago
+
+
+
+ mo.
+ last mo.
+ this mo.
+ next mo.
+
+ in {0} mo.
+ in {0} mo.
+
+
+ {0} mo. ago
+ {0} mo. ago
+
+
+
+ mo
+ last mo.
+ this mo.
+ next mo.
+
+ in {0}mo
+ in {0}mo
+
+
+ {0}mo ago
+ {0}mo ago
+
+
+
+ week
+ last week
+ this week
+ next week
+
+ in {0} week
+ in {0} weeks
+
+
+ {0} week ago
+ {0} weeks ago
+
+ the week of {0}
+
+
+ wk.
+ last wk.
+ this wk.
+ next wk.
+
+ in {0} wk.
+ in {0} wk.
+
+
+ {0} wk. ago
+ {0} wk. ago
+
+ the week of {0}
+
+
+ wk
+ last wk.
+ this wk.
+ next wk.
+
+ in {0}w
+ in {0}w
+
+
+ {0}w ago
+ {0}w ago
+
+ the week of {0}
+
+
+ week of month
+
+
+ wk. of mo.
+
+
+ wk. of mo.
+
+
+ day
+ yesterday
+ today
+ tomorrow
+
+ in {0} day
+ in {0} days
+
+
+ {0} day ago
+ {0} days ago
+
+
+
+ day
+ yesterday
+ today
+ tomorrow
+
+ in {0} day
+ in {0} days
+
+
+ {0} day ago
+ {0} days ago
+
+
+
+ day
+ yesterday
+ today
+ tomorrow
+
+ in {0}d
+ in {0}d
+
+
+ {0}d ago
+ {0}d ago
+
+
+
+ day of year
+
+
+ day of yr.
+
+
+ day of yr.
+
+
+ day of the week
+
+
+ day of wk.
+
+
+ day of wk.
+
+
+ weekday of the month
+
+
+ wkday. of mo.
+
+
+ wkday. of mo.
+
+
+ last Sunday
+ this Sunday
+ next Sunday
+
+ in {0} Sunday
+ in {0} Sundays
+
+
+ {0} Sunday ago
+ {0} Sundays ago
+
+
+
+ last Sun.
+ this Sun.
+ next Sun.
+
+ in {0} Sun.
+ in {0} Sun.
+
+
+ {0} Sun. ago
+ {0} Sun. ago
+
+
+
+ last Su
+ this Su
+ next Su
+
+ in {0} Su
+ in {0} Su
+
+
+ {0} Su ago
+ {0} Su ago
+
+
+
+ last Monday
+ this Monday
+ next Monday
+
+ in {0} Monday
+ in {0} Mondays
+
+
+ {0} Monday ago
+ {0} Mondays ago
+
+
+
+ last Mon.
+ this Mon.
+ next Mon.
+
+ in {0} Mon.
+ in {0} Mon.
+
+
+ {0} Mon. ago
+ {0} Mon. ago
+
+
+
+ last M
+ this M
+ next M
+
+ in {0} M
+ in {0} M
+
+
+ {0} M ago
+ {0} M ago
+
+
+
+ last Tuesday
+ this Tuesday
+ next Tuesday
+
+ in {0} Tuesday
+ in {0} Tuesdays
+
+
+ {0} Tuesday ago
+ {0} Tuesdays ago
+
+
+
+ last Tue.
+ this Tue.
+ next Tue.
+
+ in {0} Tue.
+ in {0} Tue.
+
+
+ {0} Tue. ago
+ {0} Tue. ago
+
+
+
+ last Tu
+ this Tu
+ next Tu
+
+ in {0} Tu
+ in {0} Tu
+
+
+ {0} Tu ago
+ {0} Tu ago
+
+
+
+ last Wednesday
+ this Wednesday
+ next Wednesday
+
+ in {0} Wednesday
+ in {0} Wednesdays
+
+
+ {0} Wednesday ago
+ {0} Wednesdays ago
+
+
+
+ last Wed.
+ this Wed.
+ next Wed.
+
+ in {0} Wed.
+ in {0} Wed.
+
+
+ {0} Wed. ago
+ {0} Wed. ago
+
+
+
+ last W
+ this W
+ next W
+
+ in {0} W
+ in {0} W
+
+
+ {0} W ago
+ {0} W ago
+
+
+
+ last Thursday
+ this Thursday
+ next Thursday
+
+ in {0} Thursday
+ in {0} Thursdays
+
+
+ {0} Thursday ago
+ {0} Thursdays ago
+
+
+
+ last Thu.
+ this Thu.
+ next Thu.
+
+ in {0} Thu.
+ in {0} Thu.
+
+
+ {0} Thu. ago
+ {0} Thu. ago
+
+
+
+ last Th
+ this Th
+ next Th
+
+ in {0} Th
+ in {0} Th
+
+
+ {0} Th ago
+ {0} Th ago
+
+
+
+ last Friday
+ this Friday
+ next Friday
+
+ in {0} Friday
+ in {0} Fridays
+
+
+ {0} Friday ago
+ {0} Fridays ago
+
+
+
+ last Fri.
+ this Fri.
+ next Fri.
+
+ in {0} Fri.
+ in {0} Fri.
+
+
+ {0} Fri. ago
+ {0} Fri. ago
+
+
+
+ last F
+ this F
+ next F
+
+ in {0} F
+ in {0} F
+
+
+ {0} F ago
+ {0} F ago
+
+
+
+ last Saturday
+ this Saturday
+ next Saturday
+
+ in {0} Saturday
+ in {0} Saturdays
+
+
+ {0} Saturday ago
+ {0} Saturdays ago
+
+
+
+ last Sat.
+ this Sat.
+ next Sat.
+
+ in {0} Sat.
+ in {0} Sat.
+
+
+ {0} Sat. ago
+ {0} Sat. ago
+
+
+
+ last Sa
+ this Sa
+ next Sa
+
+ in {0} Sa
+ in {0} Sa
+
+
+ {0} Sa ago
+ {0} Sa ago
+
+
+
+ AM/PM
+ am/pm
+
+
+ AM/PM
+ am/pm
+
+
+ AM/PM
+
+
+ hour
+ this hour
+
+ in {0} hour
+ in {0} hours
+
+
+ {0} hour ago
+ {0} hours ago
+
+
+
+ hr.
+
+ in {0} hr.
+ in {0} hr.
+
+
+ {0} hr. ago
+ {0} hr. ago
+
+
+
+ hr
+
+ in {0}h
+ in {0}h
+
+
+ {0}h ago
+ {0}h ago
+
+
+
+ minute
+ this minute
+
+ in {0} minute
+ in {0} minutes
+
+
+ {0} minute ago
+ {0} minutes ago
+
+
+
+ min.
+
+ in {0} min.
+ in {0} min.
+
+
+ {0} min. ago
+ {0} min. ago
+
+
+
+ min
+
+ in {0}m
+ in {0}m
+
+
+ {0}m ago
+ {0}m ago
+
+
+
+ second
+ now
+
+ in {0} second
+ in {0} seconds
+
+
+ {0} second ago
+ {0} seconds ago
+
+
+
+ sec.
+ now
+
+ in {0} sec.
+ in {0} sec.
+
+
+ {0} sec. ago
+ {0} sec. ago
+
+
+
+ sec
+
+ in {0}s
+ in {0}s
+
+
+ {0}s ago
+ {0}s ago
+
+
+
+ time zone
+
+
+ zone
+
+
+ zone
+
+
+
+ +HH:mm;-HH:mm
+ GMT{0}
+ {0} Time
+ {0} Daylight Time
+ {0} Standard Time
+ {1} ({0})
+
+
+ Coordinated Universal Time
+
+
+
+ Unknown Location
+
+
+ Rothera Station
+
+
+ Palmer Land
+
+
+ Troll Station
+
+
+ Showa Station
+
+
+ Mawson Station
+
+
+ Vostok Station
+
+
+ Casey Station
+
+
+ Dumont d’Urville Station
+
+
+ McMurdo Station
+
+
+ Macquarie Island
+
+
+ Lord Howe Island
+
+
+ Cocos Islands
+
+
+ Easter Island
+
+
+ Christmas Island
+
+
+ Galápagos Islands
+
+
+ Canaries
+
+
+ Faroes
+
+
+
+ British Summer Time
+
+
+
+
+ Irish Standard Time
+
+
+
+ Chagos Archipelago
+
+
+ Canton Island
+
+
+ Comoros
+
+
+ Aktau
+
+
+ Kostanay
+
+
+ Kyzylorda
+
+
+ Kwajalein Atoll
+
+
+ Mexico City
+
+
+ Norfolk Island
+
+
+ Chatham Islands
+
+
+ Marquesas Islands
+
+
+ Pitcairn Islands
+
+
+ Kerguelen Islands
+
+
+ Midway Atoll
+
+
+ Wake Island
+
+
+ Ho Chi Minh City
+
+
+
+ Acre Time
+ Acre Standard Time
+ Acre Summer Time
+
+
+
+
+ Afghanistan Time
+
+
+
+
+ Central Africa Time
+
+
+
+
+ East Africa Time
+
+
+
+
+ South Africa Standard Time
+
+
+
+
+ West Africa Time
+
+
+
+
+ Alaska Time
+ Alaska Standard Time
+ Alaska Daylight Time
+
+
+ AKT
+ AKST
+ AKDT
+
+
+
+
+ Almaty Time
+ Almaty Standard Time
+ Almaty Summer Time
+
+
+
+
+ Amazon Time
+ Amazon Standard Time
+ Amazon Summer Time
+
+
+
+
+ Central Time
+ Central Standard Time
+ Central Daylight Time
+
+
+ CT
+ CST
+ CDT
+
+
+
+
+ Eastern Time
+ Eastern Standard Time
+ Eastern Daylight Time
+
+
+ ET
+ EST
+ EDT
+
+
+
+
+ Mountain Time
+ Mountain Standard Time
+ Mountain Daylight Time
+
+
+ MT
+ MST
+ MDT
+
+
+
+
+ Pacific Time
+ Pacific Standard Time
+ Pacific Daylight Time
+
+
+ PT
+ PST
+ PDT
+
+
+
+
+ Anadyr Time
+ Anadyr Standard Time
+ Anadyr Summer Time
+
+
+
+
+ Samoa Time
+ Samoa Standard Time
+ Samoa Daylight Time
+
+
+
+
+ Aqtau Time
+ Aqtau Standard Time
+ Aqtau Summer Time
+
+
+
+
+ Aqtobe Time
+ Aqtobe Standard Time
+ Aqtobe Summer Time
+
+
+
+
+ Arabian Time
+ Arabian Standard Time
+ Arabian Daylight Time
+
+
+
+
+ Argentina Time
+ Argentina Standard Time
+ Argentina Summer Time
+
+
+
+
+ Western Argentina Time
+ Western Argentina Standard Time
+ Western Argentina Summer Time
+
+
+
+
+ Armenia Time
+ Armenia Standard Time
+ Armenia Summer Time
+
+
+
+
+ Atlantic Time
+ Atlantic Standard Time
+ Atlantic Daylight Time
+
+
+ AT
+ AST
+ ADT
+
+
+
+
+ Australian Central Time
+ Australian Central Standard Time
+ Australian Central Daylight Time
+
+
+
+
+ Australian Central Western Time
+ Australian Central Western Standard Time
+ Australian Central Western Daylight Time
+
+
+
+
+ Australian Eastern Time
+ Australian Eastern Standard Time
+ Australian Eastern Daylight Time
+
+
+
+
+ Australian Western Time
+ Australian Western Standard Time
+ Australian Western Daylight Time
+
+
+
+
+ Azerbaijan Time
+ Azerbaijan Standard Time
+ Azerbaijan Summer Time
+
+
+
+
+ Azores Time
+ Azores Standard Time
+ Azores Summer Time
+
+
+
+
+ Bangladesh Time
+ Bangladesh Standard Time
+ Bangladesh Summer Time
+
+
+
+
+ Bhutan Time
+
+
+
+
+ Bolivia Time
+
+
+
+
+ Brasilia Time
+ Brasilia Standard Time
+ Brasilia Summer Time
+
+
+
+
+ Brunei Time
+
+
+
+
+ Cape Verde Time
+ Cape Verde Standard Time
+ Cape Verde Summer Time
+
+
+
+
+ Casey Time
+
+
+
+
+ Chamorro Standard Time
+
+
+
+
+ Chatham Time
+ Chatham Standard Time
+ Chatham Daylight Time
+
+
+
+
+ Chile Time
+ Chile Standard Time
+ Chile Summer Time
+
+
+
+
+ China Time
+ China Standard Time
+ China Daylight Time
+
+
+
+
+ Christmas Island Time
+
+
+
+
+ Cocos Islands Time
+
+
+
+
+ Colombia Time
+ Colombia Standard Time
+ Colombia Summer Time
+
+
+
+
+ Cook Islands Time
+ Cook Islands Standard Time
+ Cook Islands Summer Time
+
+
+
+
+ Cuba Time
+ Cuba Standard Time
+ Cuba Daylight Time
+
+
+
+
+ Davis Time
+
+
+
+
+ Dumont d’Urville Time
+
+
+
+
+ Timor-Leste Time
+
+
+
+
+ Easter Island Time
+ Easter Island Standard Time
+ Easter Island Summer Time
+
+
+
+
+ Ecuador Time
+
+
+
+
+ Central European Time
+ Central European Standard Time
+ Central European Summer Time
+
+
+
+
+ Eastern European Time
+ Eastern European Standard Time
+ Eastern European Summer Time
+
+
+
+
+ Further-eastern European Time
+
+
+
+
+ Western European Time
+ Western European Standard Time
+ Western European Summer Time
+
+
+
+
+ Falkland Islands Time
+ Falkland Islands Standard Time
+ Falkland Islands Summer Time
+
+
+
+
+ Fiji Time
+ Fiji Standard Time
+ Fiji Summer Time
+
+
+
+
+ French Guiana Time
+
+
+
+
+ French Southern & Antarctic Time
+
+
+
+
+ Galapagos Time
+
+
+
+
+ Gambier Time
+
+
+
+
+ Georgia Time
+ Georgia Standard Time
+ Georgia Summer Time
+
+
+
+
+ Gilbert Islands Time
+
+
+
+
+ Greenwich Mean Time
+
+
+ GMT
+
+
+
+
+ Greenland Time
+ Greenland Standard Time
+ Greenland Summer Time
+
+
+
+
+ East Greenland Time
+ East Greenland Standard Time
+ East Greenland Summer Time
+
+
+
+
+ West Greenland Time
+ West Greenland Standard Time
+ West Greenland Summer Time
+
+
+
+
+ Guam Standard Time
+
+
+
+
+ Gulf Standard Time
+
+
+
+
+ Guyana Time
+
+
+
+
+ Hawaii-Aleutian Standard Time
+
+
+ HST
+
+
+
+
+ Hawaii-Aleutian Time
+ Hawaii-Aleutian Standard Time
+ Hawaii-Aleutian Daylight Time
+
+
+ HAT
+ HAST
+ HADT
+
+
+
+
+ Hong Kong Time
+ Hong Kong Standard Time
+ Hong Kong Summer Time
+
+
+
+
+ Khovd Time
+ Khovd Standard Time
+ Khovd Summer Time
+
+
+
+
+ India Standard Time
+
+
+
+
+ Indian Ocean Time
+
+
+
+
+ Indochina Time
+
+
+
+
+ Central Indonesia Time
+
+
+
+
+ Eastern Indonesia Time
+
+
+
+
+ Western Indonesia Time
+
+
+
+
+ Iran Time
+ Iran Standard Time
+ Iran Daylight Time
+
+
+
+
+ Irkutsk Time
+ Irkutsk Standard Time
+ Irkutsk Summer Time
+
+
+
+
+ Israel Time
+ Israel Standard Time
+ Israel Daylight Time
+
+
+
+
+ Japan Time
+ Japan Standard Time
+ Japan Daylight Time
+
+
+
+
+ Kamchatka Time
+ Kamchatka Standard Time
+ Kamchatka Summer Time
+
+
+
+
+ Kazakhstan Time
+
+
+
+
+ East Kazakhstan Time
+
+
+
+
+ West Kazakhstan Time
+
+
+
+
+ Korean Time
+ Korean Standard Time
+ Korean Daylight Time
+
+
+
+
+ Kosrae Time
+
+
+
+
+ Krasnoyarsk Time
+ Krasnoyarsk Standard Time
+ Krasnoyarsk Summer Time
+
+
+
+
+ Kyrgyzstan Time
+
+
+
+
+ Lanka Time
+
+
+
+
+ Line Islands Time
+
+
+
+
+ Lord Howe Time
+ Lord Howe Standard Time
+ Lord Howe Daylight Time
+
+
+
+
+ Macao Time
+ Macao Standard Time
+ Macao Summer Time
+
+
+
+
+ Magadan Time
+ Magadan Standard Time
+ Magadan Summer Time
+
+
+
+
+ Malaysia Time
+
+
+
+
+ Maldives Time
+
+
+
+
+ Marquesas Time
+
+
+
+
+ Marshall Islands Time
+
+
+
+
+ Mauritius Time
+ Mauritius Standard Time
+ Mauritius Summer Time
+
+
+
+
+ Mawson Time
+
+
+
+
+ Mexican Pacific Time
+ Mexican Pacific Standard Time
+ Mexican Pacific Daylight Time
+
+
+
+
+ Ulaanbaatar Time
+ Ulaanbaatar Standard Time
+ Ulaanbaatar Summer Time
+
+
+
+
+ Moscow Time
+ Moscow Standard Time
+ Moscow Summer Time
+
+
+
+
+ Myanmar Time
+
+
+
+
+ Nauru Time
+
+
+
+
+ Nepal Time
+
+
+
+
+ New Caledonia Time
+ New Caledonia Standard Time
+ New Caledonia Summer Time
+
+
+
+
+ New Zealand Time
+ New Zealand Standard Time
+ New Zealand Daylight Time
+
+
+
+
+ Newfoundland Time
+ Newfoundland Standard Time
+ Newfoundland Daylight Time
+
+
+
+
+ Niue Time
+
+
+
+
+ Norfolk Island Time
+ Norfolk Island Standard Time
+ Norfolk Island Daylight Time
+
+
+
+
+ Fernando de Noronha Time
+ Fernando de Noronha Standard Time
+ Fernando de Noronha Summer Time
+
+
+
+
+ Northern Mariana Islands Time
+
+
+
+
+ Novosibirsk Time
+ Novosibirsk Standard Time
+ Novosibirsk Summer Time
+
+
+
+
+ Omsk Time
+ Omsk Standard Time
+ Omsk Summer Time
+
+
+
+
+ Pakistan Time
+ Pakistan Standard Time
+ Pakistan Summer Time
+
+
+
+
+ Palau Time
+
+
+
+
+ Papua New Guinea Time
+
+
+
+
+ Paraguay Time
+ Paraguay Standard Time
+ Paraguay Summer Time
+
+
+
+
+ Peru Time
+ Peru Standard Time
+ Peru Summer Time
+
+
+
+
+ Philippine Time
+ Philippine Standard Time
+ Philippine Summer Time
+
+
+
+
+ Phoenix Islands Time
+
+
+
+
+ St. Pierre & Miquelon Time
+ St. Pierre & Miquelon Standard Time
+ St. Pierre & Miquelon Daylight Time
+
+
+
+
+ Pitcairn Time
+
+
+
+
+ Pohnpei Time
+
+
+
+
+ North Korea Time
+
+
+
+
+ Kyzylorda Time
+ Kyzylorda Standard Time
+ Kyzylorda Summer Time
+
+
+
+
+ Réunion Time
+
+
+
+
+ Rothera Time
+
+
+
+
+ Sakhalin Time
+ Sakhalin Standard Time
+ Sakhalin Summer Time
+
+
+
+
+ Samara Time
+ Samara Standard Time
+ Samara Summer Time
+
+
+
+
+ American Samoa Time
+ American Samoa Standard Time
+ American Samoa Daylight Time
+
+
+
+
+ Seychelles Time
+
+
+
+
+ Singapore Standard Time
+
+
+
+
+ Solomon Islands Time
+
+
+
+
+ South Georgia Time
+
+
+
+
+ Suriname Time
+
+
+
+
+ Syowa Time
+
+
+
+
+ Tahiti Time
+
+
+
+
+ Taiwan Time
+ Taiwan Standard Time
+ Taiwan Daylight Time
+
+
+
+
+ Tajikistan Time
+
+
+
+
+ Tokelau Time
+
+
+
+
+ Tonga Time
+ Tonga Standard Time
+ Tonga Summer Time
+
+
+
+
+ Chuuk Time
+
+
+
+
+ Türkiye Time
+ Türkiye Standard Time
+ Türkiye Summer Time
+
+
+
+
+ Turkmenistan Time
+ Turkmenistan Standard Time
+ Turkmenistan Summer Time
+
+
+
+
+ Tuvalu Time
+
+
+
+
+ Uruguay Time
+ Uruguay Standard Time
+ Uruguay Summer Time
+
+
+
+
+ Uzbekistan Time
+ Uzbekistan Standard Time
+ Uzbekistan Summer Time
+
+
+
+
+ Vanuatu Time
+ Vanuatu Standard Time
+ Vanuatu Summer Time
+
+
+
+
+ Venezuela Time
+
+
+
+
+ Vladivostok Time
+ Vladivostok Standard Time
+ Vladivostok Summer Time
+
+
+
+
+ Volgograd Time
+ Volgograd Standard Time
+ Volgograd Summer Time
+
+
+
+
+ Vostok Time
+
+
+
+
+ Wake Island Time
+
+
+
+
+ Wallis & Futuna Time
+
+
+
+
+ Yakutsk Time
+ Yakutsk Standard Time
+ Yakutsk Summer Time
+
+
+
+
+ Yekaterinburg Time
+ Yekaterinburg Standard Time
+ Yekaterinburg Summer Time
+
+
+
+
+ Yukon Time
+
+
+
+
+
+
+ .
+ ,
+ ;
+ %
+ +
+ -
+ E
+ ×
+ ‰
+ ∞
+ NaN
+
+
+
+
+ #,##0.###
+
+
+
+
+ 0 thousand
+ 0 thousand
+ 00 thousand
+ 00 thousand
+ 000 thousand
+ 000 thousand
+ 0 million
+ 0 million
+ 00 million
+ 00 million
+ 000 million
+ 000 million
+ 0 billion
+ 0 billion
+ 00 billion
+ 00 billion
+ 000 billion
+ 000 billion
+ 0 trillion
+ 0 trillion
+ 00 trillion
+ 00 trillion
+ 000 trillion
+ 000 trillion
+
+
+
+
+ 0K
+ 0K
+ 00K
+ 00K
+ 000K
+ 000K
+ 0M
+ 0M
+ 00M
+ 00M
+ 000M
+ 000M
+ 0B
+ 0B
+ 00B
+ 00B
+ 000B
+ 000B
+ 0T
+ 0T
+ 00T
+ 00T
+ 000T
+ 000T
+
+
+
+
+ {0}⁄{1}
+ {0} {1}
+ {0}{1}
+ sometimes
+
+
+
+
+ #E0
+
+
+
+
+
+
+ #,##0%
+
+
+
+
+
+
+ ¤#,##0.00
+ ¤ #,##0.00
+ #,##0.00
+
+
+ ¤#,##0.00;(¤#,##0.00)
+ ¤ #,##0.00;(¤ #,##0.00)
+ #,##0.00;(#,##0.00)
+
+
+
+
+ ¤0K
+ ¤ 0K
+ ¤0K
+ ¤ 0K
+ ¤00K
+ ¤ 00K
+ ¤00K
+ ¤ 00K
+ ¤000K
+ ¤ 000K
+ ¤000K
+ ¤ 000K
+ ¤0M
+ ¤ 0M
+ ¤0M
+ ¤ 0M
+ ¤00M
+ ¤ 00M
+ ¤00M
+ ¤ 00M
+ ¤000M
+ ¤ 000M
+ ¤000M
+ ¤ 000M
+ ¤0B
+ ¤ 0B
+ ¤0B
+ ¤ 0B
+ ¤00B
+ ¤ 00B
+ ¤00B
+ ¤ 00B
+ ¤000B
+ ¤ 000B
+ ¤000B
+ ¤ 000B
+ ¤0T
+ ¤ 0T
+ ¤0T
+ ¤ 0T
+ ¤00T
+ ¤ 00T
+ ¤00T
+ ¤ 00T
+ ¤000T
+ ¤ 000T
+ ¤000T
+ ¤ 000T
+
+
+ {0} {1}
+ {0} {1}
+
+
+
+ Andorran Peseta
+ Andorran peseta
+ Andorran pesetas
+
+
+ United Arab Emirates Dirham
+ UAE dirham
+ UAE dirhams
+ AED
+
+
+ Afghan Afghani (1927–2002)
+ Afghan afghani (1927–2002)
+ Afghan afghanis (1927–2002)
+
+
+ Afghan Afghani
+ Afghan Afghani
+ Afghan Afghanis
+ AFN
+
+
+ Albanian Lek (1946–1965)
+ Albanian lek (1946–1965)
+ Albanian lekë (1946–1965)
+
+
+ Albanian Lek
+ Albanian lek
+ Albanian lekë
+ ALL
+
+
+ Armenian Dram
+ Armenian dram
+ Armenian drams
+ AMD
+
+
+ Netherlands Antillean Guilder
+ Netherlands Antillean guilder
+ Netherlands Antillean guilders
+ ANG
+
+
+ Angolan Kwanza
+ Angolan kwanza
+ Angolan kwanzas
+ AOA
+
+
+ Angolan Kwanza (1977–1991)
+ Angolan kwanza (1977–1991)
+ Angolan kwanzas (1977–1991)
+
+
+ Angolan New Kwanza (1990–2000)
+ Angolan new kwanza (1990–2000)
+ Angolan new kwanzas (1990–2000)
+
+
+ Angolan Readjusted Kwanza (1995–1999)
+ Angolan readjusted kwanza (1995–1999)
+ Angolan readjusted kwanzas (1995–1999)
+
+
+ Argentine Austral
+ Argentine austral
+ Argentine australs
+
+
+ Argentine Peso Ley (1970–1983)
+ Argentine peso ley (1970–1983)
+ Argentine pesos ley (1970–1983)
+
+
+ Argentine Peso (1881–1970)
+ Argentine peso (1881–1970)
+ Argentine pesos (1881–1970)
+
+
+ Argentine Peso (1983–1985)
+ Argentine peso (1983–1985)
+ Argentine pesos (1983–1985)
+
+
+ Argentine Peso
+ Argentine peso
+ Argentine pesos
+ ARS
+
+
+ Austrian Schilling
+ Austrian schilling
+ Austrian schillings
+
+
+ Australian Dollar
+ Australian dollar
+ Australian dollars
+ A$
+
+
+ Aruban Florin
+ Aruban florin
+ Aruban florin
+ AWG
+
+
+ Azerbaijani Manat (1993–2006)
+ Azerbaijani manat (1993–2006)
+ Azerbaijani manats (1993–2006)
+
+
+ Azerbaijani Manat
+ Azerbaijani manat
+ Azerbaijani manats
+ AZN
+
+
+ Bosnia-Herzegovina Dinar (1992–1994)
+ Bosnia-Herzegovina dinar (1992–1994)
+ Bosnia-Herzegovina dinars (1992–1994)
+
+
+ Bosnia-Herzegovina Convertible Mark
+ Bosnia-Herzegovina convertible mark
+ Bosnia-Herzegovina convertible marks
+ BAM
+
+
+ Bosnia-Herzegovina New Dinar (1994–1997)
+ Bosnia-Herzegovina new dinar (1994–1997)
+ Bosnia-Herzegovina new dinars (1994–1997)
+
+
+ Barbadian Dollar
+ Barbadian dollar
+ Barbadian dollars
+ BBD
+
+
+ Bangladeshi Taka
+ Bangladeshi taka
+ Bangladeshi takas
+ BDT
+
+
+ Belgian Franc (convertible)
+ Belgian franc (convertible)
+ Belgian francs (convertible)
+
+
+ Belgian Franc
+ Belgian franc
+ Belgian francs
+
+
+ Belgian Franc (financial)
+ Belgian franc (financial)
+ Belgian francs (financial)
+
+
+ Bulgarian Hard Lev
+ Bulgarian hard lev
+ Bulgarian hard leva
+
+
+ Bulgarian Socialist Lev
+ Bulgarian socialist lev
+ Bulgarian socialist leva
+
+
+ Bulgarian Lev
+ Bulgarian lev
+ Bulgarian leva
+ BGN
+
+
+ Bulgarian Lev (1879–1952)
+ Bulgarian lev (1879–1952)
+ Bulgarian leva (1879–1952)
+
+
+ Bahraini Dinar
+ Bahraini dinar
+ Bahraini dinars
+ BHD
+
+
+ Burundian Franc
+ Burundian franc
+ Burundian francs
+ BIF
+
+
+ Bermudan Dollar
+ Bermudan dollar
+ Bermudan dollars
+ BMD
+
+
+ Brunei Dollar
+ Brunei dollar
+ Brunei dollars
+ BND
+
+
+ Bolivian Boliviano
+ Bolivian boliviano
+ Bolivian bolivianos
+ BOB
+
+
+ Bolivian Boliviano (1863–1963)
+ Bolivian boliviano (1863–1963)
+ Bolivian bolivianos (1863–1963)
+
+
+ Bolivian Peso
+ Bolivian peso
+ Bolivian pesos
+
+
+ Bolivian Mvdol
+ Bolivian mvdol
+ Bolivian mvdols
+
+
+ Brazilian New Cruzeiro (1967–1986)
+ Brazilian new cruzeiro (1967–1986)
+ Brazilian new cruzeiros (1967–1986)
+
+
+ Brazilian Cruzado (1986–1989)
+ Brazilian cruzado (1986–1989)
+ Brazilian cruzados (1986–1989)
+
+
+ Brazilian Cruzeiro (1990–1993)
+ Brazilian cruzeiro (1990–1993)
+ Brazilian cruzeiros (1990–1993)
+
+
+ Brazilian Real
+ Brazilian real
+ Brazilian reals
+ R$
+
+
+ Brazilian New Cruzado (1989–1990)
+ Brazilian new cruzado (1989–1990)
+ Brazilian new cruzados (1989–1990)
+
+
+ Brazilian Cruzeiro (1993–1994)
+ Brazilian cruzeiro (1993–1994)
+ Brazilian cruzeiros (1993–1994)
+
+
+ Brazilian Cruzeiro (1942–1967)
+ Brazilian cruzeiro (1942–1967)
+ Brazilian cruzeiros (1942–1967)
+
+
+ Bahamian Dollar
+ Bahamian dollar
+ Bahamian dollars
+ BSD
+
+
+ Bhutanese Ngultrum
+ Bhutanese ngultrum
+ Bhutanese ngultrums
+ BTN
+
+
+ Burmese Kyat
+ Burmese kyat
+ Burmese kyats
+
+
+ Botswanan Pula
+ Botswanan pula
+ Botswanan pulas
+ BWP
+
+
+ Belarusian Ruble (1994–1999)
+ Belarusian ruble (1994–1999)
+ Belarusian rubles (1994–1999)
+
+
+ Belarusian Ruble
+ Belarusian ruble
+ Belarusian rubles
+ BYN
+
+
+ Belarusian Ruble (2000–2016)
+ Belarusian ruble (2000–2016)
+ Belarusian rubles (2000–2016)
+
+
+ Belize Dollar
+ Belize dollar
+ Belize dollars
+ BZD
+
+
+ Canadian Dollar
+ Canadian dollar
+ Canadian dollars
+ CA$
+
+
+ Congolese Franc
+ Congolese franc
+ Congolese francs
+ CDF
+
+
+ WIR Euro
+ WIR euro
+ WIR euros
+
+
+ Swiss Franc
+ Swiss franc
+ Swiss francs
+ CHF
+
+
+ WIR Franc
+ WIR franc
+ WIR francs
+
+
+ Chilean Escudo
+ Chilean escudo
+ Chilean escudos
+
+
+ Chilean Unit of Account (UF)
+ Chilean unit of account (UF)
+ Chilean units of account (UF)
+
+
+ Chilean Peso
+ Chilean peso
+ Chilean pesos
+ CLP
+
+
+ Chinese Yuan (offshore)
+ Chinese yuan (offshore)
+ Chinese yuan (offshore)
+ CNH
+
+
+ Chinese People’s Bank Dollar
+ Chinese People’s Bank dollar
+ Chinese People’s Bank dollars
+
+
+ Chinese Yuan
+ Chinese yuan
+ Chinese yuan
+ CN¥
+
+
+ Colombian Peso
+ Colombian peso
+ Colombian pesos
+ COP
+
+
+ Colombian Real Value Unit
+ Colombian real value unit
+ Colombian real value units
+
+
+ Costa Rican Colón
+ Costa Rican colón
+ Costa Rican colóns
+ CRC
+
+
+ Serbian Dinar (2002–2006)
+ Serbian dinar (2002–2006)
+ Serbian dinars (2002–2006)
+
+
+ Czechoslovak Hard Koruna
+ Czechoslovak hard koruna
+ Czechoslovak hard korunas
+
+
+ Cuban Convertible Peso
+ Cuban convertible peso
+ Cuban convertible pesos
+ CUC
+
+
+ Cuban Peso
+ Cuban peso
+ Cuban pesos
+ CUP
+
+
+ Cape Verdean Escudo
+ Cape Verdean escudo
+ Cape Verdean escudos
+ CVE
+
+
+ Cypriot Pound
+ Cypriot pound
+ Cypriot pounds
+
+
+ Czech Koruna
+ Czech koruna
+ Czech korunas
+ CZK
+
+
+ East German Mark
+ East German mark
+ East German marks
+
+
+ German Mark
+ German mark
+ German marks
+
+
+ Djiboutian Franc
+ Djiboutian franc
+ Djiboutian francs
+ DJF
+
+
+ Danish Krone
+ Danish krone
+ Danish kroner
+ DKK
+
+
+ Dominican Peso
+ Dominican peso
+ Dominican pesos
+ DOP
+
+
+ Algerian Dinar
+ Algerian dinar
+ Algerian dinars
+ DZD
+
+
+ Ecuadorian Sucre
+ Ecuadorian sucre
+ Ecuadorian sucres
+
+
+ Ecuadorian Unit of Constant Value
+ Ecuadorian unit of constant value
+ Ecuadorian units of constant value
+
+
+ Estonian Kroon
+ Estonian kroon
+ Estonian kroons
+
+
+ Egyptian Pound
+ Egyptian pound
+ Egyptian pounds
+ EGP
+
+
+ Eritrean Nakfa
+ Eritrean nakfa
+ Eritrean nakfas
+ ERN
+
+
+ Spanish Peseta (A account)
+ Spanish peseta (A account)
+ Spanish pesetas (A account)
+
+
+ Spanish Peseta (convertible account)
+ Spanish peseta (convertible account)
+ Spanish pesetas (convertible account)
+
+
+ Spanish Peseta
+ Spanish peseta
+ Spanish pesetas
+
+
+ Ethiopian Birr
+ Ethiopian birr
+ Ethiopian birrs
+ ETB
+
+
+ Euro
+ euro
+ euros
+ €
+
+
+ Finnish Markka
+ Finnish markka
+ Finnish markkas
+
+
+ Fijian Dollar
+ Fijian dollar
+ Fijian dollars
+ FJD
+
+
+ Falkland Islands Pound
+ Falkland Islands pound
+ Falkland Islands pounds
+ FKP
+
+
+ French Franc
+ French franc
+ French francs
+
+
+ British Pound
+ British pound
+ British pounds
+ £
+
+
+ Georgian Kupon Larit
+ Georgian kupon larit
+ Georgian kupon larits
+
+
+ Georgian Lari
+ Georgian lari
+ Georgian laris
+ GEL
+
+
+ Ghanaian Cedi (1979–2007)
+ Ghanaian cedi (1979–2007)
+ Ghanaian cedis (1979–2007)
+
+
+ Ghanaian Cedi
+ Ghanaian cedi
+ Ghanaian cedis
+ GHS
+
+
+ Gibraltar Pound
+ Gibraltar pound
+ Gibraltar pounds
+ GIP
+
+
+ Gambian Dalasi
+ Gambian dalasi
+ Gambian dalasis
+ GMD
+
+
+ Guinean Franc
+ Guinean franc
+ Guinean francs
+ GNF
+
+
+ Guinean Syli
+ Guinean syli
+ Guinean sylis
+
+
+ Equatorial Guinean Ekwele
+ Equatorial Guinean ekwele
+ Equatorial Guinean ekwele
+
+
+ Greek Drachma
+ Greek drachma
+ Greek drachmas
+
+
+ Guatemalan Quetzal
+ Guatemalan quetzal
+ Guatemalan quetzals
+ GTQ
+
+
+ Portuguese Guinea Escudo
+ Portuguese Guinea escudo
+ Portuguese Guinea escudos
+
+
+ Guinea-Bissau Peso
+ Guinea-Bissau peso
+ Guinea-Bissau pesos
+
+
+ Guyanaese Dollar
+ Guyanaese dollar
+ Guyanaese dollars
+ GYD
+
+
+ Hong Kong Dollar
+ Hong Kong dollar
+ Hong Kong dollars
+ HK$
+
+
+ Honduran Lempira
+ Honduran lempira
+ Honduran lempiras
+ HNL
+
+
+ Croatian Dinar
+ Croatian dinar
+ Croatian dinars
+
+
+ Croatian Kuna
+ Croatian kuna
+ Croatian kunas
+ HRK
+
+
+ Haitian Gourde
+ Haitian gourde
+ Haitian gourdes
+ HTG
+
+
+ Hungarian Forint
+ Hungarian forint
+ Hungarian forints
+ HUF
+
+
+ Indonesian Rupiah
+ Indonesian rupiah
+ Indonesian rupiahs
+ IDR
+
+
+ Irish Pound
+ Irish pound
+ Irish pounds
+
+
+ Israeli Pound
+ Israeli pound
+ Israeli pounds
+
+
+ Israeli Shekel (1980–1985)
+ Israeli shekel (1980–1985)
+ Israeli shekels (1980–1985)
+
+
+ Israeli New Shekel
+ Israeli new shekel
+ Israeli new shekels
+ ₪
+
+
+ Indian Rupee
+ Indian rupee
+ Indian rupees
+ ₹
+
+
+ Iraqi Dinar
+ Iraqi dinar
+ Iraqi dinars
+ IQD
+
+
+ Iranian Rial
+ Iranian rial
+ Iranian rials
+ IRR
+
+
+ Icelandic Króna (1918–1981)
+ Icelandic króna (1918–1981)
+ Icelandic krónur (1918–1981)
+
+
+ Icelandic Króna
+ Icelandic króna
+ Icelandic krónur
+ ISK
+
+
+ Italian Lira
+ Italian lira
+ Italian liras
+
+
+ Jamaican Dollar
+ Jamaican dollar
+ Jamaican dollars
+ JMD
+
+
+ Jordanian Dinar
+ Jordanian dinar
+ Jordanian dinars
+ JOD
+
+
+ Japanese Yen
+ Japanese yen
+ Japanese yen
+ ¥
+
+
+ Kenyan Shilling
+ Kenyan shilling
+ Kenyan shillings
+ KES
+
+
+ Kyrgyz Som
+ Kyrgyz som
+ Kyrgyz soms
+ KGS
+
+
+ Cambodian Riel
+ Cambodian riel
+ Cambodian riels
+ KHR
+
+
+ Comorian Franc
+ Comorian franc
+ Comorian francs
+ KMF
+
+
+ North Korean Won
+ North Korean won
+ North Korean won
+ KPW
+
+
+ South Korean Hwan (1953–1962)
+ South Korean hwan (1953–1962)
+ South Korean hwan (1953–1962)
+
+
+ South Korean Won (1945–1953)
+ South Korean won (1945–1953)
+ South Korean won (1945–1953)
+
+
+ South Korean Won
+ South Korean won
+ South Korean won
+ ₩
+
+
+ Kuwaiti Dinar
+ Kuwaiti dinar
+ Kuwaiti dinars
+ KWD
+
+
+ Cayman Islands Dollar
+ Cayman Islands dollar
+ Cayman Islands dollars
+ KYD
+
+
+ Kazakhstani Tenge
+ Kazakhstani tenge
+ Kazakhstani tenges
+ KZT
+
+
+ Laotian Kip
+ Laotian kip
+ Laotian kips
+ LAK
+
+
+ Lebanese Pound
+ Lebanese pound
+ Lebanese pounds
+ LBP
+
+
+ Sri Lankan Rupee
+ Sri Lankan rupee
+ Sri Lankan rupees
+ LKR
+
+
+ Liberian Dollar
+ Liberian dollar
+ Liberian dollars
+ LRD
+
+
+ Lesotho Loti
+ Lesotho loti
+ Lesotho lotis
+ LSL
+
+
+ Lithuanian Litas
+ Lithuanian litas
+ Lithuanian litai
+
+
+ Lithuanian Talonas
+ Lithuanian talonas
+ Lithuanian talonases
+
+
+ Luxembourgian Convertible Franc
+ Luxembourgian convertible franc
+ Luxembourgian convertible francs
+
+
+ Luxembourgian Franc
+ Luxembourgian franc
+ Luxembourgian francs
+
+
+ Luxembourg Financial Franc
+ Luxembourg financial franc
+ Luxembourg financial francs
+
+
+ Latvian Lats
+ Latvian lats
+ Latvian lati
+
+
+ Latvian Ruble
+ Latvian ruble
+ Latvian rubles
+
+
+ Libyan Dinar
+ Libyan dinar
+ Libyan dinars
+ LYD
+
+
+ Moroccan Dirham
+ Moroccan dirham
+ Moroccan dirhams
+ MAD
+
+
+ Moroccan Franc
+ Moroccan franc
+ Moroccan francs
+
+
+ Monegasque Franc
+ Monegasque franc
+ Monegasque francs
+
+
+ Moldovan Cupon
+ Moldovan cupon
+ Moldovan cupon
+
+
+ Moldovan Leu
+ Moldovan leu
+ Moldovan lei
+ MDL
+
+
+ Malagasy Ariary
+ Malagasy ariary
+ Malagasy ariaries
+ MGA
+
+
+ Malagasy Franc
+ Malagasy franc
+ Malagasy francs
+
+
+ Macedonian Denar
+ Macedonian denar
+ Macedonian denari
+ MKD
+
+
+ Macedonian Denar (1992–1993)
+ Macedonian denar (1992–1993)
+ Macedonian denari (1992–1993)
+
+
+ Malian Franc
+ Malian franc
+ Malian francs
+
+
+ Myanmar Kyat
+ Myanmar kyat
+ Myanmar kyats
+ MMK
+
+
+ Mongolian Tugrik
+ Mongolian tugrik
+ Mongolian tugriks
+ MNT
+
+
+ Macanese Pataca
+ Macanese pataca
+ Macanese patacas
+ MOP
+
+
+ Mauritanian Ouguiya (1973–2017)
+ Mauritanian ouguiya (1973–2017)
+ Mauritanian ouguiyas (1973–2017)
+
+
+ Mauritanian Ouguiya
+ Mauritanian ouguiya
+ Mauritanian ouguiyas
+ MRU
+
+
+ Maltese Lira
+ Maltese lira
+ Maltese lira
+
+
+ Maltese Pound
+ Maltese pound
+ Maltese pounds
+
+
+ Mauritian Rupee
+ Mauritian rupee
+ Mauritian rupees
+ MUR
+
+
+ Maldivian Rupee (1947–1981)
+ Maldivian rupee (1947–1981)
+ Maldivian rupees (1947–1981)
+
+
+ Maldivian Rufiyaa
+ Maldivian rufiyaa
+ Maldivian rufiyaas
+ MVR
+
+
+ Malawian Kwacha
+ Malawian kwacha
+ Malawian kwachas
+ MWK
+
+
+ Mexican Peso
+ Mexican peso
+ Mexican pesos
+ MX$
+
+
+ Mexican Silver Peso (1861–1992)
+ Mexican silver peso (1861–1992)
+ Mexican silver pesos (1861–1992)
+
+
+ Mexican Investment Unit
+ Mexican investment unit
+ Mexican investment units
+
+
+ Malaysian Ringgit
+ Malaysian ringgit
+ Malaysian ringgits
+ MYR
+
+
+ Mozambican Escudo
+ Mozambican escudo
+ Mozambican escudos
+
+
+ Mozambican Metical (1980–2006)
+ Mozambican metical (1980–2006)
+ Mozambican meticals (1980–2006)
+
+
+ Mozambican Metical
+ Mozambican metical
+ Mozambican meticals
+ MZN
+
+
+ Namibian Dollar
+ Namibian dollar
+ Namibian dollars
+ NAD
+
+
+ Nigerian Naira
+ Nigerian naira
+ Nigerian nairas
+ NGN
+
+
+ Nicaraguan Córdoba (1988–1991)
+ Nicaraguan córdoba (1988–1991)
+ Nicaraguan córdobas (1988–1991)
+
+
+ Nicaraguan Córdoba
+ Nicaraguan córdoba
+ Nicaraguan córdobas
+ NIO
+
+
+ Dutch Guilder
+ Dutch guilder
+ Dutch guilders
+
+
+ Norwegian Krone
+ Norwegian krone
+ Norwegian kroner
+ NOK
+
+
+ Nepalese Rupee
+ Nepalese rupee
+ Nepalese rupees
+ NPR
+
+
+ New Zealand Dollar
+ New Zealand dollar
+ New Zealand dollars
+ NZ$
+
+
+ Omani Rial
+ Omani rial
+ Omani rials
+ OMR
+
+
+ Panamanian Balboa
+ Panamanian balboa
+ Panamanian balboas
+ PAB
+
+
+ Peruvian Inti
+ Peruvian inti
+ Peruvian intis
+
+
+ Peruvian Sol
+ Peruvian sol
+ Peruvian soles
+ PEN
+
+
+ Peruvian Sol (1863–1965)
+ Peruvian sol (1863–1965)
+ Peruvian soles (1863–1965)
+
+
+ Papua New Guinean Kina
+ Papua New Guinean kina
+ Papua New Guinean kina
+ PGK
+
+
+ Philippine Peso
+ Philippine peso
+ Philippine pesos
+ ₱
+
+
+ Pakistani Rupee
+ Pakistani rupee
+ Pakistani rupees
+ PKR
+
+
+ Polish Zloty
+ Polish zloty
+ Polish zlotys
+ PLN
+
+
+ Polish Zloty (1950–1995)
+ Polish zloty (PLZ)
+ Polish zlotys (PLZ)
+
+
+ Portuguese Escudo
+ Portuguese escudo
+ Portuguese escudos
+
+
+ Paraguayan Guarani
+ Paraguayan guarani
+ Paraguayan guaranis
+ PYG
+
+
+ Qatari Riyal
+ Qatari riyal
+ Qatari riyals
+ QAR
+
+
+ Rhodesian Dollar
+ Rhodesian dollar
+ Rhodesian dollars
+
+
+ Romanian Leu (1952–2006)
+ Romanian leu (1952–2006)
+ Romanian Lei (1952–2006)
+
+
+ Romanian Leu
+ Romanian leu
+ Romanian lei
+ RON
+
+
+ Serbian Dinar
+ Serbian dinar
+ Serbian dinars
+ RSD
+
+
+ Russian Ruble
+ Russian ruble
+ Russian rubles
+ RUB
+
+
+ Russian Ruble (1991–1998)
+ Russian ruble (1991–1998)
+ Russian rubles (1991–1998)
+
+
+ Rwandan Franc
+ Rwandan franc
+ Rwandan francs
+ RWF
+
+
+ Saudi Riyal
+ Saudi riyal
+ Saudi riyals
+ SAR
+
+
+ Solomon Islands Dollar
+ Solomon Islands dollar
+ Solomon Islands dollars
+ SBD
+
+
+ Seychellois Rupee
+ Seychellois rupee
+ Seychellois rupees
+ SCR
+
+
+ Sudanese Dinar (1992–2007)
+ Sudanese dinar (1992–2007)
+ Sudanese dinars (1992–2007)
+
+
+ Sudanese Pound
+ Sudanese pound
+ Sudanese pounds
+ SDG
+
+
+ Sudanese Pound (1957–1998)
+ Sudanese pound (1957–1998)
+ Sudanese pounds (1957–1998)
+
+
+ Swedish Krona
+ Swedish krona
+ Swedish kronor
+ SEK
+
+
+ Singapore Dollar
+ Singapore dollar
+ Singapore dollars
+ SGD
+
+
+ St. Helena Pound
+ St. Helena pound
+ St. Helena pounds
+ SHP
+
+
+ Slovenian Tolar
+ Slovenian tolar
+ Slovenian tolars
+
+
+ Slovak Koruna
+ Slovak koruna
+ Slovak korunas
+
+
+ Sierra Leonean Leone
+ Sierra Leonean leone
+ Sierra Leonean leones
+ SLE
+
+
+ Sierra Leonean Leone (1964—2022)
+ Sierra Leonean leone (1964—2022)
+ Sierra Leonean leones (1964—2022)
+ SLL
+
+
+ Somali Shilling
+ Somali shilling
+ Somali shillings
+ SOS
+
+
+ Surinamese Dollar
+ Surinamese dollar
+ Surinamese dollars
+ SRD
+
+
+ Surinamese Guilder
+ Surinamese guilder
+ Surinamese guilders
+
+
+ South Sudanese Pound
+ South Sudanese pound
+ South Sudanese pounds
+ SSP
+
+
+ São Tomé & Príncipe Dobra (1977–2017)
+ São Tomé & Príncipe dobra (1977–2017)
+ São Tomé & Príncipe dobras (1977–2017)
+
+
+ São Tomé & Príncipe Dobra
+ São Tomé & Príncipe dobra
+ São Tomé & Príncipe dobras
+ STN
+
+
+ Soviet Rouble
+ Soviet rouble
+ Soviet roubles
+
+
+ Salvadoran Colón
+ Salvadoran colón
+ Salvadoran colones
+
+
+ Syrian Pound
+ Syrian pound
+ Syrian pounds
+ SYP
+
+
+ Swazi Lilangeni
+ Swazi lilangeni
+ Swazi emalangeni
+ SZL
+
+
+ Thai Baht
+ Thai baht
+ Thai baht
+ THB
+
+
+ Tajikistani Ruble
+ Tajikistani ruble
+ Tajikistani rubles
+
+
+ Tajikistani Somoni
+ Tajikistani somoni
+ Tajikistani somonis
+ TJS
+
+
+ Turkmenistani Manat (1993–2009)
+ Turkmenistani manat (1993–2009)
+ Turkmenistani manat (1993–2009)
+
+
+ Turkmenistani Manat
+ Turkmenistani manat
+ Turkmenistani manat
+ TMT
+
+
+ Tunisian Dinar
+ Tunisian dinar
+ Tunisian dinars
+ TND
+
+
+ Tongan Paʻanga
+ Tongan paʻanga
+ Tongan paʻanga
+ TOP
+
+
+ Timorese Escudo
+ Timorese escudo
+ Timorese escudos
+
+
+ Turkish Lira (1922–2005)
+ Turkish lira (1922–2005)
+ Turkish Lira (1922–2005)
+
+
+ Turkish Lira
+ Turkish lira
+ Turkish Lira
+ TRY
+
+
+ Trinidad & Tobago Dollar
+ Trinidad & Tobago dollar
+ Trinidad & Tobago dollars
+ TTD
+
+
+ New Taiwan Dollar
+ New Taiwan dollar
+ New Taiwan dollars
+ NT$
+
+
+ Tanzanian Shilling
+ Tanzanian shilling
+ Tanzanian shillings
+ TZS
+
+
+ Ukrainian Hryvnia
+ Ukrainian hryvnia
+ Ukrainian hryvnias
+ UAH
+
+
+ Ukrainian Karbovanets
+ Ukrainian karbovanets
+ Ukrainian karbovantsiv
+
+
+ Ugandan Shilling (1966–1987)
+ Ugandan shilling (1966–1987)
+ Ugandan shillings (1966–1987)
+
+
+ Ugandan Shilling
+ Ugandan shilling
+ Ugandan shillings
+ UGX
+
+
+ US Dollar
+ US dollar
+ US dollars
+ $
+
+
+ US Dollar (Next day)
+ US dollar (next day)
+ US dollars (next day)
+
+
+ US Dollar (Same day)
+ US dollar (same day)
+ US dollars (same day)
+
+
+ Uruguayan Peso (Indexed Units)
+ Uruguayan peso (indexed units)
+ Uruguayan pesos (indexed units)
+
+
+ Uruguayan Peso (1975–1993)
+ Uruguayan peso (1975–1993)
+ Uruguayan pesos (1975–1993)
+
+
+ Uruguayan Peso
+ Uruguayan peso
+ Uruguayan pesos
+ UYU
+
+
+ Uruguayan Nominal Wage Index Unit
+ Uruguayan nominal wage index unit
+ Uruguayan nominal wage index units
+
+
+ Uzbekistani Som
+ Uzbekistani som
+ Uzbekistani som
+ UZS
+
+
+ Venezuelan Bolívar (1871–2008)
+ Venezuelan bolívar (1871–2008)
+ Venezuelan bolívars (1871–2008)
+
+
+ Bolívar Soberano
+ Bolívar Soberano
+ Bolívar Soberanos
+
+
+ Venezuelan Bolívar (2008–2018)
+ Venezuelan bolívar (2008–2018)
+ Venezuelan bolívars (2008–2018)
+
+
+ Venezuelan Bolívar
+ Venezuelan bolívar
+ Venezuelan bolívars
+ VES
+
+
+ Vietnamese Dong
+ Vietnamese dong
+ Vietnamese dong
+ ₫
+
+
+ Vietnamese Dong (1978–1985)
+ Vietnamese dong (1978–1985)
+ Vietnamese dong (1978–1985)
+
+
+ Vanuatu Vatu
+ Vanuatu vatu
+ Vanuatu vatus
+ VUV
+
+
+ Samoan Tala
+ Samoan tala
+ Samoan tala
+ WST
+
+
+ Central African CFA Franc
+ Central African CFA franc
+ Central African CFA francs
+ FCFA
+
+
+ Silver
+ troy ounce of silver
+ troy ounces of silver
+
+
+ Gold
+ troy ounce of gold
+ troy ounces of gold
+
+
+ European Composite Unit
+ European composite unit
+ European composite units
+
+
+ European Monetary Unit
+ European monetary unit
+ European monetary units
+
+
+ European Unit of Account (XBC)
+ European unit of account (XBC)
+ European units of account (XBC)
+
+
+ European Unit of Account (XBD)
+ European unit of account (XBD)
+ European units of account (XBD)
+
+
+ East Caribbean Dollar
+ East Caribbean dollar
+ East Caribbean dollars
+ EC$
+
+
+ Caribbean guilder
+ Caribbean guilder
+ Caribbean guilders
+
+
+ Special Drawing Rights
+ special drawing rights
+ special drawing rights
+
+
+ European Currency Unit
+ European currency unit
+ European currency units
+
+
+ French Gold Franc
+ French gold franc
+ French gold francs
+
+
+ French UIC-Franc
+ French UIC-franc
+ French UIC-francs
+
+
+ West African CFA Franc
+ West African CFA franc
+ West African CFA francs
+ F CFA
+
+
+ Palladium
+ troy ounce of palladium
+ troy ounces of palladium
+
+
+ CFP Franc
+ CFP franc
+ CFP francs
+ CFPF
+
+
+ Platinum
+ troy ounce of platinum
+ troy ounces of platinum
+
+
+ RINET Funds
+ RINET Funds unit
+ RINET Funds units
+
+
+ Sucre
+ Sucre
+ Sucres
+
+
+ Testing Currency Code
+ Testing Currency unit
+ Testing Currency units
+
+
+ ADB Unit of Account
+ ADB unit of account
+ ADB units of account
+
+
+ Unknown Currency
+ (unknown unit of currency)
+ (unknown currency)
+
+
+ Yemeni Dinar
+ Yemeni dinar
+ Yemeni dinars
+
+
+ Yemeni Rial
+ Yemeni rial
+ Yemeni rials
+ YER
+
+
+ Yugoslavian Hard Dinar (1966–1990)
+ Yugoslavian hard dinar (1966–1990)
+ Yugoslavian hard dinars (1966–1990)
+
+
+ Yugoslavian New Dinar (1994–2002)
+ Yugoslavian new dinar (1994–2002)
+ Yugoslavian new dinars (1994–2002)
+
+
+ Yugoslavian Convertible Dinar (1990–1992)
+ Yugoslavian convertible dinar (1990–1992)
+ Yugoslavian convertible dinars (1990–1992)
+
+
+ Yugoslavian Reformed Dinar (1992–1993)
+ Yugoslavian reformed dinar (1992–1993)
+ Yugoslavian reformed dinars (1992–1993)
+
+
+ South African Rand (financial)
+ South African rand (financial)
+ South African rands (financial)
+
+
+ South African Rand
+ South African rand
+ South African rand
+ ZAR
+
+
+ Zambian Kwacha (1968–2012)
+ Zambian kwacha (1968–2012)
+ Zambian kwachas (1968–2012)
+
+
+ Zambian Kwacha
+ Zambian kwacha
+ Zambian kwachas
+ ZMW
+
+
+ Zairean New Zaire (1993–1998)
+ Zairean new zaire (1993–1998)
+ Zairean new zaires (1993–1998)
+
+
+ Zairean Zaire (1971–1993)
+ Zairean zaire (1971–1993)
+ Zairean zaires (1971–1993)
+
+
+ Zimbabwean Dollar (1980–2008)
+ Zimbabwean dollar (1980–2008)
+ Zimbabwean dollars (1980–2008)
+
+
+ Zimbabwean Gold
+ Zimbabwean gold
+ Zimbabwean gold
+ ZWG
+
+
+ Zimbabwean Dollar (2009–2024)
+ Zimbabwean dollar (2009–2024)
+ Zimbabwean dollars (2009–2024)
+
+
+ Zimbabwean Dollar (2008)
+ Zimbabwean dollar (2008)
+ Zimbabwean dollars (2008)
+
+
+
+ {0}+
+
+
+ {0} day
+ {0} days
+ Take the {0}rd right.
+ Take the {0}st right.
+ Take the {0}th right.
+ Take the {0}nd right.
+
+
+
+
+
+ deci{0}
+
+
+ centi{0}
+
+
+ milli{0}
+
+
+ micro{0}
+
+
+ nano{0}
+
+
+ pico{0}
+
+
+ femto{0}
+
+
+ atto{0}
+
+
+ zepto{0}
+
+
+ yocto{0}
+
+
+ ronto{0}
+
+
+ quecto{0}
+
+
+ deka{0}
+
+
+ hecto{0}
+
+
+ kilo{0}
+
+
+ mega{0}
+
+
+ giga{0}
+
+
+ tera{0}
+
+
+ peta{0}
+
+
+ exa{0}
+
+
+ zetta{0}
+
+
+ yotta{0}
+
+
+ ronna{0}
+
+
+ quetta{0}
+
+
+ kibi{0}
+
+
+ mebi{0}
+
+
+ gibi{0}
+
+
+ tebi{0}
+
+
+ pebi{0}
+
+
+ exbi{0}
+
+
+ zebi{0}
+
+
+ yobi{0}
+
+
+ {0} per {1}
+
+
+ square {0}
+ square {0}
+ square {0}
+
+
+ cubic {0}
+ cubic {0}
+ cubic {0}
+
+
+ {0}-{1}
+
+
+ g-force
+ {0} g-force
+ {0} g-force
+
+
+ meters per second squared
+ {0} meter per second squared
+ {0} meters per second squared
+
+
+ revolutions
+ {0} revolution
+ {0} revolutions
+
+
+ radians
+ {0} radian
+ {0} radians
+
+
+ degrees
+ {0} degree
+ {0} degrees
+
+
+ arcminutes
+ {0} arcminute
+ {0} arcminutes
+
+
+ arcseconds
+ {0} arcsecond
+ {0} arcseconds
+
+
+ square kilometers
+ {0} square kilometer
+ {0} square kilometers
+ {0} per square kilometer
+
+
+ hectares
+ {0} hectare
+ {0} hectares
+
+
+ square meters
+ {0} square meter
+ {0} square meters
+ {0} per square meter
+
+
+ square centimeters
+ {0} square centimeter
+ {0} square centimeters
+ {0} per square centimeter
+
+
+ square miles
+ {0} square mile
+ {0} square miles
+ {0} per square mile
+
+
+ acres
+ {0} acre
+ {0} acres
+
+
+ square yards
+ {0} square yard
+ {0} square yards
+
+
+ square feet
+ {0} square foot
+ {0} square feet
+
+
+ square inches
+ {0} square inch
+ {0} square inches
+ {0} per square inch
+
+
+ dunams
+ {0} dunam
+ {0} dunams
+
+
+ karats
+ {0} karat
+ {0} karats
+
+
+ milligrams per deciliter
+ {0} milligram per deciliter
+ {0} milligrams per deciliter
+
+
+ millimoles per liter
+ {0} millimole per liter
+ {0} millimoles per liter
+
+
+ items
+ {0} item
+ {0} items
+
+
+ parts
+ {0} part
+ {0} parts
+
+
+ parts per million
+ {0} part per million
+ {0} parts per million
+
+
+ percent
+ {0} percent
+ {0} percent
+
+
+ permille
+ {0} permille
+ {0} permille
+
+
+ permyriad
+ {0} permyriad
+ {0} permyriad
+
+
+ moles
+ {0} mole
+ {0} moles
+
+
+ of glucose
+ {0} of glucose
+ {0} of glucose
+
+
+ liters per kilometer
+ {0} liter per kilometer
+ {0} liters per kilometer
+
+
+ liters per 100 kilometers
+ {0} liter per 100 kilometers
+ {0} liters per 100 kilometers
+
+
+ miles per gallon
+ {0} mile per gallon
+ {0} miles per gallon
+
+
+ miles per Imp. gallon
+ {0} mile per Imp. gallon
+ {0} miles per Imp. gallon
+
+
+ petabytes
+ {0} petabyte
+ {0} petabytes
+
+
+ terabytes
+ {0} terabyte
+ {0} terabytes
+
+
+ terabits
+ {0} terabit
+ {0} terabits
+
+
+ gigabytes
+ {0} gigabyte
+ {0} gigabytes
+
+
+ gigabits
+ {0} gigabit
+ {0} gigabits
+
+
+ megabytes
+ {0} megabyte
+ {0} megabytes
+
+
+ megabits
+ {0} megabit
+ {0} megabits
+
+
+ kilobytes
+ {0} kilobyte
+ {0} kilobytes
+
+
+ kilobits
+ {0} kilobit
+ {0} kilobits
+
+
+ bytes
+ {0} byte
+ {0} bytes
+
+
+ bits
+ {0} bit
+ {0} bits
+
+
+ centuries
+ {0} century
+ {0} centuries
+
+
+ decades
+ {0} decade
+ {0} decades
+
+
+ years
+ {0} year
+ {0} years
+ {0} per year
+
+
+ quarters
+ {0} quarter
+ {0} quarters
+ {0}/q
+
+
+ months
+ {0} month
+ {0} months
+ {0} per month
+
+
+ weeks
+ {0} week
+ {0} weeks
+ {0} per week
+
+
+ days
+ {0} day
+ {0} days
+ {0} per day
+
+
+ hours
+ {0} hour
+ {0} hours
+ {0} per hour
+
+
+ minutes
+ {0} minute
+ {0} minutes
+ {0} per minute
+
+
+ seconds
+ {0} second
+ {0} seconds
+ {0} per second
+
+
+ milliseconds
+ {0} millisecond
+ {0} milliseconds
+
+
+ microseconds
+ {0} microsecond
+ {0} microseconds
+
+
+ nanoseconds
+ {0} nanosecond
+ {0} nanoseconds
+
+
+ amperes
+ {0} ampere
+ {0} amperes
+
+
+ milliamperes
+ {0} milliampere
+ {0} milliamperes
+
+
+ ohms
+ {0} ohm
+ {0} ohms
+
+
+ volts
+ {0} volt
+ {0} volts
+
+
+ kilocalories
+ {0} kilocalorie
+ {0} kilocalories
+
+
+ calories
+ {0} calorie
+ {0} calories
+
+
+ Calories
+ {0} Calorie
+ {0} Calories
+
+
+ kilojoules
+ {0} kilojoule
+ {0} kilojoules
+
+
+ joules
+ {0} joule
+ {0} joules
+
+
+ kilowatt-hours
+ {0} kilowatt hour
+ {0} kilowatt-hours
+
+
+ electronvolts
+ {0} electronvolt
+ {0} electronvolts
+
+
+ British thermal units
+ {0} British thermal unit
+ {0} British thermal units
+
+
+ US therms
+ {0} US therm
+ {0} US therms
+
+
+ pounds of force
+ {0} pound of force
+ {0} pounds of force
+
+
+ newtons
+ {0} newton
+ {0} newtons
+
+
+ kilowatt-hours per 100 kilometers
+ {0} kilowatt-hour per 100 kilometers
+ {0} kilowatt-hours per 100 kilometers
+
+
+ gigahertz
+ {0} gigahertz
+ {0} gigahertz
+
+
+ megahertz
+ {0} megahertz
+ {0} megahertz
+
+
+ kilohertz
+ {0} kilohertz
+ {0} kilohertz
+
+
+ hertz
+ {0} hertz
+ {0} hertz
+
+
+ typographic ems
+ {0} em
+ {0} ems
+
+
+ pixels
+ {0} pixel
+ {0} pixels
+
+
+ megapixels
+ {0} megapixel
+ {0} megapixels
+
+
+ pixels per centimeter
+ {0} pixel per centimeter
+ {0} pixels per centimeter
+
+
+ pixels per inch
+ {0} pixel per inch
+ {0} pixels per inch
+
+
+ dots per centimeter
+ {0} dot per centimeter
+ {0} dots per centimeter
+
+
+ dots per inch
+ {0} dot per inch
+ {0} dots per inch
+
+
+ dots
+ {0} dot
+ {0} dots
+
+
+ earth radius
+ {0} earth radius
+ {0} earth radius
+
+
+ kilometers
+ {0} kilometer
+ {0} kilometers
+ {0} per kilometer
+
+
+ meters
+ {0} meter
+ {0} meters
+ {0} per meter
+
+
+ decimeters
+ {0} decimeter
+ {0} decimeters
+
+
+ centimeters
+ {0} centimeter
+ {0} centimeters
+ {0} per centimeter
+
+
+ millimeters
+ {0} millimeter
+ {0} millimeters
+
+
+ micrometers
+ {0} micrometer
+ {0} micrometers
+
+
+ nanometers
+ {0} nanometer
+ {0} nanometers
+
+
+ picometers
+ {0} picometer
+ {0} picometers
+
+
+ miles
+ {0} mile
+ {0} miles
+
+
+ yards
+ {0} yard
+ {0} yards
+
+
+ feet
+ {0} foot
+ {0} feet
+ {0} per foot
+
+
+ inches
+ {0} inch
+ {0} inches
+ {0} per inch
+
+
+ parsecs
+ {0} parsec
+ {0} parsecs
+
+
+ light years
+ {0} light year
+ {0} light years
+
+
+ astronomical units
+ {0} astronomical unit
+ {0} astronomical units
+
+
+ furlongs
+ {0} furlong
+ {0} furlongs
+
+
+ fathoms
+ {0} fathom
+ {0} fathoms
+
+
+ nautical miles
+ {0} nautical mile
+ {0} nautical miles
+
+
+ miles-scandinavian
+ {0} mile-scandinavian
+ {0} miles-scandinavian
+
+
+ points
+ {0} point
+ {0} points
+
+
+ solar radii
+ {0} solar radius
+ {0} solar radii
+
+
+ lux
+ {0} lux
+ {0} lux
+
+
+ candela
+ {0} candela
+ {0} candela
+
+
+ lumen
+ {0} lumen
+ {0} lumen
+
+
+ solar luminosities
+ {0} solar luminosity
+ {0} solar luminosities
+
+
+ metric tons
+ {0} metric ton
+ {0} metric tons
+
+
+ kilograms
+ {0} kilogram
+ {0} kilograms
+ {0} per kilogram
+
+
+ grams
+ {0} gram
+ {0} grams
+ {0} per gram
+
+
+ milligrams
+ {0} milligram
+ {0} milligrams
+
+
+ micrograms
+ {0} microgram
+ {0} micrograms
+
+
+ tons
+ {0} ton
+ {0} tons
+
+
+ stones
+ {0} stone
+ {0} stones
+
+
+ pounds
+ {0} pound
+ {0} pounds
+ {0} per pound
+
+
+ ounces
+ {0} ounce
+ {0} ounces
+ {0} per ounce
+
+
+ troy ounces
+ {0} troy ounce
+ {0} troy ounces
+
+
+ carats
+ {0} carat
+ {0} carats
+
+
+ daltons
+ {0} dalton
+ {0} daltons
+
+
+ Earth masses
+ {0} Earth mass
+ {0} Earth masses
+
+
+ solar masses
+ {0} solar mass
+ {0} solar masses
+
+
+ grains
+ {0} grain
+ {0} grains
+
+
+ gigawatts
+ {0} gigawatt
+ {0} gigawatts
+
+
+ megawatts
+ {0} megawatt
+ {0} megawatts
+
+
+ kilowatts
+ {0} kilowatt
+ {0} kilowatts
+
+
+ watts
+ {0} watt
+ {0} watts
+
+
+ milliwatts
+ {0} milliwatt
+ {0} milliwatts
+
+
+ horsepower
+ {0} horsepower
+ {0} horsepower
+
+
+ millimeters of mercury
+ {0} millimeter of mercury
+ {0} millimeters of mercury
+
+
+ of mercury
+ {0} of mercury
+ {0} of mercury
+
+
+ pounds-force per square inch
+ {0} pound-force per square inch
+ {0} pounds-force per square inch
+
+
+ inches of mercury
+ {0} inch of mercury
+ {0} inches of mercury
+
+
+ bars
+ {0} bar
+ {0} bars
+
+
+ millibars
+ {0} millibar
+ {0} millibars
+
+
+ atmospheres
+ {0} atmosphere
+ {0} atmospheres
+
+
+ pascals
+ {0} pascal
+ {0} pascals
+
+
+ hectopascals
+ {0} hectopascal
+ {0} hectopascals
+
+
+ kilopascals
+ {0} kilopascal
+ {0} kilopascals
+
+
+ megapascals
+ {0} megapascal
+ {0} megapascals
+
+
+ kilometers per hour
+ {0} kilometer per hour
+ {0} kilometers per hour
+
+
+ meters per second
+ {0} meter per second
+ {0} meters per second
+
+
+ miles per hour
+ {0} mile per hour
+ {0} miles per hour
+
+
+ knots
+ {0} knot
+ {0} knots
+
+
+ Beaufort
+ Beaufort {0}
+ Beaufort {0}
+
+
+ degrees temperature
+ {0} degree temperature
+ {0} degrees temperature
+
+
+ degrees Celsius
+ {0} degree Celsius
+ {0} degrees Celsius
+
+
+ degrees Fahrenheit
+ {0} degree Fahrenheit
+ {0} degrees Fahrenheit
+
+
+ kelvins
+ {0} kelvin
+ {0} kelvins
+
+
+ pound-force-feet
+ {0} pound-force-foot
+ {0} pound-force-feet
+
+
+ newton-meters
+ {0} newton-meter
+ {0} newton-meters
+
+
+ cubic kilometers
+ {0} cubic kilometer
+ {0} cubic kilometers
+
+
+ cubic meters
+ {0} cubic meter
+ {0} cubic meters
+ {0} per cubic meter
+
+
+ cubic centimeters
+ {0} cubic centimeter
+ {0} cubic centimeters
+ {0} per cubic centimeter
+
+
+ cubic miles
+ {0} cubic mile
+ {0} cubic miles
+
+
+ cubic yards
+ {0} cubic yard
+ {0} cubic yards
+
+
+ cubic feet
+ {0} cubic foot
+ {0} cubic feet
+
+
+ cubic inches
+ {0} cubic inch
+ {0} cubic inches
+
+
+ megaliters
+ {0} megaliter
+ {0} megaliters
+
+
+ hectoliters
+ {0} hectoliter
+ {0} hectoliters
+
+
+ liters
+ {0} liter
+ {0} liters
+ {0} per liter
+
+
+ deciliters
+ {0} deciliter
+ {0} deciliters
+
+
+ centiliters
+ {0} centiliter
+ {0} centiliters
+
+
+ milliliters
+ {0} milliliter
+ {0} milliliters
+
+
+ metric pints
+ {0} metric pint
+ {0} metric pints
+
+
+ metric cups
+ {0} metric cup
+ {0} metric cups
+
+
+ metric fluid ounces
+ {0} metric fluid ounce
+ {0} metric fluid ounces
+
+
+ acre-feet
+ {0} acre-foot
+ {0} acre-feet
+
+
+ bushels
+ {0} bushel
+ {0} bushels
+
+
+ gallons
+ {0} gallon
+ {0} gallons
+ {0} per gallon
+
+
+ Imp. gallons
+ {0} Imp. gallon
+ {0} Imp. gallons
+ {0} per Imp. gallon
+
+
+ quarts
+ {0} quart
+ {0} quarts
+
+
+ pints
+ {0} pint
+ {0} pints
+
+
+ pints Imperial
+ {0} pint Imperial
+ {0} pints Imperial
+
+
+ cups
+ {0} cup
+ {0} cups
+
+
+ cups Imperial
+ {0} cup Imperial
+ {0} cups Imperial
+
+
+ fluid ounces
+ {0} fluid ounce
+ {0} fluid ounces
+
+
+ Imp. fluid ounces
+ {0} Imp. fluid ounce
+ {0} Imp. fluid ounces
+
+
+ tablespoons
+ {0} tablespoon
+ {0} tablespoons
+
+
+ teaspoons
+ {0} teaspoon
+ {0} teaspoons
+
+
+ barrels
+ {0} barrel
+ {0} barrels
+
+
+ dessert spoons
+ {0} dessert spoon
+ {0} dessert spoons
+
+
+ Imp. dessert spoons
+ {0} Imp. dessert spoon
+ {0} Imp. dessert spoons
+
+
+ drops
+ {0} drop
+ {0} drops
+
+
+ drams
+ {0} dram
+ {0} drams
+
+
+ jiggers
+ {0} jigger
+ {0} jiggers
+
+
+ pinches
+ {0} pinch
+ {0} pinches
+
+
+ Imp. quarts
+ {0} Imp. quart
+ {0} Imp. quarts
+
+
+ steradians
+ {0} steradian
+ {0} steradians
+
+
+ katals
+ {0} katal
+ {0} katals
+
+
+ coulombs
+ {0} coulomb
+ {0} coulombs
+
+
+ farads
+ {0} farad
+ {0} farads
+
+
+ henrys
+ {0} henry
+ {0} henrys
+
+
+ siemens
+ {0} siemens
+ {0} siemens
+
+
+ calories [IT]
+ {0} calorie [IT]
+ {0} calories [IT]
+
+
+ British thermal units [IT]
+ {0} British thermal unit [IT]
+ {0} British thermal units [IT]
+
+
+ becquerels
+ {0} becquerel
+ {0} becquerels
+
+
+ sieverts
+ {0} sievert
+ {0} sieverts
+
+
+ grays
+ {0} gray
+ {0} grays
+
+
+ kilograms-force
+ {0} kilogram-force
+ {0} kilograms-force
+
+
+ rods
+ {0} rod
+ {0} rods
+
+
+ chains
+ {0} chain
+ {0} chains
+
+
+ teslas
+ {0} tesla
+ {0} teslas
+
+
+ webers
+ {0} weber
+ {0} webers
+
+
+ rankines
+ {0} rankine
+ {0} rankines
+
+
+ fortnights
+ {0} fortnight
+ {0} fortnights
+
+
+ slugs
+ {0} slug
+ {0} slugs
+
+
+ of gasoline equivalent
+ {0} of gasoline equivalent
+ {0} of gasoline equivalent
+
+
+ rin [JP]
+ {0} rin [JP]
+ {0} rin [JP]
+
+
+ sun [JP]
+ {0} sun [JP]
+ {0} sun [JP]
+
+
+ shaku [JP]
+ {0} shaku [JP]
+ {0} shaku [JP]
+
+
+ shaku [cloth, JP]
+ {0} shaku [cloth, JP]
+ {0} shaku [cloth, JP]
+
+
+ ken [JP]
+ {0} ken [JP]
+ {0} ken [JP]
+
+
+ jo [JP]
+ {0} jo [JP]
+ {0} jo [JP]
+
+
+ ri [JP]
+ {0} ri [JP]
+ {0} ri [JP]
+
+
+ bu [JP]
+ {0} bu [JP]
+ {0} bu [JP]
+
+
+ se [JP]
+ {0} se [JP]
+ {0} se [JP]
+
+
+ cho [JP]
+ {0} cho [JP]
+ {0} cho [JP]
+
+
+ kosaji [JP]
+ {0} kosaji [JP]
+ {0} kosaji [JP]
+
+
+ osaji [JP]
+ {0} osaji [JP]
+ {0} osaji [JP]
+
+
+ cup [JP]
+ {0} cup [JP]
+ {0} cup [JP]
+
+
+ shaku [volume, JP]
+ {0} shaku [volume, JP]
+ {0} shaku [volume, JP]
+
+
+ sai [JP]
+ {0} sai [JP]
+ {0} sai [JP]
+
+
+ to [JP]
+ {0} to [JP]
+ {0} to [JP]
+
+
+ koku [JP]
+ {0} koku [JP]
+ {0} koku [JP]
+
+
+ light
+ {0} light
+ {0} light
+
+
+ fun [JP]
+ {0} fun [JP]
+ {0} fun [JP]
+
+
+ parts per billion
+ {0} part per billion
+ {0} parts per billion
+
+
+ nights
+ {0} night
+ {0} nights
+ {0} per night
+
+
+ cardinal direction
+ {0} east
+ {0} north
+ {0} south
+ {0} west
+
+
+
+
+ d{0}
+
+
+ c{0}
+
+
+ m{0}
+
+
+ μ{0}
+
+
+ n{0}
+
+
+ p{0}
+
+
+ f{0}
+
+
+ a{0}
+
+
+ z{0}
+
+
+ y{0}
+
+
+ r{0}
+
+
+ q{0}
+
+
+ da{0}
+
+
+ h{0}
+
+
+ k{0}
+
+
+ M{0}
+
+
+ G{0}
+
+
+ T{0}
+
+
+ P{0}
+
+
+ E{0}
+
+
+ Z{0}
+
+
+ Y{0}
+
+
+ R{0}
+
+
+ Q{0}
+
+
+ Ki{0}
+
+
+ Mi{0}
+
+
+ Gi{0}
+
+
+ Ti{0}
+
+
+ Pi{0}
+
+
+ Ei{0}
+
+
+ Zi{0}
+
+
+ Yi{0}
+
+
+ {0}/{1}
+
+
+ {0}²
+ {0}²
+ {0}²
+
+
+ {0}³
+ {0}³
+ {0}³
+
+
+ {0}⋅{1}
+
+
+ g-force
+ {0} G
+ {0} G
+
+
+ meters/sec²
+ {0} m/s²
+ {0} m/s²
+
+
+ rev
+ {0} rev
+ {0} rev
+
+
+ radians
+ {0} rad
+ {0} rad
+
+
+ degrees
+ {0} deg
+ {0} deg
+
+
+ arcmins
+ {0} arcmin
+ {0} arcmins
+
+
+ arcsecs
+ {0} arcsec
+ {0} arcsecs
+
+
+ km²
+ {0} km²
+ {0} km²
+ {0}/km²
+
+
+ hectares
+ {0} ha
+ {0} ha
+
+
+ meters²
+ {0} m²
+ {0} m²
+ {0}/m²
+
+
+ cm²
+ {0} cm²
+ {0} cm²
+ {0}/cm²
+
+
+ sq miles
+ {0} sq mi
+ {0} sq mi
+ {0}/mi²
+
+
+ acres
+ {0} ac
+ {0} ac
+
+
+ yards²
+ {0} yd²
+ {0} yd²
+
+
+ sq feet
+ {0} sq ft
+ {0} sq ft
+
+
+ inches²
+ {0} in²
+ {0} in²
+ {0}/in²
+
+
+ dunams
+ {0} dunam
+ {0} dunam
+
+
+ karats
+ {0} kt
+ {0} kt
+
+
+ mg/dL
+ {0} mg/dL
+ {0} mg/dL
+
+
+ millimol/liter
+ {0} mmol/L
+ {0} mmol/L
+
+
+ item
+ {0} item
+ {0} items
+
+
+ part
+ {0} part
+ {0} part
+
+
+ parts/million
+ {0} ppm
+ {0} ppm
+
+
+ percent
+ {0}%
+ {0}%
+
+
+ permille
+ {0}‰
+ {0}‰
+
+
+ permyriad
+ {0}‱
+ {0}‱
+
+
+ mole
+ {0} mol
+ {0} mol
+
+
+ Glc
+ {0} Glc
+ {0} Glc
+
+
+ liters/km
+ {0} L/km
+ {0} L/km
+
+
+ L/100 km
+ {0} L/100 km
+ {0} L/100 km
+
+
+ miles/gal
+ {0} mpg
+ {0} mpg
+
+
+ miles/gal Imp.
+ {0} mpg Imp.
+ {0} mpg Imp.
+
+
+ PByte
+ {0} PB
+ {0} PB
+
+
+ TByte
+ {0} TB
+ {0} TB
+
+
+ Tbit
+ {0} Tb
+ {0} Tb
+
+
+ GByte
+ {0} GB
+ {0} GB
+
+
+ Gbit
+ {0} Gb
+ {0} Gb
+
+
+ MByte
+ {0} MB
+ {0} MB
+
+
+ Mbit
+ {0} Mb
+ {0} Mb
+
+
+ kByte
+ {0} kB
+ {0} kB
+
+
+ kbit
+ {0} kb
+ {0} kb
+
+
+ byte
+ {0} byte
+ {0} byte
+
+
+ bit
+ {0} bit
+ {0} bit
+
+
+ c
+ {0} c
+ {0} c
+
+
+ dec
+ {0} dec
+ {0} dec
+
+
+ years
+ {0} yr
+ {0} yrs
+ {0}/y
+
+
+ qtr
+ {0} qtr
+ {0} qtrs
+ {0}/q
+
+
+ months
+ {0} mth
+ {0} mths
+ {0}/m
+
+
+ weeks
+ {0} wk
+ {0} wks
+ {0}/w
+
+
+ days
+ {0} day
+ {0} days
+ {0}/d
+
+
+ hours
+ {0} hr
+ {0} hr
+ {0}/h
+
+
+ mins
+ {0} min
+ {0} min
+ {0}/min
+
+
+ secs
+ {0} sec
+ {0} sec
+ {0}/s
+
+
+ millisecs
+ {0} ms
+ {0} ms
+
+
+ μsecs
+ {0} μs
+ {0} μs
+
+
+ nanosecs
+ {0} ns
+ {0} ns
+
+
+ amps
+ {0} A
+ {0} A
+
+
+ milliamps
+ {0} mA
+ {0} mA
+
+
+ ohms
+ {0} Ω
+ {0} Ω
+
+
+ volts
+ {0} V
+ {0} V
+
+
+ kcal
+ {0} kcal
+ {0} kcal
+
+
+ cal
+ {0} cal
+ {0} cal
+
+
+ Cal
+ {0} Cal
+ {0} Cal
+
+
+ kilojoule
+ {0} kJ
+ {0} kJ
+
+
+ joules
+ {0} J
+ {0} J
+
+
+ kW-hour
+ {0} kWh
+ {0} kWh
+
+
+ electronvolt
+ {0} eV
+ {0} eV
+
+
+ BTU
+ {0} Btu
+ {0} Btu
+
+
+ US therm
+ {0} US therm
+ {0} US therms
+
+
+ pound-force
+ {0} lbf
+ {0} lbf
+
+
+ newton
+ {0} N
+ {0} N
+
+
+ kWh/100km
+ {0} kWh/100km
+ {0} kWh/100km
+
+
+ GHz
+ {0} GHz
+ {0} GHz
+
+
+ MHz
+ {0} MHz
+ {0} MHz
+
+
+ kHz
+ {0} kHz
+ {0} kHz
+
+
+ Hz
+ {0} Hz
+ {0} Hz
+
+
+ em
+ {0} em
+ {0} em
+
+
+ pixels
+ {0} px
+ {0} px
+
+
+ megapixels
+ {0} MP
+ {0} MP
+
+
+ ppcm
+ {0} ppcm
+ {0} ppcm
+
+
+ ppi
+ {0} ppi
+ {0} ppi
+
+
+ dpcm
+ {0} dpcm
+ {0} dpcm
+
+
+ dpi
+ {0} dpi
+ {0} dpi
+
+
+ dots
+ {0} dot
+ {0} dots
+
+
+ earth radius
+ {0} R⊕
+ {0} R⊕
+
+
+ km
+ {0} km
+ {0} km
+ {0}/km
+
+
+ m
+ {0} m
+ {0} m
+ {0}/m
+
+
+ dm
+ {0} dm
+ {0} dm
+
+
+ cm
+ {0} cm
+ {0} cm
+ {0}/cm
+
+
+ mm
+ {0} mm
+ {0} mm
+
+
+ μmeters
+ {0} μm
+ {0} μm
+
+
+ nm
+ {0} nm
+ {0} nm
+
+
+ pm
+ {0} pm
+ {0} pm
+
+
+ miles
+ {0} mi
+ {0} mi
+
+
+ yards
+ {0} yd
+ {0} yd
+
+
+ feet
+ {0} ft
+ {0} ft
+ {0}/ft
+
+
+ inches
+ {0} in
+ {0} in
+ {0}/in
+
+
+ parsecs
+ {0} pc
+ {0} pc
+
+
+ light yrs
+ {0} ly
+ {0} ly
+
+
+ au
+ {0} au
+ {0} au
+
+
+ furlongs
+ {0} fur
+ {0} fur
+
+
+ fathoms
+ {0} fth
+ {0} fth
+
+
+ nmi
+ {0} nmi
+ {0} nmi
+
+
+ smi
+ {0} smi
+ {0} smi
+
+
+ points
+ {0} pt
+ {0} pt
+
+
+ solar radii
+ {0} R☉
+ {0} R☉
+
+
+ lux
+ {0} lx
+ {0} lx
+
+
+ candela
+ {0} cd
+ {0} cd
+
+
+ lumen
+ {0} lm
+ {0} lm
+
+
+ solar luminosities
+ {0} L☉
+ {0} L☉
+
+
+ t
+ {0} t
+ {0} t
+
+
+ kg
+ {0} kg
+ {0} kg
+ {0}/kg
+
+
+ grams
+ {0} g
+ {0} g
+ {0}/g
+
+
+ mg
+ {0} mg
+ {0} mg
+
+
+ μg
+ {0} μg
+ {0} μg
+
+
+ tons
+ {0} tn
+ {0} tn
+
+
+ stones
+ {0} st
+ {0} st
+
+
+ pounds
+ {0} lb
+ {0} lb
+ {0}/lb
+
+
+ oz
+ {0} oz
+ {0} oz
+ {0}/oz
+
+
+ oz troy
+ {0} oz t
+ {0} oz t
+
+
+ carats
+ {0} CD
+ {0} CD
+
+
+ daltons
+ {0} Da
+ {0} Da
+
+
+ Earth masses
+ {0} M⊕
+ {0} M⊕
+
+
+ solar masses
+ {0} M☉
+ {0} M☉
+
+
+ grains
+ {0} gr
+ {0} gr
+
+
+ GW
+ {0} GW
+ {0} GW
+
+
+ MW
+ {0} MW
+ {0} MW
+
+
+ kW
+ {0} kW
+ {0} kW
+
+
+ watts
+ {0} W
+ {0} W
+
+
+ mW
+ {0} mW
+ {0} mW
+
+
+ hp
+ {0} hp
+ {0} hp
+
+
+ mmHg
+ {0} mmHg
+ {0} mmHg
+
+
+ of Hg
+ {0} of Hg
+ {0} of Hg
+
+
+ psi
+ {0} psi
+ {0} psi
+
+
+ inHg
+ {0} inHg
+ {0} inHg
+
+
+ bar
+ {0} bar
+ {0} bar
+
+
+ mbar
+ {0} mbar
+ {0} mbar
+
+
+ atm
+ {0} atm
+ {0} atm
+
+
+ Pa
+ {0} Pa
+ {0} Pa
+
+
+ hPa
+ {0} hPa
+ {0} hPa
+
+
+ kPa
+ {0} kPa
+ {0} kPa
+
+
+ MPa
+ {0} MPa
+ {0} MPa
+
+
+ km/hour
+ {0} km/h
+ {0} km/h
+
+
+ meters/sec
+ {0} m/s
+ {0} m/s
+
+
+ miles/hour
+ {0} mph
+ {0} mph
+
+
+ kn
+ {0} kn
+ {0} kn
+
+
+ Bft
+ B {0}
+ B {0}
+
+
+ deg. temp.
+ {0}°
+ {0}°
+
+
+ deg. C
+ {0}°C
+ {0}°C
+
+
+ deg. F
+ {0}°F
+ {0}°F
+
+
+ K
+ {0} K
+ {0} K
+
+
+ lbf⋅ft
+ {0} lbf⋅ft
+ {0} lbf⋅ft
+
+
+ N⋅m
+ {0} N⋅m
+ {0} N⋅m
+
+
+ km³
+ {0} km³
+ {0} km³
+
+
+ m³
+ {0} m³
+ {0} m³
+ {0}/m³
+
+
+ cm³
+ {0} cm³
+ {0} cm³
+ {0}/cm³
+
+
+ mi³
+ {0} mi³
+ {0} mi³
+
+
+ yards³
+ {0} yd³
+ {0} yd³
+
+
+ feet³
+ {0} ft³
+ {0} ft³
+
+
+ inches³
+ {0} in³
+ {0} in³
+
+
+ ML
+ {0} ML
+ {0} ML
+
+
+ hL
+ {0} hL
+ {0} hL
+
+
+ liters
+ {0} L
+ {0} L
+ {0}/L
+
+
+ dL
+ {0} dL
+ {0} dL
+
+
+ cL
+ {0} cL
+ {0} cL
+
+
+ mL
+ {0} mL
+ {0} mL
+
+
+ mpt
+ {0} mpt
+ {0} mpt
+
+
+ mcup
+ {0} mc
+ {0} mc
+
+
+ fl oz m.
+ {0} fl oz m.
+ {0} fl oz m.
+
+
+ acre ft
+ {0} ac ft
+ {0} ac ft
+
+
+ bushels
+ {0} bu
+ {0} bu
+
+
+ gal
+ {0} gal
+ {0} gal
+
+
+ Imp. gal
+ {0} gal Imp.
+ {0} gal Imp.
+ {0}/galImp
+
+
+ qts
+ {0} qt
+ {0} qt
+
+
+ pints
+ {0} pt
+ {0} pt
+
+
+ pt Imp.
+ {0} pt Imp.
+ {0} pt Imp.
+
+
+ cups
+ {0} c
+ {0} c
+
+
+ cup Imp
+ {0} cup Imp.
+ {0} cup Imp.
+
+
+ fl oz
+ {0} fl oz
+ {0} fl oz
+
+
+ Imp. fl oz
+ {0} fl oz Imp.
+ {0} fl oz Imp.
+
+
+ tbsp
+ {0} tbsp
+ {0} tbsp
+
+
+ tsp
+ {0} tsp
+ {0} tsp
+
+
+ barrel
+ {0} bbl
+ {0} bbl
+
+
+ dessert spoons
+ {0} dsp
+ {0} dsp
+
+
+ Imp. dessert spoons
+ {0} dsp-Imp.
+ {0} dsp-Imp.
+
+
+ drops
+ {0} dr
+ {0} drdrops
+
+
+ drams
+ {0} dram
+ {0} drams
+
+
+ jiggers
+ {0} jigger
+ {0} jiggers
+
+
+ pinches
+ {0} pn
+ {0} pn
+
+
+ Imp. quarts
+ {0} qt-Imp.
+ {0} qt-Imp.
+
+
+ sr
+ {0} sr
+ {0} sr
+
+
+ kat
+ {0} kat
+ {0} kat
+
+
+ C
+ {0} C
+ {0} C
+
+
+ F
+ {0} F
+ {0} F
+
+
+ H
+ {0} H
+ {0} H
+
+
+ S
+ {0} S
+ {0} S
+
+
+ cal-IT
+ {0} cal-IT
+ {0} cal-IT
+
+
+ BTU-IT
+ {0} BTU-IT
+ {0} BT-IT
+
+
+ Bq
+ {0} Bq
+ {0} Bq
+
+
+ Sv
+ {0} Sv
+ {0} Sv
+
+
+ Gy
+ {0} Gy
+ {0} Gy
+
+
+ kgf
+ {0} kgf
+ {0} kgf
+
+
+ rd
+ {0} rd
+ {0} rd
+
+
+ ch
+ {0} ch
+ {0} ch
+
+
+ T
+ {0} T
+ {0} T
+
+
+ Wb
+ {0} Wb
+ {0} Wb
+
+
+ °R
+ {0} °R
+ {0} °R
+
+
+ fw
+ {0} fw
+ {0} fw
+
+
+ slug
+ {0} slug
+ {0} slug
+
+
+ gas-equiv
+ {0} gas-equiv
+ {0} gas-equiv
+
+
+ rin [JP]
+ {0} rin [JP]
+ {0} rin [JP]
+
+
+ sun [JP]
+ {0} sun [JP]
+ {0} sun [JP]
+
+
+ shaku [JP]
+ {0} shaku [JP]
+ {0} shaku [JP]
+
+
+ shaku [cloth, JP]
+ {0} shaku [cloth, JP]
+ {0} shaku [cloth, JP]
+
+
+ ken [JP]
+ {0} ken [JP]
+ {0} ken [JP]
+
+
+ jo [JP]
+ {0} jo [JP]
+ {0} jo [JP]
+
+
+ ri [JP]
+ {0} ri [JP]
+ {0} ri [JP]
+
+
+ bu [JP]
+ {0} bu [JP]
+ {0} bu [JP]
+
+
+ se [JP]
+ {0} se [JP]
+ {0} se [JP]
+
+
+ cho [JP]
+ {0} cho [JP]
+ {0} cho [JP]
+
+
+ kosaji [JP]
+ {0} kosaji [JP]
+ {0} kosaji [JP]
+
+
+ osaji [JP]
+ {0} osaji [JP]
+ {0} osaji [JP]
+
+
+ cup [JP]
+ {0} cup [JP]
+ {0} cup [JP]
+
+
+ shaku [vol, JP]
+ {0} shaku [vol, JP]
+ {0} shaku [vol, JP]
+
+
+ sai [JP]
+ {0} sai [JP]
+ {0} sai [JP]
+
+
+ to [JP]
+ {0} to [JP]
+ {0} to [JP]
+
+
+ koku [JP]
+ {0} koku [JP]
+ {0} koku [JP]
+
+
+ light
+ {0} light
+ {0} light
+
+
+ fun [JP]
+ {0} fun [JP]
+ {0} fun [JP]
+
+
+ parts/billion
+ {0} ppb
+ {0} ppb
+
+
+ nights
+ {0} night
+ {0} nights
+ {0}/night
+
+
+ direction
+ {0} E
+ {0} N
+ {0} S
+ {0} W
+
+
+
+
+ d{0}
+
+
+ c{0}
+
+
+ m{0}
+
+
+ μ{0}
+
+
+ n{0}
+
+
+ p{0}
+
+
+ f{0}
+
+
+ a{0}
+
+
+ z{0}
+
+
+ y{0}
+
+
+ r{0}
+
+
+ q{0}
+
+
+ da{0}
+
+
+ h{0}
+
+
+ k{0}
+
+
+ M{0}
+
+
+ G{0}
+
+
+ T{0}
+
+
+ P{0}
+
+
+ E{0}
+
+
+ Z{0}
+
+
+ Y{0}
+
+
+ R{0}
+
+
+ Q{0}
+
+
+ Ki{0}
+
+
+ Mi{0}
+
+
+ Gi{0}
+
+
+ Ti{0}
+
+
+ Pi{0}
+
+
+ Ei{0}
+
+
+ Zi{0}
+
+
+ Yi{0}
+
+
+ {0}/{1}
+
+
+ {0}²
+ {0}²
+
+
+ {0}³
+ {0}³
+
+
+ {0}⋅{1}
+
+
+ g-force
+ {0}G
+ {0}Gs
+
+
+ m/s²
+ {0}m/s²
+ {0}m/s²
+
+
+ rev
+ {0}rev
+ {0}rev
+
+
+ rad
+ {0}rad
+ {0}rad
+
+
+ deg
+ {0}°
+ {0}°
+
+
+ arcmin
+ {0}′
+ {0}′
+
+
+ arcsec
+ {0}″
+ {0}″
+
+
+ km²
+ {0}km²
+ {0}km²
+ {0}/km²
+
+
+ hectare
+ {0}ha
+ {0}ha
+
+
+ meters²
+ {0}m²
+ {0}m²
+ {0}/m²
+
+
+ cm²
+ {0}cm²
+ {0}cm²
+ {0}/cm²
+
+
+ mi²
+ {0}mi²
+ {0}mi²
+ {0}/mi²
+
+
+ acre
+ {0}ac
+ {0}ac
+
+
+ yd²
+ {0}yd²
+ {0}yd²
+
+
+ ft²
+ {0}ft²
+ {0}ft²
+
+
+ in²
+ {0}in²
+ {0}in²
+ {0}/in²
+
+
+ dunam
+ {0}dunam
+ {0}dunam
+
+
+ karat
+ {0}kt
+ {0}kt
+
+
+ mg/dL
+ {0}mg/dL
+ {0}mg/dL
+
+
+ mmol/L
+ {0}mmol/L
+ {0}mmol/L
+
+
+ item
+ {0}item
+ {0}items
+
+
+ part
+ {0} part
+ {0} part
+
+
+ ppm
+ {0}ppm
+ {0}ppm
+
+
+ %
+ {0}%
+ {0}%
+
+
+ ‰
+ {0}‰
+ {0}‰
+
+
+ ‱
+ {0}‱
+ {0}‱
+
+
+ mol
+ {0}mol
+ {0}mol
+
+
+ Glc
+ {0} Glc
+ {0} Glc
+
+
+ L/km
+ {0}L/km
+ {0}L/km
+
+
+ L/100km
+ {0}L/100km
+ {0}L/100km
+
+
+ mpg
+ {0}mpg
+ {0}mpg
+
+
+ mpg UK
+ {0}m/gUK
+ {0}m/gUK
+
+
+ PB
+ {0}PB
+ {0}PB
+
+
+ TB
+ {0}TB
+ {0}TB
+
+
+ Tb
+ {0}Tb
+ {0}Tb
+
+
+ GB
+ {0}GB
+ {0}GB
+
+
+ Gb
+ {0}Gb
+ {0}Gb
+
+
+ MB
+ {0}MB
+ {0}MB
+
+
+ Mb
+ {0}Mb
+ {0}Mb
+
+
+ kB
+ {0}kB
+ {0}kB
+
+
+ kb
+ {0}kb
+ {0}kb
+
+
+ B
+ {0}B
+ {0}B
+
+
+ bit
+ {0}bit
+ {0}bit
+
+
+ c
+ {0}c
+ {0}c
+
+
+ dec
+ {0}dec
+ {0}dec
+
+
+ yr
+ {0}y
+ {0}y
+ {0}/y
+
+
+ qtr
+ {0}q
+ {0}q
+ {0}/q
+
+
+ month
+ {0}m
+ {0}m
+ {0}/m
+
+
+ wk
+ {0}w
+ {0}w
+ {0}/w
+
+
+ day
+ {0}d
+ {0}d
+ {0}/d
+
+
+ hour
+ {0}h
+ {0}h
+ {0}/h
+
+
+ min
+ {0}m
+ {0}m
+ {0}/min
+
+
+ sec
+ {0}s
+ {0}s
+ {0}/s
+
+
+ msec
+ {0}ms
+ {0}ms
+
+
+ μsec
+ {0}μs
+ {0}μs
+
+
+ ns
+ {0}ns
+ {0}ns
+
+
+ amp
+ {0}A
+ {0}A
+
+
+ mA
+ {0}mA
+ {0}mA
+
+
+ ohm
+ {0}Ω
+ {0}Ω
+
+
+ volt
+ {0}V
+ {0}V
+
+
+ kcal
+ {0}kcal
+ {0}kcal
+
+
+ cal
+ {0}cal
+ {0}cal
+
+
+ Cal
+ {0}Cal
+ {0}Cal
+
+
+ kJ
+ {0}kJ
+ {0}kJ
+
+
+ joule
+ {0}J
+ {0}J
+
+
+ kWh
+ {0}kWh
+ {0}kWh
+
+
+ eV
+ {0}eV
+ {0}eV
+
+
+ BTU
+ {0}Btu
+ {0}Btu
+
+
+ US therm
+ {0}US therm
+ {0}US therms
+
+
+ lbf
+ {0}lbf
+ {0}lbf
+
+
+ N
+ {0}N
+ {0}N
+
+
+ kWh/100km
+ {0}kWh/100km
+ {0}kWh/100km
+
+
+ GHz
+ {0}GHz
+ {0}GHz
+
+
+ MHz
+ {0}MHz
+ {0}MHz
+
+
+ kHz
+ {0}kHz
+ {0}kHz
+
+
+ Hz
+ {0}Hz
+ {0}Hz
+
+
+ em
+ {0}em
+ {0}em
+
+
+ px
+ {0}px
+ {0}px
+
+
+ MP
+ {0}MP
+ {0}MP
+
+
+ ppcm
+ {0}ppcm
+ {0}ppcm
+
+
+ ppi
+ {0}ppi
+ {0}ppi
+
+
+ dpcm
+ {0}dpcm
+ {0}dpcm
+
+
+ dpi
+ {0}dpi
+ {0}dpi
+
+
+ dot
+ {0}dot
+ {0}dot
+
+
+ R⊕
+ {0}R⊕
+ {0}R⊕
+
+
+ km
+ {0}km
+ {0}km
+ {0}/km
+
+
+ m
+ {0}m
+ {0}m
+ {0}/m
+
+
+ dm
+ {0}dm
+ {0}dm
+
+
+ cm
+ {0}cm
+ {0}cm
+ {0}/cm
+
+
+ mm
+ {0}mm
+ {0}mm
+
+
+ μm
+ {0}μm
+ {0}μm
+
+
+ nm
+ {0}nm
+ {0}nm
+
+
+ pm
+ {0}pm
+ {0}pm
+
+
+ mi
+ {0}mi
+ {0}mi
+
+
+ yd
+ {0}yd
+ {0}yd
+
+
+ ft
+ {0}′
+ {0}′
+ {0}/ft
+
+
+ in
+ {0}″
+ {0}″
+ {0}/in
+
+
+ parsec
+ {0}pc
+ {0}pc
+
+
+ ly
+ {0}ly
+ {0}ly
+
+
+ au
+ {0}au
+ {0}au
+
+
+ furlong
+ {0}fur
+ {0}fur
+
+
+ fathom
+ {0}fth
+ {0}fth
+
+
+ nmi
+ {0}nmi
+ {0}nmi
+
+
+ smi
+ {0}smi
+ {0}smi
+
+
+ pts
+ {0}pt
+ {0}pt
+
+
+ R☉
+ {0}R☉
+ {0}R☉
+
+
+ lux
+ {0}lx
+ {0}lx
+
+
+ cd
+ {0}cd
+ {0}cd
+
+
+ lm
+ {0}lm
+ {0}lm
+
+
+ L☉
+ {0}L☉
+ {0}L☉
+
+
+ t
+ {0}t
+ {0}t
+
+
+ kg
+ {0}kg
+ {0}kg
+ {0}/kg
+
+
+ gram
+ {0}g
+ {0}g
+ {0}/g
+
+
+ mg
+ {0}mg
+ {0}mg
+
+
+ μg
+ {0}μg
+ {0}μg
+
+
+ ton
+ {0}tn
+ {0}tn
+
+
+ stone
+ {0}st
+ {0}st
+
+
+ lb
+ {0}#
+ {0}#
+ {0}/lb
+
+
+ oz
+ {0}oz
+ {0}oz
+ {0}/oz
+
+
+ oz t
+ {0}oz t
+ {0}oz t
+
+
+ carat
+ {0}CD
+ {0}CD
+
+
+ Da
+ {0}Da
+ {0}Da
+
+
+ M⊕
+ {0}M⊕
+ {0}M⊕
+
+
+ M☉
+ {0}M☉
+ {0}M☉
+
+
+ gr
+ {0}gr
+ {0}gr
+
+
+ GW
+ {0}GW
+ {0}GW
+
+
+ MW
+ {0}MW
+ {0}MW
+
+
+ kW
+ {0}kW
+ {0}kW
+
+
+ watt
+ {0}W
+ {0}W
+
+
+ mW
+ {0}mW
+ {0}mW
+
+
+ hp
+ {0}hp
+ {0}hp
+
+
+ mmHg
+ {0}mmHg
+ {0}mmHg
+
+
+ of Hg
+ {0} of Hg
+ {0} of Hg
+
+
+ psi
+ {0}psi
+ {0}psi
+
+
+ ″ Hg
+ {0}″ Hg
+ {0}″ Hg
+
+
+ bar
+ {0}bar
+ {0}bar
+
+
+ mbar
+ {0}mb
+ {0}mb
+
+
+ atm
+ {0}atm
+ {0}atm
+
+
+ Pa
+ {0}Pa
+ {0}Pa
+
+
+ hPa
+ {0}hPa
+ {0}hPa
+
+
+ kPa
+ {0}kPa
+ {0}kPa
+
+
+ MPa
+ {0}MPa
+ {0}MPa
+
+
+ km/hr
+ {0}km/h
+ {0}km/h
+
+
+ m/s
+ {0}m/s
+ {0}m/s
+
+
+ mi/hr
+ {0}mph
+ {0}mph
+
+
+ kn
+ {0}kn
+ {0}kn
+
+
+ Bft
+ B{0}
+ B{0}
+
+
+ °
+ {0}°
+ {0}°
+
+
+ °C
+ {0}°C
+ {0}°C
+
+
+ °F
+ {0}°
+ {0}°
+
+
+ K
+ {0}K
+ {0}K
+
+
+ lbf⋅ft
+ {0}lbf⋅ft
+ {0}lbf⋅ft
+
+
+ N⋅m
+ {0}N⋅m
+ {0}N⋅m
+
+
+ km³
+ {0}km³
+ {0}km³
+
+
+ m³
+ {0}m³
+ {0}m³
+ {0}/m³
+
+
+ cm³
+ {0}cm³
+ {0}cm³
+ {0}/cm³
+
+
+ mi³
+ {0}mi³
+ {0}mi³
+
+
+ yd³
+ {0}yd³
+ {0}yd³
+
+
+ ft³
+ {0}ft³
+ {0}ft³
+
+
+ in³
+ {0}in³
+ {0}in³
+
+
+ ML
+ {0}ML
+ {0}ML
+
+
+ hL
+ {0}hL
+ {0}hL
+
+
+ liter
+ {0}L
+ {0}L
+ {0}/L
+
+
+ dL
+ {0}dL
+ {0}dL
+
+
+ cL
+ {0}cL
+ {0}cL
+
+
+ mL
+ {0}mL
+ {0}mL
+
+
+ pt
+ {0}mpt
+ {0}mpt
+
+
+ mcup
+ {0}mc
+ {0}mc
+
+
+ fl oz m.
+ {0} fl oz m.
+ {0} fl oz m.
+
+
+ acre ft
+ {0}ac ft
+ {0}ac ft
+
+
+ bushel
+ {0}bu
+ {0}bu
+
+
+ gal
+ {0}gal
+ {0}gal
+ {0}/gal
+
+
+ Imp gal
+ {0}gal-Im
+ {0}gal-Im
+ {0}/galIm
+
+
+ qt
+ {0}qt
+ {0}qt
+
+
+ pt
+ {0}pt
+ {0}pt
+
+
+ pt Imp.
+ {0} pt Imp.
+ {0} pt Imp.
+
+
+ cup
+ {0}c
+ {0}c
+
+
+ cup Imp
+ {0} cup Imp.
+ {0} cup Imp.
+
+
+ fl oz
+ {0}fl oz
+ {0}fl oz
+
+
+ Imp fl oz
+ {0}fl oz Im
+ {0}fl oz Im
+
+
+ tbsp
+ {0}tbsp
+ {0}tbsp
+
+
+ tsp
+ {0}tsp
+ {0}tsp
+
+
+ bbl
+ {0}bbl
+ {0}bbl
+
+
+ dsp
+ {0}dsp
+ {0}dsp
+
+
+ dsp Imp
+ {0}dsp-Imp
+ {0}dsp-Imp
+
+
+ dr
+ {0}dr
+ {0}dr
+
+
+ fl.dr.
+ {0}fl.dr.
+ {0}fl.dr.
+
+
+ jigger
+ {0}jigger
+ {0}jigger
+
+
+ pn
+ {0}pn
+ {0}pn
+
+
+ qt Imp
+ {0}qt-Imp.
+ {0}qt-Imp.
+
+
+ sr
+ {0} sr
+ {0} sr
+
+
+ kat
+ {0} kat
+ {0} kat
+
+
+ C
+ {0} C
+ {0} C
+
+
+ F
+ {0} F
+ {0} F
+
+
+ H
+ {0} H
+ {0} H
+
+
+ S
+ {0} S
+ {0} S
+
+
+ cal-IT
+ {0} cal-IT
+ {0} cal-IT
+
+
+ BTU-IT
+ {0} BTU-IT
+ {0} BT-IT
+
+
+ Bq
+ {0} Bq
+ {0} Bq
+
+
+ Sv
+ {0} Sv
+ {0} Sv
+
+
+ Gy
+ {0} Gy
+ {0} Gy
+
+
+ kgf
+ {0} kgf
+ {0} kgf
+
+
+ rd
+ {0} rd
+ {0} rd
+
+
+ ch
+ {0} ch
+ {0} ch
+
+
+ T
+ {0} T
+ {0} T
+
+
+ Wb
+ {0} Wb
+ {0} Wb
+
+
+ °R
+ {0} °R
+ {0} °R
+
+
+ fw
+ {0} fw
+ {0} fw
+
+
+ slug
+ {0} slug
+ {0} slug
+
+
+ gas-equiv
+ {0}gas-equiv
+ {0}gas-equiv
+
+
+ rin [JP]
+ {0} rin [JP]
+ {0} rin [JP]
+
+
+ sun [JP]
+ {0} sun [JP]
+ {0} sun [JP]
+
+
+ shaku [JP]
+ {0} shaku [JP]
+ {0} shaku [JP]
+
+
+ shaku [cloth, JP]
+ {0} shaku [cloth, JP]
+ {0} shaku [cloth, JP]
+
+
+ ken [JP]
+ {0} ken [JP]
+ {0} ken [JP]
+
+
+ jo [JP]
+ {0} jo [JP]
+ {0} jo [JP]
+
+
+ ri [JP]
+ {0} ri [JP]
+ {0} ri [JP]
+
+
+ bu [JP]
+ {0} bu [JP]
+ {0} bu [JP]
+
+
+ se [JP]
+ {0} se [JP]
+ {0} se [JP]
+
+
+ cho [JP]
+ {0} cho [JP]
+ {0} cho [JP]
+
+
+ kosaji [JP]
+ {0} kosaji [JP]
+ {0} kosaji [JP]
+
+
+ osaji [JP]
+ {0} osaji [JP]
+ {0} osaji [JP]
+
+
+ cup [JP]
+ {0} cup [JP]
+ {0} cup [JP]
+
+
+ shaku [vol, JP]
+ {0} shaku [vol, JP]
+ {0} shaku [vol, JP]
+
+
+ sai [JP]
+ {0} sai [JP]
+ {0} sai [JP]
+
+
+ to [JP]
+ {0} to [JP]
+ {0} to [JP]
+
+
+ koku [JP]
+ {0} koku [JP]
+ {0} koku [JP]
+
+
+ light
+ {0}light
+ {0}light
+
+
+ fun [JP]
+ {0} fun [JP]
+ {0} fun [JP]
+
+
+ ppb
+ {0}ppb
+ {0}ppb
+
+
+ nights
+ {0}night
+ {0}nights
+ {0}/night
+
+
+ direction
+ {0}E
+ {0}N
+ {0}S
+ {0}W
+
+
+
+
+
+ {0}, {1}
+ {0}, {1}
+ {0}, and {1}
+ {0} and {1}
+
+
+ {0}, {1}
+ {0}, {1}
+ {0}, or {1}
+ {0} or {1}
+
+
+ {0}, {1}
+ {0}, {1}
+ {0}, or {1}
+ {0} or {1}
+
+
+ {0}, {1}
+ {0}, {1}
+ {0}, or {1}
+ {0} or {1}
+
+
+ {0}, {1}
+ {0}, {1}
+ {0}, {1}
+ {0}, {1}
+
+
+ {0}, {1}
+ {0}, {1}
+ {0}, & {1}
+ {0} & {1}
+
+
+ {0}, {1}
+ {0}, {1}
+ {0}, {1}
+ {0}, {1}
+
+
+ {0} {1}
+ {0} {1}
+ {0} {1}
+ {0} {1}
+
+
+ {0}, {1}
+ {0}, {1}
+ {0}, {1}
+ {0}, {1}
+
+
+
+
+ yes:y
+ no:n
+
+
+
+ {0} — all
+ {0}: {1}
+ {0} — compatibility
+ {0} — enclosed
+ {0} — extended
+ {0} facing left
+ {0} facing right
+ {0} — historic
+ {0} — miscellaneous
+ {0} — other
+ scripts — {0}
+ {0} stroke
+ {0} strokes
+ activity
+ African script
+ American script
+ animal
+ animal or nature
+ arrow
+ body
+ box drawing
+ braille
+ building
+ bullet or star
+ consonantal jamo
+ currency symbol
+ dash or connector
+ digit
+ dingbat
+ divination symbol
+ downwards arrow
+ downwards upwards arrow
+ East Asian script
+ emoji
+ European script
+ female
+ flag
+ flags
+ food & drink
+ format
+ format & whitespace
+ full-width variant
+ geometric shape
+ half-width variant
+ Han character
+ Han radical
+ hanja
+ Hanzi (simplified)
+ Hanzi (traditional)
+ heart
+ historic script
+ ideographic desc. character
+ Japanese kana
+ kanbun
+ kanji
+ keycap
+ leftwards arrow
+ leftwards rightwards arrow
+ letterlike symbol
+ limited-use
+ male
+ math symbol
+ Middle Eastern script
+ miscellaneous
+ modern script
+ modifier
+ musical symbol
+ nature
+ nonspacing
+ numbers
+ object
+ other
+ paired
+ person
+ phonetic alphabet
+ pictograph
+ place
+ plant
+ punctuation
+ rightwards arrow
+ sign or symbol
+ small variants
+ smiley
+ smiley or person
+ South Asian script
+ Southeast Asian script
+ spacing
+ sport
+ symbol
+ technical symbol
+ tone mark
+ travel
+ travel or place
+ upwards arrows
+ variant
+ vocalic jamo
+ weather
+ Western Asian script
+ whitespace
+
+
+ italic
+ optical size
+ slant
+ width
+ weight
+ cursive
+ caption
+ text
+ titling
+ display
+ poster
+ backslanted
+ upright
+ slanted
+ extra-slanted
+ ultracondensed
+ ultracompressed
+ ultranarrow
+ extra-condensed
+ extra-compressed
+ extra-narrow
+ condensed
+ compressed
+ compressed
+ semicondensed
+ semicompressed
+ seminarrow
+ normal
+ semiexpanded
+ semiextended
+ semiwide
+ expanded
+ extended
+ wide
+ extra-expanded
+ extra-extended
+ extra-wide
+ ultraexpanded
+ ultraextended
+ ultrawide
+ thin
+ extra-light
+ ultralight
+ light
+ semilight
+ book
+ regular
+ medium
+ semibold
+ demibold
+ bold
+ extra-bold
+ black
+ heavy
+ extra-black
+ ultrablack
+ ultraheavy
+ vertical fractions
+ capital spacing
+ optional ligatures
+ diagonal fractions
+ lining numbers
+ old-style figures
+ ordinals
+ proportional numbers
+ small capitals
+ tabular numbers
+ slashed zero
+
+
+ und en
+ ja ko vi yue zh
+ informal
+ medium
+
+ {0}.
+ {0}{1}
+
+ {title} {given} {given2} {surname} {generation}, {credentials}
+
+
+ {given-informal} {surname}
+
+
+ {title} {surname}
+
+
+ {given-informal}
+
+
+ {given-monogram-allCaps}{given2-monogram-allCaps}{surname-monogram-allCaps}
+
+
+ {given-informal-monogram-allCaps}{surname-monogram-allCaps}
+
+
+ {given} {given2-initial} {surname} {generation}, {credentials}
+
+
+ {given-informal} {surname}
+
+
+ {title} {surname}
+
+
+ {given-informal}
+
+
+ {surname-monogram-allCaps}
+
+
+ {given-informal-monogram-allCaps}
+
+
+ {given-initial}{given2-initial} {surname}
+
+
+ {given-informal} {surname-initial}
+
+
+ {title} {surname}
+
+
+ {given-informal}
+
+
+ {surname-monogram-allCaps}
+
+
+ {given-informal-monogram-allCaps}
+
+
+ {surname} {title} {given} {given2} {generation}, {credentials}
+
+
+ {surname} {given-informal}
+
+
+ {title} {surname}
+
+
+ {given-informal}
+
+
+ {surname-monogram-allCaps}{given-monogram-allCaps}{given2-monogram-allCaps}
+
+
+ {surname-monogram-allCaps}{given-informal-monogram-allCaps}
+
+
+ {surname} {given} {given2-initial} {generation}, {credentials}
+
+
+ {surname} {given-informal}
+
+
+ {title} {surname}
+
+
+ {given-informal}
+
+
+ {surname-monogram-allCaps}
+
+
+ {given-informal-monogram-allCaps}
+
+
+ {surname} {given-initial}{given2-initial}
+
+
+ {surname} {given-initial}
+
+
+ {title} {surname}
+
+
+ {given-informal}
+
+
+ {surname-monogram-allCaps}
+
+
+ {given-informal-monogram-allCaps}
+
+
+ {surname-core}, {given} {given2} {surname-prefix}
+
+
+ {surname}, {given-informal}
+
+
+ {surname-core}, {given} {given2-initial} {surname-prefix}
+
+
+ {surname}, {given-informal}
+
+
+ {surname-core}, {given-initial}{given2-initial} {surname-prefix}
+
+
+ {surname}, {given-informal}
+
+
+
+ Zendaya
+
+
+ Irene
+ Adler
+
+
+ Mary Sue
+ Hamish
+ Watson
+
+
+ Mr.
+ Bertram Wilberforce
+ Bertie
+ Henry Robert
+ ∅∅∅
+ Wooster
+ ∅∅∅
+ Jr
+ MP
+
+
+ Sinbad
+
+
+ Käthe
+ Müller
+
+
+ Zäzilia
+ Hamish
+ Stöber
+
+
+ Prof. Dr.
+ Ada Cornelia
+ Neele
+ César Martín
+ von
+ Brühl
+ González Domingo
+ Jr
+ MD DDS
+
+
+
diff --git a/src/packages/HawkN.Iso.Currencies.Generators/Content/list-historical-currencies.json b/src/packages/HawkN.Iso.Currencies.Generators/Content/list-historical-currencies.json
deleted file mode 100644
index 961c496..0000000
--- a/src/packages/HawkN.Iso.Currencies.Generators/Content/list-historical-currencies.json
+++ /dev/null
@@ -1,1188 +0,0 @@
-{
- "ISO_4217": {
- "HstrcCcyTbl": {
- "HstrcCcyNtry": [
- {
- "CtryNm": "AFGHANISTAN",
- "CcyNm": "Afghani",
- "Ccy": "AFA",
- "CcyNbr": "004",
- "WthdrwlDt": "2003-01"
- },
- {
- "CtryNm": "ÅLAND ISLANDS",
- "CcyNm": "Markka",
- "Ccy": "FIM",
- "CcyNbr": "246",
- "WthdrwlDt": "2002-03"
- },
- {
- "CtryNm": "ALBANIA",
- "CcyNm": "Old Lek",
- "Ccy": "ALK",
- "CcyNbr": "008",
- "WthdrwlDt": "1989-12"
- },
- {
- "CtryNm": "ANDORRA",
- "CcyNm": "Andorran Peseta",
- "Ccy": "ADP",
- "CcyNbr": "020",
- "WthdrwlDt": "2003-07"
- },
- {
- "CtryNm": "ANDORRA",
- "CcyNm": "Spanish Peseta",
- "Ccy": "ESP",
- "CcyNbr": "724",
- "WthdrwlDt": "2002-03"
- },
- {
- "CtryNm": "ANDORRA",
- "CcyNm": "French Franc",
- "Ccy": "FRF",
- "CcyNbr": "250",
- "WthdrwlDt": "2002-03"
- },
- {
- "CtryNm": "ANGOLA",
- "CcyNm": "Kwanza",
- "Ccy": "AOK",
- "CcyNbr": "024",
- "WthdrwlDt": "1991-03"
- },
- {
- "CtryNm": "ANGOLA",
- "CcyNm": "New Kwanza",
- "Ccy": "AON",
- "CcyNbr": "024",
- "WthdrwlDt": "2000-02"
- },
- {
- "CtryNm": "ANGOLA",
- "CcyNm": "Kwanza Reajustado",
- "Ccy": "AOR",
- "CcyNbr": "982",
- "WthdrwlDt": "2000-02"
- },
- {
- "CtryNm": "ARGENTINA",
- "CcyNm": "Austral",
- "Ccy": "ARA",
- "CcyNbr": "032",
- "WthdrwlDt": "1992-01"
- },
- {
- "CtryNm": "ARGENTINA",
- "CcyNm": "Peso Argentino",
- "Ccy": "ARP",
- "CcyNbr": "032",
- "WthdrwlDt": "1985-07"
- },
- {
- "CtryNm": "ARGENTINA",
- "CcyNm": "Peso",
- "Ccy": "ARY",
- "CcyNbr": "032",
- "WthdrwlDt": "1989 to 1990"
- },
- {
- "CtryNm": "ARMENIA",
- "CcyNm": "Russian Ruble",
- "Ccy": "RUR",
- "CcyNbr": "810",
- "WthdrwlDt": "1994-08"
- },
- {
- "CtryNm": "AUSTRIA",
- "CcyNm": "Schilling",
- "Ccy": "ATS",
- "CcyNbr": "040",
- "WthdrwlDt": "2002-03"
- },
- {
- "CtryNm": "AZERBAIJAN",
- "CcyNm": "Azerbaijan Manat",
- "Ccy": "AYM",
- "CcyNbr": "945",
- "WthdrwlDt": "2005-10"
- },
- {
- "CtryNm": "AZERBAIJAN",
- "CcyNm": "Azerbaijanian Manat",
- "Ccy": "AZM",
- "CcyNbr": "031",
- "WthdrwlDt": "2005-12"
- },
- {
- "CtryNm": "AZERBAIJAN",
- "CcyNm": "Russian Ruble",
- "Ccy": "RUR",
- "CcyNbr": "810",
- "WthdrwlDt": "1994-08"
- },
- {
- "CtryNm": "BELARUS",
- "CcyNm": "Belarusian Ruble",
- "Ccy": "BYB",
- "CcyNbr": "112",
- "WthdrwlDt": "2001-01"
- },
- {
- "CtryNm": "BELARUS",
- "CcyNm": "Belarusian Ruble",
- "Ccy": "BYR",
- "CcyNbr": "974",
- "WthdrwlDt": "2017-01"
- },
- {
- "CtryNm": "BELARUS",
- "CcyNm": "Russian Ruble",
- "Ccy": "RUR",
- "CcyNbr": "810",
- "WthdrwlDt": "1994-06"
- },
- {
- "CtryNm": "BELGIUM",
- "CcyNm": "Convertible Franc",
- "Ccy": "BEC",
- "CcyNbr": "993",
- "WthdrwlDt": "1990-03"
- },
- {
- "CtryNm": "BELGIUM",
- "CcyNm": "Belgian Franc",
- "Ccy": "BEF",
- "CcyNbr": "056",
- "WthdrwlDt": "2002-03"
- },
- {
- "CtryNm": "BELGIUM",
- "CcyNm": "Financial Franc",
- "Ccy": "BEL",
- "CcyNbr": "992",
- "WthdrwlDt": "1990-03"
- },
- {
- "CtryNm": "BOLIVIA",
- "CcyNm": "Peso boliviano",
- "Ccy": "BOP",
- "CcyNbr": "068",
- "WthdrwlDt": "1987-02"
- },
- {
- "CtryNm": "BOSNIA AND HERZEGOVINA",
- "CcyNm": "Dinar",
- "Ccy": "BAD",
- "CcyNbr": "070",
- "WthdrwlDt": "1998-07"
- },
- {
- "CtryNm": "BRAZIL",
- "CcyNm": "Cruzeiro",
- "Ccy": "BRB",
- "CcyNbr": "076",
- "WthdrwlDt": "1986-03"
- },
- {
- "CtryNm": "BRAZIL",
- "CcyNm": "Cruzado",
- "Ccy": "BRC",
- "CcyNbr": "076",
- "WthdrwlDt": "1989-02"
- },
- {
- "CtryNm": "BRAZIL",
- "CcyNm": "Cruzeiro",
- "Ccy": "BRE",
- "CcyNbr": "076",
- "WthdrwlDt": "1993-03"
- },
- {
- "CtryNm": "BRAZIL",
- "CcyNm": "New Cruzado",
- "Ccy": "BRN",
- "CcyNbr": "076",
- "WthdrwlDt": "1990-03"
- },
- {
- "CtryNm": "BRAZIL",
- "CcyNm": "Cruzeiro Real",
- "Ccy": "BRR",
- "CcyNbr": "987",
- "WthdrwlDt": "1994-07"
- },
- {
- "CtryNm": "BULGARIA",
- "CcyNm": "Lev A/52",
- "Ccy": "BGJ",
- "CcyNbr": "100",
- "WthdrwlDt": "1989 to 1990"
- },
- {
- "CtryNm": "BULGARIA",
- "CcyNm": "Lev A/62",
- "Ccy": "BGK",
- "CcyNbr": "100",
- "WthdrwlDt": "1989 to 1990"
- },
- {
- "CtryNm": "BULGARIA",
- "CcyNm": "Lev",
- "Ccy": "BGL",
- "CcyNbr": "100",
- "WthdrwlDt": "2003-11"
- },
- {
- "CtryNm": "BURMA",
- "CcyNm": "Kyat",
- "Ccy": "BUK",
- "CcyNbr": "104",
- "WthdrwlDt": "1990-02"
- },
- {
- "CtryNm": "CROATIA",
- "CcyNm": "Croatian Dinar",
- "Ccy": "HRD",
- "CcyNbr": "191",
- "WthdrwlDt": "1995-01"
- },
- {
- "CtryNm": "CROATIA",
- "CcyNm": "Croatian Kuna",
- "Ccy": "HRK",
- "CcyNbr": "191",
- "WthdrwlDt": "2015-06"
- },
- {
- "CtryNm": "CROATIA",
- "CcyNm": "Kuna",
- "Ccy": "HRK",
- "CcyNbr": "191",
- "WthdrwlDt": "2023-01"
- },
- {
- "CtryNm": "CUBA",
- "CcyNm": "Peso Convertible",
- "Ccy": "CUC",
- "CcyNbr": "931",
- "WthdrwlDt": "2021-06"
- },
- {
- "CtryNm": "CURAÇAO",
- "CcyNm": "Netherlands Antillean Guilder",
- "Ccy": "ANG",
- "CcyNbr": "532",
- "WthdrwlDt": "2025-03"
- },
- {
- "CtryNm": "CYPRUS",
- "CcyNm": "Cyprus Pound",
- "Ccy": "CYP",
- "CcyNbr": "196",
- "WthdrwlDt": "2008-01"
- },
- {
- "CtryNm": "CZECHOSLOVAKIA",
- "CcyNm": "Krona A/53",
- "Ccy": "CSJ",
- "CcyNbr": "203",
- "WthdrwlDt": "1989 to 1990"
- },
- {
- "CtryNm": "CZECHOSLOVAKIA",
- "CcyNm": "Koruna",
- "Ccy": "CSK",
- "CcyNbr": "200",
- "WthdrwlDt": "1993-03"
- },
- {
- "CtryNm": "ECUADOR",
- "CcyNm": "Sucre",
- "Ccy": "ECS",
- "CcyNbr": "218",
- "WthdrwlDt": "2000-09"
- },
- {
- "CtryNm": "ECUADOR",
- "CcyNm": "Unidad de Valor Constante (UVC)",
- "Ccy": "ECV",
- "CcyNbr": "983",
- "WthdrwlDt": "2000-09"
- },
- {
- "CtryNm": "EQUATORIAL GUINEA",
- "CcyNm": "Ekwele",
- "Ccy": "GQE",
- "CcyNbr": "226",
- "WthdrwlDt": "1986-06"
- },
- {
- "CtryNm": "ESTONIA",
- "CcyNm": "Kroon",
- "Ccy": "EEK",
- "CcyNbr": "233",
- "WthdrwlDt": "2011-01"
- },
- {
- "CtryNm": "EUROPEAN MONETARY CO-OPERATION FUND (EMCF)",
- "CcyNm": "European Currency Unit (E.C.U)",
- "Ccy": "XEU",
- "CcyNbr": "954",
- "WthdrwlDt": "1999-01"
- },
- {
- "CtryNm": "FINLAND",
- "CcyNm": "Markka",
- "Ccy": "FIM",
- "CcyNbr": "246",
- "WthdrwlDt": "2002-03"
- },
- {
- "CtryNm": "FRANCE",
- "CcyNm": "French Franc",
- "Ccy": "FRF",
- "CcyNbr": "250",
- "WthdrwlDt": "2002-03"
- },
- {
- "CtryNm": "FRENCH GUIANA",
- "CcyNm": "French Franc",
- "Ccy": "FRF",
- "CcyNbr": "250",
- "WthdrwlDt": "2002-03"
- },
- {
- "CtryNm": "FRENCH SOUTHERN TERRITORIES",
- "CcyNm": "French Franc",
- "Ccy": "FRF",
- "CcyNbr": "250",
- "WthdrwlDt": "2002-03"
- },
- {
- "CtryNm": "GEORGIA",
- "CcyNm": "Georgian Coupon",
- "Ccy": "GEK",
- "CcyNbr": "268",
- "WthdrwlDt": "1995-10"
- },
- {
- "CtryNm": "GEORGIA",
- "CcyNm": "Russian Ruble",
- "Ccy": "RUR",
- "CcyNbr": "810",
- "WthdrwlDt": "1994-04"
- },
- {
- "CtryNm": "GERMAN DEMOCRATIC REPUBLIC",
- "CcyNm": "Mark der DDR",
- "Ccy": "DDM",
- "CcyNbr": "278",
- "WthdrwlDt": "1990-07 to 1990-09"
- },
- {
- "CtryNm": "GERMANY",
- "CcyNm": "Deutsche Mark",
- "Ccy": "DEM",
- "CcyNbr": "276",
- "WthdrwlDt": "2002-03"
- },
- {
- "CtryNm": "GHANA",
- "CcyNm": "Cedi",
- "Ccy": "GHC",
- "CcyNbr": "288",
- "WthdrwlDt": "2008-01"
- },
- {
- "CtryNm": "GHANA",
- "CcyNm": "Ghana Cedi",
- "Ccy": "GHP",
- "CcyNbr": "939",
- "WthdrwlDt": "2007-06"
- },
- {
- "CtryNm": "GREECE",
- "CcyNm": "Drachma",
- "Ccy": "GRD",
- "CcyNbr": "300",
- "WthdrwlDt": "2002-03"
- },
- {
- "CtryNm": "GUADELOUPE",
- "CcyNm": "French Franc",
- "Ccy": "FRF",
- "CcyNbr": "250",
- "WthdrwlDt": "2002-03"
- },
- {
- "CtryNm": "GUINEA",
- "CcyNm": "Syli",
- "Ccy": "GNE",
- "CcyNbr": "324",
- "WthdrwlDt": "1989-12"
- },
- {
- "CtryNm": "GUINEA",
- "CcyNm": "Syli",
- "Ccy": "GNS",
- "CcyNbr": "324",
- "WthdrwlDt": "1986-02"
- },
- {
- "CtryNm": "GUINEA-BISSAU",
- "CcyNm": "Guinea Escudo",
- "Ccy": "GWE",
- "CcyNbr": "624",
- "WthdrwlDt": "1978 to 1981"
- },
- {
- "CtryNm": "GUINEA-BISSAU",
- "CcyNm": "Guinea-Bissau Peso",
- "Ccy": "GWP",
- "CcyNbr": "624",
- "WthdrwlDt": "1997-05"
- },
- {
- "CtryNm": "HOLY SEE (VATICAN CITY STATE)",
- "CcyNm": "Italian Lira",
- "Ccy": "ITL",
- "CcyNbr": "380",
- "WthdrwlDt": "2002-03"
- },
- {
- "CtryNm": "ICELAND",
- "CcyNm": "Old Krona",
- "Ccy": "ISJ",
- "CcyNbr": "352",
- "WthdrwlDt": "1989 to 1990"
- },
- {
- "CtryNm": "IRELAND",
- "CcyNm": "Irish Pound",
- "Ccy": "IEP",
- "CcyNbr": "372",
- "WthdrwlDt": "2002-03"
- },
- {
- "CtryNm": "ISRAEL",
- "CcyNm": "Pound",
- "Ccy": "ILP",
- "CcyNbr": "376",
- "WthdrwlDt": "1978 to 1981"
- },
- {
- "CtryNm": "ISRAEL",
- "CcyNm": "Old Shekel",
- "Ccy": "ILR",
- "CcyNbr": "376",
- "WthdrwlDt": "1989 to 1990"
- },
- {
- "CtryNm": "ITALY",
- "CcyNm": "Italian Lira",
- "Ccy": "ITL",
- "CcyNbr": "380",
- "WthdrwlDt": "2002-03"
- },
- {
- "CtryNm": "KAZAKHSTAN",
- "CcyNm": "Russian Ruble",
- "Ccy": "RUR",
- "CcyNbr": "810",
- "WthdrwlDt": "1994-05"
- },
- {
- "CtryNm": "KYRGYZSTAN",
- "CcyNm": "Russian Ruble",
- "Ccy": "RUR",
- "CcyNbr": "810",
- "WthdrwlDt": "1993-01"
- },
- {
- "CtryNm": "LAO",
- "CcyNm": "Pathet Lao Kip",
- "Ccy": "LAJ",
- "CcyNbr": "418",
- "WthdrwlDt": "1979-12"
- },
- {
- "CtryNm": "LATVIA",
- "CcyNm": "Latvian Lats",
- "Ccy": "LVL",
- "CcyNbr": "428",
- "WthdrwlDt": "2014-01"
- },
- {
- "CtryNm": "LATVIA",
- "CcyNm": "Latvian Ruble",
- "Ccy": "LVR",
- "CcyNbr": "428",
- "WthdrwlDt": "1994-12"
- },
- {
- "CtryNm": "LESOTHO",
- "CcyNm": "Loti",
- "Ccy": "LSM",
- "CcyNbr": "426",
- "WthdrwlDt": "1985-05"
- },
- {
- "CtryNm": "LESOTHO",
- "CcyNm": "Financial Rand",
- "Ccy": "ZAL",
- "CcyNbr": "991",
- "WthdrwlDt": "1995-03"
- },
- {
- "CtryNm": "LITHUANIA",
- "CcyNm": "Lithuanian Litas",
- "Ccy": "LTL",
- "CcyNbr": "440",
- "WthdrwlDt": "2014-12"
- },
- {
- "CtryNm": "LITHUANIA",
- "CcyNm": "Talonas",
- "Ccy": "LTT",
- "CcyNbr": "440",
- "WthdrwlDt": "1993-07"
- },
- {
- "CtryNm": "LUXEMBOURG",
- "CcyNm": "Luxembourg Convertible Franc",
- "Ccy": "LUC",
- "CcyNbr": "989",
- "WthdrwlDt": "1990-03"
- },
- {
- "CtryNm": "LUXEMBOURG",
- "CcyNm": "Luxembourg Franc",
- "Ccy": "LUF",
- "CcyNbr": "442",
- "WthdrwlDt": "2002-03"
- },
- {
- "CtryNm": "LUXEMBOURG",
- "CcyNm": "Luxembourg Financial Franc",
- "Ccy": "LUL",
- "CcyNbr": "988",
- "WthdrwlDt": "1990-03"
- },
- {
- "CtryNm": "MADAGASCAR",
- "CcyNm": "Malagasy Franc",
- "Ccy": "MGF",
- "CcyNbr": "450",
- "WthdrwlDt": "2004-12"
- },
- {
- "CtryNm": "MALAWI",
- "CcyNm": "Kwacha",
- "Ccy": "MWK",
- "CcyNbr": "454",
- "WthdrwlDt": "2016-02"
- },
- {
- "CtryNm": "MALDIVES",
- "CcyNm": "Maldive Rupee",
- "Ccy": "MVQ",
- "CcyNbr": "462",
- "WthdrwlDt": "1989-12"
- },
- {
- "CtryNm": "MALI",
- "CcyNm": "Mali Franc",
- "Ccy": "MLF",
- "CcyNbr": "466",
- "WthdrwlDt": "1984-11"
- },
- {
- "CtryNm": "MALTA",
- "CcyNm": "Maltese Lira",
- "Ccy": "MTL",
- "CcyNbr": "470",
- "WthdrwlDt": "2008-01"
- },
- {
- "CtryNm": "MALTA",
- "CcyNm": "Maltese Pound",
- "Ccy": "MTP",
- "CcyNbr": "470",
- "WthdrwlDt": "1983-06"
- },
- {
- "CtryNm": "MARTINIQUE",
- "CcyNm": "French Franc",
- "Ccy": "FRF",
- "CcyNbr": "250",
- "WthdrwlDt": "2002-03"
- },
- {
- "CtryNm": "MAURITANIA",
- "CcyNm": "Ouguiya",
- "Ccy": "MRO",
- "CcyNbr": "478",
- "WthdrwlDt": "2017-12"
- },
- {
- "CtryNm": "MAYOTTE",
- "CcyNm": "French Franc",
- "Ccy": "FRF",
- "CcyNbr": "250",
- "WthdrwlDt": "2002-03"
- },
- {
- "CtryNm": "MEXICO",
- "CcyNm": "Mexican Peso",
- "Ccy": "MXP",
- "CcyNbr": "484",
- "WthdrwlDt": "1993-01"
- },
- {
- "CtryNm": "MOLDOVA, REPUBLIC OF",
- "CcyNm": "Russian Ruble",
- "Ccy": "RUR",
- "CcyNbr": "810",
- "WthdrwlDt": "1993-12"
- },
- {
- "CtryNm": "MONACO",
- "CcyNm": "French Franc",
- "Ccy": "FRF",
- "CcyNbr": "250",
- "WthdrwlDt": "2002-03"
- },
- {
- "CtryNm": "MOZAMBIQUE",
- "CcyNm": "Mozambique Escudo",
- "Ccy": "MZE",
- "CcyNbr": "508",
- "WthdrwlDt": "1978 to 1981"
- },
- {
- "CtryNm": "MOZAMBIQUE",
- "CcyNm": "Mozambique Metical",
- "Ccy": "MZM",
- "CcyNbr": "508",
- "WthdrwlDt": "2006-06"
- },
- {
- "CtryNm": "NETHERLANDS",
- "CcyNm": "Netherlands Guilder",
- "Ccy": "NLG",
- "CcyNbr": "528",
- "WthdrwlDt": "2002-03"
- },
- {
- "CtryNm": "NETHERLANDS ANTILLES",
- "CcyNm": "Netherlands Antillean Guilder",
- "Ccy": "ANG",
- "CcyNbr": "532",
- "WthdrwlDt": "2010-10"
- },
- {
- "CtryNm": "NICARAGUA",
- "CcyNm": "Cordoba",
- "Ccy": "NIC",
- "CcyNbr": "558",
- "WthdrwlDt": "1990-10"
- },
- {
- "CtryNm": "PERU",
- "CcyNm": "Sol",
- "Ccy": "PEH",
- "CcyNbr": "604",
- "WthdrwlDt": "1989 to 1990"
- },
- {
- "CtryNm": "PERU",
- "CcyNm": "Inti",
- "Ccy": "PEI",
- "CcyNbr": "604",
- "WthdrwlDt": "1991-07"
- },
- {
- "CtryNm": "PERU",
- "CcyNm": "Nuevo Sol",
- "Ccy": "PEN",
- "CcyNbr": "604",
- "WthdrwlDt": "2015-12"
- },
- {
- "CtryNm": "PERU",
- "CcyNm": "Sol",
- "Ccy": "PES",
- "CcyNbr": "604",
- "WthdrwlDt": "1986-02"
- },
- {
- "CtryNm": "POLAND",
- "CcyNm": "Zloty",
- "Ccy": "PLZ",
- "CcyNbr": "616",
- "WthdrwlDt": "1997-01"
- },
- {
- "CtryNm": "PORTUGAL",
- "CcyNm": "Portuguese Escudo",
- "Ccy": "PTE",
- "CcyNbr": "620",
- "WthdrwlDt": "2002-03"
- },
- {
- "CtryNm": "RÉUNION",
- "CcyNm": "French Franc",
- "Ccy": "FRF",
- "CcyNbr": "250",
- "WthdrwlDt": "2002-03"
- },
- {
- "CtryNm": "ROMANIA",
- "CcyNm": "Leu A/52",
- "Ccy": "ROK",
- "CcyNbr": "642",
- "WthdrwlDt": "1989 to 1990"
- },
- {
- "CtryNm": "ROMANIA",
- "CcyNm": "Old Leu",
- "Ccy": "ROL",
- "CcyNbr": "642",
- "WthdrwlDt": "2005-06"
- },
- {
- "CtryNm": "ROMANIA",
- "CcyNm": "New Romanian Leu",
- "Ccy": "RON",
- "CcyNbr": "946",
- "WthdrwlDt": "2015-06"
- },
- {
- "CtryNm": "RUSSIAN FEDERATION",
- "CcyNm": "Russian Ruble",
- "Ccy": "RUR",
- "CcyNbr": "810",
- "WthdrwlDt": "2004-01"
- },
- {
- "CtryNm": "SAINT MARTIN",
- "CcyNm": "French Franc",
- "Ccy": "FRF",
- "CcyNbr": "250",
- "WthdrwlDt": "1999-01"
- },
- {
- "CtryNm": "SAINT PIERRE AND MIQUELON",
- "CcyNm": "French Franc",
- "Ccy": "FRF",
- "CcyNbr": "250",
- "WthdrwlDt": "2002-03"
- },
- {
- "CtryNm": "SAINT-BARTHÉLEMY",
- "CcyNm": "French Franc",
- "Ccy": "FRF",
- "CcyNbr": "250",
- "WthdrwlDt": "1999-01"
- },
- {
- "CtryNm": "SAN MARINO",
- "CcyNm": "Italian Lira",
- "Ccy": "ITL",
- "CcyNbr": "380",
- "WthdrwlDt": "2002-03"
- },
- {
- "CtryNm": "SAO TOME AND PRINCIPE",
- "CcyNm": "Dobra",
- "Ccy": "STD",
- "CcyNbr": "678",
- "WthdrwlDt": "2017-12"
- },
- {
- "CtryNm": "SERBIA AND MONTENEGRO",
- "CcyNm": "Serbian Dinar",
- "Ccy": "CSD",
- "CcyNbr": "891",
- "WthdrwlDt": "2006-10"
- },
- {
- "CtryNm": "SERBIA AND MONTENEGRO",
- "CcyNm": "Euro",
- "Ccy": "EUR",
- "CcyNbr": "978",
- "WthdrwlDt": "2006-10"
- },
- {
- "CtryNm": "SIERRA LEONE",
- "CcyNm": "Leone",
- "Ccy": "SLL",
- "CcyNbr": "694",
- "WthdrwlDt": "2023-12"
- },
- {
- "CtryNm": "SINT MAARTEN (DUTCH PART)",
- "CcyNm": "Netherlands Antillean Guilder",
- "Ccy": "ANG",
- "CcyNbr": "532",
- "WthdrwlDt": "2025-03"
- },
- {
- "CtryNm": "SLOVAKIA",
- "CcyNm": "Slovak Koruna",
- "Ccy": "SKK",
- "CcyNbr": "703",
- "WthdrwlDt": "2009-01"
- },
- {
- "CtryNm": "SLOVENIA",
- "CcyNm": "Tolar",
- "Ccy": "SIT",
- "CcyNbr": "705",
- "WthdrwlDt": "2007-01"
- },
- {
- "CtryNm": "SOUTH AFRICA",
- "CcyNm": "Financial Rand",
- "Ccy": "ZAL",
- "CcyNbr": "991",
- "WthdrwlDt": "1995-03"
- },
- {
- "CtryNm": "SOUTH SUDAN",
- "CcyNm": "Sudanese Pound",
- "Ccy": "SDG",
- "CcyNbr": "938",
- "WthdrwlDt": "2012-09"
- },
- {
- "CtryNm": "SOUTHERN RHODESIA",
- "CcyNm": "Rhodesian Dollar",
- "Ccy": "RHD",
- "CcyNbr": "716",
- "WthdrwlDt": "1978 to 1981"
- },
- {
- "CtryNm": "SPAIN",
- "CcyNm": "Spanish Peseta",
- "Ccy": "ESA",
- "CcyNbr": "996",
- "WthdrwlDt": "1978 to 1981"
- },
- {
- "CtryNm": "SPAIN",
- "CcyNm": "\"A\" Account (convertible Peseta Account)",
- "Ccy": "ESB",
- "CcyNbr": "995",
- "WthdrwlDt": "1994-12"
- },
- {
- "CtryNm": "SPAIN",
- "CcyNm": "Spanish Peseta",
- "Ccy": "ESP",
- "CcyNbr": "724",
- "WthdrwlDt": "2002-03"
- },
- {
- "CtryNm": "SUDAN",
- "CcyNm": "Sudanese Dinar",
- "Ccy": "SDD",
- "CcyNbr": "736",
- "WthdrwlDt": "2007-07"
- },
- {
- "CtryNm": "SUDAN",
- "CcyNm": "Sudanese Pound",
- "Ccy": "SDP",
- "CcyNbr": "736",
- "WthdrwlDt": "1998-06"
- },
- {
- "CtryNm": "SURINAME",
- "CcyNm": "Surinam Guilder",
- "Ccy": "SRG",
- "CcyNbr": "740",
- "WthdrwlDt": "2003-12"
- },
- {
- "CtryNm": "SWAZILAND",
- "CcyNm": "Lilangeni",
- "Ccy": "SZL",
- "CcyNbr": "748",
- "WthdrwlDt": "2018-08"
- },
- {
- "CtryNm": "SWITZERLAND",
- "CcyNm": "WIR Franc (for electronic)",
- "Ccy": "CHC",
- "CcyNbr": "948",
- "WthdrwlDt": "2004-11"
- },
- {
- "CtryNm": "TAJIKISTAN",
- "CcyNm": "Russian Ruble",
- "Ccy": "RUR",
- "CcyNbr": "810",
- "WthdrwlDt": "1995-05"
- },
- {
- "CtryNm": "TAJIKISTAN",
- "CcyNm": "Tajik Ruble",
- "Ccy": "TJR",
- "CcyNbr": "762",
- "WthdrwlDt": "2001-04"
- },
- {
- "CtryNm": "TIMOR-LESTE",
- "CcyNm": "Rupiah",
- "Ccy": "IDR",
- "CcyNbr": "360",
- "WthdrwlDt": "2002-07"
- },
- {
- "CtryNm": "TIMOR-LESTE",
- "CcyNm": "Timor Escudo",
- "Ccy": "TPE",
- "CcyNbr": "626",
- "WthdrwlDt": "2002-11"
- },
- {
- "CtryNm": "TURKEY",
- "CcyNm": "Old Turkish Lira",
- "Ccy": "TRL",
- "CcyNbr": "792",
- "WthdrwlDt": "2005-12"
- },
- {
- "CtryNm": "TURKEY",
- "CcyNm": "New Turkish Lira",
- "Ccy": "TRY",
- "CcyNbr": "949",
- "WthdrwlDt": "2009-01"
- },
- {
- "CtryNm": "TURKMENISTAN",
- "CcyNm": "Russian Ruble",
- "Ccy": "RUR",
- "CcyNbr": "810",
- "WthdrwlDt": "1993-10"
- },
- {
- "CtryNm": "TURKMENISTAN",
- "CcyNm": "Turkmenistan Manat",
- "Ccy": "TMM",
- "CcyNbr": "795",
- "WthdrwlDt": "2009-01"
- },
- {
- "CtryNm": "UGANDA",
- "CcyNm": "Uganda Shilling",
- "Ccy": "UGS",
- "CcyNbr": "800",
- "WthdrwlDt": "1987-05"
- },
- {
- "CtryNm": "UGANDA",
- "CcyNm": "Old Shilling",
- "Ccy": "UGW",
- "CcyNbr": "800",
- "WthdrwlDt": "1989 to 1990"
- },
- {
- "CtryNm": "UKRAINE",
- "CcyNm": "Karbovanet",
- "Ccy": "UAK",
- "CcyNbr": "804",
- "WthdrwlDt": "1996-09"
- },
- {
- "CtryNm": "UNION OF SOVIET SOCIALIST REPUBLICS",
- "CcyNm": "Rouble",
- "Ccy": "SUR",
- "CcyNbr": "810",
- "WthdrwlDt": "1990-12"
- },
- {
- "CtryNm": "UNITED STATES",
- "CcyNm": "US Dollar (Same day)",
- "Ccy": "USS",
- "CcyNbr": "998",
- "WthdrwlDt": "2014-03"
- },
- {
- "CtryNm": "URUGUAY",
- "CcyNm": "Old Uruguay Peso",
- "Ccy": "UYN",
- "CcyNbr": "858",
- "WthdrwlDt": "1989-12"
- },
- {
- "CtryNm": "URUGUAY",
- "CcyNm": "Uruguayan Peso",
- "Ccy": "UYP",
- "CcyNbr": "858",
- "WthdrwlDt": "1993-03"
- },
- {
- "CtryNm": "UZBEKISTAN",
- "CcyNm": "Russian Ruble",
- "Ccy": "RUR",
- "CcyNbr": "810",
- "WthdrwlDt": "1994-07"
- },
- {
- "CtryNm": "VENEZUELA",
- "CcyNm": "Bolivar",
- "Ccy": "VEB",
- "CcyNbr": "862",
- "WthdrwlDt": "2008-01"
- },
- {
- "CtryNm": "VENEZUELA",
- "CcyNm": "Bolivar Fuerte",
- "Ccy": "VEF",
- "CcyNbr": "937",
- "WthdrwlDt": "2011-12"
- },
- {
- "CtryNm": "VENEZUELA (BOLIVARIAN REPUBLIC OF)",
- "CcyNm": "Bolivar",
- "Ccy": "VEF",
- "CcyNbr": "937",
- "WthdrwlDt": "2016-02"
- },
- {
- "CtryNm": "VENEZUELA (BOLIVARIAN REPUBLIC OF)",
- "CcyNm": "Bolívar",
- "Ccy": "VEF",
- "CcyNbr": "937",
- "WthdrwlDt": "2018-08"
- },
- {
- "CtryNm": "VIETNAM",
- "CcyNm": "Old Dong",
- "Ccy": "VNC",
- "CcyNbr": "704",
- "WthdrwlDt": "1989-1990"
- },
- {
- "CtryNm": "YEMEN, DEMOCRATIC",
- "CcyNm": "Yemeni Dinar",
- "Ccy": "YDD",
- "CcyNbr": "720",
- "WthdrwlDt": "1991-09"
- },
- {
- "CtryNm": "YUGOSLAVIA",
- "CcyNm": "New Yugoslavian Dinar",
- "Ccy": "YUD",
- "CcyNbr": "890",
- "WthdrwlDt": "1990-01"
- },
- {
- "CtryNm": "YUGOSLAVIA",
- "CcyNm": "New Dinar",
- "Ccy": "YUM",
- "CcyNbr": "891",
- "WthdrwlDt": "2003-07"
- },
- {
- "CtryNm": "YUGOSLAVIA",
- "CcyNm": "Yugoslavian Dinar",
- "Ccy": "YUN",
- "CcyNbr": "890",
- "WthdrwlDt": "1995-11"
- },
- {
- "CtryNm": "ZAIRE",
- "CcyNm": "New Zaire",
- "Ccy": "ZRN",
- "CcyNbr": "180",
- "WthdrwlDt": "1999-06"
- },
- {
- "CtryNm": "ZAIRE",
- "CcyNm": "Zaire",
- "Ccy": "ZRZ",
- "CcyNbr": "180",
- "WthdrwlDt": "1994-02"
- },
- {
- "CtryNm": "ZAMBIA",
- "CcyNm": "Zambian Kwacha",
- "Ccy": "ZMK",
- "CcyNbr": "894",
- "WthdrwlDt": "2012-12"
- },
- {
- "CtryNm": "ZIMBABWE",
- "CcyNm": "Rhodesian Dollar",
- "Ccy": "ZWC",
- "CcyNbr": "716",
- "WthdrwlDt": "1989-12"
- },
- {
- "CtryNm": "ZIMBABWE",
- "CcyNm": "Zimbabwe Dollar (old)",
- "Ccy": "ZWD",
- "CcyNbr": "716",
- "WthdrwlDt": "2006-08"
- },
- {
- "CtryNm": "ZIMBABWE",
- "CcyNm": "Zimbabwe Dollar",
- "Ccy": "ZWD",
- "CcyNbr": "716",
- "WthdrwlDt": "2008-08"
- },
- {
- "CtryNm": "ZIMBABWE",
- "CcyNm": "Zimbabwe Dollar (new)",
- "Ccy": "ZWN",
- "CcyNbr": "942",
- "WthdrwlDt": "2006-09"
- },
- {
- "CtryNm": "ZIMBABWE",
- "CcyNm": "Zimbabwe Dollar",
- "Ccy": "ZWR",
- "CcyNbr": "935",
- "WthdrwlDt": "2009-06"
- },
- {
- "CtryNm": "ZIMBABWE",
- "CcyNm": "Zimbabwe Dollar",
- "Ccy": "ZWL",
- "CcyNbr": "932",
- "WthdrwlDt": "2024-09"
- },
- {
- "CtryNm": "ZZ01_Gold-Franc",
- "CcyNm": "Gold-Franc",
- "Ccy": "XFO",
- "WthdrwlDt": "2006-10"
- },
- {
- "CtryNm": "ZZ02_RINET Funds Code",
- "CcyNm": {
- "_IsFund": "WAHR",
- "__text": "RINET Funds Code"
- },
- "Ccy": "XRE",
- "WthdrwlDt": "1999-11"
- },
- {
- "CtryNm": "ZZ05_UIC-Franc",
- "CcyNm": {
- "_IsFund": "WAHR",
- "__text": "UIC-Franc"
- },
- "Ccy": "XFU",
- "WthdrwlDt": "2013-11"
- }
- ]
- },
- "_Pblshd": "2025-03-31"
- }
-}
\ No newline at end of file
diff --git a/src/packages/HawkN.Iso.Currencies.Generators/Content/list-original-currencies.json b/src/packages/HawkN.Iso.Currencies.Generators/Content/list-original-currencies.json
deleted file mode 100644
index e3e84cc..0000000
--- a/src/packages/HawkN.Iso.Currencies.Generators/Content/list-original-currencies.json
+++ /dev/null
@@ -1,1984 +0,0 @@
-{
- "ISO_4217": {
- "CcyTbl": {
- "CcyNtry": [
- {
- "CtryNm": "AFGHANISTAN",
- "CcyNm": "Afghani",
- "Ccy": "AFN",
- "CcyNbr": "971",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "ÅLAND ISLANDS",
- "CcyNm": "Euro",
- "Ccy": "EUR",
- "CcyNbr": "978",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "ALBANIA",
- "CcyNm": "Lek",
- "Ccy": "ALL",
- "CcyNbr": "008",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "ALGERIA",
- "CcyNm": "Algerian Dinar",
- "Ccy": "DZD",
- "CcyNbr": "012",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "AMERICAN SAMOA",
- "CcyNm": "US Dollar",
- "Ccy": "USD",
- "CcyNbr": "840",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "ANDORRA",
- "CcyNm": "Euro",
- "Ccy": "EUR",
- "CcyNbr": "978",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "ANGOLA",
- "CcyNm": "Kwanza",
- "Ccy": "AOA",
- "CcyNbr": "973",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "ANGUILLA",
- "CcyNm": "East Caribbean Dollar",
- "Ccy": "XCD",
- "CcyNbr": "951",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "ANTARCTICA",
- "CcyNm": "No universal currency"
- },
- {
- "CtryNm": "ANTIGUA AND BARBUDA",
- "CcyNm": "East Caribbean Dollar",
- "Ccy": "XCD",
- "CcyNbr": "951",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "ARAB MONETARY FUND",
- "CcyNm": "Arab Accounting Dinar",
- "Ccy": "XAD",
- "CcyNbr": "396",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "ARGENTINA",
- "CcyNm": "Argentine Peso",
- "Ccy": "ARS",
- "CcyNbr": "032",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "ARMENIA",
- "CcyNm": "Armenian Dram",
- "Ccy": "AMD",
- "CcyNbr": "051",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "ARUBA",
- "CcyNm": "Aruban Florin",
- "Ccy": "AWG",
- "CcyNbr": "533",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "AUSTRALIA",
- "CcyNm": "Australian Dollar",
- "Ccy": "AUD",
- "CcyNbr": "036",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "AUSTRIA",
- "CcyNm": "Euro",
- "Ccy": "EUR",
- "CcyNbr": "978",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "AZERBAIJAN",
- "CcyNm": "Azerbaijan Manat",
- "Ccy": "AZN",
- "CcyNbr": "944",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "BAHAMAS (THE)",
- "CcyNm": "Bahamian Dollar",
- "Ccy": "BSD",
- "CcyNbr": "044",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "BAHRAIN",
- "CcyNm": "Bahraini Dinar",
- "Ccy": "BHD",
- "CcyNbr": "048",
- "CcyMnrUnts": "3"
- },
- {
- "CtryNm": "BANGLADESH",
- "CcyNm": "Taka",
- "Ccy": "BDT",
- "CcyNbr": "050",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "BARBADOS",
- "CcyNm": "Barbados Dollar",
- "Ccy": "BBD",
- "CcyNbr": "052",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "BELARUS",
- "CcyNm": "Belarusian Ruble",
- "Ccy": "BYN",
- "CcyNbr": "933",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "BELGIUM",
- "CcyNm": "Euro",
- "Ccy": "EUR",
- "CcyNbr": "978",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "BELIZE",
- "CcyNm": "Belize Dollar",
- "Ccy": "BZD",
- "CcyNbr": "084",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "BENIN",
- "CcyNm": "CFA Franc BCEAO",
- "Ccy": "XOF",
- "CcyNbr": "952",
- "CcyMnrUnts": "0"
- },
- {
- "CtryNm": "BERMUDA",
- "CcyNm": "Bermudian Dollar",
- "Ccy": "BMD",
- "CcyNbr": "060",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "BHUTAN",
- "CcyNm": "Indian Rupee",
- "Ccy": "INR",
- "CcyNbr": "356",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "BHUTAN",
- "CcyNm": "Ngultrum",
- "Ccy": "BTN",
- "CcyNbr": "064",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "BOLIVIA (PLURINATIONAL STATE OF)",
- "CcyNm": "Boliviano",
- "Ccy": "BOB",
- "CcyNbr": "068",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "BOLIVIA (PLURINATIONAL STATE OF)",
- "CcyNm": {
- "_IsFund": "true",
- "__text": "Mvdol"
- },
- "Ccy": "BOV",
- "CcyNbr": "984",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "BONAIRE, SINT EUSTATIUS AND SABA",
- "CcyNm": "US Dollar",
- "Ccy": "USD",
- "CcyNbr": "840",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "BOSNIA AND HERZEGOVINA",
- "CcyNm": "Convertible Mark",
- "Ccy": "BAM",
- "CcyNbr": "977",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "BOTSWANA",
- "CcyNm": "Pula",
- "Ccy": "BWP",
- "CcyNbr": "072",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "BOUVET ISLAND",
- "CcyNm": "Norwegian Krone",
- "Ccy": "NOK",
- "CcyNbr": "578",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "BRAZIL",
- "CcyNm": "Brazilian Real",
- "Ccy": "BRL",
- "CcyNbr": "986",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "BRITISH INDIAN OCEAN TERRITORY (THE)",
- "CcyNm": "US Dollar",
- "Ccy": "USD",
- "CcyNbr": "840",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "BRUNEI DARUSSALAM",
- "CcyNm": "Brunei Dollar",
- "Ccy": "BND",
- "CcyNbr": "096",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "BULGARIA",
- "CcyNm": "Bulgarian Lev",
- "Ccy": "BGN",
- "CcyNbr": "975",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "BURKINA FASO",
- "CcyNm": "CFA Franc BCEAO",
- "Ccy": "XOF",
- "CcyNbr": "952",
- "CcyMnrUnts": "0"
- },
- {
- "CtryNm": "BURUNDI",
- "CcyNm": "Burundi Franc",
- "Ccy": "BIF",
- "CcyNbr": "108",
- "CcyMnrUnts": "0"
- },
- {
- "CtryNm": "CABO VERDE",
- "CcyNm": "Cabo Verde Escudo",
- "Ccy": "CVE",
- "CcyNbr": "132",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "CAMBODIA",
- "CcyNm": "Riel",
- "Ccy": "KHR",
- "CcyNbr": "116",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "CAMEROON",
- "CcyNm": "CFA Franc BEAC",
- "Ccy": "XAF",
- "CcyNbr": "950",
- "CcyMnrUnts": "0"
- },
- {
- "CtryNm": "CANADA",
- "CcyNm": "Canadian Dollar",
- "Ccy": "CAD",
- "CcyNbr": "124",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "CAYMAN ISLANDS (THE)",
- "CcyNm": "Cayman Islands Dollar",
- "Ccy": "KYD",
- "CcyNbr": "136",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "CENTRAL AFRICAN REPUBLIC (THE)",
- "CcyNm": "CFA Franc BEAC",
- "Ccy": "XAF",
- "CcyNbr": "950",
- "CcyMnrUnts": "0"
- },
- {
- "CtryNm": "CHAD",
- "CcyNm": "CFA Franc BEAC",
- "Ccy": "XAF",
- "CcyNbr": "950",
- "CcyMnrUnts": "0"
- },
- {
- "CtryNm": "CHILE",
- "CcyNm": "Chilean Peso",
- "Ccy": "CLP",
- "CcyNbr": "152",
- "CcyMnrUnts": "0"
- },
- {
- "CtryNm": "CHILE",
- "CcyNm": {
- "_IsFund": "true",
- "__text": "Unidad de Fomento"
- },
- "Ccy": "CLF",
- "CcyNbr": "990",
- "CcyMnrUnts": "4"
- },
- {
- "CtryNm": "CHINA",
- "CcyNm": "Yuan Renminbi",
- "Ccy": "CNY",
- "CcyNbr": "156",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "CHRISTMAS ISLAND",
- "CcyNm": "Australian Dollar",
- "Ccy": "AUD",
- "CcyNbr": "036",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "COCOS (KEELING) ISLANDS (THE)",
- "CcyNm": "Australian Dollar",
- "Ccy": "AUD",
- "CcyNbr": "036",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "COLOMBIA",
- "CcyNm": "Colombian Peso",
- "Ccy": "COP",
- "CcyNbr": "170",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "COLOMBIA",
- "CcyNm": {
- "_IsFund": "true",
- "__text": "Unidad de Valor Real"
- },
- "Ccy": "COU",
- "CcyNbr": "970",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "COMOROS (THE)",
- "CcyNm": "Comorian Franc",
- "Ccy": "KMF",
- "CcyNbr": "174",
- "CcyMnrUnts": "0"
- },
- {
- "CtryNm": "CONGO (THE DEMOCRATIC REPUBLIC OF THE)",
- "CcyNm": "Congolese Franc",
- "Ccy": "CDF",
- "CcyNbr": "976",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "CONGO (THE)",
- "CcyNm": "CFA Franc BEAC",
- "Ccy": "XAF",
- "CcyNbr": "950",
- "CcyMnrUnts": "0"
- },
- {
- "CtryNm": "COOK ISLANDS (THE)",
- "CcyNm": "New Zealand Dollar",
- "Ccy": "NZD",
- "CcyNbr": "554",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "COSTA RICA",
- "CcyNm": "Costa Rican Colon",
- "Ccy": "CRC",
- "CcyNbr": "188",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "CÔTE D'IVOIRE",
- "CcyNm": "CFA Franc BCEAO",
- "Ccy": "XOF",
- "CcyNbr": "952",
- "CcyMnrUnts": "0"
- },
- {
- "CtryNm": "CROATIA",
- "CcyNm": "Euro",
- "Ccy": "EUR",
- "CcyNbr": "978",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "CUBA",
- "CcyNm": "Cuban Peso",
- "Ccy": "CUP",
- "CcyNbr": "192",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "CURAÇAO",
- "CcyNm": "Caribbean Guilder",
- "Ccy": "XCG",
- "CcyNbr": "532",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "CYPRUS",
- "CcyNm": "Euro",
- "Ccy": "EUR",
- "CcyNbr": "978",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "CZECHIA",
- "CcyNm": "Czech Koruna",
- "Ccy": "CZK",
- "CcyNbr": "203",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "DENMARK",
- "CcyNm": "Danish Krone",
- "Ccy": "DKK",
- "CcyNbr": "208",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "DJIBOUTI",
- "CcyNm": "Djibouti Franc",
- "Ccy": "DJF",
- "CcyNbr": "262",
- "CcyMnrUnts": "0"
- },
- {
- "CtryNm": "DOMINICA",
- "CcyNm": "East Caribbean Dollar",
- "Ccy": "XCD",
- "CcyNbr": "951",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "DOMINICAN REPUBLIC (THE)",
- "CcyNm": "Dominican Peso",
- "Ccy": "DOP",
- "CcyNbr": "214",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "ECUADOR",
- "CcyNm": "US Dollar",
- "Ccy": "USD",
- "CcyNbr": "840",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "EGYPT",
- "CcyNm": "Egyptian Pound",
- "Ccy": "EGP",
- "CcyNbr": "818",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "EL SALVADOR",
- "CcyNm": "El Salvador Colon",
- "Ccy": "SVC",
- "CcyNbr": "222",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "EL SALVADOR",
- "CcyNm": "US Dollar",
- "Ccy": "USD",
- "CcyNbr": "840",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "EQUATORIAL GUINEA",
- "CcyNm": "CFA Franc BEAC",
- "Ccy": "XAF",
- "CcyNbr": "950",
- "CcyMnrUnts": "0"
- },
- {
- "CtryNm": "ERITREA",
- "CcyNm": "Nakfa",
- "Ccy": "ERN",
- "CcyNbr": "232",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "ESTONIA",
- "CcyNm": "Euro",
- "Ccy": "EUR",
- "CcyNbr": "978",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "ESWATINI",
- "CcyNm": "Lilangeni",
- "Ccy": "SZL",
- "CcyNbr": "748",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "ETHIOPIA",
- "CcyNm": "Ethiopian Birr",
- "Ccy": "ETB",
- "CcyNbr": "230",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "EUROPEAN UNION",
- "CcyNm": "Euro",
- "Ccy": "EUR",
- "CcyNbr": "978",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "FALKLAND ISLANDS (THE) [MALVINAS]",
- "CcyNm": "Falkland Islands Pound",
- "Ccy": "FKP",
- "CcyNbr": "238",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "FAROE ISLANDS (THE)",
- "CcyNm": "Danish Krone",
- "Ccy": "DKK",
- "CcyNbr": "208",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "FIJI",
- "CcyNm": "Fiji Dollar",
- "Ccy": "FJD",
- "CcyNbr": "242",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "FINLAND",
- "CcyNm": "Euro",
- "Ccy": "EUR",
- "CcyNbr": "978",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "FRANCE",
- "CcyNm": "Euro",
- "Ccy": "EUR",
- "CcyNbr": "978",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "FRENCH GUIANA",
- "CcyNm": "Euro",
- "Ccy": "EUR",
- "CcyNbr": "978",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "FRENCH POLYNESIA",
- "CcyNm": "CFP Franc",
- "Ccy": "XPF",
- "CcyNbr": "953",
- "CcyMnrUnts": "0"
- },
- {
- "CtryNm": "FRENCH SOUTHERN TERRITORIES (THE)",
- "CcyNm": "Euro",
- "Ccy": "EUR",
- "CcyNbr": "978",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "GABON",
- "CcyNm": "CFA Franc BEAC",
- "Ccy": "XAF",
- "CcyNbr": "950",
- "CcyMnrUnts": "0"
- },
- {
- "CtryNm": "GAMBIA (THE)",
- "CcyNm": "Dalasi",
- "Ccy": "GMD",
- "CcyNbr": "270",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "GEORGIA",
- "CcyNm": "Lari",
- "Ccy": "GEL",
- "CcyNbr": "981",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "GERMANY",
- "CcyNm": "Euro",
- "Ccy": "EUR",
- "CcyNbr": "978",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "GHANA",
- "CcyNm": "Ghana Cedi",
- "Ccy": "GHS",
- "CcyNbr": "936",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "GIBRALTAR",
- "CcyNm": "Gibraltar Pound",
- "Ccy": "GIP",
- "CcyNbr": "292",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "GREECE",
- "CcyNm": "Euro",
- "Ccy": "EUR",
- "CcyNbr": "978",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "GREENLAND",
- "CcyNm": "Danish Krone",
- "Ccy": "DKK",
- "CcyNbr": "208",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "GRENADA",
- "CcyNm": "East Caribbean Dollar",
- "Ccy": "XCD",
- "CcyNbr": "951",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "GUADELOUPE",
- "CcyNm": "Euro",
- "Ccy": "EUR",
- "CcyNbr": "978",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "GUAM",
- "CcyNm": "US Dollar",
- "Ccy": "USD",
- "CcyNbr": "840",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "GUATEMALA",
- "CcyNm": "Quetzal",
- "Ccy": "GTQ",
- "CcyNbr": "320",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "GUERNSEY",
- "CcyNm": "Pound Sterling",
- "Ccy": "GBP",
- "CcyNbr": "826",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "GUINEA",
- "CcyNm": "Guinean Franc",
- "Ccy": "GNF",
- "CcyNbr": "324",
- "CcyMnrUnts": "0"
- },
- {
- "CtryNm": "GUINEA-BISSAU",
- "CcyNm": "CFA Franc BCEAO",
- "Ccy": "XOF",
- "CcyNbr": "952",
- "CcyMnrUnts": "0"
- },
- {
- "CtryNm": "GUYANA",
- "CcyNm": "Guyana Dollar",
- "Ccy": "GYD",
- "CcyNbr": "328",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "HAITI",
- "CcyNm": "Gourde",
- "Ccy": "HTG",
- "CcyNbr": "332",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "HAITI",
- "CcyNm": "US Dollar",
- "Ccy": "USD",
- "CcyNbr": "840",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "HEARD ISLAND AND McDONALD ISLANDS",
- "CcyNm": "Australian Dollar",
- "Ccy": "AUD",
- "CcyNbr": "036",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "HOLY SEE (THE)",
- "CcyNm": "Euro",
- "Ccy": "EUR",
- "CcyNbr": "978",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "HONDURAS",
- "CcyNm": "Lempira",
- "Ccy": "HNL",
- "CcyNbr": "340",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "HONG KONG",
- "CcyNm": "Hong Kong Dollar",
- "Ccy": "HKD",
- "CcyNbr": "344",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "HUNGARY",
- "CcyNm": "Forint",
- "Ccy": "HUF",
- "CcyNbr": "348",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "ICELAND",
- "CcyNm": "Iceland Krona",
- "Ccy": "ISK",
- "CcyNbr": "352",
- "CcyMnrUnts": "0"
- },
- {
- "CtryNm": "INDIA",
- "CcyNm": "Indian Rupee",
- "Ccy": "INR",
- "CcyNbr": "356",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "INDONESIA",
- "CcyNm": "Rupiah",
- "Ccy": "IDR",
- "CcyNbr": "360",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "INTERNATIONAL MONETARY FUND (IMF)",
- "CcyNm": "SDR (Special Drawing Right)",
- "Ccy": "XDR",
- "CcyNbr": "960",
- "CcyMnrUnts": "N.A."
- },
- {
- "CtryNm": "IRAN (ISLAMIC REPUBLIC OF)",
- "CcyNm": "Iranian Rial",
- "Ccy": "IRR",
- "CcyNbr": "364",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "IRAQ",
- "CcyNm": "Iraqi Dinar",
- "Ccy": "IQD",
- "CcyNbr": "368",
- "CcyMnrUnts": "3"
- },
- {
- "CtryNm": "IRELAND",
- "CcyNm": "Euro",
- "Ccy": "EUR",
- "CcyNbr": "978",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "ISLE OF MAN",
- "CcyNm": "Pound Sterling",
- "Ccy": "GBP",
- "CcyNbr": "826",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "ISRAEL",
- "CcyNm": "New Israeli Sheqel",
- "Ccy": "ILS",
- "CcyNbr": "376",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "ITALY",
- "CcyNm": "Euro",
- "Ccy": "EUR",
- "CcyNbr": "978",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "JAMAICA",
- "CcyNm": "Jamaican Dollar",
- "Ccy": "JMD",
- "CcyNbr": "388",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "JAPAN",
- "CcyNm": "Yen",
- "Ccy": "JPY",
- "CcyNbr": "392",
- "CcyMnrUnts": "0"
- },
- {
- "CtryNm": "JERSEY",
- "CcyNm": "Pound Sterling",
- "Ccy": "GBP",
- "CcyNbr": "826",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "JORDAN",
- "CcyNm": "Jordanian Dinar",
- "Ccy": "JOD",
- "CcyNbr": "400",
- "CcyMnrUnts": "3"
- },
- {
- "CtryNm": "KAZAKHSTAN",
- "CcyNm": "Tenge",
- "Ccy": "KZT",
- "CcyNbr": "398",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "KENYA",
- "CcyNm": "Kenyan Shilling",
- "Ccy": "KES",
- "CcyNbr": "404",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "KIRIBATI",
- "CcyNm": "Australian Dollar",
- "Ccy": "AUD",
- "CcyNbr": "036",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "KOREA (THE DEMOCRATIC PEOPLE’S REPUBLIC OF)",
- "CcyNm": "North Korean Won",
- "Ccy": "KPW",
- "CcyNbr": "408",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "KOREA (THE REPUBLIC OF)",
- "CcyNm": "Won",
- "Ccy": "KRW",
- "CcyNbr": "410",
- "CcyMnrUnts": "0"
- },
- {
- "CtryNm": "KUWAIT",
- "CcyNm": "Kuwaiti Dinar",
- "Ccy": "KWD",
- "CcyNbr": "414",
- "CcyMnrUnts": "3"
- },
- {
- "CtryNm": "KYRGYZSTAN",
- "CcyNm": "Som",
- "Ccy": "KGS",
- "CcyNbr": "417",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "LAO PEOPLE’S DEMOCRATIC REPUBLIC (THE)",
- "CcyNm": "Lao Kip",
- "Ccy": "LAK",
- "CcyNbr": "418",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "LATVIA",
- "CcyNm": "Euro",
- "Ccy": "EUR",
- "CcyNbr": "978",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "LEBANON",
- "CcyNm": "Lebanese Pound",
- "Ccy": "LBP",
- "CcyNbr": "422",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "LESOTHO",
- "CcyNm": "Loti",
- "Ccy": "LSL",
- "CcyNbr": "426",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "LESOTHO",
- "CcyNm": "Rand",
- "Ccy": "ZAR",
- "CcyNbr": "710",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "LIBERIA",
- "CcyNm": "Liberian Dollar",
- "Ccy": "LRD",
- "CcyNbr": "430",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "LIBYA",
- "CcyNm": "Libyan Dinar",
- "Ccy": "LYD",
- "CcyNbr": "434",
- "CcyMnrUnts": "3"
- },
- {
- "CtryNm": "LIECHTENSTEIN",
- "CcyNm": "Swiss Franc",
- "Ccy": "CHF",
- "CcyNbr": "756",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "LITHUANIA",
- "CcyNm": "Euro",
- "Ccy": "EUR",
- "CcyNbr": "978",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "LUXEMBOURG",
- "CcyNm": "Euro",
- "Ccy": "EUR",
- "CcyNbr": "978",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "MACAO",
- "CcyNm": "Pataca",
- "Ccy": "MOP",
- "CcyNbr": "446",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "NORTH MACEDONIA",
- "CcyNm": "Denar",
- "Ccy": "MKD",
- "CcyNbr": "807",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "MADAGASCAR",
- "CcyNm": "Malagasy Ariary",
- "Ccy": "MGA",
- "CcyNbr": "969",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "MALAWI",
- "CcyNm": "Malawi Kwacha",
- "Ccy": "MWK",
- "CcyNbr": "454",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "MALAYSIA",
- "CcyNm": "Malaysian Ringgit",
- "Ccy": "MYR",
- "CcyNbr": "458",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "MALDIVES",
- "CcyNm": "Rufiyaa",
- "Ccy": "MVR",
- "CcyNbr": "462",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "MALI",
- "CcyNm": "CFA Franc BCEAO",
- "Ccy": "XOF",
- "CcyNbr": "952",
- "CcyMnrUnts": "0"
- },
- {
- "CtryNm": "MALTA",
- "CcyNm": "Euro",
- "Ccy": "EUR",
- "CcyNbr": "978",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "MARSHALL ISLANDS (THE)",
- "CcyNm": "US Dollar",
- "Ccy": "USD",
- "CcyNbr": "840",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "MARTINIQUE",
- "CcyNm": "Euro",
- "Ccy": "EUR",
- "CcyNbr": "978",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "MAURITANIA",
- "CcyNm": "Ouguiya",
- "Ccy": "MRU",
- "CcyNbr": "929",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "MAURITIUS",
- "CcyNm": "Mauritius Rupee",
- "Ccy": "MUR",
- "CcyNbr": "480",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "MAYOTTE",
- "CcyNm": "Euro",
- "Ccy": "EUR",
- "CcyNbr": "978",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "MEMBER COUNTRIES OF THE AFRICAN DEVELOPMENT BANK GROUP",
- "CcyNm": "ADB Unit of Account",
- "Ccy": "XUA",
- "CcyNbr": "965",
- "CcyMnrUnts": "N.A."
- },
- {
- "CtryNm": "MEXICO",
- "CcyNm": "Mexican Peso",
- "Ccy": "MXN",
- "CcyNbr": "484",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "MEXICO",
- "CcyNm": {
- "_IsFund": "true",
- "__text": "Mexican Unidad de Inversion (UDI)"
- },
- "Ccy": "MXV",
- "CcyNbr": "979",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "MICRONESIA (FEDERATED STATES OF)",
- "CcyNm": "US Dollar",
- "Ccy": "USD",
- "CcyNbr": "840",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "MOLDOVA (THE REPUBLIC OF)",
- "CcyNm": "Moldovan Leu",
- "Ccy": "MDL",
- "CcyNbr": "498",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "MONACO",
- "CcyNm": "Euro",
- "Ccy": "EUR",
- "CcyNbr": "978",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "MONGOLIA",
- "CcyNm": "Tugrik",
- "Ccy": "MNT",
- "CcyNbr": "496",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "MONTENEGRO",
- "CcyNm": "Euro",
- "Ccy": "EUR",
- "CcyNbr": "978",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "MONTSERRAT",
- "CcyNm": "East Caribbean Dollar",
- "Ccy": "XCD",
- "CcyNbr": "951",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "MOROCCO",
- "CcyNm": "Moroccan Dirham",
- "Ccy": "MAD",
- "CcyNbr": "504",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "MOZAMBIQUE",
- "CcyNm": "Mozambique Metical",
- "Ccy": "MZN",
- "CcyNbr": "943",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "MYANMAR",
- "CcyNm": "Kyat",
- "Ccy": "MMK",
- "CcyNbr": "104",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "NAMIBIA",
- "CcyNm": "Namibia Dollar",
- "Ccy": "NAD",
- "CcyNbr": "516",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "NAMIBIA",
- "CcyNm": "Rand",
- "Ccy": "ZAR",
- "CcyNbr": "710",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "NAURU",
- "CcyNm": "Australian Dollar",
- "Ccy": "AUD",
- "CcyNbr": "036",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "NEPAL",
- "CcyNm": "Nepalese Rupee",
- "Ccy": "NPR",
- "CcyNbr": "524",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "NETHERLANDS (THE)",
- "CcyNm": "Euro",
- "Ccy": "EUR",
- "CcyNbr": "978",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "NEW CALEDONIA",
- "CcyNm": "CFP Franc",
- "Ccy": "XPF",
- "CcyNbr": "953",
- "CcyMnrUnts": "0"
- },
- {
- "CtryNm": "NEW ZEALAND",
- "CcyNm": "New Zealand Dollar",
- "Ccy": "NZD",
- "CcyNbr": "554",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "NICARAGUA",
- "CcyNm": "Cordoba Oro",
- "Ccy": "NIO",
- "CcyNbr": "558",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "NIGER (THE)",
- "CcyNm": "CFA Franc BCEAO",
- "Ccy": "XOF",
- "CcyNbr": "952",
- "CcyMnrUnts": "0"
- },
- {
- "CtryNm": "NIGERIA",
- "CcyNm": "Naira",
- "Ccy": "NGN",
- "CcyNbr": "566",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "NIUE",
- "CcyNm": "New Zealand Dollar",
- "Ccy": "NZD",
- "CcyNbr": "554",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "NORFOLK ISLAND",
- "CcyNm": "Australian Dollar",
- "Ccy": "AUD",
- "CcyNbr": "036",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "NORTHERN MARIANA ISLANDS (THE)",
- "CcyNm": "US Dollar",
- "Ccy": "USD",
- "CcyNbr": "840",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "NORWAY",
- "CcyNm": "Norwegian Krone",
- "Ccy": "NOK",
- "CcyNbr": "578",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "OMAN",
- "CcyNm": "Rial Omani",
- "Ccy": "OMR",
- "CcyNbr": "512",
- "CcyMnrUnts": "3"
- },
- {
- "CtryNm": "PAKISTAN",
- "CcyNm": "Pakistan Rupee",
- "Ccy": "PKR",
- "CcyNbr": "586",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "PALAU",
- "CcyNm": "US Dollar",
- "Ccy": "USD",
- "CcyNbr": "840",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "PALESTINE, STATE OF",
- "CcyNm": "No universal currency"
- },
- {
- "CtryNm": "PANAMA",
- "CcyNm": "Balboa",
- "Ccy": "PAB",
- "CcyNbr": "590",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "PANAMA",
- "CcyNm": "US Dollar",
- "Ccy": "USD",
- "CcyNbr": "840",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "PAPUA NEW GUINEA",
- "CcyNm": "Kina",
- "Ccy": "PGK",
- "CcyNbr": "598",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "PARAGUAY",
- "CcyNm": "Guarani",
- "Ccy": "PYG",
- "CcyNbr": "600",
- "CcyMnrUnts": "0"
- },
- {
- "CtryNm": "PERU",
- "CcyNm": "Sol",
- "Ccy": "PEN",
- "CcyNbr": "604",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "PHILIPPINES (THE)",
- "CcyNm": "Philippine Peso",
- "Ccy": "PHP",
- "CcyNbr": "608",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "PITCAIRN",
- "CcyNm": "New Zealand Dollar",
- "Ccy": "NZD",
- "CcyNbr": "554",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "POLAND",
- "CcyNm": "Zloty",
- "Ccy": "PLN",
- "CcyNbr": "985",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "PORTUGAL",
- "CcyNm": "Euro",
- "Ccy": "EUR",
- "CcyNbr": "978",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "PUERTO RICO",
- "CcyNm": "US Dollar",
- "Ccy": "USD",
- "CcyNbr": "840",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "QATAR",
- "CcyNm": "Qatari Rial",
- "Ccy": "QAR",
- "CcyNbr": "634",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "RÉUNION",
- "CcyNm": "Euro",
- "Ccy": "EUR",
- "CcyNbr": "978",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "ROMANIA",
- "CcyNm": "Romanian Leu",
- "Ccy": "RON",
- "CcyNbr": "946",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "RUSSIAN FEDERATION (THE)",
- "CcyNm": "Russian Ruble",
- "Ccy": "RUB",
- "CcyNbr": "643",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "RWANDA",
- "CcyNm": "Rwanda Franc",
- "Ccy": "RWF",
- "CcyNbr": "646",
- "CcyMnrUnts": "0"
- },
- {
- "CtryNm": "SAINT BARTHÉLEMY",
- "CcyNm": "Euro",
- "Ccy": "EUR",
- "CcyNbr": "978",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "SAINT HELENA, ASCENSION AND TRISTAN DA CUNHA",
- "CcyNm": "Saint Helena Pound",
- "Ccy": "SHP",
- "CcyNbr": "654",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "SAINT KITTS AND NEVIS",
- "CcyNm": "East Caribbean Dollar",
- "Ccy": "XCD",
- "CcyNbr": "951",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "SAINT LUCIA",
- "CcyNm": "East Caribbean Dollar",
- "Ccy": "XCD",
- "CcyNbr": "951",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "SAINT MARTIN (FRENCH PART)",
- "CcyNm": "Euro",
- "Ccy": "EUR",
- "CcyNbr": "978",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "SAINT PIERRE AND MIQUELON",
- "CcyNm": "Euro",
- "Ccy": "EUR",
- "CcyNbr": "978",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "SAINT VINCENT AND THE GRENADINES",
- "CcyNm": "East Caribbean Dollar",
- "Ccy": "XCD",
- "CcyNbr": "951",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "SAMOA",
- "CcyNm": "Tala",
- "Ccy": "WST",
- "CcyNbr": "882",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "SAN MARINO",
- "CcyNm": "Euro",
- "Ccy": "EUR",
- "CcyNbr": "978",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "SAO TOME AND PRINCIPE",
- "CcyNm": "Dobra",
- "Ccy": "STN",
- "CcyNbr": "930",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "SAUDI ARABIA",
- "CcyNm": "Saudi Riyal",
- "Ccy": "SAR",
- "CcyNbr": "682",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "SENEGAL",
- "CcyNm": "CFA Franc BCEAO",
- "Ccy": "XOF",
- "CcyNbr": "952",
- "CcyMnrUnts": "0"
- },
- {
- "CtryNm": "SERBIA",
- "CcyNm": "Serbian Dinar",
- "Ccy": "RSD",
- "CcyNbr": "941",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "SEYCHELLES",
- "CcyNm": "Seychelles Rupee",
- "Ccy": "SCR",
- "CcyNbr": "690",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "SIERRA LEONE",
- "CcyNm": "Leone",
- "Ccy": "SLE",
- "CcyNbr": "925",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "SINGAPORE",
- "CcyNm": "Singapore Dollar",
- "Ccy": "SGD",
- "CcyNbr": "702",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "SINT MAARTEN (DUTCH PART)",
- "CcyNm": "Caribbean Guilder",
- "Ccy": "XCG",
- "CcyNbr": "532",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "SISTEMA UNITARIO DE COMPENSACION REGIONAL DE PAGOS \"SUCRE\"",
- "CcyNm": "Sucre",
- "Ccy": "XSU",
- "CcyNbr": "994",
- "CcyMnrUnts": "N.A."
- },
- {
- "CtryNm": "SLOVAKIA",
- "CcyNm": "Euro",
- "Ccy": "EUR",
- "CcyNbr": "978",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "SLOVENIA",
- "CcyNm": "Euro",
- "Ccy": "EUR",
- "CcyNbr": "978",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "SOLOMON ISLANDS",
- "CcyNm": "Solomon Islands Dollar",
- "Ccy": "SBD",
- "CcyNbr": "090",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "SOMALIA",
- "CcyNm": "Somali Shilling",
- "Ccy": "SOS",
- "CcyNbr": "706",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "SOUTH AFRICA",
- "CcyNm": "Rand",
- "Ccy": "ZAR",
- "CcyNbr": "710",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "SOUTH GEORGIA AND THE SOUTH SANDWICH ISLANDS",
- "CcyNm": "No universal currency"
- },
- {
- "CtryNm": "SOUTH SUDAN",
- "CcyNm": "South Sudanese Pound",
- "Ccy": "SSP",
- "CcyNbr": "728",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "SPAIN",
- "CcyNm": "Euro",
- "Ccy": "EUR",
- "CcyNbr": "978",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "SRI LANKA",
- "CcyNm": "Sri Lanka Rupee",
- "Ccy": "LKR",
- "CcyNbr": "144",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "SUDAN (THE)",
- "CcyNm": "Sudanese Pound",
- "Ccy": "SDG",
- "CcyNbr": "938",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "SURINAME",
- "CcyNm": "Surinam Dollar",
- "Ccy": "SRD",
- "CcyNbr": "968",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "SVALBARD AND JAN MAYEN",
- "CcyNm": "Norwegian Krone",
- "Ccy": "NOK",
- "CcyNbr": "578",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "SWEDEN",
- "CcyNm": "Swedish Krona",
- "Ccy": "SEK",
- "CcyNbr": "752",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "SWITZERLAND",
- "CcyNm": "Swiss Franc",
- "Ccy": "CHF",
- "CcyNbr": "756",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "SWITZERLAND",
- "CcyNm": {
- "_IsFund": "true",
- "__text": "WIR Euro"
- },
- "Ccy": "CHE",
- "CcyNbr": "947",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "SWITZERLAND",
- "CcyNm": {
- "_IsFund": "true",
- "__text": "WIR Franc"
- },
- "Ccy": "CHW",
- "CcyNbr": "948",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "SYRIAN ARAB REPUBLIC",
- "CcyNm": "Syrian Pound",
- "Ccy": "SYP",
- "CcyNbr": "760",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "TAIWAN (PROVINCE OF CHINA)",
- "CcyNm": "New Taiwan Dollar",
- "Ccy": "TWD",
- "CcyNbr": "901",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "TAJIKISTAN",
- "CcyNm": "Somoni",
- "Ccy": "TJS",
- "CcyNbr": "972",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "TANZANIA, UNITED REPUBLIC OF",
- "CcyNm": "Tanzanian Shilling",
- "Ccy": "TZS",
- "CcyNbr": "834",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "THAILAND",
- "CcyNm": "Baht",
- "Ccy": "THB",
- "CcyNbr": "764",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "TIMOR-LESTE",
- "CcyNm": "US Dollar",
- "Ccy": "USD",
- "CcyNbr": "840",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "TOGO",
- "CcyNm": "CFA Franc BCEAO",
- "Ccy": "XOF",
- "CcyNbr": "952",
- "CcyMnrUnts": "0"
- },
- {
- "CtryNm": "TOKELAU",
- "CcyNm": "New Zealand Dollar",
- "Ccy": "NZD",
- "CcyNbr": "554",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "TONGA",
- "CcyNm": "Pa’anga",
- "Ccy": "TOP",
- "CcyNbr": "776",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "TRINIDAD AND TOBAGO",
- "CcyNm": "Trinidad and Tobago Dollar",
- "Ccy": "TTD",
- "CcyNbr": "780",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "TUNISIA",
- "CcyNm": "Tunisian Dinar",
- "Ccy": "TND",
- "CcyNbr": "788",
- "CcyMnrUnts": "3"
- },
- {
- "CtryNm": "TÜRKİYE",
- "CcyNm": "Turkish Lira",
- "Ccy": "TRY",
- "CcyNbr": "949",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "TURKMENISTAN",
- "CcyNm": "Turkmenistan New Manat",
- "Ccy": "TMT",
- "CcyNbr": "934",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "TURKS AND CAICOS ISLANDS (THE)",
- "CcyNm": "US Dollar",
- "Ccy": "USD",
- "CcyNbr": "840",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "TUVALU",
- "CcyNm": "Australian Dollar",
- "Ccy": "AUD",
- "CcyNbr": "036",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "UGANDA",
- "CcyNm": "Uganda Shilling",
- "Ccy": "UGX",
- "CcyNbr": "800",
- "CcyMnrUnts": "0"
- },
- {
- "CtryNm": "UKRAINE",
- "CcyNm": "Hryvnia",
- "Ccy": "UAH",
- "CcyNbr": "980",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "UNITED ARAB EMIRATES (THE)",
- "CcyNm": "UAE Dirham",
- "Ccy": "AED",
- "CcyNbr": "784",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "UNITED KINGDOM OF GREAT BRITAIN AND NORTHERN IRELAND (THE)",
- "CcyNm": "Pound Sterling",
- "Ccy": "GBP",
- "CcyNbr": "826",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "UNITED STATES MINOR OUTLYING ISLANDS (THE)",
- "CcyNm": "US Dollar",
- "Ccy": "USD",
- "CcyNbr": "840",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "UNITED STATES OF AMERICA (THE)",
- "CcyNm": "US Dollar",
- "Ccy": "USD",
- "CcyNbr": "840",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "UNITED STATES OF AMERICA (THE)",
- "CcyNm": {
- "_IsFund": "true",
- "__text": "US Dollar (Next day)"
- },
- "Ccy": "USN",
- "CcyNbr": "997",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "URUGUAY",
- "CcyNm": "Peso Uruguayo",
- "Ccy": "UYU",
- "CcyNbr": "858",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "URUGUAY",
- "CcyNm": {
- "_IsFund": "true",
- "__text": "Uruguay Peso en Unidades Indexadas (UI)"
- },
- "Ccy": "UYI",
- "CcyNbr": "940",
- "CcyMnrUnts": "0"
- },
- {
- "CtryNm": "URUGUAY",
- "CcyNm": "Unidad Previsional",
- "Ccy": "UYW",
- "CcyNbr": "927",
- "CcyMnrUnts": "4"
- },
- {
- "CtryNm": "UZBEKISTAN",
- "CcyNm": "Uzbekistan Sum",
- "Ccy": "UZS",
- "CcyNbr": "860",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "VANUATU",
- "CcyNm": "Vatu",
- "Ccy": "VUV",
- "CcyNbr": "548",
- "CcyMnrUnts": "0"
- },
- {
- "CtryNm": "VENEZUELA (BOLIVARIAN REPUBLIC OF)",
- "CcyNm": "Bolívar Soberano",
- "Ccy": "VES",
- "CcyNbr": "928",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "VENEZUELA (BOLIVARIAN REPUBLIC OF)",
- "CcyNm": "Bolívar Soberano",
- "Ccy": "VED",
- "CcyNbr": "926",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "VIET NAM",
- "CcyNm": "Dong",
- "Ccy": "VND",
- "CcyNbr": "704",
- "CcyMnrUnts": "0"
- },
- {
- "CtryNm": "VIRGIN ISLANDS (BRITISH)",
- "CcyNm": "US Dollar",
- "Ccy": "USD",
- "CcyNbr": "840",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "VIRGIN ISLANDS (U.S.)",
- "CcyNm": "US Dollar",
- "Ccy": "USD",
- "CcyNbr": "840",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "WALLIS AND FUTUNA",
- "CcyNm": "CFP Franc",
- "Ccy": "XPF",
- "CcyNbr": "953",
- "CcyMnrUnts": "0"
- },
- {
- "CtryNm": "WESTERN SAHARA",
- "CcyNm": "Moroccan Dirham",
- "Ccy": "MAD",
- "CcyNbr": "504",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "YEMEN",
- "CcyNm": "Yemeni Rial",
- "Ccy": "YER",
- "CcyNbr": "886",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "ZAMBIA",
- "CcyNm": "Zambian Kwacha",
- "Ccy": "ZMW",
- "CcyNbr": "967",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "ZIMBABWE",
- "CcyNm": "Zimbabwe Gold",
- "Ccy": "ZWG",
- "CcyNbr": "924",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "ZZ01_Bond Markets Unit European_EURCO",
- "CcyNm": "Bond Markets Unit European Composite Unit (EURCO)",
- "Ccy": "XBA",
- "CcyNbr": "955",
- "CcyMnrUnts": "N.A."
- },
- {
- "CtryNm": "ZZ02_Bond Markets Unit European_EMU-6",
- "CcyNm": "Bond Markets Unit European Monetary Unit (E.M.U.-6)",
- "Ccy": "XBB",
- "CcyNbr": "956",
- "CcyMnrUnts": "N.A."
- },
- {
- "CtryNm": "ZZ03_Bond Markets Unit European_EUA-9",
- "CcyNm": "Bond Markets Unit European Unit of Account 9 (E.U.A.-9)",
- "Ccy": "XBC",
- "CcyNbr": "957",
- "CcyMnrUnts": "N.A."
- },
- {
- "CtryNm": "ZZ04_Bond Markets Unit European_EUA-17",
- "CcyNm": "Bond Markets Unit European Unit of Account 17 (E.U.A.-17)",
- "Ccy": "XBD",
- "CcyNbr": "958",
- "CcyMnrUnts": "N.A."
- },
- {
- "CtryNm": "ZZ06_Testing_Code",
- "CcyNm": "Codes specifically reserved for testing purposes",
- "Ccy": "XTS",
- "CcyNbr": "963",
- "CcyMnrUnts": "N.A."
- },
- {
- "CtryNm": "ZZ07_No_Currency",
- "CcyNm": "The codes assigned for transactions where no currency is involved",
- "Ccy": "XXX",
- "CcyNbr": "999",
- "CcyMnrUnts": "N.A."
- },
- {
- "CtryNm": "ZZ08_Gold",
- "CcyNm": "Gold",
- "Ccy": "XAU",
- "CcyNbr": "959",
- "CcyMnrUnts": "N.A."
- },
- {
- "CtryNm": "ZZ09_Palladium",
- "CcyNm": "Palladium",
- "Ccy": "XPD",
- "CcyNbr": "964",
- "CcyMnrUnts": "N.A."
- },
- {
- "CtryNm": "ZZ10_Platinum",
- "CcyNm": "Platinum",
- "Ccy": "XPT",
- "CcyNbr": "962",
- "CcyMnrUnts": "N.A."
- },
- {
- "CtryNm": "ZZ11_Silver",
- "CcyNm": "Silver",
- "Ccy": "XAG",
- "CcyNbr": "961",
- "CcyMnrUnts": "N.A."
- }
- ]
- },
- "_Pblshd": "2025-05-12"
- }
-}
\ No newline at end of file
diff --git a/src/packages/HawkN.Iso.Currencies.Generators/Content/list-replacement-currency-names.json b/src/packages/HawkN.Iso.Currencies.Generators/Content/list-replacement-currency-names.json
index 03909df..0a95f1a 100644
--- a/src/packages/HawkN.Iso.Currencies.Generators/Content/list-replacement-currency-names.json
+++ b/src/packages/HawkN.Iso.Currencies.Generators/Content/list-replacement-currency-names.json
@@ -102,5 +102,12 @@
{ "Ccy": "USD", "CcyNm": "US Dollar" },
{ "Ccy": "ZWL", "CcyNm": "Zimbabwe Dollar" },
{ "Ccy": "CNY", "CcyNm": "Chinese Yuan" },
- { "Ccy": "CVE", "CcyNm": "Cape Verde Escudo" }
+ { "Ccy": "CVE", "CcyNm": "Cape Verde Escudo" },
+ { "Ccy": "BAM", "CcyNm": "Convertible Mark" },
+ { "Ccy": "AZN", "CcyNm": "Azerbaijan Manat" },
+ { "Ccy": "CLF", "CcyNm": "Unidad de Fomento" },
+ { "Ccy": "AED", "CcyNm": "UAE Dirham" },
+ { "Ccy": "SHP", "CcyNm": "Saint Helena Pound" },
+ { "Ccy": "COU", "CcyNm": "Unidad de Valor Real" },
+ { "Ccy": "UYW", "CcyNm": "Unidad Previsional" }
]
\ No newline at end of file
diff --git "a/src/packages/HawkN.Iso.Currencies.Generators/Content/\320\241urrency\320\241odes.csv" "b/src/packages/HawkN.Iso.Currencies.Generators/Content/\320\241urrency\320\241odes.csv"
new file mode 100644
index 0000000..5f1c652
--- /dev/null
+++ "b/src/packages/HawkN.Iso.Currencies.Generators/Content/\320\241urrency\320\241odes.csv"
@@ -0,0 +1,450 @@
+Entity,Currency,AlphabeticCode,NumericCode,MinorUnit,WithdrawalDate
+AFGHANISTAN,Afghani,AFN,971,2,
+ÅLAND ISLANDS,Euro,EUR,978,2,
+ALBANIA,Lek,ALL,008,2,
+ALGERIA,Algerian Dinar,DZD,012,2,
+AMERICAN SAMOA,US Dollar,USD,840,2,
+ANDORRA,Euro,EUR,978,2,
+ANGOLA,Kwanza,AOA,973,2,
+ANGUILLA,East Caribbean Dollar,XCD,951,2,
+ANTARCTICA,No universal currency,,,,
+ANTIGUA AND BARBUDA,East Caribbean Dollar,XCD,951,2,
+ARAB MONETARY FUND,Arab Accounting Dinar,XAD,396,2,
+ARGENTINA,Argentine Peso,ARS,032,2,
+ARMENIA,Armenian Dram,AMD,051,2,
+ARUBA,Aruban Florin,AWG,533,2,
+AUSTRALIA,Australian Dollar,AUD,036,2,
+AUSTRIA,Euro,EUR,978,2,
+AZERBAIJAN,Azerbaijan Manat,AZN,944,2,
+BAHAMAS (THE),Bahamian Dollar,BSD,044,2,
+BAHRAIN,Bahraini Dinar,BHD,048,3,
+BANGLADESH,Taka,BDT,050,2,
+BARBADOS,Barbados Dollar,BBD,052,2,
+BELARUS,Belarusian Ruble,BYN,933,2,
+BELGIUM,Euro,EUR,978,2,
+BELIZE,Belize Dollar,BZD,084,2,
+BENIN,CFA Franc BCEAO,XOF,952,0,
+BERMUDA,Bermudian Dollar,BMD,060,2,
+BHUTAN,Indian Rupee,INR,356,2,
+BHUTAN,Ngultrum,BTN,064,2,
+BOLIVIA (PLURINATIONAL STATE OF),Boliviano,BOB,068,2,
+BOLIVIA (PLURINATIONAL STATE OF),Mvdol,BOV,984,2,
+"BONAIRE, SINT EUSTATIUS AND SABA",US Dollar,USD,840,2,
+BOSNIA AND HERZEGOVINA,Convertible Mark,BAM,977,2,
+BOTSWANA,Pula,BWP,072,2,
+BOUVET ISLAND,Norwegian Krone,NOK,578,2,
+BRAZIL,Brazilian Real,BRL,986,2,
+BRITISH INDIAN OCEAN TERRITORY (THE),US Dollar,USD,840,2,
+BRUNEI DARUSSALAM,Brunei Dollar,BND,096,2,
+BULGARIA,Euro,EUR,978,2,
+BURKINA FASO,CFA Franc BCEAO,XOF,952,0,
+BURUNDI,Burundi Franc,BIF,108,0,
+CABO VERDE,Cabo Verde Escudo,CVE,132,2,
+CAMBODIA,Riel,KHR,116,2,
+CAMEROON,CFA Franc BEAC,XAF,950,0,
+CANADA,Canadian Dollar,CAD,124,2,
+CAYMAN ISLANDS (THE),Cayman Islands Dollar,KYD,136,2,
+CENTRAL AFRICAN REPUBLIC (THE),CFA Franc BEAC,XAF,950,0,
+CHAD,CFA Franc BEAC,XAF,950,0,
+CHILE,Chilean Peso,CLP,152,0,
+CHILE,Unidad de Fomento,CLF,990,4,
+CHINA,Yuan Renminbi,CNY,156,2,
+CHRISTMAS ISLAND,Australian Dollar,AUD,036,2,
+COCOS (KEELING) ISLANDS (THE),Australian Dollar,AUD,036,2,
+COLOMBIA,Colombian Peso,COP,170,2,
+COLOMBIA,Unidad de Valor Real,COU,970,2,
+COMOROS (THE),Comorian Franc ,KMF,174,0,
+CONGO (THE DEMOCRATIC REPUBLIC OF THE),Congolese Franc,CDF,976,2,
+CONGO (THE),CFA Franc BEAC,XAF,950,0,
+COOK ISLANDS (THE),New Zealand Dollar,NZD,554,2,
+COSTA RICA,Costa Rican Colon,CRC,188,2,
+CÔTE D'IVOIRE,CFA Franc BCEAO,XOF,952,0,
+CROATIA,Euro,EUR,978,2,
+CUBA,Cuban Peso,CUP,192,2,
+CURAÇAO,Caribbean Guilder,XCG,532,2,
+CYPRUS,Euro,EUR,978,2,
+CZECHIA,Czech Koruna,CZK,203,2,
+DENMARK,Danish Krone,DKK,208,2,
+DJIBOUTI,Djibouti Franc,DJF,262,0,
+DOMINICA,East Caribbean Dollar,XCD,951,2,
+DOMINICAN REPUBLIC (THE),Dominican Peso,DOP,214,2,
+ECUADOR,US Dollar,USD,840,2,
+EGYPT,Egyptian Pound,EGP,818,2,
+EL SALVADOR,El Salvador Colon,SVC,222,2,
+EL SALVADOR,US Dollar,USD,840,2,
+EQUATORIAL GUINEA,CFA Franc BEAC,XAF,950,0,
+ERITREA,Nakfa,ERN,232,2,
+ESTONIA,Euro,EUR,978,2,
+ESWATINI,Lilangeni,SZL,748,2,
+ETHIOPIA,Ethiopian Birr,ETB,230,2,
+EUROPEAN UNION,Euro,EUR,978,2,
+"FALKLAND ISLANDS (THE) [MALVINAS]",Falkland Islands Pound,FKP,238,2,
+FAROE ISLANDS (THE),Danish Krone,DKK,208,2,
+FIJI,Fiji Dollar,FJD,242,2,
+FINLAND,Euro,EUR,978,2,
+FRANCE,Euro,EUR,978,2,
+FRENCH GUIANA,Euro,EUR,978,2,
+FRENCH POLYNESIA,CFP Franc,XPF,953,0,
+FRENCH SOUTHERN TERRITORIES (THE),Euro,EUR,978,2,
+GABON,CFA Franc BEAC,XAF,950,0,
+GAMBIA (THE),Dalasi,GMD,270,2,
+GEORGIA,Lari,GEL,981,2,
+GERMANY,Euro,EUR,978,2,
+GHANA,Ghana Cedi,GHS,936,2,
+GIBRALTAR,Gibraltar Pound,GIP,292,2,
+GREECE,Euro,EUR,978,2,
+GREENLAND,Danish Krone,DKK,208,2,
+GRENADA,East Caribbean Dollar,XCD,951,2,
+GUADELOUPE,Euro,EUR,978,2,
+GUAM,US Dollar,USD,840,2,
+GUATEMALA,Quetzal,GTQ,320,2,
+GUERNSEY,Pound Sterling,GBP,826,2,
+GUINEA,Guinean Franc,GNF,324,0,
+GUINEA-BISSAU,CFA Franc BCEAO,XOF,952,0,
+GUYANA,Guyana Dollar,GYD,328,2,
+HAITI,Gourde,HTG,332,2,
+HAITI,US Dollar,USD,840,2,
+HEARD ISLAND AND McDONALD ISLANDS,Australian Dollar,AUD,036,2,
+HOLY SEE (THE),Euro,EUR,978,2,
+HONDURAS,Lempira,HNL,340,2,
+HONG KONG,Hong Kong Dollar,HKD,344,2,
+HUNGARY,Forint,HUF,348,2,
+ICELAND,Iceland Krona,ISK,352,0,
+INDIA,Indian Rupee,INR,356,2,
+INDONESIA,Rupiah,IDR,360,2,
+INTERNATIONAL MONETARY FUND (IMF) ,SDR (Special Drawing Right),XDR,960,-,
+IRAN (ISLAMIC REPUBLIC OF),Iranian Rial,IRR,364,2,
+IRAQ,Iraqi Dinar,IQD,368,3,
+IRELAND,Euro,EUR,978,2,
+ISLE OF MAN,Pound Sterling,GBP,826,2,
+ISRAEL,New Israeli Sheqel,ILS,376,2,
+ITALY,Euro,EUR,978,2,
+JAMAICA,Jamaican Dollar,JMD,388,2,
+JAPAN,Yen,JPY,392,0,
+JERSEY,Pound Sterling,GBP,826,2,
+JORDAN,Jordanian Dinar,JOD,400,3,
+KAZAKHSTAN,Tenge,KZT,398,2,
+KENYA,Kenyan Shilling,KES,404,2,
+KIRIBATI,Australian Dollar,AUD,036,2,
+KOREA (THE DEMOCRATIC PEOPLE’S REPUBLIC OF),North Korean Won,KPW,408,2,
+KOREA (THE REPUBLIC OF),Won,KRW,410,0,
+KUWAIT,Kuwaiti Dinar,KWD,414,3,
+KYRGYZSTAN,Som,KGS,417,2,
+LAO PEOPLE’S DEMOCRATIC REPUBLIC (THE),Lao Kip,LAK,418,2,
+LATVIA,Euro,EUR,978,2,
+LEBANON,Lebanese Pound,LBP,422,2,
+LESOTHO,Loti,LSL,426,2,
+LESOTHO,Rand,ZAR,710,2,
+LIBERIA,Liberian Dollar,LRD,430,2,
+LIBYA,Libyan Dinar,LYD,434,3,
+LIECHTENSTEIN,Swiss Franc,CHF,756,2,
+LITHUANIA,Euro,EUR,978,2,
+LUXEMBOURG,Euro,EUR,978,2,
+MACAO,Pataca,MOP,446,2,
+NORTH MACEDONIA,Denar,MKD,807,2,
+MADAGASCAR,Malagasy Ariary,MGA,969,2,
+MALAWI,Malawi Kwacha,MWK,454,2,
+MALAYSIA,Malaysian Ringgit,MYR,458,2,
+MALDIVES,Rufiyaa,MVR,462,2,
+MALI,CFA Franc BCEAO,XOF,952,0,
+MALTA,Euro,EUR,978,2,
+MARSHALL ISLANDS (THE),US Dollar,USD,840,2,
+MARTINIQUE,Euro,EUR,978,2,
+MAURITANIA,Ouguiya,MRU,929,2,
+MAURITIUS,Mauritius Rupee,MUR,480,2,
+MAYOTTE,Euro,EUR,978,2,
+MEMBER COUNTRIES OF THE AFRICAN DEVELOPMENT BANK GROUP,ADB Unit of Account,XUA,965,-,
+MEXICO,Mexican Peso,MXN,484,2,
+MEXICO,Mexican Unidad de Inversion (UDI),MXV,979,2,
+MICRONESIA (FEDERATED STATES OF),US Dollar,USD,840,2,
+MOLDOVA (THE REPUBLIC OF),Moldovan Leu,MDL,498,2,
+MONACO,Euro,EUR,978,2,
+MONGOLIA,Tugrik,MNT,496,2,
+MONTENEGRO,Euro,EUR,978,2,
+MONTSERRAT,East Caribbean Dollar,XCD,951,2,
+MOROCCO,Moroccan Dirham,MAD,504,2,
+MOZAMBIQUE,Mozambique Metical,MZN,943,2,
+MYANMAR,Kyat,MMK,104,2,
+NAMIBIA,Namibia Dollar,NAD,516,2,
+NAMIBIA,Rand,ZAR,710,2,
+NAURU,Australian Dollar,AUD,036,2,
+NEPAL,Nepalese Rupee,NPR,524,2,
+NETHERLANDS (THE),Euro,EUR,978,2,
+NEW CALEDONIA,CFP Franc,XPF,953,0,
+NEW ZEALAND,New Zealand Dollar,NZD,554,2,
+NICARAGUA,Cordoba Oro,NIO,558,2,
+NIGER (THE),CFA Franc BCEAO,XOF,952,0,
+NIGERIA,Naira,NGN,566,2,
+NIUE,New Zealand Dollar,NZD,554,2,
+NORFOLK ISLAND,Australian Dollar,AUD,036,2,
+NORTHERN MARIANA ISLANDS (THE),US Dollar,USD,840,2,
+NORWAY,Norwegian Krone,NOK,578,2,
+OMAN,Rial Omani,OMR,512,3,
+PAKISTAN,Pakistan Rupee,PKR,586,2,
+PALAU,US Dollar,USD,840,2,
+"PALESTINE, STATE OF",No universal currency,,,,
+PANAMA,Balboa,PAB,590,2,
+PANAMA,US Dollar,USD,840,2,
+PAPUA NEW GUINEA,Kina,PGK,598,2,
+PARAGUAY,Guarani,PYG,600,0,
+PERU,Sol,PEN,604,2,
+PHILIPPINES (THE),Philippine Peso,PHP,608,2,
+PITCAIRN,New Zealand Dollar,NZD,554,2,
+POLAND,Zloty,PLN,985,2,
+PORTUGAL,Euro,EUR,978,2,
+PUERTO RICO,US Dollar,USD,840,2,
+QATAR,Qatari Rial,QAR,634,2,
+RÉUNION,Euro,EUR,978,2,
+ROMANIA,Romanian Leu,RON,946,2,
+RUSSIAN FEDERATION (THE),Russian Ruble,RUB,643,2,
+RWANDA,Rwanda Franc,RWF,646,0,
+SAINT BARTHÉLEMY,Euro,EUR,978,2,
+"SAINT HELENA, ASCENSION AND TRISTAN DA CUNHA",Saint Helena Pound,SHP,654,2,
+SAINT KITTS AND NEVIS,East Caribbean Dollar,XCD,951,2,
+SAINT LUCIA,East Caribbean Dollar,XCD,951,2,
+SAINT MARTIN (FRENCH PART),Euro,EUR,978,2,
+SAINT PIERRE AND MIQUELON,Euro,EUR,978,2,
+SAINT VINCENT AND THE GRENADINES,East Caribbean Dollar,XCD,951,2,
+SAMOA,Tala,WST,882,2,
+SAN MARINO,Euro,EUR,978,2,
+SAO TOME AND PRINCIPE,Dobra,STN,930,2,
+SAUDI ARABIA,Saudi Riyal,SAR,682,2,
+SENEGAL,CFA Franc BCEAO,XOF,952,0,
+SERBIA,Serbian Dinar,RSD,941,2,
+SEYCHELLES,Seychelles Rupee,SCR,690,2,
+SIERRA LEONE,Leone,SLE,925,2,
+SINGAPORE,Singapore Dollar,SGD,702,2,
+SINT MAARTEN (DUTCH PART),Caribbean Guilder,XCG,532,2,
+"SISTEMA UNITARIO DE COMPENSACION REGIONAL DE PAGOS ""SUCRE""",Sucre,XSU,994,-,
+SLOVAKIA,Euro,EUR,978,2,
+SLOVENIA,Euro,EUR,978,2,
+SOLOMON ISLANDS,Solomon Islands Dollar,SBD,090,2,
+SOMALIA,Somali Shilling,SOS,706,2,
+SOUTH AFRICA,Rand,ZAR,710,2,
+SOUTH GEORGIA AND THE SOUTH SANDWICH ISLANDS,No universal currency,,,,
+SOUTH SUDAN,South Sudanese Pound,SSP,728,2,
+SPAIN,Euro,EUR,978,2,
+SRI LANKA,Sri Lanka Rupee,LKR,144,2,
+SUDAN (THE),Sudanese Pound,SDG,938,2,
+SURINAME,Surinam Dollar,SRD,968,2,
+SVALBARD AND JAN MAYEN,Norwegian Krone,NOK,578,2,
+SWEDEN,Swedish Krona,SEK,752,2,
+SWITZERLAND,Swiss Franc,CHF,756,2,
+SWITZERLAND,WIR Euro,CHE,947,2,
+SWITZERLAND,WIR Franc,CHW,948,2,
+SYRIAN ARAB REPUBLIC,Syrian Pound,SYP,760,2,
+TAIWAN (PROVINCE OF CHINA),New Taiwan Dollar,TWD,901,2,
+TAJIKISTAN,Somoni,TJS,972,2,
+"TANZANIA, UNITED REPUBLIC OF",Tanzanian Shilling,TZS,834,2,
+THAILAND,Baht,THB,764,2,
+TIMOR-LESTE,US Dollar,USD,840,2,
+TOGO,CFA Franc BCEAO,XOF,952,0,
+TOKELAU,New Zealand Dollar,NZD,554,2,
+TONGA,Pa’anga,TOP,776,2,
+TRINIDAD AND TOBAGO,Trinidad and Tobago Dollar,TTD,780,2,
+TUNISIA,Tunisian Dinar,TND,788,3,
+TÜRKİYE,Turkish Lira,TRY,949,2,
+TURKMENISTAN,Turkmenistan New Manat,TMT,934,2,
+TURKS AND CAICOS ISLANDS (THE),US Dollar,USD,840,2,
+TUVALU,Australian Dollar,AUD,036,2,
+UGANDA,Uganda Shilling,UGX,800,0,
+UKRAINE,Hryvnia,UAH,980,2,
+UNITED ARAB EMIRATES (THE),UAE Dirham,AED,784,2,
+UNITED KINGDOM OF GREAT BRITAIN AND NORTHERN IRELAND (THE),Pound Sterling,GBP,826,2,
+UNITED STATES MINOR OUTLYING ISLANDS (THE),US Dollar,USD,840,2,
+UNITED STATES OF AMERICA (THE),US Dollar,USD,840,2,
+UNITED STATES OF AMERICA (THE),US Dollar (Next day),USN,997,2,
+URUGUAY,Peso Uruguayo,UYU,858,2,
+URUGUAY,Uruguay Peso en Unidades Indexadas (UI),UYI,940,0,
+URUGUAY,Unidad Previsional,UYW,927,4,
+UZBEKISTAN,Uzbekistan Sum,UZS,860,2,
+VANUATU,Vatu,VUV,548,0,
+VENEZUELA (BOLIVARIAN REPUBLIC OF),Bolívar Soberano,VES,928,2,
+VENEZUELA (BOLIVARIAN REPUBLIC OF),Bolívar Soberano,VED,926,2,
+VIET NAM,Dong,VND,704,0,
+VIRGIN ISLANDS (BRITISH),US Dollar,USD,840,2,
+VIRGIN ISLANDS (U.S.),US Dollar,USD,840,2,
+WALLIS AND FUTUNA,CFP Franc,XPF,953,0,
+WESTERN SAHARA,Moroccan Dirham,MAD,504,2,
+YEMEN,Yemeni Rial,YER,886,2,
+ZAMBIA,Zambian Kwacha,ZMW,967,2,
+ZIMBABWE,Zimbabwe Gold,ZWG,924,2,
+ZZ01_Bond Markets Unit European_EURCO,Bond Markets Unit European Composite Unit (EURCO),XBA,955,-,
+ZZ02_Bond Markets Unit European_EMU-6,Bond Markets Unit European Monetary Unit (E.M.U.-6),XBB,956,-,
+ZZ03_Bond Markets Unit European_EUA-9,Bond Markets Unit European Unit of Account 9 (E.U.A.-9),XBC,957,-,
+ZZ04_Bond Markets Unit European_EUA-17,Bond Markets Unit European Unit of Account 17 (E.U.A.-17),XBD,958,-,
+ZZ06_Testing_Code,Codes specifically reserved for testing purposes,XTS,963,-,
+ZZ07_No_Currency,The codes assigned for transactions where no currency is involved,XXX,999,-,
+ZZ08_Gold,Gold,XAU,959,-,
+ZZ09_Palladium,Palladium,XPD,964,-,
+ZZ10_Platinum,Platinum,XPT,962,-,
+ZZ11_Silver,Silver,XAG,961,-,
+AFGHANISTAN,Afghani,AFA,004,,2003-01
+ÅLAND ISLANDS,Markka,FIM,246,,2002-03
+ALBANIA,Old Lek,ALK,008,,1989-12
+ANDORRA,Andorran Peseta,ADP,020,,2003-07
+ANDORRA,Spanish Peseta,ESP,724,,2002-03
+ANDORRA,French Franc,FRF,250,,2002-03
+ANGOLA,Kwanza,AOK,024,,1991-03
+ANGOLA,New Kwanza,AON,024,,2000-02
+ANGOLA,Kwanza Reajustado,AOR,982,,2000-02
+ARGENTINA,Austral,ARA,032,,1992-01
+ARGENTINA,Peso Argentino,ARP,032,,1985-07
+ARGENTINA,Peso,ARY,032,,1989 to 1990
+ARMENIA,Russian Ruble,RUR,810,,1994-08
+AUSTRIA,Schilling,ATS,040,,2002-03
+AZERBAIJAN,Azerbaijan Manat,AYM,945,,2005-10
+AZERBAIJAN,Azerbaijanian Manat,AZM,031,,2005-12
+AZERBAIJAN,Russian Ruble,RUR,810,,1994-08
+BELARUS,Belarusian Ruble,BYB,112,,2001-01
+BELARUS,Belarusian Ruble,BYR,974,,2017-01
+BELARUS,Russian Ruble,RUR,810,,1994-06
+BELGIUM,Convertible Franc,BEC,993,,1990-03
+BELGIUM,Belgian Franc,BEF,056,,2002-03
+BELGIUM,Financial Franc,BEL,992,,1990-03
+BOLIVIA,Peso boliviano,BOP,068,,1987-02
+BOSNIA AND HERZEGOVINA,Dinar,BAD,070,,1998-07
+BRAZIL,Cruzeiro,BRB,076,,1986-03
+BRAZIL,Cruzado,BRC,076,,1989-02
+BRAZIL,Cruzeiro,BRE,076,,1993-03
+BRAZIL,New Cruzado,BRN,076,,1990-03
+BRAZIL,Cruzeiro Real,BRR,987,,1994-07
+BULGARIA,Lev A/52,BGJ,100,,1989 to 1990
+BULGARIA,Lev A/62,BGK,100,,1989 to 1990
+BULGARIA,Lev,BGL,100,,2003-11
+BULGARIA,Bulgarian Lev,BGL,975,,2026-01
+BURMA ,Kyat,BUK,104,,1990-02
+CROATIA,Croatian Dinar,HRD,191,,1995-01
+CROATIA,Croatian Kuna,HRK,191,,2015-06
+CROATIA,Kuna,HRK,191,,2023-01
+CUBA,Peso Convertible,CUC,931,,2021-06
+CURAÇAO,Netherlands Antillean Guilder,ANG,532,,2025-03
+CYPRUS,Cyprus Pound,CYP,196,,2008-01
+CZECHOSLOVAKIA,Krona A/53,CSJ,203,,1989 to 1990
+CZECHOSLOVAKIA,Koruna,CSK,200,,1993-03
+ECUADOR,Sucre,ECS,218,,2000-09
+ECUADOR,Unidad de Valor Constante (UVC),ECV,983,,2000-09
+EQUATORIAL GUINEA,Ekwele,GQE,226,,1986-06
+ESTONIA,Kroon,EEK,233,,2011-01
+EUROPEAN MONETARY CO-OPERATION FUND (EMCF),European Currency Unit (E.C.U),XEU,954,,1999-01
+FINLAND,Markka,FIM,246,,2002-03
+FRANCE,French Franc,FRF,250,,2002-03
+FRENCH GUIANA,French Franc,FRF,250,,2002-03
+FRENCH SOUTHERN TERRITORIES,French Franc,FRF,250,,2002-03
+GEORGIA,Georgian Coupon,GEK,268,,1995-10
+GEORGIA,Russian Ruble,RUR,810,,1994-04
+GERMAN DEMOCRATIC REPUBLIC,Mark der DDR,DDM,278,,1990-07 to 1990-09
+GERMANY,Deutsche Mark,DEM,276,,2002-03
+GHANA,Cedi,GHC,288,,2008-01
+GHANA,Ghana Cedi,GHP,939,,2007-06
+GREECE,Drachma,GRD,300,,2002-03
+GUADELOUPE,French Franc,FRF,250,,2002-03
+GUINEA,Syli,GNE,324,,1989-12
+GUINEA,Syli,GNS,324,,1986-02
+GUINEA-BISSAU,Guinea Escudo,GWE,624,,1978 to 1981
+GUINEA-BISSAU,Guinea-Bissau Peso,GWP,624,,1997-05
+HOLY SEE (VATICAN CITY STATE),Italian Lira,ITL,380,,2002-03
+ICELAND,Old Krona,ISJ,352,,1989 to 1990
+IRELAND,Irish Pound,IEP,372,,2002-03
+ISRAEL,Pound,ILP,376,,1978 to 1981
+ISRAEL,Old Shekel,ILR,376,,1989 to 1990
+ITALY,Italian Lira,ITL,380,,2002-03
+KAZAKHSTAN,Russian Ruble,RUR,810,,1994-05
+KYRGYZSTAN,Russian Ruble,RUR,810,,1993-01
+LAO,Pathet Lao Kip,LAJ,418,,1979-12
+LATVIA,Latvian Lats,LVL,428,,2014-01
+LATVIA,Latvian Ruble,LVR,428,,1994-12
+LESOTHO,Loti,LSM,426,,1985-05
+LESOTHO,Financial Rand,ZAL,991,,1995-03
+LITHUANIA,Lithuanian Litas,LTL,440,,2014-12
+LITHUANIA,Talonas,LTT,440,,1993-07
+LUXEMBOURG,Luxembourg Convertible Franc,LUC,989,,1990-03
+LUXEMBOURG,Luxembourg Franc,LUF,442,,2002-03
+LUXEMBOURG,Luxembourg Financial Franc,LUL,988,,1990-03
+MADAGASCAR,Malagasy Franc,MGF,450,,2004-12
+MALAWI,Kwacha,MWK,454,,2016-02
+MALDIVES,Maldive Rupee,MVQ,462,,1989-12
+MALI,Mali Franc,MLF,466,,1984-11
+MALTA,Maltese Lira,MTL,470,,2008-01
+MALTA,Maltese Pound,MTP,470,,1983-06
+MARTINIQUE,French Franc,FRF,250,,2002-03
+MAURITANIA,Ouguiya,MRO,478,,2017-12
+MAYOTTE,French Franc,FRF,250,,2002-03
+MEXICO,Mexican Peso,MXP,484,,1993-01
+"MOLDOVA, REPUBLIC OF",Russian Ruble,RUR,810,,1993-12
+MONACO,French Franc,FRF,250,,2002-03
+MOZAMBIQUE,Mozambique Escudo,MZE,508,,1978 to 1981
+MOZAMBIQUE,Mozambique Metical,MZM,508,,2006-06
+NETHERLANDS,Netherlands Guilder,NLG,528,,2002-03
+NETHERLANDS ANTILLES,Netherlands Antillean Guilder,ANG,532,,2010-10
+NICARAGUA,Cordoba,NIC,558,,1990-10
+PERU,Sol,PEH,604,,1989 to 1990
+PERU,Inti,PEI,604,,1991-07
+PERU,Nuevo Sol ,PEN,604,,2015-12
+PERU,Sol,PES,604,,1986-02
+POLAND,Zloty,PLZ,616,,1997-01
+PORTUGAL,Portuguese Escudo,PTE,620,,2002-03
+RÉUNION,French Franc,FRF,250,,2002-03
+ROMANIA,Leu A/52,ROK,642,,1989 to 1990
+ROMANIA,Old Leu,ROL,642,,2005-06
+ROMANIA,New Romanian Leu ,RON,946,,2015-06
+RUSSIAN FEDERATION,Russian Ruble,RUR,810,,2004-01
+SAINT MARTIN,French Franc,FRF,250,,1999-01
+SAINT PIERRE AND MIQUELON,French Franc,FRF,250,,2002-03
+SAINT-BARTHÉLEMY,French Franc,FRF,250,,1999-01
+SAN MARINO,Italian Lira,ITL,380,,2002-03
+SAO TOME AND PRINCIPE,Dobra,STD,678,,2017-12
+SERBIA AND MONTENEGRO,Serbian Dinar,CSD,891,,2006-10
+SERBIA AND MONTENEGRO,Euro,EUR,978,,2006-10
+SIERRA LEONE,Leone,SLL,694,,2023-12
+SINT MAARTEN (DUTCH PART),Netherlands Antillean Guilder,ANG,532,,2025-03
+SLOVAKIA,Slovak Koruna,SKK,703,,2009-01
+SLOVENIA,Tolar,SIT,705,,2007-01
+SOUTH AFRICA,Financial Rand,ZAL,991,,1995-03
+SOUTH SUDAN,Sudanese Pound,SDG,938,,2012-09
+SOUTHERN RHODESIA ,Rhodesian Dollar,RHD,716,,1978 to 1981
+SPAIN,Spanish Peseta,ESA,996,,1978 to 1981
+SPAIN,"""A"" Account (convertible Peseta Account)",ESB,995,,1994-12
+SPAIN,Spanish Peseta,ESP,724,,2002-03
+SUDAN,Sudanese Dinar,SDD,736,,2007-07
+SUDAN,Sudanese Pound,SDP,736,,1998-06
+SURINAME,Surinam Guilder,SRG,740,,2003-12
+SWAZILAND,Lilangeni,SZL,748,,2018-08
+SWITZERLAND,WIR Franc (for electronic),CHC,948,,2004-11
+TAJIKISTAN,Russian Ruble,RUR,810,,1995-05
+TAJIKISTAN,Tajik Ruble,TJR,762,,2001-04
+TIMOR-LESTE,Rupiah,IDR,360,,2002-07
+TIMOR-LESTE,Timor Escudo,TPE,626,,2002-11
+TURKEY,Old Turkish Lira,TRL,792,,2005-12
+TURKEY,New Turkish Lira,TRY,949,,2009-01
+TURKMENISTAN,Russian Ruble,RUR,810,,1993-10
+TURKMENISTAN,Turkmenistan Manat,TMM,795,,2009-01
+UGANDA,Uganda Shilling,UGS,800,,1987-05
+UGANDA,Old Shilling,UGW,800,,1989 to 1990
+UKRAINE,Karbovanet,UAK,804,,1996-09
+UNION OF SOVIET SOCIALIST REPUBLICS,Rouble,SUR,810,,1990-12
+UNITED STATES,US Dollar (Same day),USS,998,,2014-03
+URUGUAY,Old Uruguay Peso,UYN,858,,1989-12
+URUGUAY,Uruguayan Peso,UYP,858,,1993-03
+UZBEKISTAN,Russian Ruble,RUR,810,,1994-07
+VENEZUELA,Bolivar,VEB,862,,2008-01
+VENEZUELA,Bolivar Fuerte,VEF,937,,2011-12
+VENEZUELA (BOLIVARIAN REPUBLIC OF),Bolivar,VEF,937,,2016-02
+VENEZUELA (BOLIVARIAN REPUBLIC OF),Bolívar,VEF,937,,2018-08
+VIETNAM,Old Dong,VNC,704,,1989-1990
+"YEMEN, DEMOCRATIC",Yemeni Dinar,YDD,720,,1991-09
+YUGOSLAVIA,New Yugoslavian Dinar,YUD,890,,1990-01
+YUGOSLAVIA,New Dinar,YUM,891,,2003-07
+YUGOSLAVIA,Yugoslavian Dinar,YUN,890,,1995-11
+ZAIRE,New Zaire,ZRN,180,,1999-06
+ZAIRE,Zaire,ZRZ,180,,1994-02
+ZAMBIA,Zambian Kwacha,ZMK,894,,2012-12
+ZIMBABWE,Rhodesian Dollar,ZWC,716,,1989-12
+ZIMBABWE,Zimbabwe Dollar (old),ZWD,716,,2006-08
+ZIMBABWE,Zimbabwe Dollar,ZWD,716,,2008-08
+ZIMBABWE,Zimbabwe Dollar (new),ZWN,942,,2006-09
+ZIMBABWE,Zimbabwe Dollar,ZWR,935,,2009-06
+ZIMBABWE,Zimbabwe Dollar,ZWL,932,,2024-09
+ZZ01_Gold-Franc,Gold-Franc,XFO,,,2006-10
+ZZ02_RINET Funds Code,RINET Funds Code,XRE,,,1999-11
+ZZ05_UIC-Franc,UIC-Franc,XFU,,,2013-11
diff --git a/src/packages/HawkN.Iso.Currencies.Generators/CurrencyCodeGenerator.cs b/src/packages/HawkN.Iso.Currencies.Generators/CurrencyCodeGenerator.cs
index f390ee4..6b4bcba 100644
--- a/src/packages/HawkN.Iso.Currencies.Generators/CurrencyCodeGenerator.cs
+++ b/src/packages/HawkN.Iso.Currencies.Generators/CurrencyCodeGenerator.cs
@@ -1,6 +1,5 @@
using System.Reflection;
using System.Text;
-using HawkN.Iso.Currencies.Generators.Handlers;
using HawkN.Iso.Currencies.Generators.Models;
using Microsoft.CodeAnalysis;
using Microsoft.CodeAnalysis.Text;
@@ -31,39 +30,40 @@ public enum CurrencyCode
public override void Initialize(IncrementalGeneratorInitializationContext context)
{
ErrorFactory.Clear();
+ var jsonProvider = context.CompilationProvider.Select(ReadDataResource);
+ context.RegisterSourceOutput(jsonProvider, (spc, tuple) => GenerateSourceOutput(tuple, spc));
+ }
- var jsonProvider = context.CompilationProvider.Select((_, _) =>
+ static (string, string, string, string) ReadDataResource(Compilation compilation, CancellationToken ct)
+ {
+ try
{
- try
- {
- return LoadJsonResources(Assembly.GetExecutingAssembly());
- }
- catch (Exception ex)
- {
- var message = $"{Constants.ErrorMark}:{ex.Message}";
- return (message, message, message);
- }
- });
-
- context.RegisterSourceOutput(jsonProvider, (spc, tuple) => GenerateSourceOutput(tuple, spc));
+ return LoadResources(Assembly.GetExecutingAssembly());
+ }
+ catch (InvalidOperationException ex)
+ {
+ var errorMsg = $"{Constants.ErrorMark}:{ex.Message}";
+ return (errorMsg, errorMsg, errorMsg, errorMsg);
+ }
}
- private new void GenerateSourceOutput((string, string, string) tuple, SourceProductionContext spc)
+ private void GenerateSourceOutput((string, string, string, string) tuple, SourceProductionContext spc)
{
try
{
- var (originalJson, replacementJson, historicalJson) = tuple;
+ var (originalXml, translationsXml, replacementJson, currencyCodesCsv) = tuple;
- if (HasResourceErrors(originalJson, replacementJson, historicalJson))
+ if (HasResourceErrors(originalXml, translationsXml, replacementJson, currencyCodesCsv))
{
AddStubIfErrors(spc, HintName, StubSource, GeneratorType.Currency);
return;
}
- var loader = new CurrencyLoader(originalJson, replacementJson, historicalJson);
+ var loader = new CurrencyDataLoader(originalXml, translationsXml, replacementJson, currencyCodesCsv);
var sb = CreateSourceBuilder(
Constants.GeneratorName,
- Constants.DefaultNamespace
+ Constants.DefaultNamespace,
+ Constants.ExtendedSourceData
);
if (string.IsNullOrEmpty(loader.ActualCurrencyData.PublishedDate))
@@ -73,27 +73,24 @@ public override void Initialize(IncrementalGeneratorInitializationContext contex
else
{
sb.AppendLine(" /// ")
- .AppendLine(" /// Currency codes ISO4217")
- .AppendLine($" /// Last published at {loader.ActualCurrencyData.PublishedDate}.")
- .AppendLine(" /// ");
+ .AppendLine(" /// Currency codes ISO4217")
+ .AppendLine($" /// Last published at {loader.ActualCurrencyData.PublishedDate}.")
+ .AppendLine(" /// ");
}
sb.AppendLine(" public enum CurrencyCode")
- .AppendLine(" {")
- .AppendLine(" /// Unknown currency code ")
- .AppendLine(" None,");
+ .AppendLine(" {")
+ .AppendLine(" /// Unknown currency code ")
+ .AppendLine(" None,");
foreach (var c in loader.ActualCurrencyData.Currencies)
{
sb.AppendLine($" /// {c.Name} ");
- if (c.IsHistoric && !string.IsNullOrEmpty(c.WithdrawalDate))
- sb.AppendLine($" [Obsolete(\"Currency withdrawn on {c.WithdrawalDate}\")]");
-
sb.AppendLine($" {c.Code},");
}
sb.AppendLine(" }")
- .AppendLine("}");
+ .AppendLine("}");
spc.AddSource(HintName, SourceText.From(sb.ToString(), Encoding.UTF8));
}
@@ -102,7 +99,7 @@ public override void Initialize(IncrementalGeneratorInitializationContext contex
ErrorFactory.Create(new ErrorDescription
{
DiagnosticDescriptor = new DiagnosticDescriptor(
- id: DiagnosticDescriptors.UnexpectedErrorId,
+ id: CreateDescriptorId("0"),
title: Constants.DiagnosticsTitle,
messageFormat: $"Unexpected exception: {ex.Message}",
category: string.Empty,
@@ -115,7 +112,7 @@ public override void Initialize(IncrementalGeneratorInitializationContext contex
}
}
- private bool HasResourceErrors(string originalJson, string replacementJson, string historicalJson)
+ private bool HasResourceErrors(string originalXml, string translationsXml, string replacementJson, string currencyCodesCsv)
{
var hasError = false;
@@ -124,7 +121,7 @@ void ReportError(string message, GeneratorType type)
ErrorFactory.Create(new ErrorDescription
{
DiagnosticDescriptor = new DiagnosticDescriptor(
- id: DiagnosticDescriptors.ResourceLoadErrorId,
+ id: CreateDescriptorId("1"),
title: Constants.DiagnosticsTitle,
messageFormat: message,
category: string.Empty,
@@ -134,9 +131,9 @@ void ReportError(string message, GeneratorType type)
});
}
- if (originalJson.StartsWith(Constants.ErrorMark, StringComparison.Ordinal))
+ if (originalXml.StartsWith(Constants.ErrorMark, StringComparison.Ordinal))
{
- ReportError($"Failed to load original resource: {originalJson.Substring(9)}", GeneratorType.Currency);
+ ReportError($"Failed to load original resource: {originalXml.Substring(8)}", GeneratorType.Currency);
hasError = true;
}
if (replacementJson.StartsWith(Constants.ErrorMark, StringComparison.Ordinal))
@@ -144,9 +141,14 @@ void ReportError(string message, GeneratorType type)
ReportError($"Failed to load replacement resource: {replacementJson.Substring(9)}", GeneratorType.Currency);
hasError = true;
}
- if (historicalJson.StartsWith(Constants.ErrorMark, StringComparison.Ordinal))
+ if (translationsXml.StartsWith(Constants.ErrorMark, StringComparison.Ordinal))
+ {
+ ReportError($"Failed to load translations resource: {translationsXml.Substring(9)}", GeneratorType.Currency);
+ hasError = true;
+ }
+ if (currencyCodesCsv.StartsWith(Constants.ErrorMark, StringComparison.Ordinal))
{
- ReportError($"Failed to load historical resource: {historicalJson.Substring(9)}", GeneratorType.Currency);
+ ReportError($"Failed to load currency codes resource: {currencyCodesCsv.Substring(9)}", GeneratorType.Currency);
hasError = true;
}
diff --git a/src/packages/HawkN.Iso.Currencies.Generators/CurrencyDataLoader.cs b/src/packages/HawkN.Iso.Currencies.Generators/CurrencyDataLoader.cs
new file mode 100644
index 0000000..13cae60
--- /dev/null
+++ b/src/packages/HawkN.Iso.Currencies.Generators/CurrencyDataLoader.cs
@@ -0,0 +1,51 @@
+using HawkN.Iso.Currencies.Generators.Handlers;
+using HawkN.Iso.Currencies.Generators.Models;
+namespace HawkN.Iso.Currencies.Generators;
+
+internal sealed class CurrencyDataLoader : CurrencyLoaderBase
+{
+ private readonly CurrencyData _actualCurrencyData = new();
+
+ public override CurrencyData ActualCurrencyData => _actualCurrencyData;
+
+ public CurrencyDataLoader(string supplementalXml, string enXml, string replacementJson, string currencyCodesCsv)
+ {
+ var replacements = new JsonReplacementCurrencyHandler(replacementJson).LoadNameReplacements();
+ var actual = new SupplementalDataHandler(supplementalXml).LoadCurrencies();
+ var codes = new CurrencyCodesHandler(currencyCodesCsv).LoadCurrencyCodes();
+ var names = new CurrencyNamesHandler(enXml).LoadNames();
+ foreach (var currency in actual.Values)
+ {
+ if (names.TryGetValue(currency.Code, out var name))
+ currency.Name = name;
+ if (codes.TryGetValue(currency.Code, out var code))
+ currency.NumericCode = code;
+ }
+
+ _actualCurrencyData.PublishedDate = DateTime.UtcNow.ToString("yyyy-MM-dd");
+ _actualCurrencyData.Currencies = ProcessCurrencies(actual.Values.AsEnumerable(), replacements);
+ }
+
+ private static List ProcessCurrencies(IEnumerable currencies,
+ IReadOnlyDictionary replacements)
+ => currencies
+ .Where(c => !ExcludedCodes.Contains(c.Code))
+ .Select(c => new CurrencyRow
+ {
+ Code = c.Code,
+ Name = replacements.TryGetValue(c.Code, out var newName) ? newName : c.Name,
+ NumericCode = c.NumericCode,
+ CurrencyType = GetCurrencyType(c.Code)
+ })
+ .OrderBy(c => c.Code)
+ .ToList();
+
+ private static CurrencyType GetCurrencyType(string code)
+ {
+ if (PreciousMetalsCodes.Contains(code))
+ return CurrencyType.PreciousMetal;
+ if (SpecialReserveCodes.Contains(code))
+ return CurrencyType.SpecialReserve;
+ return SpecialUnits.Contains(code) ? CurrencyType.SpecialUnit : CurrencyType.Fiat;
+ }
+}
\ No newline at end of file
diff --git a/src/packages/HawkN.Iso.Currencies.Generators/Extensions/SpanExtensions.cs b/src/packages/HawkN.Iso.Currencies.Generators/Extensions/SpanExtensions.cs
new file mode 100644
index 0000000..cf557d0
--- /dev/null
+++ b/src/packages/HawkN.Iso.Currencies.Generators/Extensions/SpanExtensions.cs
@@ -0,0 +1,14 @@
+namespace HawkN.Iso.Currencies.Generators.Extensions;
+
+internal static class SpanExtensions
+{
+ public static ReadOnlySpan TrimQuotes(this ReadOnlySpan span)
+ {
+ span = span.Trim();
+ if (span.Length > 0 && span[0] == '"')
+ span = span.Slice(1);
+ if (span.Length > 0 && span[span.Length - 1] == '"')
+ span = span.Slice(0, span.Length - 1);
+ return span;
+ }
+}
\ No newline at end of file
diff --git a/src/packages/HawkN.Iso.Currencies.Generators/Handlers/CurrencyCodesHandler.cs b/src/packages/HawkN.Iso.Currencies.Generators/Handlers/CurrencyCodesHandler.cs
new file mode 100644
index 0000000..a1fb81b
--- /dev/null
+++ b/src/packages/HawkN.Iso.Currencies.Generators/Handlers/CurrencyCodesHandler.cs
@@ -0,0 +1,103 @@
+using HawkN.Iso.Currencies.Generators.Extensions;
+namespace HawkN.Iso.Currencies.Generators.Handlers;
+
+internal sealed class CurrencyCodesHandler(string csvContent)
+{
+ private const char Delimiter = ',';
+ private const string HeaderAlphabeticCodeName = "AlphabeticCode";
+ private const string HeaderNumericCodeName = "NumericCode";
+
+ public Dictionary LoadCurrencyCodes()
+ {
+ var codes = new Dictionary();
+ if (string.IsNullOrWhiteSpace(csvContent)) return codes;
+
+ var span = csvContent.AsSpan();
+ var headerEnd = span.IndexOf('\n');
+ if (headerEnd < 0) return codes;
+
+ var headerLine = span.Slice(0, headerEnd).TrimEnd('\r');
+ var lineStart = headerEnd + 1;
+
+ var indices = ParseHeader(headerLine, out var maxIndex);
+
+ while (lineStart < span.Length)
+ {
+ var lineEnd = span.Slice(lineStart).IndexOf('\n');
+ var lineSpan = lineEnd < 0
+ ? span.Slice(lineStart).TrimEnd('\r')
+ : span.Slice(lineStart, lineEnd).TrimEnd('\r');
+
+ lineStart += lineEnd < 0 ? span.Length - lineStart : lineEnd + 1;
+
+ if (TryParseCurrencyRow(lineSpan, indices, maxIndex, out var pair))
+ codes[pair.Key] = pair.Value;
+ }
+
+ return codes;
+ }
+
+ private static Dictionary ParseHeader(ReadOnlySpan headerLine, out int maxIndex)
+ {
+ var fields = ParseFields(headerLine);
+ var indices = new Dictionary
+ {
+ [HeaderAlphabeticCodeName] = -1,
+ [HeaderNumericCodeName] = -1
+ };
+
+ for (var i = 0; i < fields.Length; i++)
+ {
+ var f = fields[i];
+ switch (f.ToLowerInvariant())
+ {
+ case var _ when f.Equals(HeaderAlphabeticCodeName, StringComparison.OrdinalIgnoreCase):
+ indices[HeaderAlphabeticCodeName] = i; break;
+ case var _ when f.Equals(HeaderNumericCodeName, StringComparison.OrdinalIgnoreCase):
+ indices[HeaderNumericCodeName] = i; break;
+ }
+ }
+
+ if (indices.Values.Any(v => v < 0))
+ throw new InvalidDataException("CSV missing required columns.");
+
+ maxIndex = indices.Values.Max();
+ return indices;
+ }
+
+ private static bool TryParseCurrencyRow(ReadOnlySpan lineSpan, Dictionary indices, int maxIndex, out KeyValuePair pair)
+ {
+ var fields = ParseFields(lineSpan);
+ if (fields.Length <= maxIndex) return false;
+
+ var alphabeticCode = fields[indices[HeaderAlphabeticCodeName]];
+ var numericCode = fields[indices[HeaderNumericCodeName]];
+
+ if (alphabeticCode.Length != 3 || numericCode.Length == 0)
+ return false;
+
+ pair = new KeyValuePair(alphabeticCode, numericCode);
+ return true;
+ }
+
+ private static string[] ParseFields(ReadOnlySpan line)
+ {
+ var result = new List();
+ var start = 0;
+ var inQuotes = false;
+
+ for (var i = 0; i <= line.Length; i++)
+ {
+ var end = i == line.Length || (line[i] == Delimiter && !inQuotes);
+ if (i < line.Length && line[i] == '"') inQuotes = !inQuotes;
+
+ if (!end) continue;
+
+ var field = line.Slice(start, i - start).TrimQuotes().ToString();
+ result.Add(field);
+
+ start = i + 1;
+ }
+ return result.ToArray();
+ }
+}
\ No newline at end of file
diff --git a/src/packages/HawkN.Iso.Currencies.Generators/Handlers/CurrencyDataSet.cs b/src/packages/HawkN.Iso.Currencies.Generators/Handlers/CurrencyDataSet.cs
deleted file mode 100644
index 5259beb..0000000
--- a/src/packages/HawkN.Iso.Currencies.Generators/Handlers/CurrencyDataSet.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-namespace HawkN.Iso.Currencies.Generators.Handlers;
-
-internal sealed class CurrencyDataSet
-{
- public string PublishedDate { get; set; } = string.Empty;
- public List Currencies { get; set; } = [];
-}
\ No newline at end of file
diff --git a/src/packages/HawkN.Iso.Currencies.Generators/Handlers/CurrencyLoader.cs b/src/packages/HawkN.Iso.Currencies.Generators/Handlers/CurrencyLoader.cs
deleted file mode 100644
index d463d91..0000000
--- a/src/packages/HawkN.Iso.Currencies.Generators/Handlers/CurrencyLoader.cs
+++ /dev/null
@@ -1,62 +0,0 @@
-using HawkN.Iso.Currencies.Generators.Models;
-namespace HawkN.Iso.Currencies.Generators.Handlers;
-
-internal sealed class CurrencyLoader
-{
- private readonly CurrencyData _actualCurrencyData = new();
- private readonly CurrencyData _historicalCurrencyData = new();
-
- private static readonly HashSet PreciousMetalsCodes = new(StringComparer.OrdinalIgnoreCase)
- { "XAG", "XAU", "XPD", "XPT" };
-
- private static readonly HashSet SpecialReserveCodes = new(StringComparer.OrdinalIgnoreCase)
- { "XXX", "XTS" };
-
- private static readonly HashSet SpecialUnits = new(StringComparer.OrdinalIgnoreCase)
- { "XBA", "XBB", "XBC", "XBD", "XSU", "XUA" };
-
- private static readonly HashSet ExcludedCodes = new(StringComparer.OrdinalIgnoreCase)
- { "VED", "XAD", "XCG", "ZWG" };
-
- public CurrencyData ActualCurrencyData => _actualCurrencyData;
- public CurrencyData HistoricalCurrencyData => _historicalCurrencyData;
-
- public CurrencyLoader(string actualJson, string replacementJson, string historicalJson)
- {
- var replacements = new JsonReplacementCurrencyHandler(replacementJson).LoadNameReplacements();
- var actual = new JsonCurrencyHandler(actualJson).LoadCurrencies();
- var historical = new JsonHistoricalCurrencyHandler(historicalJson).LoadCurrencies();
-
- _actualCurrencyData.PublishedDate = actual.PublishedDate;
- _historicalCurrencyData.PublishedDate = historical.PublishedDate;
-
- _actualCurrencyData.Currencies = ProcessCurrencies(actual.Currencies, replacements);
- _historicalCurrencyData.Currencies = ProcessCurrencies(historical.Currencies, replacements);
- }
-
- private static List ProcessCurrencies(IEnumerable currencies,
- IReadOnlyDictionary replacements)
- => currencies
- .Where(c => !ExcludedCodes.Contains(c.Code))
- .Select(c => new CurrencyRow
- {
- Code = c.Code,
- Name = replacements.TryGetValue(c.Code, out var newName) ? newName : c.Name,
- Country = c.Country,
- NumericCode = c.NumericCode,
- CurrencyType = GetCurrencyType(c.Code),
- IsHistoric = !string.IsNullOrEmpty(c.WithdrawalDate),
- WithdrawalDate = c.WithdrawalDate
- })
- .OrderBy(c => c.Code)
- .ToList();
-
- private static CurrencyType GetCurrencyType(string code)
- {
- if (PreciousMetalsCodes.Contains(code))
- return CurrencyType.PreciousMetal;
- if (SpecialReserveCodes.Contains(code))
- return CurrencyType.SpecialReserve;
- return SpecialUnits.Contains(code) ? CurrencyType.SpecialUnit : CurrencyType.Fiat;
- }
-}
\ No newline at end of file
diff --git a/src/packages/HawkN.Iso.Currencies.Generators/Handlers/CurrencyLoaderBase.cs b/src/packages/HawkN.Iso.Currencies.Generators/Handlers/CurrencyLoaderBase.cs
new file mode 100644
index 0000000..281044f
--- /dev/null
+++ b/src/packages/HawkN.Iso.Currencies.Generators/Handlers/CurrencyLoaderBase.cs
@@ -0,0 +1,19 @@
+using HawkN.Iso.Currencies.Generators.Models;
+namespace HawkN.Iso.Currencies.Generators.Handlers;
+
+internal abstract class CurrencyLoaderBase
+{
+ protected static readonly HashSet PreciousMetalsCodes = new(StringComparer.OrdinalIgnoreCase)
+ { "XAG", "XAU", "XPD", "XPT" };
+
+ protected static readonly HashSet SpecialReserveCodes = new(StringComparer.OrdinalIgnoreCase)
+ { "XXX", "XTS", "XDR" };
+
+ protected static readonly HashSet SpecialUnits = new(StringComparer.OrdinalIgnoreCase)
+ { "XBA", "XBB", "XBC", "XBD", "XSU", "XUA" };
+
+ protected static readonly HashSet ExcludedCodes = new(StringComparer.OrdinalIgnoreCase)
+ { "VED", "XAD", "XCG", "ZWG", "CNH" };
+
+ public virtual CurrencyData ActualCurrencyData { get; } = null!;
+}
\ No newline at end of file
diff --git a/src/packages/HawkN.Iso.Currencies.Generators/Handlers/CurrencyNamesHandler.cs b/src/packages/HawkN.Iso.Currencies.Generators/Handlers/CurrencyNamesHandler.cs
new file mode 100644
index 0000000..9490cb4
--- /dev/null
+++ b/src/packages/HawkN.Iso.Currencies.Generators/Handlers/CurrencyNamesHandler.cs
@@ -0,0 +1,25 @@
+using System.Xml.Linq;
+namespace HawkN.Iso.Currencies.Generators.Handlers;
+
+internal sealed class CurrencyNamesHandler(string xmlContent)
+{
+ private readonly XDocument _doc = XDocument.Parse(xmlContent);
+
+ public Dictionary LoadNames()
+ {
+ return _doc
+ .Descendants("currency")
+ .Where(c => c.Attribute("type") != null)
+ .Select(c => new
+ {
+ Code = c.Attribute("type")!.Value,
+ Name = c.Element("displayName")?.Value
+ })
+ .Where(x => !string.IsNullOrEmpty(x.Name))
+ .GroupBy(x => x.Code)
+ .ToDictionary(
+ g => g.Key,
+ g => g.First().Name!,
+ StringComparer.OrdinalIgnoreCase);
+ }
+}
\ No newline at end of file
diff --git a/src/packages/HawkN.Iso.Currencies.Generators/Handlers/CurrencyRaw.cs b/src/packages/HawkN.Iso.Currencies.Generators/Handlers/CurrencyRaw.cs
deleted file mode 100644
index e59db45..0000000
--- a/src/packages/HawkN.Iso.Currencies.Generators/Handlers/CurrencyRaw.cs
+++ /dev/null
@@ -1,10 +0,0 @@
-namespace HawkN.Iso.Currencies.Generators.Handlers;
-
-internal sealed class CurrencyRaw
-{
- public string Code { get; set; } = string.Empty;
- public string Name { get; set; } = string.Empty;
- public string Country { get; set; } = string.Empty;
- public string? NumericCode { get; set; }
- public string? WithdrawalDate { get; set; }
-}
\ No newline at end of file
diff --git a/src/packages/HawkN.Iso.Currencies.Generators/Handlers/JsonCurrencyHandler.cs b/src/packages/HawkN.Iso.Currencies.Generators/Handlers/JsonCurrencyHandler.cs
deleted file mode 100644
index 342264f..0000000
--- a/src/packages/HawkN.Iso.Currencies.Generators/Handlers/JsonCurrencyHandler.cs
+++ /dev/null
@@ -1,8 +0,0 @@
-namespace HawkN.Iso.Currencies.Generators.Handlers;
-
-internal sealed class JsonCurrencyHandler(string jsonContent)
- : JsonCurrencyHandlerBase(jsonContent)
-{
- protected override string ArrayKey => "CcyNtry";
- protected override bool IsHistorical => false;
-}
\ No newline at end of file
diff --git a/src/packages/HawkN.Iso.Currencies.Generators/Handlers/JsonCurrencyHandlerBase.cs b/src/packages/HawkN.Iso.Currencies.Generators/Handlers/JsonCurrencyHandlerBase.cs
deleted file mode 100644
index 58edae8..0000000
--- a/src/packages/HawkN.Iso.Currencies.Generators/Handlers/JsonCurrencyHandlerBase.cs
+++ /dev/null
@@ -1,97 +0,0 @@
-using System.Text.RegularExpressions;
-using HawkN.Iso.Currencies.Generators.Utility;
-namespace HawkN.Iso.Currencies.Generators.Handlers;
-
-internal abstract class JsonCurrencyHandlerBase(string jsonContent)
-{
- protected abstract string ArrayKey { get; }
- protected abstract bool IsHistorical { get; }
-
- public CurrencyDataSet LoadCurrencies()
- {
- var publishedDate = JsonParser.ExtractPublishedDate(jsonContent);
- var arrayContent = JsonParser.ExtractArray(jsonContent, ArrayKey);
- var currencies = ParseCurrencies(arrayContent);
-
- return new CurrencyDataSet
- {
- PublishedDate = publishedDate,
- Currencies = currencies
- .GroupBy(c => c.Code)
- .Select(g => g.First())
- .ToList()
- };
- }
-
- private List ParseCurrencies(string arrayContent)
- {
- var currencies = new List();
- var (depth, inString, escape, objStart) = (0, false, false, -1);
-
- for (var i = 0; i < arrayContent.Length; i++)
- {
- var ch = arrayContent[i];
- if (JsonParser.HandleEscapeChar(ch, ref inString, ref escape) || inString)
- continue;
-
- switch (ch)
- {
- case '{':
- if (depth == 0) objStart = i;
- depth++;
- break;
- case '}':
- depth--;
- if (depth == 0 && objStart >= 0)
- {
- var obj = arrayContent.Substring(objStart, i - objStart + 1);
- var currency = ParseCurrency(obj);
- if (currency != null)
- currencies.Add(currency);
- objStart = -1;
- }
- break;
- }
- }
-
- return currencies;
- }
-
- private CurrencyRaw? ParseCurrency(string obj)
- {
- var code = JsonParser.Extract(obj, "Ccy");
- if (string.IsNullOrEmpty(code))
- return null;
-
- var name = ExtractCurrencyName(obj);
- var country = JsonParser.Extract(obj, "CtryNm") ?? string.Empty;
- var num = JsonParser.Extract(obj, "CcyNbr");
- var withdrawalDate = IsHistorical ? JsonParser.Extract(obj, "WthdrwlDt") : null;
-
- return new CurrencyRaw
- {
- Code = code!,
- Name = name,
- Country = country,
- NumericCode = string.IsNullOrEmpty(num) ? null : num,
- WithdrawalDate = string.IsNullOrEmpty(withdrawalDate) ? null : withdrawalDate
- };
- }
-
- private static string ExtractCurrencyName(string obj)
- {
- var name = JsonParser.Extract(obj, "CcyNm");
- if (!string.IsNullOrEmpty(name) &&
- !name!.TrimStart().StartsWith("{") &&
- !name.Contains("\"__text\""))
- return name;
-
- var innerMatch = Regex.Match(obj,
- @"""__text""\s*:\s*""([^""]*)""",
- RegexOptions.Compiled | RegexOptions.Singleline);
-
- return innerMatch.Success
- ? innerMatch.Groups[1].Value
- : name ?? string.Empty;
- }
-}
\ No newline at end of file
diff --git a/src/packages/HawkN.Iso.Currencies.Generators/Handlers/JsonHistoricalCurrencyHandler.cs b/src/packages/HawkN.Iso.Currencies.Generators/Handlers/JsonHistoricalCurrencyHandler.cs
deleted file mode 100644
index 0097672..0000000
--- a/src/packages/HawkN.Iso.Currencies.Generators/Handlers/JsonHistoricalCurrencyHandler.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-namespace HawkN.Iso.Currencies.Generators.Handlers;
-
-internal sealed class JsonHistoricalCurrencyHandler(string jsonContent) : JsonCurrencyHandlerBase(jsonContent)
-{
- protected override string ArrayKey => "HstrcCcyNtry";
- protected override bool IsHistorical => true;
-}
\ No newline at end of file
diff --git a/src/packages/HawkN.Iso.Currencies.Generators/Handlers/SupplementalDataHandler.cs b/src/packages/HawkN.Iso.Currencies.Generators/Handlers/SupplementalDataHandler.cs
new file mode 100644
index 0000000..0067e73
--- /dev/null
+++ b/src/packages/HawkN.Iso.Currencies.Generators/Handlers/SupplementalDataHandler.cs
@@ -0,0 +1,37 @@
+using System.Xml.Linq;
+using HawkN.Iso.Currencies.Generators.Models;
+namespace HawkN.Iso.Currencies.Generators.Handlers;
+
+internal sealed class SupplementalDataHandler(string xmlContent)
+{
+ private readonly XDocument _doc = XDocument.Parse(xmlContent);
+
+ public Dictionary LoadCurrencies()
+ {
+ var currencies = new Dictionary(StringComparer.OrdinalIgnoreCase);
+
+ ParseRegionCurrencies(currencies);
+
+ return currencies;
+ }
+
+ private void ParseRegionCurrencies(Dictionary currencies)
+ {
+ var regionCurrencies = _doc
+ .Descendants("currencyData")
+ .Descendants("region")
+ .SelectMany(region =>
+ region.Elements("currency")
+ .Where(c => !string.IsNullOrEmpty(c.Attribute("iso4217")?.Value) &&
+ string.IsNullOrEmpty(c.Attribute("to")?.Value))
+ .Select(c => c.Attribute("iso4217")!.Value))
+ .Where(code => !string.IsNullOrEmpty(code))
+ .Distinct(StringComparer.OrdinalIgnoreCase)
+ .Where(code => !currencies.ContainsKey(code));
+
+ foreach (var code in regionCurrencies)
+ {
+ currencies[code] = new CurrencyRow { Code = code };
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/packages/HawkN.Iso.Currencies.Generators/HawkN.Iso.Currencies.Generators.csproj b/src/packages/HawkN.Iso.Currencies.Generators/HawkN.Iso.Currencies.Generators.csproj
index d03c77d..56f5ad8 100644
--- a/src/packages/HawkN.Iso.Currencies.Generators/HawkN.Iso.Currencies.Generators.csproj
+++ b/src/packages/HawkN.Iso.Currencies.Generators/HawkN.Iso.Currencies.Generators.csproj
@@ -1,5 +1,4 @@
-
netstandard2.0
latest
@@ -21,35 +20,70 @@
true
false
false
+ false
+ false
+ release-48
+ https://raw.githubusercontent.com/unicode-org/cldr/$(CldrVersion)/common/main/en.xml
+ https://raw.githubusercontent.com/unicode-org/cldr/$(CldrVersion)/common/supplemental/supplementalData.xml
+ https://raw.githubusercontent.com/datasets/currency-codes/main/data/codes-all.csv
-
-
-
- Always
-
Always
-
+
+
+
+
+
Always
-
-
+
+
+ Always
+
+
+ Always
+
+
embedded
embedded
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/packages/HawkN.Iso.Currencies.Generators/LocalCurrencyDatabaseGenerator.cs b/src/packages/HawkN.Iso.Currencies.Generators/LocalCurrencyDatabaseGenerator.cs
index d27bd50..11a6442 100644
--- a/src/packages/HawkN.Iso.Currencies.Generators/LocalCurrencyDatabaseGenerator.cs
+++ b/src/packages/HawkN.Iso.Currencies.Generators/LocalCurrencyDatabaseGenerator.cs
@@ -1,11 +1,8 @@
-using System.Globalization;
-using System.Reflection;
+using System.Reflection;
using System.Text;
-using HawkN.Iso.Currencies.Generators.Handlers;
using HawkN.Iso.Currencies.Generators.Models;
using Microsoft.CodeAnalysis;
using Microsoft.CodeAnalysis.Text;
-
namespace HawkN.Iso.Currencies.Generators;
[Generator]
@@ -19,6 +16,7 @@ public class LocalCurrencyDatabaseGenerator : BaseIncrementalGenerator
//
#nullable enable
using System.Collections.Generic;
+ using System.Collections.Immutable;
using HawkN.Iso.Currencies.Models;
namespace HawkN.Iso.Currencies
{
@@ -28,10 +26,6 @@ internal static class LocalCurrencyDatabase
/// Actual currency information for codes ISO4217
public static readonly ImmutableArray ActualCurrencies = ImmutableArray.Create(
new Models.Currency[]{});
-
- /// Currency historical information for codes ISO4217
- public static readonly ImmutableArray HistoricalCurrencies= ImmutableArray.Create(
- new Models.Currency[]{});
}
}
""";
@@ -39,22 +33,24 @@ internal static class LocalCurrencyDatabase
public override void Initialize(IncrementalGeneratorInitializationContext context)
{
ErrorFactory.Clear();
- var jsonProvider = context.CompilationProvider.Select((_, _) =>
- {
- try
- {
- return LoadJsonResources(Assembly.GetExecutingAssembly());
- }
- catch (Exception ex)
- {
- var errorMsg = $"{Constants.ErrorMark}:{ex.Message}";
- return (errorMsg, errorMsg, errorMsg);
- }
- });
+ var jsonProvider = context.CompilationProvider.Select(ReadDataResource);
context.RegisterSourceOutput(jsonProvider, (spc, tuple) => GenerateSourceOutput(tuple, spc));
}
- private new void GenerateSourceOutput((string originalJson, string replacementJson, string historicalJson) tuple,
+ static (string, string, string, string) ReadDataResource(Compilation compilation, CancellationToken ct)
+ {
+ try
+ {
+ return LoadResources(Assembly.GetExecutingAssembly());
+ }
+ catch (InvalidOperationException ex)
+ {
+ var errorMsg = $"{Constants.ErrorMark}:{ex.Message}";
+ return (errorMsg, errorMsg, errorMsg, errorMsg);
+ }
+ }
+
+ private void GenerateSourceOutput((string originalXml, string translationsXml, string replacementJson, string currencyCodesCsv) tuple,
SourceProductionContext spc)
{
try
@@ -68,22 +64,46 @@ public override void Initialize(IncrementalGeneratorInitializationContext contex
return;
}
- var loader = new CurrencyLoader(tuple.originalJson, tuple.replacementJson, tuple.historicalJson);
- var sb = CreateSourceBuilder(Constants.GeneratorName, Constants.DefaultNamespace,
- [
- "System.Collections.Generic",
- "System.Collections.Immutable",
- "HawkN.Iso.Currencies.Models"
- ]);
+ var loader = new CurrencyDataLoader(tuple.originalXml, tuple.translationsXml, tuple.replacementJson, tuple.currencyCodesCsv);
+ var sb = CreateSourceBuilder(
+ Constants.GeneratorName,
+ Constants.DefaultNamespace,
+ Constants.ExtendedSourceData,
+ [
+ "System.Collections.Generic",
+ "System.Collections.Immutable",
+ "HawkN.Iso.Currencies.Models"
+ ]);
sb.AppendLine(" /// Currency information for codes ISO4217 ")
.AppendLine(" internal static class LocalCurrencyDatabase")
.AppendLine(" {");
GenerateCurrencySection(sb, "ActualCurrencies", loader.ActualCurrencyData);
- GenerateCurrencySection(sb, "HistoricalCurrencies", loader.HistoricalCurrencyData, isHistorical: true);
sb.AppendLine(" }").AppendLine("}");
+
+ var count = 2;
+ foreach (var currency in loader.ActualCurrencyData.Currencies.Where(currency => currency.NumericCode.Length < 3))
+ {
+ count++;
+ ErrorFactory.Create(new ErrorDescription
+ {
+ DiagnosticDescriptor = new DiagnosticDescriptor(
+ CreateDescriptorId(count.ToString()),
+ string.Empty,
+ $"Empty or invalid numeric code for the currency: `{currency.Code}`",
+ string.Empty,
+ DiagnosticSeverity.Error,
+ true),
+ GeneratorType = GeneratorType.Database
+ });
+ }
+ if (ErrorFactory.IsExists())
+ {
+ AddStubIfErrors(spc, HintName, StubSource, GeneratorType.Database);
+ return;
+ }
spc.AddSource(HintName, SourceText.From(sb.ToString(), Encoding.UTF8));
}
catch (Exception ex)
@@ -91,9 +111,9 @@ public override void Initialize(IncrementalGeneratorInitializationContext contex
ErrorFactory.Create(new ErrorDescription
{
DiagnosticDescriptor = new DiagnosticDescriptor(
- DiagnosticDescriptors.UnexpectedErrorId,
+ CreateDescriptorId("0"),
Constants.DiagnosticsTitle,
- $"Unexpected exception: {ex.Message}",
+ $"Unexpected exception: {ex.Message}. Stacktrace: {ex.StackTrace}",
string.Empty,
DiagnosticSeverity.Error,
true),
@@ -103,13 +123,14 @@ public override void Initialize(IncrementalGeneratorInitializationContext contex
}
}
- private static bool HasResourceErrors((string originalJson, string replacementJson, string historicalJson) tuple,
+ private static bool HasResourceErrors((string originalXml, string translationsXml, string replacementJson, string currencyCodesCsv) tuple,
out List messages)
{
messages = [];
- if (tuple.originalJson.StartsWith(Constants.ErrorMark)) messages.Add("original:" + tuple.originalJson);
+ if (tuple.originalXml.StartsWith(Constants.ErrorMark)) messages.Add("original:" + tuple.originalXml);
if (tuple.replacementJson.StartsWith(Constants.ErrorMark)) messages.Add("replacement:" + tuple.replacementJson);
- if (tuple.historicalJson.StartsWith(Constants.ErrorMark)) messages.Add("historical:" + tuple.historicalJson);
+ if (tuple.translationsXml.StartsWith(Constants.ErrorMark)) messages.Add("translations:" + tuple.translationsXml);
+ if (tuple.currencyCodesCsv.StartsWith(Constants.ErrorMark)) messages.Add("codes:" + tuple.currencyCodesCsv);
return messages.Count > 0;
}
@@ -128,26 +149,17 @@ private static void GenerateCurrencySection(StringBuilder sb, string propertyNam
.AppendLine(" {");
foreach (var c in data.Currencies)
{
- var currencyType = !c.IsHistoric && c.CurrencyType != null
+ var currencyType = c.CurrencyType != null
? $"CurrencyType.{c.CurrencyType}"
: "null";
- var isHist = c.IsHistoric ? "true" : "false";
- var withdrawal = ParseWithdrawalDate(c.WithdrawalDate!);
+ int.TryParse(c.NumericCode, out var numericCode);
sb.AppendLine(
- $" new(\"{c.Code}\", \"{c.Name}\", \"{c.Country}\", \"{c.NumericCode}\", {isHist}, {withdrawal}, {currencyType}),");
+ $" new(\"{c.Code}\", \"{c.Name}\", {numericCode}, {currencyType}),");
}
sb.AppendLine(" });");
}
- private static string ParseWithdrawalDate(string raw)
- {
- if (string.IsNullOrWhiteSpace(raw)) return "null";
- return DateTime.TryParseExact(raw, "yyyy-MM", CultureInfo.InvariantCulture, DateTimeStyles.None, out var dt)
- ? $"new DateOnly({dt.Year}, {dt.Month}, 1)"
- : "null";
- }
-
private void ReportResourceError(string msg)
{
var parts = msg.Split([':'], 2);
@@ -157,7 +169,7 @@ private void ReportResourceError(string msg)
ErrorFactory.Create(new ErrorDescription
{
DiagnosticDescriptor = new DiagnosticDescriptor(
- DiagnosticDescriptors.ResourceLoadErrorId,
+ CreateDescriptorId("1"),
Constants.DiagnosticsTitle,
$"Failed to load {name} resource: {text}",
string.Empty,
diff --git a/src/packages/HawkN.Iso.Currencies.Generators/Models/CurrencyRow.cs b/src/packages/HawkN.Iso.Currencies.Generators/Models/CurrencyRow.cs
index b651bca..0cd89a9 100644
--- a/src/packages/HawkN.Iso.Currencies.Generators/Models/CurrencyRow.cs
+++ b/src/packages/HawkN.Iso.Currencies.Generators/Models/CurrencyRow.cs
@@ -4,9 +4,6 @@ internal sealed class CurrencyRow
{
public string Code { get; set; } = string.Empty;
public string Name { get; set; } = string.Empty;
- public string? Country { get; set; }
- public string? NumericCode { get; set; }
+ public string NumericCode { get; set; } = string.Empty;
public CurrencyType? CurrencyType { get; set; }
- public bool IsHistoric { get; set; }
- public string? WithdrawalDate { get; set; }
}
\ No newline at end of file
diff --git a/src/packages/HawkN.Iso.Currencies.Generators/Models/DiagnosticDescriptors.cs b/src/packages/HawkN.Iso.Currencies.Generators/Models/DiagnosticDescriptors.cs
deleted file mode 100644
index 97e8a78..0000000
--- a/src/packages/HawkN.Iso.Currencies.Generators/Models/DiagnosticDescriptors.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-namespace HawkN.Iso.Currencies.Generators.Models;
-
-internal static class DiagnosticDescriptors
-{
- public const string UnexpectedErrorId = "CURRENCY000";
- public const string ResourceLoadErrorId = "CURRENCY001";
-}
\ No newline at end of file
diff --git a/src/packages/HawkN.Iso.Currencies.Generators/README.md b/src/packages/HawkN.Iso.Currencies.Generators/README.md
index 129c2ee..0ad7db5 100644
--- a/src/packages/HawkN.Iso.Currencies.Generators/README.md
+++ b/src/packages/HawkN.Iso.Currencies.Generators/README.md
@@ -1,21 +1,79 @@
-### [How to use source generator](#how-use-sourceGenerator)
+## How to use source generator
-- In the project __HawkN.Iso.Currencies__ use the parameter setting ``GenerateCurrencyFiles`` in the project. Set `true` value:
+The **HawkN.Iso.Currencies** project uses a Source Generator to generate currency code files based on Unicode CLDR data.
+
+### Steps
+
+1. Open the `HawkN.Iso.Currencies.csproj` file.
+2. Enable code generation by setting the following property:
+```json lines
+true
+```
+3. Save the changes.
+4. Rebuild the solution.
+5. Review the generated files:
+- `CurrencyCode.cs`
+- `LocalDatabase.cs`
+6. After verification, disable generation:
```json lines
- true
+false
```
-- Save changes;
-- Rebuild the solution;
-- Review changes in ``CurrencyCode.cs`` and ``LocalDatabase.cs``files;
-- The parameter setting ``GenerateCurrencyFiles`` set `false` value;
-- Save changes again;
-- Rebuild the solution again.
-
-### How to update currencies
-- Open https://www.iso.org/iso-4217-currency-codes.html
-- Download an XML file https://www.six-group.com/dam/download/financial-information/data-center/iso-currrency/lists/list-one.xml and convert to JSON
-- Save JSON data in the file ``Content\list-original-currencies.json``
-- Download an XML file https://www.six-group.com/dam/download/financial-information/data-center/iso-currrency/lists/list-three.xml and convert to JSON
-- Save JSON data in the file ``Content\list-historical-currencies.json``
-- Corrected names in the file ``Content\list-replacement-currency-names.json``
-- Use command from section How to use source generator
\ No newline at end of file
+7. Save changes and rebuild the solution again.
+
+> Generation is disabled by default to avoid unstable builds, network access during CI, and to keep builds reproducible.
+
+---
+
+## How to update currencies data (CLDR-based)
+
+Currency data is sourced **exclusively** from **Unicode CLDR**.
+ISO XML files, SIX Group resources, and third-party JSON repositories are **not used**.
+
+### Data sources
+
+- **Currency and country mapping**
+ `supplementalData.xml`
+ https://raw.githubusercontent.com/unicode-org/cldr//common/supplemental/supplementalData.xml
+
+- **English currency names and symbols**
+ `en.xml`
+ https://raw.githubusercontent.com/unicode-org/cldr//common/main/en.xml
+
+Replace `` with the desired CLDR release version (for example: `release-48`).
+
+## Update process
+
+1. Update the CLDR version if needed:
+```json lines
+release-48
+```
+2. Temporarily enable CLDR downloads and code generation:
+```json lines
+true
+true
+```
+3. Rebuild the project.
+4. Verify that:
+- CLDR XML files were downloaded
+- `CurrencyCode.cs` and `LocalCurrecnyDatabase.cs` were regenerated
+5. Commit the generated changes to the repository.
+6. Disable the flags again:
+```json lines
+false
+false
+```
+7. Rebuild the project once more.
+
+---
+
+## Notes
+
+- Historical currencies are excluded. Only currently active currencies from CLDR are included.
+- All data is distributed under the **Unicode License Agreement**, which is **MIT-compatible**.
+- The final NuGet package does **not** contain XML files or runtime parsers.
+- Code generation is intended to be run manually and committed, not executed on every build.
+
+---
+
+
+
diff --git a/src/packages/HawkN.Iso.Currencies/Abstractions/ICurrencyService.cs b/src/packages/HawkN.Iso.Currencies/Abstractions/ICurrencyService.cs
index 4cf85a5..e72b7ab 100644
--- a/src/packages/HawkN.Iso.Currencies/Abstractions/ICurrencyService.cs
+++ b/src/packages/HawkN.Iso.Currencies/Abstractions/ICurrencyService.cs
@@ -38,19 +38,6 @@ public interface ICurrencyService
///
Currency? Get(CurrencyCode code);
- ///
- /// Gets historical (withdrawn) currency information by string value.
- ///
- /// Currency code or name.
- /// Currency object or null if not found.
- Currency? GetHistorical(string value);
-
- ///
- /// Retrieves all historical (withdrawn) currencies defined by ISO 4217.
- ///
- /// An array of objects representing withdrawn currencies.
- Currency[] GetAllHistorical();
-
///
/// Starts building a query for actual currencies with fluent filtering and sorting.
///
diff --git a/src/packages/HawkN.Iso.Currencies/Builders/CurrencyQueryBuilder.cs b/src/packages/HawkN.Iso.Currencies/Builders/CurrencyQueryBuilder.cs
index aa26c59..510a6dc 100644
--- a/src/packages/HawkN.Iso.Currencies/Builders/CurrencyQueryBuilder.cs
+++ b/src/packages/HawkN.Iso.Currencies/Builders/CurrencyQueryBuilder.cs
@@ -61,8 +61,8 @@ public IReadOnlyList Build()
(_withoutCodes.Count == 0 || !_withoutCodes.Contains(c.Code)) &&
(_withNames.Count == 0 || _withNames.Contains(c.Name)) &&
(_withoutNames.Count == 0 || !_withoutNames.Contains(c.Name)) &&
- (_withNumericCodes.Count == 0 || (c.NumericCode != null && _withNumericCodes.Contains(c.NumericCode!))) &&
- (_withoutNumericCodes.Count == 0 || (c.NumericCode != null && !_withoutNumericCodes.Contains(c.NumericCode!)));
+ (_withNumericCodes.Count == 0 || (!string.IsNullOrEmpty(c.NumericCodeString) && _withNumericCodes.Contains(c.NumericCodeString!))) &&
+ (_withoutNumericCodes.Count == 0 || (!string.IsNullOrEmpty(c.NumericCodeString) && !_withoutNumericCodes.Contains(c.NumericCodeString)));
return _actualCurrencies
.Where(baseFilter)
diff --git a/src/packages/HawkN.Iso.Currencies/CurrencyCode.cs b/src/packages/HawkN.Iso.Currencies/CurrencyCode.cs
index 2a9b0b8..4d54b17 100644
--- a/src/packages/HawkN.Iso.Currencies/CurrencyCode.cs
+++ b/src/packages/HawkN.Iso.Currencies/CurrencyCode.cs
@@ -1,5 +1,8 @@
//
// This file was generated by HawkN.Iso.Currencies.Generators source generator
+// Release: release-48
+// CLDR URL: https://github.com/unicode-org/cldr
+// Currency codes URL: https://raw.githubusercontent.com/datasets/currency-codes/main/data/codes-all.csv
// Do not modify this file manually.
//
#nullable enable
@@ -7,7 +10,7 @@ namespace HawkN.Iso.Currencies
{
///
/// Currency codes ISO4217
- /// Last published at 2025-05-12.
+ /// Last published at 2026-01-04.
///
public enum CurrencyCode
{
@@ -37,11 +40,9 @@ public enum CurrencyCode
BBD,
/// Bangladeshi Taka
BDT,
- /// Bulgarian Lev
- BGN,
/// Bahraini Dinar
BHD,
- /// Burundi Franc
+ /// Burundian Franc
BIF,
/// Bermudian Dollar
BMD,
@@ -83,7 +84,7 @@ public enum CurrencyCode
COP,
/// Unidad de Valor Real
COU,
- /// Costa Rican Colon
+ /// Costa Rican Colón
CRC,
/// Cuban Peso
CUP,
@@ -91,7 +92,7 @@ public enum CurrencyCode
CVE,
/// Czech Koruna
CZK,
- /// Djibouti Franc
+ /// Djiboutian Franc
DJF,
/// Danish Krone
DKK,
@@ -111,11 +112,11 @@ public enum CurrencyCode
FJD,
/// Falkland Islands Pound
FKP,
- /// Pound Sterling
+ /// British Pound
GBP,
/// Georgian Lari
GEL,
- /// Ghana Cedi
+ /// Ghanaian Cedi
GHS,
/// Gibraltar Pound
GIP,
@@ -137,7 +138,7 @@ public enum CurrencyCode
HUF,
/// Indonesian Rupiah
IDR,
- /// New Israeli Sheqel
+ /// Israeli New Shekel
ILS,
/// Indian Rupee
INR,
@@ -203,21 +204,21 @@ public enum CurrencyCode
MUR,
/// Maldivian Rufiyaa
MVR,
- /// Malawi Kwacha
+ /// Malawian Kwacha
MWK,
/// Mexican Peso
MXN,
- /// Mexican Unidad de Inversion (UDI)
+ /// Mexican Investment Unit
MXV,
/// Malaysian Ringgit
MYR,
- /// Mozambique Metical
+ /// Mozambican Metical
MZN,
/// Namibian Dollar
NAD,
/// Nigerian Naira
NGN,
- /// Cordoba Oro
+ /// Nicaraguan Córdoba
NIO,
/// Norwegian Krone
NOK,
@@ -249,7 +250,7 @@ public enum CurrencyCode
RSD,
/// Russian Ruble
RUB,
- /// Rwanda Franc
+ /// Rwandan Franc
RWF,
/// Saudi Riyal
SAR,
@@ -275,8 +276,6 @@ public enum CurrencyCode
SSP,
/// São Tomé and Príncipe Dobra
STN,
- /// El Salvador Colon
- SVC,
/// Syrian Pound
SYP,
/// Swazi Lilangeni
@@ -285,7 +284,7 @@ public enum CurrencyCode
THB,
/// Tajikistani Somoni
TJS,
- /// Turkmenistan New Manat
+ /// Turkmenistani Manat
TMT,
/// Tunisian Dinar
TND,
@@ -301,21 +300,21 @@ public enum CurrencyCode
TZS,
/// Ukrainian Hryvnia
UAH,
- /// Uganda Shilling
+ /// Ugandan Shilling
UGX,
/// US Dollar
USD,
/// US Dollar (Next day)
USN,
- /// Uruguay Peso en Unidades Indexadas (UI)
+ /// Uruguayan Peso (Indexed Units)
UYI,
- /// Peso Uruguayo
+ /// Uruguayan Peso
UYU,
/// Unidad Previsional
UYW,
- /// Uzbekistan Sum
+ /// Uzbekistani Som
UZS,
- /// Bolívar Soberano
+ /// Venezuelan Bolívar
VES,
/// Vietnamese Dong
VND,
@@ -323,25 +322,25 @@ public enum CurrencyCode
VUV,
/// Samoan Tala
WST,
- /// CFA Franc BEAC
+ /// Central African CFA Franc
XAF,
/// Silver (one troy ounce)
XAG,
/// Gold (one troy ounce)
XAU,
- /// Bond Markets Unit European Composite Unit (EURCO)
+ /// European Composite Unit
XBA,
- /// Bond Markets Unit European Monetary Unit (E.M.U.-6)
+ /// European Monetary Unit
XBB,
- /// Bond Markets Unit European Unit of Account 9 (E.U.A.-9)
+ /// European Unit of Account (XBC)
XBC,
- /// Bond Markets Unit European Unit of Account 17 (E.U.A.-17)
+ /// European Unit of Account (XBD)
XBD,
/// East Caribbean Dollar
XCD,
- /// SDR (Special Drawing Right)
+ /// Special Drawing Rights
XDR,
- /// CFA Franc BCEAO
+ /// West African CFA Franc
XOF,
/// Palladium (one troy ounce)
XPD,
@@ -351,11 +350,11 @@ public enum CurrencyCode
XPT,
/// Sucre (Unidad de Cuenta del ALBA)
XSU,
- /// Codes specifically reserved for testing purposes
+ /// Testing Currency Code
XTS,
/// ADB Unit of Account
XUA,
- /// The codes assigned for transactions where no currency is involved
+ /// Unknown Currency
XXX,
/// Yemeni Rial
YER,
diff --git a/src/packages/HawkN.Iso.Currencies/HawkN.Iso.Currencies.csproj b/src/packages/HawkN.Iso.Currencies/HawkN.Iso.Currencies.csproj
index ca9e41c..9c7e013 100644
--- a/src/packages/HawkN.Iso.Currencies/HawkN.Iso.Currencies.csproj
+++ b/src/packages/HawkN.Iso.Currencies/HawkN.Iso.Currencies.csproj
@@ -24,19 +24,16 @@
$(MSBuildProjectDirectory)\LocalCurrencyDatabase.cs
$(BaseIntermediateOutputPath)\Generated
-
embedded
bin\Debug\HawkN.Iso.Currencies.xml
;NU1605
-
embedded
bin\Release\HawkN.Iso.Currencies.xml
;NU1605
-
@@ -80,7 +77,7 @@
-
+
diff --git a/src/packages/HawkN.Iso.Currencies/HawkN.Iso.Currencies.nuspec b/src/packages/HawkN.Iso.Currencies/HawkN.Iso.Currencies.nuspec
index 57992fd..3ca9e72 100644
--- a/src/packages/HawkN.Iso.Currencies/HawkN.Iso.Currencies.nuspec
+++ b/src/packages/HawkN.Iso.Currencies/HawkN.Iso.Currencies.nuspec
@@ -2,12 +2,12 @@
HawkN.Iso.Currencies
- 8.0.1
+ 8.0.0
HawkN.Iso.Currencies
Nikolay Selyutin (HawkN113)
false
Provides strongly typed ISO 4217 currency codes, utilities. Lightweight, dependency-free, and optimized for .NET 8 applications.
- ISO 4217 currency reference library with strongly typed codes, historical currencies, and utilities.
+ ISO 4217 currency reference library with strongly typed codes, utilities.
iso4217 currency currencies finance money money-codes .net8 dotnet-core dotnet-library csharp currency-code nuget-package
https://github.com/HawkN113/HawkN.Iso.Currencies
@@ -20,7 +20,7 @@
- Strongly typed CurrencyCode enum generated at compile time
- Lightweight & dependency-free
- Copyright © 2025 Nikolay Selyutin (HawkN113)
+ Copyright © 2026 Nikolay Selyutin (HawkN113)
@@ -28,6 +28,9 @@
+
+
+
diff --git a/src/packages/HawkN.Iso.Currencies/LocalCurrencyDatabase.cs b/src/packages/HawkN.Iso.Currencies/LocalCurrencyDatabase.cs
index 1ebe66c..8e15212 100644
--- a/src/packages/HawkN.Iso.Currencies/LocalCurrencyDatabase.cs
+++ b/src/packages/HawkN.Iso.Currencies/LocalCurrencyDatabase.cs
@@ -1,5 +1,8 @@
//
// This file was generated by HawkN.Iso.Currencies.Generators source generator
+// Release: release-48
+// CLDR URL: https://github.com/unicode-org/cldr
+// Currency codes URL: https://raw.githubusercontent.com/datasets/currency-codes/main/data/codes-all.csv
// Do not modify this file manually.
//
#nullable enable
@@ -13,328 +16,183 @@ internal static class LocalCurrencyDatabase
{
///
/// Actual currency information for codes ISO4217
- /// Last published at 2025-05-12.
+ /// Last published at 2026-01-04.
///
public static readonly ImmutableArray ActualCurrencies = ImmutableArray.Create(new Models.Currency[]
{
- new("AED", "UAE Dirham", "UNITED ARAB EMIRATES (THE)", "784", false, null, CurrencyType.Fiat),
- new("AFN", "Afghani", "AFGHANISTAN", "971", false, null, CurrencyType.Fiat),
- new("ALL", "Albanian Lek", "ALBANIA", "008", false, null, CurrencyType.Fiat),
- new("AMD", "Armenian Dram", "ARMENIA", "051", false, null, CurrencyType.Fiat),
- new("AOA", "Angolan Kwanza", "ANGOLA", "973", false, null, CurrencyType.Fiat),
- new("ARS", "Argentine Peso", "ARGENTINA", "032", false, null, CurrencyType.Fiat),
- new("AUD", "Australian Dollar", "AUSTRALIA", "036", false, null, CurrencyType.Fiat),
- new("AWG", "Aruban Florin", "ARUBA", "533", false, null, CurrencyType.Fiat),
- new("AZN", "Azerbaijan Manat", "AZERBAIJAN", "944", false, null, CurrencyType.Fiat),
- new("BAM", "Convertible Mark", "BOSNIA AND HERZEGOVINA", "977", false, null, CurrencyType.Fiat),
- new("BBD", "Barbados Dollar", "BARBADOS", "052", false, null, CurrencyType.Fiat),
- new("BDT", "Bangladeshi Taka", "BANGLADESH", "050", false, null, CurrencyType.Fiat),
- new("BGN", "Bulgarian Lev", "BULGARIA", "975", false, null, CurrencyType.Fiat),
- new("BHD", "Bahraini Dinar", "BAHRAIN", "048", false, null, CurrencyType.Fiat),
- new("BIF", "Burundi Franc", "BURUNDI", "108", false, null, CurrencyType.Fiat),
- new("BMD", "Bermudian Dollar", "BERMUDA", "060", false, null, CurrencyType.Fiat),
- new("BND", "Brunei Dollar", "BRUNEI DARUSSALAM", "096", false, null, CurrencyType.Fiat),
- new("BOB", "Bolivian Boliviano", "BOLIVIA (PLURINATIONAL STATE OF)", "068", false, null, CurrencyType.Fiat),
- new("BOV", "Bolivian Mvdol", "BOLIVIA (PLURINATIONAL STATE OF)", "984", false, null, CurrencyType.Fiat),
- new("BRL", "Brazilian Real", "BRAZIL", "986", false, null, CurrencyType.Fiat),
- new("BSD", "Bahamian Dollar", "BAHAMAS (THE)", "044", false, null, CurrencyType.Fiat),
- new("BTN", "Bhutanese Ngultrum", "BHUTAN", "064", false, null, CurrencyType.Fiat),
- new("BWP", "Botswana Pula", "BOTSWANA", "072", false, null, CurrencyType.Fiat),
- new("BYN", "Belarusian Ruble", "BELARUS", "933", false, null, CurrencyType.Fiat),
- new("BZD", "Belize Dollar", "BELIZE", "084", false, null, CurrencyType.Fiat),
- new("CAD", "Canadian Dollar", "CANADA", "124", false, null, CurrencyType.Fiat),
- new("CDF", "Congolese Franc", "CONGO (THE DEMOCRATIC REPUBLIC OF THE)", "976", false, null, CurrencyType.Fiat),
- new("CHE", "WIR Euro", "SWITZERLAND", "947", false, null, CurrencyType.Fiat),
- new("CHF", "Swiss Franc", "LIECHTENSTEIN", "756", false, null, CurrencyType.Fiat),
- new("CHW", "WIR Franc", "SWITZERLAND", "948", false, null, CurrencyType.Fiat),
- new("CLF", "Unidad de Fomento", "CHILE", "990", false, null, CurrencyType.Fiat),
- new("CLP", "Chilean Peso", "CHILE", "152", false, null, CurrencyType.Fiat),
- new("CNY", "Chinese Yuan", "CHINA", "156", false, null, CurrencyType.Fiat),
- new("COP", "Colombian Peso", "COLOMBIA", "170", false, null, CurrencyType.Fiat),
- new("COU", "Unidad de Valor Real", "COLOMBIA", "970", false, null, CurrencyType.Fiat),
- new("CRC", "Costa Rican Colon", "COSTA RICA", "188", false, null, CurrencyType.Fiat),
- new("CUP", "Cuban Peso", "CUBA", "192", false, null, CurrencyType.Fiat),
- new("CVE", "Cape Verde Escudo", "CABO VERDE", "132", false, null, CurrencyType.Fiat),
- new("CZK", "Czech Koruna", "CZECHIA", "203", false, null, CurrencyType.Fiat),
- new("DJF", "Djibouti Franc", "DJIBOUTI", "262", false, null, CurrencyType.Fiat),
- new("DKK", "Danish Krone", "DENMARK", "208", false, null, CurrencyType.Fiat),
- new("DOP", "Dominican Peso", "DOMINICAN REPUBLIC (THE)", "214", false, null, CurrencyType.Fiat),
- new("DZD", "Algerian Dinar", "ALGERIA", "012", false, null, CurrencyType.Fiat),
- new("EGP", "Egyptian Pound", "EGYPT", "818", false, null, CurrencyType.Fiat),
- new("ERN", "Eritrean Nakfa", "ERITREA", "232", false, null, CurrencyType.Fiat),
- new("ETB", "Ethiopian Birr", "ETHIOPIA", "230", false, null, CurrencyType.Fiat),
- new("EUR", "Euro", "ÅLAND ISLANDS", "978", false, null, CurrencyType.Fiat),
- new("FJD", "Fiji Dollar", "FIJI", "242", false, null, CurrencyType.Fiat),
- new("FKP", "Falkland Islands Pound", "FALKLAND ISLANDS (THE) [MALVINAS]", "238", false, null, CurrencyType.Fiat),
- new("GBP", "Pound Sterling", "GUERNSEY", "826", false, null, CurrencyType.Fiat),
- new("GEL", "Georgian Lari", "GEORGIA", "981", false, null, CurrencyType.Fiat),
- new("GHS", "Ghana Cedi", "GHANA", "936", false, null, CurrencyType.Fiat),
- new("GIP", "Gibraltar Pound", "GIBRALTAR", "292", false, null, CurrencyType.Fiat),
- new("GMD", "Gambian Dalasi", "GAMBIA (THE)", "270", false, null, CurrencyType.Fiat),
- new("GNF", "Guinean Franc", "GUINEA", "324", false, null, CurrencyType.Fiat),
- new("GTQ", "Guatemalan Quetzal", "GUATEMALA", "320", false, null, CurrencyType.Fiat),
- new("GYD", "Guyanese Dollar", "GUYANA", "328", false, null, CurrencyType.Fiat),
- new("HKD", "Hong Kong Dollar", "HONG KONG", "344", false, null, CurrencyType.Fiat),
- new("HNL", "Honduran Lempira", "HONDURAS", "340", false, null, CurrencyType.Fiat),
- new("HTG", "Haitian Gourde", "HAITI", "332", false, null, CurrencyType.Fiat),
- new("HUF", "Hungarian Forint", "HUNGARY", "348", false, null, CurrencyType.Fiat),
- new("IDR", "Indonesian Rupiah", "INDONESIA", "360", false, null, CurrencyType.Fiat),
- new("ILS", "New Israeli Sheqel", "ISRAEL", "376", false, null, CurrencyType.Fiat),
- new("INR", "Indian Rupee", "BHUTAN", "356", false, null, CurrencyType.Fiat),
- new("IQD", "Iraqi Dinar", "IRAQ", "368", false, null, CurrencyType.Fiat),
- new("IRR", "Iranian Rial", "IRAN (ISLAMIC REPUBLIC OF)", "364", false, null, CurrencyType.Fiat),
- new("ISK", "Icelandic Krona", "ICELAND", "352", false, null, CurrencyType.Fiat),
- new("JMD", "Jamaican Dollar", "JAMAICA", "388", false, null, CurrencyType.Fiat),
- new("JOD", "Jordanian Dinar", "JORDAN", "400", false, null, CurrencyType.Fiat),
- new("JPY", "Japanese Yen", "JAPAN", "392", false, null, CurrencyType.Fiat),
- new("KES", "Kenyan Shilling", "KENYA", "404", false, null, CurrencyType.Fiat),
- new("KGS", "Kyrgyzstani Som", "KYRGYZSTAN", "417", false, null, CurrencyType.Fiat),
- new("KHR", "Cambodian Riel", "CAMBODIA", "116", false, null, CurrencyType.Fiat),
- new("KMF", "Comorian Franc", "COMOROS (THE)", "174", false, null, CurrencyType.Fiat),
- new("KPW", "North Korean Won", "KOREA (THE DEMOCRATIC PEOPLE’S REPUBLIC OF)", "408", false, null, CurrencyType.Fiat),
- new("KRW", "South Korean Won", "KOREA (THE REPUBLIC OF)", "410", false, null, CurrencyType.Fiat),
- new("KWD", "Kuwaiti Dinar", "KUWAIT", "414", false, null, CurrencyType.Fiat),
- new("KYD", "Cayman Islands Dollar", "CAYMAN ISLANDS (THE)", "136", false, null, CurrencyType.Fiat),
- new("KZT", "Kazakhstani Tenge", "KAZAKHSTAN", "398", false, null, CurrencyType.Fiat),
- new("LAK", "Lao Kip", "LAO PEOPLE’S DEMOCRATIC REPUBLIC (THE)", "418", false, null, CurrencyType.Fiat),
- new("LBP", "Lebanese Pound", "LEBANON", "422", false, null, CurrencyType.Fiat),
- new("LKR", "Sri Lankan Rupee", "SRI LANKA", "144", false, null, CurrencyType.Fiat),
- new("LRD", "Liberian Dollar", "LIBERIA", "430", false, null, CurrencyType.Fiat),
- new("LSL", "Lesotho Loti", "LESOTHO", "426", false, null, CurrencyType.Fiat),
- new("LYD", "Libyan Dinar", "LIBYA", "434", false, null, CurrencyType.Fiat),
- new("MAD", "Moroccan Dirham", "MOROCCO", "504", false, null, CurrencyType.Fiat),
- new("MDL", "Moldovan Leu", "MOLDOVA (THE REPUBLIC OF)", "498", false, null, CurrencyType.Fiat),
- new("MGA", "Malagasy Ariary", "MADAGASCAR", "969", false, null, CurrencyType.Fiat),
- new("MKD", "Macedonian Denar", "NORTH MACEDONIA", "807", false, null, CurrencyType.Fiat),
- new("MMK", "Myanmar Kyat", "MYANMAR", "104", false, null, CurrencyType.Fiat),
- new("MNT", "Mongolian Tugrik", "MONGOLIA", "496", false, null, CurrencyType.Fiat),
- new("MOP", "Macanese Pataca", "MACAO", "446", false, null, CurrencyType.Fiat),
- new("MRU", "Mauritanian Ouguiya", "MAURITANIA", "929", false, null, CurrencyType.Fiat),
- new("MUR", "Mauritian Rupee", "MAURITIUS", "480", false, null, CurrencyType.Fiat),
- new("MVR", "Maldivian Rufiyaa", "MALDIVES", "462", false, null, CurrencyType.Fiat),
- new("MWK", "Malawi Kwacha", "MALAWI", "454", false, null, CurrencyType.Fiat),
- new("MXN", "Mexican Peso", "MEXICO", "484", false, null, CurrencyType.Fiat),
- new("MXV", "Mexican Unidad de Inversion (UDI)", "MEXICO", "979", false, null, CurrencyType.Fiat),
- new("MYR", "Malaysian Ringgit", "MALAYSIA", "458", false, null, CurrencyType.Fiat),
- new("MZN", "Mozambique Metical", "MOZAMBIQUE", "943", false, null, CurrencyType.Fiat),
- new("NAD", "Namibian Dollar", "NAMIBIA", "516", false, null, CurrencyType.Fiat),
- new("NGN", "Nigerian Naira", "NIGERIA", "566", false, null, CurrencyType.Fiat),
- new("NIO", "Cordoba Oro", "NICARAGUA", "558", false, null, CurrencyType.Fiat),
- new("NOK", "Norwegian Krone", "BOUVET ISLAND", "578", false, null, CurrencyType.Fiat),
- new("NPR", "Nepalese Rupee", "NEPAL", "524", false, null, CurrencyType.Fiat),
- new("NZD", "New Zealand Dollar", "COOK ISLANDS (THE)", "554", false, null, CurrencyType.Fiat),
- new("OMR", "Omani Rial", "OMAN", "512", false, null, CurrencyType.Fiat),
- new("PAB", "Panamanian Balboa", "PANAMA", "590", false, null, CurrencyType.Fiat),
- new("PEN", "Peruvian Sol", "PERU", "604", false, null, CurrencyType.Fiat),
- new("PGK", "Papua New Guinean Kina", "PAPUA NEW GUINEA", "598", false, null, CurrencyType.Fiat),
- new("PHP", "Philippine Peso", "PHILIPPINES (THE)", "608", false, null, CurrencyType.Fiat),
- new("PKR", "Pakistani Rupee", "PAKISTAN", "586", false, null, CurrencyType.Fiat),
- new("PLN", "Polish Zloty", "POLAND", "985", false, null, CurrencyType.Fiat),
- new("PYG", "Paraguayan Guarani", "PARAGUAY", "600", false, null, CurrencyType.Fiat),
- new("QAR", "Qatari Riyal", "QATAR", "634", false, null, CurrencyType.Fiat),
- new("RON", "Romanian Leu", "ROMANIA", "946", false, null, CurrencyType.Fiat),
- new("RSD", "Serbian Dinar", "SERBIA", "941", false, null, CurrencyType.Fiat),
- new("RUB", "Russian Ruble", "RUSSIAN FEDERATION (THE)", "643", false, null, CurrencyType.Fiat),
- new("RWF", "Rwanda Franc", "RWANDA", "646", false, null, CurrencyType.Fiat),
- new("SAR", "Saudi Riyal", "SAUDI ARABIA", "682", false, null, CurrencyType.Fiat),
- new("SBD", "Solomon Islands Dollar", "SOLOMON ISLANDS", "090", false, null, CurrencyType.Fiat),
- new("SCR", "Seychelles Rupee", "SEYCHELLES", "690", false, null, CurrencyType.Fiat),
- new("SDG", "Sudanese Pound", "SUDAN (THE)", "938", false, null, CurrencyType.Fiat),
- new("SEK", "Swedish Krona", "SWEDEN", "752", false, null, CurrencyType.Fiat),
- new("SGD", "Singapore Dollar", "SINGAPORE", "702", false, null, CurrencyType.Fiat),
- new("SHP", "Saint Helena Pound", "SAINT HELENA, ASCENSION AND TRISTAN DA CUNHA", "654", false, null, CurrencyType.Fiat),
- new("SLE", "Sierra Leonean Leone", "SIERRA LEONE", "925", false, null, CurrencyType.Fiat),
- new("SOS", "Somali Shilling", "SOMALIA", "706", false, null, CurrencyType.Fiat),
- new("SRD", "Surinamese Dollar", "SURINAME", "968", false, null, CurrencyType.Fiat),
- new("SSP", "South Sudanese Pound", "SOUTH SUDAN", "728", false, null, CurrencyType.Fiat),
- new("STN", "São Tomé and Príncipe Dobra", "SAO TOME AND PRINCIPE", "930", false, null, CurrencyType.Fiat),
- new("SVC", "El Salvador Colon", "EL SALVADOR", "222", false, null, CurrencyType.Fiat),
- new("SYP", "Syrian Pound", "SYRIAN ARAB REPUBLIC", "760", false, null, CurrencyType.Fiat),
- new("SZL", "Swazi Lilangeni", "ESWATINI", "748", false, null, CurrencyType.Fiat),
- new("THB", "Thai Baht", "THAILAND", "764", false, null, CurrencyType.Fiat),
- new("TJS", "Tajikistani Somoni", "TAJIKISTAN", "972", false, null, CurrencyType.Fiat),
- new("TMT", "Turkmenistan New Manat", "TURKMENISTAN", "934", false, null, CurrencyType.Fiat),
- new("TND", "Tunisian Dinar", "TUNISIA", "788", false, null, CurrencyType.Fiat),
- new("TOP", "Tongan Paʻanga", "TONGA", "776", false, null, CurrencyType.Fiat),
- new("TRY", "Turkish Lira", "TÜRKİYE", "949", false, null, CurrencyType.Fiat),
- new("TTD", "Trinidad and Tobago Dollar", "TRINIDAD AND TOBAGO", "780", false, null, CurrencyType.Fiat),
- new("TWD", "New Taiwan Dollar", "TAIWAN (PROVINCE OF CHINA)", "901", false, null, CurrencyType.Fiat),
- new("TZS", "Tanzanian Shilling", "TANZANIA, UNITED REPUBLIC OF", "834", false, null, CurrencyType.Fiat),
- new("UAH", "Ukrainian Hryvnia", "UKRAINE", "980", false, null, CurrencyType.Fiat),
- new("UGX", "Uganda Shilling", "UGANDA", "800", false, null, CurrencyType.Fiat),
- new("USD", "US Dollar", "AMERICAN SAMOA", "840", false, null, CurrencyType.Fiat),
- new("USN", "US Dollar (Next day)", "UNITED STATES OF AMERICA (THE)", "997", false, null, CurrencyType.Fiat),
- new("UYI", "Uruguay Peso en Unidades Indexadas (UI)", "URUGUAY", "940", false, null, CurrencyType.Fiat),
- new("UYU", "Peso Uruguayo", "URUGUAY", "858", false, null, CurrencyType.Fiat),
- new("UYW", "Unidad Previsional", "URUGUAY", "927", false, null, CurrencyType.Fiat),
- new("UZS", "Uzbekistan Sum", "UZBEKISTAN", "860", false, null, CurrencyType.Fiat),
- new("VES", "Bolívar Soberano", "VENEZUELA (BOLIVARIAN REPUBLIC OF)", "928", false, null, CurrencyType.Fiat),
- new("VND", "Vietnamese Dong", "VIET NAM", "704", false, null, CurrencyType.Fiat),
- new("VUV", "Vanuatu Vatu", "VANUATU", "548", false, null, CurrencyType.Fiat),
- new("WST", "Samoan Tala", "SAMOA", "882", false, null, CurrencyType.Fiat),
- new("XAF", "CFA Franc BEAC", "CAMEROON", "950", false, null, CurrencyType.Fiat),
- new("XAG", "Silver (one troy ounce)", "ZZ11_Silver", "961", false, null, CurrencyType.PreciousMetal),
- new("XAU", "Gold (one troy ounce)", "ZZ08_Gold", "959", false, null, CurrencyType.PreciousMetal),
- new("XBA", "Bond Markets Unit European Composite Unit (EURCO)", "ZZ01_Bond Markets Unit European_EURCO", "955", false, null, CurrencyType.SpecialUnit),
- new("XBB", "Bond Markets Unit European Monetary Unit (E.M.U.-6)", "ZZ02_Bond Markets Unit European_EMU-6", "956", false, null, CurrencyType.SpecialUnit),
- new("XBC", "Bond Markets Unit European Unit of Account 9 (E.U.A.-9)", "ZZ03_Bond Markets Unit European_EUA-9", "957", false, null, CurrencyType.SpecialUnit),
- new("XBD", "Bond Markets Unit European Unit of Account 17 (E.U.A.-17)", "ZZ04_Bond Markets Unit European_EUA-17", "958", false, null, CurrencyType.SpecialUnit),
- new("XCD", "East Caribbean Dollar", "ANGUILLA", "951", false, null, CurrencyType.Fiat),
- new("XDR", "SDR (Special Drawing Right)", "INTERNATIONAL MONETARY FUND (IMF)", "960", false, null, CurrencyType.Fiat),
- new("XOF", "CFA Franc BCEAO", "BENIN", "952", false, null, CurrencyType.Fiat),
- new("XPD", "Palladium (one troy ounce)", "ZZ09_Palladium", "964", false, null, CurrencyType.PreciousMetal),
- new("XPF", "CFP Franc", "FRENCH POLYNESIA", "953", false, null, CurrencyType.Fiat),
- new("XPT", "Platinum (one troy ounce)", "ZZ10_Platinum", "962", false, null, CurrencyType.PreciousMetal),
- new("XSU", "Sucre (Unidad de Cuenta del ALBA)", "SISTEMA UNITARIO DE COMPENSACION REGIONAL DE PAGOS 'SUCRE'", "994", false, null, CurrencyType.SpecialUnit),
- new("XTS", "Codes specifically reserved for testing purposes", "ZZ06_Testing_Code", "963", false, null, CurrencyType.SpecialReserve),
- new("XUA", "ADB Unit of Account", "MEMBER COUNTRIES OF THE AFRICAN DEVELOPMENT BANK GROUP", "965", false, null, CurrencyType.SpecialUnit),
- new("XXX", "The codes assigned for transactions where no currency is involved", "ZZ07_No_Currency", "999", false, null, CurrencyType.SpecialReserve),
- new("YER", "Yemeni Rial", "YEMEN", "886", false, null, CurrencyType.Fiat),
- new("ZAR", "South African Rand", "LESOTHO", "710", false, null, CurrencyType.Fiat),
- new("ZMW", "Zambian Kwacha", "ZAMBIA", "967", false, null, CurrencyType.Fiat),
- });
- ///
- /// Currency historical information for codes ISO4217
- /// Last published at 2025-03-31.
- ///
- public static readonly ImmutableArray HistoricalCurrencies = ImmutableArray.Create(new Models.Currency[]
- {
- new("ADP", "Andorran Peseta", "ANDORRA", "020", true, new DateOnly(2003, 7, 1), null),
- new("AFA", "Afghani", "AFGHANISTAN", "004", true, new DateOnly(2003, 1, 1), null),
- new("ALK", "Old Lek", "ALBANIA", "008", true, new DateOnly(1989, 12, 1), null),
- new("ANG", "Netherlands Antillean Guilder", "CURAÇAO", "532", true, new DateOnly(2025, 3, 1), null),
- new("AOK", "Kwanza", "ANGOLA", "024", true, new DateOnly(1991, 3, 1), null),
- new("AON", "New Kwanza", "ANGOLA", "024", true, new DateOnly(2000, 2, 1), null),
- new("AOR", "Kwanza Reajustado", "ANGOLA", "982", true, new DateOnly(2000, 2, 1), null),
- new("ARA", "Austral", "ARGENTINA", "032", true, new DateOnly(1992, 1, 1), null),
- new("ARP", "Peso Argentino", "ARGENTINA", "032", true, new DateOnly(1985, 7, 1), null),
- new("ARY", "Peso", "ARGENTINA", "032", true, null, null),
- new("ATS", "Schilling", "AUSTRIA", "040", true, new DateOnly(2002, 3, 1), null),
- new("AYM", "Azerbaijan Manat", "AZERBAIJAN", "945", true, new DateOnly(2005, 10, 1), null),
- new("AZM", "Azerbaijanian Manat", "AZERBAIJAN", "031", true, new DateOnly(2005, 12, 1), null),
- new("BAD", "Dinar", "BOSNIA AND HERZEGOVINA", "070", true, new DateOnly(1998, 7, 1), null),
- new("BEC", "Convertible Franc", "BELGIUM", "993", true, new DateOnly(1990, 3, 1), null),
- new("BEF", "Belgian Franc", "BELGIUM", "056", true, new DateOnly(2002, 3, 1), null),
- new("BEL", "Financial Franc", "BELGIUM", "992", true, new DateOnly(1990, 3, 1), null),
- new("BGJ", "Lev A/52", "BULGARIA", "100", true, null, null),
- new("BGK", "Lev A/62", "BULGARIA", "100", true, null, null),
- new("BGL", "Lev", "BULGARIA", "100", true, new DateOnly(2003, 11, 1), null),
- new("BOP", "Peso boliviano", "BOLIVIA", "068", true, new DateOnly(1987, 2, 1), null),
- new("BRB", "Cruzeiro", "BRAZIL", "076", true, new DateOnly(1986, 3, 1), null),
- new("BRC", "Cruzado", "BRAZIL", "076", true, new DateOnly(1989, 2, 1), null),
- new("BRE", "Cruzeiro", "BRAZIL", "076", true, new DateOnly(1993, 3, 1), null),
- new("BRN", "New Cruzado", "BRAZIL", "076", true, new DateOnly(1990, 3, 1), null),
- new("BRR", "Cruzeiro Real", "BRAZIL", "987", true, new DateOnly(1994, 7, 1), null),
- new("BUK", "Kyat", "BURMA", "104", true, new DateOnly(1990, 2, 1), null),
- new("BYB", "Belarusian Ruble", "BELARUS", "112", true, new DateOnly(2001, 1, 1), null),
- new("BYR", "Belarusian Ruble", "BELARUS", "974", true, new DateOnly(2017, 1, 1), null),
- new("CHC", "WIR Franc (for electronic)", "SWITZERLAND", "948", true, new DateOnly(2004, 11, 1), null),
- new("CSD", "Serbian Dinar", "SERBIA AND MONTENEGRO", "891", true, new DateOnly(2006, 10, 1), null),
- new("CSJ", "Krona A/53", "CZECHOSLOVAKIA", "203", true, null, null),
- new("CSK", "Koruna", "CZECHOSLOVAKIA", "200", true, new DateOnly(1993, 3, 1), null),
- new("CUC", "Peso Convertible", "CUBA", "931", true, new DateOnly(2021, 6, 1), null),
- new("CYP", "Cyprus Pound", "CYPRUS", "196", true, new DateOnly(2008, 1, 1), null),
- new("DDM", "Mark der DDR", "GERMAN DEMOCRATIC REPUBLIC", "278", true, null, null),
- new("DEM", "Deutsche Mark", "GERMANY", "276", true, new DateOnly(2002, 3, 1), null),
- new("ECS", "Sucre", "ECUADOR", "218", true, new DateOnly(2000, 9, 1), null),
- new("ECV", "Unidad de Valor Constante (UVC)", "ECUADOR", "983", true, new DateOnly(2000, 9, 1), null),
- new("EEK", "Kroon", "ESTONIA", "233", true, new DateOnly(2011, 1, 1), null),
- new("ESA", "Spanish Peseta", "SPAIN", "996", true, null, null),
- new("ESB", "'A' Account (convertible Peseta Account)", "SPAIN", "995", true, new DateOnly(1994, 12, 1), null),
- new("ESP", "Spanish Peseta", "ANDORRA", "724", true, new DateOnly(2002, 3, 1), null),
- new("EUR", "Euro", "SERBIA AND MONTENEGRO", "978", true, new DateOnly(2006, 10, 1), null),
- new("FIM", "Markka", "ÅLAND ISLANDS", "246", true, new DateOnly(2002, 3, 1), null),
- new("FRF", "French Franc", "ANDORRA", "250", true, new DateOnly(2002, 3, 1), null),
- new("GEK", "Georgian Coupon", "GEORGIA", "268", true, new DateOnly(1995, 10, 1), null),
- new("GHC", "Cedi", "GHANA", "288", true, new DateOnly(2008, 1, 1), null),
- new("GHP", "Ghana Cedi", "GHANA", "939", true, new DateOnly(2007, 6, 1), null),
- new("GNE", "Syli", "GUINEA", "324", true, new DateOnly(1989, 12, 1), null),
- new("GNS", "Syli", "GUINEA", "324", true, new DateOnly(1986, 2, 1), null),
- new("GQE", "Ekwele", "EQUATORIAL GUINEA", "226", true, new DateOnly(1986, 6, 1), null),
- new("GRD", "Drachma", "GREECE", "300", true, new DateOnly(2002, 3, 1), null),
- new("GWE", "Guinea Escudo", "GUINEA-BISSAU", "624", true, null, null),
- new("GWP", "Guinea-Bissau Peso", "GUINEA-BISSAU", "624", true, new DateOnly(1997, 5, 1), null),
- new("HRD", "Croatian Dinar", "CROATIA", "191", true, new DateOnly(1995, 1, 1), null),
- new("HRK", "Croatian Kuna", "CROATIA", "191", true, new DateOnly(2015, 6, 1), null),
- new("IDR", "Indonesian Rupiah", "TIMOR-LESTE", "360", true, new DateOnly(2002, 7, 1), null),
- new("IEP", "Irish Pound", "IRELAND", "372", true, new DateOnly(2002, 3, 1), null),
- new("ILP", "Pound", "ISRAEL", "376", true, null, null),
- new("ILR", "Old Shekel", "ISRAEL", "376", true, null, null),
- new("ISJ", "Old Krona", "ICELAND", "352", true, null, null),
- new("ITL", "Italian Lira", "HOLY SEE (VATICAN CITY STATE)", "380", true, new DateOnly(2002, 3, 1), null),
- new("LAJ", "Pathet Lao Kip", "LAO", "418", true, new DateOnly(1979, 12, 1), null),
- new("LSM", "Loti", "LESOTHO", "426", true, new DateOnly(1985, 5, 1), null),
- new("LTL", "Lithuanian Litas", "LITHUANIA", "440", true, new DateOnly(2014, 12, 1), null),
- new("LTT", "Talonas", "LITHUANIA", "440", true, new DateOnly(1993, 7, 1), null),
- new("LUC", "Luxembourg Convertible Franc", "LUXEMBOURG", "989", true, new DateOnly(1990, 3, 1), null),
- new("LUF", "Luxembourg Franc", "LUXEMBOURG", "442", true, new DateOnly(2002, 3, 1), null),
- new("LUL", "Luxembourg Financial Franc", "LUXEMBOURG", "988", true, new DateOnly(1990, 3, 1), null),
- new("LVL", "Latvian Lats", "LATVIA", "428", true, new DateOnly(2014, 1, 1), null),
- new("LVR", "Latvian Ruble", "LATVIA", "428", true, new DateOnly(1994, 12, 1), null),
- new("MGF", "Malagasy Franc", "MADAGASCAR", "450", true, new DateOnly(2004, 12, 1), null),
- new("MLF", "Mali Franc", "MALI", "466", true, new DateOnly(1984, 11, 1), null),
- new("MRO", "Ouguiya", "MAURITANIA", "478", true, new DateOnly(2017, 12, 1), null),
- new("MTL", "Maltese Lira", "MALTA", "470", true, new DateOnly(2008, 1, 1), null),
- new("MTP", "Maltese Pound", "MALTA", "470", true, new DateOnly(1983, 6, 1), null),
- new("MVQ", "Maldive Rupee", "MALDIVES", "462", true, new DateOnly(1989, 12, 1), null),
- new("MWK", "Kwacha", "MALAWI", "454", true, new DateOnly(2016, 2, 1), null),
- new("MXP", "Mexican Peso", "MEXICO", "484", true, new DateOnly(1993, 1, 1), null),
- new("MZE", "Mozambique Escudo", "MOZAMBIQUE", "508", true, null, null),
- new("MZM", "Mozambique Metical", "MOZAMBIQUE", "508", true, new DateOnly(2006, 6, 1), null),
- new("NIC", "Cordoba", "NICARAGUA", "558", true, new DateOnly(1990, 10, 1), null),
- new("NLG", "Netherlands Guilder", "NETHERLANDS", "528", true, new DateOnly(2002, 3, 1), null),
- new("PEH", "Sol", "PERU", "604", true, null, null),
- new("PEI", "Inti", "PERU", "604", true, new DateOnly(1991, 7, 1), null),
- new("PEN", "Peruvian Sol", "PERU", "604", true, new DateOnly(2015, 12, 1), null),
- new("PES", "Sol", "PERU", "604", true, new DateOnly(1986, 2, 1), null),
- new("PLZ", "Zloty", "POLAND", "616", true, new DateOnly(1997, 1, 1), null),
- new("PTE", "Portuguese Escudo", "PORTUGAL", "620", true, new DateOnly(2002, 3, 1), null),
- new("RHD", "Rhodesian Dollar", "SOUTHERN RHODESIA", "716", true, null, null),
- new("ROK", "Leu A/52", "ROMANIA", "642", true, null, null),
- new("ROL", "Old Leu", "ROMANIA", "642", true, new DateOnly(2005, 6, 1), null),
- new("RON", "Romanian Leu", "ROMANIA", "946", true, new DateOnly(2015, 6, 1), null),
- new("RUR", "Russian Ruble", "ARMENIA", "810", true, new DateOnly(1994, 8, 1), null),
- new("SDD", "Sudanese Dinar", "SUDAN", "736", true, new DateOnly(2007, 7, 1), null),
- new("SDG", "Sudanese Pound", "SOUTH SUDAN", "938", true, new DateOnly(2012, 9, 1), null),
- new("SDP", "Sudanese Pound", "SUDAN", "736", true, new DateOnly(1998, 6, 1), null),
- new("SIT", "Tolar", "SLOVENIA", "705", true, new DateOnly(2007, 1, 1), null),
- new("SKK", "Slovak Koruna", "SLOVAKIA", "703", true, new DateOnly(2009, 1, 1), null),
- new("SLL", "Leone", "SIERRA LEONE", "694", true, new DateOnly(2023, 12, 1), null),
- new("SRG", "Surinam Guilder", "SURINAME", "740", true, new DateOnly(2003, 12, 1), null),
- new("STD", "Dobra", "SAO TOME AND PRINCIPE", "678", true, new DateOnly(2017, 12, 1), null),
- new("SUR", "Rouble", "UNION OF SOVIET SOCIALIST REPUBLICS", "810", true, new DateOnly(1990, 12, 1), null),
- new("SZL", "Swazi Lilangeni", "SWAZILAND", "748", true, new DateOnly(2018, 8, 1), null),
- new("TJR", "Tajik Ruble", "TAJIKISTAN", "762", true, new DateOnly(2001, 4, 1), null),
- new("TMM", "Turkmenistan Manat", "TURKMENISTAN", "795", true, new DateOnly(2009, 1, 1), null),
- new("TPE", "Timor Escudo", "TIMOR-LESTE", "626", true, new DateOnly(2002, 11, 1), null),
- new("TRL", "Old Turkish Lira", "TURKEY", "792", true, new DateOnly(2005, 12, 1), null),
- new("TRY", "New Turkish Lira", "TURKEY", "949", true, new DateOnly(2009, 1, 1), null),
- new("UAK", "Karbovanet", "UKRAINE", "804", true, new DateOnly(1996, 9, 1), null),
- new("UGS", "Uganda Shilling", "UGANDA", "800", true, new DateOnly(1987, 5, 1), null),
- new("UGW", "Old Shilling", "UGANDA", "800", true, null, null),
- new("USS", "US Dollar (Same day)", "UNITED STATES", "998", true, new DateOnly(2014, 3, 1), null),
- new("UYN", "Old Uruguay Peso", "URUGUAY", "858", true, new DateOnly(1989, 12, 1), null),
- new("UYP", "Uruguayan Peso", "URUGUAY", "858", true, new DateOnly(1993, 3, 1), null),
- new("VEB", "Bolivar", "VENEZUELA", "862", true, new DateOnly(2008, 1, 1), null),
- new("VEF", "Bolivar Fuerte", "VENEZUELA", "937", true, new DateOnly(2011, 12, 1), null),
- new("VNC", "Old Dong", "VIETNAM", "704", true, null, null),
- new("XEU", "European Currency Unit (E.C.U)", "EUROPEAN MONETARY CO-OPERATION FUND (EMCF)", "954", true, new DateOnly(1999, 1, 1), null),
- new("XFO", "Gold-Franc", "ZZ01_Gold-Franc", "", true, new DateOnly(2006, 10, 1), null),
- new("XFU", "UIC-Franc", "ZZ05_UIC-Franc", "", true, new DateOnly(2013, 11, 1), null),
- new("XRE", "RINET Funds Code", "ZZ02_RINET Funds Code", "", true, new DateOnly(1999, 11, 1), null),
- new("YDD", "Yemeni Dinar", "YEMEN, DEMOCRATIC", "720", true, new DateOnly(1991, 9, 1), null),
- new("YUD", "New Yugoslavian Dinar", "YUGOSLAVIA", "890", true, new DateOnly(1990, 1, 1), null),
- new("YUM", "New Dinar", "YUGOSLAVIA", "891", true, new DateOnly(2003, 7, 1), null),
- new("YUN", "Yugoslavian Dinar", "YUGOSLAVIA", "890", true, new DateOnly(1995, 11, 1), null),
- new("ZAL", "Financial Rand", "LESOTHO", "991", true, new DateOnly(1995, 3, 1), null),
- new("ZMK", "Zambian Kwacha", "ZAMBIA", "894", true, new DateOnly(2012, 12, 1), null),
- new("ZRN", "New Zaire", "ZAIRE", "180", true, new DateOnly(1999, 6, 1), null),
- new("ZRZ", "Zaire", "ZAIRE", "180", true, new DateOnly(1994, 2, 1), null),
- new("ZWC", "Rhodesian Dollar", "ZIMBABWE", "716", true, new DateOnly(1989, 12, 1), null),
- new("ZWD", "Zimbabwe Dollar (old)", "ZIMBABWE", "716", true, new DateOnly(2006, 8, 1), null),
- new("ZWL", "Zimbabwe Dollar", "ZIMBABWE", "932", true, new DateOnly(2024, 9, 1), null),
- new("ZWN", "Zimbabwe Dollar (new)", "ZIMBABWE", "942", true, new DateOnly(2006, 9, 1), null),
- new("ZWR", "Zimbabwe Dollar", "ZIMBABWE", "935", true, new DateOnly(2009, 6, 1), null),
+ new("AED", "UAE Dirham", 784, CurrencyType.Fiat),
+ new("AFN", "Afghani", 971, CurrencyType.Fiat),
+ new("ALL", "Albanian Lek", 8, CurrencyType.Fiat),
+ new("AMD", "Armenian Dram", 51, CurrencyType.Fiat),
+ new("AOA", "Angolan Kwanza", 973, CurrencyType.Fiat),
+ new("ARS", "Argentine Peso", 32, CurrencyType.Fiat),
+ new("AUD", "Australian Dollar", 36, CurrencyType.Fiat),
+ new("AWG", "Aruban Florin", 533, CurrencyType.Fiat),
+ new("AZN", "Azerbaijan Manat", 944, CurrencyType.Fiat),
+ new("BAM", "Convertible Mark", 977, CurrencyType.Fiat),
+ new("BBD", "Barbados Dollar", 52, CurrencyType.Fiat),
+ new("BDT", "Bangladeshi Taka", 50, CurrencyType.Fiat),
+ new("BHD", "Bahraini Dinar", 48, CurrencyType.Fiat),
+ new("BIF", "Burundian Franc", 108, CurrencyType.Fiat),
+ new("BMD", "Bermudian Dollar", 60, CurrencyType.Fiat),
+ new("BND", "Brunei Dollar", 96, CurrencyType.Fiat),
+ new("BOB", "Bolivian Boliviano", 68, CurrencyType.Fiat),
+ new("BOV", "Bolivian Mvdol", 984, CurrencyType.Fiat),
+ new("BRL", "Brazilian Real", 986, CurrencyType.Fiat),
+ new("BSD", "Bahamian Dollar", 44, CurrencyType.Fiat),
+ new("BTN", "Bhutanese Ngultrum", 64, CurrencyType.Fiat),
+ new("BWP", "Botswana Pula", 72, CurrencyType.Fiat),
+ new("BYN", "Belarusian Ruble", 933, CurrencyType.Fiat),
+ new("BZD", "Belize Dollar", 84, CurrencyType.Fiat),
+ new("CAD", "Canadian Dollar", 124, CurrencyType.Fiat),
+ new("CDF", "Congolese Franc", 976, CurrencyType.Fiat),
+ new("CHE", "WIR Euro", 947, CurrencyType.Fiat),
+ new("CHF", "Swiss Franc", 756, CurrencyType.Fiat),
+ new("CHW", "WIR Franc", 948, CurrencyType.Fiat),
+ new("CLF", "Unidad de Fomento", 990, CurrencyType.Fiat),
+ new("CLP", "Chilean Peso", 152, CurrencyType.Fiat),
+ new("CNY", "Chinese Yuan", 156, CurrencyType.Fiat),
+ new("COP", "Colombian Peso", 170, CurrencyType.Fiat),
+ new("COU", "Unidad de Valor Real", 970, CurrencyType.Fiat),
+ new("CRC", "Costa Rican Colón", 188, CurrencyType.Fiat),
+ new("CUP", "Cuban Peso", 192, CurrencyType.Fiat),
+ new("CVE", "Cape Verde Escudo", 132, CurrencyType.Fiat),
+ new("CZK", "Czech Koruna", 203, CurrencyType.Fiat),
+ new("DJF", "Djiboutian Franc", 262, CurrencyType.Fiat),
+ new("DKK", "Danish Krone", 208, CurrencyType.Fiat),
+ new("DOP", "Dominican Peso", 214, CurrencyType.Fiat),
+ new("DZD", "Algerian Dinar", 12, CurrencyType.Fiat),
+ new("EGP", "Egyptian Pound", 818, CurrencyType.Fiat),
+ new("ERN", "Eritrean Nakfa", 232, CurrencyType.Fiat),
+ new("ETB", "Ethiopian Birr", 230, CurrencyType.Fiat),
+ new("EUR", "Euro", 978, CurrencyType.Fiat),
+ new("FJD", "Fiji Dollar", 242, CurrencyType.Fiat),
+ new("FKP", "Falkland Islands Pound", 238, CurrencyType.Fiat),
+ new("GBP", "British Pound", 826, CurrencyType.Fiat),
+ new("GEL", "Georgian Lari", 981, CurrencyType.Fiat),
+ new("GHS", "Ghanaian Cedi", 936, CurrencyType.Fiat),
+ new("GIP", "Gibraltar Pound", 292, CurrencyType.Fiat),
+ new("GMD", "Gambian Dalasi", 270, CurrencyType.Fiat),
+ new("GNF", "Guinean Franc", 324, CurrencyType.Fiat),
+ new("GTQ", "Guatemalan Quetzal", 320, CurrencyType.Fiat),
+ new("GYD", "Guyanese Dollar", 328, CurrencyType.Fiat),
+ new("HKD", "Hong Kong Dollar", 344, CurrencyType.Fiat),
+ new("HNL", "Honduran Lempira", 340, CurrencyType.Fiat),
+ new("HTG", "Haitian Gourde", 332, CurrencyType.Fiat),
+ new("HUF", "Hungarian Forint", 348, CurrencyType.Fiat),
+ new("IDR", "Indonesian Rupiah", 360, CurrencyType.Fiat),
+ new("ILS", "Israeli New Shekel", 376, CurrencyType.Fiat),
+ new("INR", "Indian Rupee", 356, CurrencyType.Fiat),
+ new("IQD", "Iraqi Dinar", 368, CurrencyType.Fiat),
+ new("IRR", "Iranian Rial", 364, CurrencyType.Fiat),
+ new("ISK", "Icelandic Krona", 352, CurrencyType.Fiat),
+ new("JMD", "Jamaican Dollar", 388, CurrencyType.Fiat),
+ new("JOD", "Jordanian Dinar", 400, CurrencyType.Fiat),
+ new("JPY", "Japanese Yen", 392, CurrencyType.Fiat),
+ new("KES", "Kenyan Shilling", 404, CurrencyType.Fiat),
+ new("KGS", "Kyrgyzstani Som", 417, CurrencyType.Fiat),
+ new("KHR", "Cambodian Riel", 116, CurrencyType.Fiat),
+ new("KMF", "Comorian Franc", 174, CurrencyType.Fiat),
+ new("KPW", "North Korean Won", 408, CurrencyType.Fiat),
+ new("KRW", "South Korean Won", 410, CurrencyType.Fiat),
+ new("KWD", "Kuwaiti Dinar", 414, CurrencyType.Fiat),
+ new("KYD", "Cayman Islands Dollar", 136, CurrencyType.Fiat),
+ new("KZT", "Kazakhstani Tenge", 398, CurrencyType.Fiat),
+ new("LAK", "Lao Kip", 418, CurrencyType.Fiat),
+ new("LBP", "Lebanese Pound", 422, CurrencyType.Fiat),
+ new("LKR", "Sri Lankan Rupee", 144, CurrencyType.Fiat),
+ new("LRD", "Liberian Dollar", 430, CurrencyType.Fiat),
+ new("LSL", "Lesotho Loti", 426, CurrencyType.Fiat),
+ new("LYD", "Libyan Dinar", 434, CurrencyType.Fiat),
+ new("MAD", "Moroccan Dirham", 504, CurrencyType.Fiat),
+ new("MDL", "Moldovan Leu", 498, CurrencyType.Fiat),
+ new("MGA", "Malagasy Ariary", 969, CurrencyType.Fiat),
+ new("MKD", "Macedonian Denar", 807, CurrencyType.Fiat),
+ new("MMK", "Myanmar Kyat", 104, CurrencyType.Fiat),
+ new("MNT", "Mongolian Tugrik", 496, CurrencyType.Fiat),
+ new("MOP", "Macanese Pataca", 446, CurrencyType.Fiat),
+ new("MRU", "Mauritanian Ouguiya", 929, CurrencyType.Fiat),
+ new("MUR", "Mauritian Rupee", 480, CurrencyType.Fiat),
+ new("MVR", "Maldivian Rufiyaa", 462, CurrencyType.Fiat),
+ new("MWK", "Malawian Kwacha", 454, CurrencyType.Fiat),
+ new("MXN", "Mexican Peso", 484, CurrencyType.Fiat),
+ new("MXV", "Mexican Investment Unit", 979, CurrencyType.Fiat),
+ new("MYR", "Malaysian Ringgit", 458, CurrencyType.Fiat),
+ new("MZN", "Mozambican Metical", 943, CurrencyType.Fiat),
+ new("NAD", "Namibian Dollar", 516, CurrencyType.Fiat),
+ new("NGN", "Nigerian Naira", 566, CurrencyType.Fiat),
+ new("NIO", "Nicaraguan Córdoba", 558, CurrencyType.Fiat),
+ new("NOK", "Norwegian Krone", 578, CurrencyType.Fiat),
+ new("NPR", "Nepalese Rupee", 524, CurrencyType.Fiat),
+ new("NZD", "New Zealand Dollar", 554, CurrencyType.Fiat),
+ new("OMR", "Omani Rial", 512, CurrencyType.Fiat),
+ new("PAB", "Panamanian Balboa", 590, CurrencyType.Fiat),
+ new("PEN", "Peruvian Sol", 604, CurrencyType.Fiat),
+ new("PGK", "Papua New Guinean Kina", 598, CurrencyType.Fiat),
+ new("PHP", "Philippine Peso", 608, CurrencyType.Fiat),
+ new("PKR", "Pakistani Rupee", 586, CurrencyType.Fiat),
+ new("PLN", "Polish Zloty", 985, CurrencyType.Fiat),
+ new("PYG", "Paraguayan Guarani", 600, CurrencyType.Fiat),
+ new("QAR", "Qatari Riyal", 634, CurrencyType.Fiat),
+ new("RON", "Romanian Leu", 946, CurrencyType.Fiat),
+ new("RSD", "Serbian Dinar", 941, CurrencyType.Fiat),
+ new("RUB", "Russian Ruble", 643, CurrencyType.Fiat),
+ new("RWF", "Rwandan Franc", 646, CurrencyType.Fiat),
+ new("SAR", "Saudi Riyal", 682, CurrencyType.Fiat),
+ new("SBD", "Solomon Islands Dollar", 90, CurrencyType.Fiat),
+ new("SCR", "Seychelles Rupee", 690, CurrencyType.Fiat),
+ new("SDG", "Sudanese Pound", 938, CurrencyType.Fiat),
+ new("SEK", "Swedish Krona", 752, CurrencyType.Fiat),
+ new("SGD", "Singapore Dollar", 702, CurrencyType.Fiat),
+ new("SHP", "Saint Helena Pound", 654, CurrencyType.Fiat),
+ new("SLE", "Sierra Leonean Leone", 925, CurrencyType.Fiat),
+ new("SOS", "Somali Shilling", 706, CurrencyType.Fiat),
+ new("SRD", "Surinamese Dollar", 968, CurrencyType.Fiat),
+ new("SSP", "South Sudanese Pound", 728, CurrencyType.Fiat),
+ new("STN", "São Tomé and Príncipe Dobra", 930, CurrencyType.Fiat),
+ new("SYP", "Syrian Pound", 760, CurrencyType.Fiat),
+ new("SZL", "Swazi Lilangeni", 748, CurrencyType.Fiat),
+ new("THB", "Thai Baht", 764, CurrencyType.Fiat),
+ new("TJS", "Tajikistani Somoni", 972, CurrencyType.Fiat),
+ new("TMT", "Turkmenistani Manat", 934, CurrencyType.Fiat),
+ new("TND", "Tunisian Dinar", 788, CurrencyType.Fiat),
+ new("TOP", "Tongan Paʻanga", 776, CurrencyType.Fiat),
+ new("TRY", "Turkish Lira", 949, CurrencyType.Fiat),
+ new("TTD", "Trinidad and Tobago Dollar", 780, CurrencyType.Fiat),
+ new("TWD", "New Taiwan Dollar", 901, CurrencyType.Fiat),
+ new("TZS", "Tanzanian Shilling", 834, CurrencyType.Fiat),
+ new("UAH", "Ukrainian Hryvnia", 980, CurrencyType.Fiat),
+ new("UGX", "Ugandan Shilling", 800, CurrencyType.Fiat),
+ new("USD", "US Dollar", 840, CurrencyType.Fiat),
+ new("USN", "US Dollar (Next day)", 997, CurrencyType.Fiat),
+ new("UYI", "Uruguayan Peso (Indexed Units)", 940, CurrencyType.Fiat),
+ new("UYU", "Uruguayan Peso", 858, CurrencyType.Fiat),
+ new("UYW", "Unidad Previsional", 927, CurrencyType.Fiat),
+ new("UZS", "Uzbekistani Som", 860, CurrencyType.Fiat),
+ new("VES", "Venezuelan Bolívar", 928, CurrencyType.Fiat),
+ new("VND", "Vietnamese Dong", 704, CurrencyType.Fiat),
+ new("VUV", "Vanuatu Vatu", 548, CurrencyType.Fiat),
+ new("WST", "Samoan Tala", 882, CurrencyType.Fiat),
+ new("XAF", "Central African CFA Franc", 950, CurrencyType.Fiat),
+ new("XAG", "Silver (one troy ounce)", 961, CurrencyType.PreciousMetal),
+ new("XAU", "Gold (one troy ounce)", 959, CurrencyType.PreciousMetal),
+ new("XBA", "European Composite Unit", 955, CurrencyType.SpecialUnit),
+ new("XBB", "European Monetary Unit", 956, CurrencyType.SpecialUnit),
+ new("XBC", "European Unit of Account (XBC)", 957, CurrencyType.SpecialUnit),
+ new("XBD", "European Unit of Account (XBD)", 958, CurrencyType.SpecialUnit),
+ new("XCD", "East Caribbean Dollar", 951, CurrencyType.Fiat),
+ new("XDR", "Special Drawing Rights", 960, CurrencyType.SpecialReserve),
+ new("XOF", "West African CFA Franc", 952, CurrencyType.Fiat),
+ new("XPD", "Palladium (one troy ounce)", 964, CurrencyType.PreciousMetal),
+ new("XPF", "CFP Franc", 953, CurrencyType.Fiat),
+ new("XPT", "Platinum (one troy ounce)", 962, CurrencyType.PreciousMetal),
+ new("XSU", "Sucre (Unidad de Cuenta del ALBA)", 994, CurrencyType.SpecialUnit),
+ new("XTS", "Testing Currency Code", 963, CurrencyType.SpecialReserve),
+ new("XUA", "ADB Unit of Account", 965, CurrencyType.SpecialUnit),
+ new("XXX", "Unknown Currency", 999, CurrencyType.SpecialReserve),
+ new("YER", "Yemeni Rial", 886, CurrencyType.Fiat),
+ new("ZAR", "South African Rand", 710, CurrencyType.Fiat),
+ new("ZMW", "Zambian Kwacha", 967, CurrencyType.Fiat),
});
}
}
diff --git a/src/packages/HawkN.Iso.Currencies/Models/Currency.cs b/src/packages/HawkN.Iso.Currencies/Models/Currency.cs
index deeca14..6c50cae 100644
--- a/src/packages/HawkN.Iso.Currencies/Models/Currency.cs
+++ b/src/packages/HawkN.Iso.Currencies/Models/Currency.cs
@@ -5,16 +5,16 @@
///
/// Alphabetic ISO 4217 currency code (e.g., "USD").
/// The full name of the currency (e.g., "US Dollar").
-/// The country or region that issues the currency.
-/// Numeric ISO 4217 code (e.g., "840").
-/// True if the currency is no longer in use.
-/// The date when the currency was withdrawn, if applicable.
+/// Numeric ISO 4217 code (e.g., 840).
/// The classification of the currency (Fiat, PreciousMetal, etc.).
public sealed record Currency(
string Code,
string Name,
- string? CountryName,
- string? NumericCode,
- bool IsHistoric,
- DateOnly? WithdrawalDate,
- CurrencyType? CurrencyType);
\ No newline at end of file
+ int NumericCode,
+ CurrencyType? CurrencyType)
+{
+ ///
+ /// Numeric code as string with leading zeros (3 digits), e.g., "840".
+ ///
+ public string NumericCodeString => NumericCode.ToString("D3");
+}
\ No newline at end of file
diff --git a/src/packages/HawkN.Iso.Currencies/Package/Content/README.md b/src/packages/HawkN.Iso.Currencies/Package/Content/README.md
index be35d3e..bd593c7 100644
--- a/src/packages/HawkN.Iso.Currencies/Package/Content/README.md
+++ b/src/packages/HawkN.Iso.Currencies/Package/Content/README.md
@@ -130,186 +130,41 @@ var validResult = currencyService.TryValidate(CurrencyCode.AFN, out var validate
```
---
-### Supported fiat currencies
-Last updated at 27.11.2025
-- AED (UAE Dirham)
-- AFN (Afghani)
-- ALL (Albanian Lek)
-- AMD (Armenian Dram)
-- AOA (Angolan Kwanza)
-- ARS (Argentine Peso)
-- AUD (Australian Dollar)
-- AWG (Aruban Florin)
-- AZN (Azerbaijan Manat)
-- BAM (Convertible Mark)
-- BBD (Barbados Dollar)
-- BDT (Bangladeshi Taka)
-- BGN (Bulgarian Lev)
-- BHD (Bahraini Dinar)
-- BIF (Burundi Franc)
-- BMD (Bermudian Dollar)
-- BND (Brunei Dollar)
-- BOB (Bolivian Boliviano)
-- BOV (Bolivian Mvdol)
-- BRL (Brazilian Real)
-- BSD (Bahamian Dollar)
-- BTN (Bhutanese Ngultrum)
-- BWP (Botswana Pula)
-- BYN (Belarusian Ruble)
-- BZD (Belize Dollar)
-- CAD (Canadian Dollar)
-- CDF (Congolese Franc)
-- CHE (WIR Euro)
-- CHF (Swiss Franc)
-- CHW (WIR Franc)
-- CLF (Unidad de Fomento)
-- CLP (Chilean Peso)
-- CNY (Chinese Yuan)
-- COP (Colombian Peso)
-- COU (Unidad de Valor Real)
-- CRC (Costa Rican Colon)
-- CUP (Cuban Peso)
-- CVE (Cape Verde Escudo)
-- CZK (Czech Koruna)
-- DJF (Djibouti Franc)
-- DKK (Danish Krone)
-- DOP (Dominican Peso)
-- DZD (Algerian Dinar)
-- EGP (Egyptian Pound)
-- ERN (Eritrean Nakfa)
-- ETB (Ethiopian Birr)
-- EUR (Euro)
-- FJD (Fiji Dollar)
-- FKP (Falkland Islands Pound)
-- GBP (Pound Sterling)
-- GEL (Georgian Lari)
-- GHS (Ghana Cedi)
-- GIP (Gibraltar Pound)
-- GMD (Gambian Dalasi)
-- GNF (Guinean Franc)
-- GTQ (Guatemalan Quetzal)
-- GYD (Guyanese Dollar)
-- HKD (Hong Kong Dollar)
-- HNL (Honduran Lempira)
-- HTG (Haitian Gourde)
-- HUF (Hungarian Forint)
-- IDR (Indonesian Rupiah)
-- ILS (New Israeli Sheqel)
-- INR (Indian Rupee)
-- IQD (Iraqi Dinar)
-- IRR (Iranian Rial)
-- ISK (Icelandic Krona)
-- JMD (Jamaican Dollar)
-- JOD (Jordanian Dinar)
-- JPY (Japanese Yen)
-- KES (Kenyan Shilling)
-- KGS (Kyrgyzstani Som)
-- KHR (Cambodian Riel)
-- KMF (Comorian Franc)
-- KPW (North Korean Won)
-- KRW (South Korean Won)
-- KWD (Kuwaiti Dinar)
-- KYD (Cayman Islands Dollar)
-- KZT (Kazakhstani Tenge)
-- LAK (Lao Kip)
-- LBP (Lebanese Pound)
-- LKR (Sri Lankan Rupee)
-- LRD (Liberian Dollar)
-- LSL (Lesotho Loti)
-- LYD (Libyan Dinar)
-- MAD (Moroccan Dirham)
-- MDL (Moldovan Leu)
-- MGA (Malagasy Ariary)
-- MKD (Macedonian Denar)
-- MMK (Myanmar Kyat)
-- MNT (Mongolian Tugrik)
-- MOP (Macanese Pataca)
-- MRU (Mauritanian Ouguiya)
-- MUR (Mauritian Rupee)
-- MVR (Maldivian Rufiyaa)
-- MWK (Malawi Kwacha)
-- MXN (Mexican Peso)
-- MXV (Mexican Unidad de Inversion (UDI))
-- MYR (Malaysian Ringgit)
-- MZN (Mozambique Metical)
-- NAD (Namibian Dollar)
-- NGN (Nigerian Naira)
-- NIO (Cordoba Oro)
-- NOK (Norwegian Krone)
-- NPR (Nepalese Rupee)
-- NZD (New Zealand Dollar)
-- OMR (Omani Rial)
-- PAB (Panamanian Balboa)
-- PEN (Peruvian Sol)
-- PGK (Papua New Guinean Kina)
-- PHP (Philippine Peso)
-- PKR (Pakistani Rupee)
-- PLN (Polish Zloty)
-- PYG (Paraguayan Guarani)
-- QAR (Qatari Riyal)
-- RON (Romanian Leu)
-- RSD (Serbian Dinar)
-- RUB (Russian Ruble)
-- RWF (Rwanda Franc)
-- SAR (Saudi Riyal)
-- SBD (Solomon Islands Dollar)
-- SCR (Seychelles Rupee)
-- SDG (Sudanese Pound)
-- SEK (Swedish Krona)
-- SGD (Singapore Dollar)
-- SHP (Saint Helena Pound)
-- SLE (Sierra Leonean Leone)
-- SOS (Somali Shilling)
-- SRD (Surinamese Dollar)
-- SSP (South Sudanese Pound)
-- STN (São Tomé and Príncipe Dobra)
-- SVC (El Salvador Colon)
-- SYP (Syrian Pound)
-- SZL (Swazi Lilangeni)
-- THB (Thai Baht)
-- TJS (Tajikistani Somoni)
-- TMT (Turkmenistan New Manat)
-- TND (Tunisian Dinar)
-- TOP (Tongan Pa'anga)
-- TRY (Turkish Lira)
-- TTD (Trinidad and Tobago Dollar)
-- TWD (New Taiwan Dollar)
-- TZS (Tanzanian Shilling)
-- UAH (Ukrainian Hryvnia)
-- UGX (Uganda Shilling)
-- USD (US Dollar)
-- USN (US Dollar (Next day))
-- UYI (Uruguay Peso en Unidades Indexadas (UI))
-- UYU (Peso Uruguayo)
-- UYW (Unidad Previsional)
-- UZS (Uzbekistan Sum)
-- VES (Bolívar Soberano)
-- VND (Vietnamese Dong)
-- VUV (Vanuatu Vatu)
-- WST (Samoan Tala)
-- XAF (CFA Franc BEAC)
-- XCD (East Caribbean Dollar)
-- XDR (SDR (Special Drawing Right))
-- XOF (CFA Franc BCEAO)
-- XPF (CFP Franc)
-- YER (Yemeni Rial)
-- ZAR (South African Rand)
-- ZMW (Zambian Kwacha)
+## Supported currencies
+See the currency list with the [link](https://github.com/HawkN113/HawkN.Iso.Currencies?tab=readme-ov-file#supported-currencies)
+Last updated at `01.01.2026`
---
-### Generated Types
+## Generated Types
- `CurrencyCode` – strongly-typed enum with all ISO 4217 codes.
- `Currency` – domain model representing a currency (code, name, numeric code, withdrawn date).
---
-### License
-This project is licensed under the MIT License.
+## License
+
+### Code
+This project’s source code is licensed under the [MIT License](LICENSE).
+
+### Data
+This project uses data derived from the following sources:
+
+- **Unicode Common Locale Data Repository (CLDR)**
+ Licensed under the [Unicode License Agreement](https://unicode.org/license.html).
+
+- **ISO 4217 currency codes dataset**
+ Source: https://github.com/datasets/currency-codes
+ Licensed under the **Open Database License (ODbL) v1.0**.
+
+The above data licenses are **permissive and compatible with MIT-licensed code**
+when used for reference and code generation.
+
+See [DATA-LICENSE](DATA-LICENSE) for details.
---
-### References
+## References
- [ISO 4217 Standard](https://www.iso.org/iso-4217-currency-codes.html)
- [GitHub Repository](https://github.com/HawkN113/HawkN.Iso.Currencies)
diff --git a/src/packages/HawkN.Iso.Currencies/Services/CurrencyService.cs b/src/packages/HawkN.Iso.Currencies/Services/CurrencyService.cs
index acec698..0a84eed 100644
--- a/src/packages/HawkN.Iso.Currencies/Services/CurrencyService.cs
+++ b/src/packages/HawkN.Iso.Currencies/Services/CurrencyService.cs
@@ -9,9 +9,6 @@ internal sealed class CurrencyService : ICurrencyService
private readonly IReadOnlyDictionary _actualCurrencies =
LocalCurrencyDatabase.ActualCurrencies.ToDictionary(c => c.Code, StringComparer.OrdinalIgnoreCase);
- private readonly IReadOnlyDictionary _historicalCurrencies =
- LocalCurrencyDatabase.HistoricalCurrencies.ToDictionary(c => c.Code, StringComparer.OrdinalIgnoreCase);
-
public bool TryValidate(string value, out ValidationResult result)
{
if (string.IsNullOrWhiteSpace(value))
@@ -62,19 +59,6 @@ public bool Exists(CurrencyCode code) =>
return currency;
}
- public Currency? GetHistorical(string value)
- {
- var isExist = !string.IsNullOrWhiteSpace(value) && _historicalCurrencies.ContainsKey(value.Trim());
- if (!isExist) return null;
- _historicalCurrencies.TryGetValue(value.Trim(), out var currency);
- return currency;
- }
-
- public Currency[] GetAllHistorical()
- {
- return _historicalCurrencies.Values.ToArray();
- }
-
public ICurrencyQueryStart Query()
{
return new CurrencyQueryBuilder(LocalCurrencyDatabase.ActualCurrencies);
diff --git a/src/samples/HawkN.Iso.Currencies.Sample.Console/Program.cs b/src/samples/HawkN.Iso.Currencies.Sample.Console/Program.cs
index 7811e21..eb6d673 100644
--- a/src/samples/HawkN.Iso.Currencies.Sample.Console/Program.cs
+++ b/src/samples/HawkN.Iso.Currencies.Sample.Console/Program.cs
@@ -27,7 +27,11 @@
// ---- Get all existing currencies ----
Console.WriteLine(" ---- All existing currencies (special, metal, reserve, fiat) ---- ");
- foreach (var currency in currencyService!.Query()
+ Console.WriteLine(
+ "| Currency code | Currency name |");
+ Console.WriteLine(
+ "|:---------------:|:-----------------------------------------:|");
+ foreach (var currency in currencyService.Query()
.Includes
.Type(CurrencyType.Fiat)
.Type(CurrencyType.SpecialUnit)
@@ -36,12 +40,12 @@
.Build())
{
Console.WriteLine(
- $"\t{currency.Code} - {currency.Name}");
+ $"| {currency.Code} | {currency.Name} |");
}
// ---- Get fiat currencies ----
Console.WriteLine(" ---- Fiat currencies ---- ");
- foreach (var currency in currencyService!
+ foreach (var currency in currencyService
.Query()
.Includes.Type(CurrencyType.Fiat)
.Build())
@@ -51,7 +55,7 @@
// ---- Get currencies by query ----
Console.WriteLine(" ---- Query: Includes only `EUR` and `USD` in the list ---- ");
- foreach (var currency in currencyService!.Query()
+ foreach (var currency in currencyService.Query()
.Includes
.Type(CurrencyType.Fiat)
.With(w => w.Codes(nameof(CurrencyCode.EUR), nameof(CurrencyCode.USD)))
@@ -63,7 +67,7 @@
// ---- Get currencies by advanced query (LINQ) ----
Console.WriteLine(" ---- Advanced Query (LINQ): Includes only `EUR` and `USD` in the list ---- ");
- foreach (var currency in currencyService!.Query()
+ foreach (var currency in currencyService.Query()
.Includes
.Type(CurrencyType.Fiat)
.Where(q => q.Code is nameof(CurrencyCode.EUR) or nameof(CurrencyCode.USD))
@@ -73,17 +77,6 @@
$"\t{currency.Code} - {currency.Name}");
}
- // ---- Get historical currencies ----
- Console.WriteLine(" ---- Historical (Withdrawal) currencies ---- ");
- foreach (var currency in currencyService.GetAllHistorical())
- {
- var withdrawalDate = currency.WithdrawalDate.HasValue
- ? currency.WithdrawalDate.Value.ToString("yyyy MMMM dd")
- : "Unknown date";
- Console.WriteLine(
- $"\t{currency.Code} - {currency.Name} ({withdrawalDate})");
- }
-
// -------------------------
// ---- Lookup currency ----
// -------------------------
diff --git a/src/samples/HawkN.Iso.Currencies.Sample.WebApi/Extensions/CurrencyEndpointExtensions.cs b/src/samples/HawkN.Iso.Currencies.Sample.WebApi/Extensions/CurrencyEndpointExtensions.cs
index 367b284..958c76c 100644
--- a/src/samples/HawkN.Iso.Currencies.Sample.WebApi/Extensions/CurrencyEndpointExtensions.cs
+++ b/src/samples/HawkN.Iso.Currencies.Sample.WebApi/Extensions/CurrencyEndpointExtensions.cs
@@ -44,15 +44,6 @@ public static IEndpointRouteBuilder MapCurrencyEndpoints(this IEndpointRouteBuil
return o;
});
- app.MapGet("/historical/currencies", CurrencyHandler.GetHistoricalCurrencies)
- .WithName("GetHistoricalCurrencies")
- .WithOpenApi(o =>
- {
- o.Summary = "Get historical currencies";
- o.Description = "Returns a short code, name and withdrawal date.";
- return o;
- });
-
return app;
}
}
diff --git a/src/samples/HawkN.Iso.Currencies.Sample.WebApi/Handlers/CurrencyHandler.cs b/src/samples/HawkN.Iso.Currencies.Sample.WebApi/Handlers/CurrencyHandler.cs
index 6ac97af..38ccac9 100644
--- a/src/samples/HawkN.Iso.Currencies.Sample.WebApi/Handlers/CurrencyHandler.cs
+++ b/src/samples/HawkN.Iso.Currencies.Sample.WebApi/Handlers/CurrencyHandler.cs
@@ -1,6 +1,5 @@
using HawkN.Iso.Currencies.Abstractions;
using HawkN.Iso.Currencies.Models;
-using HawkN.Iso.Currencies.Sample.WebApi.Models;
using Microsoft.AspNetCore.Mvc;
namespace HawkN.Iso.Currencies.Sample.WebApi.Handlers;
@@ -36,9 +35,4 @@ internal static IResult GetSpecialCurrencies([FromServices] ICurrencyService ser
.Build()
.Select(c => $"{c.Code} - {c.Name} ({c.CurrencyType})")
.ToArray());
-
- internal static IResult GetHistoricalCurrencies([FromServices] ICurrencyService service) =>
- Results.Ok(service.GetAllHistorical()
- .Select(c => new CurrencyInfo(c.Code, c.Name, c.WithdrawalDate))
- .ToArray());
}
\ No newline at end of file
diff --git a/src/samples/HawkN.Iso.Currencies.Sample.WebApi/HawkN.Iso.Currencies.Sample.WebApi.http b/src/samples/HawkN.Iso.Currencies.Sample.WebApi/HawkN.Iso.Currencies.Sample.WebApi.http
index 308c5a1..d36f04f 100644
--- a/src/samples/HawkN.Iso.Currencies.Sample.WebApi/HawkN.Iso.Currencies.Sample.WebApi.http
+++ b/src/samples/HawkN.Iso.Currencies.Sample.WebApi/HawkN.Iso.Currencies.Sample.WebApi.http
@@ -6,12 +6,6 @@ Accept: application/json
###
-### Get historical currencies
-GET {{HawkN.Iso.Currencies.Sample.WebApi_HostAddress}}/historical/currencies
-Accept: application/json
-
-###
-
### Get fiat currency by code (EUR, USD, etc.)
GET {{HawkN.Iso.Currencies.Sample.WebApi_HostAddress}}/fiat/currency?code=EUR
Accept: application/json
diff --git a/src/samples/HawkN.Iso.Currencies.Sample.WebApi/Models/CurrencyInfo.cs b/src/samples/HawkN.Iso.Currencies.Sample.WebApi/Models/CurrencyInfo.cs
deleted file mode 100644
index 961648b..0000000
--- a/src/samples/HawkN.Iso.Currencies.Sample.WebApi/Models/CurrencyInfo.cs
+++ /dev/null
@@ -1,3 +0,0 @@
-namespace HawkN.Iso.Currencies.Sample.WebApi.Models;
-
-record CurrencyInfo(string Code, string Name, DateOnly? WithdrawalDate);
\ No newline at end of file
diff --git a/src/samples/HawkN.Iso.Currencies.Sample.WebApi/Program.cs b/src/samples/HawkN.Iso.Currencies.Sample.WebApi/Program.cs
index 4545f1f..85b374f 100644
--- a/src/samples/HawkN.Iso.Currencies.Sample.WebApi/Program.cs
+++ b/src/samples/HawkN.Iso.Currencies.Sample.WebApi/Program.cs
@@ -1,3 +1,4 @@
+using System.Text.Json.Serialization;
using HawkN.Iso.Currencies.Extensions;
using HawkN.Iso.Currencies.Sample.WebApi.Extensions;
@@ -6,6 +7,12 @@
// Add services to the container.
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
+builder.Services.ConfigureHttpJsonOptions(options =>
+{
+ options.SerializerOptions.Converters.Add(
+ new JsonStringEnumConverter());
+});
+
// ---- Register Currency service ----
builder.Services.AddCurrencyService();
diff --git a/src/tests/HawkN.Iso.Currencies.Generators.Tests/BaseIncrementalGeneratorTests.cs b/src/tests/HawkN.Iso.Currencies.Generators.Tests/BaseIncrementalGeneratorTests.cs
index a33e557..38b543c 100644
--- a/src/tests/HawkN.Iso.Currencies.Generators.Tests/BaseIncrementalGeneratorTests.cs
+++ b/src/tests/HawkN.Iso.Currencies.Generators.Tests/BaseIncrementalGeneratorTests.cs
@@ -10,7 +10,7 @@ public void CreateSourceBuilder_ShouldContainStandardHeaderAndNamespace()
const string expectedNamespace = "TestNamespace";
// Act
- var sb = BaseIncrementalGenerator.CreateSourceBuilder(generatorName, expectedNamespace);
+ var sb = BaseIncrementalGenerator.CreateSourceBuilder(generatorName, expectedNamespace, []);
var result = sb.ToString();
// Assert
@@ -28,7 +28,7 @@ public void CreateSourceBuilder_ShouldIncludeReferencesWhenProvided()
var references = new[] { "System", "System.Collections.Generic" };
// Act
- var sb = BaseIncrementalGenerator.CreateSourceBuilder("Gen", "Ns", references);
+ var sb = BaseIncrementalGenerator.CreateSourceBuilder("Gen", "Ns", [], references);
var result = sb.ToString();
// Assert
@@ -40,7 +40,7 @@ public void CreateSourceBuilder_ShouldIncludeReferencesWhenProvided()
public void CreateSourceBuilder_ShouldNotIncludeReferencesWhenNull()
{
// Act
- var sb = BaseIncrementalGenerator.CreateSourceBuilder("Gen", "Ns", null);
+ var sb = BaseIncrementalGenerator.CreateSourceBuilder("Gen", "Ns", [], null);
var result = sb.ToString();
// Assert
diff --git a/src/tests/HawkN.Iso.Currencies.Generators.Tests/Handlers/CurrencyCodesHandlerTests.cs b/src/tests/HawkN.Iso.Currencies.Generators.Tests/Handlers/CurrencyCodesHandlerTests.cs
new file mode 100644
index 0000000..bd78f4a
--- /dev/null
+++ b/src/tests/HawkN.Iso.Currencies.Generators.Tests/Handlers/CurrencyCodesHandlerTests.cs
@@ -0,0 +1,140 @@
+using HawkN.Iso.Currencies.Generators.Handlers;
+namespace HawkN.Iso.Currencies.Generators.Tests.Handlers;
+
+public class CurrencyCodesHandlerTests
+{
+ private const string ValidCsv = """
+ AlphabeticCode,NumericCode
+ USD,840
+ EUR,978
+ JPY,392
+ """;
+
+ [Fact]
+ public void LoadCurrencyCodes_ShouldParseValidCsv()
+ {
+ // Arrange
+ var handler = new CurrencyCodesHandler(ValidCsv);
+
+ // Act
+ var result = handler.LoadCurrencyCodes();
+
+ // Assert
+ Assert.NotNull(result);
+ Assert.Equal(3, result.Count);
+ Assert.Equal("840", result["USD"]);
+ Assert.Equal("978", result["EUR"]);
+ Assert.Equal("392", result["JPY"]);
+ }
+
+ [Fact]
+ public void LoadCurrencyCodes_ShouldIgnoreInvalidRows()
+ {
+ // Arrange
+ var csv = """
+ AlphabeticCode,NumericCode
+ USD,840
+ US,840
+ EUR,
+ JPY,392
+ """;
+
+ var handler = new CurrencyCodesHandler(csv);
+
+ // Act
+ var result = handler.LoadCurrencyCodes();
+
+ // Assert
+ Assert.Equal(2, result.Count);
+ Assert.True(result.ContainsKey("USD"));
+ Assert.True(result.ContainsKey("JPY"));
+ }
+
+ [Fact]
+ public void LoadCurrencyCodes_ShouldSupportQuotedFields()
+ {
+ // Arrange
+ var csv = """
+ AlphabeticCode,NumericCode
+ "USD","840"
+ "EUR","978"
+ """;
+
+ var handler = new CurrencyCodesHandler(csv);
+
+ // Act
+ var result = handler.LoadCurrencyCodes();
+
+ // Assert
+ Assert.Equal("840", result["USD"]);
+ Assert.Equal("978", result["EUR"]);
+ }
+
+ [Fact]
+ public void LoadCurrencyCodes_ShouldOverrideDuplicateCodes()
+ {
+ // Arrange
+ var csv = """
+ AlphabeticCode,NumericCode
+ USD,840
+ USD,999
+ """;
+
+ var handler = new CurrencyCodesHandler(csv);
+
+ // Act
+ var result = handler.LoadCurrencyCodes();
+
+ // Assert
+ Assert.Single(result);
+ Assert.Equal("999", result["USD"]);
+ }
+
+ [Fact]
+ public void LoadCurrencyCodes_ShouldThrow_WhenRequiredHeadersMissing()
+ {
+ // Arrange
+ var csv = """
+ Code,Number
+ USD,840
+ """;
+
+ var handler = new CurrencyCodesHandler(csv);
+
+ // Act & Assert
+ Assert.Throws(() => handler.LoadCurrencyCodes());
+ }
+
+ [Fact]
+ public void LoadCurrencyCodes_ShouldReturnEmptyDictionary_WhenInputIsEmpty()
+ {
+ // Arrange
+ var handler = new CurrencyCodesHandler(string.Empty);
+
+ // Act
+ var result = handler.LoadCurrencyCodes();
+
+ // Assert
+ Assert.NotNull(result);
+ Assert.Empty(result);
+ }
+
+ [Fact]
+ public void LoadCurrencyCodes_ShouldHandleCaseInsensitiveHeaders()
+ {
+ // Arrange
+ var csv = """
+ alphabeticcode,numericcode
+ USD,840
+ """;
+
+ var handler = new CurrencyCodesHandler(csv);
+
+ // Act
+ var result = handler.LoadCurrencyCodes();
+
+ // Assert
+ Assert.Single(result);
+ Assert.Equal("840", result["USD"]);
+ }
+}
diff --git a/src/tests/HawkN.Iso.Currencies.Generators.Tests/Handlers/CurrencyLoaderTests.cs b/src/tests/HawkN.Iso.Currencies.Generators.Tests/Handlers/CurrencyLoaderTests.cs
deleted file mode 100644
index 19dd690..0000000
--- a/src/tests/HawkN.Iso.Currencies.Generators.Tests/Handlers/CurrencyLoaderTests.cs
+++ /dev/null
@@ -1,186 +0,0 @@
-using HawkN.Iso.Currencies.Generators.Handlers;
-using HawkN.Iso.Currencies.Generators.Models;
-namespace HawkN.Iso.Currencies.Generators.Tests.Handlers;
-
-public class CurrencyLoaderTests
-{
- private const string ActualJson = """
- {
- "ISO_4217": {
- "_Pblshd": "2025-05-12",
- "CcyTbl": {
- "CcyNtry": [
- {
- "CtryNm": "AFGHANISTAN",
- "CcyNm": "Afghani",
- "Ccy": "AFN",
- "CcyNbr": "971",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "ÅLAND ISLANDS",
- "CcyNm": "Euro",
- "Ccy": "EUR",
- "CcyNbr": "978",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "ALBANIA",
- "CcyNm": "Lek",
- "Ccy": "ALL",
- "CcyNbr": "008",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "ALGERIA",
- "CcyNm": "Algerian Dinar",
- "Ccy": "DZD",
- "CcyNbr": "012",
- "CcyMnrUnts": "2"
- },
- {
- "CtryNm": "AMERICAN SAMOA",
- "CcyNm": "US Dollar",
- "Ccy": "USD",
- "CcyNbr": "840",
- "CcyMnrUnts": "2"
- }
- ]
- }
- }
- }
- """;
-
- private const string ReplacementJson = """
- [
- { "Ccy": "AFN", "CcyNm": "Afghani" },
- { "Ccy": "AMD", "CcyNm": "Armenian Dram" },
- { "Ccy": "AOA", "CcyNm": "Angolan Kwanza" },
- { "Ccy": "BDT", "CcyNm": "Bangladeshi Taka" },
- { "Ccy": "BOB", "CcyNm": "Bolivian Boliviano" }
- ]
- """;
-
- private const string HistoricalJson = """
- {
- "ISO_4217": {
- "_Pblshd": "2025-05-12",
- "HstrcCcyTbl": {
- "HstrcCcyNtry": [
- {
- "CtryNm": "AFGHANISTAN",
- "CcyNm": "Afghani",
- "Ccy": "AFA",
- "CcyNbr": "004",
- "WthdrwlDt": "2003-01"
- },
- {
- "CtryNm": "ÅLAND ISLANDS",
- "CcyNm": "Markka",
- "Ccy": "FIM",
- "CcyNbr": "246",
- "WthdrwlDt": "2002-03"
- },
- {
- "CtryNm": "ALBANIA",
- "CcyNm": "Old Lek",
- "Ccy": "ALK",
- "CcyNbr": "008",
- "WthdrwlDt": "1989-12"
- },
- {
- "CtryNm": "ANDORRA",
- "CcyNm": "Andorran Peseta",
- "Ccy": "ADP",
- "CcyNbr": "020",
- "WthdrwlDt": "2003-07"
- },
- {
- "CtryNm": "ANDORRA",
- "CcyNm": "Spanish Peseta",
- "Ccy": "ESP",
- "CcyNbr": "724",
- "WthdrwlDt": "2002-03"
- }
- ]
- }
- }
- }
- """;
-
- [Fact]
- public void Constructor_Should_Load_And_Process_Currencies_Correctly()
- {
- // Arrange
- var loader = new CurrencyLoader(ActualJson, ReplacementJson, HistoricalJson);
-
- // Act & Assert
- Assert.NotNull(loader.ActualCurrencyData);
- Assert.NotNull(loader.HistoricalCurrencyData);
- Assert.Equal("2025-05-12", loader.ActualCurrencyData.PublishedDate);
- Assert.Equal("2025-05-12", loader.HistoricalCurrencyData.PublishedDate);
- var actualCodes = loader.ActualCurrencyData.Currencies.Select(c => c.Code).ToArray();
- Assert.DoesNotContain("VED", actualCodes);
- Assert.Contains("USD", actualCodes);
- Assert.Contains("EUR", actualCodes);
- }
-
- [Fact]
- public void Replacement_Should_Update_Names()
- {
- // Arrange
- var loader = new CurrencyLoader(ActualJson, ReplacementJson, HistoricalJson);
-
- // Act & Assert
- var usd = loader.ActualCurrencyData.Currencies.First(c => c.Code == "USD");
- Assert.Equal("US Dollar", usd.Name);
- }
-
- [Fact]
- public void CurrencyTypes_Should_Be_Assigned_Correctly()
- {
- // Arrange
- var loader = new CurrencyLoader(ActualJson, ReplacementJson, HistoricalJson);
-
- // Act & Assert
- var usd = loader.ActualCurrencyData.Currencies.First(c => c.Code == "USD");
- Assert.Equal(CurrencyType.Fiat, usd.CurrencyType);
- }
-
- [Fact]
- public void HistoricalCurrencies_Should_Have_IsHistoric_True()
- {
- // Arrange
- var loader = new CurrencyLoader(ActualJson, ReplacementJson, HistoricalJson);
-
- // Act & Assert
- var adp = loader.HistoricalCurrencyData.Currencies.First(c => c.Code == "ADP");
- Assert.True(adp.IsHistoric);
- Assert.Equal("2003-07", adp.WithdrawalDate);
- }
-
- [Fact]
- public void ExcludedCodes_Should_Be_Filtered_Out()
- {
- // Arrange
- var loader = new CurrencyLoader(ActualJson, ReplacementJson, HistoricalJson);
-
- // Act & Assert
- Assert.DoesNotContain(loader.ActualCurrencyData.Currencies, c => c.Code == "VED");
- Assert.DoesNotContain(loader.HistoricalCurrencyData.Currencies, c => c.Code == "ZWG");
- }
-
- [Fact]
- public void Currencies_Should_Be_Sorted_By_Code()
- {
- // Arrange
- var loader = new CurrencyLoader(ActualJson, ReplacementJson, HistoricalJson);
-
- // Act
- var actualCodes = loader.ActualCurrencyData.Currencies.Select(c => c.Code).ToList();
- var sorted = actualCodes.OrderBy(c => c).ToList();
-
- // Assert
- Assert.Equal(sorted, actualCodes);
- }
-}
\ No newline at end of file
diff --git a/src/tests/HawkN.Iso.Currencies.Generators.Tests/Handlers/CurrencyNamesHandlerTests.cs b/src/tests/HawkN.Iso.Currencies.Generators.Tests/Handlers/CurrencyNamesHandlerTests.cs
new file mode 100644
index 0000000..6a8dbaf
--- /dev/null
+++ b/src/tests/HawkN.Iso.Currencies.Generators.Tests/Handlers/CurrencyNamesHandlerTests.cs
@@ -0,0 +1,147 @@
+using HawkN.Iso.Currencies.Generators.Handlers;
+namespace HawkN.Iso.Currencies.Generators.Tests.Handlers;
+
+public class CurrencyNamesHandlerTests
+{
+ private const string ValidXml = """
+
+
+
+
+ US Dollar
+
+
+ Euro
+
+
+ Japanese Yen
+
+
+
+
+ """;
+
+ [Fact]
+ public void LoadNames_ShouldParseValidXml()
+ {
+ // Arrange
+ var handler = new CurrencyNamesHandler(ValidXml);
+
+ // Act
+ var result = handler.LoadNames();
+
+ // Assert
+ Assert.NotNull(result);
+ Assert.Equal(3, result.Count);
+ Assert.Equal("US Dollar", result["USD"]);
+ Assert.Equal("Euro", result["EUR"]);
+ Assert.Equal("Japanese Yen", result["JPY"]);
+ }
+
+ [Fact]
+ public void LoadNames_ShouldIgnoreCurrenciesWithoutDisplayName()
+ {
+ // Arrange
+ var xml = """
+
+
+
+
+ US Dollar
+
+
+
+
+
+ """;
+
+ var handler = new CurrencyNamesHandler(xml);
+
+ // Act
+ var result = handler.LoadNames();
+
+ // Assert
+ Assert.Single(result);
+ Assert.Equal("US Dollar", result["USD"]);
+ }
+
+ [Fact]
+ public void LoadNames_ShouldIgnoreCurrenciesWithoutTypeAttribute()
+ {
+ // Arrange
+ var xml = """
+
+
+
+
+ Unknown
+
+
+ US Dollar
+
+
+
+
+ """;
+
+ var handler = new CurrencyNamesHandler(xml);
+
+ // Act
+ var result = handler.LoadNames();
+
+ // Assert
+ Assert.Single(result);
+ Assert.Equal("US Dollar", result["USD"]);
+ }
+
+ [Fact]
+ public void LoadNames_ShouldUseFirstEntry_WhenDuplicateCurrencyCodesExist()
+ {
+ // Arrange
+ var xml = """
+
+
+
+
+ US Dollar
+
+
+ US Dollar Duplicate
+
+
+
+
+ """;
+
+ var handler = new CurrencyNamesHandler(xml);
+
+ // Act
+ var result = handler.LoadNames();
+
+ // Assert
+ Assert.Single(result);
+ Assert.Equal("US Dollar", result["USD"]);
+ }
+
+ [Fact]
+ public void LoadNames_ShouldReturnEmptyDictionary_WhenNoCurrenciesFound()
+ {
+ // Arrange
+ var xml = """
+
+
+
+
+
+ """;
+
+ var handler = new CurrencyNamesHandler(xml);
+
+ // Act
+ var result = handler.LoadNames();
+
+ // Assert
+ Assert.NotNull(result);
+ Assert.Empty(result);
+ }
+}
\ No newline at end of file
diff --git a/src/tests/HawkN.Iso.Currencies.Generators.Tests/Handlers/JsonCurrencyHandlerTests.cs b/src/tests/HawkN.Iso.Currencies.Generators.Tests/Handlers/JsonCurrencyHandlerTests.cs
deleted file mode 100644
index 771d578..0000000
--- a/src/tests/HawkN.Iso.Currencies.Generators.Tests/Handlers/JsonCurrencyHandlerTests.cs
+++ /dev/null
@@ -1,138 +0,0 @@
-using HawkN.Iso.Currencies.Generators.Handlers;
-namespace HawkN.Iso.Currencies.Generators.Tests.Handlers;
-
-public class JsonCurrencyHandlerTests
-{
- private const string ActualJson = """
- {
- "ISO_4217": {
- "_Pblshd": "2025-05-12",
- "CcyTbl": {
- "CcyNtry": [
- {
- "CtryNm": "AUSTRIA",
- "CcyNm": "Euro",
- "Ccy": "EUR",
- "CcyNbr": "978"
- },
- {
- "CtryNm": "UNITED STATES",
- "CcyNm": { "__text": "US Dollar" },
- "Ccy": "USD",
- "CcyNbr": "840"
- },
- {
- "CtryNm": "JAPAN",
- "CcyNm": "Yen",
- "Ccy": "JPY",
- "CcyNbr": "392"
- },
- {
- "CtryNm": "UNITED KINGDOM",
- "CcyNm": "Pound Sterling",
- "Ccy": "GBP",
- "CcyNbr": "826"
- },
- {
- "CtryNm": "SWITZERLAND",
- "CcyNm": "Swiss Franc",
- "Ccy": "CHF",
- "CcyNbr": "756"
- }
- ]
- }
- }
- }
- """;
-
- [Fact]
- public void LoadCurrencies_ShouldParseValidJson()
- {
- // Arrange
- var handler = new JsonCurrencyHandler(ActualJson);
-
- // Act
- var result = handler.LoadCurrencies();
-
- // Assert
- Assert.NotNull(result);
- Assert.Equal("2025-05-12", result.PublishedDate);
- Assert.Equal(5, result.Currencies.Count);
-
- var eur = result.Currencies.First(c => c.Code == "EUR");
- Assert.Equal("Euro", eur.Name);
- Assert.Equal("AUSTRIA", eur.Country);
- Assert.Equal("978", eur.NumericCode);
- Assert.Null(eur.WithdrawalDate);
- }
-
- [Fact]
- public void LoadCurrencies_ShouldHandleNestedTextName()
- {
- // Arrange
- var handler = new JsonCurrencyHandler(ActualJson);
-
- // Act
- var result = handler.LoadCurrencies();
-
- // Assert
- var usd = result.Currencies.First(c => c.Code == "USD");
- Assert.Equal("US Dollar", usd.Name);
- Assert.Equal("UNITED STATES", usd.Country);
- Assert.Equal("840", usd.NumericCode);
- Assert.Null(usd.WithdrawalDate);
- }
-
- [Fact]
- public void LoadCurrencies_ShouldHandleAllCurrenciesCorrectly()
- {
- // Arrange
- var handler = new JsonCurrencyHandler(ActualJson);
-
- // Act
- var result = handler.LoadCurrencies();
-
- // Assert
- Assert.Collection(result.Currencies,
- c =>
- {
- Assert.Equal("EUR", c.Code);
- Assert.Equal("Euro", c.Name);
- Assert.Equal("AUSTRIA", c.Country);
- Assert.Equal("978", c.NumericCode);
- Assert.Null(c.WithdrawalDate);
- },
- c =>
- {
- Assert.Equal("USD", c.Code);
- Assert.Equal("US Dollar", c.Name);
- Assert.Equal("UNITED STATES", c.Country);
- Assert.Equal("840", c.NumericCode);
- Assert.Null(c.WithdrawalDate);
- },
- c =>
- {
- Assert.Equal("JPY", c.Code);
- Assert.Equal("Yen", c.Name);
- Assert.Equal("JAPAN", c.Country);
- Assert.Equal("392", c.NumericCode);
- Assert.Null(c.WithdrawalDate);
- },
- c =>
- {
- Assert.Equal("GBP", c.Code);
- Assert.Equal("Pound Sterling", c.Name);
- Assert.Equal("UNITED KINGDOM", c.Country);
- Assert.Equal("826", c.NumericCode);
- Assert.Null(c.WithdrawalDate);
- },
- c =>
- {
- Assert.Equal("CHF", c.Code);
- Assert.Equal("Swiss Franc", c.Name);
- Assert.Equal("SWITZERLAND", c.Country);
- Assert.Equal("756", c.NumericCode);
- Assert.Null(c.WithdrawalDate);
- });
- }
-}
\ No newline at end of file
diff --git a/src/tests/HawkN.Iso.Currencies.Generators.Tests/Handlers/JsonHistoricalCurrencyHandlerTests.cs b/src/tests/HawkN.Iso.Currencies.Generators.Tests/Handlers/JsonHistoricalCurrencyHandlerTests.cs
deleted file mode 100644
index c3c82a8..0000000
--- a/src/tests/HawkN.Iso.Currencies.Generators.Tests/Handlers/JsonHistoricalCurrencyHandlerTests.cs
+++ /dev/null
@@ -1,90 +0,0 @@
-using HawkN.Iso.Currencies.Generators.Handlers;
-namespace HawkN.Iso.Currencies.Generators.Tests.Handlers;
-
-public class JsonHistoricalCurrencyHandlerTests
-{
- private const string HistoricalJson = """
- {
- "ISO_4217": {
- "_Pblshd": "2025-05-12",
- "HstrcCcyTbl": {
- "HstrcCcyNtry": [
- {
- "CtryNm": "AFGHANISTAN",
- "CcyNm": "Afghani",
- "Ccy": "AFA",
- "CcyNbr": "004",
- "WthdrwlDt": "2003-01"
- },
- {
- "CtryNm": "ÅLAND ISLANDS",
- "CcyNm": "Markka",
- "Ccy": "FIM",
- "CcyNbr": "246",
- "WthdrwlDt": "2002-03"
- },
- {
- "CtryNm": "ALBANIA",
- "CcyNm": "Old Lek",
- "Ccy": "ALK",
- "CcyNbr": "008",
- "WthdrwlDt": "1989-12"
- },
- {
- "CtryNm": "ANDORRA",
- "CcyNm": "Andorran Peseta",
- "Ccy": "ADP",
- "CcyNbr": "020",
- "WthdrwlDt": "2003-07"
- },
- {
- "CtryNm": "ANDORRA",
- "CcyNm": "Spanish Peseta",
- "Ccy": "ESP",
- "CcyNbr": "724",
- "WthdrwlDt": "2002-03"
- }
- ]
- }
- }
- }
- """;
-
- [Fact]
- public void LoadCurrencies_ShouldParseValidJson()
- {
- // Arrange
- var handler = new JsonHistoricalCurrencyHandler(HistoricalJson);
-
- // Act
- var result = handler.LoadCurrencies();
-
- // Assert
- Assert.NotNull(result);
- Assert.Equal("2025-05-12", result.PublishedDate);
- Assert.Equal(5, result.Currencies.Count);
-
- var tst = result.Currencies.First(c => c.Code == "FIM");
- Assert.Equal("Markka", tst.Name);
- Assert.Equal("ÅLAND ISLANDS", tst.Country);
- Assert.Equal("246", tst.NumericCode);
- Assert.Equal("2002-03", tst.WithdrawalDate);
- }
-
- [Fact]
- public void LoadCurrencies_ShouldHandleComplexNameFormat()
- {
- // Arrange
- var handler = new JsonHistoricalCurrencyHandler(HistoricalJson);
-
- // Act
- var result = handler.LoadCurrencies();
-
- // Assert
- var currency = result.Currencies[0];
- Assert.Equal("Afghani", currency.Name);
- Assert.Equal("AFGHANISTAN", currency.Country);
- Assert.Equal("004", currency.NumericCode);
- Assert.Equal("2003-01", currency.WithdrawalDate);
- }
-}
\ No newline at end of file
diff --git a/src/tests/HawkN.Iso.Currencies.Generators.Tests/Handlers/SupplementalDataHandlerTests.cs b/src/tests/HawkN.Iso.Currencies.Generators.Tests/Handlers/SupplementalDataHandlerTests.cs
new file mode 100644
index 0000000..823308e
--- /dev/null
+++ b/src/tests/HawkN.Iso.Currencies.Generators.Tests/Handlers/SupplementalDataHandlerTests.cs
@@ -0,0 +1,168 @@
+using HawkN.Iso.Currencies.Generators.Handlers;
+namespace HawkN.Iso.Currencies.Generators.Tests.Handlers;
+
+public class SupplementalDataHandlerTests
+{
+ private const string ValidXml = """
+
+
+
+
+
+
+
+
+
+
+
+
+
+ """;
+
+ [Fact]
+ public void LoadCurrencies_ShouldParseValidCurrencies()
+ {
+ // Arrange
+ var handler = new SupplementalDataHandler(ValidXml);
+
+ // Act
+ var result = handler.LoadCurrencies();
+
+ // Assert
+ Assert.NotNull(result);
+ Assert.Equal(3, result.Count);
+
+ Assert.True(result.TryGetValue("USD", out var usd));
+ Assert.True(result.TryGetValue("EUR", out var eur));
+ Assert.True(result.TryGetValue("JPY", out var jpy));
+
+ Assert.Equal("USD", usd.Code);
+ Assert.Equal("EUR", eur.Code);
+ Assert.Equal("JPY", jpy.Code);
+ }
+
+ [Fact]
+ public void LoadCurrencies_ShouldIgnoreCurrenciesWithToAttribute()
+ {
+ // Arrange
+ var xml = """
+
+
+
+
+
+
+
+
+ """;
+
+ var handler = new SupplementalDataHandler(xml);
+
+ // Act
+ var result = handler.LoadCurrencies();
+
+ // Assert
+ Assert.Single(result);
+ Assert.True(result.ContainsKey("RUB"));
+ Assert.False(result.ContainsKey("RUR"));
+ }
+
+ [Fact]
+ public void LoadCurrencies_ShouldIgnoreCurrenciesWithoutIso4217Code()
+ {
+ // Arrange
+ var xml = """
+
+
+
+
+
+
+
+
+ """;
+
+ var handler = new SupplementalDataHandler(xml);
+
+ // Act
+ var result = handler.LoadCurrencies();
+
+ // Assert
+ Assert.Single(result);
+ Assert.True(result.ContainsKey("XXX"));
+ }
+
+ [Fact]
+ public void LoadCurrencies_ShouldDeduplicateCurrenciesAcrossRegions()
+ {
+ // Arrange
+ var xml = """
+
+
+
+
+
+
+
+
+
+
+ """;
+
+ var handler = new SupplementalDataHandler(xml);
+
+ // Act
+ var result = handler.LoadCurrencies();
+
+ // Assert
+ Assert.Single(result);
+ Assert.Equal("USD", result["USD"].Code);
+ }
+
+ [Fact]
+ public void LoadCurrencies_ShouldBeCaseInsensitiveByCurrencyCode()
+ {
+ // Arrange
+ var xml = """
+
+
+
+
+
+
+
+
+
+
+ """;
+
+ var handler = new SupplementalDataHandler(xml);
+
+ // Act
+ var result = handler.LoadCurrencies();
+
+ // Assert
+ Assert.Single(result);
+ Assert.True(result.ContainsKey("USD"));
+ }
+
+ [Fact]
+ public void LoadCurrencies_ShouldReturnEmptyDictionary_WhenNoCurrencyDataExists()
+ {
+ // Arrange
+ var xml = """
+
+
+
+ """;
+
+ var handler = new SupplementalDataHandler(xml);
+
+ // Act
+ var result = handler.LoadCurrencies();
+
+ // Assert
+ Assert.NotNull(result);
+ Assert.Empty(result);
+ }
+}
\ No newline at end of file
diff --git a/src/tests/HawkN.Iso.Currencies.Tests/Builders/CurrencyQueryBuilderTests.cs b/src/tests/HawkN.Iso.Currencies.Tests/Builders/CurrencyQueryBuilderTests.cs
index fb94fc1..9b7d828 100644
--- a/src/tests/HawkN.Iso.Currencies.Tests/Builders/CurrencyQueryBuilderTests.cs
+++ b/src/tests/HawkN.Iso.Currencies.Tests/Builders/CurrencyQueryBuilderTests.cs
@@ -1,18 +1,17 @@
using HawkN.Iso.Currencies.Builders;
using HawkN.Iso.Currencies.Models;
-
namespace HawkN.Iso.Currencies.Tests.Builders
{
public class CurrencyQueryBuilderTests
{
- private static IReadOnlyList GetSampleCurrencies() => new List
+ private static IReadOnlyList GetSampleCurrencies() => new List
{
- new("USD", "US Dollar", "United States", "840", false, null, CurrencyType.Fiat),
- new("EUR", "Euro", "Eurozone", "978", false, null, CurrencyType.Fiat),
- new("XAU", "Gold (ounce)", null, "959", false, null, CurrencyType.PreciousMetal),
- new("XAG", "Silver (ounce)", null, "961", false, null, CurrencyType.PreciousMetal),
- new("XDR", "IMF Special Drawing Rights", null, "960", false, null, CurrencyType.SpecialUnit),
- new("XXX", "No Currency", null, "999", false, null, CurrencyType.SpecialReserve),
+ new("USD", "US Dollar", 840, CurrencyType.Fiat),
+ new("EUR", "Euro", 978, CurrencyType.Fiat),
+ new("XAU", "Gold (ounce)", 959, CurrencyType.PreciousMetal),
+ new("XAG", "Silver (ounce)", 961, CurrencyType.PreciousMetal),
+ new("XDR", "IMF Special Drawing Rights", 960, CurrencyType.SpecialUnit),
+ new("XXX", "No Currency", 999, CurrencyType.SpecialReserve),
};
[Fact]
@@ -63,6 +62,7 @@ public void Build_Should_Filter_By_Without_Codes()
// Assert
Assert.Single(result);
Assert.Equal("USD", result[0].Code);
+ Assert.Equal("840", result[0].NumericCodeString);
}
[Fact]
diff --git a/src/tests/HawkN.Iso.Currencies.Tests/Extensions/ServiceCollectionExtensionsTests.cs b/src/tests/HawkN.Iso.Currencies.Tests/Extensions/ServiceCollectionExtensionsTests.cs
index 492c334..707364e 100644
--- a/src/tests/HawkN.Iso.Currencies.Tests/Extensions/ServiceCollectionExtensionsTests.cs
+++ b/src/tests/HawkN.Iso.Currencies.Tests/Extensions/ServiceCollectionExtensionsTests.cs
@@ -4,7 +4,6 @@
using HawkN.Iso.Currencies.Models;
using HawkN.Iso.Currencies.Services;
using Microsoft.Extensions.DependencyInjection;
-
namespace HawkN.Iso.Currencies.Tests.Extensions;
public class ServiceCollectionExtensionsTests
@@ -76,13 +75,9 @@ public bool TryValidate(CurrencyCode code, out ValidationResult result)
public bool Exists(CurrencyCode code) => true;
- public HawkN.Iso.Currencies.Models.Currency? Get(string value) => null;
-
- public HawkN.Iso.Currencies.Models.Currency? Get(CurrencyCode code) => null;
-
- public HawkN.Iso.Currencies.Models.Currency? GetHistorical(string value) => null;
+ public Currency? Get(string value) => null;
- public HawkN.Iso.Currencies.Models.Currency[] GetAllHistorical() => [];
+ public Currency? Get(CurrencyCode code) => null;
public ICurrencyQueryStart Query() => null!;
}
diff --git a/src/tests/HawkN.Iso.Currencies.Tests/Services/CurrencyServiceTests.cs b/src/tests/HawkN.Iso.Currencies.Tests/Services/CurrencyServiceTests.cs
index d77c2dc..9db3300 100644
--- a/src/tests/HawkN.Iso.Currencies.Tests/Services/CurrencyServiceTests.cs
+++ b/src/tests/HawkN.Iso.Currencies.Tests/Services/CurrencyServiceTests.cs
@@ -98,31 +98,6 @@ public void Get_CurrencyCode_Should_Return_Null_When_NotExists()
Assert.Null(result);
}
- [Fact]
- public void GetHistorical_Should_Return_HistoricalCurrency_When_Exists()
- {
- var historical = _service.GetHistorical("DEM");
- if (historical != null)
- {
- Assert.Equal("DEM", historical.Code);
- }
- }
-
- [Fact]
- public void GetHistorical_Should_Return_Null_When_NotExists()
- {
- var result = _service.GetHistorical("ZZZ");
- Assert.Null(result);
- }
-
- [Fact]
- public void GetAllHistorical_Should_Return_AllHistoricalCurrencies()
- {
- var all = _service.GetAllHistorical();
- Assert.NotNull(all);
- Assert.True(all.Length > 0);
- }
-
[Fact]
public void Query_Should_Return_CurrencyQueryBuilder()
{