Перейти к основному содержимому
Версия: 7.0

Правила: интернационализация

Правила интернационализации и обратного перевода

  1. Ассистент ОБЯЗАН использовать файлы *ResourceBundle.properties для локализации UI.

    Значение внутри {...} ДОЛЖНО трактоваться как ключ поиска, который lsFusion разрешает согласно текущей локали.

  2. Ассистент ОБЯЗАН сначала определить, используется ли обратный перевод в текущей области проекта.

    Если используется, ассистент ОБЯЗАН продолжать его использовать в этой области и ОБЯЗАН следовать существующей политике проекта.

    Ассистент ОБЯЗАН сохранять выбор идентификаторов согласованным с уже установленным там паттерном.

    Ассистент НЕ ДОЛЖЕН вводить новую явную политику идентификаторов, если этого не просит пользователь.

  3. Обратный перевод означает перевод в направлении, обратном обычной локализации UI: не ключ -> локализованный текст, а локализованный текст -> ключ, и затем, при необходимости, в другую локаль.

    Если идентификаторы не заданы в коде явно, этим каноническим значением является сам текст на исходном языке. Это то, что платформа ИЩЕТ, а не то, что она хранит ключом: запись остается id = исходный текст, а словарь, строящийся для поиска, — обратный, значение -> id. Ассистент, записавший бандл наоборот, получит записи, с которыми обратный перевод никогда не совпадет.

  4. Обратный перевод включается параметром запуска, задающим язык строковых литералов lsf-кода (logics.lsfStrLiteralsLanguage). Когда он активен, ЛЮБОЙ обычный литерал '...' в позиции, допускающей локализацию, — в том числе литерал-константа в любом выражении, — совпавший со значением записи ResourceBundle, при разборе кода молча заменяется на её ключ {id} и в рантайме подставляется в текущей локали: 'position' может стать 'pozycja'. Ведущие и конечные пробелы в сопоставлении не участвуют и сохраняются вокруг подстановки; литерал пустой или состоящий из одних пробелов не заменяется никогда.

    Поэтому технические литералы — ключи JSON, URL, форматы, канонические имена, внешние идентификаторы — ассистент ОБЯЗАН записывать сырыми литералами r'...', которые не участвуют ни в локализации, ни в обратном переводе. Обычные литералы '...' предназначены для текста, видимого пользователю.