Use the _html suffix to mark that we expect the translations to contain links.
Unfortunately, we can't use the _html keys for the plain text emails, since the input options (e.g. username, url) will be html-escaped,
before it is passed to the view. So we need to use non-html-suffix keys for the plaintext views, in most cases. Only when the translation
options (e.g. url) are guaranteed to not contain any escapable characters can the same translation key be shared.
This adapts to two changes in place handling by Nominatim:
* Place links that are computed by Nominatim are now found in
extratags['linked_places']. Keep the check for extratags['place']
as this may contain an explicitly mapped place label.
* Use address rank for guessing the admin level. This gets normalised
by Nominatim with respect to country-specific use of admin_level.
Also adds additional labels for admin levels, so that we now have
complete coverage for all levels that are in use in OSM.
Fixes#2268.
Unfortunately there's still a lego translation when both halves of the sentence are joined together, but this at least reduces the number of combinations to translate.
It doesn't make a huge difference, since rails caches all the results
of the queries generated by point.trace lookups, but at least it cuts
down on the logs.
This ensures that the text and the close icon don't overlap, regardless
of the length of the title. The title div grows to use all available
space, while ensuring the text breaks if necessary to prevent it from
pushing the close icon offscreen.
We can avoid using `html_safe` in various circumstances, through alternative approaches like i18n keys ending in `_html` or using `safe_join` to avoid converting via unsafe string types.
The `_html` keys approach only work for ActionView helper version of `t`, not the base `I18n.t` method.
It's a convention in rails to name your mailers with a Mailer suffix, and is also common to name the class after the recipient (e.g. User, Admin). So UserMailer seems a reasonable choice.
As we don't have any way to actually find the active sessions for
an account we instead store a fingerprint in the session, and refuse
to use any session with a different fingerprint.
Alternative to #580
This reworks changeset descriptions to use italics instead of header
elements, in order to make them more like quotes.
Care has been taken to make sure that there is still a header element
as the first element of the common details partial, in order to make
the history pages look right (where the partial appears multiple times).
Fixes#2823
The panels are collapsed by default, when there is a long list of features, but
open on short lists to save on clicks. 10 items is arbitrary but seemed reasonable.