Skip to content
Porrumentzio edited this page Aug 30, 2020 · 37 revisions

Bonvenon al la Vikio de la Esperanta Lingvo-pakaĵo!

Tra ĉi tiu Vikio ni montros kiel ni organizis nin por krei la Esperantan pakaĵon.

Enhavo
Kial ni decidis renovigi la jam ekzistantan Esperanto-pakaĵon?
Komenco
Klavaro
Vortlisto
Kontakto

Kial ni decidis renovigi la jam ekzistantan Esperanto-pakaĵon?

Sciu ke jam ekzistis antaŭa pakaĵo por AnySoftKeyboard, kiu troveblas (almenaŭ kiam ni verkis ĉi tion) kaj en F-droid, kaj en Google Play.

Tamen, la kialoj pro kiuj ni decidis renovigi la pakaĵon estas diversaj:

  • Ne-oficialeco de la pakaĵo laŭ AnySoftKeyboard: La pakaĵo ne aperas en la listo de lingvo-pakaĵoj el la oficiala retpaĝo de la projekto.
  • Ne-trovebleco de la kodo. La nura alproksimo al tio kion ni trovis estas la klarigoj pri kiel la kreinto kreis la vortaron el Vikipedio (kvankam kun ne ĝisdatigitaj kaj malalireblaj ligiloj kaj dosieroj, ĝi estas de antaŭ preskaŭ 10 jaroj, 2011)
  • Ne-taŭgeco de la klavaro-aranĝoj pro la jenaj kialoj:
    • Mankis pli internaciaj klavaro-aranĝoj, tiuj kiel QWERTZ, AZERTY kaj Dvorak
    • Nur estis unu aranĝo, QWERTY-tipan, kiu ankaŭ havis (laŭ ni) mallogikan lokadon de la esperantaj literoj
    • En ĝia aranĝo, en la plej malsupran linion la kreinto enmetis unu pli klavon, kio kreis malkomforton kiam oni uzis la Esperantan klavaron kune kun ali-lingvaj pakaĵoj, ŝanĝante inter ili.

Tial ni decidis krei novan pakaĵon kiu plibonigos tiujn aferojn kaj profitos la jam ekzistantajn por havigi kompletan kaj ĝisdatigitan, taŭgan pakaĵon de Esperanto.


Komenco

Por komenci verki novan lingvan pakaĵon aŭ simple renovigi jam ekzistantan, sekvu ĉi tiun gvidon, kiu donos ne tre klarigan eksplikon (kiam ni verkis ĉi tiun Vikion).


Klavaro

La klavaro-aranĝoj estas en src/main/res/xml/ dosierujo. Tie vi trovos kelkajn dosierojn, sed vi nun nur kontrolu qwerty.xml. Tiu estas ŝablono kiu klarigas la kreadon de aranĝoj (kaj en kiu troviĝas la origina angla klavaro).

La klavaro-aranĝoj, do, estos verkitaj en .xml dosieroj, per la jenaj instrukcioj:

Key attributes:

     "android:codes" : a comma separated unicode values of the keys. If you specify more than one code, then the other codes are accessible via multi-tap.

     "android:popupCharacters" : characters to show on long-press popup keyboard

     "android:keyLabel" : the text to show on the key. If this attribute is missing, the first code in "android:codes" will be used.

     "android:horizontalGap" : gap to add to the left of this key.

     "android:isModifier" : true/false (default is false) whether this key is a modifier key. Means it will be rendered with a differnt background (shift, delete are example of modifier key)

     "android:isRepeatable" : true/false (default is false) whether this key repeats printing on long press (like the backspace). Setting this to true will disable the long-press (android:popupCharacters) functionality

     "android:keyWidth" : specify the width of this key

Ni nun klarigos ĉiun detale.

Klavaro
Strukturo
:codes
:popupCharacters
:keyLabel
:horizontalGap
:isModifier
:isRepeatable
:keyWidth
Aldonaĵo

Strukturo

Ĉi tiuj dosieroj havas konkretan strukturon:

  • Oni uzas <Keyboard> por komenci klavaron kaj </Keyboard> por fini ĝin.
  • Oni uzas <Row> por komenci klavaran linion kaj </Row> por fini ĝin.
  • Oni uzas <Key por ekverki informojn pri klavo kaj finas la instrukciojn per />

Inter tiuj du komencaj kaj finaj struktureroj oni metas specifajn komandetojn, klarigitaj malsupre.

:codes

