Set new BCP 47 code to make Android keyboard

I have made a keyboard for the Rossel language or Papua New Guinea (YLE) and installed it on my Mac, thanks to help from @makara .
I would now like to package the same keyboard for Android devices, but in the process, Keyman Developer is asking for a BCP 47 code for the language.

Is there a way I can make a BCP 47 code for this language, perhaps by submitting YLE somewhere?

It seems that the BCP 47 code would be simply “yle”. But perhaps I’m not understanding your question.

Thanks, @drowe , for your comment.
Are you sure that is correct? “yle” is the Ethnologue code used within SIL and Paratext circles, but when I looked at information about BCP 47 codes, I didn’t see any mention of Ethnologue codes.
Have you made a Keyman keyboard for Android and simply put in an Ethnologue code?

Anytime I’m asked for BCP 47 tag or code for my language either in Keyman keyboard or any other online platform, I usually put in the Ethnologue code or ISO 639-3 code (since the language has no 639-1 nor 639-2 code), and it usually works. Once I put in the code, some other fields will automatically be supplied by the system.

I’m not a language expert so I can’t really tell what exactly is the difference between the two codes.

BCP 47 wants the ISO 639-1 (two-letter) language code (such as “es” for Spanish) if one exists, otherwise the ISO 639-3 (three-letter) language code. There are a few cases where the ISO 639-3 and Ethnologue codes are not identical, but for the vast majority of languages the two are the same.

Thanks, @katelem , I’ll try that. and @drowe, for that clarification.

It seems to me it would be good for the help information for Keyman Developer to to contain something like

“If you are making a keyboard for a minority language that does not have a BCP 47 code, use an ISO 639-3 code. In nearly all cases these codes are the same as the Ethnologue codes.”

Is there a way we can pass this suggestion on to the Keyman developers?

A BCP 47 code consists of a language subtag, plus other optional subtags such as region or script.

The language subtag should be either an ISO639-1 or an ISO639-3 tag. ISO639-3 is derived directly from Ethnologue, with only a handful of tags changed for compatibility reasons. ISO639-3 is actually maintained by SIL and in my understanding is intended to be synchronized with Ethnologue codes.

BCP 47 references:

So yes, you can use an ISO639-3 / Ethnologue code for your BCP 47 code. For example you could use yle-Latn-PG, specifying both script and region. However, the script and region are most likely not required in your case, as both can be reliably inferred.

I do note that good documentation about adding language metadata to packages is missing from the Keyman Developer reference. I’ve created an issue to remedy that; see help#571.

Here are some other Keyman Developer documentation pages that discuss language tags, of varying quality (the Lexical Model Tutorial is probably most complete):

Thanks, @Marc , I look forward to reading those pages.

1 Like

For reference purposes, here is what I usually find helpful when identifying a subtag.

https://www.iana.org/assignments/language-subtag-registry/language-subtag-registry