Глобализация и ссылки в предложениях - PullRequest
0 голосов
/ 12 августа 2009

Я работаю над глобализацией / локализацией приложения asp.net с C # в качестве бэкенда. Мы находимся в процессе извлечения строк в файл ресурсов и столкнулись с проблемой. Мы пытаемся объединить предложения, чтобы они могли быть переведены, но со ссылками это невозможно. Например:

<%= Strings.BeginningOfSentence %>
<asp:HyperLink id="exampleLink" runat="server"><%= Strings.MiddleOfSentence %></asp:HyperLink>
<%= Strings.EndOfSentence %>

Строки - это файл ресурсов. Если бы это был обычный html для ссылки, я мог бы использовать String.Format и сохранить предложение вместе, добавив html в качестве двух параметров, но это нарушает его здесь. Есть идеи, как сделать эту работу?

Ответы [ 2 ]

4 голосов
/ 12 августа 2009

Вам не нужно использовать элемент управления HyperLink для этого? Если вам нужна динамическая ссылка, вы можете сохранить тег привязки в параметризованной строке и добавить необходимые значения атрибута, используя string.Format, как вы предложили. Примерно так:

Код:

myLiteral.Text = string.Format("{0} <a href=\"{1}\">{2}</a> {3}", Strings.BeginningOfSentence, myUrl, Strings.MiddleOfSentence, Strings.EndOfSentence);

ASPX:

<asp:Literal id="myLiteral" runat="server" />
1 голос
/ 12 августа 2009

Я обнаружил, что параметризованные строки значительно упрощают переводы, смешанные с динамическим контентом. Например, в переведенной строке могут быть заполнители, в которые можно вставить link-html. Это может исключить использование серверных элементов управления гиперссылками. Пример строки:

английский

"The <a href=\"http://images.google.se/images?q=house&tab=wi\">house</a> in which we lived"

Swedish:

"<a href=\"http://images.google.se/images?q=hus&tab=wi\">huset</a> som vi bodde i"

Обратите внимание, как ссылка переместилась в предложении по отношению к ссылке (в шведской версии текста до ссылки нет).

Если вы не хотите включать разметку в перевод, я думаю, она может использоваться как параметризованный шаблон сама по себе:

string googleSearchTemplate = "<a href=\"http://images.google.se/images?q={0}&tab=wi\">{1}</a>"

Затем вы можете разобрать переведенные фрагменты в html-ссылку, а затем вставить этот фрагмент в окончательную строку:

string.Format("The {0} in which we lived", string.Format(googleSearchTemplate, "house", "house"));

Тогда вам просто нужно вставить получившуюся строку на страницу.

...