Правила: интернационализация
Правила интернационализации и обратного перевода
-
Ассистент ОБЯЗАН использовать файлы
*ResourceBundle.propertiesдля локализации UI.Значение внутри
{...}ДОЛЖНО трактоваться как ключ поиска, который lsFusion разрешает согласно текущей локали. -
Ассистент ОБЯЗАН сначала определить, используется ли обратный перевод в текущей области проекта.
Если используется, ассистент ОБЯЗАН продолжать его использовать в этой области и ОБЯЗАН следовать существующей политике проекта.
Ассистент ОБЯЗАН сохранять выбор идентификаторов согласованным с уже установленным там паттерном.
Ассистент НЕ ДОЛЖЕН вводить новую явную политику идентификаторов, если этого не просит пользователь.
-
Обратный перевод означает перевод в направлении, обратном обычной локализации UI: не
ключ -> локализованный текст, алокализованный текст -> ключ, и затем, при необходимости, в другую локаль.Если идентификаторы не заданы в коде явно, этим каноническим значением является сам текст на исходном языке. Это то, что платформа ИЩЕТ, а не то, что она хранит ключом: запись остается
id = исходный текст, а словарь, строящийся для поиска, — обратный,значение -> id. Ассистент, записавший бандл наоборот, получит записи, с которыми обратный перевод никогда не совпадет. -
Обратный перевод включается параметром запуска, задающим язык строковых литералов lsf-кода (
logics.lsfStrLiteralsLanguage). Когда он активен, ЛЮБОЙ обычный литерал'...'в позиции, допускающей локализацию, — в том числе литерал-константа в любом выражении, — совпавший со значением записи ResourceBundle, при разборе кода молча заменяется на её ключ{id}и в рантайме подставляется в текущей локали:'position'может стать'pozycja'. Ведущие и конечные пробелы в сопоставлении не участвуют и сохраняются вокруг подстановки; литерал пустой или состоящий из одних пробелов не заменяется никогда.Поэтому технические литералы — ключи JSON, URL, форматы, канонические имена, внешние идентификаторы — ассистент ОБЯЗАН записывать сырыми литералами
r'...', которые не участвуют ни в локализации, ни в обратном переводе. Обычные литералы'...'предназначены для текста, видимого пользователю.