Link from links and buttons are not translated when are inside a template. Example:
A header with a button shop doesn’t translate the link to the shop, so I need to do a menu per each language. Which is too repetitive.
This is the way polylang works, you must have separate templates for each language, your content is not auto-translated and neither are links
Post links that are retrieved by ID can do pll_get_post to get the translated id of the post and then retrieve the link from the translated post.
add_filter("som/link/filter", function($id, ){
if(function_exists("pll_get_post")){
$id = pll_get_post($id);
}
return get_permalink($id);
});
But is simple to implement, I don’t know if has some kind of integration with polylang but I think this is very basic and polylang is big one to have it into account.