Skip to content

Commit

Permalink
doc: Added a FAQ
Browse files Browse the repository at this point in the history
Added a Frequent Asked Questions
to provide more details about the project to
potential contributors / users.
  • Loading branch information
pythonbrad committed Sep 3, 2024
1 parent f031eaa commit 11a4f22
Show file tree
Hide file tree
Showing 2 changed files with 123 additions and 0 deletions.
111 changes: 111 additions & 0 deletions FAQ.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@
Frequently Asked Questions
===

What is Afrim?
---

Afrim is an input method engine (IME) to type any languagues who can be represented using a sequential code.

Afrim is also a library / tool to implement IME.

**Disclaimer**: Afrim isn't a writing system. Instead, it use existing writing systems to operate.

How Afrim works?
---

Using the transliteration, Afrim transforms what you type (in english character) to your native language.

- Eg. Afrim -> እፍሪም (Amharic input method)
- Eg. Pookai2t peu2nze22 n*kut -> Pookɛ́t pә́nzéé ŋkut (Bamun input method)

Technically, each character of the target language can be represented by a sequencial code (sequence of characters).

**Example**
```
A -> እ
f -> ፍ
ri -> ሪ
m -> ም
```

More details about the internal working can be found at [afrim-memory](memory/src/lib.rs).


Why a phonetic input method?
---

[Geʽez] and [clafrica] was the first implemented input methods in Afrim.
Both are based on the phonetic representation of what you want to type and the design of the Afrim has been influenced by them.

**Advantages**

- **Ease of Use**: For people familiar with the Latin alphabet, the phonetic input method is more intuitive and accessible than memorizing the language specific keyboard layout.

- **Efficiency**: It allows for faster typing because users can rely on the phonetic sounds they are familiar with, rather than hunting for specific characters on a specialized keyboard.

**NB**: If your language don't offer this writing system, feel free to propose your own to the community. Confer [afrim-data].

Which problems Afrim wants to solve?
---

Current IMEs, allows a user to type in his own dialect. But, be able to type, is not the alone issue that a person can encountered.

- Typo

For a person who is still learning the language, it's easy to make errors. Eg: `አፍሪም (afrim)` means `Shameful` while `ዐፍሪም (Afrim)` means `Aphraim`.

- Stress

Imagine that you have to type this number `99` in nufi language ` ncɔ̀ vʉ̀'ʉ̄ mɑ̀ mʉ̄vʉ̀'ʉ̄'`. Or type this number `1234567890` in geez `፲፪፼፴፬፻፶፮፼፸፰፻፺`. The easy way is to use the hard code format.

- Memoryless

For a person who don't master the language, he can forget how to type a particular word.

What Afrim brings?
---

**Autosuggestion**

Afrim assists you while you are typing.

**Autocorrection**

Afrim permits you to fix error while typing.

**Date and number translator**

Do you want to type `፼፳፫፻፵፭፼፷፯፻፹፱፼፻፳፫` in geez? Just type `1234567890123` and Afrim will suggest you the equivalents in geez.

Why not propose a solution that is language specific?
---

We can have input method specific for each language, but at the end, we will be reinventing the road. Think about the similarity between writing systems (not the alphabet but the working principle).

Afrim don't want to be the alone solution, but want to make accessible the IME technology to everyone.

To accomplish it, Afrim has been designed to be open source, modular, well documented (source code) and not language specific.

You can use Afrim as a library or tool to implement your own IME. Confer [afrim-memory], [afrim-preprocessor], [afrim-translator], [afrim-data].

How does this compare to IBus or Fcitx?
---

Afrim can be used as a backend for IBus and Fcitx.

Why solve the problem in one application all together?
---

Afrim is not just an IME, it's a tool who can be used to implement an IME.

By example, if you want Afrim acts as a geez IME or swahili IME or ewondo IME, ..., just provide to it the configutration file that suit your need.

Is this being done in collaboration with the linguistics faculties of African universities?
---

No, Afrim is a tool and not a writing system. His dataset is provided by the community and/or official sources. And we will make sure that the original author of the dataset is credited.

[afrim-memory]: memory/
[afrim-preprocessor]: engine/preprocessor/
[afrim-translator]: engine/translator/
[afrim-data]: https://github.com/pythonbrad/afrim-data/
12 changes: 12 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,18 @@ Afrim ⌨️

Afrim is an input method for African languages. It is designed to protect the native language of various local dialects of Africa and is a universal phonetic-based input method platform.

Table of Contents
---

* [History](#history)
* [Features](#features)
* [Installation](#installation)
* [Datasets](#-dataset)
* [Frontends](#-frontends)
* [License](#licence)
* [Contributing](#contributing)
* [FAQ](./FAQ.md)

History
---
AFRIM is the abbreviation of *AFRICA IME* or *Africa Input Method Engine*.
Expand Down

0 comments on commit 11a4f22

Please sign in to comment.