miguelcoba

miguelcoba

Best way to get ISO 3166-1:2006 Alpha-3 code

Hi,

I’m using 2-char country codes from `Cldr.Territory.country_codes/0` in Cldr.Territory package, but I need to get the corresponding 3-letter country code as specified in ISO 3166-1:2006 Alpha-3 code.

Is there a quick way to transform those using the Cldr package family or should I use another package or maybe fallback to a hardcoded map and fetch it from there? e.g.

@countries %{

US: “USA”,

MX: “MEX”


}

def country_code_alpha_3(country), do: Map.get(@contries, country)

Thanks in advance,

Miguel

Marked As Solved

kip

kip

ex_cldr Core Team

I’ve published ex_cldr version 2.47.0 that adds Cldr.Config.territory_codes/0. I’ve also opened a PR to ex_cldr_territories for @Schultzer to consider.

For now you can use the new function as:

@territory_codes Cldr.Config.territory_codes()
def territory_codes do
  @territory_codes
end

The functions in Cldr.Config all read, decode and normalise data so you only want to do that once, at compile time, hence the module attribute approach.

Example

iex> Cldr.Config.territory_codes()
%{
  EA: %{},
  IM: %{alpha3: "IMN", numeric: "833"},
  XG: %{alpha3: "XGG", numeric: "979"},
  BH: %{alpha3: "BHR", fips10: "BA", numeric: "048"},
  JM: %{alpha3: "JAM", numeric: "388"},
  JO: %{alpha3: "JOR", numeric: "400"},
  NC: %{alpha3: "NCL", numeric: "540"},
  QO: %{alpha3: "QOO", numeric: "961"},
  QU: %{alpha3: "QUU", numeric: "967"},
  VN: %{alpha3: "VNM", fips10: "VM", numeric: "704"},
  YE: %{alpha3: "YEM", fips10: "YM", numeric: "887"},
  AG: %{alpha3: "ATG", fips10: "AC", numeric: "028"},
  XE: %{alpha3: "XEE", numeric: "977"},
  KR: %{alpha3: "KOR", fips10: "KS", numeric: "410"},
  BD: %{alpha3: "BGD", fips10: "BG", numeric: "050"},
  IT: %{alpha3: "ITA", numeric: "380"},
  AD: %{alpha3: "AND", fips10: "AN", numeric: "020"},
  SY: %{alpha3: "SYR", numeric: "760"},
  SA: %{alpha3: "SAU", numeric: "682"},
  SB: %{alpha3: "SLB", fips10: "BP", numeric: "090"},
  AN: %{alpha3: "ANT", fips10: "NT", numeric: "530"},
  NP: %{alpha3: "NPL", numeric: "524"},
  XY: %{alpha3: "XYY", numeric: "997"},
  BI: %{alpha3: "BDI", fips10: "BY", numeric: "108"},
  PL: %{alpha3: "POL", numeric: "616"},
  XA: %{alpha3: "XAA", numeric: "973"},
  AO: %{alpha3: "AGO", numeric: "024"},
  HT: %{alpha3: "HTI", fips10: "HA", numeric: "332"},
  ML: %{alpha3: "MLI", numeric: "466"},
  GY: %{alpha3: "GUY", numeric: "328"},
  CH: %{...},
  ...
}
11
Post #6

Also Liked

kip

kip

ex_cldr Core Team

Perfectly fine - it’s been on the “must get around to this” list for a while. So I may as well get around to it :slight_smile: I should have something you can work with in the next 24 hours.

13
Post #4
arcanemachine

arcanemachine

Kip, you are a treasure to us all.

kip

kip

ex_cldr Core Team

CLDR does contain ISO 3166 Alpha 3 mappings but they aren’t exposed in ex_cldr_territories iirc.

I’ll take a look at working up a PR for this in the next day.

Last Post!

miguelcoba

miguelcoba

Thank you so much, @kip.

Updating my versions!

Where Next?

Popular in Questions Top

vegabook
I’m brand new to Phoenix and I have stripped one of the demo applications to the bone. I just want to get an svg up on the screen. Here i...
New
nsuchy
Hi. I’ve noticed that Windows Powershell has it’s own IEX command and you cannot access Elixir’s IEX due to the conflict. This isn’t a cr...
New
aalberti333
As the title describes, I’m trying to run Enum.map() over a list of key/value pairs, where the value is a map. My data looks like this: ...
New
siddhant3030
Hi, I have to write a raw query for one of my project. But till now I have used ecto queries and don’t have much experience writing raw ...
New
pmjoe
I have a relationship of love and hate with Elixir. Lots of things are just absolutely right, but there are some things that are kind of ...
New
WestKeys
Currently suffering from paralysis by [HTTP client] analysis. This is rather unusual in Elixirland as there tends to be consensus on the ...
New
fayddelight
I tried installing elixir 1.11.2 erlang 23.3.4 via asdf in my zsh shell. Enabled the versions locally and globally. When I list them ...
New

Other popular topics Top

electic
Hi, I am new to Elixir. I am trying to use the DateTime component to insert a date into MySQL however the there seems to be no way to fo...
New
JeremM34
Hello, how can I check the Phoenix version ? Thanks !
New
vonH
In asking this question I am more interested about the expressiveness of the language itself and less concerned about the availability of...
New
dokuzbir
I want to highlight html closing tags when i click a html tag. That works in .html files but doesnt work for html.eex templates. How can...
New
dblack
I’ve got an issue with an app and I’ve no idea of how to troubleshoot it. I’m hoping someone here might have seen something similar. I p...
New
sergio
Kind of like when jquery came out, it was super necessary. Existing drag and drop libraries have a bunch of baggage to support old browse...
New

We're in Beta

About us Mission Statement