module Jekyll::TranslateMetadataField
Public Instance Methods
translate_metadata_field(field_name)
click to toggle source
Takes a metadata field (machine name) and returns a translated string according to the language of the current page, suitable for displaying to the public. It gets this string by looking in the site's “schema” for a “translation_key” property, and running that through the opensdg_translate_key() helper function.
Temporary backwards compatibility: If the check fails, it falls back to checking for a translation in the 'metadata_fields' translation group.
More backwards compatibility: If all of the above fails, it falls back to using whatever is in a “label” property in the schema.
Parameters
field_name : string
The machine name of a metadata field.
# File lib/jekyll-open-sdg-plugins/translate_metadata_field.rb, line 22 def translate_metadata_field(field_name) # Determine the language of the current page. t = @context.registers[:site].data['translations'] lang = @context.environments.first['page']['language'] # Get the schema. schema = @context.registers[:site].data['schema'] # Find the field. field = schema.select {|x| x['name'] == field_name } if field field = field.first() end to_translate = '' # First choice - use the 'translation_key' property from the schema. if field && field['field'].has_key?('translation_key') to_translate = field['field']['translation_key'] # Next choice - try the 'metadata_fields' translation group. elsif t[lang].has_key?('metadata_fields') && t[lang]['metadata_fields'].has_key?(field_name) to_translate = 'metadata_fields.' + field_name # Next choice - use the 'label' from the schema. elsif field && field['field'].has_key?('label') to_translate = field['field']['label'] # Last choice - just use the field name. else to_translate = field_name end return opensdg_translate_key(to_translate, t, lang) end