Каков наилучший способ интернационализации сообщений об ошибках Schematron?

По вашему мнению, как лучше интернационализировать сообщения об ошибках Schematron? Я не хочу дублировать файлы schematron, только сообщения assert и report.

2 ответа

Решение

Я наткнулся на это в стандартном документе схемы ISO.

Diagnostics in multiple languages may be supported 
by using a different diagnostic element for each language, 
with the appropriate xml:lang language attribute, 
and referencing all the unique identifiers of the diagnostic elements 
in the diagnostics attribute of the assertion. 
Annex G gives a simple example of a multi-lingual schema.

Приложение G:

<sch:schema xmlns:sch="http://purl.oclc.org/dsdl/schematron"
    xml:lang="en" >
    <sch:title>Example of Multi-Lingual Schema</sch:title>
    <sch:pattern>
        <sch:rule context="dog">
            <sch:assert test="bone" diagnostics="d1 d2">
    A dog should have a bone.
            </sch:assert>
        </sch:rule>
    </sch:pattern>
    <sch:diagnostics>
        <sch:diagnostic id="d1" xml:lang="en">
    A dog should have a bone.
        </sch:diagnostic>
        <sch:diagnostic id="d2" xml:lang="de">
    Ein Hund sollte ein Bein haben.
        </sch:diagnostic>
    </sch:diagnostics>
</sch:schema>

Подробнее см. В разделе " Лучшие практики для интернационализации XML". Короче говоря, вы можете интернационализировать сообщения в любом XML-документе, используя атрибут xml:lang.

Пример:

 <messages xmlns:xml="http://www.w3.org/XML/1998/namespace">
  <message Id="cannot-find-file-msg">
   <message-text xml:lang="en">Cannot find file.</message-text>
   <message-text xml:lang="fr">Fichier non trouvé.</message-text>
  </message>
 </messages> 

В приведенном выше примере вы можете получить доступ к необходимому тексту сообщения, учитывая местный язык, идентификатор сообщения и выражение XPATH.

Другие вопросы по тегам