0 votes

Say I have format strings like

"This is a %s"

and the placeholder could be anything, like "axe" or "bottle".
What's the best way to use the correct article (an axe, a bottle)?

in Engine by (12 points)

1 Answer

+1 vote

Unless you want to write a library to handle all the different exceptions, i think you might be best creating a autoloaded or static class where you can register each word that you'll possibly use in dictionary.

Grammar.gd (autoloaded)

extends Node

const articles = {
    'axe': 'an',
    'bottle': 'a',
}

func withArticle(word : String) -> String:
    if not articles.has(word.to_lower()):
        print_debug("Word [%s] does not have a registered article" % word)
        return "a " + word
    return articles[word.to_lower()] + " " + word

Then you can later use it like:

"This is %s %s" % [Grammar.articles[word], word]
# or
"This is %s" % Grammar.withArticle(word)
by (1,656 points)
edited by

however, if you wanted to be more flexible, you could try to port something to gdscript from the examples given here: https://stackoverflow.com/questions/4558437/programmatically-determine-whether-to-describe-an-object-with-a-or-an

Welcome to Godot Engine Q&A, where you can ask questions and receive answers from other members of the community.

Please make sure to read Frequently asked questions and How to use this Q&A? before posting your first questions.
Social login is currently unavailable. If you've previously logged in with a Facebook or GitHub account, use the I forgot my password link in the login box to set a password for your account. If you still can't access your account, send an email to [email protected] with your username.