Abstraktní Wikipedie/Reprezentace jazyků

This page is a translated version of the page Abstract Wikipedia/Representation of languages and the translation is 100% complete.

Abstraktní Wikipedie prostřednictvím e-mailového seznamu Abstraktní Wikipedie na IRC Wikifunkce na Telegramu Wikifunkce na Facebooku Wikifunkce na Twitteru Wikifunkce na Facebooku Wikifunkce na YouTube Webové stránky Wikifunkcí Translate

Objekty jazyka

Tracked in Phabricator:
Task T263000

Od března 2021 Wikifunkce reprezentují jazyky pomocí jejich jazykového kódu MediaWiki (např. "en" pro angličtinu, "ja" pro japonštinu, atd.). Jednojazyčný text reprezentující anglický popisek "Type" vypadá například takto:

{
 "type": "Monolingual text",
 "language": "en",
 "text": "Type"
}
{
 "Z1K1": "Z11",
 "Z11K1": "en",
 "Z11K2": "Type"
}

Zde jsou "en" i "type" typu Z6/String (Řetězec).

Navrhujeme změnit typ pro Z11K1/language (jazyk) ze Z6/String (Řetězec) na nový typ Z60/Natural language (Přirozený jazyk). Z60/Natural language (Přirozený jazyk) má pouze jeden klíč, Z60K1/language code (kód jazyka) typu Z6/String (Řetězec). To by znamenalo, že výše uvedená reprezentace by se změnila na následující:

{
 "type": "Monolingual text",
 "language": "English",
 "text": "Type"
}
{
 "Z1K1": "Z11",
 "Z11K1": "Z1002",
 "Z11K2": "Type"
}

Výhody objektů oproti kódům

  • Místo toho, abychom si museli pamatovat jazykové kódy, můžeme použít stejné vyhledávání jako pro každý jiný objekt.
  • Při přepínání jazyků rozhraní uvidí čtenář názvy jazyků ve svém jazyce namísto kódu jazyka, který pravděpodobně nezná.
  • Můžeme použít obecnou validaci objektu jazyka místo toho, abychom natvrdo kódovali něco, co se spoléhá na jazykový systém MediaWiki.
  • Poslední bod je obzvláště důležitý, když uvažujeme o dalších implementacích podporujících kód Wikifunkcí: musely by reimplementovat části jazykového systému MediaWiki, aby se chovaly konzistentně.

Výhody kódu oproti objektům

  • Již máme API, které nám nabízí seznam kódů, a můžeme použít stejný zdroj uvnitř wiki, abychom ověřili, zda jsou jazykové kódy správné.
  • Jsme zvyklí spíše na "en" než na "Z1002".
  • Současná komponenta Z12/Multilingual text (Vícejazyčný text) je velmi rychlá. Je pravděpodobné, že přepsání komponenty tak, aby používala objekty, bude celkově mnohem pomalejší.
  • MediaWiki již má opravdu dobrou podporu jazyků a jazyků s různými názvy. Mohli bychom ji použít místo toho, abychom vyvíjeli vlastní řešení pro zobrazení názvu v různých jazycích.

Názvy jazyků

Vážně? V MediaWiki už máme všechny jazykové názvy ve všech jazycích a ve Wikidatech je máme také. Mít je ještě jednou, potřetí? Proč to je super?

Dobře, dobře, není. Opakované použití těchto jmen by bylo opravdu skvělé.

Je tu však jedna věc - pokud pro to uděláme nějaké jednorázové kódování, které závisí na tom, že je součástí běžící instalace MediaWiki, v podstatě bychom vyžadovali, aby každý evaluátor znovu vytvořil tuto část MediaWiki. Nebo se spoléhá na CLDR. A obě tyto možnosti se zdají být zatěžující.

Jedním ze způsobů, jak to udělat, je vygenerovat štítky jazyků z MediaWiki a podle potřeby je přegenerovat do datového adresáře WikiLambdy a pak je podle potřeby znovu načíst.

Dalším krokem by bylo uzamčení editace popisků jazykových objektů a převedení změny popisků na proces zavedený ve službě MediaWiki. Bez jejich uzamčení bychom mohli mít problémy s obousměrnou synchronizací, která by sladila změny na wiki provedené přispěvateli Wikifunkcí se změnami přicházejícími z wiki.

