Подход локализации для XSLT + RESX в ASP.NET - PullRequest
2 голосов
/ 16 сентября 2009

У меня есть веб-приложение ASP.NET, в котором внутренние данные (формат XML) преобразуются с использованием XSLT, в результате чего создается XHTML, который выводится на страницу.

Упрощенный код:

XmlDocument xmlDoc = MyRepository.RetrieveXmlData(keyValue);
XslCompiledTransform xsl = new XslCompiledTransform();
xsl.Load(pathToXsl, XsltSettings.TrustedXslt, null);
StringWriter stringWriter = new StringWriter();
xsl.Transform(xmlDoc, null, stringWriter);
myLiteral.Text = stringWriter.ToString();

В настоящее время мой XSL-файл содержит элементы разметки XHTML, а также текстовые метки, которые в настоящее время представлены на английском языке. например:

<p>Title:<br />
  <xsl:value-of select="title"/>
</p>
<p>Description:<br />
  <xsl:value-of select="desc"/>
</p>

Я бы хотел, чтобы текстовые метки (заголовок и описание выше) были локализованы. Я думал об использовании файлов ресурсов .NET (.resx), но я не знаю, как строковые ресурсы resx будут извлечены в XSLT, когда произойдет преобразование.

Я бы предпочел не иметь специфичных для локали копий файла XSLT, так как это означает много повторяющейся логики преобразования.

(ПРИМЕЧАНИЕ: данные XML уже локализованы, поэтому мне не нужно их менять)

Ответы [ 3 ]

1 голос
/ 28 января 2010

XML-документ может содержать либо один язык с одним XML-документом для каждого языка, либо, альтернативно, один XML-документ со всеми языками. Форматы XML в следующем примере соответствуют файлам ресурсов Microsoft .NET (.resx) (один файл на язык) или одному документу TMX (обмен памятью переводов) со всеми языками. Однако может использоваться любой формат, если XPath, используемый для чтения текста, является согласованным.

См. Мою статью " Как локализовать XSLT " для полного, функционального образца в http://www.codeproject.com/Articles/338731/LocalizeXSLT.

1 голос
/ 22 сентября 2009

Замените текст в файлах XSLT на элемент-заполнитель, а затем запишите другое локализующее преобразование, которое берет файл resx и использует его для замены заполнителей на нужный фрагмент текста.

<p><localized name="title"/>:<br />
  <xsl:value-of select="title"/>
</p>
<p><localized name="desc"/>:<br />
  <xsl:value-of select="desc"/>
</p>
0 голосов
/ 24 сентября 2009

Поскольку файл .Resx является файлом XML, вы можете использовать его в качестве другого источника для XSLT, используя функцию документа .

...