Я думаю, что это сводится к 4 вариантам:
- Поставьте ссылку в вашей локализации: «Пожалуйста, , войдите , чтобы продолжить»
- Несколько локализаций - либо:
- «Пожалуйста, {0} для продолжения» и «логин», или
- «Пожалуйста», «войдите» и «продолжить»
- Разметка внутри вашей локализации, например:
- «Пожалуйста, {0}, войдите {1}, чтобы продолжить»
- «Пожалуйста, {start-login}, войдите {end-login}, чтобы продолжить»
- "Пожалуйста, , войдите , чтобы продолжить"
- Только не поддерживайте это - сделайте предложение полностью ссылкой
Я думаю, что есть главная причина, по которой следует избегать 1 - вы смешиваете локализации и навигацию приложений.
Вариант 2 заканчивается несколькими ресурсами для каждого блока текста, но если у вас есть хорошие способы управления всеми вашими локализациями, это не должно быть проблемой. Однако сторонним переводчикам может быть больно - вам нужен какой-то способ сообщить им контекст или вы получите очень странные переводы отдельных слов.
Вариант 3 - мое предпочтительное решение. Тем не менее, вы по-прежнему создаете проблемы для своих переводчиков - большинство из них не поймет ваши токены / HTML / разметку в тексте. У нас уже есть какой-то HTML, поэтому 3.3 сработал для нас.
Вариант 4, возможно, стоит рассмотреть - достаточно ли вам встраивать ссылку, чтобы она стоила дополнительной работы и обслуживания? Это важный вопрос, специфичный для вашего приложения: если целое предложение является ссылкой (а не просто глаголом - что является наилучшей практикой ссылок), вы действительно теряете достаточно, чтобы вариант 2 или 3 стоил дополнительных усилий?
Я думаю, что это может быть причиной того, что нет более стандартизированных способов сделать это, так как для большинства проектов (возможно, 9 из 10) достаточно варианта 4, так что это становится проблемой только для некоторых особых случаев. У нас есть сложное приложение, содержащее около 11 000 фрагментов локализованного текста, и мы работаем в течение 4 подавляющего большинства времени, и у нас есть только 4 или 5 мест, где нам пришлось идти с 3,3
Наша техническая реализация похожа на вашу:
<%= Html.Localise("Controller/Action/KeyOfTextOnPage") %>
Для ссылок у нас есть специальный помощник:
<%= Html.LocaliseLink("Controller/Action/KeyOfTextOnPage", "~/link.aspx") %>
<%= Html.LocaliseAction("Controller/Action/KeyOfTextOnPage", "action", "controller") %>