Module: ProductTaxonomy::Localized
- Included in:
- Attribute, Category, Disclosure, ReturnReason, Value
- Defined in:
- lib/product_taxonomy/models/mixins/localized.rb
Instance Method Summary collapse
- #localizations ⇒ Object
-
#validate_localizations!(locales = nil) ⇒ Object
Validate that all localizations are present for the given locales.
Instance Method Details
#localizations ⇒ Object
5 6 7 8 9 10 11 12 13 14 15 16 |
# File 'lib/product_taxonomy/models/mixins/localized.rb', line 5 def localizations return @localizations if @localizations localization_path = File.( "localizations/#{localizations_humanized_model_name}/*.yml", ProductTaxonomy.data_path, ) @localizations = Dir.glob(localization_path).each_with_object({}) do |file, localizations| locale = File.basename(file, ".yml") localizations[locale] = YAML.safe_load_file(file).dig(locale, localizations_humanized_model_name) end end |
#validate_localizations!(locales = nil) ⇒ Object
Validate that all localizations are present for the given locales. If no locales are provided, all locales will be validated.
22 23 24 25 26 27 28 29 30 31 32 |
# File 'lib/product_taxonomy/models/mixins/localized.rb', line 22 def validate_localizations!(locales = nil) model_keys = all.map { |model| model.send(@localizations_keyed_by).to_s } locales_to_validate = locales || localizations.keys locales_to_validate.each do |locale| missing_localization_keys = model_keys.reject { |key| localizations.dig(locale, key, "name") } next if missing_localization_keys.empty? raise ArgumentError, "Missing or incomplete localizations for the following keys in " \ "localizations/#{localizations_humanized_model_name}/#{locale}.yml: #{missing_localization_keys.join(", ")}" end end |