Class: Jekyll::UJLanguageTag

Inherits:
Liquid::Tag
  • Object
show all
Includes:
Jekyll::UJPowertools::VariableResolver
Defined in:
lib/tags/language.rb

Constant Summary collapse

LANGUAGE_MAPPINGS =

Language mappings: ISO code => [English name, Native name]

{
  'aa' => ['Afar', 'Afaraf'],
  'ab' => ['Abkhazian', 'аҧсуа бызшәа'],
  'ae' => ['Avestan', 'avesta'],
  'af' => ['Afrikaans', 'Afrikaans'],
  'ak' => ['Akan', 'Akan'],
  'am' => ['Amharic', 'አማርኛ'],
  'an' => ['Aragonese', 'aragonés'],
  'ar' => ['Arabic', 'العربية'],
  'as' => ['Assamese', 'অসমীয়া'],
  'av' => ['Avaric', 'авар мацӀ'],
  'ay' => ['Aymara', 'aymar aru'],
  'az' => ['Azerbaijani', 'azərbaycan dili'],
  'ba' => ['Bashkir', 'башҡорт теле'],
  'be' => ['Belarusian', 'беларуская мова'],
  'bg' => ['Bulgarian', 'български език'],
  'bh' => ['Bihari languages', 'भोजपुरी'],
  'bi' => ['Bislama', 'Bislama'],
  'bm' => ['Bambara', 'bamanankan'],
  'bn' => ['Bengali', 'বাংলা'],
  'bo' => ['Tibetan', 'བོད་ཡིག'],
  'br' => ['Breton', 'brezhoneg'],
  'bs' => ['Bosnian', 'bosanski jezik'],
  'ca' => ['Catalan', 'català'],
  'ce' => ['Chechen', 'нохчийн мотт'],
  'ch' => ['Chamorro', 'Chamoru'],
  'co' => ['Corsican', 'corsu'],
  'cr' => ['Cree', 'ᓀᐦᐃᔭᐍᐏᐣ'],
  'cs' => ['Czech', 'čeština'],
  'cu' => ['Church Slavic', 'ѩзыкъ словѣньскъ'],
  'cv' => ['Chuvash', 'чӑваш чӗлхи'],
  'cy' => ['Welsh', 'Cymraeg'],
  'da' => ['Danish', 'dansk'],
  'de' => ['German', 'Deutsch'],
  'dv' => ['Divehi', 'ދިވެހި'],
  'dz' => ['Dzongkha', 'རྫོང་ཁ'],
  'ee' => ['Ewe', 'Eʋegbe'],
  'el' => ['Greek', 'ελληνικά'],
  'en' => ['English', 'English'],
  'eo' => ['Esperanto', 'Esperanto'],
  'es' => ['Spanish', 'español'],
  'et' => ['Estonian', 'eesti'],
  'eu' => ['Basque', 'euskera'],
  'fa' => ['Persian', 'فارسی'],
  'ff' => ['Fulah', 'Fulfulde'],
  'fi' => ['Finnish', 'suomi'],
  'fj' => ['Fijian', 'vosa Vakaviti'],
  'fo' => ['Faroese', 'føroyskt'],
  'fr' => ['French', 'français'],
  'fy' => ['Western Frisian', 'Frysk'],
  'ga' => ['Irish', 'Gaeilge'],
  'gd' => ['Gaelic', 'Gàidhlig'],
  'gl' => ['Galician', 'galego'],
  'gn' => ['Guarani', 'Avañe\'ẽ'],
  'gu' => ['Gujarati', 'ગુજરાતી'],
  'gv' => ['Manx', 'Gaelg'],
  'ha' => ['Hausa', 'هَوُسَ'],
  'he' => ['Hebrew', 'עברית'],
  'hi' => ['Hindi', 'हिन्दी'],
  'ho' => ['Hiri Motu', 'Hiri Motu'],
  'hr' => ['Croatian', 'hrvatski jezik'],
  'ht' => ['Haitian', 'Kreyòl ayisyen'],
  'hu' => ['Hungarian', 'magyar'],
  'hy' => ['Armenian', 'Հայերեն'],
  'hz' => ['Herero', 'Otjiherero'],
  'ia' => ['Interlingua', 'Interlingua'],
  'id' => ['Indonesian', 'Bahasa Indonesia'],
  'ie' => ['Interlingue', 'Interlingue'],
  'ig' => ['Igbo', 'Asụsụ Igbo'],
  'ii' => ['Nuosu', 'ꆈꌠ꒿ Nuosuhxop'],
  'ik' => ['Inupiaq', 'Iñupiaq'],
  'io' => ['Ido', 'Ido'],
  'is' => ['Icelandic', 'Íslenska'],
  'it' => ['Italian', 'italiano'],
  'iu' => ['Inuktitut', 'ᐃᓄᒃᑎᑐᑦ'],
  'ja' => ['Japanese', '日本語'],
  'jv' => ['Javanese', 'basa Jawa'],
  'ka' => ['Georgian', 'ქართული'],
  'kg' => ['Kongo', 'Kikongo'],
  'ki' => ['Kikuyu', 'Gĩkũyũ'],
  'kj' => ['Kwanyama', 'Kuanyama'],
  'kk' => ['Kazakh', 'қазақ тілі'],
  'kl' => ['Kalaallisut', 'kalaallisut'],
  'km' => ['Khmer', 'ខ្មែរ'],
  'kn' => ['Kannada', 'ಕನ್ನಡ'],
  'ko' => ['Korean', '한국어'],
  'kr' => ['Kanuri', 'Kanuri'],
  'ks' => ['Kashmiri', 'कश्मीरी'],
  'ku' => ['Kurdish', 'Kurdî'],
  'kv' => ['Komi', 'коми кыв'],
  'kw' => ['Cornish', 'Kernewek'],
  'ky' => ['Kirghiz', 'Кыргызча'],
  'la' => ['Latin', 'latine'],
  'lb' => ['Luxembourgish', 'Lëtzebuergesch'],
  'lg' => ['Ganda', 'Luganda'],
  'li' => ['Limburgish', 'Limburgs'],
  'ln' => ['Lingala', 'Lingála'],
  'lo' => ['Lao', 'ພາສາລາວ'],
  'lt' => ['Lithuanian', 'lietuvių kalba'],
  'lu' => ['Luba-Katanga', 'Tshiluba'],
  'lv' => ['Latvian', 'latviešu valoda'],
  'mg' => ['Malagasy', 'fiteny malagasy'],
  'mh' => ['Marshallese', 'Kajin M̧ajeļ'],
  'mi' => ['Māori', 'te reo Māori'],
  'mk' => ['Macedonian', 'македонски јазик'],
  'ml' => ['Malayalam', 'മലയാളം'],
  'mn' => ['Mongolian', 'Монгол хэл'],
  'mr' => ['Marathi', 'मराठी'],
  'ms' => ['Malay', 'bahasa Melayu'],
  'mt' => ['Maltese', 'Malti'],
  'my' => ['Burmese', 'ဗမာစာ'],
  'na' => ['Nauru', 'Dorerin Naoero'],
  'nb' => ['Norwegian Bokmål', 'Norsk bokmål'],
  'nd' => ['North Ndebele', 'isiNdebele'],
  'ne' => ['Nepali', 'नेपाली'],
  'ng' => ['Ndonga', 'Owambo'],
  'nl' => ['Dutch', 'Nederlands'],
  'nn' => ['Norwegian Nynorsk', 'Norsk nynorsk'],
  'no' => ['Norwegian', 'Norsk'],
  'nr' => ['South Ndebele', 'isiNdebele'],
  'nv' => ['Navajo', 'Diné bizaad'],
  'ny' => ['Chichewa', 'chiCheŵa'],
  'oc' => ['Occitan', 'occitan'],
  'oj' => ['Ojibwa', 'ᐊᓂᔑᓈᐯᒧᐎᓐ'],
  'om' => ['Oromo', 'Afaan Oromoo'],
  'or' => ['Oriya', 'ଓଡ଼ିଆ'],
  'os' => ['Ossetian', 'ирон æвзаг'],
  'pa' => ['Panjabi', 'ਪੰਜਾਬੀ'],
  'pi' => ['Pāli', 'पाऴि'],
  'pl' => ['Polish', 'język polski'],
  'ps' => ['Pashto', 'پښتو'],
  'pt' => ['Portuguese', 'português'],
  'qu' => ['Quechua', 'Runa Simi'],
  'rm' => ['Romansh', 'rumantsch grischun'],
  'rn' => ['Kirundi', 'Ikirundi'],
  'ro' => ['Romanian', 'română'],
  'ru' => ['Russian', 'русский'],
  'rw' => ['Kinyarwanda', 'Ikinyarwanda'],
  'sa' => ['Sanskrit', 'संस्कृतम्'],
  'sc' => ['Sardinian', 'sardu'],
  'sd' => ['Sindhi', 'सिन्धी'],
  'se' => ['Northern Sami', 'Davvisámegiella'],
  'sg' => ['Sango', 'yângâ tî sängö'],
  'si' => ['Sinhala', 'සිංහල'],
  'sk' => ['Slovak', 'slovenčina'],
  'sl' => ['Slovene', 'slovenski jezik'],
  'sm' => ['Samoan', 'gagana fa\'a Samoa'],
  'sn' => ['Shona', 'chiShona'],
  'so' => ['Somali', 'Soomaaliga'],
  'sq' => ['Albanian', 'gjuha shqipe'],
  'sr' => ['Serbian', 'српски језик'],
  'ss' => ['Swati', 'SiSwati'],
  'st' => ['Southern Sotho', 'Sesotho'],
  'su' => ['Sundanese', 'Basa Sunda'],
  'sv' => ['Swedish', 'svenska'],
  'sw' => ['Swahili', 'Kiswahili'],
  'ta' => ['Tamil', 'தமிழ்'],
  'te' => ['Telugu', 'తెలుగు'],
  'tg' => ['Tajik', 'тоҷикӣ'],
  'th' => ['Thai', 'ไทย'],
  'ti' => ['Tigrinya', 'ትግርኛ'],
  'tk' => ['Turkmen', 'Türkmen'],
  'tl' => ['Tagalog', 'Wikang Tagalog'],
  'tn' => ['Tswana', 'Setswana'],
  'to' => ['Tonga', 'faka Tonga'],
  'tr' => ['Turkish', 'Türkçe'],
  'ts' => ['Tsonga', 'Xitsonga'],
  'tt' => ['Tatar', 'татар теле'],
  'tw' => ['Twi', 'Twi'],
  'ty' => ['Tahitian', 'Reo Tahiti'],
  'ug' => ['Uighur', 'ئۇيغۇرچە‎'],
  'uk' => ['Ukrainian', 'українська мова'],
  'ur' => ['Urdu', 'اردو'],
  'uz' => ['Uzbek', 'Oʻzbek'],
  've' => ['Venda', 'Tshivenḓa'],
  'vi' => ['Vietnamese', 'Tiếng Việt'],
  'vo' => ['Volapük', 'Volapük'],
  'wa' => ['Walloon', 'walon'],
  'wo' => ['Wolof', 'Wollof'],
  'xh' => ['Xhosa', 'isiXhosa'],
  'yi' => ['Yiddish', 'ייִדיש'],
  'yo' => ['Yoruba', 'Yorùbá'],
  'za' => ['Zhuang', 'Saɯ cueŋƅ'],
  'zh' => ['Chinese', '中文'],
  'zu' => ['Zulu', 'isiZulu']
}

