Пользовательские переводы SAP для стандартного приложения SAPUI5 - PullRequest
1 голос
/ 08 октября 2019

В настоящее время я внедряю расширение для стандартного приложения от SAP Marketing.

Расширение содержит новые тексты, которые необходимо перевести на разные языки. В моих предыдущих расширениях я также мог использовать ключ перевода стандартного приложения для своего расширения. Первая строка в файле i18n.properties в этом случае всегда была структурирована следующим образом:

# SAPUI5 TRANSLATION-KEY XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Однако в стандартном приложении, которое я сейчас редактирую, оно выглядит так:

# This is the resource bundle for Campaigns 
# __ldi.translation.uuid = 8e965d5e-c905-4b60-ac2a-205abb14046

В транзакции se63 ключ перевода (это даже ключ перевода?) Не найден - ни с дефисами, ни без. Кроме того, в стандартном приложении переводы хранятся в одном файле для каждого языка (например, i18n_de.properties). Вот почему я не уверен, есть ли даже ключ перевода для этого стандартного приложения.

Я не хочу создавать новый ключ перевода для своего расширения и использовать его. После того как я сделал это, все переводы стандартного приложения должны были быть сохранены и для нового ключа перевода.

Кто-нибудь знаком с этим типом перевода? Как мне сохранить переводы для моего расширения?

С наилучшими пожеланиями,

Кристиан

1 Ответ

0 голосов
/ 14 октября 2019

Я нашел решение моей проблемы:

  1. Я сгенерировал новый ключ перевода, запустив программу /UI5/TEXT_FILE_GEN_TRANS_KEY в транзакции se38
  2. Я создал новую папку i18n и добавил i18nCustom.properties файл к нему. Затем я добавил ключ перевода и переводы по умолчанию в файл, как для обычного i18n.properties файла.
  3. На следующем шаге я добавил следующий код в свойство sap.ui5 расширенияmanifest.json файл для запуска пользовательского файла перевода:

    "models": {
        "i18nCustom": {
            "type": "sap.ui.model.resource.ResourceModel",
            "settings": {
                "bundleName": "<Your Component>.i18n.i18nCustom"
            }
        }
    }
    

    Обратите внимание, что теперь вы должны использовать что-то вроде {i18nCustom>property} в своем представлении вместо использования i18n модели.

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

    onBeforeRendering: function() {
        var i18n = this.getModel("i18n"); // Get the standard i18n file
        var sBundleURL = this.getModel("i18nCustom").getResourceBundle().oUrlInfo.url;
        i18n.enhance({bundleUrl:sBundleURL}); // Merge the custom i18n file with the standard one
    }
    

Надеюсь, это поможет, если у кого-то возникнет такая же проблема.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...