It'll be useful only if we'll support custom user .lng files to override required strings.
Настройка под себя текстовых строк из LNG-файла
Настройка под себя текстовых строк из LNG-файла
Last edited by 2useven10 on Thu 01 Jan, 1970 01:00, edited 0 times in total.
Reason: Добавлена ссылка на исходную тему
Reason: Добавлена ссылка на исходную тему
- HaRT
- Moderator
- Posts: 10869
- Joined: Tue 30 Aug, 2005 17:21
- Has thanked: 221 times
- Been thanked: 358 times
Число папок в текущей панели
Это было бы очень удобным способом подстройки.
Фар есть инструмент, а не нянька. © 2009 DrKnS
-
- Posts: 1332
- Joined: Mon 04 Apr, 2005 13:41
- Location: San Ramon, CA / Kharkov, UA
- Has thanked: 32 times
- Been thanked: 61 times
Число папок в текущей панели
Немного не в тему, но иметь свой кастомный lng - это хорошо конечно, но есть ли гарантии, что завтра после очередного рефакторинга/удаления ф-ть (e.g. tree), стрОки в новом lng файле "не поедут"? (если бы формат был Key=Value, тогда другой разговор)
Мы не можем ждать милостей от Фара, взять их у него — наша задача! (C) Мичурин
- abelenki
- Posts: 502
- Joined: Thu 02 Jul, 2009 07:39
- Location: Perm, Russia
- Has thanked: 174 times
- Been thanked: 23 times
- Contact:
Число папок в текущей панели
Без изменений в работе с .lng файлами проблему не решить.Yegor wrote:Немного не в тему, но иметь свой кастомный lng - это хорошо конечно, но есть ли гарантии, что завтра после очередного рефакторинга/удаления ф-ть (e.g. tree), стрОки в новом lng файле "не поедут"? (если бы формат был Key=Value, тогда другой разговор)
Но, например, вполне можно хранить в них информацию об исходных идентификаторах строк (немного увелив размер языковых файлов):
Code: Select all
//[MYes]
"Да"
//[MNo]
"Нет"
//[MOk]
"OK"
Code: Select all
//[MYes]
"Несомненно"
- DrKnS
- Posts: 6114
- Joined: Thu 04 Aug, 2005 06:44
- Location: Kyiv
- Has thanked: 12 times
- Been thanked: 426 times
Настройка под себя текстовых строк из LNG-файла
Вступление, если кто вдруг не в курсе.
Сейчас lng-файл это тупо список строк. Строки берутся тупо по номеру. Т.е. из кода обращение идёт по индексу, замаскированному именованными константами.
Это просто, быстро и компактно. Для 1996 года - очень уместное решение.
Однако, у него есть фатальный недостаток: при любом изменении индексов (разработчики добавили или удалили строки) ваш личный lng превращается в тыкву.
Возможные альтернативы:
Сейчас lng-файл это тупо список строк. Строки берутся тупо по номеру. Т.е. из кода обращение идёт по индексу, замаскированному именованными константами.
Это просто, быстро и компактно. Для 1996 года - очень уместное решение.
Однако, у него есть фатальный недостаток: при любом изменении индексов (разработчики добавили или удалили строки) ваш личный lng превращается в тыкву.
Возможные альтернативы:
- список пар строковый_ключ=значение, например ID_OK="OK". Так у очень-очень многих.
Плюсы:- не превращается в тыкву вообще никогда: новые строки останутся непереведёнными, удаленные тоже ничего не сломают, разве что осядут мусором.
- Можно создавать производные lng, указав какой-то в качестве базового и переопределив только некоторые строки
- Более жирные lng (раза в полтора).
- Более жирный far (килобайт на 100), как на диске, так и в памяти.
- Более медленное получение строк (не мерял, возможно раз в тысячу, но следует понимать, что это значит микросекунды вместо наносекунд).
С моей точки зрения всё это мелочи, но пуристы могут не согласиться.
- список пар индекс=значение, например 42="ОК". С гарантией со стороны разработчиков, что отныне и до тепловой смерти вселенной новые индексы добавляются только в конец списка, удалённые повторно не используются.
Плюсы: те же, что и в предыдущем случае.
Минусы:- Требует админресурса и контроля.
- При добавлении только в конец о группировке родственных строк можно забыть, если, конечно, сразу не резервировать индексы блоками с большим запасом.
-
- Posts: 1332
- Joined: Mon 04 Apr, 2005 13:41
- Location: San Ramon, CA / Kharkov, UA
- Has thanked: 32 times
- Been thanked: 61 times
Настройка под себя текстовых строк из LNG-файла
Ну если кому-то жалко 100 кил для Фара в памяти, то можно гибридный вариант, держать два файла:
keys.lng - строковые ключи. Ключи берутся по номеру. Порядок важен.
FarEng.lng - список пар ключ=значение в любом порядке.
keys.lng
FarEng.lng
keys.lng - строковые ключи. Ключи берутся по номеру. Порядок важен.
FarEng.lng - список пар ключ=значение в любом порядке.
keys.lng
Code: Select all
ID_OK
ID_CANCEL
...
Code: Select all
ID_CANCEL="Cancel"
...
ID_OK="OK"
Мы не можем ждать милостей от Фара, взять их у него — наша задача! (C) Мичурин
- NightRoman
- Posts: 6184
- Joined: Fri 18 Aug, 2006 13:52
- Location: Cambridge, UK
- Has thanked: 32 times
- Been thanked: 62 times
- Contact:
Настройка под себя текстовых строк из LNG-файла
Пока не изучал предметную область, но вроде уже изобрели ресурсные текстовые файлы и комприляцию их в бинарный формат. Может, стоит в этом направлении подумать? В Фарнет, скажем, я так и сделал. Там .NET подход со своими методами в .NET по доступу к ресурсам. Думается, что и в С/C++ все это тоже есть. Локализация приложений - это типовая задача. Но еще раз оговорюсь, для С++ не изучал, могу ошибаться.
- HaRT
- Moderator
- Posts: 10869
- Joined: Tue 30 Aug, 2005 17:21
- Has thanked: 221 times
- Been thanked: 358 times
Настройка под себя текстовых строк из LNG-файла
Да, так и есть. Если надо, могу вкратце рассказать, как это сделано в Qt, а также показать, где это почитать подробнее.
Фар есть инструмент, а не нянька. © 2009 DrKnS
- DrKnS
- Posts: 6114
- Joined: Thu 04 Aug, 2005 06:44
- Location: Kyiv
- Has thanked: 12 times
- Been thanked: 426 times
Настройка под себя текстовых строк из LNG-файла
Мы тут вроде о том, как упростить жизнь любителям (и создателям) персональных переводов, а не наоборот, не?
Настройка под себя текстовых строк из LNG-файла
Работу фар с локализацией можно вообще оставить почти без изменений.
Загрузка .lng и использование языковых сообщений остаётся без изменений.
Надо чуть допилить lng транслятор, чтобы делал не только enum, но и массив строк идентификаторов.
Эти идентификаторы нужны только на момент загрузки 'модификаторов', память - не больше 20к, скорость не изменится.
Базовые языковые файлы без изменений. Надо только дописать загрузку модификаций (если они есть).
Для них естественный формат ID="Text". Имена можно брать производными от языкового файла - FarRus.lng.mod
Загрузка .lng и использование языковых сообщений остаётся без изменений.
Надо чуть допилить lng транслятор, чтобы делал не только enum, но и массив строк идентификаторов.
Эти идентификаторы нужны только на момент загрузки 'модификаторов', память - не больше 20к, скорость не изменится.
Базовые языковые файлы без изменений. Надо только дописать загрузку модификаций (если они есть).
Для них естественный формат ID="Text". Имена можно брать производными от языкового файла - FarRus.lng.mod
- HaRT
- Moderator
- Posts: 10869
- Joined: Tue 30 Aug, 2005 17:21
- Has thanked: 221 times
- Been thanked: 358 times
Настройка под себя текстовых строк из LNG-файла
Не лучше ли предоставить возможность прописать цепочку суффиксов имён для последовательных подстановок (машина—пользователь—профиль) в конфигурации?
Фар есть инструмент, а не нянька. © 2009 DrKnS