Локальные переменные не поддерживаются в XSLT 1.0, но есть способы работать с ними, но вам нужно передать их в качестве параметра вашему процессору XSLT или полагаться на расширения. Некоторые процессоры предоставляют вам доступ к информации о локали, но стандартного способа сделать это не существует, и мы должны знать вашу среду, чтобы узнать, возможно ли это. Однако в XSLT 2.0 некоторые функции форматирования даты, времени и чисел будут иметь (иногда ограниченную) поддержку локалей и будут обрабатываться процессором, а не вами (поэтому есть следующие функции:)
Что касается использования некоторой формы локальности в среде XSLT 1.0 и частично как Good Thing (TM) независимо от версии XSLT, я бы настроил несколько базовых шаблонов для типа данных, с которыми вы работаете, и передать локальный параметр в (как объяснено ранее). Для чисел, посмотрите, например, xsl: format-number .
Что касается других локальных вещей, я бы создал еще один XML-файл и позволил параметру работать в качестве средства выбора информации, которую вы ищете. XML может выглядеть так:
<locals>
<config id="de">
<currency notation="₠" format-number="###.###,##" />
<text id="welcome">Wilcommen!</text>
</config>
<config id="en">
<currency notation="£" format-number="### ###.##" />
<text id="welcome">Welcome!</text>
</config>
<config id="no">
<currency notation="NOK" format-number="###.###,##" />
<text id="welcome">Velkommen!</text>
</config>
</locals>
Из этого откройте его как;
<xsl:variable name="locale" select="document('locale.xml')/locals/config[@id=$parameter.for.locale]" />
И вы можете использовать его как таковой для текста приветствия;
<xsl:value-of select="$locale/text[@id='welcome']" />
Для форматирования чисел и тому подобного это немного сложнее, но сначала убедитесь, что это правильный путь, и я его расширю, но в основном вам нужно создать несколько ключей для XML-файла локали и использовать поиск ключей для значений. Для чисел и тому подобного (нужно рассказать мне больше о том, что вы хотите поддержать), я бы написал пару шаблонов, которые с этим справились, и использовал бы;
<xsl:call-template name="my-template">
<xsl:with-param name="this" select="'some_number'" />
</xsl:call-template>