如何使用 Saxon HE 10.2 设置语言数据?

How to set language data with Saxon HE 10.2?

如何使用 Saxon HE 10.2 正确设置语言数据?我需要 XSLT 处理器输出当前日期和用德语写出的月份名称,例如 21. Oktober 2020。不幸的是,处理器输出 [Language: en]21. October 2020。 Saxon PE 提供开箱即用的所需输出。
这是我的 XSLT 代码:

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" version="3.0">
    <xsl:output method="text"/>
    <xsl:template match="/">
        <xsl:value-of select="format-dateTime(current-dateTime(), '[D]. [MNn] [Y]', 'de', (), ())"/>
    </xsl:template>
</xsl:stylesheet>

测试XML源代码文件是这样的:

<?xml version="1.0" encoding="UTF-8"?>
<root/>

在Linux,我运行java -cp $xsltProc $class -s:source.xml -xsl:stylesheet.xslt -o:result.
$xsltProc 是文件 saxon-he-10.2.jar.
的路径 $classnet.sf.saxon.Transform.
任何帮助将不胜感激。

要“开箱即用”地支持德语日期格式,您需要 Saxon-PE 或更高版本。

https://saxonica.com/documentation/index.html#!extensibility/config-extend/localizing/other-numberings

如果你想要 Saxon-HE,你可以编译 class net.sf.saxon.option.local.Numberer_de 的开源代码并在配置中注册它:

configuration.setLocalizerFactory(new LocalizerFactory() {
   public Numberer getNumberer(String language, String country) {
       if (lang.equals("de")) {
           return new Numberer_de();
       } else {
           ...
       }
   });

Numberer 代码可在 https://saxonica.plan.io/projects/saxon/repository/he/revisions/master/entry/latest10/hej/net/sf/saxon/option/local/Numberer_de.java

我尝试使用原始问题中的示例文件执行以下操作,但从未调用配置。
我认为需要以某种方式注册配置?

final Configuration config = new Configuration();
/**/                config.setLocalizerFactory(new LocalizerFactory() {
    public Numberer getNumberer(final String language, final String country) {
        if (language.equals("de")) {
            return  Numberer_de.getInstance();
        } else {
            return  null;
        }
    }
});

Transform.main(new String[] {
        "-s:source.xml",
        "-xsl:stylesheet.xslt",
        "-o:result.txt"
});