Project

iso

0.06
No release in over 3 years
Low commit activity in last 3 years
A subset of the ISO spec implemented in ruby
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
 Dependencies

Development

~> 2.0
~> 2.3
~> 6.2
~> 3.9

Runtime

>= 0
 Project Readme

iso

Build Status

This project is a ruby implementation of ISO 639-1 alpha2 and ISO 3166-1. It includes definitions of all two letter language and region codes.

Languages

Languages are defined by ISO 639-1 alpha-2; that is the 2 letter lowercase language code.

These have been augmented to contain the plural rule names and the language's direction.

> ISO::Language.find('ru')

=> #<ISO::Language:0x007fe2ba43db50
		@plural_rule_names=["one", "few", "many", "other"],
		@direction="ltr",
		@code="ru",
		@name="Russian">

Regions

Regions are defined by ISO 3166-1; that is the 2 letter uppercase region code.

> ISO::Region.find('MX')

=> #<ISO::Region:0x007fe2ba070e50
		@code="MX",
		@name="Mexico">

Regions can also be defined by the UN M49 standard; that is the 3 digit region code.

> ISO::UN::Region.find('419')

=> #<ISO::Region:0x007fe2ba43db50
		@code="419",
		@name="Latin America and the Caribbean">

Tags

The combination of a language and a region is called a Tag :

> ISO::Tag.new('pt-BR')

 => #<ISO::Tag:0x007fe2bb005b90 @code="pt-BR",
 	 	@language=#<ISO::Language:0x007fe2ba256918
 			@plural_rule_names=["one", "other"],
		  	@direction="ltr",
	  		@code="pt",
  			@name="Portuguese">,
 		@region=#<ISO::Region:0x007fe2ba412e28
			@code="BR",
			@name="Brazil">>

You can check if a Tag is valid like so :

> ISO::Tag.new('pt-BR').valid? => true
> ISO::Tag.new('lolcat').valid? => false

I18n

Language and region names are internationalized - contribute to the I18n project directly on Locale for any changes.