А если искать вначале группу слов?
She has blue eyes.
Ищем вначале "blue eyes" и даем перевод.
Только потом ищем слова отдельно друг от друга blue и Eyes.
Конечно это не самый оптимальный вариант, но я не думаю, что количество различных генерируемых для описания персонажа подстрок больше двух сотен.
Или так не получится?
Где искать-то? Мы переводим слова непосредственно в Dwarf Fortress.exe и в raw-файлах. Там "She has blue eyes" состоит из 4 отдельных независимых блоков текста, в каждом из которых содержится одно слово, причем последние 2 слова берутся из raw. Причем такие блоки нельзя менять местами, удалять и т.д. Если мы сделаем как в "правильном" переводе "У нее синие глаза", то есть заменим 'she' - "у нее", 'has' - на пустое место, то во всех предложениях игры 'she' будет переводиться как "у нее", независимо от контекста. Конечно, не все блоки состоят из одного слова, бывают даже из нескольких предложений, но наиболее корявый перевод получается там, где стыкуются блоки.
Вот и получается, что для корректного перевода текущей методики недостаточно. Нужно либо доставать исходники, что на грани фантастики; либо ждать пока Toady сам добавит возможность перевода, что чуть менее фантастично, но тоже недалеко ушло от предыдущего; либо измыслить такую надстройку для DF, которая будет перехватывать уже сгенерированный текст (тот самый "She has blue eyes") и переводить его целиком. Разумеется, наиболее реален последний вариант, но здесь все упирается в техническую сторону вопроса. Если найдется кто-нибудь, кто напишет такую надстройку, тогда можно будет делать то, что ты пишешь: переводить не по блокам (как сейчас), а по произвольному сочетанию слов.