Attempting to create a language extension

I’ve started to create[1] a language extension (or “language pack”, or whatever it should be called in Inform 10 now that it has to contain more than an extension…), but I’m running into some roadblocks.

I started it as just a simple extension (which replaced some standard rules and responses, etc), which worked fine, until I had to inject some Inform 6 code which Inform 10 now wants to be in a language kit.

I then created a language bundle and a language kit, following A Guide to Language Bundles and other examples. I just copied over the EnglishLanguageKit, so all code in there should still be in my package.

But after I did that, I know get a bunch of errors for my original extension file (which is now in a subdirectory together with the bundle and the kit), for example this:

Problem. In the sentence ‘Understand “syd” as south’ [](source:C:\Users\tvil\Documents\Inform\Projects\REDACTED.materials\Extensions\Tobias Langhoff\Danish Language.i7xd\Source\Danish Language.i7x#line576), I can’t find a verb that I know how to deal with.

So it seems like the verb “understand” is no longer defined, which is strange, and I can’t figure out where that verb is defined in English Inform. I’m not translating the LOS (Language of Syntax), only the LOP (Language of Play). And like I said, I copied the EnglishLanguageKit wholesale, so this verb has to be defined somewhere else.

@Natrium729 Just a hunch here, since I don’t know the details, but I’ve seen that you’ve written elsewhere[2] that the newest version of Inform has some bugs that affect translation. Is this one of them?

(Edit: Mistakenly thought it was Hugo who had written about the bug, not Nathanael… Sorry)


  1. (I started this extension from scratch, so the problem is not related to my previous post Outdated Inform 6 syntax in a language extension .) ↩︎

  2. Inform 7 en français - Inform 7 - Fiction-interactive.fr ↩︎

In 10.1, it seems to be defined by this line at the top of the Standard Rules:

The verb to understand + as in the imperative means the built-in understand-as meaning.

Would you look at that. Thanks! Not sure why I didn’t find that.

So the Standard Rules are read, but they’re read after my language kit, so I can’t use anything from the Standard Rules in my kit. I guess the priority of my kit needs to be lower (ie. a higher number), so it’s read later. I still need to override some of the Standard Rules (which do contain some strings to translate). I suppose I could also do that in a regular extension that’s not part of my language kit.

So you’re saying that the extension that’s part of your language kit is read before the Standard Rules?

If you want to pursue this, I recommend working on the current dev version instead of 10.1.2, for two good reasons:

  1. There are a lot of changes to the details of how kits are organized.
  2. Inform’s Literate Source web pages are up-to-date with the current development version; they don’t reflect 10.1.2 and there isn’t an official public website providing them, but if you build Inform from scratch, they’re under docs and you can access them via docs/index.html. Or you could use the Internet Archive’s 2022 copy of the Literate Source.
2 Likes

I would write new language extensions on the current dev version of Inform too because a lot of things have been done to make language extensions easier to write, but that means:

  • You’d have to compile Inform yourself (not that difficult if you’re used to this kind of things, but not trivial either)
  • Authors will have to compile Inform themselves too.
  • You never know what might change until the next release.

The development of Inform being stalled (I know it’s not true, but that’s how it looks from the outside) is what killed my motivation about updating the French translation, especially since the good changes about language extensions are not publicly available yet. I had hoped that open-sourcing Inform would make releases more regular.

Anyway, not blaming anyone, but I won’t be able to help a lot right now.

2 Likes

Thanks to both of you, I’ll definitely consider developing against the bleeding edge if I hit any more roadblocks! Right now I think I’ve figured out the structure and all that basic stuff, at least. This is primarily for something I’m writing myself, so using a dev version isn’t a bad idea, but I obviously want to release the extension too for general use some day.

Oh. That explains some things. That’s a bit of a strange choice. Thanks.

That’s right, but it was because I had set has-priority in my kit’s metadata to 1, as it turns out. I’m sure I read somewhere that language kits should have a high priority, but I can’t find it again now, and it might have been either outdated information or based on the Inform development build (it might have been meant for language kits that change the Language of Syntax, maybe, but I’m not sure). Anyway, changing the priority to 3 or above makes sure it’s read after the Standard Rules.