2009-08-11 6 views
0

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

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

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

ответ

4

Вам не нужно использовать элемент управления HyperLink для этого? Если вам нужна динамическая ссылка, вы можете сохранить тэг anchor в параметризованной строке и добавить необходимые значения атрибутов, используя 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" /> 
+0

конечно! код-позади! – avaleske

1

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

English:

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

шведский:

"<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")); 

Затем вам просто нужно вставить полученную строку на страницу.