Skip to content

Python-like localization support #19

@WPMGPRoSToTeMa

Description

@WPMGPRoSToTeMa

Not really python-like, but inspired by it and by #18 of course.

First of all instead of capsing, like DID_DMG_HITS, we can use some default translation text (e.g. english text).
Secondly instead of %L we can use function style: L(player, "He did {damage:d} damage to you with {hits:d} hit(s)\nand still has {health:d}hp and {armor:d}ap.")

This simplifies localization process of plugin that doesn't support it. Look:

Format("He did {damage:d} damage to you with {hits:d} hit(s)\nand still has {health:d}hp and {armor:d}ap."
  , FmtArg("damage", damage)
  , FmtArg("hits", hits)
  , FmtArg("health", player.Health)
  , FmtArg("armor", player.Armor)
);

Becomes:

Format(L(player, "He did {damage:d} damage to you with {hits:d} hit(s)\nand still has {health:d}hp and {armor:d}ap.")
  , FmtArg("damage", damage)
  , FmtArg("hits", hits)
  , FmtArg("health", player.Health)
  , FmtArg("armor", player.Armor)
);

Just adding L(player, and )!

TODO:

  • Plurals
  • SetLanguageContext(player); to remove repetitive player's index in L for localized arguments or using last passed player's index if it isn't passed
  • Translation file auto-creation, on runtime or maybe some source code analyze tool
  • FMTARG macro that will expand FMTARG(var) to FmtArg("var", var)
  • Something that i forgot or don't know about python-like localization

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions