10 ms·
Show HN: A modern way to type in African languages
Hello HN, I'm pythonbrad and a core maintainer of Afrim - an input method engine for African languages.
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#features https://github.com/pythonbrad/afrim?tab=readme-ov-file#featu...
[2] https://pythonbrad.github.io/afrim-man/for_developers https://pythonbrad.github.io/afrim-man/for_developers
[3] https://github.com/pythonbrad/afrim-keyboard/ https://github.com/pythonbrad/afrim-keyboard/
- azernik 2y agoComment on the documentation/README more than anything - I couldn't find anywhere a list of specific languages supported. That's a pretty important data point for any speaker of an African language hoping to use this IME. If the library supports only Amhari and Ge'ez (the only two languages mentioned specifically) it's extremely important to a Wolof or Swahili speaker to know that when evaluating if the IME is in a usable state for them.
- valdez 2y agoIt looks like it is an a distinct repository, see https://github.com/pythonbrad/afrim-data https://github.com/pythonbrad/afrim-data
- numpad0 2y agorepo for Android keyboard implementation[1] says below, but feels strange this don't seem to be stated anywhere else: ### What african languages (and layouts) are supported ? - Amharic Keyboard - Transliteration - Clafrica Keyboard - Transliteration - Geez Keyboard - Transliteration - Nufi Keyboard (Fe'efe'e) - Transliteration 1: https://github.com/pythonbrad/afrim-keyboard https://github.com/pythonbrad/afrim-keyboard
- School-Cotton 2y agoIsn’t Swahili compatible with ASCII (just like English)? Why would you need a special IME to write it?
- pythonbrad 2y agoI understand your point, we should do a big work at the level of the documentation.
- trompetenaccoun 2y agoApart from Ethiopia, are there any places where they don't use either Latin or Arabic scripts in everyday life? There are technically a whole bunch of alphabets of course but they aren't used much afaik. Maybe the Tuareg script? Is that used by people in North Africa beyond bilingual signs?
- firefoxd 2y agoThere is Adlam for Fulani [1]. Widely spoken in west Africa. However, I'm still trying to familiarize myself with the writing system. The word for "yes" in fulani does not translate in writing. The best way I can write it is HIiiII. Imagine the lowercase i goes down in tone. Then the last two uppercase i shoots up. I don't know if any writing system supports this. [1]: https://en.m.wikipedia.org/wiki/Adlam_script https://en.m.wikipedia.org/wiki/Adlam_script
- yorwba 2y agoIf there are no two words that are only distinguished by tone, it might be unnecessary to mark it in writing, except as a learning aid for people who're not fluent enough in the language to predict this information from context. E.g. in English, questions are marked by rising pitch, but that intonation is not indicated in writing.
- jiggawatts 2y ago?
- teractiveodular 2y agoFWIW, Japanese has tonal minimal pairs (ha'shi chopsticks, hashi' bridge, hashi edge), but doesn't bother marking them in (kana) writing. Although the Chinese characters are obviously different.
- vintermann 2y ago> but that intonation is not indicated in writing Oh?
- DazWilkin 2y agoI was intrigued by this and looked through the README for examples of Afrim being used and learn more about the problem it's solving and how but didn't find these.
- deleted 2y ago[deleted]
- avodonosov 2y agoThis video linked from the HN post is an example, although I did't understand yet how it works. They type on a latin keyboard but get some other symbols in result. https://github.com/pythonbrad/afrim-keyboard/ https://github.com/pythonbrad/afrim-keyboard/
- specialist 2y agoWell spotted, I somehow missed that, thanks. 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 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. :)
- avodonosov 2y agoSimilar to other commenters, I am curious to know what is the problem with african languages? Can't you just make a button for each character in the alphabet? (The readme mentions it is a phonetic-based input method, so I assume African languages use alphabets, not some logograms, right?) 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/ https://github.com/pythonbrad/afrim-keyboard/ - but don't understand. A latin keyboard is used, but it produces some other characters.
- ppseafield 2y agoGe'ez and its adaptations are abugidas, which means one symbol is a full syllable. For Amharic there are over 200 individual symbols. [0] That would be a big keyboard! It does seem that most in-use languages in Africa are alphabets or abjads, which could be adapted to keyboards. [1] [0] https://en.wikipedia.org/wiki/Ge%CA%BDez_script#Ge%CA%BDez_writing_system https://en.wikipedia.org/wiki/Ge%CA%BDez_script#Ge%CA%BDez_w... [1] https://en.wikipedia.org/wiki/Writing_systems_of_Africa https://en.wikipedia.org/wiki/Writing_systems_of_Africa
- avodonosov 2y agoThanks. 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.
- teractiveodular 2y agoThe demo video appears to show typing in Fe'fe', which uses a Latin alphabet. The library apparently also supports Amharic/Ge'ez, which does use an abugida, but I can't find any videos of this.
- presentation 2y ago
- cyph3rpvnk 2y agoAmahric, Ge'ez and "Ethiopic" are all the same alphabets, am I missing something? Ge'ez encompasses all of them including Tigrinya. Why not just have an expanded Ge'ez library?
- fsndz 2y agoI couldn't understand what this is for and why it is useful. Gotta work on that documentation to make it more clear.
- deleted 2y ago[deleted]
- beAbU 2y agoIt's interesting, having grown up in Africa, and lived there almost 35 years, reading, writing and speaking an African language, being surrounfed by at least 10 other African languages and seeing them written, that I have never ever in my entire life encountered this writing system. 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.
- pythonbrad 2y agoThanks for your feedback, i will take it in account.
- chungy 2y agoAfrica is a very very big place. :)
- max_ 2y agoYou haven't seen Amharic on Ethiopian Airline planes? The project supports many other languages which justifies the use of "African".
- marci 2y agoThe issue might be in the "About" section: "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".
- teractiveodular 2y agoFWIW, the only languages supported appear to be Amharic (modern Ethiopian), Ge'ez (classic Ethiopian, basically only used in church liturgy today), and one rather obscure language (Nufi/Fefe, ~140k speakers) spoken in a small part of Cameroon. This is indeed a pretty long way from being a pan-African solution.
- 2y ago
- MehdiHK 2y agoCool. Do you have plans for Windows and macOS frontends?
- pythonbrad 2y agoWindows is supported through https://github.com/pythonbrad/afrim-wish https://github.com/pythonbrad/afrim-wish
- MehdiHK 2y agoOh, didn't realize that. How does it handle key input in Windows? Text Services Framework or something else?
- pythonbrad 2y agoThe initial work was a prototype, we are currently working on the usage of text service for windows, and IBUS for Linux (mainly Wayland environment). But the next release, will take a time, since we are not familiar with these technologies. https://github.com/pythonbrad/afrim/issues/242 https://github.com/pythonbrad/afrim/issues/242
- pentamassiv 2y agoYou could update the dependency "enigo" to the current version. I've implemented experimental support for Wayland. It can use Wayland protocols or libei. There will probably be bugs that's why it's hidden behind feature flags. I'm the maintainer, so if you need anything, please let me know
- pythonbrad 2y agoThanks, currently I am using Debian (Wayland) and it will be great to test this enigo feature.
- pentamassiv 2y agoI didn't look at the code but the Cargo.toml file says it's using enigo as it's dependency. You can use that to simulate input an Windows, macOS and Linux
- kreyenborgi 2y agohttps://en.wikipedia.org/wiki/Writing_systems_of_Africa https://en.wikipedia.org/wiki/Writing_systems_of_Africa is dangerously interesting
- crazygringo 2y agoI've visited all the links and honestly still don't have the slightest idea what this input method does, or exactly what problem it's trying to solve, or why it's a good solution to the problem. I found the video [1] but it has no audio or explanations at all. 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-file#afrim-keyboard https://github.com/pythonbrad/afrim-keyboard/?tab=readme-ov-...
- saylisteins 2y ago> I also don't understand why you'd want phonetic input methods 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: ق is replaced by "q" ع is replaced by "3" خ is replaced by "5" (though "kh" is more common) غ is replaced by "4" (or "gh") The rest is just a 1 to 1 conversion to how the letter sounds in french Example phrase : Bro, I woke up and had a sick breakfast. Sat, 3ad fe9t o drabt wa7d ftor khatir.
- delfinom 2y ago[flagged]
- zaik 2y agoHow does this compare to IBus or Fcitx?
- vfclists 2y agoIs this being done in collaboration with the Linguistics faculties of African universities?
- lelanthran 2y agoI'm wondering what problem you experienced that this is a solution for. "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.
- filleduchaos 2y agoWhat does that have to do with an IME library/project?
- teractiveodular 2y agoIMEs are usually very narrowly targeted at a single language or script. Claiming that this one is somehow superior to existing solutions for an entire continent's worth of languages with wildly different phonologies is unusual.
- pythonbrad 2y ago`afrim` is not just an IME. It can be used as a library to develop another IME. It's an important point that I neglected in the README.
- lelanthran 2y ago> `afrim` is not just an IME. It can be used as a library to develop another IME. It's an important point that I neglected in the README. That's all good, but I am very curious about the use-case that motivated the creation of this project.
- juxtapose 2y agoIt's interesting to see African input methods taking inspiration from a Chinese IME, RIME. Would like to know more about this!
- pythonbrad 2y agoI added a FAQ[1] to answer some common questions. 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 https://github.com/pythonbrad/afrim/blob/main/FAQ.md [2]https://hughandbecky.us/Hugh-CV/talk/2015-africa-assessing-the-difficulty-of-text-input/ https://hughandbecky.us/Hugh-CV/talk/2015-africa-assessing-t...
- whatjadat2 2y agoAs a "african" myself, living and working in africa for the last 46 years, and speaking 4 different african languages. I am struggling to understand what "problem" this is trying to solve? It's never been an issue to type in an "african" language. And what is meant by "african" There is a big difference between for example zulu from south africa and arabic in morocco. And then we are not even touching on the thousands of languages in between that in the rest of africa.