# Language Encounters Center (LEC) API

`software.visionary.lec:api:2026.10.13` · https://codeberg.org/language-encounters-center/api/src/tag/java/2026.10.13

Visionary Software Solutions Language Encounters Center (LEC) API: messages written in RFC 5646 language tags, and the service that translates them

Messages written in RFC 5646 language tags, and the service that translates them. The module
`software.visionary.language.encounters.center` holds `Message`, `Messages`, `SupportedLanguages` and
`TranslationService`; the `Tag` a message is written in, and the registry's subtag types, are the
[IANA Language Subtag Registry](https://codeberg.org/iana-language-subtag-registry/iana-subtag-registry)'s,
which it requires transitively.

```java
@Message(value = "Hola, parce", in = @Tag(language = Spanish.class, region = Colombia.class))
@Message(value = "Hello, friend", in = @Tag(language = English.class))
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.ANNOTATION_TYPE)
@interface Greeting { }
```

The subtags (`Spanish`, `Colombia`, ...) are
[iana-subtags](https://codeberg.org/iana-language-subtag-registry/iana-subtags)', generated from
the IANA Language Subtag Registry. The `TranslationService` that answers
`translate(Greeting.class, locale)` is [lec](https://codeberg.org/language-encounters-center/lec)'s.

## Coordinates

`software.visionary.lec:api:2026.10.13`

## Direct Dependencies

- `software.visionary.iana.language.subtag.registry:iana-subtag-registry`, required transitively.

## Why it is its own Gradle build

The Kompuwiz catalog, which every fleet module requires, `requires static transitive` this module,
so every module can write messages without adding a dependency. The catalog cannot require a
module that is itself described by a catalog token: javac rejects that as a cyclic dependence. So
this module builds with Gradle and is listed in the catalog as an external token, like a
third-party library.

## Build

```sh
./gradlew build publishToMavenLocal
```

## License

GPL-3.0-or-later. See `COPYING`.
