Skip to content

Commit

Permalink
Maintain locale information when visiting MyCharlie (#2348)
Browse files Browse the repository at this point in the history
  • Loading branch information
anthonyshull authored Jan 31, 2025
1 parent 4542afc commit 38e38f4
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 0 deletions.
10 changes: 10 additions & 0 deletions assets/js/translate-analytics.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,10 @@ export default () => {
if (typeof MutationObserver === "function") {
// Tell the observer to monitor for changes to HTML attributes
const config = { attributes: true };

// Get the language of the page on load.
const oldLanguage = document.querySelector("html").getAttribute("lang");

// Build the function to run when a change is observed
const callback = mutationList => {
// Loop through each observed change
Expand All @@ -36,6 +40,12 @@ export default () => {
event: "translate",
language: newLanguage && newLanguage !== "en" ? newLanguage : ""
});

// If the page loaded with one language and switched to another, we have to reload the page.
// This is so that page content can be rendered differently with the added cookie information.
if (newLanguage !== oldLanguage) {
window.location.reload();
}
}
}
}
Expand Down
1 change: 1 addition & 0 deletions lib/dotcom/content_rewriter.ex
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,7 @@ defmodule Dotcom.ContentRewriter do
element
|> Links.add_target_to_redirect()
|> Links.add_preview_params(conn)
|> Links.add_locale_params(conn)
|> rewrite_children(conn, context)
end

Expand Down
20 changes: 20 additions & 0 deletions lib/dotcom/content_rewriters/links.ex
Original file line number Diff line number Diff line change
Expand Up @@ -40,4 +40,24 @@ defmodule Dotcom.ContentRewriters.Links do
element
end
end

@doc """
If the user has used Google Translate on dotcom, we want to forward them to MyCharlie with the same language.
"""
def add_locale_params({"a", attrs, children} = element, %{cookies: %{"googtrans" => languages}}) do
attr_map = Enum.into(attrs, %{})
href = Map.get(attr_map, "href", "")
locale = String.split(languages, "/") |> List.last()

if String.match?(href, ~r/mycharlie.mbta.com/) do
updated_href = "#{href}?locale=#{locale}"
updated_attrs = attr_map |> Map.replace!("href", updated_href) |> Map.to_list()

{"a", updated_attrs, children}
else
element
end
end

def add_locale_params(element, _conn), do: element
end

0 comments on commit 38e38f4

Please sign in to comment.