Просто держи все тексты локализации в одном файле, без этих динамических ключей. На каждую локализацию один файл: ключ - значение.
Фразы могут содержать вставки:
Код:
ATTRIBUTE_UP;{target} пополнил {value} {attribute}.
ATTRIBUTE_DOWN;{target} потерял {value} {attribute}.
И превращаться в:
Игрок пополнил
15.6 здоровья.
Npc потерял
16 ярости.
Если хочется иметь вариативность в выражениях, сделай свой интерпретатор чуть сложнее. Например так:
Код:
KILL;{target} {sex|убил|убила} {target2}.
Соответственно:
Маруся убила
Злобная саранча.
Ваня убил
Большой таракан.
Я специально написал название цели2 в именительном падеже и с большой буквы. Чем круче будет твой текстовый интерпретатор, тем более правильными будут сообщения. (Падежи, время и т.д.) Всё это - проблемы вью, а не модели.
Вообще, это не самая простая задача даже для опытного человека, сгенерировать идеально правильное сообщение на всех языках. Для простоты советую использовать только именительный падеж и не слишком париться, в случае русского языка. Там где возможно, пиши в правильном падеже. Игровые условности никто не отменял.