Ĉi tiuj estas nombroj kiuj havas ĉiun literon subtenatan de Unicode. Tamen, ŝajne ili ne uzas Unicode nombrojn, sed HTML-kodojn. Se vi aldonas pli ol unu nombro, la aliaj (kiuj ne estas la unua) estos alireblaj per multobla tajpo. Oni devos aldoni la nombron ĝuste post la egalsigno (=) kaj inter citilo-signoj ("). Jen ekzemplo:

android:codes="115"

Tio asignos la literon "s" al tiu klavo. Ne endas aldoni :keyLabel parametron poste, ĉar se mankas tiu parametro la klavo montros la signon specifitan en :codes senprobleme, sed indas aldoni tian parametron poste por pli bona kompreno de iu ajn kiu kontrolos la kodon. Vidu :keyLabel

Vi povas serĉi la nombrojn korespondajn al ĉiu signo ĉi tie: https://unicode-table.com/en/

Ĝi havas duvojan serĉeblon:

  • Tajpu literon kaj ĝi montros la numeron
  • Tajpu numeron kaj ĝi montros la literon

:popupCharacters

Ĉi tiuj estas signoj montrotaj kiam oni premtenos klavon. Por konkretigi kiujn signojn montriĝos en ĉiu klavo per ĉi tiu metodo, simple skribu la signojn volatajn. Oni ne bezonas skribi la nombron de la signo, sed, simple, la signon mem. Oni devos aldoni la signojn ĝuste post la egalsigno (=) kaj inter citilo-signoj ("). Jen ekzemplo:

android:popupCharacters="§ßśŝš"

Tio montros tiujn signojn kiam oni premtenos klavon. Ili aperos maldekstre-dekstren (→) komence de la loko de la origina klavo, en la sama ordo en kiu vi verkis ilin en la kodo.

Ŝprucosignoj dekstren

Tamen, kiam ili ne havos sufiĉan spacon por aperi en tia ordo (la unua signo verkita en la kodo ĝuste super la origina klavo), la signo super la origina klavo estos la plej dekstra: la ordo inversiĝos kaj estos dekstre-maldekstren (←).

Ŝprucosignoj maldekstren

Por aldoni bezonatajn signojn, simple kopiu ilin kaj algluu ĉi tien. Vi povas serĉi ilin en https://unicode-table.com/en/

:keyLabel

Ĉi tiu estas parametro kiu specifos kiun signon estos montrata en ĉiu klavo. Se oni preterlasas ĉi tiun komandeton, la signo konkretigita en :codes estos montrata. Oni devos aldoni la signojn ĝuste post la egalsigno (=) kaj inter citilo-signoj ("). Jen ekzemplo:

android:keyLabel="s"

Por aldoni bezonatajn signojn, simple kopiu ilin kaj algluu ĉi tien. Vi povas serĉi ilin en https://unicode-table.com/en/

Ekzemplo de uzo de ĉi tiu parametro estas kiam oni volas skribi minusklajn signojn, sed ke la aranĝo montru majusklajn signojn.

:horizontalGap

Ĉi tiu parametro precizigos kiom da malplena spaco estos maldekstre de tiu klavo. Oni devos aldoni la valoron ĝuste post la egalsigno (=) kaj inter citilo-signoj ("). La valoro devas havi ĉi tiun strukturon: "Nombro%p" Jen ekzemplo:

android:horizontalGap="5%p"

Notu ke "5%p" estos mezo de klavo kiam ĝi estos specifite kiel "10%p" en :keyWidth.

:isModifier

Ĉi tiu estas pli kompleksa parametro. Temas pri bulea (vera/malvera) parametro kiu konkretigos ĉu tiu klavo estos modifiga, kio signifas ke ĝi ne montriĝos per si mem, sed ke ŝanĝos alian signon iamaniere. La defaŭlta valoro de ĉi tiu klavo estas False, do principe ĝi ne estos aktiva kaj oni devos ŝanĝi ĝian valoron al True por ke ĝi aktiviĝu.

Ekzemploj de ĉi tiu parametro estas kaj majuskliga klavo, kiu ŝanĝos sekve tajpotan signon majusklen, kaj retropaŝa klavo, kiu ŝanĝos la antaŭan signon al nulspaca. Oni devos aldoni la bulean valoron ĝuste post la egalsigno (=) kaj inter citilo-signoj ("). Jen ekzemplo:

android:isModifier="true"

:isRepeatable

Ĉi tiu estas ankaŭ pli kompleksa parametro, kiu difinos ĉu tiu klavo ripetos ĝian signon kiam oni premtenos ĝin. Ekzemplo de ĉi tio estas retropaŝa klavo, kiu plu presas (forprenas aliajn) ĝian signon kiam oni premas ĝin dum iom da tempo.

Ĉi tiu parametro estas bulea kaj defaŭlte estas False, do oni devos ŝanĝi ĝin por ke ĝi aktiviĝu. Oni devos aldoni la bulean valoron ĝuste post la egalsigno (=) kaj inter citilo-signoj ("). Jen ekzemplo:

android:isRepeatable="true"

AVERTO! Ŝanĝi valoron de klavo al True malaktivigos ajnan :popupCharacters parametron.

:keyWidth

Ĉi tiu parametro estas ĝenerale metita tuj post <Keyboard (vidu Strukturo) kaj ĝi difinas la larĝecon de ĉiu klavo de tiu klavaro. Oni ankaŭ povas meti ĝin ene de la strukturo <Key ... > por difini alian larĝecon precize por tiu klavo.

Oni devos aldoni la valoron ĝuste post la egalsigno (=) kaj inter citilo-signoj ("). La valoro devas havi ĉi tiun strukturon: "Nombro%p" Jen ekzemplo:

android:keyWidth="10%p"

La ĝenerala larĝeco de la klavoj estas "10%p" kaj ni ne rekomendas ŝanĝi ĝin, krom se vi volas ion tre specifan. Ĉi tiu parametro havas rilaton kun :horizontalGap, pro tio ke oni povas aldoni specifan proporcian malplenan spacon.

Aldonaĵo

Kaze de ke en via pakaĵo vi havas konkretajn signojn, kiuj estas ripetitaj (ekz. kiam vi volas aldoni certajn ŝprucosignojn, ĉiam samajn, al malsamaj aranĝoj), vi povas krei apartan .xml dosieron kiu havos ĝuste tiujn signojn kaj poste referenci ilin en la taŭgaj klavoj de taŭgaj aranĝoj.

Ni vidu kazon per la angla pakaĵo:

  1. Ili kreis apartan .xml dosieron kun la ŝprucosignoj por la litero "e": popup_qwerty_e.xml

popup_qwerty_e

Notu ke ili kreis strukturon por ke aperu du linioj: unu, supre (specifite per android:rowEdgeFlags="top") kun kelkaj signoj, kaj la alia, malsupre (specifite per android:rowEdgeFlags="bottom") kun aliaj signoj.

  1. Poste ili referencis tiun apartan dosieron en la dosiero qwerty.xml:

<Key android:codes="101" android:popupKeyboard="@xml/popup_qwerty_e"/>

  1. Jen la rezulto:

e_qwerty_english

Per ĉi tiu metodo oni povas verki pli ĝustajn kaj kompleksajn aranĝojn.


Vortlisto

Unue

Unue provu akiri jam ekzistantajn vortlistojn:

  • AOSPajn (Androidajn) vortarojn
  • Hunspell aŭ Aspell GNU-vortarojn
  • Vortlistojn el aliaj fontoj

Se vi ne trovis iun ajn, provu elpreni tekstaron, ekzemple el Vikipedio en tiu lingvo:

Tekstaro el Vikipedio

[Elprenita kaj ĝisdatigita de https://wiki.apertium.org/wiki/Vikipedia_korpuso_de_Esperanto#Instrukcioj]

Jen instrukcioj por eltiri la esperantlingvan Vikipedion kaj krei tekstaron de ĝi. Vi bezonos uzi GNU/Linux aŭ alian UNIX-bazitan sistemon (ekz. Mac OS X).

Unue, elŝutu https://svn.code.sf.net/p/apertium/svn/trunk/apertium-tools/WikiExtractor.py kaj la esperantlingvan Vikipedion:

wget https://svn.code.sf.net/p/apertium/svn/trunk/apertium-tools/WikiExtractor.py

wget http://download.wikimedia.org/eowiki/latest/eowiki-latest-pages-articles.xml.bz2

Poste, faru

python3 WikiExtractor.py --infn eowiki-latest-pages-articles.xml.bz2

cat wiki.txt | grep -e '..................................................' | grep -v "|" | grep -v "''" | grep -v "[" | grep -v "#" | grep -v "*" | grep -v "@" | grep -v """ > eowiki-purigita.txt cat eowiki-purigita.txt | sort -fiu | sort -R | nl -s ". " > eowiki.crp.txt

La grep-komandoj elektas frazojn de minimuma longo de 50 signoj kaj forpurigas frazojn kun kursivaj vortoj (ofte alilingvaj) kaj kun diversaj signoj netaŭgaj. La sort-komandoj ne estas strikte necesaj. Ili ordigas kaj trovas nur unikajn liniojn, kaj poste ordigas hazarde (miksas la tekston). La komando nl -s ". " aldonas liniajn numerojn.


Per ĉi tio vi akiros dosieron de pli malpli 280 MB, kiun vi devos dividi por ke ĝi estu taŭga por ASK (maksimume 30 MB):

split eowiki.crp.txt eowiki_ -d -b 25M

Poste vi havos kelkajn dosierojn. Sufiksigu ilin per .txt.

Kio post ol ni havas tekstaron, vortliston aŭ ion ajn?

Nun vi havos taŭgajn esperantajn tekstojn kaj/aŭ vortlistojn el kie komandoj, klarigitajn en la gvido menciita en Komenco, ene de AnySoftKeyboard deponejo kreos interpreteblan vortaron.

Simple sekvu la gvidon.


Kontakto