Instance Method Summary collapse

Methods included from Jekyll::UJPowertools::VariableResolver

#is_quoted?, #parse_arguments, #parse_options, #resolve_input, #resolve_variable

Constructor Details

#initialize(tag_name, markup, tokens) ⇒ UJLanguageTag

Returns a new instance of UJLanguageTag.



196
197
198
199
# File 'lib/tags/language.rb', line 196

def initialize(tag_name, markup, tokens)
  super
  @markup = markup.strip
end

Instance Method Details

#render(context) ⇒ Object



201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
# File 'lib/tags/language.rb', line 201

def render(context)
  # Parse arguments using helper
  parts = parse_arguments(@markup)
  
  # Resolve first argument - if it resolves to non-string, use the literal
  iso_code = parts[0]
  if iso_code
    resolved = resolve_input(context, iso_code, true)
    # If resolved value is not a string, treat the input as literal
    if resolved.is_a?(String)
      # Strip any quotes from the resolved string value
      iso_code = resolved.gsub(/^['"]|['"]$/, '')
    else
      # Strip quotes if present and use as literal
      iso_code = iso_code.gsub(/^['"]|['"]$/, '')
    end
  end
  
  output_type = resolve_input(context, parts[1], true) || 'english' # default to english
  
  # Convert to lowercase for lookup
  iso_code = iso_code.to_s.downcase
  output_type = output_type.to_s.downcase

  # Look up the language
  language_data = LANGUAGE_MAPPINGS[iso_code]
  return iso_code if language_data.nil? # Return original code if not found

  # Return appropriate language name based on output type
  case output_type
  when 'native'
    language_data[1] # Native name
  else
    language_data[0] # English name (default)
  end
end