Mapování BCP 47

Už máme mapování z BCP 47 na kódy jazyků MediaWiki! Použijme je, místo abychom vymýšleli vlastní.

Já vím.

Návrh je podobný návrhu pro názvy jazyků: nakonec jde jen o dvě docela jednoduché funkce. Ty lze udržovat v aktuálním stavu podobným přístupem, jaký byl nastíněn výše: znovu vytvořit mapování z MediaWiki, nahrát je a případně uzamknout jejich editaci.

Zpět na jazyk

To vyřešíme později. Pro rozhraní a cílové jazyky mohou existovat různá řešení.

Seznamy jazyků

Existuje již několik jazykových seznamů. Zde je několik relevantních:

  1. Jazyky rozhraní: jazyky, které podporuje uživatelské rozhraní MediaWiki, tj. jazyky, ve kterých se vykreslují prvky uživatelského rozhraní MediaWiki (liší se od jazyků obsahu MediaWiki, viz MediaWiki manuál o jazycích).
  2. seznam jazyků, ve kterých jsou lexémy na Wikidatech
  3. jazyky obsahu MediaWiki
  4. seznam jazykových verzí Wikipedie
  5. seznam všech 8 163 jazykových kódů, které jsou "rozpoznány" v šablonách komunity anglického Wikislovníku: Seznam jazyků - Podobný seznam je pravděpodobně i na ostatních Wikislovnících

Podobným seznamem jazyků je Léin seznam seznamů jazyků ve Wikidatetch.

Původně jsme uvažovali o tom, že jazyky rozhraní (v jakých jazycích je k dispozici rozhraní Wikifunkcí?) budou odděleny od cílových jazyků (v jakých jazycích může knihovna Wikifunkcí generovat obsah v přirozeném jazyce?), ale po diskusi jsme se rozhodli, že bude pro všechny užitečnější, když tyto dva seznamy udržíme v souladu. Bude to pravděpodobně stát o něco více, ale nakonec by to mělo zlepšit situaci pro všechny.

Výchozí seznam jazyků

Jazyky rozhraní MediaWiki jsou založeny na jazycích, které podporuje uživatelské rozhraní MediaWiki.

MediaWiki identifikuje jazyky pomocí krátkých řetězců podobných (ale ne vždy ekvivalentních) kódům ISO 639 nebo BCP 47. Jejich úplný seznam je k dispozici prostřednictvím LanguageInfo API. V době psaní tohoto článku je v tomto seznamu 858 jazyků. S tímto seznamem začneme jako s naším prvním seznamem jazyků. zdroj seznamu těchto jazyků je popsán na diskusní stránce.

Seznam jazyků, které v současné době podporujeme v Z12/Multilingual text (Vícejazyčný text) a které akceptuje parametr uselang, je úplný seznam 858 jazyků.

Všimněte si, že jde o velmi široký pohled na to, co je to jazyk: jen několik příkladů: seznam zahrnuje "de-formal", každý z "uz", "uz-latn" a "uz-cyrl", atd..

Přiřazení ZID

Zde je návrh na přiřazení první sady jazyků k ZID:

  • Nejprve použijeme seznam oficiálních pracovních jazyků OSN a přiřadíme k nim několik prvních ZID (při práci se systémem tak máme šanci si tyto jazyky zapamatovat). Pořadí je abecední na základě kódu.
    • Z1001/Arabic (ar)
    • Z1002/English (en)
    • Z1003/Spanish (es)
    • Z1004/French (fr)
    • Z1005/Russian (ru)
    • Z1006/Chinese (zh)
  • Dále počínaje Z1011 a konče Z1861 přiřadíme dalších 852 jazyků, které jsou v úplném seznamu jazyků rozhraní, na základě abecedního pořadí jejich kódů. Případné další jazyky budou přidávány chronologicky.

Alternativy: místo abecedního pořadí bychom mohli použít také hash nebo je přiřadit náhodně. Seřadit je podle počtu mluvčích L1 nebo L2 je obtížné kvůli nedostatku spolehlivých statistik.