Rename misc.country to misc.territory, name each one's sovereign state, and state the four data rules that settle it
This commit is contained in:
+7
-5
@@ -11,7 +11,7 @@ replacement, and each removed path, column or flag.
|
|||||||
- First release: the CLI, the library and the shipped data set.
|
- First release: the CLI, the library and the shipped data set.
|
||||||
- Table categories: a category JSON naming a `rows` TSV beside it, with the options
|
- Table categories: a category JSON naming a `rows` TSV beside it, with the options
|
||||||
`key`, `name`, `weight` and `parent`; a path selects a row by key or name,
|
`key`, `name`, `weight` and `parent`; a path selects a row by key or name,
|
||||||
`misc.country[SE]`, and descends to a linked table by name; linked tables draw
|
`misc.territory[SE]`, and descends to a linked table by name; linked tables draw
|
||||||
consistently within one render and draw group. `rows` is an option, so no
|
consistently within one render and draw group. `rows` is an option, so no
|
||||||
template may carry a field of that name. A `name` without a `key` resolves
|
template may carry a field of that name. A `name` without a `key` resolves
|
||||||
inside the table's `parent`. Refused at `New`: a `name` without a `key` or a
|
inside the table's `parent`. Refused at `New`: a `name` without a `key` or a
|
||||||
@@ -21,10 +21,12 @@ replacement, and each removed path, column or flag.
|
|||||||
row of, or two paths pinning different rows of one table.
|
row of, or two paths pinning different rows of one table.
|
||||||
- `New` refuses a root choice of templates sharing one format and one set of string
|
- `New` refuses a root choice of templates sharing one format and one set of string
|
||||||
fields, naming the rows TSV to write instead.
|
fields, naming the rows TSV to write instead.
|
||||||
- `misc.country`, `misc.currency`, `misc.language`, `misc.httpstatus` and
|
- `misc.territory`, `misc.currency`, `misc.language`, `misc.httpstatus` and
|
||||||
`misc.mimetype` are tables. `misc.country` is every ISO 3166 country that has a
|
`misc.mimetype` are tables. `misc.territory` is every ISO 3166-1 territory that has
|
||||||
capital, a currency and a TLD, with the columns `calling-code`, `capital`,
|
a capital, a currency and a TLD, with the columns `calling-code`, `capital`,
|
||||||
`currency`, `flag`, `languages`, `numeric` and `tld` added; `misc.currency` the
|
`country`, `currency`, `flag`, `languages`, `numeric` and `tld` added, `country`
|
||||||
|
naming the sovereign state it belongs to and itself where it is one;
|
||||||
|
`misc.currency` the
|
||||||
current ISO 4217 currencies with a minor unit, with `decimals` and `numeric`
|
current ISO 4217 currencies with a minor unit, with `decimals` and `numeric`
|
||||||
added, and its symbols from CLDR; `misc.language` every ISO 639-2 entry carrying a
|
added, and its symbols from CLDR; `misc.language` every ISO 639-2 entry carrying a
|
||||||
639-1 code, with a `code3` column holding its 639-2/T code; `misc.httpstatus` each
|
639-1 code, with a `code3` column holding its 639-2/T code; `misc.httpstatus` each
|
||||||
|
|||||||
+1
-1
@@ -15,7 +15,7 @@ Every shipped dataset, its source, its licence and the attribution it asks for.
|
|||||||
| `en_US/first-name.tsv` | [SSA](https://www.ssa.gov/oact/babynames/) baby names, births 1930 to 2020, through [hackerb9/ssa-baby-names](https://github.com/hackerb9/ssa-baby-names) | public domain | none required | `data-import/names-us.py` |
|
| `en_US/first-name.tsv` | [SSA](https://www.ssa.gov/oact/babynames/) baby names, births 1930 to 2020, through [hackerb9/ssa-baby-names](https://github.com/hackerb9/ssa-baby-names) | public domain | none required | `data-import/names-us.py` |
|
||||||
| `en_US/last-name.tsv` | Census Bureau surnames occurring 100 or more times, 2010 | public domain | none required | `data-import/names-us.py` |
|
| `en_US/last-name.tsv` | Census Bureau surnames occurring 100 or more times, 2010 | public domain | none required | `data-import/names-us.py` |
|
||||||
| `sv_SE/sex.tsv`, `sv_SE/birth-number.tsv`, `sv_SE/title.tsv`, `en_US/sex.tsv`, `en_US/title.tsv` | curated (Skatteverket's test birth numbers are facts) | — | — | — |
|
| `sv_SE/sex.tsv`, `sv_SE/birth-number.tsv`, `sv_SE/title.tsv`, `en_US/sex.tsv`, `en_US/title.tsv` | curated (Skatteverket's test birth numbers are facts) | — | — | — |
|
||||||
| `misc/country.tsv` | [datasets/country-codes](https://github.com/datasets/country-codes) | [PDDL 1.0](https://opendatacommons.org/licenses/pddl/1-0/) | none required | `data-import/country.py` |
|
| `misc/territory.tsv` | [datasets/country-codes](https://github.com/datasets/country-codes) | [PDDL 1.0](https://opendatacommons.org/licenses/pddl/1-0/) | none required | `data-import/territory.py` |
|
||||||
| `misc/currency.tsv` | [datasets/currency-codes](https://github.com/datasets/currency-codes); symbols from [Unicode CLDR](https://github.com/unicode-org/cldr) `en.xml` and `root.xml` | PDDL 1.0; [Unicode License v3](https://www.unicode.org/license.txt) | CLDR: "Copyright © 1991-2025 Unicode, Inc. Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the United States and other countries." | `data-import/currency.py` |
|
| `misc/currency.tsv` | [datasets/currency-codes](https://github.com/datasets/currency-codes); symbols from [Unicode CLDR](https://github.com/unicode-org/cldr) `en.xml` and `root.xml` | PDDL 1.0; [Unicode License v3](https://www.unicode.org/license.txt) | CLDR: "Copyright © 1991-2025 Unicode, Inc. Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the United States and other countries." | `data-import/currency.py` |
|
||||||
| `misc/httpstatus.tsv` | [IANA HTTP Status Code Registry](https://www.iana.org/assignments/http-status-codes/) | [public domain](https://www.iana.org/help/licensing-terms) | none required | `data-import/httpstatus.py` |
|
| `misc/httpstatus.tsv` | [IANA HTTP Status Code Registry](https://www.iana.org/assignments/http-status-codes/) | [public domain](https://www.iana.org/help/licensing-terms) | none required | `data-import/httpstatus.py` |
|
||||||
| `misc/language.tsv` | [datasets/language-codes](https://github.com/datasets/language-codes), the [Library of Congress](https://www.loc.gov/standards/iso639-2/) ISO 639-2 register | [PDDL 1.0](https://opendatacommons.org/licenses/pddl/1-0/) | none required | `data-import/language.py` |
|
| `misc/language.tsv` | [datasets/language-codes](https://github.com/datasets/language-codes), the [Library of Congress](https://www.loc.gov/standards/iso639-2/) ISO 639-2 register | [PDDL 1.0](https://opendatacommons.org/licenses/pddl/1-0/) | none required | `data-import/language.py` |
|
||||||
|
|||||||
@@ -17,8 +17,8 @@ fejkdata sv_SE.person.last # Eriksson
|
|||||||
fejkdata --seed 42 sv_SE.address # the same address every run
|
fejkdata --seed 42 sv_SE.address # the same address every run
|
||||||
fejkdata -n 3 --separator ', ' sv_SE.word # nät, barn, sol
|
fejkdata -n 3 --separator ', ' sv_SE.word # nät, barn, sol
|
||||||
fejkdata --list # every path the data offers
|
fejkdata --list # every path the data offers
|
||||||
fejkdata 'misc.country[SE].capital' # Stockholm — a table's row, selected by key or name
|
fejkdata 'misc.territory[SE].capital' # Stockholm — a table's row, selected by key or name
|
||||||
fejkdata 'geo.SE.locality[Lund].street' # Fjelievägen — a linked table, drawn inside the row
|
fejkdata 'geo.SE.locality[Lund].street' # Fjelievägen — a linked table, drawn inside the row
|
||||||
fejkdata --data-path ./mydata sv_SE.word # layer a directory over the shipped data
|
fejkdata --data-path ./mydata sv_SE.word # layer a directory over the shipped data
|
||||||
fejkdata --no-shipped-data -d ./mydata --list # only your data
|
fejkdata --no-shipped-data -d ./mydata --list # only your data
|
||||||
fejkdata 'name: {/sv_SE.person.last}' # name: <a surname> — an inline template
|
fejkdata 'name: {/sv_SE.person.last}' # name: <a surname> — an inline template
|
||||||
@@ -161,15 +161,20 @@ Each locale carries `address`, `color`, `company`, `date`, `email`, `first-name`
|
|||||||
`ip`, `last-name`, `person`, `phone`, `price`, `sentence`, `sex`, `time`, `url`,
|
`ip`, `last-name`, `person`, `phone`, `price`, `sentence`, `sex`, `time`, `url`,
|
||||||
`username`, `version` and `word`, formatted per locale; `sv_SE` adds
|
`username`, `version` and `word`, formatted per locale; `sv_SE` adds
|
||||||
`personnummer` and `samordningsnummer`, `en_US` adds `ssn` and `itin`. `misc`
|
`personnummer` and `samordningsnummer`, `en_US` adds `ssn` and `itin`. `misc`
|
||||||
carries `car`, `coordinate`, `country` (ISO 3166), `creditcard` (Luhn-valid),
|
carries `car`, `coordinate`, `creditcard` (Luhn-valid), `currency` (ISO 4217),
|
||||||
`currency` (ISO 4217), `datetime` (RFC 3339), `emoji`, `httpstatus`, `language`
|
`datetime` (RFC 3339), `emoji`, `httpstatus`, `language` (ISO 639-1, with its
|
||||||
(ISO 639-1, with its 639-2/T code), `mac`, `mimetype`, `objectid`, `timezone`
|
639-2/T code), `mac`, `mimetype`, `objectid`, `territory` (ISO 3166-1), `timezone`
|
||||||
(IANA), `useragent` and `uuid` (v4). Many carry sub-fields — `misc.currency.symbol`,
|
(IANA), `useragent` and `uuid` (v4). Many carry sub-fields — `misc.currency.symbol`,
|
||||||
`misc.country.alpha2`, `misc.httpstatus.code` — which `--list` shows. `country`,
|
`misc.territory.alpha2`, `misc.httpstatus.code` — which `--list` shows. `currency`,
|
||||||
`currency`, `httpstatus`, `language` and `mimetype` are [tables](#table), so
|
`httpstatus`, `language`, `mimetype` and `territory` are [tables](#table), so
|
||||||
`misc.country[SE].capital` and `misc.currency[Euro].symbol` select a row;
|
`misc.territory[SE].capital` and `misc.currency[Euro].symbol` select a row;
|
||||||
[`DATA-LICENSES.md`](DATA-LICENSES.md) names each table's source and licence.
|
[`DATA-LICENSES.md`](DATA-LICENSES.md) names each table's source and licence.
|
||||||
|
|
||||||
|
ISO 3166-1 codes territories, not sovereign states, so that is what the table is
|
||||||
|
called: Greenland and Åland have codes of their own, and `misc.territory.country`
|
||||||
|
names the state each belongs to — `DK` for Greenland, `FI` for Åland, and its own
|
||||||
|
code for a sovereign one.
|
||||||
|
|
||||||
`sex`, `first-name` and `last-name` are tables weighted by bearers, from SCB, the
|
`sex`, `first-name` and `last-name` are tables weighted by bearers, from SCB, the
|
||||||
SSA and the Census Bureau. `first-name` links to `sex`, so `sv_SE.sex[f].first-name`
|
SSA and the Census Bureau. `first-name` links to `sex`, so `sv_SE.sex[f].first-name`
|
||||||
draws a woman's name, and a name both sexes carry is a row under each, so
|
draws a woman's name, and a name both sexes carry is a row under each, so
|
||||||
@@ -447,11 +452,11 @@ inline template has no file beside it, so there it stays a choice.
|
|||||||
|
|
||||||
### Row selection
|
### Row selection
|
||||||
|
|
||||||
`[key]` or `[name]` after a table's name selects one row: `misc.country[SE]` and
|
`[key]` or `[name]` after a table's name selects one row: `misc.territory[SE]` and
|
||||||
`misc.country[Sweden]` name one row, and `misc.country[SE].capital` reads its column.
|
`misc.territory[Sweden]` name one row, and `misc.territory[SE].capital` reads its column.
|
||||||
A name naming several rows is an error listing their keys, unless a row selected
|
A name naming several rows is an error listing their keys, unless a row selected
|
||||||
before it settles which ([Linked tables](#linked-tables)). A selector is part of the path, so it works
|
before it settles which ([Linked tables](#linked-tables)). A selector is part of the path, so it works
|
||||||
wherever a path does: `Fake`, `FakeRecord`, a `{/misc.country[SE].capital}` reference
|
wherever a path does: `Fake`, `FakeRecord`, a `{/misc.territory[SE].capital}` reference
|
||||||
and a struct tag. A dot inside the brackets belongs to the key or name, so
|
and a struct tag. A dot inside the brackets belongs to the key or name, so
|
||||||
`city[St. Louis]` selects it. A path starts with a name, and `[` still opens a JSON
|
`city[St. Louis]` selects it. A path starts with a name, and `[` still opens a JSON
|
||||||
array at the start of a CLI argument, so `'[SE]'` alone names nothing.
|
array at the start of a CLI argument, so `'[SE]'` alone names nothing.
|
||||||
@@ -772,6 +777,13 @@ App developers writing tests and fixtures, in Go and at a shell:
|
|||||||
9. **Fast enough to be free** — a value renders in about a microsecond and `New`
|
9. **Fast enough to be free** — a value renders in about a microsecond and `New`
|
||||||
parses and validates the whole set once upfront, so generating fixtures stays
|
parses and validates the whole set once upfront, so generating fixtures stays
|
||||||
noise against a test's own runtime.
|
noise against a test's own runtime.
|
||||||
|
10. **Data is sourced, or on its way there** — a shipped fact, a name, place,
|
||||||
|
code, id or classification, is read from a register or open dataset by a
|
||||||
|
[`data-import/`](data-import) script wherever one exists to read; where none
|
||||||
|
does yet a small hand-written set ships and [`todo.md`](todo.md) carries the
|
||||||
|
step that replaces it. Only non-factual copy stays authored. A sourced table
|
||||||
|
holds the rows its source holds: none is added by hand, and one is dropped
|
||||||
|
only by a rule the script states.
|
||||||
|
|
||||||
## Decisions
|
## Decisions
|
||||||
|
|
||||||
@@ -1124,11 +1136,40 @@ App developers writing tests and fixtures, in Go and at a shell:
|
|||||||
tells the two apart, `sex[f].first-name[Kim]`, the ambiguity error spells each
|
tells the two apart, `sex[f].first-name[Kim]`, the ambiguity error spells each
|
||||||
row inside its parent, and a name repeating inside one parent row is refused at
|
row inside its parent, and a name repeating inside one parent row is refused at
|
||||||
load, since nothing could then select it.
|
load, since nothing could then select it.
|
||||||
- **`misc.country` carries a currency code, it does not link to `misc.currency`.**
|
- **`misc` is what every locale shares.** A category whose facts differ by country
|
||||||
|
belongs in that country's locale, read from the register that country's own
|
||||||
|
records use; `misc` takes only sources that are international. So NHTSA vPIC
|
||||||
|
builds `en_US.car` and Mobility Sweden's registrations `sv_SE.car`, never
|
||||||
|
`misc.car`.
|
||||||
|
- **A register's canonical spelling loses to the one its domain writes.** Where a
|
||||||
|
source offers several spellings of one fact, the shipped one is what records in
|
||||||
|
that domain carry. `misc.timezone` reads `zone.tab` and not the `zone1970.tab`
|
||||||
|
that supersedes it, because the latter keeps one zone per set of countries that
|
||||||
|
have agreed since 1970: it spells Sweden `Europe/Berlin`, and no Swedish system
|
||||||
|
writes that. For the same reason `misc.language` takes the ISO 639-2 register's
|
||||||
|
first synonym over CLDR, which says "Chinese, Mandarin" for `zh`.
|
||||||
|
- **`misc.territory` is the spine, and a `misc` table naming a territory links to
|
||||||
|
it.** Where every territory row has a child the column is a `parent`, and the
|
||||||
|
import drops the child rows whose territory the set does not ship — 17 of
|
||||||
|
`misc.timezone`'s, Antarctica's ten among them. Agreement across a record is
|
||||||
|
worth more than the last rows of a table. Where no such link can hold the fact
|
||||||
|
stays a column.
|
||||||
|
- **`misc.territory` names its sovereign in a column, and there is no `misc.country`
|
||||||
|
table.** ISO 3166-1 codes territories, so `territory` is the honest name, and
|
||||||
|
`is_independent` in the register gives each one's state. A second table of the 195
|
||||||
|
sovereigns would hold a `DK` row beside the territory `DK` row, both carrying
|
||||||
|
Denmark's capital, currency, flag and TLD — two owners for one fact, drifting at
|
||||||
|
the next import. Splitting the columns to avoid that is worse: put `capital` on
|
||||||
|
the territory alone and a country row can no longer name Copenhagen. The column
|
||||||
|
cannot be a `parent`, since a table never reaches its own family; a test proves
|
||||||
|
every value names a row instead. A territory the register records no state for
|
||||||
|
stands alone, which is `EH` alone, and naming one for it would be a claim
|
||||||
|
fejkdata has no business making.
|
||||||
|
- **`misc.territory` carries a currency code, it does not link to `misc.currency`.**
|
||||||
A `parent` demands a child for every parent row, and ISO 4217 registers codes no
|
A `parent` demands a child for every parent row, and ISO 4217 registers codes no
|
||||||
country's row can name: the funds codes (Mvdol, WIR Euro, US Dollar (Next day)),
|
country's row can name: the funds codes (Mvdol, WIR Euro, US Dollar (Next day)),
|
||||||
and VED beside VES, both Venezuela's, of which a country row names one. Linking
|
and VED beside VES, both Venezuela's, of which a country row names one. Linking
|
||||||
would trade the register for the link, and `misc.country.currency` already pairs a
|
would trade the register for the link, and `misc.territory.currency` already pairs a
|
||||||
country with its currency in one draw.
|
country with its currency in one draw.
|
||||||
- **An extension may name two media types.** `.xml`, `.rtf`, `.sub`, `.mpp` and `.ac`
|
- **An extension may name two media types.** `.xml`, `.rtf`, `.sub`, `.mpp` and `.ac`
|
||||||
each name two rows of `misc.mimetype`. Separating them would mean dropping a
|
each name two rows of `misc.mimetype`. Separating them would mean dropping a
|
||||||
@@ -1207,7 +1248,7 @@ and `names-us.py` rejects a client for a while after a burst, so `--surnames` ta
|
|||||||
a copy of the surname file:
|
a copy of the surname file:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
docker compose run --rm --user "$(id -u):$(id -g)" data-import data-import/country.py
|
docker compose run --rm --user "$(id -u):$(id -g)" data-import data-import/territory.py
|
||||||
docker compose run --rm --user "$(id -u):$(id -g)" data-import data-import/currency.py
|
docker compose run --rm --user "$(id -u):$(id -g)" data-import data-import/currency.py
|
||||||
docker compose run --rm --user "$(id -u):$(id -g)" data-import data-import/geo-us.py
|
docker compose run --rm --user "$(id -u):$(id -g)" data-import data-import/geo-us.py
|
||||||
docker compose run --rm --user "$(id -u):$(id -g)" -e TRAFIKVERKET_API_KEY data-import data-import/geo-se.py
|
docker compose run --rm --user "$(id -u):$(id -g)" -e TRAFIKVERKET_API_KEY data-import data-import/geo-se.py
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ import (
|
|||||||
const usage = `Usage: fejkdata [flags] <path|template>
|
const usage = `Usage: fejkdata [flags] <path|template>
|
||||||
|
|
||||||
<path> a category, or a dotted path into one (person, person.last);
|
<path> a category, or a dotted path into one (person, person.last);
|
||||||
a table's row by key or name: 'misc.country[SE]', 'misc.country[Sweden].tld'
|
a table's row by key or name: 'misc.territory[SE]', 'misc.territory[Sweden].tld'
|
||||||
<template> a format string or JSON value to render inline, e.g.
|
<template> a format string or JSON value to render inline, e.g.
|
||||||
'name: {/sv_SE.person.last}' or '{"format":"{x}","x":["bosse","lina"]}'
|
'name: {/sv_SE.person.last}' or '{"format":"{x}","x":["bosse","lina"]}'
|
||||||
|
|
||||||
|
|||||||
@@ -1,21 +1,23 @@
|
|||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
"""Rebuild data/misc/country.tsv from datasets/country-codes (PDDL).
|
"""Rebuild data/misc/territory.tsv from datasets/country-codes (PDDL).
|
||||||
|
|
||||||
data-import/country.py [--source URL_OR_FILE] [--cache DIR] [--out FILE]
|
data-import/territory.py [--source URL_OR_FILE] [--cache DIR] [--out FILE]
|
||||||
"""
|
"""
|
||||||
import argparse
|
import argparse
|
||||||
import csv
|
import csv
|
||||||
import io
|
import io
|
||||||
import re
|
import re
|
||||||
|
import sys
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
import source
|
import source
|
||||||
import tsv
|
import tsv
|
||||||
|
|
||||||
SOURCE = "https://raw.githubusercontent.com/datasets/country-codes/main/data/country-codes.csv"
|
SOURCE = "https://raw.githubusercontent.com/datasets/country-codes/main/data/country-codes.csv"
|
||||||
OUT = Path(__file__).resolve().parent.parent / "data" / "misc" / "country.tsv"
|
OUT = Path(__file__).resolve().parent.parent / "data" / "misc" / "territory.tsv"
|
||||||
CACHE = Path(__file__).resolve().parent / "cache"
|
CACHE = Path(__file__).resolve().parent / "cache"
|
||||||
COLUMNS = ["alpha2", "alpha3", "calling-code", "capital", "currency", "flag", "languages", "name", "numeric", "tld"]
|
COLUMNS = ["alpha2", "alpha3", "calling-code", "capital", "country", "currency", "flag", "languages", "name", "numeric", "tld"]
|
||||||
|
SOVEREIGN = re.compile(r"^(?:Part of|Territor(?:y|ies) of|Crown dependency of|Commonwealth of|Associated with) ([A-Z]{2})$")
|
||||||
# Gaps in the source, keyed by alpha2.
|
# Gaps in the source, keyed by alpha2.
|
||||||
FIXUPS = {"TR": {"currency": "TRY"}}
|
FIXUPS = {"TR": {"currency": "TRY"}}
|
||||||
|
|
||||||
@@ -33,6 +35,12 @@ def languages(field):
|
|||||||
return ",".join(p for p in field.split(",") if p)
|
return ",".join(p for p in field.split(",") if p)
|
||||||
|
|
||||||
|
|
||||||
|
def country(alpha2, independent):
|
||||||
|
"""The sovereign state the register records; a territory it records none for stands alone."""
|
||||||
|
m = SOVEREIGN.match(independent)
|
||||||
|
return m.group(1) if m else alpha2
|
||||||
|
|
||||||
|
|
||||||
def rows(text):
|
def rows(text):
|
||||||
for r in csv.DictReader(io.StringIO(text)):
|
for r in csv.DictReader(io.StringIO(text)):
|
||||||
alpha2 = r["ISO3166-1-Alpha-2"]
|
alpha2 = r["ISO3166-1-Alpha-2"]
|
||||||
@@ -41,6 +49,7 @@ def rows(text):
|
|||||||
"alpha3": r["ISO3166-1-Alpha-3"],
|
"alpha3": r["ISO3166-1-Alpha-3"],
|
||||||
"calling-code": calling_code(r["Dial"]),
|
"calling-code": calling_code(r["Dial"]),
|
||||||
"capital": r["Capital"],
|
"capital": r["Capital"],
|
||||||
|
"country": country(alpha2, r["is_independent"]),
|
||||||
"currency": r["ISO4217-currency_alphabetic_code"].split(",")[0],
|
"currency": r["ISO4217-currency_alphabetic_code"].split(",")[0],
|
||||||
"flag": flag(alpha2),
|
"flag": flag(alpha2),
|
||||||
"languages": languages(r["Languages"]),
|
"languages": languages(r["Languages"]),
|
||||||
@@ -59,8 +68,12 @@ def main():
|
|||||||
p.add_argument("--source", default=SOURCE)
|
p.add_argument("--source", default=SOURCE)
|
||||||
p.add_argument("--out", default=str(OUT))
|
p.add_argument("--out", default=str(OUT))
|
||||||
a = p.parse_args()
|
a = p.parse_args()
|
||||||
table = rows(source.fetch(a.source, a.cache, "country-codes.csv").decode("utf-8"))
|
table = sorted(rows(source.fetch(a.source, a.cache, "country-codes.csv").decode("utf-8")), key=lambda r: r["alpha2"])
|
||||||
tsv.write(a.out, COLUMNS, sorted(table, key=lambda r: r["alpha2"]))
|
shipped = {r["alpha2"] for r in table}
|
||||||
|
for r in table:
|
||||||
|
if r["country"] not in shipped:
|
||||||
|
sys.exit(f"{r['alpha2']}: country {r['country']} is no shipped territory; a sovereign the set drops leaves its territories unreadable")
|
||||||
|
tsv.write(a.out, COLUMNS, table)
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
{ "format": "{name}", "rows": "country.tsv", "key": "alpha2", "name": "name" }
|
{ "format": "{name}", "rows": "territory.tsv", "key": "alpha2", "name": "name" }
|
||||||
|
|||||||
+242
-242
@@ -1,242 +1,242 @@
|
|||||||
alpha2 alpha3 calling-code capital currency flag languages name numeric tld
|
alpha2 alpha3 calling-code capital country currency flag languages name numeric tld
|
||||||
AD AND 376 Andorra la Vella EUR 🇦🇩 ca Andorra 020 .ad
|
AD AND 376 Andorra la Vella AD EUR 🇦🇩 ca Andorra 020 .ad
|
||||||
AE ARE 971 Abu Dhabi AED 🇦🇪 ar-AE,fa,en,hi,ur United Arab Emirates 784 .ae
|
AE ARE 971 Abu Dhabi AE AED 🇦🇪 ar-AE,fa,en,hi,ur United Arab Emirates 784 .ae
|
||||||
AF AFG 93 Kabul AFN 🇦🇫 fa-AF,ps,uz-AF,tk Afghanistan 004 .af
|
AF AFG 93 Kabul AF AFN 🇦🇫 fa-AF,ps,uz-AF,tk Afghanistan 004 .af
|
||||||
AG ATG 1-268 St. John's XCD 🇦🇬 en-AG Antigua & Barbuda 028 .ag
|
AG ATG 1-268 St. John's AG XCD 🇦🇬 en-AG Antigua & Barbuda 028 .ag
|
||||||
AI AIA 1-264 The Valley XCD 🇦🇮 en-AI Anguilla 660 .ai
|
AI AIA 1-264 The Valley GB XCD 🇦🇮 en-AI Anguilla 660 .ai
|
||||||
AL ALB 355 Tirana ALL 🇦🇱 sq,el Albania 008 .al
|
AL ALB 355 Tirana AL ALL 🇦🇱 sq,el Albania 008 .al
|
||||||
AM ARM 374 Yerevan AMD 🇦🇲 hy Armenia 051 .am
|
AM ARM 374 Yerevan AM AMD 🇦🇲 hy Armenia 051 .am
|
||||||
AO AGO 244 Luanda AOA 🇦🇴 pt-AO Angola 024 .ao
|
AO AGO 244 Luanda AO AOA 🇦🇴 pt-AO Angola 024 .ao
|
||||||
AR ARG 54 Buenos Aires ARS 🇦🇷 es-AR,en,it,de,fr,gn Argentina 032 .ar
|
AR ARG 54 Buenos Aires AR ARS 🇦🇷 es-AR,en,it,de,fr,gn Argentina 032 .ar
|
||||||
AS ASM 1-684 Pago Pago USD 🇦🇸 en-AS,sm,to American Samoa 016 .as
|
AS ASM 1-684 Pago Pago US USD 🇦🇸 en-AS,sm,to American Samoa 016 .as
|
||||||
AT AUT 43 Vienna EUR 🇦🇹 de-AT,hr,hu,sl Austria 040 .at
|
AT AUT 43 Vienna AT EUR 🇦🇹 de-AT,hr,hu,sl Austria 040 .at
|
||||||
AU AUS 61 Canberra AUD 🇦🇺 en-AU Australia 036 .au
|
AU AUS 61 Canberra AU AUD 🇦🇺 en-AU Australia 036 .au
|
||||||
AW ABW 297 Oranjestad AWG 🇦🇼 nl-AW,pap,es,en Aruba 533 .aw
|
AW ABW 297 Oranjestad NL AWG 🇦🇼 nl-AW,pap,es,en Aruba 533 .aw
|
||||||
AX ALA 358 Mariehamn EUR 🇦🇽 sv-AX Åland Islands 248 .ax
|
AX ALA 358 Mariehamn FI EUR 🇦🇽 sv-AX Åland Islands 248 .ax
|
||||||
AZ AZE 994 Baku AZN 🇦🇿 az,ru,hy Azerbaijan 031 .az
|
AZ AZE 994 Baku AZ AZN 🇦🇿 az,ru,hy Azerbaijan 031 .az
|
||||||
BA BIH 387 Sarajevo BAM 🇧🇦 bs,hr-BA,sr-BA Bosnia 070 .ba
|
BA BIH 387 Sarajevo BA BAM 🇧🇦 bs,hr-BA,sr-BA Bosnia 070 .ba
|
||||||
BB BRB 1-246 Bridgetown BBD 🇧🇧 en-BB Barbados 052 .bb
|
BB BRB 1-246 Bridgetown BB BBD 🇧🇧 en-BB Barbados 052 .bb
|
||||||
BD BGD 880 Dhaka BDT 🇧🇩 bn-BD,en Bangladesh 050 .bd
|
BD BGD 880 Dhaka BD BDT 🇧🇩 bn-BD,en Bangladesh 050 .bd
|
||||||
BE BEL 32 Brussels EUR 🇧🇪 nl-BE,fr-BE,de-BE Belgium 056 .be
|
BE BEL 32 Brussels BE EUR 🇧🇪 nl-BE,fr-BE,de-BE Belgium 056 .be
|
||||||
BF BFA 226 Ouagadougou XOF 🇧🇫 fr-BF,mos Burkina Faso 854 .bf
|
BF BFA 226 Ouagadougou BF XOF 🇧🇫 fr-BF,mos Burkina Faso 854 .bf
|
||||||
BG BGR 359 Sofia EUR 🇧🇬 bg,tr-BG,rom Bulgaria 100 .bg
|
BG BGR 359 Sofia BG EUR 🇧🇬 bg,tr-BG,rom Bulgaria 100 .bg
|
||||||
BH BHR 973 Manama BHD 🇧🇭 ar-BH,en,fa,ur Bahrain 048 .bh
|
BH BHR 973 Manama BH BHD 🇧🇭 ar-BH,en,fa,ur Bahrain 048 .bh
|
||||||
BI BDI 257 Gitega BIF 🇧🇮 fr-BI,rn Burundi 108 .bi
|
BI BDI 257 Gitega BI BIF 🇧🇮 fr-BI,rn Burundi 108 .bi
|
||||||
BJ BEN 229 Porto-Novo XOF 🇧🇯 fr-BJ Benin 204 .bj
|
BJ BEN 229 Porto-Novo BJ XOF 🇧🇯 fr-BJ Benin 204 .bj
|
||||||
BL BLM 590 Gustavia EUR 🇧🇱 fr St. Barthélemy 652 .gp
|
BL BLM 590 Gustavia FR EUR 🇧🇱 fr St. Barthélemy 652 .gp
|
||||||
BM BMU 1-441 Hamilton BMD 🇧🇲 en-BM,pt Bermuda 060 .bm
|
BM BMU 1-441 Hamilton GB BMD 🇧🇲 en-BM,pt Bermuda 060 .bm
|
||||||
BN BRN 673 Bandar Seri Begawan BND 🇧🇳 ms-BN,en-BN Brunei 096 .bn
|
BN BRN 673 Bandar Seri Begawan BN BND 🇧🇳 ms-BN,en-BN Brunei 096 .bn
|
||||||
BO BOL 591 Sucre BOB 🇧🇴 es-BO,qu,ay Bolivia 068 .bo
|
BO BOL 591 Sucre BO BOB 🇧🇴 es-BO,qu,ay Bolivia 068 .bo
|
||||||
BR BRA 55 Brasilia BRL 🇧🇷 pt-BR,es,en,fr Brazil 076 .br
|
BR BRA 55 Brasilia BR BRL 🇧🇷 pt-BR,es,en,fr Brazil 076 .br
|
||||||
BS BHS 1-242 Nassau BSD 🇧🇸 en-BS Bahamas 044 .bs
|
BS BHS 1-242 Nassau BS BSD 🇧🇸 en-BS Bahamas 044 .bs
|
||||||
BT BTN 975 Thimphu INR 🇧🇹 dz Bhutan 064 .bt
|
BT BTN 975 Thimphu BT INR 🇧🇹 dz Bhutan 064 .bt
|
||||||
BW BWA 267 Gaborone BWP 🇧🇼 en-BW,tn-BW Botswana 072 .bw
|
BW BWA 267 Gaborone BW BWP 🇧🇼 en-BW,tn-BW Botswana 072 .bw
|
||||||
BY BLR 375 Minsk BYN 🇧🇾 be,ru Belarus 112 .by
|
BY BLR 375 Minsk BY BYN 🇧🇾 be,ru Belarus 112 .by
|
||||||
BZ BLZ 501 Belmopan BZD 🇧🇿 en-BZ,es Belize 084 .bz
|
BZ BLZ 501 Belmopan BZ BZD 🇧🇿 en-BZ,es Belize 084 .bz
|
||||||
CA CAN 1 Ottawa CAD 🇨🇦 en-CA,fr-CA,iu Canada 124 .ca
|
CA CAN 1 Ottawa CA CAD 🇨🇦 en-CA,fr-CA,iu Canada 124 .ca
|
||||||
CC CCK 61 West Island AUD 🇨🇨 ms-CC,en Cocos Islands 166 .cc
|
CC CCK 61 West Island AU AUD 🇨🇨 ms-CC,en Cocos Islands 166 .cc
|
||||||
CD COD 243 Kinshasa CDF 🇨🇩 fr-CD,ln,ktu,kg,sw,lua Congo - Kinshasa 180 .cd
|
CD COD 243 Kinshasa CD CDF 🇨🇩 fr-CD,ln,ktu,kg,sw,lua Congo - Kinshasa 180 .cd
|
||||||
CF CAF 236 Bangui XAF 🇨🇫 fr-CF,sg,ln,kg Central African Republic 140 .cf
|
CF CAF 236 Bangui CF XAF 🇨🇫 fr-CF,sg,ln,kg Central African Republic 140 .cf
|
||||||
CG COG 242 Brazzaville XAF 🇨🇬 fr-CG,kg,ln-CG Congo - Brazzaville 178 .cg
|
CG COG 242 Brazzaville CG XAF 🇨🇬 fr-CG,kg,ln-CG Congo - Brazzaville 178 .cg
|
||||||
CH CHE 41 Bern CHF 🇨🇭 de-CH,fr-CH,it-CH,rm Switzerland 756 .ch
|
CH CHE 41 Bern CH CHF 🇨🇭 de-CH,fr-CH,it-CH,rm Switzerland 756 .ch
|
||||||
CI CIV 225 Yamoussoukro XOF 🇨🇮 fr-CI Côte d’Ivoire 384 .ci
|
CI CIV 225 Yamoussoukro CI XOF 🇨🇮 fr-CI Côte d’Ivoire 384 .ci
|
||||||
CK COK 682 Avarua NZD 🇨🇰 en-CK,mi Cook Islands 184 .ck
|
CK COK 682 Avarua NZ NZD 🇨🇰 en-CK,mi Cook Islands 184 .ck
|
||||||
CL CHL 56 Santiago CLP 🇨🇱 es-CL Chile 152 .cl
|
CL CHL 56 Santiago CL CLP 🇨🇱 es-CL Chile 152 .cl
|
||||||
CM CMR 237 Yaounde XAF 🇨🇲 en-CM,fr-CM Cameroon 120 .cm
|
CM CMR 237 Yaounde CM XAF 🇨🇲 en-CM,fr-CM Cameroon 120 .cm
|
||||||
CN CHN 86 Beijing CNY 🇨🇳 zh-CN,yue,wuu,dta,ug,za China 156 .cn
|
CN CHN 86 Beijing CN CNY 🇨🇳 zh-CN,yue,wuu,dta,ug,za China 156 .cn
|
||||||
CO COL 57 Bogota COP 🇨🇴 es-CO Colombia 170 .co
|
CO COL 57 Bogota CO COP 🇨🇴 es-CO Colombia 170 .co
|
||||||
CR CRI 506 San Jose CRC 🇨🇷 es-CR,en Costa Rica 188 .cr
|
CR CRI 506 San Jose CR CRC 🇨🇷 es-CR,en Costa Rica 188 .cr
|
||||||
CU CUB 53 Havana CUP 🇨🇺 es-CU,pap Cuba 192 .cu
|
CU CUB 53 Havana CU CUP 🇨🇺 es-CU,pap Cuba 192 .cu
|
||||||
CV CPV 238 Praia CVE 🇨🇻 pt-CV Cape Verde 132 .cv
|
CV CPV 238 Praia CV CVE 🇨🇻 pt-CV Cape Verde 132 .cv
|
||||||
CW CUW 599 Willemstad XCG 🇨🇼 nl,pap Curaçao 531 .cw
|
CW CUW 599 Willemstad NL XCG 🇨🇼 nl,pap Curaçao 531 .cw
|
||||||
CX CXR 61 Flying Fish Cove AUD 🇨🇽 en,zh,ms-CX Christmas Island 162 .cx
|
CX CXR 61 Flying Fish Cove AU AUD 🇨🇽 en,zh,ms-CX Christmas Island 162 .cx
|
||||||
CY CYP 357 Nicosia EUR 🇨🇾 el-CY,tr-CY,en Cyprus 196 .cy
|
CY CYP 357 Nicosia CY EUR 🇨🇾 el-CY,tr-CY,en Cyprus 196 .cy
|
||||||
CZ CZE 420 Prague CZK 🇨🇿 cs,sk Czechia 203 .cz
|
CZ CZE 420 Prague CZ CZK 🇨🇿 cs,sk Czechia 203 .cz
|
||||||
DE DEU 49 Berlin EUR 🇩🇪 de Germany 276 .de
|
DE DEU 49 Berlin DE EUR 🇩🇪 de Germany 276 .de
|
||||||
DJ DJI 253 Djibouti DJF 🇩🇯 fr-DJ,ar,so-DJ,aa Djibouti 262 .dj
|
DJ DJI 253 Djibouti DJ DJF 🇩🇯 fr-DJ,ar,so-DJ,aa Djibouti 262 .dj
|
||||||
DK DNK 45 Copenhagen DKK 🇩🇰 da-DK,en,fo,de-DK Denmark 208 .dk
|
DK DNK 45 Copenhagen DK DKK 🇩🇰 da-DK,en,fo,de-DK Denmark 208 .dk
|
||||||
DM DMA 1-767 Roseau XCD 🇩🇲 en-DM Dominica 212 .dm
|
DM DMA 1-767 Roseau DM XCD 🇩🇲 en-DM Dominica 212 .dm
|
||||||
DO DOM 1-809 Santo Domingo DOP 🇩🇴 es-DO Dominican Republic 214 .do
|
DO DOM 1-809 Santo Domingo DO DOP 🇩🇴 es-DO Dominican Republic 214 .do
|
||||||
DZ DZA 213 Algiers DZD 🇩🇿 ar-DZ Algeria 012 .dz
|
DZ DZA 213 Algiers DZ DZD 🇩🇿 ar-DZ Algeria 012 .dz
|
||||||
EC ECU 593 Quito USD 🇪🇨 es-EC Ecuador 218 .ec
|
EC ECU 593 Quito EC USD 🇪🇨 es-EC Ecuador 218 .ec
|
||||||
EE EST 372 Tallinn EUR 🇪🇪 et,ru Estonia 233 .ee
|
EE EST 372 Tallinn EE EUR 🇪🇪 et,ru Estonia 233 .ee
|
||||||
EG EGY 20 Cairo EGP 🇪🇬 ar-EG,en,fr Egypt 818 .eg
|
EG EGY 20 Cairo EG EGP 🇪🇬 ar-EG,en,fr Egypt 818 .eg
|
||||||
EH ESH 212 El-Aaiun MAD 🇪🇭 ar,mey Western Sahara 732 .eh
|
EH ESH 212 El-Aaiun EH MAD 🇪🇭 ar,mey Western Sahara 732 .eh
|
||||||
ER ERI 291 Asmara ERN 🇪🇷 aa-ER,ar,tig,kun,ti-ER Eritrea 232 .er
|
ER ERI 291 Asmara ER ERN 🇪🇷 aa-ER,ar,tig,kun,ti-ER Eritrea 232 .er
|
||||||
ES ESP 34 Madrid EUR 🇪🇸 es-ES,ca,gl,eu,oc Spain 724 .es
|
ES ESP 34 Madrid ES EUR 🇪🇸 es-ES,ca,gl,eu,oc Spain 724 .es
|
||||||
ET ETH 251 Addis Ababa ETB 🇪🇹 am,en-ET,om-ET,ti-ET,so-ET,sid Ethiopia 231 .et
|
ET ETH 251 Addis Ababa ET ETB 🇪🇹 am,en-ET,om-ET,ti-ET,so-ET,sid Ethiopia 231 .et
|
||||||
FI FIN 358 Helsinki EUR 🇫🇮 fi-FI,sv-FI,smn Finland 246 .fi
|
FI FIN 358 Helsinki FI EUR 🇫🇮 fi-FI,sv-FI,smn Finland 246 .fi
|
||||||
FJ FJI 679 Suva FJD 🇫🇯 en-FJ,fj Fiji 242 .fj
|
FJ FJI 679 Suva FJ FJD 🇫🇯 en-FJ,fj Fiji 242 .fj
|
||||||
FK FLK 500 Stanley FKP 🇫🇰 en-FK Falkland Islands 238 .fk
|
FK FLK 500 Stanley GB FKP 🇫🇰 en-FK Falkland Islands 238 .fk
|
||||||
FM FSM 691 Palikir USD 🇫🇲 en-FM,chk,pon,yap,kos,uli,woe,nkr,kpg Micronesia 583 .fm
|
FM FSM 691 Palikir FM USD 🇫🇲 en-FM,chk,pon,yap,kos,uli,woe,nkr,kpg Micronesia 583 .fm
|
||||||
FO FRO 298 Torshavn DKK 🇫🇴 fo,da-FO Faroe Islands 234 .fo
|
FO FRO 298 Torshavn DK DKK 🇫🇴 fo,da-FO Faroe Islands 234 .fo
|
||||||
FR FRA 33 Paris EUR 🇫🇷 fr-FR,frp,br,co,ca,eu,oc France 250 .fr
|
FR FRA 33 Paris FR EUR 🇫🇷 fr-FR,frp,br,co,ca,eu,oc France 250 .fr
|
||||||
GA GAB 241 Libreville XAF 🇬🇦 fr-GA Gabon 266 .ga
|
GA GAB 241 Libreville GA XAF 🇬🇦 fr-GA Gabon 266 .ga
|
||||||
GB GBR 44 London GBP 🇬🇧 en-GB,cy-GB,gd UK 826 .uk
|
GB GBR 44 London GB GBP 🇬🇧 en-GB,cy-GB,gd UK 826 .uk
|
||||||
GD GRD 1-473 St. George's XCD 🇬🇩 en-GD Grenada 308 .gd
|
GD GRD 1-473 St. George's GD XCD 🇬🇩 en-GD Grenada 308 .gd
|
||||||
GE GEO 995 Tbilisi GEL 🇬🇪 ka,ru,hy,az Georgia 268 .ge
|
GE GEO 995 Tbilisi GE GEL 🇬🇪 ka,ru,hy,az Georgia 268 .ge
|
||||||
GF GUF 594 Cayenne EUR 🇬🇫 fr-GF French Guiana 254 .gf
|
GF GUF 594 Cayenne FR EUR 🇬🇫 fr-GF French Guiana 254 .gf
|
||||||
GG GGY 44 St Peter Port GBP 🇬🇬 en,nrf Guernsey 831 .gg
|
GG GGY 44 St Peter Port GB GBP 🇬🇬 en,nrf Guernsey 831 .gg
|
||||||
GH GHA 233 Accra GHS 🇬🇭 en-GH,ak,ee,tw Ghana 288 .gh
|
GH GHA 233 Accra GH GHS 🇬🇭 en-GH,ak,ee,tw Ghana 288 .gh
|
||||||
GI GIB 350 Gibraltar GIP 🇬🇮 en-GI,es,it,pt Gibraltar 292 .gi
|
GI GIB 350 Gibraltar GB GIP 🇬🇮 en-GI,es,it,pt Gibraltar 292 .gi
|
||||||
GL GRL 299 Nuuk DKK 🇬🇱 kl,da-GL,en Greenland 304 .gl
|
GL GRL 299 Nuuk DK DKK 🇬🇱 kl,da-GL,en Greenland 304 .gl
|
||||||
GM GMB 220 Banjul GMD 🇬🇲 en-GM,mnk,wof,wo,ff Gambia 270 .gm
|
GM GMB 220 Banjul GM GMD 🇬🇲 en-GM,mnk,wof,wo,ff Gambia 270 .gm
|
||||||
GN GIN 224 Conakry GNF 🇬🇳 fr-GN Guinea 324 .gn
|
GN GIN 224 Conakry GN GNF 🇬🇳 fr-GN Guinea 324 .gn
|
||||||
GP GLP 590 Basse-Terre EUR 🇬🇵 fr-GP Guadeloupe 312 .gp
|
GP GLP 590 Basse-Terre FR EUR 🇬🇵 fr-GP Guadeloupe 312 .gp
|
||||||
GQ GNQ 240 Ciudad de la Paz XAF 🇬🇶 es-GQ,fr,pt Equatorial Guinea 226 .gq
|
GQ GNQ 240 Ciudad de la Paz GQ XAF 🇬🇶 es-GQ,fr,pt Equatorial Guinea 226 .gq
|
||||||
GR GRC 30 Athens EUR 🇬🇷 el-GR,en,fr Greece 300 .gr
|
GR GRC 30 Athens GR EUR 🇬🇷 el-GR,en,fr Greece 300 .gr
|
||||||
GT GTM 502 Guatemala City GTQ 🇬🇹 es-GT Guatemala 320 .gt
|
GT GTM 502 Guatemala City GT GTQ 🇬🇹 es-GT Guatemala 320 .gt
|
||||||
GU GUM 1-671 Hagatna USD 🇬🇺 en-GU,ch-GU Guam 316 .gu
|
GU GUM 1-671 Hagatna US USD 🇬🇺 en-GU,ch-GU Guam 316 .gu
|
||||||
GW GNB 245 Bissau XOF 🇬🇼 pt-GW,pov Guinea-Bissau 624 .gw
|
GW GNB 245 Bissau GW XOF 🇬🇼 pt-GW,pov Guinea-Bissau 624 .gw
|
||||||
GY GUY 592 Georgetown GYD 🇬🇾 en-GY Guyana 328 .gy
|
GY GUY 592 Georgetown GY GYD 🇬🇾 en-GY Guyana 328 .gy
|
||||||
HK HKG 852 Hong Kong HKD 🇭🇰 zh-HK,yue,zh,en Hong Kong 344 .hk
|
HK HKG 852 Hong Kong CN HKD 🇭🇰 zh-HK,yue,zh,en Hong Kong 344 .hk
|
||||||
HN HND 504 Tegucigalpa HNL 🇭🇳 es-HN,cab,miq Honduras 340 .hn
|
HN HND 504 Tegucigalpa HN HNL 🇭🇳 es-HN,cab,miq Honduras 340 .hn
|
||||||
HR HRV 385 Zagreb EUR 🇭🇷 hr-HR,sr Croatia 191 .hr
|
HR HRV 385 Zagreb HR EUR 🇭🇷 hr-HR,sr Croatia 191 .hr
|
||||||
HT HTI 509 Port-au-Prince HTG 🇭🇹 ht,fr-HT Haiti 332 .ht
|
HT HTI 509 Port-au-Prince HT HTG 🇭🇹 ht,fr-HT Haiti 332 .ht
|
||||||
HU HUN 36 Budapest HUF 🇭🇺 hu-HU Hungary 348 .hu
|
HU HUN 36 Budapest HU HUF 🇭🇺 hu-HU Hungary 348 .hu
|
||||||
ID IDN 62 Jakarta IDR 🇮🇩 id,en,nl,jv Indonesia 360 .id
|
ID IDN 62 Jakarta ID IDR 🇮🇩 id,en,nl,jv Indonesia 360 .id
|
||||||
IE IRL 353 Dublin EUR 🇮🇪 en-IE,ga-IE Ireland 372 .ie
|
IE IRL 353 Dublin IE EUR 🇮🇪 en-IE,ga-IE Ireland 372 .ie
|
||||||
IL ISR 972 Jerusalem ILS 🇮🇱 he,ar-IL,en-IL Israel 376 .il
|
IL ISR 972 Jerusalem IL ILS 🇮🇱 he,ar-IL,en-IL Israel 376 .il
|
||||||
IM IMN 44 Douglas GBP 🇮🇲 en,gv Isle of Man 833 .im
|
IM IMN 44 Douglas GB GBP 🇮🇲 en,gv Isle of Man 833 .im
|
||||||
IN IND 91 New Delhi INR 🇮🇳 en-IN,hi,bn,te,mr,ta,ur,gu,kn,ml,or,pa,as,bh,sat,ks,ne,sd,kok,doi,mni,sit,sa,fr,lus,inc India 356 .in
|
IN IND 91 New Delhi IN INR 🇮🇳 en-IN,hi,bn,te,mr,ta,ur,gu,kn,ml,or,pa,as,bh,sat,ks,ne,sd,kok,doi,mni,sit,sa,fr,lus,inc India 356 .in
|
||||||
IO IOT 246 Diego Garcia USD 🇮🇴 en-IO British Indian Ocean Territory 086 .io
|
IO IOT 246 Diego Garcia GB USD 🇮🇴 en-IO British Indian Ocean Territory 086 .io
|
||||||
IQ IRQ 964 Baghdad IQD 🇮🇶 ar-IQ,ku,hy Iraq 368 .iq
|
IQ IRQ 964 Baghdad IQ IQD 🇮🇶 ar-IQ,ku,hy Iraq 368 .iq
|
||||||
IR IRN 98 Tehran IRR 🇮🇷 fa-IR,ku Iran 364 .ir
|
IR IRN 98 Tehran IR IRR 🇮🇷 fa-IR,ku Iran 364 .ir
|
||||||
IS ISL 354 Reykjavik ISK 🇮🇸 is,en,de,da,sv,no Iceland 352 .is
|
IS ISL 354 Reykjavik IS ISK 🇮🇸 is,en,de,da,sv,no Iceland 352 .is
|
||||||
IT ITA 39 Rome EUR 🇮🇹 it-IT,de-IT,fr-IT,sc,ca,co,sl Italy 380 .it
|
IT ITA 39 Rome IT EUR 🇮🇹 it-IT,de-IT,fr-IT,sc,ca,co,sl Italy 380 .it
|
||||||
JE JEY 44 Saint Helier GBP 🇯🇪 en,fr,nrf Jersey 832 .je
|
JE JEY 44 Saint Helier GB GBP 🇯🇪 en,fr,nrf Jersey 832 .je
|
||||||
JM JAM 1-876 Kingston JMD 🇯🇲 en-JM Jamaica 388 .jm
|
JM JAM 1-876 Kingston JM JMD 🇯🇲 en-JM Jamaica 388 .jm
|
||||||
JO JOR 962 Amman JOD 🇯🇴 ar-JO,en Jordan 400 .jo
|
JO JOR 962 Amman JO JOD 🇯🇴 ar-JO,en Jordan 400 .jo
|
||||||
JP JPN 81 Tokyo JPY 🇯🇵 ja Japan 392 .jp
|
JP JPN 81 Tokyo JP JPY 🇯🇵 ja Japan 392 .jp
|
||||||
KE KEN 254 Nairobi KES 🇰🇪 en-KE,sw-KE Kenya 404 .ke
|
KE KEN 254 Nairobi KE KES 🇰🇪 en-KE,sw-KE Kenya 404 .ke
|
||||||
KG KGZ 996 Bishkek KGS 🇰🇬 ky,uz,ru Kyrgyzstan 417 .kg
|
KG KGZ 996 Bishkek KG KGS 🇰🇬 ky,uz,ru Kyrgyzstan 417 .kg
|
||||||
KH KHM 855 Phnom Penh KHR 🇰🇭 km,fr,en Cambodia 116 .kh
|
KH KHM 855 Phnom Penh KH KHR 🇰🇭 km,fr,en Cambodia 116 .kh
|
||||||
KI KIR 686 Tarawa AUD 🇰🇮 en-KI,gil Kiribati 296 .ki
|
KI KIR 686 Tarawa KI AUD 🇰🇮 en-KI,gil Kiribati 296 .ki
|
||||||
KM COM 269 Moroni KMF 🇰🇲 ar,fr-KM Comoros 174 .km
|
KM COM 269 Moroni KM KMF 🇰🇲 ar,fr-KM Comoros 174 .km
|
||||||
KN KNA 1-869 Basseterre XCD 🇰🇳 en-KN St. Kitts & Nevis 659 .kn
|
KN KNA 1-869 Basseterre KN XCD 🇰🇳 en-KN St. Kitts & Nevis 659 .kn
|
||||||
KP PRK 850 Pyongyang KPW 🇰🇵 ko-KP North Korea 408 .kp
|
KP PRK 850 Pyongyang KP KPW 🇰🇵 ko-KP North Korea 408 .kp
|
||||||
KR KOR 82 Seoul KRW 🇰🇷 ko-KR,en South Korea 410 .kr
|
KR KOR 82 Seoul KR KRW 🇰🇷 ko-KR,en South Korea 410 .kr
|
||||||
KW KWT 965 Kuwait City KWD 🇰🇼 ar-KW,en Kuwait 414 .kw
|
KW KWT 965 Kuwait City KW KWD 🇰🇼 ar-KW,en Kuwait 414 .kw
|
||||||
KY CYM 1-345 George Town KYD 🇰🇾 en-KY Cayman Islands 136 .ky
|
KY CYM 1-345 George Town GB KYD 🇰🇾 en-KY Cayman Islands 136 .ky
|
||||||
KZ KAZ 7 Nur-Sultan KZT 🇰🇿 kk,ru Kazakhstan 398 .kz
|
KZ KAZ 7 Nur-Sultan KZ KZT 🇰🇿 kk,ru Kazakhstan 398 .kz
|
||||||
LA LAO 856 Vientiane LAK 🇱🇦 lo,fr,en Laos 418 .la
|
LA LAO 856 Vientiane LA LAK 🇱🇦 lo,fr,en Laos 418 .la
|
||||||
LB LBN 961 Beirut LBP 🇱🇧 ar-LB,fr-LB,en,hy Lebanon 422 .lb
|
LB LBN 961 Beirut LB LBP 🇱🇧 ar-LB,fr-LB,en,hy Lebanon 422 .lb
|
||||||
LC LCA 1-758 Castries XCD 🇱🇨 en-LC St. Lucia 662 .lc
|
LC LCA 1-758 Castries LC XCD 🇱🇨 en-LC St. Lucia 662 .lc
|
||||||
LI LIE 423 Vaduz CHF 🇱🇮 de-LI Liechtenstein 438 .li
|
LI LIE 423 Vaduz LI CHF 🇱🇮 de-LI Liechtenstein 438 .li
|
||||||
LK LKA 94 Colombo LKR 🇱🇰 si,ta,en Sri Lanka 144 .lk
|
LK LKA 94 Colombo LK LKR 🇱🇰 si,ta,en Sri Lanka 144 .lk
|
||||||
LR LBR 231 Monrovia LRD 🇱🇷 en-LR Liberia 430 .lr
|
LR LBR 231 Monrovia LR LRD 🇱🇷 en-LR Liberia 430 .lr
|
||||||
LS LSO 266 Maseru LSL 🇱🇸 en-LS,st,zu,xh Lesotho 426 .ls
|
LS LSO 266 Maseru LS LSL 🇱🇸 en-LS,st,zu,xh Lesotho 426 .ls
|
||||||
LT LTU 370 Vilnius EUR 🇱🇹 lt,ru,pl Lithuania 440 .lt
|
LT LTU 370 Vilnius LT EUR 🇱🇹 lt,ru,pl Lithuania 440 .lt
|
||||||
LU LUX 352 Luxembourg EUR 🇱🇺 lb,de-LU,fr-LU Luxembourg 442 .lu
|
LU LUX 352 Luxembourg LU EUR 🇱🇺 lb,de-LU,fr-LU Luxembourg 442 .lu
|
||||||
LV LVA 371 Riga EUR 🇱🇻 lv,ru,lt Latvia 428 .lv
|
LV LVA 371 Riga LV EUR 🇱🇻 lv,ru,lt Latvia 428 .lv
|
||||||
LY LBY 218 Tripoli LYD 🇱🇾 ar-LY,it,en Libya 434 .ly
|
LY LBY 218 Tripoli LY LYD 🇱🇾 ar-LY,it,en Libya 434 .ly
|
||||||
MA MAR 212 Rabat MAD 🇲🇦 ar-MA,ber,fr Morocco 504 .ma
|
MA MAR 212 Rabat MA MAD 🇲🇦 ar-MA,ber,fr Morocco 504 .ma
|
||||||
MC MCO 377 Monaco EUR 🇲🇨 fr-MC,en,it Monaco 492 .mc
|
MC MCO 377 Monaco MC EUR 🇲🇨 fr-MC,en,it Monaco 492 .mc
|
||||||
MD MDA 373 Chisinau MDL 🇲🇩 ro,ru,gag,tr Moldova 498 .md
|
MD MDA 373 Chisinau MD MDL 🇲🇩 ro,ru,gag,tr Moldova 498 .md
|
||||||
ME MNE 382 Podgorica EUR 🇲🇪 sr,hu,bs,sq,hr,rom Montenegro 499 .me
|
ME MNE 382 Podgorica ME EUR 🇲🇪 sr,hu,bs,sq,hr,rom Montenegro 499 .me
|
||||||
MF MAF 590 Marigot EUR 🇲🇫 fr St. Martin 663 .gp
|
MF MAF 590 Marigot FR EUR 🇲🇫 fr St. Martin 663 .gp
|
||||||
MG MDG 261 Antananarivo MGA 🇲🇬 fr-MG,mg Madagascar 450 .mg
|
MG MDG 261 Antananarivo MG MGA 🇲🇬 fr-MG,mg Madagascar 450 .mg
|
||||||
MH MHL 692 Majuro USD 🇲🇭 mh,en-MH Marshall Islands 584 .mh
|
MH MHL 692 Majuro MH USD 🇲🇭 mh,en-MH Marshall Islands 584 .mh
|
||||||
MK MKD 389 Skopje MKD 🇲🇰 mk,sq,tr,rmm,sr North Macedonia 807 .mk
|
MK MKD 389 Skopje MK MKD 🇲🇰 mk,sq,tr,rmm,sr North Macedonia 807 .mk
|
||||||
ML MLI 223 Bamako XOF 🇲🇱 fr-ML,bm Mali 466 .ml
|
ML MLI 223 Bamako ML XOF 🇲🇱 fr-ML,bm Mali 466 .ml
|
||||||
MM MMR 95 Nay Pyi Taw MMK 🇲🇲 my Myanmar 104 .mm
|
MM MMR 95 Nay Pyi Taw MM MMK 🇲🇲 my Myanmar 104 .mm
|
||||||
MN MNG 976 Ulaanbaatar MNT 🇲🇳 mn,ru Mongolia 496 .mn
|
MN MNG 976 Ulaanbaatar MN MNT 🇲🇳 mn,ru Mongolia 496 .mn
|
||||||
MO MAC 853 Macao MOP 🇲🇴 zh,zh-MO,pt Macao 446 .mo
|
MO MAC 853 Macao CN MOP 🇲🇴 zh,zh-MO,pt Macao 446 .mo
|
||||||
MP MNP 1-670 Saipan USD 🇲🇵 fil,tl,zh,ch-MP,en-MP Northern Mariana Islands 580 .mp
|
MP MNP 1-670 Saipan US USD 🇲🇵 fil,tl,zh,ch-MP,en-MP Northern Mariana Islands 580 .mp
|
||||||
MQ MTQ 596 Fort-de-France EUR 🇲🇶 fr-MQ Martinique 474 .mq
|
MQ MTQ 596 Fort-de-France FR EUR 🇲🇶 fr-MQ Martinique 474 .mq
|
||||||
MR MRT 222 Nouakchott MRU 🇲🇷 ar-MR,fuc,snk,fr,mey,wo Mauritania 478 .mr
|
MR MRT 222 Nouakchott MR MRU 🇲🇷 ar-MR,fuc,snk,fr,mey,wo Mauritania 478 .mr
|
||||||
MS MSR 1-664 Plymouth XCD 🇲🇸 en-MS Montserrat 500 .ms
|
MS MSR 1-664 Plymouth GB XCD 🇲🇸 en-MS Montserrat 500 .ms
|
||||||
MT MLT 356 Valletta EUR 🇲🇹 mt,en-MT Malta 470 .mt
|
MT MLT 356 Valletta MT EUR 🇲🇹 mt,en-MT Malta 470 .mt
|
||||||
MU MUS 230 Port Louis MUR 🇲🇺 en-MU,bho,fr Mauritius 480 .mu
|
MU MUS 230 Port Louis MU MUR 🇲🇺 en-MU,bho,fr Mauritius 480 .mu
|
||||||
MV MDV 960 Male MVR 🇲🇻 dv,en Maldives 462 .mv
|
MV MDV 960 Male MV MVR 🇲🇻 dv,en Maldives 462 .mv
|
||||||
MW MWI 265 Lilongwe MWK 🇲🇼 ny,yao,tum,swk Malawi 454 .mw
|
MW MWI 265 Lilongwe MW MWK 🇲🇼 ny,yao,tum,swk Malawi 454 .mw
|
||||||
MX MEX 52 Mexico City MXN 🇲🇽 es-MX Mexico 484 .mx
|
MX MEX 52 Mexico City MX MXN 🇲🇽 es-MX Mexico 484 .mx
|
||||||
MY MYS 60 Kuala Lumpur MYR 🇲🇾 ms-MY,en,zh,ta,te,ml,pa,th Malaysia 458 .my
|
MY MYS 60 Kuala Lumpur MY MYR 🇲🇾 ms-MY,en,zh,ta,te,ml,pa,th Malaysia 458 .my
|
||||||
MZ MOZ 258 Maputo MZN 🇲🇿 pt-MZ,vmw Mozambique 508 .mz
|
MZ MOZ 258 Maputo MZ MZN 🇲🇿 pt-MZ,vmw Mozambique 508 .mz
|
||||||
NA NAM 264 Windhoek NAD 🇳🇦 en-NA,af,de,hz,naq Namibia 516 .na
|
NA NAM 264 Windhoek NA NAD 🇳🇦 en-NA,af,de,hz,naq Namibia 516 .na
|
||||||
NC NCL 687 Noumea XPF 🇳🇨 fr-NC New Caledonia 540 .nc
|
NC NCL 687 Noumea FR XPF 🇳🇨 fr-NC New Caledonia 540 .nc
|
||||||
NE NER 227 Niamey XOF 🇳🇪 fr-NE,ha,kr,dje Niger 562 .ne
|
NE NER 227 Niamey NE XOF 🇳🇪 fr-NE,ha,kr,dje Niger 562 .ne
|
||||||
NF NFK 672 Kingston AUD 🇳🇫 en-NF Norfolk Island 574 .nf
|
NF NFK 672 Kingston AU AUD 🇳🇫 en-NF Norfolk Island 574 .nf
|
||||||
NG NGA 234 Abuja NGN 🇳🇬 en-NG,ha,yo,ig,ff Nigeria 566 .ng
|
NG NGA 234 Abuja NG NGN 🇳🇬 en-NG,ha,yo,ig,ff Nigeria 566 .ng
|
||||||
NI NIC 505 Managua NIO 🇳🇮 es-NI,en Nicaragua 558 .ni
|
NI NIC 505 Managua NI NIO 🇳🇮 es-NI,en Nicaragua 558 .ni
|
||||||
NL NLD 31 Amsterdam EUR 🇳🇱 nl-NL,fy-NL Netherlands 528 .nl
|
NL NLD 31 Amsterdam NL EUR 🇳🇱 nl-NL,fy-NL Netherlands 528 .nl
|
||||||
NO NOR 47 Oslo NOK 🇳🇴 no,nb,nn,se,fi Norway 578 .no
|
NO NOR 47 Oslo NO NOK 🇳🇴 no,nb,nn,se,fi Norway 578 .no
|
||||||
NP NPL 977 Kathmandu NPR 🇳🇵 ne,en Nepal 524 .np
|
NP NPL 977 Kathmandu NP NPR 🇳🇵 ne,en Nepal 524 .np
|
||||||
NR NRU 674 Yaren AUD 🇳🇷 na,en-NR Nauru 520 .nr
|
NR NRU 674 Yaren NR AUD 🇳🇷 na,en-NR Nauru 520 .nr
|
||||||
NU NIU 683 Alofi NZD 🇳🇺 niu,en-NU Niue 570 .nu
|
NU NIU 683 Alofi NZ NZD 🇳🇺 niu,en-NU Niue 570 .nu
|
||||||
NZ NZL 64 Wellington NZD 🇳🇿 en-NZ,mi New Zealand 554 .nz
|
NZ NZL 64 Wellington NZ NZD 🇳🇿 en-NZ,mi New Zealand 554 .nz
|
||||||
OM OMN 968 Muscat OMR 🇴🇲 ar-OM,en,bal,ur Oman 512 .om
|
OM OMN 968 Muscat OM OMR 🇴🇲 ar-OM,en,bal,ur Oman 512 .om
|
||||||
PA PAN 507 Panama City PAB 🇵🇦 es-PA,en Panama 591 .pa
|
PA PAN 507 Panama City PA PAB 🇵🇦 es-PA,en Panama 591 .pa
|
||||||
PE PER 51 Lima PEN 🇵🇪 es-PE,qu,ay Peru 604 .pe
|
PE PER 51 Lima PE PEN 🇵🇪 es-PE,qu,ay Peru 604 .pe
|
||||||
PF PYF 689 Papeete XPF 🇵🇫 fr-PF,ty French Polynesia 258 .pf
|
PF PYF 689 Papeete FR XPF 🇵🇫 fr-PF,ty French Polynesia 258 .pf
|
||||||
PG PNG 675 Port Moresby PGK 🇵🇬 en-PG,ho,meu,tpi Papua New Guinea 598 .pg
|
PG PNG 675 Port Moresby PG PGK 🇵🇬 en-PG,ho,meu,tpi Papua New Guinea 598 .pg
|
||||||
PH PHL 63 Manila PHP 🇵🇭 tl,en-PH,fil,ceb,ilo,hil,war,pam,bik,bcl,pag,mrw,tsg,mdh,cbk,krj,sgd,msb,akl,ibg,yka,mta,abx Philippines 608 .ph
|
PH PHL 63 Manila PH PHP 🇵🇭 tl,en-PH,fil,ceb,ilo,hil,war,pam,bik,bcl,pag,mrw,tsg,mdh,cbk,krj,sgd,msb,akl,ibg,yka,mta,abx Philippines 608 .ph
|
||||||
PK PAK 92 Islamabad PKR 🇵🇰 ur-PK,en-PK,pa,sd,ps,brh Pakistan 586 .pk
|
PK PAK 92 Islamabad PK PKR 🇵🇰 ur-PK,en-PK,pa,sd,ps,brh Pakistan 586 .pk
|
||||||
PL POL 48 Warsaw PLN 🇵🇱 pl Poland 616 .pl
|
PL POL 48 Warsaw PL PLN 🇵🇱 pl Poland 616 .pl
|
||||||
PM SPM 508 Saint-Pierre EUR 🇵🇲 fr-PM St. Pierre & Miquelon 666 .pm
|
PM SPM 508 Saint-Pierre FR EUR 🇵🇲 fr-PM St. Pierre & Miquelon 666 .pm
|
||||||
PN PCN 870 Adamstown NZD 🇵🇳 en-PN Pitcairn 612 .pn
|
PN PCN 870 Adamstown GB NZD 🇵🇳 en-PN Pitcairn 612 .pn
|
||||||
PR PRI 1 San Juan USD 🇵🇷 en-PR,es-PR Puerto Rico 630 .pr
|
PR PRI 1 San Juan US USD 🇵🇷 en-PR,es-PR Puerto Rico 630 .pr
|
||||||
PT PRT 351 Lisbon EUR 🇵🇹 pt-PT,mwl Portugal 620 .pt
|
PT PRT 351 Lisbon PT EUR 🇵🇹 pt-PT,mwl Portugal 620 .pt
|
||||||
PW PLW 680 Melekeok USD 🇵🇼 pau,sov,en-PW,tox,ja,fil,zh Palau 585 .pw
|
PW PLW 680 Melekeok PW USD 🇵🇼 pau,sov,en-PW,tox,ja,fil,zh Palau 585 .pw
|
||||||
PY PRY 595 Asuncion PYG 🇵🇾 es-PY,gn Paraguay 600 .py
|
PY PRY 595 Asuncion PY PYG 🇵🇾 es-PY,gn Paraguay 600 .py
|
||||||
QA QAT 974 Doha QAR 🇶🇦 ar-QA,es Qatar 634 .qa
|
QA QAT 974 Doha QA QAR 🇶🇦 ar-QA,es Qatar 634 .qa
|
||||||
RE REU 262 Saint-Denis EUR 🇷🇪 fr-RE Réunion 638 .re
|
RE REU 262 Saint-Denis FR EUR 🇷🇪 fr-RE Réunion 638 .re
|
||||||
RO ROU 40 Bucharest RON 🇷🇴 ro,hu,rom Romania 642 .ro
|
RO ROU 40 Bucharest RO RON 🇷🇴 ro,hu,rom Romania 642 .ro
|
||||||
RS SRB 381 Belgrade RSD 🇷🇸 sr,hu,bs,rom Serbia 688 .rs
|
RS SRB 381 Belgrade RS RSD 🇷🇸 sr,hu,bs,rom Serbia 688 .rs
|
||||||
RU RUS 7 Moscow RUB 🇷🇺 ru,tt,xal,cau,ady,kv,ce,tyv,cv,udm,tut,mns,bua,myv,mdf,chm,ba,inh,kbd,krc,av,sah,nog Russia 643 .ru
|
RU RUS 7 Moscow RU RUB 🇷🇺 ru,tt,xal,cau,ady,kv,ce,tyv,cv,udm,tut,mns,bua,myv,mdf,chm,ba,inh,kbd,krc,av,sah,nog Russia 643 .ru
|
||||||
RW RWA 250 Kigali RWF 🇷🇼 rw,en-RW,fr-RW,sw Rwanda 646 .rw
|
RW RWA 250 Kigali RW RWF 🇷🇼 rw,en-RW,fr-RW,sw Rwanda 646 .rw
|
||||||
SA SAU 966 Riyadh SAR 🇸🇦 ar-SA Saudi Arabia 682 .sa
|
SA SAU 966 Riyadh SA SAR 🇸🇦 ar-SA Saudi Arabia 682 .sa
|
||||||
SB SLB 677 Honiara SBD 🇸🇧 en-SB,tpi Solomon Islands 090 .sb
|
SB SLB 677 Honiara SB SBD 🇸🇧 en-SB,tpi Solomon Islands 090 .sb
|
||||||
SC SYC 248 Victoria SCR 🇸🇨 en-SC,fr-SC Seychelles 690 .sc
|
SC SYC 248 Victoria SC SCR 🇸🇨 en-SC,fr-SC Seychelles 690 .sc
|
||||||
SD SDN 249 Khartoum SDG 🇸🇩 ar-SD,en,fia Sudan 729 .sd
|
SD SDN 249 Khartoum SD SDG 🇸🇩 ar-SD,en,fia Sudan 729 .sd
|
||||||
SE SWE 46 Stockholm SEK 🇸🇪 sv-SE,se,sma,fi-SE Sweden 752 .se
|
SE SWE 46 Stockholm SE SEK 🇸🇪 sv-SE,se,sma,fi-SE Sweden 752 .se
|
||||||
SG SGP 65 Singapore SGD 🇸🇬 cmn,en-SG,ms-SG,ta-SG,zh-SG Singapore 702 .sg
|
SG SGP 65 Singapore SG SGD 🇸🇬 cmn,en-SG,ms-SG,ta-SG,zh-SG Singapore 702 .sg
|
||||||
SH SHN 290 Jamestown SHP 🇸🇭 en-SH St. Helena 654 .sh
|
SH SHN 290 Jamestown GB SHP 🇸🇭 en-SH St. Helena 654 .sh
|
||||||
SI SVN 386 Ljubljana EUR 🇸🇮 sl,sh Slovenia 705 .si
|
SI SVN 386 Ljubljana SI EUR 🇸🇮 sl,sh Slovenia 705 .si
|
||||||
SJ SJM 47 Longyearbyen NOK 🇸🇯 no,ru Svalbard & Jan Mayen 744 .sj
|
SJ SJM 47 Longyearbyen NO NOK 🇸🇯 no,ru Svalbard & Jan Mayen 744 .sj
|
||||||
SK SVK 421 Bratislava EUR 🇸🇰 sk,hu Slovakia 703 .sk
|
SK SVK 421 Bratislava SK EUR 🇸🇰 sk,hu Slovakia 703 .sk
|
||||||
SL SLE 232 Freetown SLE 🇸🇱 en-SL,men,tem Sierra Leone 694 .sl
|
SL SLE 232 Freetown SL SLE 🇸🇱 en-SL,men,tem Sierra Leone 694 .sl
|
||||||
SM SMR 378 San Marino EUR 🇸🇲 it-SM San Marino 674 .sm
|
SM SMR 378 San Marino SM EUR 🇸🇲 it-SM San Marino 674 .sm
|
||||||
SN SEN 221 Dakar XOF 🇸🇳 fr-SN,wo,fuc,mnk Senegal 686 .sn
|
SN SEN 221 Dakar SN XOF 🇸🇳 fr-SN,wo,fuc,mnk Senegal 686 .sn
|
||||||
SO SOM 252 Mogadishu SOS 🇸🇴 so-SO,ar-SO,it,en-SO Somalia 706 .so
|
SO SOM 252 Mogadishu SO SOS 🇸🇴 so-SO,ar-SO,it,en-SO Somalia 706 .so
|
||||||
SR SUR 597 Paramaribo SRD 🇸🇷 nl-SR,en,srn,hns,jv Suriname 740 .sr
|
SR SUR 597 Paramaribo SR SRD 🇸🇷 nl-SR,en,srn,hns,jv Suriname 740 .sr
|
||||||
SS SSD 211 Juba SSP 🇸🇸 en South Sudan 728 .ss
|
SS SSD 211 Juba SS SSP 🇸🇸 en South Sudan 728 .ss
|
||||||
ST STP 239 Sao Tome STN 🇸🇹 pt-ST São Tomé & Príncipe 678 .st
|
ST STP 239 Sao Tome ST STN 🇸🇹 pt-ST São Tomé & Príncipe 678 .st
|
||||||
SV SLV 503 San Salvador SVC 🇸🇻 es-SV El Salvador 222 .sv
|
SV SLV 503 San Salvador SV SVC 🇸🇻 es-SV El Salvador 222 .sv
|
||||||
SX SXM 1-721 Philipsburg XCG 🇸🇽 nl,en Sint Maarten 534 .sx
|
SX SXM 1-721 Philipsburg NL XCG 🇸🇽 nl,en Sint Maarten 534 .sx
|
||||||
SY SYR 963 Damascus SYP 🇸🇾 ar-SY,ku,hy,arc,fr,en Syria 760 .sy
|
SY SYR 963 Damascus SY SYP 🇸🇾 ar-SY,ku,hy,arc,fr,en Syria 760 .sy
|
||||||
SZ SWZ 268 Mbabane SZL 🇸🇿 en-SZ,ss-SZ Eswatini 748 .sz
|
SZ SWZ 268 Mbabane SZ SZL 🇸🇿 en-SZ,ss-SZ Eswatini 748 .sz
|
||||||
TC TCA 1-649 Cockburn Town USD 🇹🇨 en-TC Turks & Caicos Islands 796 .tc
|
TC TCA 1-649 Cockburn Town GB USD 🇹🇨 en-TC Turks & Caicos Islands 796 .tc
|
||||||
TD TCD 235 N'Djamena XAF 🇹🇩 fr-TD,ar-TD,sre Chad 148 .td
|
TD TCD 235 N'Djamena TD XAF 🇹🇩 fr-TD,ar-TD,sre Chad 148 .td
|
||||||
TF ATF 262 Port-aux-Francais EUR 🇹🇫 fr French Southern Territories 260 .tf
|
TF ATF 262 Port-aux-Francais FR EUR 🇹🇫 fr French Southern Territories 260 .tf
|
||||||
TG TGO 228 Lome XOF 🇹🇬 fr-TG,ee,hna,kbp,dag,ha Togo 768 .tg
|
TG TGO 228 Lome TG XOF 🇹🇬 fr-TG,ee,hna,kbp,dag,ha Togo 768 .tg
|
||||||
TH THA 66 Bangkok THB 🇹🇭 th,en Thailand 764 .th
|
TH THA 66 Bangkok TH THB 🇹🇭 th,en Thailand 764 .th
|
||||||
TJ TJK 992 Dushanbe TJS 🇹🇯 tg,ru Tajikistan 762 .tj
|
TJ TJK 992 Dushanbe TJ TJS 🇹🇯 tg,ru Tajikistan 762 .tj
|
||||||
TL TLS 670 Dili USD 🇹🇱 tet,pt-TL,id,en Timor-Leste 626 .tl
|
TL TLS 670 Dili TL USD 🇹🇱 tet,pt-TL,id,en Timor-Leste 626 .tl
|
||||||
TM TKM 993 Ashgabat TMT 🇹🇲 tk,ru,uz Turkmenistan 795 .tm
|
TM TKM 993 Ashgabat TM TMT 🇹🇲 tk,ru,uz Turkmenistan 795 .tm
|
||||||
TN TUN 216 Tunis TND 🇹🇳 ar-TN,fr Tunisia 788 .tn
|
TN TUN 216 Tunis TN TND 🇹🇳 ar-TN,fr Tunisia 788 .tn
|
||||||
TO TON 676 Nuku'alofa TOP 🇹🇴 to,en-TO Tonga 776 .to
|
TO TON 676 Nuku'alofa TO TOP 🇹🇴 to,en-TO Tonga 776 .to
|
||||||
TR TUR 90 Ankara TRY 🇹🇷 tr-TR,ku,diq,az,av Türkiye 792 .tr
|
TR TUR 90 Ankara TR TRY 🇹🇷 tr-TR,ku,diq,az,av Türkiye 792 .tr
|
||||||
TT TTO 1-868 Port of Spain TTD 🇹🇹 en-TT,hns,fr,es,zh Trinidad & Tobago 780 .tt
|
TT TTO 1-868 Port of Spain TT TTD 🇹🇹 en-TT,hns,fr,es,zh Trinidad & Tobago 780 .tt
|
||||||
TV TUV 688 Funafuti AUD 🇹🇻 tvl,en,sm,gil Tuvalu 798 .tv
|
TV TUV 688 Funafuti TV AUD 🇹🇻 tvl,en,sm,gil Tuvalu 798 .tv
|
||||||
TW TWN 886 Taipei TWD 🇹🇼 zh-TW,zh,nan,hak Taiwan 158 .tw
|
TW TWN 886 Taipei TW TWD 🇹🇼 zh-TW,zh,nan,hak Taiwan 158 .tw
|
||||||
TZ TZA 255 Dodoma TZS 🇹🇿 sw-TZ,en,ar Tanzania 834 .tz
|
TZ TZA 255 Dodoma TZ TZS 🇹🇿 sw-TZ,en,ar Tanzania 834 .tz
|
||||||
UA UKR 380 Kyiv UAH 🇺🇦 uk,ru-UA,rom,pl,hu Ukraine 804 .ua
|
UA UKR 380 Kyiv UA UAH 🇺🇦 uk,ru-UA,rom,pl,hu Ukraine 804 .ua
|
||||||
UG UGA 256 Kampala UGX 🇺🇬 en-UG,lg,sw,ar Uganda 800 .ug
|
UG UGA 256 Kampala UG UGX 🇺🇬 en-UG,lg,sw,ar Uganda 800 .ug
|
||||||
US USA 1 Washington USD 🇺🇸 en-US,es-US,haw,fr US 840 .us
|
US USA 1 Washington US USD 🇺🇸 en-US,es-US,haw,fr US 840 .us
|
||||||
UY URY 598 Montevideo UYU 🇺🇾 es-UY Uruguay 858 .uy
|
UY URY 598 Montevideo UY UYU 🇺🇾 es-UY Uruguay 858 .uy
|
||||||
UZ UZB 998 Tashkent UZS 🇺🇿 uz,ru,tg Uzbekistan 860 .uz
|
UZ UZB 998 Tashkent UZ UZS 🇺🇿 uz,ru,tg Uzbekistan 860 .uz
|
||||||
VA VAT 39 Vatican City EUR 🇻🇦 la,it,fr Vatican City 336 .va
|
VA VAT 39 Vatican City VA EUR 🇻🇦 la,it,fr Vatican City 336 .va
|
||||||
VC VCT 1-784 Kingstown XCD 🇻🇨 en-VC,fr St. Vincent & Grenadines 670 .vc
|
VC VCT 1-784 Kingstown VC XCD 🇻🇨 en-VC,fr St. Vincent & Grenadines 670 .vc
|
||||||
VE VEN 58 Caracas VES 🇻🇪 es-VE Venezuela 862 .ve
|
VE VEN 58 Caracas VE VES 🇻🇪 es-VE Venezuela 862 .ve
|
||||||
VG VGB 1-284 Road Town USD 🇻🇬 en-VG British Virgin Islands 092 .vg
|
VG VGB 1-284 Road Town GB USD 🇻🇬 en-VG British Virgin Islands 092 .vg
|
||||||
VI VIR 1-340 Charlotte Amalie USD 🇻🇮 en-VI U.S. Virgin Islands 850 .vi
|
VI VIR 1-340 Charlotte Amalie US USD 🇻🇮 en-VI U.S. Virgin Islands 850 .vi
|
||||||
VN VNM 84 Hanoi VND 🇻🇳 vi,en,fr,zh,km Vietnam 704 .vn
|
VN VNM 84 Hanoi VN VND 🇻🇳 vi,en,fr,zh,km Vietnam 704 .vn
|
||||||
VU VUT 678 Port Vila VUV 🇻🇺 bi,en-VU,fr-VU Vanuatu 548 .vu
|
VU VUT 678 Port Vila VU VUV 🇻🇺 bi,en-VU,fr-VU Vanuatu 548 .vu
|
||||||
WF WLF 681 Mata Utu XPF 🇼🇫 wls,fud,fr-WF Wallis & Futuna 876 .wf
|
WF WLF 681 Mata Utu FR XPF 🇼🇫 wls,fud,fr-WF Wallis & Futuna 876 .wf
|
||||||
WS WSM 685 Apia WST 🇼🇸 sm,en-WS Samoa 882 .ws
|
WS WSM 685 Apia WS WST 🇼🇸 sm,en-WS Samoa 882 .ws
|
||||||
YE YEM 967 Sanaa YER 🇾🇪 ar-YE Yemen 887 .ye
|
YE YEM 967 Sanaa YE YER 🇾🇪 ar-YE Yemen 887 .ye
|
||||||
YT MYT 262 Mamoudzou EUR 🇾🇹 fr-YT Mayotte 175 .yt
|
YT MYT 262 Mamoudzou FR EUR 🇾🇹 fr-YT Mayotte 175 .yt
|
||||||
ZA ZAF 27 Pretoria ZAR 🇿🇦 zu,xh,af,nso,en-ZA,tn,st,ts,ss,ve,nr South Africa 710 .za
|
ZA ZAF 27 Pretoria ZA ZAR 🇿🇦 zu,xh,af,nso,en-ZA,tn,st,ts,ss,ve,nr South Africa 710 .za
|
||||||
ZM ZMB 260 Lusaka ZMW 🇿🇲 en-ZM,bem,loz,lun,lue,ny,toi Zambia 894 .zm
|
ZM ZMB 260 Lusaka ZM ZMW 🇿🇲 en-ZM,bem,loz,lun,lue,ny,toi Zambia 894 .zm
|
||||||
ZW ZWE 263 Harare ZWG 🇿🇼 en-ZW,sn,nr,nd Zimbabwe 716 .zw
|
ZW ZWE 263 Harare ZW ZWG 🇿🇼 en-ZW,sn,nr,nd Zimbabwe 716 .zw
|
||||||
|
|||||||
|
@@ -32,7 +32,7 @@ value is composed; TSV says which values exist.
|
|||||||
- Draw linked tables consistently within one render and draw group: the first
|
- Draw linked tables consistently within one render and draw group: the first
|
||||||
table drawn pins its ancestors, and a descendant is drawn inside them.
|
table drawn pins its ancestors, and a descendant is drawn inside them.
|
||||||
- Keep country data under `geo/<alpha2>/`; a locale's `address` reads its
|
- Keep country data under `geo/<alpha2>/`; a locale's `address` reads its
|
||||||
country's tree by reference, and a locale's `country` table carries the
|
country's tree by reference, and a locale's `territory` table carries the
|
||||||
localised names keyed by alpha2.
|
localised names keyed by alpha2.
|
||||||
- Ship full registers as packs, each a Go module with its own `embed.FS` and a
|
- Ship full registers as packs, each a Go module with its own `embed.FS` and a
|
||||||
zip for `--data-path`; the default embed stays under ~1 MB per country and
|
zip for `--data-path`; the default embed stays under ~1 MB per country and
|
||||||
@@ -109,7 +109,7 @@ ids. Shape: T = table, t = template, c = choice.
|
|||||||
| `word` noun, verb, adjective, adverb; `sentence` | T+t | SALDO | CC BY 4.0 |
|
| `word` noun, verb, adjective, adverb; `sentence` | T+t | SALDO | CC BY 4.0 |
|
||||||
| `date`, `time`, month and weekday names, `holiday` | t+T | CLDR sv, lag 1989:253 | Unicode |
|
| `date`, `time`, month and weekday names, `holiday` | t+T | CLDR sv, lag 1989:253 | Unicode |
|
||||||
| `price` `1 234,56 kr`, `email` domains, `url` `.se`/`.nu` | t | curated | — |
|
| `price` `1 234,56 kr`, `email` domains, `url` `.se`/`.nu` | t | curated | — |
|
||||||
| `country` localised names keyed by alpha2 | T | CLDR sv territory names | Unicode |
|
| `territory` localised names keyed by alpha2 | T | CLDR sv territory names | Unicode |
|
||||||
| `address` | t | `{/geo.SE…}` | — |
|
| `address` | t | `{/geo.SE…}` | — |
|
||||||
|
|
||||||
`en_US` (`research-sources-world.md`, part1–4)
|
`en_US` (`research-sources-world.md`, part1–4)
|
||||||
@@ -131,10 +131,10 @@ ids. Shape: T = table, t = template, c = choice.
|
|||||||
|
|
||||||
| Category | Shape | Source | Licence |
|
| Category | Shape | Source | Licence |
|
||||||
|---|---|---|---|
|
|---|---|---|---|
|
||||||
| `country` name, alpha2, alpha3, numeric, calling code, TLD, capital, currency, flag, languages | T | datasets/country-codes | PDDL |
|
| `territory` name, alpha2, alpha3, numeric, calling code, TLD, capital, country, currency, flag, languages | T | datasets/country-codes | PDDL |
|
||||||
| `currency` code, numeric, name, symbol, decimals | T | ISO 4217 list-one, CLDR symbols | free, Unicode |
|
| `currency` code, numeric, name, symbol, decimals | T | ISO 4217 list-one, CLDR symbols | free, Unicode |
|
||||||
| `language` ISO 639-1/2 | T | LoC | public domain |
|
| `language` ISO 639-1/2 | T | LoC | public domain |
|
||||||
| `timezone` zone, country, offset | T | tzdb zone1970.tab | public domain |
|
| `timezone` zone, territory, offset | T | tzdb zone.tab | public domain |
|
||||||
| `mimetype` type, extensions | T | IANA + mime-db | CC0, MIT |
|
| `mimetype` type, extensions | T | IANA + mime-db | CC0, MIT |
|
||||||
| `httpstatus`, `httpmethod`, `port`, `tld`, `protocol`, `loglevel` | T/c | IANA | CC0 |
|
| `httpstatus`, `httpmethod`, `port`, `tld`, `protocol`, `loglevel` | T/c | IANA | CC0 |
|
||||||
| `useragent` per browser | T | top-user-agents | MIT |
|
| `useragent` per browser | T | top-user-agents | MIT |
|
||||||
@@ -172,8 +172,12 @@ address, phone, national id, company and date names each.
|
|||||||
spelling a tag takes rather than the reference spelling.
|
spelling a tag takes rather than the reference spelling.
|
||||||
4. `misc` conversions and the new `misc` tables. Convert `timezone`, `car` and
|
4. `misc` conversions and the new `misc` tables. Convert `timezone`, `car` and
|
||||||
`useragent`, and add the new `misc` tables.
|
`useragent`, and add the new `misc` tables.
|
||||||
5. The remaining locale categories: company, phone, finance, vehicle, words.
|
5. Give the hand-written sets a source, as goal 10 asks: read `misc.emoji` from
|
||||||
6. Records with building-block columns across the shipped set; shape re-pin.
|
the Unicode emoji-test.txt register, and `misc.car` from an international make
|
||||||
|
and model source, vPIC and Mobility Sweden being national and so `en_US.car`'s
|
||||||
|
and `sv_SE.car`'s.
|
||||||
|
6. The remaining locale categories: company, phone, finance, vehicle, words.
|
||||||
|
7. Records with building-block columns across the shipped set; shape re-pin.
|
||||||
|
|
||||||
### Release
|
### Release
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user