вторник, 3 сентября 2013 г.

Добавление нового языка в xlf NWDS на примере казахского\ Adding a new language to xlf NWDS

Ранее я описал проблему с добавлением неподдерживаемого языка в приложения Web Dynpro for Java и невозможность выбора казахского языка в среде NWDS  (http://sakryukin.blogspot.com/2013/06/sap-as-java-adding-new-locale-in-sap-as.html). 

В этой статье расскажу о добавлении языка в среду разработки NWDS. Чтобы получилось как на рисунке:





Для реализации необходимо будет разобрать один jar-файл из плагинов NWDS, который отвечает за интернализацию среды.

1. Нахожу библиотеку sap.com~tc~i18n~s2x~src~impl.jar, ее расположение будет примерно следующим: D:\eclipse\plugins\com.sap.s2x_2.0.0.120824043930\lib\sap.com~tc~i18n~s2x~src~impl.jar

2. Декомпилирую этот архив (конкретно нам нужен один файл - s2xDatatypes.xsd )

3. Создаю Java проект из полученных исходников в eclipse (NWDS, NetBeans, IntelliJ IDEA или где вам привычней работать), это условие необязательно - оно для удобства 



4. Нахожу файл s2xDatatypes.xsd (com\sap\s2x\validation\schema\s2xDatatypes.xsd) и добавляю в него строки:


<xsd:enumeration value="ru"> <xsd:annotation> <xsd:appinfo> <s2xAPI:iniInfo group="langtype" valueInternal="ruRU" valueExternal="Russian"/> </xsd:appinfo> <xsd:documentation>Russian</xsd:documentation> </xsd:annotation> </xsd:enumeration> <xsd:enumeration value="kk"> <xsd:annotation> <xsd:appinfo> <s2xAPI:iniInfo group="langtype" valueInternal="kkKK" valueExternal="Kazakh"/> </xsd:appinfo> <xsd:documentation>Kazakh</xsd:documentation> </xsd:annotation> </xsd:enumeration> <xsd:enumeration value="sk"> <xsd:annotation> <xsd:appinfo> <s2xAPI:iniInfo group="langtype" valueInternal="skSK" valueExternal="Slovakian"/> </xsd:appinfo> <xsd:documentation>Slovakian</xsd:documentation> </xsd:annotation> </xsd:enumeration>

5. Следующим шагом необходимо сделанные изменения собрать в архив. Для этого пишу простой ant-скрипт, следующего содержания:

<project>
    <target name="clean">
        <delete dir="build"/>
    </target>
    <target name="compile">
        <mkdir dir="build/classes"/>
        <copy srcdir="src" destdir="build/classes"/>
    </target>
    <target name="jar">
        <mkdir dir="build/jar"/>
        <jar destfile="build/jar/i18n.jar" basedir="build/classes">
            <manifest>
        <attribute name="Author" value="Sakryukin"/>
        </manifest>
        </jar>
    </target>
    <target name="run">
        <java jar="build/jar/i18n.jar" fork="true"/>
    </target>
</project>

6. Заменяю исходный jar новым и перезапускаю среду

После выполненных действий в среде NWDS будет доступен казахский язык (Kazakh). 

Но при сборке приложения NWDS отбросит файлы локализации kk и в итоговом архиве не удастся увидеть казахский язык. А что поделать - это SAP :)

Как побороть эту последнюю проблему  - опишу в следующей статье.