Merge pull request #8936 from cillian/language-metatags

Include language metatags in html template when more than one language available
This commit is contained in:
Filipe
2022-03-17 16:16:07 +00:00
committed by GitHub
6 changed files with 106 additions and 0 deletions

View File

@@ -27,6 +27,17 @@ module ApplicationHelper
OpenFoodNetwork::FeatureToggle.enabled?(feature, user)
end
def language_meta_tags
return if I18n.available_locales.one?
I18n.available_locales.map do |locale|
tag.link(
hreflang: locale.to_s.gsub("_", "-").downcase,
href: "#{request.protocol}#{request.host_with_port}/locales/#{locale}"
)
end.join("\n").html_safe
end
def ng_form_for(name, *args, &block)
options = args.extract_options!

View File

@@ -14,6 +14,7 @@
= favicon_link_tag "/favicon-staging.ico"
%link{href: "https://fonts.googleapis.com/css?family=Roboto:400,300italic,400italic,300,700,700italic|Oswald:300,400,700", rel: "stylesheet", type: "text/css"}
%link{href: asset_pack_path("media/fonts/OFN-v2.woff"), rel: "preload", as: "font", crossorigin: "anonymous"}
= language_meta_tags
= stylesheet_pack_tag "darkswarm", "data-turbo-track": "reload"
= javascript_pack_tag "application", "data-turbo-track": "reload"

View File

@@ -9,6 +9,7 @@
- else
= favicon_link_tag "/favicon-staging.ico"
%link{href: "https://fonts.googleapis.com/css?family=Roboto:400,300italic,400italic,300,700,700italic|Oswald:300,400,700", rel: "stylesheet", type: "text/css"}
= language_meta_tags
= stylesheet_pack_tag "darkswarm"
= javascript_include_tag "darkswarm/all"

View File

@@ -0,0 +1,45 @@
# frozen_string_literal: true
require 'spec_helper'
describe ApplicationHelper, type: :helper do
describe "#language_meta_tags" do
let(:request) { double("request", host_with_port: "test.host", protocol: "http://") }
before do
allow(helper).to receive(:request).and_return(request)
end
context "when there is more than one available locale" do
before do
allow(I18n).to receive(:available_locales) { ["en", "es", "pt"] }
end
it "displays a language tag for each available locale" do
expect(language_meta_tags).to include('<link hreflang="en" href="http://test.host/locales/en">')
expect(language_meta_tags).to include('<link hreflang="es" href="http://test.host/locales/es">')
expect(language_meta_tags).to include('<link hreflang="pt" href="http://test.host/locales/pt">')
end
end
context "when there is only one available locale" do
before do
allow(I18n).to receive(:available_locales) { ["en"] }
end
it "doesn't include any language tags" do
expect(language_meta_tags).to be_nil
end
end
context "when the availables locales have regional variations" do
before do
allow(I18n).to receive(:available_locales) { ["fr_CA", "en_CA"] }
end
it "includes the region code in the :hreflang attribute" do
expect(language_meta_tags).to include('<link hreflang="fr-ca" href="http://test.host/locales/fr_CA">')
expect(language_meta_tags).to include('<link hreflang="en-ca" href="http://test.host/locales/en_CA">')
end
end
end
end

View File

@@ -0,0 +1,24 @@
# frozen_string_literal: true
require "spec_helper"
describe "layouts/darkswarm.html.haml" do
helper InjectionHelper
helper I18nHelper
helper ShopHelper
before do
allow(view).to receive_messages(
current_order: nil,
spree_current_user: nil
)
end
it "displays language tags when there is more than one available locale" do
render
expect(rendered).to include('<link hreflang="en" href="http://test.host/locales/en">')
expect(rendered).to include('<link hreflang="es" href="http://test.host/locales/es">')
expect(rendered).to include('<link hreflang="pt" href="http://test.host/locales/pt">')
end
end

View File

@@ -0,0 +1,24 @@
# frozen_string_literal: true
require "spec_helper"
describe "layouts/registration.html.haml" do
helper InjectionHelper
helper I18nHelper
helper ShopHelper
before do
allow(view).to receive_messages(
current_order: nil,
spree_current_user: nil
)
end
it "displays language tags when there is more than one available locale" do
render
expect(rendered).to include('<link hreflang="en" href="http://test.host/locales/en">')
expect(rendered).to include('<link hreflang="es" href="http://test.host/locales/es">')
expect(rendered).to include('<link hreflang="pt" href="http://test.host/locales/pt">')
end
end