Show HN: A modern way to type in African languages (github.com)
Afrim want to simplify the typing in African languages and also digitalize the African typing systems. Basically, it wants to solve the problems encountered with current solutions: - slow typing - not easily configurable - keyboard layout dependent - constant bugs
Additionally, Afrim offers the following features [1]: - Dataset easily customizable - Keyboard layout independent - Auto completion, autocorrection and autosuggestion - Support all sequential codes
Technical details [2]: Afrim is written in Rust and his architecture is inspired of RIME.
What's next? - Offer an android frontend of the Afrim (in development) [3] - Support more African input methods as possible
I would like to have your opinions about this project. I have been working on it so far, and I would like to know how I can improve it.
-------------- [1] https://github.com/pythonbrad/afrim?tab=readme-ov-file#featu... [2] https://pythonbrad.github.io/afrim-man/for_developers [3] https://github.com/pythonbrad/afrim-keyboard/
89 comments
[ 3.1 ms ] story [ 141 ms ] thread[1]: https://en.m.wikipedia.org/wiki/Adlam_script
E.g. in English, questions are marked by rising pitch, but that intonation is not indicated in writing.
Oh?
Hanyu Pinyin Hànyǔ Pīnyīn Fāng'àn
Bopomofo ㄏㄢˋ ㄩˇ ㄆㄧㄣ ㄧㄣ ㄈㄤ ㄢˋ
IPA [xân.ỳ pʰín.ín fáŋ.ân]
Cameroonian dialect are written using the GACL who is similar to the IPA.
Clafrica: Pookai2t peu2nze2e2 n*kut !
Shʉ̄pāpə̀m (Bamoun): Pookɛ́t pә́nzéé ŋkut !
What exactly is the GACL? Trying to find information on it returns this HN comment as the top result, and a bunch of language-unrelated results after that.
https://en.wikipedia.org/wiki/General_Alphabet_of_Cameroon_L...
I'm not sure if I should be impressed that this has turned into an actual script, or disappointed that so many people thought this was a good idea.
Hot take: artificially creating new scripts that need to be taught from scratch to everybody and require new fonts, layout engines, etc hinders language adoption/preservation instead of helping it.
Perhaps it's more that Fulani speakers truly appreciated having an alphabetic script that is able to adequately represent the distinct sounds of their language without ambiguities, which had not been the case with the Latin or Arabic scripts. Cultural pride also would have played a factor, there's a reason South Korea has a special holiday to commemorate the creation of Hangul script: https://en.wikipedia.org/wiki/Hangul_Day
Latin and Arabic, on the other hand, have a long history of being used for other languages and can be adapted to represent basically anything.
Uh yeah it is. A writing system needs a flat surface, a writing implement, and a mind prepared to learn. If enough people think that the new alphabet is a good idea, fonts and layout engines will follow. For Adlam, they did. (Another invented system which took off indigenously: Cherokee syllabary[1].)
[1] https://en.wikipedia.org/wiki/Cherokee_syllabary
I don't think any have very widespread use outside of Ge'ez (Ethiopian, etc). Maybe Tifinagh.
I do notice that iOS has built-in keyboards for N'Ko and Tamazight (Tifinagh) - pretty cool to try out if you have an iphone.
Clafrica: Pookai2t peu2nze2e2 n*kut !
Shʉ̄pāpə̀m (Bamoun): Pookɛ́t pә́nzéé ŋkut !
https://github.com/pythonbrad/afrim-keyboard/
Noob me has no idea how editing is done. Delete and re-enter?
Have you ever used WordPerfect's reveal codes mode? It'd show both the actual input stream (characters you typed) and the formatted (rendered) output at the same time. (Here's the top hit showing the feature on Windows. https://youtu.be/LQOYYi2IHIY I used the DOS version, back when dinosaurs roamed the earth; I loved it.)
Should/Could there be a "reveal codes" mode for text input?
I've never used an IME, so please disregard this notion if it's not even wrong. :)
What is common for African languages that allows solving the problem for all of them together in one software package? (How meaningful, for example, whould be a software package for Eurasian languages?)
I watched the video - https://github.com/pythonbrad/afrim-keyboard/ - but don't understand. A latin keyboard is used, but it produces some other characters.
[0] https://en.wikipedia.org/wiki/Ge%CA%BDez_script#Ge%CA%BDez_w...
[1] https://en.wikipedia.org/wiki/Writing_systems_of_Africa
So probably the user on the video types in a phonetic approximation of the words using the latin alphabet, and the software translates it to the abugida symbols?
Seems plausable, especially because he types several latin characters to get one symbol.
Interesting to note that sometimes he also uses digits.
The library apparently also supports Amharic/Ge'ez, which does use an abugida, but I can't find any videos of this.
[1] https://youtu.be/Q204SYyfEJY?si=KWe1sny93MeBScuT
Somewhat oversimplified, but the two Japanese syllabaries hiragana and katakana are around 50 distinct characters each, so that a core 3x4 board of "keys" responding to tap(-and-maybe-swipe (up|down|left|right)) will give you roughly the full set of each. Generally, tapping the key designates the consonant; swiping (or not) gives you the vowel. There are 5 vowels, and roughly 10 consonants. There's a couple of other symbols added on as modifiers for voicing, etc. Again, oversimplified, but that's roughly it.
(Side note, and I'm guessing here, but I suspect this model probably evolved from T9 texting)
From a brief inspection of https://en.wikipedia.org/wiki/Ge%CA%BDez_script, the Ge'ez syllabary/abugida (used e.g. for Amharic) needs 6-8 vowels across at least 26 consonants, and then some more combinations for labialization/velarization, and then some more for application in specific other languages.
Following the Japanese model, that'd be a pretty big grid :) Phonetic input seems a more workable model to me at least.
I think the product is a great technological achievement, but...
I would warn against the generalisation of "African" in this context. It does not tell the full picture, and simplifies the rather complex and very ancient reality that is language on the continent of Africa.
The project supports many other languages which justifies the use of "African".
"This application allows you to type most of the characters in the african language in any text field."
Maybe it should say "in AN african language", rather than "in THE african language".
Regarding Geez and Amharic, the objective was to support a language distinct from Latin. Its implementation allows us to avoid being limited to Latin-based languages.
Khoekhoe is a nice start.
I think people will lose their minds if they see how it is written.
Fun fact - The Khoisan gave all the Bantu languages that have it, the click sound.
There are a lot of different clicks in the Khoisan languages. So many that they need exclamation marks and every other symbol on the keyboard to accommodate them.
I've seen it written in ascii, is there an alternative alphabet?
Begging your pardon, this is a nonsensical thing to say. One people are not older than another, and nor are their languages.
As it happens, the Khoisan show greater genetic divergence from the rest of the human race, indicating that as a population they have been relatively more isolated, for longer. This does not in any sense imply that they are in some way basal, such that it would be intelligible to call them older than other branches of the family tree.
This same objection applies to characterizing their languages in that way, we have no way of knowing if their languages are less or more prone to mutation than any other. We have rather less to work with, in fact, as the absence of literacy in their societies until modern times leaves us with no evidence at all. But it would be astonishing if their languages had no drift to them, and even "less drift" is a major and unsupportable claim, and these are the only ways in which it would be intelligible to say that those languages are older than another.
But the next release, will take a time, since we are not familiar with these technologies. https://github.com/pythonbrad/afrim/issues/242
I'm the maintainer, so if you need anything, please let me know
I also don't understand why you'd want phonetic input methods, rather than wanting to input your desired character directly. For languages like Chinese I understand because there are thousands of characters, but aren't most or all African writing systems based on small alphabets? I shudder to think of having to learn to input English phonetically.
So if you're looking for opinions, my first one is that your pages need to do a better job at explaining what current problems are (with multiple clear examples for each), where current solutions fail (with clear examples of how), and how your solution is different and better (again, with clear examples).
Good luck!
[1] https://github.com/pythonbrad/afrim-keyboard/?tab=readme-ov-...
I'm from Morocco, and most people here (myself included) are accustomed to typing on an AZERTY (or QWERTY) keyboard. Typing in Arabic using a standard keyboard layout can be quite cumbersome and slow for us (Most people never took the time to learn it), using latin alphabet for us is just more practical, and doesn't require you to learn a new way to type.
In our daily communication, when we text, whether with friends or family, we often switch between English, French, or Moroccan dialects. When writing in Moroccan dialect, we frequently use a phonetic system (read in french way) that combines the Latin alphabet with numbers to represent specific sounds or letters that don’t have a direct equivalent in the Latin script.
For example:
Example phrase :Bro, I woke up and had a sick breakfast.
Sat, 3ad fe9t o drabt wa7d ftor khatir.
it gets a little ambiguous, however, because we have ~2x the symbols that latin allows (before you get into accents). the workaround is to combine multiple symbols to replicate the phonetic sound the target character is meant to capture.
curious to see if the tooling can be combined to use across languages that can work with similar approach as the OP.
(unfortunately i don't even speak enough arabic to know if you're actually writing in arabic or in a berber language like tamazight here)
(ai 4m ev k0rs w3l ew3r qet ref0rmi6 i6gl1c sp3l16 1z e fulz 3rend, qe d4wnfal ev m3ni en eks3ntr1k over qe sentceriz)
(a shortcoming of that article, and often of linguistic studies of english in general, is that indian english has more speakers than either american english or british english, but gets rather short shrift in it; in particular, i don't know how consistently vowel reduction is applied in indian english, and its prosody is very notably different)
9 is for ق
I have to concur with the previous comment though that I'm unclear as to what this adds.
well, perhaps the most famous african writing system has a fairly large inventory of over 1000 characters, but it hasn't been widely used for about 2000 years due to religious persecution
the writing systems that are most widely used in africa are the latin alphabet and the arabic abjad, but as i tiresomely repeat every time the subject comes up, africa is immensely diverse, to the point that generalizations about africa are only slightly more useful than generalizations about non-elephant mammals
Which is ...?
> Where the pagan religion of the Graeco-Roman world accepted the influence and integration of native Egyptian deities and practices into its tradition, Christianity was not nearly as accepting. The strict monotheism of the latter was in stark opposition to the freeform syncretism of paganism. Local Christians engaged in campaigns of proselytism and iconoclasm that contributed even more to the erosion of traditional religion. In AD 333, the number of Egyptian bishops is estimated to be just under 100; the Christianisation of the Roman Empire itself, and edicts by Christian emperors in the third and fourth centuries AD compounded the decline, and the last known inscription[16] in hieroglyphics (regarded by some as a symbol of the decline of the religion itself due to their close ties) dates from AD 394, known as the Graffito of Esmet-Akhom. It is located at the temple of Isis on the island of Philae, in Upper Egypt believed to be one of the final remaining places of worship of native Egyptian religion.[17] By this time, Egyptian religion was largely confined to the south of the country and to the distant, isolated Siwa Oasis in the west.[18] This century also saw significant expansion of institutionalised Christianity into Egypt, but adherence to the old religion on a smaller, more local scale was still prevalent.[19] Philae is also the site of the final demotic inscription, dating to AD 452. The temple was closed in AD 553 by Byzantine emperor Justinian I,[20] who ruled from 527 to 565. As official temples fell into disrepair, and religious structures across Egypt declined, the religion gradually faded away.[21]
"African languages" is not, in my experience, a single class of languages. There are large differences between the languages, with most of the northern languages borrowing heavily from Arabic, most of the central African/West African languages borrowing from French and the rest are different enough that they can't be considered dialects.
That's all good, but I am very curious about the use-case that motivated the creation of this project.
For more reading, there is an article[2] who have similarities with what we want to achieve.
Disclaimer: We discovered the article 01 year after the development.
[1]https://github.com/pythonbrad/afrim/blob/main/FAQ.md
[2]https://hughandbecky.us/Hugh-CV/talk/2015-africa-assessing-t...