diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml
index be70bf4..305f0bc 100644
--- a/.github/workflows/cd.yml
+++ b/.github/workflows/cd.yml
@@ -7,22 +7,28 @@ on:
jobs:
publish:
- name: Publish to NuGet
+ name: Publish packages (NuGet.org + GitHub)
runs-on: ubuntu-latest
permissions:
id-token: write
contents: write
+ packages: write
actions: read
env:
SOLUTION_NAME: src/HawkN.Iso.Countries.Solution.sln
NUGET_ORG_USERNAME: HawkN113
- ## Iso.Countries package settings
+ ## Iso.Countries package (Core)
PACKAGE_COUNTRIES_PROJECT_PATH: src/packages/HawkN.Iso.Countries/HawkN.Iso.Countries.csproj
PACKAGE_COUNTRIES_NUSPEC_FILE_PATH: HawkN.Iso.Countries.nuspec
PACKAGE_COUNTRIES_ID: HawkN.Iso.Countries
+ ## Iso.Countries.Currencies package (Extension)
+ PACKAGE_COUNTRIES_CURRENCIES_PROJECT_PATH: src/packages/HawkN.Iso.Countries.Currencies/HawkN.Iso.Countries.Currencies.csproj
+ PACKAGE_COUNTRIES_CURRENCIES_NUSPEC_FILE_PATH: HawkN.Iso.Countries.Currencies.nuspec
+ PACKAGE_COUNTRIES_CURRENCIES_ID: HawkN.Iso.Countries.Currencies
+
OUTPUT_NUGET_DIR: nuget-packages
NUGET_SOURCE_URL: https://api.nuget.org/v3/index.json
DOTNET_SKIP_FIRST_TIME_EXPERIENCE: true
@@ -50,17 +56,6 @@ jobs:
echo "CURRENT_VERSION=$VERSION" >> $GITHUB_ENV
shell: bash
- - name: Check if package (${{ env.PACKAGE_COUNTRIES_ID }}) version already exists on NuGet.org
- id: check_nuget
- run: |
- PACKAGE_COUNTRIES_ID_LOWER=$(echo "${{ env.PACKAGE_COUNTRIES_ID }}" | tr '[:upper:]' '[:lower:]')
- STATUS_CODE=$(curl -s -o /dev/null -I -w "%{http_code}" "https://api.nuget.org/v3-flatcontainer/${PACKAGE_COUNTRIES_ID_LOWER}/${{ env.CURRENT_VERSION }}/index.json")
- if [ "$STATUS_CODE" -eq 200 ]; then
- echo "Error: Version ${{ env.CURRENT_VERSION }} already exists on NuGet.org!"
- exit 1
- fi
- shell: bash
-
- name: Restore dependencies
run: dotnet restore ${{ env.SOLUTION_NAME }}
@@ -75,6 +70,15 @@ jobs:
/p:Version=${{ env.CURRENT_VERSION }} \
/p:ContinuousIntegrationBuild=true \
--output ${{ env.OUTPUT_NUGET_DIR }}
+
+ - name: Build and Pack (HawkN.Iso.Countries.Currencies) (Extension)
+ run: |
+ dotnet pack ${{ env.PACKAGE_COUNTRIES_CURRENCIES_PROJECT_PATH }} \
+ --configuration Release \
+ /p:NuspecFile=${{ env.PACKAGE_COUNTRIES_CURRENCIES_NUSPEC_FILE_PATH }} \
+ /p:Version=${{ env.CURRENT_VERSION }} \
+ /p:ContinuousIntegrationBuild=true \
+ --output ${{ env.OUTPUT_NUGET_DIR }}
- name: Generate Release Changelog
uses: orhun/git-cliff-action@v4
@@ -111,7 +115,9 @@ jobs:
uses: softprops/action-gh-release@v2
with:
body_path: CHANGELOG_RELEASE.md
- files: ${{ env.OUTPUT_NUGET_DIR }}/${{ env.PACKAGE_COUNTRIES_ID }}.${{ env.CURRENT_VERSION }}.nupkg
+ files: |
+ ${{ env.OUTPUT_NUGET_DIR }}/${{ env.PACKAGE_COUNTRIES_ID }}.${{ env.CURRENT_VERSION }}.nupkg
+ ${{ env.OUTPUT_NUGET_DIR }}/${{ env.PACKAGE_COUNTRIES_CURRENCIES_ID }}.${{ env.CURRENT_VERSION }}.nupkg
fail_on_unmatched_files: true
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@@ -126,5 +132,28 @@ jobs:
run: |
dotnet nuget push "${{ env.OUTPUT_NUGET_DIR }}/${{ env.PACKAGE_COUNTRIES_ID }}.${{ env.CURRENT_VERSION }}.nupkg" \
--api-key ${{steps.login.outputs.NUGET_API_KEY}} \
- --source ${{ env.NUGET_SOURCE_URL }}
- shell: bash
\ No newline at end of file
+ --source ${{ env.NUGET_SOURCE_URL }} \
+ --skip-duplicate
+ shell: bash
+
+ - name: Publish package (HawkN.Iso.Countries.Currencies) to NuGet.org (Trusted Publishing)
+ run: |
+ dotnet nuget push "${{ env.OUTPUT_NUGET_DIR }}/${{ env.PACKAGE_COUNTRIES_CURRENCIES_ID }}.${{ env.CURRENT_VERSION }}.nupkg" \
+ --api-key ${{steps.login.outputs.NUGET_API_KEY}} \
+ --source ${{ env.NUGET_SOURCE_URL }} \
+ --skip-duplicate
+ shell: bash
+
+ - name: Publish package (HawkN.Iso.Countries) to GitHub packages
+ run: |
+ dotnet nuget push "${{ env.OUTPUT_NUGET_DIR }}/${{ env.PACKAGE_COUNTRIES_ID }}.${{ env.CURRENT_VERSION }}.nupkg" \
+ --source "https://nuget.pkg.github.com/${{ github.repository_owner }}/index.json" \
+ --api-key ${{ secrets.GITHUB_TOKEN }} \
+ --skip-duplicate
+
+ - name: Publish package (HawkN.Iso.Countries.Currencies) to GitHub Packages
+ run: |
+ dotnet nuget push "${{ env.OUTPUT_NUGET_DIR }}/${{ env.PACKAGE_COUNTRIES_CURRENCIES_ID }}.${{ env.CURRENT_VERSION }}.nupkg" \
+ --source "https://nuget.pkg.github.com/${{ github.repository_owner }}/index.json" \
+ --api-key ${{ secrets.GITHUB_TOKEN }} \
+ --skip-duplicate
\ No newline at end of file
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 3098f01..57c6421 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -28,8 +28,15 @@ jobs:
env:
SOLUTION_NAME: src/HawkN.Iso.Countries.Solution.sln
- PACKAGE_COUNTRY_PROJECT_PATH: src/packages/HawkN.Iso.Countries/HawkN.Iso.Countries.csproj
- PACKAGE_COUNTRY_NUSPEC_FILE_PATH: HawkN.Iso.Countries.nuspec
+
+ # Iso.Countries package (Core)
+ PACKAGE_COUNTRIES_PROJECT_PATH: src/packages/HawkN.Iso.Countries/HawkN.Iso.Countries.csproj
+ PACKAGE_COUNTRIES_NUSPEC_FILE_PATH: HawkN.Iso.Countries.nuspec
+
+ # Iso.Countries.Currencies package (Extensions)
+ PACKAGE_COUNTRIES_CURRENCIES_PROJECT_PATH: src/packages/HawkN.Iso.Countries.Currencies/HawkN.Iso.Countries.Currencies.csproj
+ PACKAGE_COUNTRIES_CURRENCIES_NUSPEC_FILE_PATH: HawkN.Iso.Countries.Currencies.nuspec
+
OUTPUT_NUGET_DIR: nuget-packages
ARTIFACTS_DIR: artifacts
DOTNET_SKIP_FIRST_TIME_EXPERIENCE: true
@@ -72,7 +79,7 @@ jobs:
- name: Extract project version (HawkN.Iso.Countries)
id: get_version
run: |
- VERSION=$(sed -n 's/.*<\(VersionPrefix\|Version\)>\([^<]*\)<\/\1>.*/\2/p' ${{ env.PACKAGE_COUNTRY_PROJECT_PATH }} | head -n 1)
+ VERSION=$(sed -n 's/.*<\(VersionPrefix\|Version\)>\([^<]*\)<\/\1>.*/\2/p' ${{ env.PACKAGE_COUNTRIES_PROJECT_PATH }} | head -n 1)
if [ -z "$VERSION" ]; then
VERSION=$(date +%Y%m%d)
fi
@@ -81,7 +88,10 @@ jobs:
shell: bash
- name: Validate package creation (HawkN.Iso.Countries)
- run: dotnet pack ${{ env.PACKAGE_COUNTRY_PROJECT_PATH }} /p:NuspecFile=${{ env.PACKAGE_COUNTRY_NUSPEC_FILE_PATH }} /p:ContinuousIntegrationBuild=true --configuration Release --no-build --output ${{ env.OUTPUT_NUGET_DIR }}
+ run: dotnet pack ${{ env.PACKAGE_COUNTRIES_PROJECT_PATH }} /p:NuspecFile=${{ env.PACKAGE_COUNTRIES_NUSPEC_FILE_PATH }} /p:ContinuousIntegrationBuild=true --configuration Release --no-build --output ${{ env.OUTPUT_NUGET_DIR }}
+
+ - name: Validate package creation (HawkN.Iso.Countries.Currencies)
+ run: dotnet pack ${{ env.PACKAGE_COUNTRIES_CURRENCIES_PROJECT_PATH }} /p:NuspecFile=${{ env.PACKAGE_COUNTRIES_CURRENCIES_NUSPEC_FILE_PATH }} /p:ContinuousIntegrationBuild=true --configuration Release --no-build --output ${{ env.OUTPUT_NUGET_DIR }}
- name: Generate CHANGELOG.md
uses: orhun/git-cliff-action@v4
diff --git a/.gitignore b/.gitignore
index 9464f01..7750321 100644
--- a/.gitignore
+++ b/.gitignore
@@ -3,10 +3,18 @@ src/packages/HawkN.Iso.Countries/obj/**
src/packages/HawkN.Iso.Countries/bin/**
src/packages/HawkN.Iso.Countries.Generators/obj/**
src/packages/HawkN.Iso.Countries.Generators/bin/**
+src/packages/HawkN.Iso.Countries.Currencies/obj/**
+src/packages/HawkN.Iso.Countries.Currencies/bin/**
+src/packages/HawkN.Iso.Countries.Currencies.Generators/obj/**
+src/packages/HawkN.Iso.Countries.Currencies.Generators/bin/**
src/tests/HawkN.Iso.Countries.Tests/obj/**
src/tests/HawkN.Iso.Countries.Tests/bin/**
src/tests/HawkN.Iso.Countries.Generators.Tests/obj/**
src/tests/HawkN.Iso.Countries.Generators.Tests/bin/**
+src/tests/HawkN.Iso.Countries.Currencies.Tests/obj/**
+src/tests/HawkN.Iso.Countries.Currencies.Tests/bin/**
+src/tests/HawkN.Iso.Countries.Currencies.Generators.Tests/obj/**
+src/tests/HawkN.Iso.Countries.Currencies.Generators.Tests/bin/**
src/samples/HawkN.Iso.Countries.Samples.Console/obj/**
src/samples/HawkN.Iso.Countries.Samples.Console/bin/**
src/samples/HawkN.Iso.Countries.Samples.WebApi/obj/**
diff --git a/README.md b/README.md
index da8e706..dda78dc 100644
--- a/README.md
+++ b/README.md
@@ -2,19 +2,26 @@
[](https://github.com/HawkN113/HawkN.Iso.Countries/actions/workflows/ci.yml)
[](https://github.com/HawkN113/HawkN.Iso.Countries/actions/workflows/codeql-analysis.yml)
[](https://www.nuget.org/packages/HawkN.Iso.Countries/)
-[](https://www.nuget.org/packages/HawkN.Iso.Countries/)
-
+[](https://www.nuget.org/packages/HawkN.Iso.Countries/)
+[](https://www.nuget.org/packages/HawkN.Iso.Countries.Currencies/)
+[](https://www.nuget.org/packages/HawkN.Iso.Countries.Currencies/)
+
+
+
[](https://learn.microsoft.com/en-us/nuget/nuget-org/trusted-publishing)
[](https://dotnet.microsoft.com/download)
[](https://www.nuget.org/packages/HawkN.Iso.Countries/)
[](https://github.com/HawkN113/HawkN.Iso.Countries/blob/main/LICENSE)
+[](https://unicode.org/license.html)
+[](https://opendatacommons.org/licenses/odbl/1-0/)
|  | **HawkN.Iso.Countries** provides ISO 3166-1 country codes (Alpha-2, Alpha-3), official names, numeric codes (UN M49), and validation services. |
|--------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
---
-## Features
+## Features
+### HawkN.Iso.Countries (Core)
- **Comprehensive Country List** – Provides an up-to-date `ISO 3166-1` country data with numeric codes from `UN M49`.
- **Strongly Typed Codes** – `TwoLetterCode` and `ThreeLetterCode` enums are generated at compile-time.
- **Multiple Search Methods** – Lookup by Alpha-2, Alpha-3, Numeric code, or Country Name.
@@ -22,13 +29,21 @@
- **Ultra-Fast Performance** – O(1) lookups via pre-indexed static dictionaries.
- **Lightweight & Dependency-Free** – Compatible with .NET 8 and above.
+### HawkN.Iso.Countries.Currencies (Extension)
+- **Primary and Secondary Currencies** – Get the main currency or all secondary currencies of a country.
+- **Fast Lookups** – O(1) lookups using pre-indexed dictionaries and HashSet for secondary currencies.
+- **Currency Validation** – Check if a country uses a given currency.
+- **Seamless Integration** – Built to work with `HawkN.Iso.Countries` types (`CountryCode.TwoLetterCode`).
+- **Lightweight & Dependency-Free** – Compatible with .NET 8 and above.
+
---
## Packages
-| Package | Description |
-|---------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------|
-| [](https://www.nuget.org/packages/HawkN.Iso.Countries/) | Main library with country models, validation services, and generated ISO enums (Alpha-2, Alpha-3). |
+| Package | Description |
+|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| [](https://www.nuget.org/packages/HawkN.Iso.Countries/) | Main library with country models, validation services, and generated ISO enums (Alpha-2, Alpha-3). |
+| [](https://www.nuget.org/packages/HawkN.Iso.Countries.Currencies/) | Provides ISO-based mapping of primary and secondary currencies for countries.It allows you to quickly retrieve the main currency, secondary currencies, all currencies, or check if a currency is used by a specific country. |
---
@@ -41,17 +56,29 @@ dotnet add package HawkN.Iso.Countries
````
### Required Namespaces
+
+#### HawkN.Iso.Countries (Core)
+
```csharp
using HawkN.Iso.Countries;
using HawkN.Iso.Countries.Abstractions;
using HawkN.Iso.Countries.Models;
using HawkN.Iso.Countries.Extensions;
```
+
+#### HawkN.Iso.Countries.Currencies (Extension)
+```csharp
+using HawkN.Iso.Countries;
+using HawkN.Iso.Currencies;
+using HawkN.Iso.Countries.Currencies.Extensions;
+```
---
### Usage Example
-#### Registration
+#### HawkN.Iso.Countries (Core)
+
+##### Registration
Register the service in your DI container:
```csharp
using var host = Host.CreateDefaultBuilder(args)
@@ -61,7 +88,7 @@ using var host = Host.CreateDefaultBuilder(args)
})
.Build();
```
-#### Retrieval & Search
+##### Retrieval & Search
The service provides O(1) lookups via pre-indexed dictionaries and efficient partial searching.
```csharp
var service = scope.ServiceProvider.GetRequiredService();
@@ -98,7 +125,7 @@ var suggestions = service.SearchByName("United")
// Returns: ["United Arab Emirates", "United Kingdom", "United States", ...]
```
-#### Validation
+##### Validation
Check if a code or name is valid and retrieve the model simultaneously:
```csharp
// Validate by Code
@@ -115,7 +142,7 @@ if (!nameResult.IsValid)
Console.WriteLine($"Error: {nameResult.Reason}");
}
```
-#### Fluent String Extensions
+##### Fluent String Extensions
```csharp
string input = "FRA";
@@ -136,7 +163,7 @@ if (validationResult.IsValid)
}
```
-#### Emoji Flags Support
+##### Emoji Flags Support
The library provides an easy way to display country flags using standard Unicode Emoji. This works without any external image assets and is perfect for lightweight UI components.
```csharp
@@ -149,6 +176,31 @@ Console.WriteLine($"{flag} {country.Name}");
// Output: 🇫🇮 Finland
```
+#### HawkN.Iso.Countries.Currencies (Extension)
+
+##### Currency mapping
+```csharp
+var country = CountryCode.TwoLetterCode.CH;
+
+// Primary currency
+var primary = country.GetPrimaryCurrency(); // CHF
+
+// Secondary currencies
+var secondary = country.GetSecondaryCurrencies();
+
+// All currencies
+var all = country.GetAllCurrencies();
+
+// Check if used
+bool usesChe = country.IsCurrencyUsedByCountry(CurrencyCode.CHE);
+```
+
+##### Validation
+```csharp
+// Check if used the currency
+bool usesChe = country.IsCurrencyUsedByCountry(CurrencyCode.CHE);
+```
+
---
### Supported countries
@@ -421,11 +473,19 @@ Last updated at `25.12.2025`.
## License
-### Code License
-The source code of `HawkN.Iso.Countries` 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).
+
+- Country data (`ISO 3166-1` and `UN M49` numeric codes) is sourced from the [UN Statistics Division – M49 standard](https://unstats.un.org/unsd/methodology/m49/overview)
-### Data License
-Country data (`ISO 3166-1` and `UN M49` numeric codes) is sourced from the [UN Statistics Division – M49 standard](https://unstats.un.org/unsd/methodology/m49/overview)
+The above data licenses are **permissive and compatible with MIT-licensed code**
+when used for reference and code generation.
---
@@ -453,4 +513,4 @@ If you want to contribute code, feel free to submit a Pull Request.
### References
- [ISO 3166 Standard](https://www.iso.org/iso-3166-country-codes.html)
- [UN Statistics Division – M49 standard](https://unstats.un.org/unsd/methodology/m49/overview)
-- [GitHub Repository](https://github.com/HawkN113/HawkN.Iso.Countries)
+- [GitHub Repository](https://github.com/HawkN113/HawkN.Iso.Countries)
\ No newline at end of file
diff --git a/src/HawkN.Iso.Countries.Solution.sln b/src/HawkN.Iso.Countries.Solution.sln
index 324009d..e9ef2e6 100644
--- a/src/HawkN.Iso.Countries.Solution.sln
+++ b/src/HawkN.Iso.Countries.Solution.sln
@@ -18,6 +18,12 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HawkN.Iso.Countries.Samples
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HawkN.Iso.Countries.Samples.Console", "samples\HawkN.Iso.Countries.Samples.Console\HawkN.Iso.Countries.Samples.Console.csproj", "{6364342A-33F1-46FF-9DAB-DF3B24113905}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HawkN.Iso.Countries.Currencies.Generators", "packages\HawkN.Iso.Countries.Currencies.Generators\HawkN.Iso.Countries.Currencies.Generators.csproj", "{43FCD81D-3ECA-47B8-A321-1A21E5EEB298}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HawkN.Iso.Countries.Currencies", "packages\HawkN.Iso.Countries.Currencies\HawkN.Iso.Countries.Currencies.csproj", "{46A4E3EC-0692-4789-AA53-9076919685BE}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HawkN.Iso.Countries.Currencies.Tests", "tests\HawkN.Iso.Countries.Currencies.Tests\HawkN.Iso.Countries.Currencies.Tests.csproj", "{CAE6BB22-420C-4E8B-8E53-F085F6A0A058}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -30,6 +36,9 @@ Global
{58ED09AB-F167-4532-B809-F53B8F8CF7CC} = {04424310-F4C5-420F-AFFA-B929A8D07DC4}
{6321C47D-C275-424C-ACD7-390367A9968E} = {6602CF55-B7B8-4466-81CB-1A600068CC3F}
{6364342A-33F1-46FF-9DAB-DF3B24113905} = {6602CF55-B7B8-4466-81CB-1A600068CC3F}
+ {43FCD81D-3ECA-47B8-A321-1A21E5EEB298} = {B2038C6B-5338-4A76-AF4F-2A4E8692BF6E}
+ {46A4E3EC-0692-4789-AA53-9076919685BE} = {B2038C6B-5338-4A76-AF4F-2A4E8692BF6E}
+ {CAE6BB22-420C-4E8B-8E53-F085F6A0A058} = {04424310-F4C5-420F-AFFA-B929A8D07DC4}
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{B8C15C2C-5F8A-4C9C-927B-AE9946534E9C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
@@ -56,5 +65,17 @@ Global
{6364342A-33F1-46FF-9DAB-DF3B24113905}.Debug|Any CPU.Build.0 = Debug|Any CPU
{6364342A-33F1-46FF-9DAB-DF3B24113905}.Release|Any CPU.ActiveCfg = Release|Any CPU
{6364342A-33F1-46FF-9DAB-DF3B24113905}.Release|Any CPU.Build.0 = Release|Any CPU
+ {43FCD81D-3ECA-47B8-A321-1A21E5EEB298}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {43FCD81D-3ECA-47B8-A321-1A21E5EEB298}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {43FCD81D-3ECA-47B8-A321-1A21E5EEB298}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {43FCD81D-3ECA-47B8-A321-1A21E5EEB298}.Release|Any CPU.Build.0 = Release|Any CPU
+ {46A4E3EC-0692-4789-AA53-9076919685BE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {46A4E3EC-0692-4789-AA53-9076919685BE}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {46A4E3EC-0692-4789-AA53-9076919685BE}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {46A4E3EC-0692-4789-AA53-9076919685BE}.Release|Any CPU.Build.0 = Release|Any CPU
+ {CAE6BB22-420C-4E8B-8E53-F085F6A0A058}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {CAE6BB22-420C-4E8B-8E53-F085F6A0A058}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {CAE6BB22-420C-4E8B-8E53-F085F6A0A058}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {CAE6BB22-420C-4E8B-8E53-F085F6A0A058}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
EndGlobal
diff --git a/src/packages/HawkN.Iso.Countries.Currencies.Generators/BaseIncrementalGenerator.cs b/src/packages/HawkN.Iso.Countries.Currencies.Generators/BaseIncrementalGenerator.cs
new file mode 100644
index 0000000..027f8c9
--- /dev/null
+++ b/src/packages/HawkN.Iso.Countries.Currencies.Generators/BaseIncrementalGenerator.cs
@@ -0,0 +1,83 @@
+using System.Reflection;
+using System.Text;
+using HawkN.Iso.Countries.Currencies.Generators.Factories;
+using HawkN.Iso.Countries.Currencies.Generators.Models;
+using Microsoft.CodeAnalysis;
+using Microsoft.CodeAnalysis.Text;
+
+namespace HawkN.Iso.Countries.Currencies.Generators;
+
+public abstract class BaseIncrementalGenerator : IIncrementalGenerator
+{
+ protected virtual string HintName { get; } = string.Empty;
+ protected readonly ErrorFactory ErrorFactory = new();
+ public abstract void Initialize(IncrementalGeneratorInitializationContext context);
+
+ protected void AddStubIfErrors(SourceProductionContext spc, string hintName, string stubSource, GeneratorType type)
+ {
+ if (!ErrorFactory.IsExists()) return;
+ ErrorFactory.ShowDiagnostics(spc, type);
+ spc.AddSource(hintName, SourceText.From(stubSource, Encoding.UTF8));
+ }
+
+ protected static (string original, string translations) LoadResources(Assembly assembly)
+ {
+ return (
+ ReadResource("HawkN.Iso.Countries.Currencies.Generators.Content.SupplementalData.xml"),
+ ReadResource("HawkN.Iso.Countries.Currencies.Generators.Content.Translations.EN.xml")
+ );
+ string ReadResource(string name)
+ {
+ using var stream = assembly.GetManifestResourceStream(name)
+ ?? throw new InvalidOperationException($"{name} not found.");
+ using var reader = new StreamReader(stream, new UTF8Encoding(encoderShouldEmitUTF8Identifier: false));
+ return reader.ReadToEnd();
+ }
+ }
+
+ protected void GenerateSourceOutput((string, string, string) tuple, SourceProductionContext spc)
+ {
+ ErrorFactory.Create(new ErrorDescription
+ {
+ DiagnosticDescriptor = new DiagnosticDescriptor(
+ id: CreateDescriptorId("0"),
+ title: Constants.DiagnosticsTitle,
+ messageFormat: "Unexpected exception: Unexpected error",
+ category: string.Empty,
+ defaultSeverity: DiagnosticSeverity.Error,
+ isEnabledByDefault: true),
+ GeneratorType = GeneratorType.Factory
+ });
+ ErrorFactory.ShowDiagnostics(spc, GeneratorType.Factory);
+ }
+
+ 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");
+ if (references is not null && references.Any())
+ {
+ foreach (var referenceName in references)
+ sb.AppendLine($"using {referenceName};");
+ }
+ sb.AppendLine($"namespace {@namespace}");
+ sb.AppendLine("{");
+ return sb;
+ }
+}
\ No newline at end of file
diff --git a/src/packages/HawkN.Iso.Countries.Currencies.Generators/Constants.cs b/src/packages/HawkN.Iso.Countries.Currencies.Generators/Constants.cs
new file mode 100644
index 0000000..581f10c
--- /dev/null
+++ b/src/packages/HawkN.Iso.Countries.Currencies.Generators/Constants.cs
@@ -0,0 +1,26 @@
+namespace HawkN.Iso.Countries.Currencies.Generators;
+
+internal static class Constants
+{
+ public const string DefaultNamespace = "HawkN.Iso.Countries.Currencies";
+ public const string DiagnosticsTitle = "Generator error";
+ public const string ErrorMark = "#ERROR:";
+ public const string GeneratorName = "HawkN.Iso.Countries.Currencies.Generators source generator";
+ public const string ErrorPrefixName = "COUNTRY_CURRENCY_";
+ public static readonly string[] ExtendedSourceData =
+ [
+ "Release: release-48",
+ "CLDR URL: https://github.com/unicode-org/cldr",
+ ];
+ public static readonly string[] SystemNamespaces = [
+ "System.Linq",
+ "System.Collections.Generic",
+ "System.Collections.Immutable"
+ ];
+ public static readonly string[] ReferencesNamespaces =
+ [
+ "HawkN.Iso.Countries",
+ "HawkN.Iso.Currencies",
+ "HawkN.Iso.Countries.Currencies.Models"
+ ];
+}
\ No newline at end of file
diff --git a/src/packages/HawkN.Iso.Countries.Currencies.Generators/Content/SupplementalData.xml b/src/packages/HawkN.Iso.Countries.Currencies.Generators/Content/SupplementalData.xml
new file mode 100644
index 0000000..25684d3
--- /dev/null
+++ b/src/packages/HawkN.Iso.Countries.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.Countries.Currencies.Generators/Content/Translations/EN.xml b/src/packages/HawkN.Iso.Countries.Currencies.Generators/Content/Translations/EN.xml
new file mode 100644
index 0000000..5031963
--- /dev/null
+++ b/src/packages/HawkN.Iso.Countries.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.Countries.Currencies.Generators/CountryCurrencySourceGenerator.cs b/src/packages/HawkN.Iso.Countries.Currencies.Generators/CountryCurrencySourceGenerator.cs
new file mode 100644
index 0000000..bd557a0
--- /dev/null
+++ b/src/packages/HawkN.Iso.Countries.Currencies.Generators/CountryCurrencySourceGenerator.cs
@@ -0,0 +1,284 @@
+using System.Reflection;
+using System.Text;
+using HawkN.Iso.Countries.Currencies.Generators.Models;
+using Microsoft.CodeAnalysis;
+using Microsoft.CodeAnalysis.Text;
+namespace HawkN.Iso.Countries.Currencies.Generators;
+
+[Generator]
+public class CountryCurrencySourceGenerator : BaseIncrementalGenerator
+{
+ protected override string HintName => "CountryCurrencyMap.g.cs";
+
+ private const string StubSource = """
+ //
+ // This file was generated by HawkN.Iso.Currencies.Generators source generator.
+ // Do not modify this file manually.
+ //
+ #nullable enable
+ using System.Collections.Generic;
+ using System.Collections.Immutable;
+ using HawkN.Iso.Countries.Models;
+ using HawkN.Iso.Currencies.Models;
+ using HawkN.Iso.Countries.Currencies.Models;
+ namespace HawkN.Iso.Countries.Currencies
+ {
+ ///
+ /// Provides fast ISO 3166 → ISO 4217 country-to-currency mapping.
+ /// Generated from Unicode CLDR supplemental data.
+ ///
+ internal static class CountryCurrencyMap
+ {
+ ///
+ /// Raw string-based data generated from CLDR.
+ /// Parsed and validated at type initialization.
+ ///
+ internal static readonly ImmutableArray RawData =
+ ImmutableArray.Create(
+ new CountryCurrencyInfoRow[]
+ {
+ });
+ }
+ }
+ """;
+
+ private const string MethodsSource = """
+ private static readonly ImmutableArray Data;
+ private static readonly Dictionary Index;
+
+ ///
+ /// Attempts to get currency information for a country.
+ ///
+ public static bool TryGet(CountryCode.TwoLetterCode country,out CountryCurrencyInfo? info) => Index.TryGetValue(country, out info);
+
+ static CountryCurrencyMap()
+ {
+ var dataBuilder = ImmutableArray.CreateBuilder(RawData.Length);
+ var index = new Dictionary(RawData.Length);
+
+ foreach (var row in RawData.Where(r => Enum.TryParse(r.CountryCode, out CountryCode.TwoLetterCode _)))
+ {
+ if (!Enum.TryParse(row.PrimaryCurrency, out CurrencyCode primary))
+ continue;
+ Enum.TryParse(row.CountryCode, out CountryCode.TwoLetterCode country);
+
+ var info = new CountryCurrencyInfo
+ {
+ CountryCode = country,
+ PrimaryCurrency = primary,
+ SecondaryCurrencies = FilterSecondary(row.SecondaryCurrencies)
+ };
+
+ dataBuilder.Add(info);
+ index[country] = info;
+ }
+
+ Data = dataBuilder.ToImmutable();
+ Index = index;
+ }
+
+ private static IReadOnlyList FilterSecondary(IReadOnlyList values)
+ {
+ if (values.Count == 0)
+ return Array.Empty();
+
+ var buffer = new CurrencyCode[values.Count];
+ var count = 0;
+
+ foreach (var value in values)
+ {
+ if (TryParseCurrency(value, out CurrencyCode code))
+ buffer[count++] = code;
+ }
+
+ if (count == 0)
+ return Array.Empty();
+
+ if (count == buffer.Length)
+ return buffer;
+
+ var result = new CurrencyCode[count];
+ Array.Copy(buffer, result, count);
+ return result;
+ }
+
+ private static bool TryParseCurrency(string value, out CurrencyCode code) => Enum.TryParse(value, out code);
+ """;
+
+ public override void Initialize(IncrementalGeneratorInitializationContext context)
+ {
+ ErrorFactory.Clear();
+ var jsonProvider = context.CompilationProvider.Select(ReadDataResource);
+ context.RegisterSourceOutput(jsonProvider, (spc, tuple) => GenerateSourceOutput(tuple, spc));
+ }
+
+ static (string, string) ReadDataResource(Compilation compilation, CancellationToken ct)
+ {
+ try
+ {
+ return LoadResources(Assembly.GetExecutingAssembly());
+ }
+ catch (InvalidOperationException ex)
+ {
+ var errorMsg = $"{Constants.ErrorMark}:{ex.Message}";
+ return (errorMsg, errorMsg);
+ }
+ }
+
+ private void GenerateSourceOutput((string originalXml, string translationsXml) tuple,
+ SourceProductionContext spc)
+ {
+ try
+ {
+ if (HasResourceErrors(tuple, out var errorMessages))
+ {
+ foreach (var msg in errorMessages)
+ ReportResourceError(msg);
+
+ AddStubIfErrors(spc, HintName, StubSource, GeneratorType.Database);
+ return;
+ }
+
+ var loader = new CurrencyDataLoader(tuple.originalXml, tuple.translationsXml);
+ var sb = CreateSourceBuilder(
+ Constants.GeneratorName,
+ Constants.DefaultNamespace,
+ Constants.ExtendedSourceData,
+ Constants.SystemNamespaces
+ .Concat(Constants.ReferencesNamespaces)
+ .ToArray());
+
+ sb.AppendLine(" /// ")
+ .AppendLine(" /// Provides fast ISO 3166 → ISO 4217 country-to-currency mapping.")
+ .AppendLine(" /// Generated from Unicode CLDR supplemental data.")
+ .AppendLine(" /// ")
+ .AppendLine(" internal static class CountryCurrencyMap")
+ .AppendLine(" {");
+
+ var list = new List();
+ foreach (var group in GroupByCountry(loader.ActualCurrencyData))
+ {
+ var current = group.Value.Where(c => c.IsCurrent).ToList();
+ if (current.Count == 0)
+ continue;
+ var primary = current[0].CurrencyCode;
+ var secondary = new List();
+ for (var i = 1; i < current.Count; i++)
+ {
+ var code = current[i].CurrencyCode;
+ if (!secondary.Contains(code))
+ secondary.Add(code);
+ }
+
+ list.Add(new GeneratedCountryCurrencyRow(
+ group.Key,
+ primary,
+ secondary));
+ }
+
+ GenerateDataSection(sb, "RawData", list);
+
+ sb.AppendLine(MethodsSource);
+
+ sb.AppendLine(" }").AppendLine("}");
+
+ if (ErrorFactory.IsExists())
+ {
+ AddStubIfErrors(spc, HintName, StubSource, GeneratorType.Database);
+ return;
+ }
+ spc.AddSource(HintName, SourceText.From(sb.ToString(), Encoding.UTF8));
+ }
+ catch (Exception ex) when (ex is not OperationCanceledException)
+ {
+ ErrorFactory.Create(new ErrorDescription
+ {
+ DiagnosticDescriptor = new DiagnosticDescriptor(
+ CreateDescriptorId("0"),
+ Constants.DiagnosticsTitle,
+ $"Unexpected exception: {ex.Message}. Stacktrace: {ex.StackTrace}",
+ string.Empty,
+ DiagnosticSeverity.Error,
+ true),
+ GeneratorType = GeneratorType.Database
+ });
+ AddStubIfErrors(spc, HintName, StubSource, GeneratorType.Database);
+ }
+ }
+
+ private static bool HasResourceErrors((string originalXml, string translationsXml) tuple,
+ out List messages)
+ {
+ messages = [];
+ if (tuple.originalXml.StartsWith(Constants.ErrorMark)) messages.Add("original:" + tuple.originalXml);
+ if (tuple.translationsXml.StartsWith(Constants.ErrorMark)) messages.Add("translations:" + tuple.translationsXml);
+ return messages.Count > 0;
+ }
+
+ private static void GenerateDataSection(StringBuilder sb, string propertyName, IReadOnlyList data)
+ {
+ sb.AppendLine(" /// ")
+ .AppendLine(" /// Raw string-based data generated from CLDR.")
+ .AppendLine(" /// Parsed and validated at type initialization.")
+ .AppendLine(" /// ");
+ sb.AppendLine(
+ $" internal static readonly ImmutableArray {propertyName} = ImmutableArray.Create(new CountryCurrencyInfoRow[]")
+ .AppendLine(" {");
+ foreach (var item in data)
+ {
+ sb.AppendLine(" new CountryCurrencyInfoRow()");
+ sb.AppendLine(" {");
+ sb.AppendLine($" CountryCode = \"{item.CountryCode}\",");
+ sb.AppendLine($" PrimaryCurrency = \"{item.PrimaryCurrency}\",");
+ if (item.SecondaryCurrencies.Count == 0)
+ {
+ sb.AppendLine(" SecondaryCurrencies = []");
+ }
+ else
+ {
+ sb.AppendLine(" SecondaryCurrencies = new []");
+ sb.AppendLine(" {");
+ foreach (var c in item.SecondaryCurrencies)
+ sb.AppendLine(" \"" + c + "\",");
+ sb.AppendLine(" }");
+ }
+ sb.AppendLine(" },");
+ }
+ sb.AppendLine(" });");
+ }
+
+ private static Dictionary> GroupByCountry(
+ IReadOnlyList parsed)
+ {
+ var dict = new Dictionary>();
+ foreach (var p in parsed)
+ {
+ if (!dict.TryGetValue(p.CountryCode, out var list))
+ {
+ list = [];
+ dict[p.CountryCode] = list;
+ }
+ list.Add(p);
+ }
+ return dict;
+ }
+
+ private void ReportResourceError(string msg)
+ {
+ var parts = msg.Split([':'], 2);
+ var name = parts[0];
+ var text = parts.Length > 1 ? parts[1] : "Unknown error";
+
+ ErrorFactory.Create(new ErrorDescription
+ {
+ DiagnosticDescriptor = new DiagnosticDescriptor(
+ CreateDescriptorId("1"),
+ Constants.DiagnosticsTitle,
+ $"Failed to load {name} resource: {text}",
+ string.Empty,
+ DiagnosticSeverity.Error,
+ true),
+ GeneratorType = GeneratorType.Database
+ });
+ }
+}
\ No newline at end of file
diff --git a/src/packages/HawkN.Iso.Countries.Currencies.Generators/CurrencyDataLoader.cs b/src/packages/HawkN.Iso.Countries.Currencies.Generators/CurrencyDataLoader.cs
new file mode 100644
index 0000000..db2e6b8
--- /dev/null
+++ b/src/packages/HawkN.Iso.Countries.Currencies.Generators/CurrencyDataLoader.cs
@@ -0,0 +1,14 @@
+using HawkN.Iso.Countries.Currencies.Generators.Handlers;
+using HawkN.Iso.Countries.Currencies.Generators.Models;
+namespace HawkN.Iso.Countries.Currencies.Generators;
+
+internal sealed class CurrencyDataLoader
+{
+ public List ActualCurrencyData { get; }
+
+ public CurrencyDataLoader(string supplementalXml, string enXml)
+ {
+ var actual = new CldrCurrencyHandler(supplementalXml).LoadCurrencies();
+ ActualCurrencyData = actual;
+ }
+}
\ No newline at end of file
diff --git a/src/packages/HawkN.Iso.Countries.Currencies.Generators/Factories/ErrorFactory.cs b/src/packages/HawkN.Iso.Countries.Currencies.Generators/Factories/ErrorFactory.cs
new file mode 100644
index 0000000..759eaf6
--- /dev/null
+++ b/src/packages/HawkN.Iso.Countries.Currencies.Generators/Factories/ErrorFactory.cs
@@ -0,0 +1,38 @@
+using HawkN.Iso.Countries.Currencies.Generators.Models;
+using Microsoft.CodeAnalysis;
+namespace HawkN.Iso.Countries.Currencies.Generators.Factories;
+
+public class ErrorFactory
+{
+ private readonly List _errorDescriptors = [];
+ public void Create(ErrorDescription descriptor)
+ {
+ if (!_errorDescriptors.Exists(q =>
+ q.DiagnosticDescriptor.Id.Equals(descriptor.DiagnosticDescriptor.Id, StringComparison.OrdinalIgnoreCase) &&
+ q.GeneratorType == descriptor.GeneratorType))
+ {
+ _errorDescriptors.Add(descriptor);
+ }
+ }
+
+ public bool IsExists()
+ {
+ return _errorDescriptors.Any();
+ }
+
+ public void Clear()
+ {
+ _errorDescriptors.Clear();
+ }
+
+ public void ShowDiagnostics(SourceProductionContext context, GeneratorType type)
+ {
+ var descriptors = _errorDescriptors.FindAll(q => q.GeneratorType == type);
+ if (!IsExists()) return;
+ var list = descriptors.Select(descriptor =>
+ Diagnostic.Create(descriptor.DiagnosticDescriptor, descriptor.Location, descriptor.MessageArgs))
+ .ToList();
+ foreach (var item in list)
+ context.ReportDiagnostic(item);
+ }
+}
\ No newline at end of file
diff --git a/src/packages/HawkN.Iso.Countries.Currencies.Generators/Handlers/CldrCurrencyHandler.cs b/src/packages/HawkN.Iso.Countries.Currencies.Generators/Handlers/CldrCurrencyHandler.cs
new file mode 100644
index 0000000..12f0cd6
--- /dev/null
+++ b/src/packages/HawkN.Iso.Countries.Currencies.Generators/Handlers/CldrCurrencyHandler.cs
@@ -0,0 +1,31 @@
+using System.Xml.Linq;
+using HawkN.Iso.Countries.Currencies.Generators.Models;
+namespace HawkN.Iso.Countries.Currencies.Generators.Handlers;
+
+internal sealed class CldrCurrencyHandler(string xmlContent)
+{
+ private readonly XDocument _doc = XDocument.Parse(xmlContent);
+
+ public List LoadCurrencies()
+ {
+ var currencies = new List();
+ ParseRegionCurrencies(currencies);
+ return currencies;
+ }
+
+ private void ParseRegionCurrencies(List currencies)
+ {
+ foreach (var region in _doc.Descendants("currencyData").Descendants("region"))
+ {
+ var countryCode = region.Attribute("iso3166")?.Value;
+ if (string.IsNullOrEmpty(countryCode))
+ continue;
+
+ var order = 0;
+ currencies.AddRange(region.Elements("currency")
+ .Select(
+ currency => new ParsedCurrencyRow(countryCode!, currency.Attribute("iso4217")!.Value, currency.Attribute("to") is null, order++))
+ );
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/packages/HawkN.Iso.Countries.Currencies.Generators/HawkN.Iso.Countries.Currencies.Generators.csproj b/src/packages/HawkN.Iso.Countries.Currencies.Generators/HawkN.Iso.Countries.Currencies.Generators.csproj
new file mode 100644
index 0000000..eb82284
--- /dev/null
+++ b/src/packages/HawkN.Iso.Countries.Currencies.Generators/HawkN.Iso.Countries.Currencies.Generators.csproj
@@ -0,0 +1,64 @@
+
+
+
+ netstandard2.0
+ latest
+ true
+ true
+ enable
+ enable
+ Analyzer
+ true
+ true
+ true
+ false
+ 8.0.0.0
+ 8.0.0.0
+ Copyright © 2026 Nikolay Selyutin (HawkN113)
+ true
+ false
+ true
+ false
+ true
+ 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
+
+
+
+
+
+
+
+
+
+
+
+
+ Always
+
+
+
+ Always
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/packages/HawkN.Iso.Countries.Currencies.Generators/Models/ErrorDescription.cs b/src/packages/HawkN.Iso.Countries.Currencies.Generators/Models/ErrorDescription.cs
new file mode 100644
index 0000000..232e4d1
--- /dev/null
+++ b/src/packages/HawkN.Iso.Countries.Currencies.Generators/Models/ErrorDescription.cs
@@ -0,0 +1,10 @@
+using Microsoft.CodeAnalysis;
+namespace HawkN.Iso.Countries.Currencies.Generators.Models;
+
+public class ErrorDescription
+{
+ public DiagnosticDescriptor DiagnosticDescriptor { get; set; } = null!;
+ public object?[]? MessageArgs { get; set; }
+ public Location? Location { get; set; } = Location.None;
+ public GeneratorType GeneratorType { get; set; } = GeneratorType.Factory;
+}
\ No newline at end of file
diff --git a/src/packages/HawkN.Iso.Countries.Currencies.Generators/Models/GeneratedCountryCurrencyRow.cs b/src/packages/HawkN.Iso.Countries.Currencies.Generators/Models/GeneratedCountryCurrencyRow.cs
new file mode 100644
index 0000000..de1f73c
--- /dev/null
+++ b/src/packages/HawkN.Iso.Countries.Currencies.Generators/Models/GeneratedCountryCurrencyRow.cs
@@ -0,0 +1,11 @@
+namespace HawkN.Iso.Countries.Currencies.Generators.Models;
+
+public class GeneratedCountryCurrencyRow(
+ string countryCode,
+ string primaryCurrency,
+ IReadOnlyList secondaryCurrencies)
+{
+ public string CountryCode { get; } = countryCode;
+ public string PrimaryCurrency { get; } = primaryCurrency;
+ public IReadOnlyList SecondaryCurrencies { get; } = secondaryCurrencies;
+}
\ No newline at end of file
diff --git a/src/packages/HawkN.Iso.Countries.Currencies.Generators/Models/GeneratorType.cs b/src/packages/HawkN.Iso.Countries.Currencies.Generators/Models/GeneratorType.cs
new file mode 100644
index 0000000..5ea5b3c
--- /dev/null
+++ b/src/packages/HawkN.Iso.Countries.Currencies.Generators/Models/GeneratorType.cs
@@ -0,0 +1,9 @@
+namespace HawkN.Iso.Countries.Currencies.Generators.Models;
+
+public enum GeneratorType
+{
+ Factory = 0,
+ Currency = 1,
+ Country = 2,
+ Database = 3
+}
\ No newline at end of file
diff --git a/src/packages/HawkN.Iso.Countries.Currencies.Generators/Models/ParsedCurrency.cs b/src/packages/HawkN.Iso.Countries.Currencies.Generators/Models/ParsedCurrency.cs
new file mode 100644
index 0000000..4ac027d
--- /dev/null
+++ b/src/packages/HawkN.Iso.Countries.Currencies.Generators/Models/ParsedCurrency.cs
@@ -0,0 +1,9 @@
+namespace HawkN.Iso.Countries.Currencies.Generators.Models;
+
+internal sealed class ParsedCurrencyRow(string countryCode, string currencyCode, bool isCurrent, int order)
+{
+ public string CountryCode { get; } = countryCode;
+ public string CurrencyCode { get; } = currencyCode;
+ public bool IsCurrent { get; } = isCurrent;
+ public int Order { get; } = order;
+}
diff --git a/src/packages/HawkN.Iso.Countries.Currencies/CountryCurrencyMap.cs b/src/packages/HawkN.Iso.Countries.Currencies/CountryCurrencyMap.cs
new file mode 100644
index 0000000..eee97a2
--- /dev/null
+++ b/src/packages/HawkN.Iso.Countries.Currencies/CountryCurrencyMap.cs
@@ -0,0 +1,1703 @@
+//
+// This file was generated by HawkN.Iso.Countries.Currencies.Generators source generator
+// Release: release-48
+// CLDR URL: https://github.com/unicode-org/cldr
+// Do not modify this file manually.
+//
+#nullable enable
+using System.Linq;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using HawkN.Iso.Countries;
+using HawkN.Iso.Currencies;
+using HawkN.Iso.Countries.Currencies.Models;
+namespace HawkN.Iso.Countries.Currencies
+{
+ ///
+ /// Provides fast ISO 3166 → ISO 4217 country-to-currency mapping.
+ /// Generated from Unicode CLDR supplemental data.
+ ///
+ internal static class CountryCurrencyMap
+ {
+ ///
+ /// Raw string-based data generated from CLDR.
+ /// Parsed and validated at type initialization.
+ ///
+ internal static readonly ImmutableArray RawData = ImmutableArray.Create(new CountryCurrencyInfoRow[]
+ {
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "AC",
+ PrimaryCurrency = "SHP",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "AD",
+ PrimaryCurrency = "EUR",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "AE",
+ PrimaryCurrency = "AED",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "AF",
+ PrimaryCurrency = "AFN",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "AG",
+ PrimaryCurrency = "XCD",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "AI",
+ PrimaryCurrency = "XCD",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "AL",
+ PrimaryCurrency = "ALL",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "AM",
+ PrimaryCurrency = "AMD",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "AO",
+ PrimaryCurrency = "AOA",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "AQ",
+ PrimaryCurrency = "XXX",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "AR",
+ PrimaryCurrency = "ARS",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "AS",
+ PrimaryCurrency = "USD",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "AT",
+ PrimaryCurrency = "EUR",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "AU",
+ PrimaryCurrency = "AUD",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "AW",
+ PrimaryCurrency = "AWG",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "AX",
+ PrimaryCurrency = "EUR",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "AZ",
+ PrimaryCurrency = "AZN",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "BA",
+ PrimaryCurrency = "BAM",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "BB",
+ PrimaryCurrency = "BBD",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "BD",
+ PrimaryCurrency = "BDT",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "BE",
+ PrimaryCurrency = "EUR",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "BF",
+ PrimaryCurrency = "XOF",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "BG",
+ PrimaryCurrency = "EUR",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "BH",
+ PrimaryCurrency = "BHD",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "BI",
+ PrimaryCurrency = "BIF",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "BJ",
+ PrimaryCurrency = "XOF",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "BL",
+ PrimaryCurrency = "EUR",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "BM",
+ PrimaryCurrency = "BMD",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "BN",
+ PrimaryCurrency = "BND",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "BO",
+ PrimaryCurrency = "BOB",
+ SecondaryCurrencies = new []
+ {
+ "BOV",
+ }
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "BQ",
+ PrimaryCurrency = "USD",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "BR",
+ PrimaryCurrency = "BRL",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "BS",
+ PrimaryCurrency = "BSD",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "BT",
+ PrimaryCurrency = "BTN",
+ SecondaryCurrencies = new []
+ {
+ "INR",
+ }
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "BV",
+ PrimaryCurrency = "NOK",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "BW",
+ PrimaryCurrency = "BWP",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "BY",
+ PrimaryCurrency = "BYN",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "BZ",
+ PrimaryCurrency = "BZD",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "CA",
+ PrimaryCurrency = "CAD",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "CC",
+ PrimaryCurrency = "AUD",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "CD",
+ PrimaryCurrency = "CDF",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "CF",
+ PrimaryCurrency = "XAF",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "CG",
+ PrimaryCurrency = "XAF",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "CH",
+ PrimaryCurrency = "CHF",
+ SecondaryCurrencies = new []
+ {
+ "CHE",
+ "CHW",
+ }
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "CI",
+ PrimaryCurrency = "XOF",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "CK",
+ PrimaryCurrency = "NZD",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "CL",
+ PrimaryCurrency = "CLP",
+ SecondaryCurrencies = new []
+ {
+ "CLF",
+ }
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "CM",
+ PrimaryCurrency = "XAF",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "CN",
+ PrimaryCurrency = "CNY",
+ SecondaryCurrencies = new []
+ {
+ "CNH",
+ }
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "CO",
+ PrimaryCurrency = "COP",
+ SecondaryCurrencies = new []
+ {
+ "COU",
+ }
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "CP",
+ PrimaryCurrency = "XXX",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "CR",
+ PrimaryCurrency = "CRC",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "CU",
+ PrimaryCurrency = "CUP",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "CV",
+ PrimaryCurrency = "CVE",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "CW",
+ PrimaryCurrency = "XCG",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "CX",
+ PrimaryCurrency = "AUD",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "CY",
+ PrimaryCurrency = "EUR",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "CZ",
+ PrimaryCurrency = "CZK",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "DE",
+ PrimaryCurrency = "EUR",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "DG",
+ PrimaryCurrency = "USD",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "DJ",
+ PrimaryCurrency = "DJF",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "DK",
+ PrimaryCurrency = "DKK",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "DM",
+ PrimaryCurrency = "XCD",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "DO",
+ PrimaryCurrency = "DOP",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "DZ",
+ PrimaryCurrency = "DZD",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "EA",
+ PrimaryCurrency = "EUR",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "EC",
+ PrimaryCurrency = "USD",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "EE",
+ PrimaryCurrency = "EUR",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "EG",
+ PrimaryCurrency = "EGP",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "EH",
+ PrimaryCurrency = "MAD",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "ER",
+ PrimaryCurrency = "ERN",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "ES",
+ PrimaryCurrency = "EUR",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "ET",
+ PrimaryCurrency = "ETB",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "EU",
+ PrimaryCurrency = "EUR",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "FI",
+ PrimaryCurrency = "EUR",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "FJ",
+ PrimaryCurrency = "FJD",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "FK",
+ PrimaryCurrency = "FKP",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "FM",
+ PrimaryCurrency = "USD",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "FO",
+ PrimaryCurrency = "DKK",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "FR",
+ PrimaryCurrency = "EUR",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "GA",
+ PrimaryCurrency = "XAF",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "GB",
+ PrimaryCurrency = "GBP",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "GD",
+ PrimaryCurrency = "XCD",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "GE",
+ PrimaryCurrency = "GEL",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "GF",
+ PrimaryCurrency = "EUR",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "GG",
+ PrimaryCurrency = "GBP",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "GH",
+ PrimaryCurrency = "GHS",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "GI",
+ PrimaryCurrency = "GIP",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "GL",
+ PrimaryCurrency = "DKK",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "GM",
+ PrimaryCurrency = "GMD",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "GN",
+ PrimaryCurrency = "GNF",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "GP",
+ PrimaryCurrency = "EUR",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "GQ",
+ PrimaryCurrency = "XAF",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "GR",
+ PrimaryCurrency = "EUR",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "GS",
+ PrimaryCurrency = "GBP",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "GT",
+ PrimaryCurrency = "GTQ",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "GU",
+ PrimaryCurrency = "USD",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "GW",
+ PrimaryCurrency = "XOF",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "GY",
+ PrimaryCurrency = "GYD",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "HK",
+ PrimaryCurrency = "HKD",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "HM",
+ PrimaryCurrency = "AUD",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "HN",
+ PrimaryCurrency = "HNL",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "HR",
+ PrimaryCurrency = "EUR",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "HT",
+ PrimaryCurrency = "HTG",
+ SecondaryCurrencies = new []
+ {
+ "USD",
+ }
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "HU",
+ PrimaryCurrency = "HUF",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "IC",
+ PrimaryCurrency = "EUR",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "ID",
+ PrimaryCurrency = "IDR",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "IE",
+ PrimaryCurrency = "EUR",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "IL",
+ PrimaryCurrency = "ILS",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "IM",
+ PrimaryCurrency = "GBP",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "IN",
+ PrimaryCurrency = "INR",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "IO",
+ PrimaryCurrency = "USD",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "IQ",
+ PrimaryCurrency = "IQD",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "IR",
+ PrimaryCurrency = "IRR",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "IS",
+ PrimaryCurrency = "ISK",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "IT",
+ PrimaryCurrency = "EUR",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "JE",
+ PrimaryCurrency = "GBP",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "JM",
+ PrimaryCurrency = "JMD",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "JO",
+ PrimaryCurrency = "JOD",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "JP",
+ PrimaryCurrency = "JPY",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "KE",
+ PrimaryCurrency = "KES",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "KG",
+ PrimaryCurrency = "KGS",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "KH",
+ PrimaryCurrency = "KHR",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "KI",
+ PrimaryCurrency = "AUD",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "KM",
+ PrimaryCurrency = "KMF",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "KN",
+ PrimaryCurrency = "XCD",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "KP",
+ PrimaryCurrency = "KPW",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "KR",
+ PrimaryCurrency = "KRW",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "KW",
+ PrimaryCurrency = "KWD",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "KY",
+ PrimaryCurrency = "KYD",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "KZ",
+ PrimaryCurrency = "KZT",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "LA",
+ PrimaryCurrency = "LAK",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "LB",
+ PrimaryCurrency = "LBP",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "LC",
+ PrimaryCurrency = "XCD",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "LI",
+ PrimaryCurrency = "CHF",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "LK",
+ PrimaryCurrency = "LKR",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "LR",
+ PrimaryCurrency = "LRD",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "LS",
+ PrimaryCurrency = "ZAR",
+ SecondaryCurrencies = new []
+ {
+ "LSL",
+ }
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "LT",
+ PrimaryCurrency = "EUR",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "LU",
+ PrimaryCurrency = "EUR",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "LV",
+ PrimaryCurrency = "EUR",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "LY",
+ PrimaryCurrency = "LYD",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "MA",
+ PrimaryCurrency = "MAD",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "MC",
+ PrimaryCurrency = "EUR",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "MD",
+ PrimaryCurrency = "MDL",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "ME",
+ PrimaryCurrency = "EUR",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "MF",
+ PrimaryCurrency = "EUR",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "MG",
+ PrimaryCurrency = "MGA",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "MH",
+ PrimaryCurrency = "USD",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "MK",
+ PrimaryCurrency = "MKD",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "ML",
+ PrimaryCurrency = "XOF",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "MM",
+ PrimaryCurrency = "MMK",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "MN",
+ PrimaryCurrency = "MNT",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "MO",
+ PrimaryCurrency = "MOP",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "MP",
+ PrimaryCurrency = "USD",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "MQ",
+ PrimaryCurrency = "EUR",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "MR",
+ PrimaryCurrency = "MRU",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "MS",
+ PrimaryCurrency = "XCD",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "MT",
+ PrimaryCurrency = "EUR",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "MU",
+ PrimaryCurrency = "MUR",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "MV",
+ PrimaryCurrency = "MVR",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "MW",
+ PrimaryCurrency = "MWK",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "MX",
+ PrimaryCurrency = "MXN",
+ SecondaryCurrencies = new []
+ {
+ "MXV",
+ }
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "MY",
+ PrimaryCurrency = "MYR",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "MZ",
+ PrimaryCurrency = "MZN",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "NA",
+ PrimaryCurrency = "NAD",
+ SecondaryCurrencies = new []
+ {
+ "ZAR",
+ }
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "NC",
+ PrimaryCurrency = "XPF",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "NE",
+ PrimaryCurrency = "XOF",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "NF",
+ PrimaryCurrency = "AUD",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "NG",
+ PrimaryCurrency = "NGN",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "NI",
+ PrimaryCurrency = "NIO",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "NL",
+ PrimaryCurrency = "EUR",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "NO",
+ PrimaryCurrency = "NOK",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "NP",
+ PrimaryCurrency = "NPR",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "NR",
+ PrimaryCurrency = "AUD",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "NU",
+ PrimaryCurrency = "NZD",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "NZ",
+ PrimaryCurrency = "NZD",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "OM",
+ PrimaryCurrency = "OMR",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "PA",
+ PrimaryCurrency = "PAB",
+ SecondaryCurrencies = new []
+ {
+ "USD",
+ }
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "PE",
+ PrimaryCurrency = "PEN",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "PF",
+ PrimaryCurrency = "XPF",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "PG",
+ PrimaryCurrency = "PGK",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "PH",
+ PrimaryCurrency = "PHP",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "PK",
+ PrimaryCurrency = "PKR",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "PL",
+ PrimaryCurrency = "PLN",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "PM",
+ PrimaryCurrency = "EUR",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "PN",
+ PrimaryCurrency = "NZD",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "PR",
+ PrimaryCurrency = "USD",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "PS",
+ PrimaryCurrency = "ILS",
+ SecondaryCurrencies = new []
+ {
+ "JOD",
+ }
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "PT",
+ PrimaryCurrency = "EUR",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "PW",
+ PrimaryCurrency = "USD",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "PY",
+ PrimaryCurrency = "PYG",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "QA",
+ PrimaryCurrency = "QAR",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "RE",
+ PrimaryCurrency = "EUR",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "RO",
+ PrimaryCurrency = "RON",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "RS",
+ PrimaryCurrency = "RSD",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "RU",
+ PrimaryCurrency = "RUB",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "RW",
+ PrimaryCurrency = "RWF",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "SA",
+ PrimaryCurrency = "SAR",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "SB",
+ PrimaryCurrency = "SBD",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "SC",
+ PrimaryCurrency = "SCR",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "SD",
+ PrimaryCurrency = "SDG",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "SE",
+ PrimaryCurrency = "SEK",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "SG",
+ PrimaryCurrency = "SGD",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "SH",
+ PrimaryCurrency = "SHP",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "SI",
+ PrimaryCurrency = "EUR",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "SJ",
+ PrimaryCurrency = "NOK",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "SK",
+ PrimaryCurrency = "EUR",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "SL",
+ PrimaryCurrency = "SLE",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "SM",
+ PrimaryCurrency = "EUR",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "SN",
+ PrimaryCurrency = "XOF",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "SO",
+ PrimaryCurrency = "SOS",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "SR",
+ PrimaryCurrency = "SRD",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "SS",
+ PrimaryCurrency = "SSP",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "ST",
+ PrimaryCurrency = "STN",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "SV",
+ PrimaryCurrency = "USD",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "SX",
+ PrimaryCurrency = "XCG",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "SY",
+ PrimaryCurrency = "SYP",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "SZ",
+ PrimaryCurrency = "SZL",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "TA",
+ PrimaryCurrency = "GBP",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "TC",
+ PrimaryCurrency = "USD",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "TD",
+ PrimaryCurrency = "XAF",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "TF",
+ PrimaryCurrency = "EUR",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "TG",
+ PrimaryCurrency = "XOF",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "TH",
+ PrimaryCurrency = "THB",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "TJ",
+ PrimaryCurrency = "TJS",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "TK",
+ PrimaryCurrency = "NZD",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "TL",
+ PrimaryCurrency = "USD",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "TM",
+ PrimaryCurrency = "TMT",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "TN",
+ PrimaryCurrency = "TND",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "TO",
+ PrimaryCurrency = "TOP",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "TR",
+ PrimaryCurrency = "TRY",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "TT",
+ PrimaryCurrency = "TTD",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "TV",
+ PrimaryCurrency = "AUD",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "TW",
+ PrimaryCurrency = "TWD",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "TZ",
+ PrimaryCurrency = "TZS",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "UA",
+ PrimaryCurrency = "UAH",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "UG",
+ PrimaryCurrency = "UGX",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "UM",
+ PrimaryCurrency = "USD",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "US",
+ PrimaryCurrency = "USD",
+ SecondaryCurrencies = new []
+ {
+ "USN",
+ }
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "UY",
+ PrimaryCurrency = "UYU",
+ SecondaryCurrencies = new []
+ {
+ "UYI",
+ "UYW",
+ }
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "UZ",
+ PrimaryCurrency = "UZS",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "VA",
+ PrimaryCurrency = "EUR",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "VC",
+ PrimaryCurrency = "XCD",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "VE",
+ PrimaryCurrency = "VES",
+ SecondaryCurrencies = new []
+ {
+ "VED",
+ }
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "VG",
+ PrimaryCurrency = "USD",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "VI",
+ PrimaryCurrency = "USD",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "VN",
+ PrimaryCurrency = "VND",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "VU",
+ PrimaryCurrency = "VUV",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "WF",
+ PrimaryCurrency = "XPF",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "WS",
+ PrimaryCurrency = "WST",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "XK",
+ PrimaryCurrency = "EUR",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "YE",
+ PrimaryCurrency = "YER",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "YT",
+ PrimaryCurrency = "EUR",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "ZA",
+ PrimaryCurrency = "ZAR",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "ZM",
+ PrimaryCurrency = "ZMW",
+ SecondaryCurrencies = []
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "ZW",
+ PrimaryCurrency = "ZWG",
+ SecondaryCurrencies = new []
+ {
+ "USD",
+ }
+ },
+ new CountryCurrencyInfoRow()
+ {
+ CountryCode = "ZZ",
+ PrimaryCurrency = "XAD",
+ SecondaryCurrencies = new []
+ {
+ "XAG",
+ "XAU",
+ "XBA",
+ "XBB",
+ "XBC",
+ "XBD",
+ "XDR",
+ "XPD",
+ "XPT",
+ "XSU",
+ "XTS",
+ "XUA",
+ "XXX",
+ }
+ },
+ });
+ private static readonly ImmutableArray Data;
+ private static readonly Dictionary Index;
+
+ ///
+ /// Attempts to get currency information for a country.
+ ///
+ public static bool TryGet(CountryCode.TwoLetterCode country,out CountryCurrencyInfo? info) => Index.TryGetValue(country, out info);
+
+ static CountryCurrencyMap()
+ {
+ var dataBuilder = ImmutableArray.CreateBuilder(RawData.Length);
+ var index = new Dictionary(RawData.Length);
+
+ foreach (var row in RawData.Where(r => Enum.TryParse(r.CountryCode, out CountryCode.TwoLetterCode _)))
+ {
+ if (!Enum.TryParse(row.PrimaryCurrency, out CurrencyCode primary))
+ continue;
+ Enum.TryParse(row.CountryCode, out CountryCode.TwoLetterCode country);
+
+ var info = new CountryCurrencyInfo
+ {
+ CountryCode = country,
+ PrimaryCurrency = primary,
+ SecondaryCurrencies = FilterSecondary(row.SecondaryCurrencies)
+ };
+
+ dataBuilder.Add(info);
+ index[country] = info;
+ }
+
+ Data = dataBuilder.ToImmutable();
+ Index = index;
+ }
+
+ private static IReadOnlyList FilterSecondary(IReadOnlyList values)
+ {
+ if (values.Count == 0)
+ return Array.Empty();
+
+ var buffer = new CurrencyCode[values.Count];
+ var count = 0;
+
+ foreach (var value in values)
+ {
+ if (TryParseCurrency(value, out CurrencyCode code))
+ buffer[count++] = code;
+ }
+
+ if (count == 0)
+ return Array.Empty();
+
+ if (count == buffer.Length)
+ return buffer;
+
+ var result = new CurrencyCode[count];
+ Array.Copy(buffer, result, count);
+ return result;
+ }
+
+ private static bool TryParseCurrency(string value, out CurrencyCode code) => Enum.TryParse(value, out code);
+ }
+}
diff --git a/src/packages/HawkN.Iso.Countries.Currencies/Extensions/CountryCurrencyExtensions.cs b/src/packages/HawkN.Iso.Countries.Currencies/Extensions/CountryCurrencyExtensions.cs
new file mode 100644
index 0000000..a0c546e
--- /dev/null
+++ b/src/packages/HawkN.Iso.Countries.Currencies/Extensions/CountryCurrencyExtensions.cs
@@ -0,0 +1,67 @@
+using System.Collections.Immutable;
+using HawkN.Iso.Currencies;
+namespace HawkN.Iso.Countries.Currencies.Extensions;
+
+///
+/// Provides extension methods for working with country currencies via .
+/// Allows retrieving the primary, secondary, or all currencies for a given country.
+///
+public static class CountryCurrencyExtensions
+{
+ ///
+ /// Gets the primary currency of the specified country.
+ ///
+ /// The two-letter country code.
+ /// The primary currency of the country, or null if the country is not found.
+ public static CurrencyCode? GetPrimaryCurrency(this CountryCode.TwoLetterCode country)
+ {
+ return CountryCurrencyMap.TryGet(country, out var info) ? info?.PrimaryCurrency : null;
+ }
+
+ ///
+ /// Gets the secondary currencies of the specified country.
+ ///
+ /// The two-letter country code.
+ /// A read-only list of secondary currencies, or an empty array if the country is not found.
+ public static IReadOnlyList GetSecondaryCurrencies(this CountryCode.TwoLetterCode country)
+ {
+ return CountryCurrencyMap.TryGet(country, out var info) ? info!.SecondaryCurrencies : ImmutableArray.Empty;
+ }
+
+ ///
+ /// Gets all currencies (primary and secondary) of the specified country.
+ ///
+ /// The two-letter country code.
+ /// An enumeration of all currencies of the country. Empty if the country is not found.
+ public static IEnumerable GetAllCurrencies(this CountryCode.TwoLetterCode country)
+ {
+ if (!CountryCurrencyMap.TryGet(country, out var info))
+ yield break;
+
+ yield return info!.PrimaryCurrency;
+
+ foreach (var c in info.SecondaryCurrencies)
+ yield return c;
+ }
+
+ ///
+ /// Checks if the given country uses the specified currency
+ /// (either as primary or secondary currency).
+ /// Optimized with HashSet for fast lookups in large secondary currency lists.
+ ///
+ /// The two-letter country code.
+ /// The currency code to check.
+ /// true if the country uses the currency; otherwise, false.
+ public static bool IsCurrencyUsedByCountry(this CountryCode.TwoLetterCode country, CurrencyCode currency)
+ {
+ if (!CountryCurrencyMap.TryGet(country, out var info))
+ return false;
+
+ if (info?.PrimaryCurrency == currency)
+ return true;
+
+ if (info?.SecondaryCurrencies.Count <= 0) return false;
+ var set = new HashSet(info!.SecondaryCurrencies);
+ return set.Contains(currency);
+ }
+}
\ No newline at end of file
diff --git a/src/packages/HawkN.Iso.Countries.Currencies/HawkN.Iso.Countries.Currencies.csproj b/src/packages/HawkN.Iso.Countries.Currencies/HawkN.Iso.Countries.Currencies.csproj
new file mode 100644
index 0000000..d2ca36c
--- /dev/null
+++ b/src/packages/HawkN.Iso.Countries.Currencies/HawkN.Iso.Countries.Currencies.csproj
@@ -0,0 +1,71 @@
+
+
+ net8.0
+ enable
+ enable
+ 8.0.0.0
+ 8.0.0.0
+ Library
+ Copyright © 2026 Nikolay Selyutin (HawkN113)
+ true
+ false
+ true
+ false
+ true
+ false
+ false
+ false
+ true
+ 8.0.0
+ false
+ $(GenerateDataFiles)
+ $(MSBuildProjectDirectory)\CountryCurrencyMap.cs
+
+
+ embedded
+ bin\Debug\HawkN.Iso.Countries.Currencies.xml
+ ;NU1605
+
+
+ embedded
+ bin\Release\HawkN.Iso.Countries.Currencies.xml
+ ;NU1605
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Always
+
+
+ Always
+
+
+
+
+
+
+
+ <_GeneratedFiles Include="$(CompilerGeneratedFilesOutputPath)\**\*.g.cs" />
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/packages/HawkN.Iso.Countries.Currencies/HawkN.Iso.Countries.Currencies.nuspec b/src/packages/HawkN.Iso.Countries.Currencies/HawkN.Iso.Countries.Currencies.nuspec
new file mode 100644
index 0000000..7ffa87d
--- /dev/null
+++ b/src/packages/HawkN.Iso.Countries.Currencies/HawkN.Iso.Countries.Currencies.nuspec
@@ -0,0 +1,40 @@
+
+
+
+ HawkN.Iso.Countries.Currencies
+ 8.0.0
+ HawkN.Iso.Countries.Currencies
+ Nikolay Selyutin (HawkN113)
+ false
+ Provides mapping between countries and currencies (primary and secondary). Includes extension methods to query primary, secondary, or all currencies and check usage.
+ ISO 4217 / ISO 3166 currency-country mapping library with strongly typed codes and utility extensions
+ iso4217 iso3166 currency currencies countries finance money money-codes dotnet8 dotnet-core dotnet-library csharp currency-code nuget-package
+
+ https://github.com/HawkN113/HawkN.Iso.Countries
+ MIT
+ content\HawkN.Iso.Countries.ico.png
+ content\README.md
+ en-GB
+
+ - Added support for .NET 8.0
+ - Initial release with Country - Currency mapping.
+ - Lightweight & dependency-free
+
+ Copyright © 2026 Nikolay Selyutin (HawkN113)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/packages/HawkN.Iso.Countries.Currencies/Models/CountryCurrencyInfo.cs b/src/packages/HawkN.Iso.Countries.Currencies/Models/CountryCurrencyInfo.cs
new file mode 100644
index 0000000..6fd8b5b
--- /dev/null
+++ b/src/packages/HawkN.Iso.Countries.Currencies/Models/CountryCurrencyInfo.cs
@@ -0,0 +1,9 @@
+using HawkN.Iso.Currencies;
+namespace HawkN.Iso.Countries.Currencies.Models;
+
+internal sealed class CountryCurrencyInfo
+{
+ public required CountryCode.TwoLetterCode CountryCode { get; init; }
+ public required CurrencyCode PrimaryCurrency { get; init; }
+ public required IReadOnlyList SecondaryCurrencies { get; init; } = [];
+}
\ No newline at end of file
diff --git a/src/packages/HawkN.Iso.Countries.Currencies/Models/CountryCurrencyInfoRow.cs b/src/packages/HawkN.Iso.Countries.Currencies/Models/CountryCurrencyInfoRow.cs
new file mode 100644
index 0000000..bc0b80f
--- /dev/null
+++ b/src/packages/HawkN.Iso.Countries.Currencies/Models/CountryCurrencyInfoRow.cs
@@ -0,0 +1,8 @@
+namespace HawkN.Iso.Countries.Currencies.Models;
+
+internal sealed class CountryCurrencyInfoRow
+{
+ public required string CountryCode { get; init; }
+ public required string PrimaryCurrency { get; init; }
+ public IReadOnlyList SecondaryCurrencies { get; init; } = [];
+}
\ No newline at end of file
diff --git a/src/packages/HawkN.Iso.Countries.Currencies/Package/Content/DATA-LICENSE b/src/packages/HawkN.Iso.Countries.Currencies/Package/Content/DATA-LICENSE
new file mode 100644
index 0000000..0efef54
--- /dev/null
+++ b/src/packages/HawkN.Iso.Countries.Currencies/Package/Content/DATA-LICENSE
@@ -0,0 +1,29 @@
+# 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
\ No newline at end of file
diff --git a/src/packages/HawkN.Iso.Countries.Currencies/Package/Content/HawkN.Iso.Countries.ico.png b/src/packages/HawkN.Iso.Countries.Currencies/Package/Content/HawkN.Iso.Countries.ico.png
new file mode 100644
index 0000000..93eaf0b
Binary files /dev/null and b/src/packages/HawkN.Iso.Countries.Currencies/Package/Content/HawkN.Iso.Countries.ico.png differ
diff --git a/src/packages/HawkN.Iso.Countries.Currencies/Package/Content/NOTICE b/src/packages/HawkN.Iso.Countries.Currencies/Package/Content/NOTICE
new file mode 100644
index 0000000..4739920
--- /dev/null
+++ b/src/packages/HawkN.Iso.Countries.Currencies/Package/Content/NOTICE
@@ -0,0 +1,22 @@
+NOTICE
+
+HawkN.Iso.Currencies
+Copyright © 2026 Nikolay Selyutin (HawkN113)
+
+This product includes software developed by the HawkN.Iso.Countries.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
+
+---
+
+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/src/packages/HawkN.Iso.Countries.Currencies/Package/Content/README.md b/src/packages/HawkN.Iso.Countries.Currencies/Package/Content/README.md
new file mode 100644
index 0000000..e5665d6
--- /dev/null
+++ b/src/packages/HawkN.Iso.Countries.Currencies/Package/Content/README.md
@@ -0,0 +1,89 @@
+# HawkN.Iso.Countries.Currencies
+
+**HawkN.Iso.Countries.Currencies** provides ISO-based mapping of primary and secondary currencies for countries.
+It allows you to quickly retrieve the main currency, secondary currencies, all currencies, or check if a currency is used by a specific country.
+
+## Features
+- **Primary and Secondary Currencies** – Get the main currency or all secondary currencies of a country.
+- **Fast Lookups** – O(1) lookups using pre-indexed dictionaries and HashSet for secondary currencies.
+- **Currency Validation** – Check if a country uses a given currency.
+- **Seamless Integration** – Built to work with `HawkN.Iso.Countries` types (`CountryCode.TwoLetterCode`).
+- **Lightweight & Dependency-Free** – Compatible with .NET 8 and above.
+
+---
+
+## Getting Started
+
+### Install via NuGet
+
+```bash
+dotnet add package HawkN.Iso.Countries.Currencies
+````
+#### References
+- [HawkN.Iso.Countries](https://www.nuget.org/packages/HawkN.Iso.Countries) – Provides country codes and models.
+- [HawkN.Iso.Currencies](https://www.nuget.org/packages/HawkN.Iso.Currencies) – Provides currency codes and enums.
+
+### Required Namespaces
+```csharp
+using HawkN.Iso.Countries;
+using HawkN.Iso.Currencies;
+using HawkN.Iso.Countries.Currencies.Extensions;
+```
+---
+
+### Usage Example
+
+#### Get Main Currency
+```csharp
+CurrencyCode.TwoLetterCode? mainCurrency = CountryCode.TwoLetterCode.US.GetMainCurrency();
+Console.WriteLine($"Primary currency of US: {mainCurrency}"); // USD
+```
+
+#### Get Secondary Currencies
+```csharp
+var secondaryCurrencies = CountryCode.TwoLetterCode.BO.GetSecondaryCurrencies();
+Console.WriteLine($"Secondary currencies of BO: {string.Join(", ", secondaryCurrencies)}"); // BOV
+```
+
+### Get all Currencies for specific country
+```csharp
+var allCurrencies = CountryCode.BO.GetAllCurrencies();
+Console.WriteLine($"All currencies of BO: {string.Join(", ", allCurrencies)}"); // BOB, BOV
+```
+
+#### Validation
+
+Check if Currency is Used by Country
+```csharp
+bool isUsed = CountryCode.BO.IsCurrencyUsedByCountry(CurrencyCode.BOB); // True
+bool isUsdUsed = CountryCode.BO.IsCurrencyUsedByCountry(CurrencyCode.USD); // False
+````
+
+---
+
+## 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).
+
+- Country data (`ISO 3166-1` and `UN M49` numeric codes) is sourced from the [UN Statistics Division – M49 standard](https://unstats.un.org/unsd/methodology/m49/overview)
+
+
+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
+- [ISO 3166 Standard](https://www.iso.org/iso-3166-country-codes.html)
+- [ISO 4217 Standard](https://www.iso.org/iso-4217-currency-codes.html)
+- [UN Statistics Division – M49 standard](https://unstats.un.org/unsd/methodology/m49/overview)
+- [GitHub Repository](https://github.com/HawkN113/HawkN.Iso.Countries)
diff --git a/src/packages/HawkN.Iso.Countries.Generators/Constants.cs b/src/packages/HawkN.Iso.Countries.Generators/Constants.cs
index bdfb070..168cff4 100644
--- a/src/packages/HawkN.Iso.Countries.Generators/Constants.cs
+++ b/src/packages/HawkN.Iso.Countries.Generators/Constants.cs
@@ -10,4 +10,12 @@ internal static class Constants
[
"Source URL: https://unstats.un.org/unsd/methodology/m49/overview"
];
+ public static readonly string[] SystemNamespaces = [
+ "System.Collections.Generic",
+ "System.Collections.Immutable"
+ ];
+ public static readonly string[] ReferencesNamespaces =
+ [
+ "HawkN.Iso.Countries.Models"
+ ];
}
\ No newline at end of file
diff --git a/src/packages/HawkN.Iso.Countries.Generators/Content/iso_3166-1.json b/src/packages/HawkN.Iso.Countries.Generators/Content/iso_3166-1.json
deleted file mode 100644
index ee48a43..0000000
--- a/src/packages/HawkN.Iso.Countries.Generators/Content/iso_3166-1.json
+++ /dev/null
@@ -1,1931 +0,0 @@
-{
- "3166-1": [
- {
- "alpha_2": "AW",
- "alpha_3": "ABW",
- "flag": "🇦🇼",
- "name": "Aruba",
- "numeric": "533"
- },
- {
- "alpha_2": "AF",
- "alpha_3": "AFG",
- "flag": "🇦🇫",
- "name": "Afghanistan",
- "numeric": "004",
- "official_name": "Islamic Republic of Afghanistan"
- },
- {
- "alpha_2": "AO",
- "alpha_3": "AGO",
- "flag": "🇦🇴",
- "name": "Angola",
- "numeric": "024",
- "official_name": "Republic of Angola"
- },
- {
- "alpha_2": "AI",
- "alpha_3": "AIA",
- "flag": "🇦🇮",
- "name": "Anguilla",
- "numeric": "660"
- },
- {
- "alpha_2": "AX",
- "alpha_3": "ALA",
- "flag": "🇦🇽",
- "name": "Åland Islands",
- "numeric": "248"
- },
- {
- "alpha_2": "AL",
- "alpha_3": "ALB",
- "flag": "🇦🇱",
- "name": "Albania",
- "numeric": "008",
- "official_name": "Republic of Albania"
- },
- {
- "alpha_2": "AD",
- "alpha_3": "AND",
- "flag": "🇦🇩",
- "name": "Andorra",
- "numeric": "020",
- "official_name": "Principality of Andorra"
- },
- {
- "alpha_2": "AE",
- "alpha_3": "ARE",
- "flag": "🇦🇪",
- "name": "United Arab Emirates",
- "numeric": "784"
- },
- {
- "alpha_2": "AR",
- "alpha_3": "ARG",
- "flag": "🇦🇷",
- "name": "Argentina",
- "numeric": "032",
- "official_name": "Argentine Republic"
- },
- {
- "alpha_2": "AM",
- "alpha_3": "ARM",
- "flag": "🇦🇲",
- "name": "Armenia",
- "numeric": "051",
- "official_name": "Republic of Armenia"
- },
- {
- "alpha_2": "AS",
- "alpha_3": "ASM",
- "flag": "🇦🇸",
- "name": "American Samoa",
- "numeric": "016"
- },
- {
- "alpha_2": "AQ",
- "alpha_3": "ATA",
- "flag": "🇦🇶",
- "name": "Antarctica",
- "numeric": "010"
- },
- {
- "alpha_2": "TF",
- "alpha_3": "ATF",
- "flag": "🇹🇫",
- "name": "French Southern Territories",
- "numeric": "260"
- },
- {
- "alpha_2": "AG",
- "alpha_3": "ATG",
- "flag": "🇦🇬",
- "name": "Antigua and Barbuda",
- "numeric": "028"
- },
- {
- "alpha_2": "AU",
- "alpha_3": "AUS",
- "flag": "🇦🇺",
- "name": "Australia",
- "numeric": "036"
- },
- {
- "alpha_2": "AT",
- "alpha_3": "AUT",
- "flag": "🇦🇹",
- "name": "Austria",
- "numeric": "040",
- "official_name": "Republic of Austria"
- },
- {
- "alpha_2": "AZ",
- "alpha_3": "AZE",
- "flag": "🇦🇿",
- "name": "Azerbaijan",
- "numeric": "031",
- "official_name": "Republic of Azerbaijan"
- },
- {
- "alpha_2": "BI",
- "alpha_3": "BDI",
- "flag": "🇧🇮",
- "name": "Burundi",
- "numeric": "108",
- "official_name": "Republic of Burundi"
- },
- {
- "alpha_2": "BE",
- "alpha_3": "BEL",
- "flag": "🇧🇪",
- "name": "Belgium",
- "numeric": "056",
- "official_name": "Kingdom of Belgium"
- },
- {
- "alpha_2": "BJ",
- "alpha_3": "BEN",
- "flag": "🇧🇯",
- "name": "Benin",
- "numeric": "204",
- "official_name": "Republic of Benin"
- },
- {
- "alpha_2": "BQ",
- "alpha_3": "BES",
- "flag": "🇧🇶",
- "name": "Bonaire, Sint Eustatius and Saba",
- "numeric": "535",
- "official_name": "Bonaire, Sint Eustatius and Saba"
- },
- {
- "alpha_2": "BF",
- "alpha_3": "BFA",
- "flag": "🇧🇫",
- "name": "Burkina Faso",
- "numeric": "854"
- },
- {
- "alpha_2": "BD",
- "alpha_3": "BGD",
- "flag": "🇧🇩",
- "name": "Bangladesh",
- "numeric": "050",
- "official_name": "People's Republic of Bangladesh"
- },
- {
- "alpha_2": "BG",
- "alpha_3": "BGR",
- "flag": "🇧🇬",
- "name": "Bulgaria",
- "numeric": "100",
- "official_name": "Republic of Bulgaria"
- },
- {
- "alpha_2": "BH",
- "alpha_3": "BHR",
- "flag": "🇧🇭",
- "name": "Bahrain",
- "numeric": "048",
- "official_name": "Kingdom of Bahrain"
- },
- {
- "alpha_2": "BS",
- "alpha_3": "BHS",
- "flag": "🇧🇸",
- "name": "Bahamas",
- "numeric": "044",
- "official_name": "Commonwealth of the Bahamas"
- },
- {
- "alpha_2": "BA",
- "alpha_3": "BIH",
- "flag": "🇧🇦",
- "name": "Bosnia and Herzegovina",
- "numeric": "070",
- "official_name": "Republic of Bosnia and Herzegovina"
- },
- {
- "alpha_2": "BL",
- "alpha_3": "BLM",
- "flag": "🇧🇱",
- "name": "Saint Barthélemy",
- "numeric": "652"
- },
- {
- "alpha_2": "BY",
- "alpha_3": "BLR",
- "flag": "🇧🇾",
- "name": "Belarus",
- "numeric": "112",
- "official_name": "Republic of Belarus"
- },
- {
- "alpha_2": "BZ",
- "alpha_3": "BLZ",
- "flag": "🇧🇿",
- "name": "Belize",
- "numeric": "084"
- },
- {
- "alpha_2": "BM",
- "alpha_3": "BMU",
- "flag": "🇧🇲",
- "name": "Bermuda",
- "numeric": "060"
- },
- {
- "alpha_2": "BO",
- "alpha_3": "BOL",
- "common_name": "Bolivia",
- "flag": "🇧🇴",
- "name": "Bolivia, Plurinational State of",
- "numeric": "068",
- "official_name": "Plurinational State of Bolivia"
- },
- {
- "alpha_2": "BR",
- "alpha_3": "BRA",
- "flag": "🇧🇷",
- "name": "Brazil",
- "numeric": "076",
- "official_name": "Federative Republic of Brazil"
- },
- {
- "alpha_2": "BB",
- "alpha_3": "BRB",
- "flag": "🇧🇧",
- "name": "Barbados",
- "numeric": "052"
- },
- {
- "alpha_2": "BN",
- "alpha_3": "BRN",
- "flag": "🇧🇳",
- "name": "Brunei Darussalam",
- "numeric": "096"
- },
- {
- "alpha_2": "BT",
- "alpha_3": "BTN",
- "flag": "🇧🇹",
- "name": "Bhutan",
- "numeric": "064",
- "official_name": "Kingdom of Bhutan"
- },
- {
- "alpha_2": "BV",
- "alpha_3": "BVT",
- "flag": "🇧🇻",
- "name": "Bouvet Island",
- "numeric": "074"
- },
- {
- "alpha_2": "BW",
- "alpha_3": "BWA",
- "flag": "🇧🇼",
- "name": "Botswana",
- "numeric": "072",
- "official_name": "Republic of Botswana"
- },
- {
- "alpha_2": "CF",
- "alpha_3": "CAF",
- "flag": "🇨🇫",
- "name": "Central African Republic",
- "numeric": "140"
- },
- {
- "alpha_2": "CA",
- "alpha_3": "CAN",
- "flag": "🇨🇦",
- "name": "Canada",
- "numeric": "124"
- },
- {
- "alpha_2": "CC",
- "alpha_3": "CCK",
- "flag": "🇨🇨",
- "name": "Cocos (Keeling) Islands",
- "numeric": "166"
- },
- {
- "alpha_2": "CH",
- "alpha_3": "CHE",
- "flag": "🇨🇭",
- "name": "Switzerland",
- "numeric": "756",
- "official_name": "Swiss Confederation"
- },
- {
- "alpha_2": "CL",
- "alpha_3": "CHL",
- "flag": "🇨🇱",
- "name": "Chile",
- "numeric": "152",
- "official_name": "Republic of Chile"
- },
- {
- "alpha_2": "CN",
- "alpha_3": "CHN",
- "flag": "🇨🇳",
- "name": "China",
- "numeric": "156",
- "official_name": "People's Republic of China"
- },
- {
- "alpha_2": "CI",
- "alpha_3": "CIV",
- "flag": "🇨🇮",
- "name": "Côte d'Ivoire",
- "numeric": "384",
- "official_name": "Republic of Côte d'Ivoire"
- },
- {
- "alpha_2": "CM",
- "alpha_3": "CMR",
- "flag": "🇨🇲",
- "name": "Cameroon",
- "numeric": "120",
- "official_name": "Republic of Cameroon"
- },
- {
- "alpha_2": "CD",
- "alpha_3": "COD",
- "flag": "🇨🇩",
- "name": "Congo, The Democratic Republic of the",
- "numeric": "180"
- },
- {
- "alpha_2": "CG",
- "alpha_3": "COG",
- "flag": "🇨🇬",
- "name": "Congo",
- "numeric": "178",
- "official_name": "Republic of the Congo"
- },
- {
- "alpha_2": "CK",
- "alpha_3": "COK",
- "flag": "🇨🇰",
- "name": "Cook Islands",
- "numeric": "184"
- },
- {
- "alpha_2": "CO",
- "alpha_3": "COL",
- "flag": "🇨🇴",
- "name": "Colombia",
- "numeric": "170",
- "official_name": "Republic of Colombia"
- },
- {
- "alpha_2": "KM",
- "alpha_3": "COM",
- "flag": "🇰🇲",
- "name": "Comoros",
- "numeric": "174",
- "official_name": "Union of the Comoros"
- },
- {
- "alpha_2": "CV",
- "alpha_3": "CPV",
- "flag": "🇨🇻",
- "name": "Cabo Verde",
- "numeric": "132",
- "official_name": "Republic of Cabo Verde"
- },
- {
- "alpha_2": "CR",
- "alpha_3": "CRI",
- "flag": "🇨🇷",
- "name": "Costa Rica",
- "numeric": "188",
- "official_name": "Republic of Costa Rica"
- },
- {
- "alpha_2": "CU",
- "alpha_3": "CUB",
- "flag": "🇨🇺",
- "name": "Cuba",
- "numeric": "192",
- "official_name": "Republic of Cuba"
- },
- {
- "alpha_2": "CW",
- "alpha_3": "CUW",
- "flag": "🇨🇼",
- "name": "Curaçao",
- "numeric": "531",
- "official_name": "Curaçao"
- },
- {
- "alpha_2": "CX",
- "alpha_3": "CXR",
- "flag": "🇨🇽",
- "name": "Christmas Island",
- "numeric": "162"
- },
- {
- "alpha_2": "KY",
- "alpha_3": "CYM",
- "flag": "🇰🇾",
- "name": "Cayman Islands",
- "numeric": "136"
- },
- {
- "alpha_2": "CY",
- "alpha_3": "CYP",
- "flag": "🇨🇾",
- "name": "Cyprus",
- "numeric": "196",
- "official_name": "Republic of Cyprus"
- },
- {
- "alpha_2": "CZ",
- "alpha_3": "CZE",
- "flag": "🇨🇿",
- "name": "Czechia",
- "numeric": "203",
- "official_name": "Czech Republic"
- },
- {
- "alpha_2": "DE",
- "alpha_3": "DEU",
- "flag": "🇩🇪",
- "name": "Germany",
- "numeric": "276",
- "official_name": "Federal Republic of Germany"
- },
- {
- "alpha_2": "DJ",
- "alpha_3": "DJI",
- "flag": "🇩🇯",
- "name": "Djibouti",
- "numeric": "262",
- "official_name": "Republic of Djibouti"
- },
- {
- "alpha_2": "DM",
- "alpha_3": "DMA",
- "flag": "🇩🇲",
- "name": "Dominica",
- "numeric": "212",
- "official_name": "Commonwealth of Dominica"
- },
- {
- "alpha_2": "DK",
- "alpha_3": "DNK",
- "flag": "🇩🇰",
- "name": "Denmark",
- "numeric": "208",
- "official_name": "Kingdom of Denmark"
- },
- {
- "alpha_2": "DO",
- "alpha_3": "DOM",
- "flag": "🇩🇴",
- "name": "Dominican Republic",
- "numeric": "214"
- },
- {
- "alpha_2": "DZ",
- "alpha_3": "DZA",
- "flag": "🇩🇿",
- "name": "Algeria",
- "numeric": "012",
- "official_name": "People's Democratic Republic of Algeria"
- },
- {
- "alpha_2": "EC",
- "alpha_3": "ECU",
- "flag": "🇪🇨",
- "name": "Ecuador",
- "numeric": "218",
- "official_name": "Republic of Ecuador"
- },
- {
- "alpha_2": "EG",
- "alpha_3": "EGY",
- "flag": "🇪🇬",
- "name": "Egypt",
- "numeric": "818",
- "official_name": "Arab Republic of Egypt"
- },
- {
- "alpha_2": "ER",
- "alpha_3": "ERI",
- "flag": "🇪🇷",
- "name": "Eritrea",
- "numeric": "232",
- "official_name": "the State of Eritrea"
- },
- {
- "alpha_2": "EH",
- "alpha_3": "ESH",
- "flag": "🇪🇭",
- "name": "Western Sahara",
- "numeric": "732"
- },
- {
- "alpha_2": "ES",
- "alpha_3": "ESP",
- "flag": "🇪🇸",
- "name": "Spain",
- "numeric": "724",
- "official_name": "Kingdom of Spain"
- },
- {
- "alpha_2": "EE",
- "alpha_3": "EST",
- "flag": "🇪🇪",
- "name": "Estonia",
- "numeric": "233",
- "official_name": "Republic of Estonia"
- },
- {
- "alpha_2": "ET",
- "alpha_3": "ETH",
- "flag": "🇪🇹",
- "name": "Ethiopia",
- "numeric": "231",
- "official_name": "Federal Democratic Republic of Ethiopia"
- },
- {
- "alpha_2": "FI",
- "alpha_3": "FIN",
- "flag": "🇫🇮",
- "name": "Finland",
- "numeric": "246",
- "official_name": "Republic of Finland"
- },
- {
- "alpha_2": "FJ",
- "alpha_3": "FJI",
- "flag": "🇫🇯",
- "name": "Fiji",
- "numeric": "242",
- "official_name": "Republic of Fiji"
- },
- {
- "alpha_2": "FK",
- "alpha_3": "FLK",
- "flag": "🇫🇰",
- "name": "Falkland Islands (Malvinas)",
- "numeric": "238"
- },
- {
- "alpha_2": "FR",
- "alpha_3": "FRA",
- "flag": "🇫🇷",
- "name": "France",
- "numeric": "250",
- "official_name": "French Republic"
- },
- {
- "alpha_2": "FO",
- "alpha_3": "FRO",
- "flag": "🇫🇴",
- "name": "Faroe Islands",
- "numeric": "234"
- },
- {
- "alpha_2": "FM",
- "alpha_3": "FSM",
- "flag": "🇫🇲",
- "name": "Micronesia, Federated States of",
- "numeric": "583",
- "official_name": "Federated States of Micronesia"
- },
- {
- "alpha_2": "GA",
- "alpha_3": "GAB",
- "flag": "🇬🇦",
- "name": "Gabon",
- "numeric": "266",
- "official_name": "Gabonese Republic"
- },
- {
- "alpha_2": "GB",
- "alpha_3": "GBR",
- "flag": "🇬🇧",
- "name": "United Kingdom",
- "numeric": "826",
- "official_name": "United Kingdom of Great Britain and Northern Ireland"
- },
- {
- "alpha_2": "GE",
- "alpha_3": "GEO",
- "flag": "🇬🇪",
- "name": "Georgia",
- "numeric": "268"
- },
- {
- "alpha_2": "GG",
- "alpha_3": "GGY",
- "flag": "🇬🇬",
- "name": "Guernsey",
- "numeric": "831"
- },
- {
- "alpha_2": "GH",
- "alpha_3": "GHA",
- "flag": "🇬🇭",
- "name": "Ghana",
- "numeric": "288",
- "official_name": "Republic of Ghana"
- },
- {
- "alpha_2": "GI",
- "alpha_3": "GIB",
- "flag": "🇬🇮",
- "name": "Gibraltar",
- "numeric": "292"
- },
- {
- "alpha_2": "GN",
- "alpha_3": "GIN",
- "flag": "🇬🇳",
- "name": "Guinea",
- "numeric": "324",
- "official_name": "Republic of Guinea"
- },
- {
- "alpha_2": "GP",
- "alpha_3": "GLP",
- "flag": "🇬🇵",
- "name": "Guadeloupe",
- "numeric": "312"
- },
- {
- "alpha_2": "GM",
- "alpha_3": "GMB",
- "flag": "🇬🇲",
- "name": "Gambia",
- "numeric": "270",
- "official_name": "Republic of the Gambia"
- },
- {
- "alpha_2": "GW",
- "alpha_3": "GNB",
- "flag": "🇬🇼",
- "name": "Guinea-Bissau",
- "numeric": "624",
- "official_name": "Republic of Guinea-Bissau"
- },
- {
- "alpha_2": "GQ",
- "alpha_3": "GNQ",
- "flag": "🇬🇶",
- "name": "Equatorial Guinea",
- "numeric": "226",
- "official_name": "Republic of Equatorial Guinea"
- },
- {
- "alpha_2": "GR",
- "alpha_3": "GRC",
- "flag": "🇬🇷",
- "name": "Greece",
- "numeric": "300",
- "official_name": "Hellenic Republic"
- },
- {
- "alpha_2": "GD",
- "alpha_3": "GRD",
- "flag": "🇬🇩",
- "name": "Grenada",
- "numeric": "308"
- },
- {
- "alpha_2": "GL",
- "alpha_3": "GRL",
- "flag": "🇬🇱",
- "name": "Greenland",
- "numeric": "304"
- },
- {
- "alpha_2": "GT",
- "alpha_3": "GTM",
- "flag": "🇬🇹",
- "name": "Guatemala",
- "numeric": "320",
- "official_name": "Republic of Guatemala"
- },
- {
- "alpha_2": "GF",
- "alpha_3": "GUF",
- "flag": "🇬🇫",
- "name": "French Guiana",
- "numeric": "254"
- },
- {
- "alpha_2": "GU",
- "alpha_3": "GUM",
- "flag": "🇬🇺",
- "name": "Guam",
- "numeric": "316"
- },
- {
- "alpha_2": "GY",
- "alpha_3": "GUY",
- "flag": "🇬🇾",
- "name": "Guyana",
- "numeric": "328",
- "official_name": "Republic of Guyana"
- },
- {
- "alpha_2": "HK",
- "alpha_3": "HKG",
- "flag": "🇭🇰",
- "name": "Hong Kong",
- "numeric": "344",
- "official_name": "Hong Kong Special Administrative Region of China"
- },
- {
- "alpha_2": "HM",
- "alpha_3": "HMD",
- "flag": "🇭🇲",
- "name": "Heard Island and McDonald Islands",
- "numeric": "334"
- },
- {
- "alpha_2": "HN",
- "alpha_3": "HND",
- "flag": "🇭🇳",
- "name": "Honduras",
- "numeric": "340",
- "official_name": "Republic of Honduras"
- },
- {
- "alpha_2": "HR",
- "alpha_3": "HRV",
- "flag": "🇭🇷",
- "name": "Croatia",
- "numeric": "191",
- "official_name": "Republic of Croatia"
- },
- {
- "alpha_2": "HT",
- "alpha_3": "HTI",
- "flag": "🇭🇹",
- "name": "Haiti",
- "numeric": "332",
- "official_name": "Republic of Haiti"
- },
- {
- "alpha_2": "HU",
- "alpha_3": "HUN",
- "flag": "🇭🇺",
- "name": "Hungary",
- "numeric": "348",
- "official_name": "Hungary"
- },
- {
- "alpha_2": "ID",
- "alpha_3": "IDN",
- "flag": "🇮🇩",
- "name": "Indonesia",
- "numeric": "360",
- "official_name": "Republic of Indonesia"
- },
- {
- "alpha_2": "IM",
- "alpha_3": "IMN",
- "flag": "🇮🇲",
- "name": "Isle of Man",
- "numeric": "833"
- },
- {
- "alpha_2": "IN",
- "alpha_3": "IND",
- "flag": "🇮🇳",
- "name": "India",
- "numeric": "356",
- "official_name": "Republic of India"
- },
- {
- "alpha_2": "IO",
- "alpha_3": "IOT",
- "flag": "🇮🇴",
- "name": "British Indian Ocean Territory",
- "numeric": "086"
- },
- {
- "alpha_2": "IE",
- "alpha_3": "IRL",
- "flag": "🇮🇪",
- "name": "Ireland",
- "numeric": "372"
- },
- {
- "alpha_2": "IR",
- "alpha_3": "IRN",
- "common_name": "Iran",
- "flag": "🇮🇷",
- "name": "Iran, Islamic Republic of",
- "numeric": "364",
- "official_name": "Islamic Republic of Iran"
- },
- {
- "alpha_2": "IQ",
- "alpha_3": "IRQ",
- "flag": "🇮🇶",
- "name": "Iraq",
- "numeric": "368",
- "official_name": "Republic of Iraq"
- },
- {
- "alpha_2": "IS",
- "alpha_3": "ISL",
- "flag": "🇮🇸",
- "name": "Iceland",
- "numeric": "352",
- "official_name": "Republic of Iceland"
- },
- {
- "alpha_2": "IL",
- "alpha_3": "ISR",
- "flag": "🇮🇱",
- "name": "Israel",
- "numeric": "376",
- "official_name": "State of Israel"
- },
- {
- "alpha_2": "IT",
- "alpha_3": "ITA",
- "flag": "🇮🇹",
- "name": "Italy",
- "numeric": "380",
- "official_name": "Italian Republic"
- },
- {
- "alpha_2": "JM",
- "alpha_3": "JAM",
- "flag": "🇯🇲",
- "name": "Jamaica",
- "numeric": "388"
- },
- {
- "alpha_2": "JE",
- "alpha_3": "JEY",
- "flag": "🇯🇪",
- "name": "Jersey",
- "numeric": "832"
- },
- {
- "alpha_2": "JO",
- "alpha_3": "JOR",
- "flag": "🇯🇴",
- "name": "Jordan",
- "numeric": "400",
- "official_name": "Hashemite Kingdom of Jordan"
- },
- {
- "alpha_2": "JP",
- "alpha_3": "JPN",
- "flag": "🇯🇵",
- "name": "Japan",
- "numeric": "392"
- },
- {
- "alpha_2": "KZ",
- "alpha_3": "KAZ",
- "flag": "🇰🇿",
- "name": "Kazakhstan",
- "numeric": "398",
- "official_name": "Republic of Kazakhstan"
- },
- {
- "alpha_2": "KE",
- "alpha_3": "KEN",
- "flag": "🇰🇪",
- "name": "Kenya",
- "numeric": "404",
- "official_name": "Republic of Kenya"
- },
- {
- "alpha_2": "KG",
- "alpha_3": "KGZ",
- "flag": "🇰🇬",
- "name": "Kyrgyzstan",
- "numeric": "417",
- "official_name": "Kyrgyz Republic"
- },
- {
- "alpha_2": "KH",
- "alpha_3": "KHM",
- "flag": "🇰🇭",
- "name": "Cambodia",
- "numeric": "116",
- "official_name": "Kingdom of Cambodia"
- },
- {
- "alpha_2": "KI",
- "alpha_3": "KIR",
- "flag": "🇰🇮",
- "name": "Kiribati",
- "numeric": "296",
- "official_name": "Republic of Kiribati"
- },
- {
- "alpha_2": "KN",
- "alpha_3": "KNA",
- "flag": "🇰🇳",
- "name": "Saint Kitts and Nevis",
- "numeric": "659"
- },
- {
- "alpha_2": "KR",
- "alpha_3": "KOR",
- "common_name": "South Korea",
- "flag": "🇰🇷",
- "name": "Korea, Republic of",
- "numeric": "410"
- },
- {
- "alpha_2": "KW",
- "alpha_3": "KWT",
- "flag": "🇰🇼",
- "name": "Kuwait",
- "numeric": "414",
- "official_name": "State of Kuwait"
- },
- {
- "alpha_2": "LA",
- "alpha_3": "LAO",
- "common_name": "Laos",
- "flag": "🇱🇦",
- "name": "Lao People's Democratic Republic",
- "numeric": "418"
- },
- {
- "alpha_2": "LB",
- "alpha_3": "LBN",
- "flag": "🇱🇧",
- "name": "Lebanon",
- "numeric": "422",
- "official_name": "Lebanese Republic"
- },
- {
- "alpha_2": "LR",
- "alpha_3": "LBR",
- "flag": "🇱🇷",
- "name": "Liberia",
- "numeric": "430",
- "official_name": "Republic of Liberia"
- },
- {
- "alpha_2": "LY",
- "alpha_3": "LBY",
- "flag": "🇱🇾",
- "name": "Libya",
- "numeric": "434",
- "official_name": "Libya"
- },
- {
- "alpha_2": "LC",
- "alpha_3": "LCA",
- "flag": "🇱🇨",
- "name": "Saint Lucia",
- "numeric": "662"
- },
- {
- "alpha_2": "LI",
- "alpha_3": "LIE",
- "flag": "🇱🇮",
- "name": "Liechtenstein",
- "numeric": "438",
- "official_name": "Principality of Liechtenstein"
- },
- {
- "alpha_2": "LK",
- "alpha_3": "LKA",
- "flag": "🇱🇰",
- "name": "Sri Lanka",
- "numeric": "144",
- "official_name": "Democratic Socialist Republic of Sri Lanka"
- },
- {
- "alpha_2": "LS",
- "alpha_3": "LSO",
- "flag": "🇱🇸",
- "name": "Lesotho",
- "numeric": "426",
- "official_name": "Kingdom of Lesotho"
- },
- {
- "alpha_2": "LT",
- "alpha_3": "LTU",
- "flag": "🇱🇹",
- "name": "Lithuania",
- "numeric": "440",
- "official_name": "Republic of Lithuania"
- },
- {
- "alpha_2": "LU",
- "alpha_3": "LUX",
- "flag": "🇱🇺",
- "name": "Luxembourg",
- "numeric": "442",
- "official_name": "Grand Duchy of Luxembourg"
- },
- {
- "alpha_2": "LV",
- "alpha_3": "LVA",
- "flag": "🇱🇻",
- "name": "Latvia",
- "numeric": "428",
- "official_name": "Republic of Latvia"
- },
- {
- "alpha_2": "MO",
- "alpha_3": "MAC",
- "flag": "🇲🇴",
- "name": "Macao",
- "numeric": "446",
- "official_name": "Macao Special Administrative Region of China"
- },
- {
- "alpha_2": "MF",
- "alpha_3": "MAF",
- "flag": "🇲🇫",
- "name": "Saint Martin (French part)",
- "numeric": "663"
- },
- {
- "alpha_2": "MA",
- "alpha_3": "MAR",
- "flag": "🇲🇦",
- "name": "Morocco",
- "numeric": "504",
- "official_name": "Kingdom of Morocco"
- },
- {
- "alpha_2": "MC",
- "alpha_3": "MCO",
- "flag": "🇲🇨",
- "name": "Monaco",
- "numeric": "492",
- "official_name": "Principality of Monaco"
- },
- {
- "alpha_2": "MD",
- "alpha_3": "MDA",
- "common_name": "Moldova",
- "flag": "🇲🇩",
- "name": "Moldova, Republic of",
- "numeric": "498",
- "official_name": "Republic of Moldova"
- },
- {
- "alpha_2": "MG",
- "alpha_3": "MDG",
- "flag": "🇲🇬",
- "name": "Madagascar",
- "numeric": "450",
- "official_name": "Republic of Madagascar"
- },
- {
- "alpha_2": "MV",
- "alpha_3": "MDV",
- "flag": "🇲🇻",
- "name": "Maldives",
- "numeric": "462",
- "official_name": "Republic of Maldives"
- },
- {
- "alpha_2": "MX",
- "alpha_3": "MEX",
- "flag": "🇲🇽",
- "name": "Mexico",
- "numeric": "484",
- "official_name": "United Mexican States"
- },
- {
- "alpha_2": "MH",
- "alpha_3": "MHL",
- "flag": "🇲🇭",
- "name": "Marshall Islands",
- "numeric": "584",
- "official_name": "Republic of the Marshall Islands"
- },
- {
- "alpha_2": "MK",
- "alpha_3": "MKD",
- "flag": "🇲🇰",
- "name": "North Macedonia",
- "numeric": "807",
- "official_name": "Republic of North Macedonia"
- },
- {
- "alpha_2": "ML",
- "alpha_3": "MLI",
- "flag": "🇲🇱",
- "name": "Mali",
- "numeric": "466",
- "official_name": "Republic of Mali"
- },
- {
- "alpha_2": "MT",
- "alpha_3": "MLT",
- "flag": "🇲🇹",
- "name": "Malta",
- "numeric": "470",
- "official_name": "Republic of Malta"
- },
- {
- "alpha_2": "MM",
- "alpha_3": "MMR",
- "flag": "🇲🇲",
- "name": "Myanmar",
- "numeric": "104",
- "official_name": "Republic of Myanmar"
- },
- {
- "alpha_2": "ME",
- "alpha_3": "MNE",
- "flag": "🇲🇪",
- "name": "Montenegro",
- "numeric": "499",
- "official_name": "Montenegro"
- },
- {
- "alpha_2": "MN",
- "alpha_3": "MNG",
- "flag": "🇲🇳",
- "name": "Mongolia",
- "numeric": "496"
- },
- {
- "alpha_2": "MP",
- "alpha_3": "MNP",
- "flag": "🇲🇵",
- "name": "Northern Mariana Islands",
- "numeric": "580",
- "official_name": "Commonwealth of the Northern Mariana Islands"
- },
- {
- "alpha_2": "MZ",
- "alpha_3": "MOZ",
- "flag": "🇲🇿",
- "name": "Mozambique",
- "numeric": "508",
- "official_name": "Republic of Mozambique"
- },
- {
- "alpha_2": "MR",
- "alpha_3": "MRT",
- "flag": "🇲🇷",
- "name": "Mauritania",
- "numeric": "478",
- "official_name": "Islamic Republic of Mauritania"
- },
- {
- "alpha_2": "MS",
- "alpha_3": "MSR",
- "flag": "🇲🇸",
- "name": "Montserrat",
- "numeric": "500"
- },
- {
- "alpha_2": "MQ",
- "alpha_3": "MTQ",
- "flag": "🇲🇶",
- "name": "Martinique",
- "numeric": "474"
- },
- {
- "alpha_2": "MU",
- "alpha_3": "MUS",
- "flag": "🇲🇺",
- "name": "Mauritius",
- "numeric": "480",
- "official_name": "Republic of Mauritius"
- },
- {
- "alpha_2": "MW",
- "alpha_3": "MWI",
- "flag": "🇲🇼",
- "name": "Malawi",
- "numeric": "454",
- "official_name": "Republic of Malawi"
- },
- {
- "alpha_2": "MY",
- "alpha_3": "MYS",
- "flag": "🇲🇾",
- "name": "Malaysia",
- "numeric": "458"
- },
- {
- "alpha_2": "YT",
- "alpha_3": "MYT",
- "flag": "🇾🇹",
- "name": "Mayotte",
- "numeric": "175"
- },
- {
- "alpha_2": "NA",
- "alpha_3": "NAM",
- "flag": "🇳🇦",
- "name": "Namibia",
- "numeric": "516",
- "official_name": "Republic of Namibia"
- },
- {
- "alpha_2": "NC",
- "alpha_3": "NCL",
- "flag": "🇳🇨",
- "name": "New Caledonia",
- "numeric": "540"
- },
- {
- "alpha_2": "NE",
- "alpha_3": "NER",
- "flag": "🇳🇪",
- "name": "Niger",
- "numeric": "562",
- "official_name": "Republic of the Niger"
- },
- {
- "alpha_2": "NF",
- "alpha_3": "NFK",
- "flag": "🇳🇫",
- "name": "Norfolk Island",
- "numeric": "574"
- },
- {
- "alpha_2": "NG",
- "alpha_3": "NGA",
- "flag": "🇳🇬",
- "name": "Nigeria",
- "numeric": "566",
- "official_name": "Federal Republic of Nigeria"
- },
- {
- "alpha_2": "NI",
- "alpha_3": "NIC",
- "flag": "🇳🇮",
- "name": "Nicaragua",
- "numeric": "558",
- "official_name": "Republic of Nicaragua"
- },
- {
- "alpha_2": "NU",
- "alpha_3": "NIU",
- "flag": "🇳🇺",
- "name": "Niue",
- "numeric": "570",
- "official_name": "Niue"
- },
- {
- "alpha_2": "NL",
- "alpha_3": "NLD",
- "flag": "🇳🇱",
- "name": "Netherlands",
- "numeric": "528",
- "official_name": "Kingdom of the Netherlands"
- },
- {
- "alpha_2": "NO",
- "alpha_3": "NOR",
- "flag": "🇳🇴",
- "name": "Norway",
- "numeric": "578",
- "official_name": "Kingdom of Norway"
- },
- {
- "alpha_2": "NP",
- "alpha_3": "NPL",
- "flag": "🇳🇵",
- "name": "Nepal",
- "numeric": "524",
- "official_name": "Federal Democratic Republic of Nepal"
- },
- {
- "alpha_2": "NR",
- "alpha_3": "NRU",
- "flag": "🇳🇷",
- "name": "Nauru",
- "numeric": "520",
- "official_name": "Republic of Nauru"
- },
- {
- "alpha_2": "NZ",
- "alpha_3": "NZL",
- "flag": "🇳🇿",
- "name": "New Zealand",
- "numeric": "554"
- },
- {
- "alpha_2": "OM",
- "alpha_3": "OMN",
- "flag": "🇴🇲",
- "name": "Oman",
- "numeric": "512",
- "official_name": "Sultanate of Oman"
- },
- {
- "alpha_2": "PK",
- "alpha_3": "PAK",
- "flag": "🇵🇰",
- "name": "Pakistan",
- "numeric": "586",
- "official_name": "Islamic Republic of Pakistan"
- },
- {
- "alpha_2": "PA",
- "alpha_3": "PAN",
- "flag": "🇵🇦",
- "name": "Panama",
- "numeric": "591",
- "official_name": "Republic of Panama"
- },
- {
- "alpha_2": "PN",
- "alpha_3": "PCN",
- "flag": "🇵🇳",
- "name": "Pitcairn",
- "numeric": "612"
- },
- {
- "alpha_2": "PE",
- "alpha_3": "PER",
- "flag": "🇵🇪",
- "name": "Peru",
- "numeric": "604",
- "official_name": "Republic of Peru"
- },
- {
- "alpha_2": "PH",
- "alpha_3": "PHL",
- "flag": "🇵🇭",
- "name": "Philippines",
- "numeric": "608",
- "official_name": "Republic of the Philippines"
- },
- {
- "alpha_2": "PW",
- "alpha_3": "PLW",
- "flag": "🇵🇼",
- "name": "Palau",
- "numeric": "585",
- "official_name": "Republic of Palau"
- },
- {
- "alpha_2": "PG",
- "alpha_3": "PNG",
- "flag": "🇵🇬",
- "name": "Papua New Guinea",
- "numeric": "598",
- "official_name": "Independent State of Papua New Guinea"
- },
- {
- "alpha_2": "PL",
- "alpha_3": "POL",
- "flag": "🇵🇱",
- "name": "Poland",
- "numeric": "616",
- "official_name": "Republic of Poland"
- },
- {
- "alpha_2": "PR",
- "alpha_3": "PRI",
- "flag": "🇵🇷",
- "name": "Puerto Rico",
- "numeric": "630"
- },
- {
- "alpha_2": "KP",
- "alpha_3": "PRK",
- "common_name": "North Korea",
- "flag": "🇰🇵",
- "name": "Korea, Democratic People's Republic of",
- "numeric": "408",
- "official_name": "Democratic People's Republic of Korea"
- },
- {
- "alpha_2": "PT",
- "alpha_3": "PRT",
- "flag": "🇵🇹",
- "name": "Portugal",
- "numeric": "620",
- "official_name": "Portuguese Republic"
- },
- {
- "alpha_2": "PY",
- "alpha_3": "PRY",
- "flag": "🇵🇾",
- "name": "Paraguay",
- "numeric": "600",
- "official_name": "Republic of Paraguay"
- },
- {
- "alpha_2": "PS",
- "alpha_3": "PSE",
- "flag": "🇵🇸",
- "name": "Palestine, State of",
- "numeric": "275",
- "official_name": "the State of Palestine"
- },
- {
- "alpha_2": "PF",
- "alpha_3": "PYF",
- "flag": "🇵🇫",
- "name": "French Polynesia",
- "numeric": "258"
- },
- {
- "alpha_2": "QA",
- "alpha_3": "QAT",
- "flag": "🇶🇦",
- "name": "Qatar",
- "numeric": "634",
- "official_name": "State of Qatar"
- },
- {
- "alpha_2": "RE",
- "alpha_3": "REU",
- "flag": "🇷🇪",
- "name": "Réunion",
- "numeric": "638"
- },
- {
- "alpha_2": "RO",
- "alpha_3": "ROU",
- "flag": "🇷🇴",
- "name": "Romania",
- "numeric": "642"
- },
- {
- "alpha_2": "RU",
- "alpha_3": "RUS",
- "flag": "🇷🇺",
- "name": "Russian Federation",
- "numeric": "643"
- },
- {
- "alpha_2": "RW",
- "alpha_3": "RWA",
- "flag": "🇷🇼",
- "name": "Rwanda",
- "numeric": "646",
- "official_name": "Rwandese Republic"
- },
- {
- "alpha_2": "SA",
- "alpha_3": "SAU",
- "flag": "🇸🇦",
- "name": "Saudi Arabia",
- "numeric": "682",
- "official_name": "Kingdom of Saudi Arabia"
- },
- {
- "alpha_2": "SD",
- "alpha_3": "SDN",
- "flag": "🇸🇩",
- "name": "Sudan",
- "numeric": "729",
- "official_name": "Republic of the Sudan"
- },
- {
- "alpha_2": "SN",
- "alpha_3": "SEN",
- "flag": "🇸🇳",
- "name": "Senegal",
- "numeric": "686",
- "official_name": "Republic of Senegal"
- },
- {
- "alpha_2": "SG",
- "alpha_3": "SGP",
- "flag": "🇸🇬",
- "name": "Singapore",
- "numeric": "702",
- "official_name": "Republic of Singapore"
- },
- {
- "alpha_2": "GS",
- "alpha_3": "SGS",
- "flag": "🇬🇸",
- "name": "South Georgia and the South Sandwich Islands",
- "numeric": "239"
- },
- {
- "alpha_2": "SH",
- "alpha_3": "SHN",
- "flag": "🇸🇭",
- "name": "Saint Helena, Ascension and Tristan da Cunha",
- "numeric": "654"
- },
- {
- "alpha_2": "SJ",
- "alpha_3": "SJM",
- "flag": "🇸🇯",
- "name": "Svalbard and Jan Mayen",
- "numeric": "744"
- },
- {
- "alpha_2": "SB",
- "alpha_3": "SLB",
- "flag": "🇸🇧",
- "name": "Solomon Islands",
- "numeric": "090"
- },
- {
- "alpha_2": "SL",
- "alpha_3": "SLE",
- "flag": "🇸🇱",
- "name": "Sierra Leone",
- "numeric": "694",
- "official_name": "Republic of Sierra Leone"
- },
- {
- "alpha_2": "SV",
- "alpha_3": "SLV",
- "flag": "🇸🇻",
- "name": "El Salvador",
- "numeric": "222",
- "official_name": "Republic of El Salvador"
- },
- {
- "alpha_2": "SM",
- "alpha_3": "SMR",
- "flag": "🇸🇲",
- "name": "San Marino",
- "numeric": "674",
- "official_name": "Republic of San Marino"
- },
- {
- "alpha_2": "SO",
- "alpha_3": "SOM",
- "flag": "🇸🇴",
- "name": "Somalia",
- "numeric": "706",
- "official_name": "Federal Republic of Somalia"
- },
- {
- "alpha_2": "PM",
- "alpha_3": "SPM",
- "flag": "🇵🇲",
- "name": "Saint Pierre and Miquelon",
- "numeric": "666"
- },
- {
- "alpha_2": "RS",
- "alpha_3": "SRB",
- "flag": "🇷🇸",
- "name": "Serbia",
- "numeric": "688",
- "official_name": "Republic of Serbia"
- },
- {
- "alpha_2": "SS",
- "alpha_3": "SSD",
- "flag": "🇸🇸",
- "name": "South Sudan",
- "numeric": "728",
- "official_name": "Republic of South Sudan"
- },
- {
- "alpha_2": "ST",
- "alpha_3": "STP",
- "flag": "🇸🇹",
- "name": "Sao Tome and Principe",
- "numeric": "678",
- "official_name": "Democratic Republic of Sao Tome and Principe"
- },
- {
- "alpha_2": "SR",
- "alpha_3": "SUR",
- "flag": "🇸🇷",
- "name": "Suriname",
- "numeric": "740",
- "official_name": "Republic of Suriname"
- },
- {
- "alpha_2": "SK",
- "alpha_3": "SVK",
- "flag": "🇸🇰",
- "name": "Slovakia",
- "numeric": "703",
- "official_name": "Slovak Republic"
- },
- {
- "alpha_2": "SI",
- "alpha_3": "SVN",
- "flag": "🇸🇮",
- "name": "Slovenia",
- "numeric": "705",
- "official_name": "Republic of Slovenia"
- },
- {
- "alpha_2": "SE",
- "alpha_3": "SWE",
- "flag": "🇸🇪",
- "name": "Sweden",
- "numeric": "752",
- "official_name": "Kingdom of Sweden"
- },
- {
- "alpha_2": "SZ",
- "alpha_3": "SWZ",
- "flag": "🇸🇿",
- "name": "Eswatini",
- "numeric": "748",
- "official_name": "Kingdom of Eswatini"
- },
- {
- "alpha_2": "SX",
- "alpha_3": "SXM",
- "flag": "🇸🇽",
- "name": "Sint Maarten (Dutch part)",
- "numeric": "534",
- "official_name": "Sint Maarten (Dutch part)"
- },
- {
- "alpha_2": "SC",
- "alpha_3": "SYC",
- "flag": "🇸🇨",
- "name": "Seychelles",
- "numeric": "690",
- "official_name": "Republic of Seychelles"
- },
- {
- "alpha_2": "SY",
- "alpha_3": "SYR",
- "common_name": "Syria",
- "flag": "🇸🇾",
- "name": "Syrian Arab Republic",
- "numeric": "760"
- },
- {
- "alpha_2": "TC",
- "alpha_3": "TCA",
- "flag": "🇹🇨",
- "name": "Turks and Caicos Islands",
- "numeric": "796"
- },
- {
- "alpha_2": "TD",
- "alpha_3": "TCD",
- "flag": "🇹🇩",
- "name": "Chad",
- "numeric": "148",
- "official_name": "Republic of Chad"
- },
- {
- "alpha_2": "TG",
- "alpha_3": "TGO",
- "flag": "🇹🇬",
- "name": "Togo",
- "numeric": "768",
- "official_name": "Togolese Republic"
- },
- {
- "alpha_2": "TH",
- "alpha_3": "THA",
- "flag": "🇹🇭",
- "name": "Thailand",
- "numeric": "764",
- "official_name": "Kingdom of Thailand"
- },
- {
- "alpha_2": "TJ",
- "alpha_3": "TJK",
- "flag": "🇹🇯",
- "name": "Tajikistan",
- "numeric": "762",
- "official_name": "Republic of Tajikistan"
- },
- {
- "alpha_2": "TK",
- "alpha_3": "TKL",
- "flag": "🇹🇰",
- "name": "Tokelau",
- "numeric": "772"
- },
- {
- "alpha_2": "TM",
- "alpha_3": "TKM",
- "flag": "🇹🇲",
- "name": "Turkmenistan",
- "numeric": "795"
- },
- {
- "alpha_2": "TL",
- "alpha_3": "TLS",
- "flag": "🇹🇱",
- "name": "Timor-Leste",
- "numeric": "626",
- "official_name": "Democratic Republic of Timor-Leste"
- },
- {
- "alpha_2": "TO",
- "alpha_3": "TON",
- "flag": "🇹🇴",
- "name": "Tonga",
- "numeric": "776",
- "official_name": "Kingdom of Tonga"
- },
- {
- "alpha_2": "TT",
- "alpha_3": "TTO",
- "flag": "🇹🇹",
- "name": "Trinidad and Tobago",
- "numeric": "780",
- "official_name": "Republic of Trinidad and Tobago"
- },
- {
- "alpha_2": "TN",
- "alpha_3": "TUN",
- "flag": "🇹🇳",
- "name": "Tunisia",
- "numeric": "788",
- "official_name": "Republic of Tunisia"
- },
- {
- "alpha_2": "TR",
- "alpha_3": "TUR",
- "flag": "🇹🇷",
- "name": "Türkiye",
- "numeric": "792",
- "official_name": "Republic of Türkiye"
- },
- {
- "alpha_2": "TV",
- "alpha_3": "TUV",
- "flag": "🇹🇻",
- "name": "Tuvalu",
- "numeric": "798"
- },
- {
- "alpha_2": "TW",
- "alpha_3": "TWN",
- "common_name": "Taiwan",
- "flag": "🇹🇼",
- "name": "Taiwan, Province of China",
- "numeric": "158",
- "official_name": "Taiwan, Province of China"
- },
- {
- "alpha_2": "TZ",
- "alpha_3": "TZA",
- "common_name": "Tanzania",
- "flag": "🇹🇿",
- "name": "Tanzania, United Republic of",
- "numeric": "834",
- "official_name": "United Republic of Tanzania"
- },
- {
- "alpha_2": "UG",
- "alpha_3": "UGA",
- "flag": "🇺🇬",
- "name": "Uganda",
- "numeric": "800",
- "official_name": "Republic of Uganda"
- },
- {
- "alpha_2": "UA",
- "alpha_3": "UKR",
- "flag": "🇺🇦",
- "name": "Ukraine",
- "numeric": "804"
- },
- {
- "alpha_2": "UM",
- "alpha_3": "UMI",
- "flag": "🇺🇲",
- "name": "United States Minor Outlying Islands",
- "numeric": "581"
- },
- {
- "alpha_2": "UY",
- "alpha_3": "URY",
- "flag": "🇺🇾",
- "name": "Uruguay",
- "numeric": "858",
- "official_name": "Eastern Republic of Uruguay"
- },
- {
- "alpha_2": "US",
- "alpha_3": "USA",
- "flag": "🇺🇸",
- "name": "United States",
- "numeric": "840",
- "official_name": "United States of America"
- },
- {
- "alpha_2": "UZ",
- "alpha_3": "UZB",
- "flag": "🇺🇿",
- "name": "Uzbekistan",
- "numeric": "860",
- "official_name": "Republic of Uzbekistan"
- },
- {
- "alpha_2": "VA",
- "alpha_3": "VAT",
- "flag": "🇻🇦",
- "name": "Holy See (Vatican City State)",
- "numeric": "336"
- },
- {
- "alpha_2": "VC",
- "alpha_3": "VCT",
- "flag": "🇻🇨",
- "name": "Saint Vincent and the Grenadines",
- "numeric": "670"
- },
- {
- "alpha_2": "VE",
- "alpha_3": "VEN",
- "common_name": "Venezuela",
- "flag": "🇻🇪",
- "name": "Venezuela, Bolivarian Republic of",
- "numeric": "862",
- "official_name": "Bolivarian Republic of Venezuela"
- },
- {
- "alpha_2": "VG",
- "alpha_3": "VGB",
- "flag": "🇻🇬",
- "name": "Virgin Islands, British",
- "numeric": "092",
- "official_name": "British Virgin Islands"
- },
- {
- "alpha_2": "VI",
- "alpha_3": "VIR",
- "flag": "🇻🇮",
- "name": "Virgin Islands, U.S.",
- "numeric": "850",
- "official_name": "Virgin Islands of the United States"
- },
- {
- "alpha_2": "VN",
- "alpha_3": "VNM",
- "common_name": "Vietnam",
- "flag": "🇻🇳",
- "name": "Viet Nam",
- "numeric": "704",
- "official_name": "Socialist Republic of Viet Nam"
- },
- {
- "alpha_2": "VU",
- "alpha_3": "VUT",
- "flag": "🇻🇺",
- "name": "Vanuatu",
- "numeric": "548",
- "official_name": "Republic of Vanuatu"
- },
- {
- "alpha_2": "WF",
- "alpha_3": "WLF",
- "flag": "🇼🇫",
- "name": "Wallis and Futuna",
- "numeric": "876"
- },
- {
- "alpha_2": "WS",
- "alpha_3": "WSM",
- "flag": "🇼🇸",
- "name": "Samoa",
- "numeric": "882",
- "official_name": "Independent State of Samoa"
- },
- {
- "alpha_2": "YE",
- "alpha_3": "YEM",
- "flag": "🇾🇪",
- "name": "Yemen",
- "numeric": "887",
- "official_name": "Republic of Yemen"
- },
- {
- "alpha_2": "ZA",
- "alpha_3": "ZAF",
- "flag": "🇿🇦",
- "name": "South Africa",
- "numeric": "710",
- "official_name": "Republic of South Africa"
- },
- {
- "alpha_2": "ZM",
- "alpha_3": "ZMB",
- "flag": "🇿🇲",
- "name": "Zambia",
- "numeric": "894",
- "official_name": "Republic of Zambia"
- },
- {
- "alpha_2": "ZW",
- "alpha_3": "ZWE",
- "flag": "🇿🇼",
- "name": "Zimbabwe",
- "numeric": "716",
- "official_name": "Republic of Zimbabwe"
- }
- ]
-}
diff --git a/src/packages/HawkN.Iso.Countries.Generators/Handlers/JsonCountryHandler.cs b/src/packages/HawkN.Iso.Countries.Generators/Handlers/JsonCountryHandler.cs
deleted file mode 100644
index c072310..0000000
--- a/src/packages/HawkN.Iso.Countries.Generators/Handlers/JsonCountryHandler.cs
+++ /dev/null
@@ -1,41 +0,0 @@
-using System.Text.Json;
-using HawkN.Iso.Countries.Generators.Models;
-namespace HawkN.Iso.Countries.Generators.Handlers;
-
-internal sealed class JsonCountryHandler(string jsonContent)
-{
- public List LoadActualCountries()
- {
- var result = new List();
-
- if (string.IsNullOrWhiteSpace(jsonContent))
- return result;
-
- try
- {
- var data = JsonSerializer.Deserialize(jsonContent);
-
- if (data?.Countries == null)
- return result;
-
- result.AddRange(from entry in data.Countries
- where IsValidEntry(entry)
- select new Country(entry.Name.Trim(), entry.Alpha2.Trim().ToUpperInvariant(),
- entry.Alpha3.Trim().ToUpperInvariant(), entry.Numeric.Trim(), entry.OfficialName?.Trim()));
- }
- catch (JsonException ex)
- {
- throw new InvalidDataException("Failed to parse ISO-3166 JSON data.", ex);
- }
-
- return result;
- }
-
- private static bool IsValidEntry(DebianCountryEntry entry)
- {
- return !string.IsNullOrWhiteSpace(entry.Name) &&
- !string.IsNullOrWhiteSpace(entry.Alpha2) && entry.Alpha2.Length == 2 &&
- !string.IsNullOrWhiteSpace(entry.Alpha3) && entry.Alpha3.Length == 3 &&
- !string.IsNullOrWhiteSpace(entry.Numeric);
- }
-}
\ No newline at end of file
diff --git a/src/packages/HawkN.Iso.Countries.Generators/Handlers/JsonCountryLoader.cs b/src/packages/HawkN.Iso.Countries.Generators/Handlers/JsonCountryLoader.cs
deleted file mode 100644
index dcceeb3..0000000
--- a/src/packages/HawkN.Iso.Countries.Generators/Handlers/JsonCountryLoader.cs
+++ /dev/null
@@ -1,18 +0,0 @@
-namespace HawkN.Iso.Countries.Generators.Handlers;
-
-internal sealed class JsonCountryLoader
-{
- private readonly List _actualCountries = [];
-
- public List ActualCountries => _actualCountries;
-
- public JsonCountryLoader(string actualJson)
- {
- var actual = new JsonCountryHandler(actualJson)
- .LoadActualCountries()
- .OrderBy(c => c.Name)
- .ToList();
-
- _actualCountries.AddRange(actual);
- }
-}
\ No newline at end of file
diff --git a/src/packages/HawkN.Iso.Countries.Generators/HawkN.Iso.Countries.Generators.csproj b/src/packages/HawkN.Iso.Countries.Generators/HawkN.Iso.Countries.Generators.csproj
index a532ce2..71fecfa 100644
--- a/src/packages/HawkN.Iso.Countries.Generators/HawkN.Iso.Countries.Generators.csproj
+++ b/src/packages/HawkN.Iso.Countries.Generators/HawkN.Iso.Countries.Generators.csproj
@@ -12,7 +12,7 @@
true
false
8.0.0.0
- Copyright © 2025 Nikolay Selyutin (HawkN113)
+ Copyright © 2026 Nikolay Selyutin (HawkN113)
true
false
true
diff --git a/src/packages/HawkN.Iso.Countries.Generators/LocalCountryDatabaseGenerator.cs b/src/packages/HawkN.Iso.Countries.Generators/LocalCountryDatabaseGenerator.cs
index 1185aef..42fc840 100644
--- a/src/packages/HawkN.Iso.Countries.Generators/LocalCountryDatabaseGenerator.cs
+++ b/src/packages/HawkN.Iso.Countries.Generators/LocalCountryDatabaseGenerator.cs
@@ -73,11 +73,9 @@ static string ReadIsoResource(Compilation compilation, CancellationToken ct)
Constants.GeneratorName,
Constants.DefaultNamespace,
Constants.ExtendedSourceData,
- [
- "System.Collections.Generic",
- "System.Collections.Immutable",
- "HawkN.Iso.Countries.Models"
- ]);
+ Constants.SystemNamespaces
+ .Concat(Constants.ReferencesNamespaces)
+ .ToArray());
sb.AppendLine(" /// ")
.AppendLine(" /// Country information ISO3166")
diff --git a/src/packages/HawkN.Iso.Countries.Generators/Models/DebianCountryEntry.cs b/src/packages/HawkN.Iso.Countries.Generators/Models/DebianCountryEntry.cs
deleted file mode 100644
index b81794a..0000000
--- a/src/packages/HawkN.Iso.Countries.Generators/Models/DebianCountryEntry.cs
+++ /dev/null
@@ -1,19 +0,0 @@
-namespace HawkN.Iso.Countries.Generators.Models;
-
-internal class DebianCountryEntry
-{
- [System.Text.Json.Serialization.JsonPropertyName("name")]
- public string Name { get; set; } = string.Empty;
-
- [System.Text.Json.Serialization.JsonPropertyName("official_name")]
- public string? OfficialName { get; set; }
-
- [System.Text.Json.Serialization.JsonPropertyName("alpha_2")]
- public string Alpha2 { get; set; } = string.Empty;
-
- [System.Text.Json.Serialization.JsonPropertyName("alpha_3")]
- public string Alpha3 { get; set; } = string.Empty;
-
- [System.Text.Json.Serialization.JsonPropertyName("numeric")]
- public string Numeric { get; set; } = string.Empty;
-}
\ No newline at end of file
diff --git a/src/packages/HawkN.Iso.Countries.Generators/Models/DebianIsoJson.cs b/src/packages/HawkN.Iso.Countries.Generators/Models/DebianIsoJson.cs
deleted file mode 100644
index ca71983..0000000
--- a/src/packages/HawkN.Iso.Countries.Generators/Models/DebianIsoJson.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-namespace HawkN.Iso.Countries.Generators.Models;
-
-internal class DebianIsoJson
-{
- [System.Text.Json.Serialization.JsonPropertyName("3166-1")]
- public List Countries { get; set; } = [];
-}
\ No newline at end of file
diff --git a/src/packages/HawkN.Iso.Countries/HawkN.Iso.Countries.csproj b/src/packages/HawkN.Iso.Countries/HawkN.Iso.Countries.csproj
index 7e954b2..f4f148b 100644
--- a/src/packages/HawkN.Iso.Countries/HawkN.Iso.Countries.csproj
+++ b/src/packages/HawkN.Iso.Countries/HawkN.Iso.Countries.csproj
@@ -4,8 +4,9 @@
enable
enable
8.0.0.0
+ 8.0.0.0
Library
- Copyright © 2025 Nikolay Selyutin (HawkN113)
+ Copyright © 2026 Nikolay Selyutin (HawkN113)
true
false
true
diff --git a/src/tests/HawkN.Iso.Countries.Currencies.Tests/CountryCurrencyMapTests.cs b/src/tests/HawkN.Iso.Countries.Currencies.Tests/CountryCurrencyMapTests.cs
new file mode 100644
index 0000000..29d1c44
--- /dev/null
+++ b/src/tests/HawkN.Iso.Countries.Currencies.Tests/CountryCurrencyMapTests.cs
@@ -0,0 +1,151 @@
+using HawkN.Iso.Countries.Currencies.Models;
+using HawkN.Iso.Currencies;
+namespace HawkN.Iso.Countries.Currencies.Tests;
+
+public sealed class CountryCurrencyMapTests
+{
+ [Fact]
+ public void TryGet_Should_Return_False_For_Unknown_Country()
+ {
+ // Arrange
+ var result = CountryCurrencyMap.TryGet(
+ (CountryCode.TwoLetterCode)999,
+ out var info);
+
+ // Assert
+ Assert.False(result);
+ Assert.Null(info);
+ }
+
+ [Theory]
+ [InlineData(CountryCode.TwoLetterCode.DE, CurrencyCode.EUR)]
+ [InlineData(CountryCode.TwoLetterCode.US, CurrencyCode.USD)]
+ [InlineData(CountryCode.TwoLetterCode.GB, CurrencyCode.GBP)]
+ [InlineData(CountryCode.TwoLetterCode.JP, CurrencyCode.JPY)]
+ public void TryGet_Should_Return_Correct_Primary_Currency(
+ CountryCode.TwoLetterCode country,
+ CurrencyCode expectedCurrency)
+ {
+ // Act
+ var result = CountryCurrencyMap.TryGet(country, out var info);
+
+ // Assert
+ Assert.True(result);
+ Assert.NotNull(info);
+ Assert.Equal(expectedCurrency, info!.PrimaryCurrency);
+ }
+
+ [Fact]
+ public void Countries_With_No_Secondary_Currencies_Should_Return_Empty_List()
+ {
+ // Act
+ var result = CountryCurrencyMap.TryGet(
+ CountryCode.TwoLetterCode.DE,
+ out var info);
+
+ // Assert
+ Assert.True(result);
+ Assert.NotNull(info);
+ Assert.NotNull(info!.SecondaryCurrencies);
+ Assert.Empty(info.SecondaryCurrencies);
+ }
+
+ [Fact]
+ public void Countries_With_Secondary_Currencies_Should_Return_Them()
+ {
+ // Act
+ var result = CountryCurrencyMap.TryGet(
+ CountryCode.TwoLetterCode.CH,
+ out var info);
+
+ // Assert
+ Assert.True(result);
+ Assert.NotNull(info);
+ Assert.Equal(CurrencyCode.CHF, info!.PrimaryCurrency);
+ Assert.Contains(CurrencyCode.CHE, info.SecondaryCurrencies);
+ Assert.Contains(CurrencyCode.CHW, info.SecondaryCurrencies);
+ }
+
+ [Fact]
+ public void Secondary_Currencies_Should_Not_Contain_Primary()
+ {
+ foreach (var country in Enum
+ .GetValues()
+ .Where(c => CountryCurrencyMap.TryGet(c, out _)))
+ {
+ // Act
+ CountryCurrencyMap.TryGet(country, out var info);
+
+ // Assert
+ foreach (var secondary in info!.SecondaryCurrencies)
+ {
+ Assert.NotEqual(info.PrimaryCurrency, secondary);
+ }
+ }
+ }
+
+ [Fact]
+ public void All_Currency_Codes_Must_Be_Valid_ISO_4217()
+ {
+ foreach (var country in Enum
+ .GetValues()
+ .Where(c => CountryCurrencyMap.TryGet(c, out _)))
+ {
+ // Act
+ CountryCurrencyMap.TryGet(country, out var info);
+
+ // Assert
+ Assert.True(Enum.IsDefined(info!.PrimaryCurrency));
+ foreach (var secondary in info.SecondaryCurrencies)
+ {
+ Assert.True(Enum.IsDefined(secondary));
+ }
+ }
+ }
+
+ [Fact]
+ public void Mapping_Should_Be_Deterministic()
+ {
+ // Act
+ var firstResult = CountryCurrencyMap.TryGet(
+ CountryCode.TwoLetterCode.US,
+ out var first);
+
+ var secondResult = CountryCurrencyMap.TryGet(
+ CountryCode.TwoLetterCode.US,
+ out var second);
+
+ // Assert
+ Assert.True(firstResult);
+ Assert.True(secondResult);
+ Assert.Same(first, second);
+ }
+
+ [Fact]
+ public void All_Entries_Should_Have_Primary_Currency()
+ {
+ CountryCurrencyInfo? info = null;
+ foreach (var _ in Enum
+ .GetValues()
+ .Where(country => CountryCurrencyMap.TryGet(country, out info)))
+ {
+ // Assert
+ Assert.NotEqual(default, info!.PrimaryCurrency);
+ }
+ }
+
+ [Fact]
+ public void Special_Test_Palestine_Currency_Rule()
+ {
+ // Act
+ var result = CountryCurrencyMap.TryGet(
+ CountryCode.TwoLetterCode.PS,
+ out var info);
+
+ // Assert
+ Assert.True(result);
+ Assert.NotNull(info);
+ Assert.Equal(CurrencyCode.ILS, info!.PrimaryCurrency);
+ Assert.Contains(CurrencyCode.JOD, info.SecondaryCurrencies);
+ }
+}
\ No newline at end of file
diff --git a/src/tests/HawkN.Iso.Countries.Currencies.Tests/DependencySmokeTests.cs b/src/tests/HawkN.Iso.Countries.Currencies.Tests/DependencySmokeTests.cs
new file mode 100644
index 0000000..46d28e0
--- /dev/null
+++ b/src/tests/HawkN.Iso.Countries.Currencies.Tests/DependencySmokeTests.cs
@@ -0,0 +1,72 @@
+using System.Reflection;
+using HawkN.Iso.Countries.Currencies.Extensions;
+using HawkN.Iso.Currencies;
+namespace HawkN.Iso.Countries.Currencies.Tests;
+
+public sealed class DependencySmokeTests
+{
+ [Fact]
+ public void Countries_Package_Version_Should_Be_In_Expected_Range()
+ {
+ // Arrange & Act
+ var assembly = typeof(CountryCode).Assembly;
+
+ var version = GetInformationalVersion(assembly);
+
+ // Assert
+ Assert.True(
+ version >= new Version(8, 0, 0) && version < new Version(9, 0, 0),
+ $"Unexpected HawkN.Iso.Countries version: {version}"
+ );
+ }
+
+ [Fact]
+ public void Currencies_Package_Version_Should_Be_In_Expected_Range()
+ {
+ // Arrange & Act
+ var assembly = typeof(CurrencyCode).Assembly;
+ var version = GetInformationalVersion(assembly);
+
+ // Assert
+ Assert.True(
+ version >= new Version(8, 0, 0) && version < new Version(9, 0, 0),
+ $"Unexpected HawkN.Iso.Currencies version: {version}"
+ );
+ }
+
+ [Fact]
+ public void All_Required_Dependencies_Should_Be_Loaded()
+ {
+ // Arrange & Act
+ var loadedAssemblies = AppDomain.CurrentDomain
+ .GetAssemblies()
+ .Select(a => a.GetName().Name)
+ .ToHashSet(StringComparer.OrdinalIgnoreCase);
+
+ // Assert
+ Assert.Contains("HawkN.Iso.Countries", loadedAssemblies);
+ Assert.Contains("HawkN.Iso.Currencies", loadedAssemblies);
+ }
+
+ [Fact]
+ public void CountryCurrencyMap_Should_Initialize_Without_Errors()
+ {
+ // Arrange
+ var country = CountryCode.TwoLetterCode.DE;
+
+ // Act
+ var currency = country.GetPrimaryCurrency();
+
+ // Assert
+ Assert.NotNull(currency);
+ }
+
+ private static Version GetInformationalVersion(Assembly assembly)
+ {
+ var attr = assembly
+ .GetCustomAttribute();
+ Assert.NotNull(attr);
+ var versionText = attr!.Version.Split('+')[0];
+ return Version.Parse(versionText);
+ }
+}
\ No newline at end of file
diff --git a/src/tests/HawkN.Iso.Countries.Currencies.Tests/Extensions/CountryCurrencyExtensionsTests.cs b/src/tests/HawkN.Iso.Countries.Currencies.Tests/Extensions/CountryCurrencyExtensionsTests.cs
new file mode 100644
index 0000000..d276814
--- /dev/null
+++ b/src/tests/HawkN.Iso.Countries.Currencies.Tests/Extensions/CountryCurrencyExtensionsTests.cs
@@ -0,0 +1,161 @@
+using HawkN.Iso.Countries.Currencies.Extensions;
+using HawkN.Iso.Currencies;
+namespace HawkN.Iso.Countries.Currencies.Tests.Extensions;
+
+public sealed class CountryCurrencyExtensionsTests
+{
+ [Fact]
+ public void GetPrimaryCurrency_Should_Return_Null_For_Unknown_Country()
+ {
+ // Arrange
+ var country = (CountryCode.TwoLetterCode)999;
+
+ // Act
+ var currency = country.GetPrimaryCurrency();
+
+ // Assert
+ Assert.Null(currency);
+ }
+
+ [Theory]
+ [InlineData(CountryCode.TwoLetterCode.US, CurrencyCode.USD)]
+ [InlineData(CountryCode.TwoLetterCode.DE, CurrencyCode.EUR)]
+ [InlineData(CountryCode.TwoLetterCode.GB, CurrencyCode.GBP)]
+ public void GetPrimaryCurrency_Should_Return_Correct_Value(
+ CountryCode.TwoLetterCode country,
+ CurrencyCode expected)
+ {
+ // Act
+ var currency = country.GetPrimaryCurrency();
+
+ // Assert
+ Assert.NotNull(currency);
+ Assert.Equal(expected, currency);
+ }
+
+ [Fact]
+ public void GetSecondaryCurrencies_Should_Return_Empty_For_Unknown_Country()
+ {
+ // Arrange
+ var country = (CountryCode.TwoLetterCode)999;
+
+ // Act
+ var result = country.GetSecondaryCurrencies();
+
+ // Assert
+ Assert.NotNull(result);
+ Assert.Empty(result);
+ }
+
+ [Fact]
+ public void GetSecondaryCurrencies_Should_Not_Contain_Primary_Currency()
+ {
+ // Arrange
+ var country = CountryCode.TwoLetterCode.CH;
+
+ // Act
+ var primary = country.GetPrimaryCurrency();
+ var secondary = country.GetSecondaryCurrencies();
+
+ // Assert
+ Assert.NotNull(primary);
+ foreach (var currency in secondary)
+ {
+ Assert.NotEqual(primary, currency);
+ }
+ }
+
+ [Fact]
+ public void GetAllCurrencies_Should_Return_Primary_First()
+ {
+ // Arrange
+ var country = CountryCode.TwoLetterCode.US;
+
+ // Act
+ var currencies = country.GetAllCurrencies().ToArray();
+
+ // Assert
+ Assert.NotEmpty(currencies);
+ Assert.Equal(country.GetPrimaryCurrency(), currencies[0]);
+ }
+
+ [Fact]
+ public void GetAllCurrencies_Should_Return_Empty_For_Unknown_Country()
+ {
+ // Arrange
+ var country = (CountryCode.TwoLetterCode)999;
+
+ // Act
+ var currencies = country.GetAllCurrencies();
+
+ // Assert
+ Assert.Empty(currencies);
+ }
+
+ [Theory]
+ [InlineData(CountryCode.TwoLetterCode.US, CurrencyCode.USD)]
+ [InlineData(CountryCode.TwoLetterCode.DE, CurrencyCode.EUR)]
+ public void IsCurrencyUsedByCountry_Should_Return_True_For_Primary_Currency(
+ CountryCode.TwoLetterCode country,
+ CurrencyCode currency)
+ {
+ // Act
+ var result = country.IsCurrencyUsedByCountry(currency);
+
+ // Assert
+ Assert.True(result);
+ }
+
+ [Fact]
+ public void IsCurrencyUsedByCountry_Should_Return_True_For_Secondary_Currency()
+ {
+ // Arrange
+ var country = CountryCode.TwoLetterCode.CH;
+
+ // Act
+ var result = country.IsCurrencyUsedByCountry(CurrencyCode.CHE);
+
+ // Assert
+ Assert.True(result);
+ }
+
+ [Fact]
+ public void IsCurrencyUsedByCountry_Should_Return_False_For_Unused_Currency()
+ {
+ // Arrange
+ var country = CountryCode.TwoLetterCode.US;
+
+ // Act
+ var result = country.IsCurrencyUsedByCountry(CurrencyCode.EUR);
+
+ // Assert
+ Assert.False(result);
+ }
+
+ [Fact]
+ public void IsCurrencyUsedByCountry_Should_Return_False_For_Unknown_Country()
+ {
+ // Arrange
+ var country = (CountryCode.TwoLetterCode)999;
+
+ // Act
+ var result = country.IsCurrencyUsedByCountry(CurrencyCode.USD);
+
+ // Assert
+ Assert.False(result);
+ }
+
+ [Fact]
+ public void IsCurrencyUsedByCountry_Should_Work_For_All_Returned_Currencies()
+ {
+ // Arrange
+ var country = CountryCode.TwoLetterCode.CH;
+
+ // Act
+ foreach (var currency in country.GetAllCurrencies())
+ {
+ // Assert
+ Assert.True(country.IsCurrencyUsedByCountry(currency));
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/tests/HawkN.Iso.Countries.Currencies.Tests/HawkN.Iso.Countries.Currencies.Tests.csproj b/src/tests/HawkN.Iso.Countries.Currencies.Tests/HawkN.Iso.Countries.Currencies.Tests.csproj
new file mode 100644
index 0000000..827c793
--- /dev/null
+++ b/src/tests/HawkN.Iso.Countries.Currencies.Tests/HawkN.Iso.Countries.Currencies.Tests.csproj
@@ -0,0 +1,22 @@
+
+
+ net8.0
+ enable
+ enable
+
+ false
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/tests/HawkN.Iso.Countries.Generators.Tests/Handlers/JsonCountryHandlerTests.cs b/src/tests/HawkN.Iso.Countries.Generators.Tests/Handlers/JsonCountryHandlerTests.cs
deleted file mode 100644
index e3537c1..0000000
--- a/src/tests/HawkN.Iso.Countries.Generators.Tests/Handlers/JsonCountryHandlerTests.cs
+++ /dev/null
@@ -1,61 +0,0 @@
-using HawkN.Iso.Countries.Generators.Handlers;
-namespace HawkN.Iso.Countries.Generators.Tests.Handlers;
-
-public class JsonCountryHandlerTests
-{
- [Fact]
- public void LoadActualCountries_ValidJson_ReturnsParsedData()
- {
- // Arrange
- var json = @"{
- ""3166-1"": [
- {
- ""name"": ""Afghanistan"",
- ""alpha_2"": ""af"",
- ""alpha_3"": ""afg"",
- ""numeric"": ""004"",
- ""official_name"": ""Islamic Republic of Afghanistan""
- }
- ]
- }";
- var handler = new JsonCountryHandler(json);
-
- // Act
- var results = handler.LoadActualCountries();
-
- // Assert
- Assert.Single(results);
- Assert.Equal("Afghanistan", results[0].Name);
- Assert.Equal("AF", results[0].CodeAlpha2);
- Assert.Equal("AFG", results[0].CodeAlpha3);
- }
-
- [Fact]
- public void LoadActualCountries_InvalidEntry_SkipsIt()
- {
- // Arrange
- // Пропускаем alpha_2 (валидация требует длину 2)
- var json = @"{
- ""3166-1"": [
- { ""name"": ""Bad"", ""alpha_2"": ""A"", ""alpha_3"": ""AAA"", ""numeric"": ""001"" }
- ]
- }";
- var handler = new JsonCountryHandler(json);
-
- // Act
- var results = handler.LoadActualCountries();
-
- // Assert
- Assert.Empty(results);
- }
-
- [Fact]
- public void LoadActualCountries_MalformedJson_ThrowsException()
- {
- // Arrange
- var handler = new JsonCountryHandler("invalid json");
-
- // Act & Assert
- Assert.Throws(() => handler.LoadActualCountries());
- }
-}
\ No newline at end of file
diff --git a/src/tests/HawkN.Iso.Countries.Generators.Tests/Handlers/JsonCountryLoaderTests.cs b/src/tests/HawkN.Iso.Countries.Generators.Tests/Handlers/JsonCountryLoaderTests.cs
deleted file mode 100644
index b4c13ba..0000000
--- a/src/tests/HawkN.Iso.Countries.Generators.Tests/Handlers/JsonCountryLoaderTests.cs
+++ /dev/null
@@ -1,63 +0,0 @@
-using HawkN.Iso.Countries.Generators.Handlers;
-namespace HawkN.Iso.Countries.Generators.Tests.Handlers;
-
-public class JsonCountryLoaderTests
-{
- private const string ValidJson = @"{
- ""3166-1"": [
- { ""name"": ""Germany"", ""alpha_2"": ""de"", ""alpha_3"": ""deu"", ""numeric"": ""276"" },
- { ""name"": ""Austria"", ""alpha_2"": ""at"", ""alpha_3"": ""aut"", ""numeric"": ""040"" },
- { ""name"": ""France"", ""alpha_2"": ""fr"", ""alpha_3"": ""fra"", ""numeric"": ""250"" }
- ]
- }";
-
- [Fact]
- public void Constructor_ValidJson_PopulatesAndSortsCountriesByName()
- {
- // Act
- var loader = new JsonCountryLoader(ValidJson);
-
- // Assert
- Assert.Equal(3, loader.ActualCountries.Count);
-
- Assert.Equal("Austria", loader.ActualCountries[0].Name);
- Assert.Equal("France", loader.ActualCountries[1].Name);
- Assert.Equal("Germany", loader.ActualCountries[2].Name);
- }
-
- [Fact]
- public void Constructor_EmptyJson_ReturnsEmptyList()
- {
- // Arrange
- var emptyJson = @"{ ""3166-1"": [] }";
-
- // Act
- var loader = new JsonCountryLoader(emptyJson);
-
- // Assert
- Assert.Empty(loader.ActualCountries);
- }
-
- [Theory]
- [InlineData("")]
- [InlineData(" ")]
- [InlineData(null)]
- public void Constructor_InvalidInput_ReturnsEmptyList(string? input)
- {
- // Act
- var loader = new JsonCountryLoader(input!);
-
- // Assert
- Assert.Empty(loader.ActualCountries);
- }
-
- [Fact]
- public void Constructor_MalformedJson_ThrowsInvalidDataException()
- {
- // Arrange
- var malformedJson = "{ \"3166-1\": [ { \"name\": \"Missing Brackets\" ";
-
- // Act & Assert
- Assert.Throws(() => new JsonCountryLoader(malformedJson));
- }
-}
\ No newline at end of file
diff --git a/src/tests/HawkN.Iso.Countries.Tests/Services/CountryCodeServiceTests.cs b/src/tests/HawkN.Iso.Countries.Tests/Services/CountryCodeServiceTests.cs
index 2367ab1..6f6fce4 100644
--- a/src/tests/HawkN.Iso.Countries.Tests/Services/CountryCodeServiceTests.cs
+++ b/src/tests/HawkN.Iso.Countries.Tests/Services/CountryCodeServiceTests.cs
@@ -77,7 +77,7 @@ public void Get_ByNumericInt_ReturnsCorrectCountry()
// Assert
Assert.NotNull(country);
- Assert.Equal("Germany", country!.Name);
+ Assert.Equal("Germany", country.Name);
}
[Fact]