diff --git a/app/components/phone_input_component.rb b/app/components/phone_input_component.rb index 31e5ad76cdf..0a512043747 100644 --- a/app/components/phone_input_component.rb +++ b/app/components/phone_input_component.rb @@ -36,9 +36,10 @@ def translated_country_code_names end def international_phone_codes + translated_international_codes = PhoneNumberCapabilities.translated_international_codes supported_country_codes. map do |code_key| - code_data = PhoneNumberCapabilities.translated_international_codes[code_key] + code_data = translated_international_codes[code_key] [ international_phone_code_label(code_data), diff --git a/app/services/phone_number_capabilities.rb b/app/services/phone_number_capabilities.rb index 6dd35b65099..cd63da50ab7 100644 --- a/app/services/phone_number_capabilities.rb +++ b/app/services/phone_number_capabilities.rb @@ -10,12 +10,17 @@ def self.load_config attr_reader :phone, :phone_confirmed def self.translated_international_codes - translated_international_codes_data = {} - INTERNATIONAL_CODES.each do |k, value| - translated_international_codes_data[k] = - value.merge('name' => I18n.t("countries.#{k.downcase}")) + @translated_intl_codes_data = nil if Rails.env.development? + return @translated_intl_codes_data[I18n.locale] if @translated_intl_codes_data + + @translated_intl_codes_data = Hash.new { |h, k| h[k] = {} } + I18n.available_locales.each do |locale| + INTERNATIONAL_CODES.each do |k, value| + @translated_intl_codes_data[locale][k] = + value.merge('name' => I18n.t("countries.#{k.downcase}", locale: locale)) + end end - translated_international_codes_data + @translated_intl_codes_data[I18n.locale] end def initialize(phone, phone_confirmed:) diff --git a/spec/components/phone_input_component_spec.rb b/spec/components/phone_input_component_spec.rb index 6bcefc03640..cba11cff60b 100644 --- a/spec/components/phone_input_component_spec.rb +++ b/spec/components/phone_input_component_spec.rb @@ -136,10 +136,11 @@ context 'with delivery unsupported country' do before do - stub_const( - 'PhoneNumberCapabilities::INTERNATIONAL_CODES', - PhoneNumberCapabilities::INTERNATIONAL_CODES.merge( - 'US' => PhoneNumberCapabilities::INTERNATIONAL_CODES['US'].merge('supports_sms' => false), + allow(PhoneNumberCapabilities).to receive(:translated_international_codes).and_return( + PhoneNumberCapabilities.translated_international_codes.merge( + 'US' => PhoneNumberCapabilities.translated_international_codes['US'].merge( + 'supports_sms' => false, + ), ), ) end @@ -159,10 +160,9 @@ context 'with delivery unsupported unconfirmed country' do before do - stub_const( - 'PhoneNumberCapabilities::INTERNATIONAL_CODES', - PhoneNumberCapabilities::INTERNATIONAL_CODES.merge( - 'US' => PhoneNumberCapabilities::INTERNATIONAL_CODES['US'].merge( + allow(PhoneNumberCapabilities).to receive(:translated_international_codes).and_return( + PhoneNumberCapabilities.translated_international_codes.merge( + 'US' => PhoneNumberCapabilities.translated_international_codes['US'].merge( 'supports_sms_unconfirmed' => false, ), ),