И вам здоровья!
Обычно такое происходит, когда разработчик приложения организует выбор вкладок не по индексу, а по имени. Имена вкладок являются ключевыми. Изменение имени вкладки буквально на одну букву, делает её неизвестной. В итоге программа добавляет её в качестве новой. Что вы и наблюдаете при попытке их перевода. В таких случаях нужно искать такие "ключи" по всему файлу программы. Если произвести поиск, например, строки-ключа "
Keyboard", то она будет найдена в ресурсах программы, элементе с именем "
IZRESEMBED -> RESTORATIONRESEMBED".
Рис. 1
Он является бинарным (двоичным) и содержит графические и текстовые данные с описанием компоновки элементов интерфейса программы. Достанем его из файла, разберем и увидим, что в одном их файлов в формате XML, где встречается искомая строка "
Keyboard", описана компоновка диалога с настройками приложения. Причем строка "
Keyboard" встречается дважды и является частью строк вида "
Keyboard OptionTab (Index 2) Button" и "Option Tab
Keyboard". А эти строки в свою очередь являются именами элементов интерфейса. Аналогично и для других заголовков на вкладках.
Рис. 2
На рисунке 2 я выделил цветом ключевые строки, строки, в которые эти ключевые строки входят, а также координаты и размеры кнопок, на которых размещаются ключевые строки. Это важно при локализации, т.к. переведенная строка может быть или длиннее или короче исходной, соответственно также нужно будет под неё корректировать размеры элемента управления. Ниже приведен пример перевода ключевых строк и изменения координат и положения кнопок.
Рис. 3
Документ должен быть в кодировке
UTF-8 без BOM (оригинальный документ имеет кодировку ANSI). Также следует добиться исходного размера документа после перевода, иначе вы не сможете выполнить его замену в двоичном ресурсе
RESTORATIONRESEMBED.
После изменения документа и замены его в ресурсе приложения нужно перевести ключевые строки в коде программы. Вы уже знаете, что имена вкладок (ключевые строки) являются жестко-кодированными строками. Инструменты перевода жестких строк могут быть какими угодно, важно другое. Все эти ключевые строки имеют указатель длины. Например, строка-ключ "
Keyboard" имеет длину
8 байт, что соответствует количеству символов в строке, и эта длина явно устанавливается в коде программе.
Рис. 4
Я перевел эту строку-ключ как "
Клавиатура". Длина строки 10 символов, но так как мы использовали кодировку UTF-8, то длина этой строки в байтах будет составлять 20 (или
14 в формате НЕХ). Вот это значение и следует указывать в коде.
Рис. 5
Аналогичным образом необходимо подкорректировать длину строк в соответствии с переводом. По окончании модификации и сохранении результата в файл мы увидим в настройках приложения корректное положение переведенных вкладок.
Рис. 6
При работе над переводом вам следует обратить внимание на то, что многие строки интерфейса находятся в ресурсе
RESTORATIONRESEMBED в таких же документах XML. Для них, возможно, также могут быть применены "ключи" и указатели длин, поэтому вам предстоит быть предельно внимательным. Еще вы можете настраивать положение и размеры элементов управления, редактируя значения тегов "
X", "
Y", "
Width" и "
Height".
Удачи!