Wikifunctions
wikifunctionswiki
https://www.wikifunctions.org/wiki/Wikifunctions:Main_Page
MediaWiki 1.47.0-wmf.14
first-letter
Media
Special
Talk
User
User talk
Wikifunctions
Wikifunctions talk
File
File talk
MediaWiki
MediaWiki talk
Template
Template talk
Help
Help talk
Category
Category talk
TimedText
TimedText talk
Module
Module talk
Translations
Translations talk
Event
Event talk
Z60
0
13
297167
284076
2026-08-07T08:08:56Z
WouterKo
98442
add Dutch translation
297167
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z60"
},
"Z2K2": {
"Z1K1": "Z4",
"Z4K1": "Z60",
"Z4K2": [
"Z3",
{
"Z1K1": "Z3",
"Z3K1": "Z6",
"Z3K2": "Z60K1",
"Z3K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "language tag"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1025",
"Z11K2": "kod języka"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1592",
"Z11K2": "språkkod"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1011",
"Z11K2": "ভাষা কোড"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1645",
"Z11K2": "语言标签"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1062",
"Z11K2": "kód"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1186",
"Z11K2": "קוד שפה"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "Code"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1113",
"Z11K2": "code"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1078",
"Z11K2": "kode"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1672",
"Z11K2": "語言標籤"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "code"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1005",
"Z11K2": "код языка"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1664",
"Z11K2": "codul limbii"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1001",
"Z11K2": "رمز اللغة"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "codice della lingua"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1181",
"Z11K2": "код језика"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1820",
"Z11K2": "भाषा टैग"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1844",
"Z11K2": "pananda ng wika"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1823",
"Z11K2": "етикет на езика"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1762",
"Z11K2": "nimi toki ilo"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1157",
"Z11K2": "taalcode"
}
]
},
"Z3K4": {
"Z1K1": "Z40",
"Z40K1": "Z42"
}
},
{
"Z1K1": "Z3",
"Z3K1": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z6"
},
"Z3K2": "Z60K2",
"Z3K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "language tag aliases"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1025",
"Z11K2": "alternatywne kody"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1592",
"Z11K2": "alternativa koder"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1011",
"Z11K2": "বিকল্প কোডসমূহ"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1645",
"Z11K2": "语言标签别名"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1062",
"Z11K2": "aliasy kódu"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "Code-Aliasse"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1113",
"Z11K2": "code aliases"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1078",
"Z11K2": "kode alternatif"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1672",
"Z11K2": "語言標籤別名"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "code alternatif"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1005",
"Z11K2": "синонимы кода"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1664",
"Z11K2": "coduri alternative"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1001",
"Z11K2": "رمز مستعار للغة"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "codici alternativi"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1181",
"Z11K2": "алтернативни кодови"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1820",
"Z11K2": "भाषा टैग के उपनाम"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1844",
"Z11K2": "mga alyas ng pananda ng wika"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1762",
"Z11K2": "nimi toki ilo namako"
}
]
},
"Z3K4": {
"Z1K1": "Z40",
"Z40K1": "Z42"
}
}
],
"Z4K3": "Z160",
"Z4K4": "Z862",
"Z4K7": [
"Z46"
],
"Z4K8": [
"Z64"
]
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Natural language"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1011",
"Z11K2": "স্বাভাবিক ভাষা"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1025",
"Z11K2": "Język naturalny"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1592",
"Z11K2": "Naturligt språk"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1513",
"Z11K2": "Természetes nyelv"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1062",
"Z11K2": "Přirozený jazyk"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "natürliche Sprache"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1830",
"Z11K2": "自然言語"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1005",
"Z11K2": "Естественный язык"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1127",
"Z11K2": "lenguaje natural"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1186",
"Z11K2": "שפה טבעית"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1048",
"Z11K2": "Ngôn ngữ tự nhiên"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1157",
"Z11K2": "natuurlijke taal"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1276",
"Z11K2": "Naturleg språk"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1227",
"Z11K2": "Naturlig språk"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "langue naturelle"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1851",
"Z11K2": "ภาษาธรรมชาติ"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1616",
"Z11K2": "naravni jezik"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1381",
"Z11K2": "linguagem natural"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1237",
"Z11K2": "Doğal dil"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1332",
"Z11K2": "Природна мова"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1113",
"Z11K2": "Natural language"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1657",
"Z11K2": "ਕੁਦਰਤੀ ਬੋਲੀ"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1083",
"Z11K2": "قدرتی بولی"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1820",
"Z11K2": "प्राकृतिक भाषा"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1191",
"Z11K2": "قدرتي ٻولي"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1151",
"Z11K2": "ꯉꯥꯡꯅꯕ ꯂꯣꯟ"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1878",
"Z11K2": "ꠙꠇꠞꠤꠔ ꠜꠣꠡꠣ"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1078",
"Z11K2": "Bahasa alami"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1645",
"Z11K2": "自然语言"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1672",
"Z11K2": "自然語言"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1643",
"Z11K2": "자연어"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1827",
"Z11K2": "φυσική γλώσσα"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1003",
"Z11K2": "lengua natural"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1099",
"Z11K2": "natierlech Sprooch"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1014",
"Z11K2": "Asụsụ eke"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1360",
"Z11K2": "🗣️"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1288",
"Z11K2": "زمانی سروشتی"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1664",
"Z11K2": "Limbă naturală"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1001",
"Z11K2": "لغة طبيعية"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "Lingua naturale"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1051",
"Z11K2": "luonnollinen kieli"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1181",
"Z11K2": "Људски језик"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1207",
"Z11K2": "забони табиӣ"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1844",
"Z11K2": "Likas na wika"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1823",
"Z11K2": "Естествен език"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1762",
"Z11K2": "toki"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1630",
"Z11K2": "Basa bawaan"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31",
{
"Z1K1": "Z31",
"Z31K1": "Z1127",
"Z31K2": [
"Z6",
"lengua natural"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1002",
"Z31K2": [
"Z6",
"ordinary language"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1237",
"Z31K2": [
"Z6",
"sıradan dil"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1657",
"Z31K2": [
"Z6",
"ਕੁਦਰਤੀ ਭਾਸ਼ਾ",
"ਕੁਦਰਤੀ ਭਾਖਾ"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1083",
"Z31K2": [
"Z6",
"قدرتی بھاشا",
"قدرتی بھاکھا"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1078",
"Z31K2": [
"Z6",
"Bahasa manusia",
"Bahasa biasa"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1381",
"Z31K2": [
"Z6",
"linguagem ordinária"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1004",
"Z31K2": [
"Z6",
"langue ordinaire"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1664",
"Z31K2": [
"Z6",
"limbă obișnuită"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1787",
"Z31K2": [
"Z6",
"linguaggio naturale"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1181",
"Z31K2": [
"Z6",
"природан језик"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1820",
"Z31K2": [
"Z6",
"कुदरती ज़ुबान"
]
}
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1011",
"Z11K2": "যে শব্দাবলি দিয়ে এই উইকিতে বস্তুর নাম/বিবরণ/উপনাম লেখা হয়"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1127",
"Z11K2": "idioma hablado o escrito por humanos para propósitos generales de comunicación"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "language naturally spoken by humans"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1062",
"Z11K2": "jazyk přirozeně používaný lidmi"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1157",
"Z11K2": "taal die van nature door mensen wordt gesproken"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1851",
"Z11K2": "ภาษาที่พูดโดยมนุษย์ทั่วไป"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1616",
"Z11K2": "jezik, ki ga govorijo ljudje"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1381",
"Z11K2": "linguagem naturalmente falada pelos humanos"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1237",
"Z11K2": "insanların doğal olarak konuştuğu dil"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1113",
"Z11K2": "language naturally spoken by humans"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1657",
"Z11K2": "ਇਨਸਾਨਾਂ ਦੁਆਰਾ ਬੋਲੀ ਜਾਣ ਵਾਲੀ ਭਾਸ਼ਾ"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1078",
"Z11K2": "bahasa yang dituturkan secara alami oleh manusia"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1827",
"Z11K2": "γλώσσα που ομιλείται από τους ανθρώπους"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1003",
"Z11K2": "lengua naturalmente hablado por humanos"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1014",
"Z11K2": "asụsụ nke ụmụ mmadụ na-asụ."
},
{
"Z1K1": "Z11",
"Z11K1": "Z1288",
"Z11K2": "زمانێک کە بە شێوەیەکی سروشتی لەلایەن مرۆڤەکانەوە قسەی پێ دەکرێت"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "langue naturellement parlé par les humains"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1664",
"Z11K2": "limbă vorbită de către oameni în mod natural"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1001",
"Z11K2": "لغة يتحدثها بشر بطبيعتهم"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "Lingua naturalmente parlata dagli esseri umani"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1181",
"Z11K2": "језик који људи користе за комуникацију"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1820",
"Z11K2": "मनुष्यों द्वारा प्राकृतिक रूप से बोली जाने वाली भाषा।"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1844",
"Z11K2": "wikang likas na sinasalita ng mga tao"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1823",
"Z11K2": "език, естествено говорен от хората."
}
]
}
}
kr454tz1uzu012i2mwont5lwub37s5t
Wikifunctions:Report a technical problem
4
1175
296951
290591
2026-08-06T18:02:55Z
Ameisenigel
44
296951
wikitext
text/x-wiki
<languages/>
{{shortcut|[[WF:BUG]]}}
{{see also
|Special:MyLanguage/WF:Status|l1=WF:Status
|Special:MyLanguage/WF:Feature_petitions|l2=WF:Feature petitions
}}
<translate>
<!--T:1-->
If you have found a bug in Wikifunctions, or you have a feature request for Wikifunctions, please let us know!
== Scope == <!--T:2-->
</translate>
* <translate><!--T:3--> '''Bug''' - a problem that is producing incorrect or unexpected results on Wikifunctions. Note that problems within Functions themselves are not considered as a bug in this context.</translate>
* <translate><!--T:4--> '''Feature request''' - an idea that the development team can add to Wikifunctions to make it even more awesome.</translate>
<translate>
<!--T:5-->
Do you need help with something else?
</translate>
: <translate><!--T:6--> The following are '''out of scope''' of the work of the Wikifunctions development team:</translate>
:* <translate><!--T:7--> The '''content of individual Functions''' – Discuss those on the talkpage of the Function itself, or ask for help at <tvar name="1">[[Wikifunctions:Project chat]]</tvar> or in the channels listed below; if you think a function is missing, see <tvar name="2">[[Wikifunctions:Suggest a function]]</tvar></translate>
:* <translate><!--T:8--> The '''Wikifunctions project's policies''' – Ask about those at <tvar name="1">[[Wikifunctions:Project chat]]</tvar> or in the channels listed below</translate>
<translate>
== Find existing bugs and feature requests == <!--T:9-->
</translate>
* <translate><!--T:10--> See '''<tvar name="1">[[Wikifunctions:Status]]</tvar>''' for a quick summary of high-level issues.</translate>
* <translate><!--T:11--> You can '''[[<tvar name="1">phab:maniphest/query/UzvNRqsdnymk/</tvar>|search the Phabricator]] listing of open tasks''' to see if your bug or feature idea is already documented.</translate>
<translate>
== Discuss with others == <!--T:12-->
<!--T:13-->
You can ask questions about possible bugs or feature ideas at a few locations. This may be helpful if you are unsure how to clearly describe the bug or feature idea:
</translate>
* <translate><!--T:14--> The discussion page [[<tvar name="1">Wikifunctions:Project chat</tvar>|here]].</translate>
* <translate><!--T:15--> The main chat on [<tvar name="1">https://t.me/Wikifunctions</tvar> Telegram] or IRC <tvar name="2">{{channel|wikipedia-abstract}}</tvar> (bridged together) ([<tvar name="3">https://wm-bot.wmcloud.org/logs/%23wikipedia-abstract/</tvar> logs], [<tvar name="4">https://wm-bot.wmflabs.org/logs/%23wikipedia-abstract/</tvar> old logs])</translate>
* <translate><!--T:16--> The developer chat on [<tvar name="1">https://t.me/abstract_wikipedia_tech</tvar> Telegram] or IRC <tvar name="2">{{channel|wikipedia-abstract-tech}}</tvar> (bridged together) ([<tvar name="3">https://wm-bot.wmcloud.org/logs/%23wikipedia-abstract-tech/</tvar> logs])</translate>
<translate>
== File a task in Phabricator == <!--T:17-->
<!--T:18-->
If you are familiar with Phabricator, you can search and file tasks directly.
<!--T:19-->
If you are not yet familiar: Phabricator is the web-based development collaboration tool mostly used to manage MediaWiki software projects including Wikifunctions. A short summary about Phabricator for newcomers, including tutorial videos, is on MediaWiki's wiki at <tvar name="1">[[mw:Special:MyLanguage/Phabricator/Help|mw:Phabricator/Help]]</tvar>.
</translate>
* <translate><!--T:20--> You can '''[[<tvar name="1">phab:maniphest/query/UzvNRqsdnymk/</tvar>|search]] the listing of open tasks''' to see if your bug or feature idea is already documented.</translate>
** <translate><!--T:21--> The existing tasks are collected with the '''<tvar name="1">[[phab:tag/abstract wikipedia team|#abstract wikipedia team]]</tvar> tag'''.</translate>
* <translate><!--T:22--> You can '''[<tvar name="1">https://phabricator.wikimedia.org/maniphest/task/edit/form/43/?projects=abstract_wikipedia</tvar> file a new task]'''. Please always include:</translate>
** <translate><!--T:23--> Examples</translate>
** <translate><!--T:24--> Any relevant links</translate>
** <translate><!--T:25--> For bugs: The exact steps that produced the bug, so that the team can reproduce and diagnose it.</translate>
<translate>
== Languages == <!--T:26-->
<!--T:27-->
The development team understands a limited number of languages – but you are free to report issues in any language that you're comfortable with.
<!--T:28-->
If possible, please provide a summary in English when creating a phabricator task, or ask someone to help you.
== Follow-up == <!--T:29-->
</translate>
* <translate><!--T:30--> The locations above are followed by the Wikifunctions development team, as well as community members. The time to get a reply varies depending on the nature or complexity of the topic, etc. However, in general, you can get an answer within 2 workdays. Please let us know if we missed something, as life can get distracting!</translate>
* <translate><!--T:31--> Not all problems can be solved immediately: depending on the impact, priority, etc. some bugs can be triaged to low priority. You may follow the status of your report on the relevant linked phabricator task.</translate>
[[Category:Report a technical problem{{#translation:}}]]
onoeu2ogxgjrtcw6mpnbpr7nf2ls5uj
Wikifunctions:FAQ
4
1181
296905
291454
2026-08-06T18:01:44Z
Ameisenigel
44
296905
wikitext
text/x-wiki
<languages/>
{{shortcut|[[WF:FAQ]]}}
<translate><!--T:1-->
This is a dedicated page for the Frequently Asked Questions about Wikifunctions. Please, feel free to ask your own question on the [[<tvar name="1">Wikifunctions talk:FAQ</tvar>|talk page]], if your question is not listed here!
<!--T:55-->
Also, please consider our [[<tvar name="1">:m:Special:MyLanguage/Abstract Wikipedia/FAQ</tvar>|FAQ on Meta]] regarding more general questions about Wikifunctions and Abstract Wikipedia.</translate>
__TOC__
<translate>
== Introduction == <!--T:2-->
=== What is this project about? === <!--T:3-->
<!--T:4-->
Wikifunctions is a new Wikimedia project that provides a catalog of all kinds of functions that anyone can call, write, maintain, and use. It also provides the underlying technology that will eventually enable the translation of language-independent articles from Abstract Wikipedia into the language of any Wikipedia. This will allow everyone to contribute and read articles in their preferred languages.
=== What is a function? === <!--T:5-->
<!--T:6-->
Functions are a form of knowledge that can answer questions, such as how many days have passed between two dates or the distance between two cities. More complicated functions can answer more complicated questions, such as the volume of a three-dimensional shape, the distance between Mars and Venus on a certain date, or whether two species were alive at the same time.
<!--T:7-->
We already use functions in many types of knowledge inquiries, such as asking a question to a search engine. The templates, such as [[<tvar name="1">:w:en:Template:Convert</tvar>|Template:Convert]] and [[<tvar name="2">:w:en:Template:Age</tvar>|Template:Age]] on English Wikipedia, are also examples of functions that are already used in many Wikipedias, written in wikitext and Lua and manually copied to each wiki where they're wanted.
=== What is an implementation? === <!--T:8-->
<!--T:9-->
An implementation is a particular way to execute a function. An implementation is a recipe that lists the steps that are needed to run the function. It may be a piece of code in a programming language or a combination of calls to other functions. A function may have many implementations, which should all be equivalent.
=== What is a test? === <!--T:10-->
<!--T:11-->
A test is a way to determine if a given function is doing the right thing. A function will typically have multiple testers, each specifying some input to the function and the conditions the output for the given input must fulfill.
<!--T:12-->
For example, testers for a “title case” function might include: “<tvar name="1"><span dir="ltr" lang="en">abc</span></tvar>” should become “<tvar name="2"><span dir="ltr" lang="en">Abc</span></tvar>”; “<tvar name="3"><span dir="ltr" lang="en">war and peace</span></tvar>” should become “<tvar name="4"><span dir="ltr" lang="en">War and Peace</span></tvar>”; “<tvar name="5"><span dir="ltr" lang="ru">война и мир</span></tvar>” should become “<tvar name="6"><span dir="ltr" lang="ru">Война и мир</span></tvar>”; and “<tvar name="7"><span dir="ltr" lang="en">123</span></tvar>” should remain “<tvar name="8"><span dir="ltr" lang="en">123</span></tvar>”.
=== Which features are available now, which will be soon available, and which are further away? === <!--T:13-->
</translate>
* <translate><!--T:14--> At launch:</translate>
** <translate><!--T:15--> We have the ability to have functions that work with Strings and Booleans.</translate>
** <translate><!--T:16--> Wikifunctions will be fully internationalized from the beginning. It can be used in any language.</translate>
* <translate><!--T:17--> [[<tvar name="1">Wikifunctions:Status</tvar>|Ongoing development]]:</translate>
** <translate><!--T:18--> Generic types and generic functions are not fully supported.</translate>
** <translate><!--T:19--> Adding types will, for now, be something that is limited to the development team. In the future, the community will be able to add more types. There is a lot of work to be done in the future to make types behave much more smoothly.</translate>
*** <translate><!--T:20--> One particularly interesting type will be binary data, and particularly files.</translate>
** <translate><!--T:21--> We currently support two programming languages for implementations: JavaScript and Python. In the future, we want to support many more.</translate>
** <translate><!--T:22--> Currently, it is ''not'' possible to call other functions from implementations written in any programming language. This is currently only possible through composition.</translate>
* <translate><!--T:23--> In the future:</translate>
** <translate><!--T:24--> It will be possible to call Wikifunctions functions from other Wikimedia projects and integrate their results into the output of the page.</translate>
** <translate><!--T:25--> It will be possible to use data from Wikidata in functions.</translate>
** <translate><!--T:26--> It will be possible to call data sets from Commons Data namespace.</translate>
<translate>
=== How is Wikifunctions multilingual? === <!--T:56-->
</translate>
{{main|Special:MyLanguage/Help:Multilingual}}
<translate>
<!--T:57-->
Wikifunctions and Abstract Wikipedia are multilingual in a number of ways that do not impact each other:</translate>
* <translate><!--T:58--> '''Wikifunctions is multilingual in terms of its content and user interface.''' Users can read and call functions on Wikifunctions in any natural language. Here is the “join string” function in [<tvar name="1">https://www.wikifunctions.org/view/en/Z10000</tvar> English], [<tvar name="2">https://www.wikifunctions.org/view/pl/Z10000</tvar> Polish], and [<tvar name="3">https://www.wikifunctions.org/view/he/Z10000</tvar> Hebrew], and it is available in many more languages.</translate>
* <translate><!--T:59--> '''Contributors can edit and improve Wikifunctions using their language.''' Even implementations can be edited in the natural language of the contributor. For example, the composition of the “and” function can be edited in [<tvar name="1">https://www.wikifunctions.org/wiki/Z11223?action=edit&uselang=de</tvar> German], [<tvar name="2">https://www.wikifunctions.org/wiki/Z11223?action=edit&uselang=en</tvar> English], or any other of about 300 languages.</translate>
* <translate><!--T:60--> '''Wikifunctions functions can be used to create results for any natural language.''' The community is creating a growing number of functions to support the generation of text in many natural languages. We have functions for [[<tvar name="1">Wikifunctions:Catalogue#Breton</tvar>|Breton]], [[<tvar name="2">Wikifunctions:Catalogue#Rohingya</tvar>|Rohingya]], [[<tvar name="3">Wikifunctions:Catalogue#English</tvar>|English]], and many other languages.</translate>
* <translate><!--T:61--> '''Functions in Wikifunctions can be implemented in various different programming languages.''' For example, the [[<tvar name="1">Z10000</tvar>|join function]] is implemented in both [[<tvar name="2">Z10005</tvar>|JavaScript]] and [[<tvar name="3">Z10004</tvar>|Python]].</translate>
<translate>
=== Which programming languages does Wikifunctions currently support? Which programming languages will be supported in the future? === <!--T:62-->
</translate>
{{main|WF:programming languages}}
<translate>
<!--T:63-->
Currently, Wikifunctions supports implementations written in JavaScript and Python. We plan to add support for more programming languages in the future. We hope to add at least one further programming language in 2025 (but have not yet decided which one).
=== How will Wikifunctions be integrated into other projects? === <!--T:27-->
<!--T:28-->
Wikifunctions is the first step towards building Abstract Wikipedia. Our near-term focus will be on supporting the community and making improvements based on feedback. Concurrently, we will begin the process of integrating it with Wikipedia and Wikidata, which will enable broader real-life applications and get us closer to the vision of Abstract Wikipedia.
<!--T:29-->
Contributors will be able to call functions stored on the Wikifunctions site from within their wikis. The result of the function call will be displayed to readers of the wiki. This can be used, for example, to calculate the age of a person, the population density based on population and area data from Wikidata, or to draw a graph and integrate it into a given article.
<!--T:30-->
Another option to integrate Wikifunctions will be to integrate an interactive function call interface within their wiki. This could be used, for example, in a Wikipedia article to dynamically calculate the result of a physical equation based on reader-provided parameters, draw and interact with mathematical functions, etc.
=== What Wikifunctions is not === <!--T:31-->
<!--T:32-->
Please, see [[<tvar name="1">Special:MyLanguage/Wikifunctions:What Wikifunctions is not</tvar>|Wikifunctions:What Wikifunctions is not]] for more information on that.
=== What license will the functions and derived content be under? === <!--T:33-->
<!--T:34-->
Per the discussion happened [[<tvar name="1">:m:Special:MyLanguage/Abstract Wikipedia/Licensing discussion</tvar>|on Meta between November and December 2021]], all contributions to Wikifunctions and the wider Abstract Wikipedia projects will be published under free licenses. In particular:
</translate>
* <translate><!--T:35--> [[<tvar name="1">Special:MyLanguage/Wikifunctions:Glossary#Content</tvar>|Textual content]] on Wikifunctions will be published under [[w:Creative Commons license|CC BY-SA 4.0]].</translate>
* <translate><!--T:36--> [[<tvar name="1">Special:MyLanguage/Wikifunctions:Glossary#Function</tvar>|Function signatures]] and other structured content on Wikifunctions will be published under [[w:CC0|CC 0]].</translate>
* <translate><!--T:37--> [[<tvar name="1">Special:MyLanguage/Wikifunctions:Glossary#Implementation</tvar>|Code implementations]] in Wikifunctions will be published under the [[w:Apache License|Apache 2 license]].</translate>
* <translate><!--T:38--> [[<tvar name="1">Special:MyLanguage/Wikifunctions:Glossary#Content</tvar>|Abstract Content]] for Abstract Wikipedia will be published under CC BY-SA 4.0.</translate>
<translate>
<!--T:39-->
There are still some points that will need to be addressed in the future, such as the license of the generated content from the abstract content. We plan on drafting a more comprehensive document with the Legal department about how people can re-use code from Wikifunctions as painlessly as possible, while adhering to the license.
== Contributing == <!--T:40-->
=== I'm new here. What is there for me to do and how can I help? === <!--T:41-->
<!--T:42-->
Welcome! We're very happy to have you here! There are many opportunities for contributing to Wikifunctions, from creating new functions to improving and translating documentation. If you are looking for ways to get involved, we recommend that maybe, depending on your level of comfort, you suggest a new function on a topic you are interested in. Or even create such a function. Provide some tests. Try your hand at an implementation. Help with translations. Read and improve our documentation. Help with organizing the community.
=== How do I create a new function, implementation, or test? === <!--T:43-->
<!--T:44-->
To see how to create a new function, implementation, or test, see [[<tvar name="1">Special:MyLanguage/Wikifunctions:Introduction</tvar>|Wikifunctions:Introduction]].
<!--T:45-->
To see in more detail how to create an implementation, see [[<tvar name="1">Special:MyLanguage/Wikifunctions:How to create implementations</tvar>|Wikifunctions:How to create implementations]].
=== What should I edit first? === <!--T:46-->
<!--T:47-->
If you can write several languages, find functions that don't have labels and descriptions in your languages yet on the page <tvar name="1">[[Special:ListMissingLabels]]</tvar>, and help to add them.
<!--T:48-->
If you have some interest in a domain that could feature functions in Wikifunctions, but yet doesn't, or if you have more ideas for functions, go to the page for [[<tvar name="1">Wikifunctions:Suggest a new function</tvar>|suggesting new functions]] and present your ideas.
<!--T:49-->
If you are a coder in JavaScript or Python, maybe you want to check for functions that don't yet have implementations in JavaScript or Python, and try to write them.
=== Where can I go for help? === <!--T:50-->
<!--T:51-->
Your first stop should be the [[<tvar name="1">Special:MyLanguage/Help:Contents</tvar>|Help portal]], where you'll find all the documentation related to using and editing Wikifunctions. If you're still stuck, post a message on [[<tvar name="2">Wikifunctions:Project chat</tvar>|Project chat]], and someone will answer your question.
=== How do we sort or categorize functions? === <!--T:52-->
</translate>
{{Tracked|T285424}}
<translate>
<!--T:54-->
For now, the best way to sort or categorize functions is to do it by hand through [[<tvar name="1">Special:MyLanguage/Wikifunctions:Catalogue</tvar>|pages in the Wikifunctions namespace]]. Another option would be through the talk page of the given function. We will monitor these efforts and discuss with the community which changes to the system would be helpful for this task.
=== How can I setup the software locally to hack on it? ===
See [[<tvar name="1">Special:MyLanguage/Wikifunctions:Hacking on the evaluator and orchestrator</tvar>|Hacking on the evaluator and orchestrator]].
</translate>
[[Category:FAQ| {{#translation:}}]]
8xa6hujdt3x23z7vpgjfnf8uh73ptpj
296906
296905
2026-08-06T18:01:51Z
Ameisenigel
44
Marked this version for translation
296906
wikitext
text/x-wiki
<languages/>
{{shortcut|[[WF:FAQ]]}}
<translate><!--T:1-->
This is a dedicated page for the Frequently Asked Questions about Wikifunctions. Please, feel free to ask your own question on the [[<tvar name="1">Wikifunctions talk:FAQ</tvar>|talk page]], if your question is not listed here!
<!--T:55-->
Also, please consider our [[<tvar name="1">:m:Special:MyLanguage/Abstract Wikipedia/FAQ</tvar>|FAQ on Meta]] regarding more general questions about Wikifunctions and Abstract Wikipedia.</translate>
__TOC__
<translate>
== Introduction == <!--T:2-->
=== What is this project about? === <!--T:3-->
<!--T:4-->
Wikifunctions is a new Wikimedia project that provides a catalog of all kinds of functions that anyone can call, write, maintain, and use. It also provides the underlying technology that will eventually enable the translation of language-independent articles from Abstract Wikipedia into the language of any Wikipedia. This will allow everyone to contribute and read articles in their preferred languages.
=== What is a function? === <!--T:5-->
<!--T:6-->
Functions are a form of knowledge that can answer questions, such as how many days have passed between two dates or the distance between two cities. More complicated functions can answer more complicated questions, such as the volume of a three-dimensional shape, the distance between Mars and Venus on a certain date, or whether two species were alive at the same time.
<!--T:7-->
We already use functions in many types of knowledge inquiries, such as asking a question to a search engine. The templates, such as [[<tvar name="1">:w:en:Template:Convert</tvar>|Template:Convert]] and [[<tvar name="2">:w:en:Template:Age</tvar>|Template:Age]] on English Wikipedia, are also examples of functions that are already used in many Wikipedias, written in wikitext and Lua and manually copied to each wiki where they're wanted.
=== What is an implementation? === <!--T:8-->
<!--T:9-->
An implementation is a particular way to execute a function. An implementation is a recipe that lists the steps that are needed to run the function. It may be a piece of code in a programming language or a combination of calls to other functions. A function may have many implementations, which should all be equivalent.
=== What is a test? === <!--T:10-->
<!--T:11-->
A test is a way to determine if a given function is doing the right thing. A function will typically have multiple testers, each specifying some input to the function and the conditions the output for the given input must fulfill.
<!--T:12-->
For example, testers for a “title case” function might include: “<tvar name="1"><span dir="ltr" lang="en">abc</span></tvar>” should become “<tvar name="2"><span dir="ltr" lang="en">Abc</span></tvar>”; “<tvar name="3"><span dir="ltr" lang="en">war and peace</span></tvar>” should become “<tvar name="4"><span dir="ltr" lang="en">War and Peace</span></tvar>”; “<tvar name="5"><span dir="ltr" lang="ru">война и мир</span></tvar>” should become “<tvar name="6"><span dir="ltr" lang="ru">Война и мир</span></tvar>”; and “<tvar name="7"><span dir="ltr" lang="en">123</span></tvar>” should remain “<tvar name="8"><span dir="ltr" lang="en">123</span></tvar>”.
=== Which features are available now, which will be soon available, and which are further away? === <!--T:13-->
</translate>
* <translate><!--T:14--> At launch:</translate>
** <translate><!--T:15--> We have the ability to have functions that work with Strings and Booleans.</translate>
** <translate><!--T:16--> Wikifunctions will be fully internationalized from the beginning. It can be used in any language.</translate>
* <translate><!--T:17--> [[<tvar name="1">Wikifunctions:Status</tvar>|Ongoing development]]:</translate>
** <translate><!--T:18--> Generic types and generic functions are not fully supported.</translate>
** <translate><!--T:19--> Adding types will, for now, be something that is limited to the development team. In the future, the community will be able to add more types. There is a lot of work to be done in the future to make types behave much more smoothly.</translate>
*** <translate><!--T:20--> One particularly interesting type will be binary data, and particularly files.</translate>
** <translate><!--T:21--> We currently support two programming languages for implementations: JavaScript and Python. In the future, we want to support many more.</translate>
** <translate><!--T:22--> Currently, it is ''not'' possible to call other functions from implementations written in any programming language. This is currently only possible through composition.</translate>
* <translate><!--T:23--> In the future:</translate>
** <translate><!--T:24--> It will be possible to call Wikifunctions functions from other Wikimedia projects and integrate their results into the output of the page.</translate>
** <translate><!--T:25--> It will be possible to use data from Wikidata in functions.</translate>
** <translate><!--T:26--> It will be possible to call data sets from Commons Data namespace.</translate>
<translate>
=== How is Wikifunctions multilingual? === <!--T:56-->
</translate>
{{main|Special:MyLanguage/Help:Multilingual}}
<translate>
<!--T:57-->
Wikifunctions and Abstract Wikipedia are multilingual in a number of ways that do not impact each other:</translate>
* <translate><!--T:58--> '''Wikifunctions is multilingual in terms of its content and user interface.''' Users can read and call functions on Wikifunctions in any natural language. Here is the “join string” function in [<tvar name="1">https://www.wikifunctions.org/view/en/Z10000</tvar> English], [<tvar name="2">https://www.wikifunctions.org/view/pl/Z10000</tvar> Polish], and [<tvar name="3">https://www.wikifunctions.org/view/he/Z10000</tvar> Hebrew], and it is available in many more languages.</translate>
* <translate><!--T:59--> '''Contributors can edit and improve Wikifunctions using their language.''' Even implementations can be edited in the natural language of the contributor. For example, the composition of the “and” function can be edited in [<tvar name="1">https://www.wikifunctions.org/wiki/Z11223?action=edit&uselang=de</tvar> German], [<tvar name="2">https://www.wikifunctions.org/wiki/Z11223?action=edit&uselang=en</tvar> English], or any other of about 300 languages.</translate>
* <translate><!--T:60--> '''Wikifunctions functions can be used to create results for any natural language.''' The community is creating a growing number of functions to support the generation of text in many natural languages. We have functions for [[<tvar name="1">Wikifunctions:Catalogue#Breton</tvar>|Breton]], [[<tvar name="2">Wikifunctions:Catalogue#Rohingya</tvar>|Rohingya]], [[<tvar name="3">Wikifunctions:Catalogue#English</tvar>|English]], and many other languages.</translate>
* <translate><!--T:61--> '''Functions in Wikifunctions can be implemented in various different programming languages.''' For example, the [[<tvar name="1">Z10000</tvar>|join function]] is implemented in both [[<tvar name="2">Z10005</tvar>|JavaScript]] and [[<tvar name="3">Z10004</tvar>|Python]].</translate>
<translate>
=== Which programming languages does Wikifunctions currently support? Which programming languages will be supported in the future? === <!--T:62-->
</translate>
{{main|WF:programming languages}}
<translate>
<!--T:63-->
Currently, Wikifunctions supports implementations written in JavaScript and Python. We plan to add support for more programming languages in the future. We hope to add at least one further programming language in 2025 (but have not yet decided which one).
=== How will Wikifunctions be integrated into other projects? === <!--T:27-->
<!--T:28-->
Wikifunctions is the first step towards building Abstract Wikipedia. Our near-term focus will be on supporting the community and making improvements based on feedback. Concurrently, we will begin the process of integrating it with Wikipedia and Wikidata, which will enable broader real-life applications and get us closer to the vision of Abstract Wikipedia.
<!--T:29-->
Contributors will be able to call functions stored on the Wikifunctions site from within their wikis. The result of the function call will be displayed to readers of the wiki. This can be used, for example, to calculate the age of a person, the population density based on population and area data from Wikidata, or to draw a graph and integrate it into a given article.
<!--T:30-->
Another option to integrate Wikifunctions will be to integrate an interactive function call interface within their wiki. This could be used, for example, in a Wikipedia article to dynamically calculate the result of a physical equation based on reader-provided parameters, draw and interact with mathematical functions, etc.
=== What Wikifunctions is not === <!--T:31-->
<!--T:32-->
Please, see [[<tvar name="1">Special:MyLanguage/Wikifunctions:What Wikifunctions is not</tvar>|Wikifunctions:What Wikifunctions is not]] for more information on that.
=== What license will the functions and derived content be under? === <!--T:33-->
<!--T:34-->
Per the discussion happened [[<tvar name="1">:m:Special:MyLanguage/Abstract Wikipedia/Licensing discussion</tvar>|on Meta between November and December 2021]], all contributions to Wikifunctions and the wider Abstract Wikipedia projects will be published under free licenses. In particular:
</translate>
* <translate><!--T:35--> [[<tvar name="1">Special:MyLanguage/Wikifunctions:Glossary#Content</tvar>|Textual content]] on Wikifunctions will be published under [[w:Creative Commons license|CC BY-SA 4.0]].</translate>
* <translate><!--T:36--> [[<tvar name="1">Special:MyLanguage/Wikifunctions:Glossary#Function</tvar>|Function signatures]] and other structured content on Wikifunctions will be published under [[w:CC0|CC 0]].</translate>
* <translate><!--T:37--> [[<tvar name="1">Special:MyLanguage/Wikifunctions:Glossary#Implementation</tvar>|Code implementations]] in Wikifunctions will be published under the [[w:Apache License|Apache 2 license]].</translate>
* <translate><!--T:38--> [[<tvar name="1">Special:MyLanguage/Wikifunctions:Glossary#Content</tvar>|Abstract Content]] for Abstract Wikipedia will be published under CC BY-SA 4.0.</translate>
<translate>
<!--T:39-->
There are still some points that will need to be addressed in the future, such as the license of the generated content from the abstract content. We plan on drafting a more comprehensive document with the Legal department about how people can re-use code from Wikifunctions as painlessly as possible, while adhering to the license.
== Contributing == <!--T:40-->
=== I'm new here. What is there for me to do and how can I help? === <!--T:41-->
<!--T:42-->
Welcome! We're very happy to have you here! There are many opportunities for contributing to Wikifunctions, from creating new functions to improving and translating documentation. If you are looking for ways to get involved, we recommend that maybe, depending on your level of comfort, you suggest a new function on a topic you are interested in. Or even create such a function. Provide some tests. Try your hand at an implementation. Help with translations. Read and improve our documentation. Help with organizing the community.
=== How do I create a new function, implementation, or test? === <!--T:43-->
<!--T:44-->
To see how to create a new function, implementation, or test, see [[<tvar name="1">Special:MyLanguage/Wikifunctions:Introduction</tvar>|Wikifunctions:Introduction]].
<!--T:45-->
To see in more detail how to create an implementation, see [[<tvar name="1">Special:MyLanguage/Wikifunctions:How to create implementations</tvar>|Wikifunctions:How to create implementations]].
=== What should I edit first? === <!--T:46-->
<!--T:47-->
If you can write several languages, find functions that don't have labels and descriptions in your languages yet on the page <tvar name="1">[[Special:ListMissingLabels]]</tvar>, and help to add them.
<!--T:48-->
If you have some interest in a domain that could feature functions in Wikifunctions, but yet doesn't, or if you have more ideas for functions, go to the page for [[<tvar name="1">Wikifunctions:Suggest a new function</tvar>|suggesting new functions]] and present your ideas.
<!--T:49-->
If you are a coder in JavaScript or Python, maybe you want to check for functions that don't yet have implementations in JavaScript or Python, and try to write them.
=== Where can I go for help? === <!--T:50-->
<!--T:51-->
Your first stop should be the [[<tvar name="1">Special:MyLanguage/Help:Contents</tvar>|Help portal]], where you'll find all the documentation related to using and editing Wikifunctions. If you're still stuck, post a message on [[<tvar name="2">Wikifunctions:Project chat</tvar>|Project chat]], and someone will answer your question.
=== How do we sort or categorize functions? === <!--T:52-->
</translate>
{{Tracked|T285424}}
<translate>
<!--T:54-->
For now, the best way to sort or categorize functions is to do it by hand through [[<tvar name="1">Special:MyLanguage/Wikifunctions:Catalogue</tvar>|pages in the Wikifunctions namespace]]. Another option would be through the talk page of the given function. We will monitor these efforts and discuss with the community which changes to the system would be helpful for this task.
=== How can I setup the software locally to hack on it? === <!--T:64-->
<!--T:65-->
See [[<tvar name="1">Special:MyLanguage/Wikifunctions:Hacking on the evaluator and orchestrator</tvar>|Hacking on the evaluator and orchestrator]].
</translate>
[[Category:FAQ| {{#translation:}}]]
2b5e5cdhxtp1mklz3srzo2zxsgpqwux
Wikifunctions:FAQ/en
4
1247
296913
265377
2026-08-06T18:01:55Z
FuzzyBot
207
Updating to match new version of source page
296913
wikitext
text/x-wiki
<languages/>
{{shortcut|[[WF:FAQ]]}}
This is a dedicated page for the Frequently Asked Questions about Wikifunctions. Please, feel free to ask your own question on the [[Wikifunctions talk:FAQ|talk page]], if your question is not listed here!
Also, please consider our [[:m:Special:MyLanguage/Abstract Wikipedia/FAQ|FAQ on Meta]] regarding more general questions about Wikifunctions and Abstract Wikipedia.
__TOC__
== Introduction ==
=== What is this project about? ===
Wikifunctions is a new Wikimedia project that provides a catalog of all kinds of functions that anyone can call, write, maintain, and use. It also provides the underlying technology that will eventually enable the translation of language-independent articles from Abstract Wikipedia into the language of any Wikipedia. This will allow everyone to contribute and read articles in their preferred languages.
=== What is a function? ===
Functions are a form of knowledge that can answer questions, such as how many days have passed between two dates or the distance between two cities. More complicated functions can answer more complicated questions, such as the volume of a three-dimensional shape, the distance between Mars and Venus on a certain date, or whether two species were alive at the same time.
We already use functions in many types of knowledge inquiries, such as asking a question to a search engine. The templates, such as [[:w:en:Template:Convert|Template:Convert]] and [[:w:en:Template:Age|Template:Age]] on English Wikipedia, are also examples of functions that are already used in many Wikipedias, written in wikitext and Lua and manually copied to each wiki where they're wanted.
=== What is an implementation? ===
An implementation is a particular way to execute a function. An implementation is a recipe that lists the steps that are needed to run the function. It may be a piece of code in a programming language or a combination of calls to other functions. A function may have many implementations, which should all be equivalent.
=== What is a test? ===
A test is a way to determine if a given function is doing the right thing. A function will typically have multiple testers, each specifying some input to the function and the conditions the output for the given input must fulfill.
For example, testers for a “title case” function might include: “<span dir="ltr" lang="en">abc</span>” should become “<span dir="ltr" lang="en">Abc</span>”; “<span dir="ltr" lang="en">war and peace</span>” should become “<span dir="ltr" lang="en">War and Peace</span>”; “<span dir="ltr" lang="ru">война и мир</span>” should become “<span dir="ltr" lang="ru">Война и мир</span>”; and “<span dir="ltr" lang="en">123</span>” should remain “<span dir="ltr" lang="en">123</span>”.
=== Which features are available now, which will be soon available, and which are further away? ===
* At launch:
** We have the ability to have functions that work with Strings and Booleans.
** Wikifunctions will be fully internationalized from the beginning. It can be used in any language.
* [[Wikifunctions:Status|Ongoing development]]:
** Generic types and generic functions are not fully supported.
** Adding types will, for now, be something that is limited to the development team. In the future, the community will be able to add more types. There is a lot of work to be done in the future to make types behave much more smoothly.
*** One particularly interesting type will be binary data, and particularly files.
** We currently support two programming languages for implementations: JavaScript and Python. In the future, we want to support many more.
** Currently, it is ''not'' possible to call other functions from implementations written in any programming language. This is currently only possible through composition.
* In the future:
** It will be possible to call Wikifunctions functions from other Wikimedia projects and integrate their results into the output of the page.
** It will be possible to use data from Wikidata in functions.
** It will be possible to call data sets from Commons Data namespace.
=== How is Wikifunctions multilingual? ===
{{main|Special:MyLanguage/Help:Multilingual}}
Wikifunctions and Abstract Wikipedia are multilingual in a number of ways that do not impact each other:
* '''Wikifunctions is multilingual in terms of its content and user interface.''' Users can read and call functions on Wikifunctions in any natural language. Here is the “join string” function in [https://www.wikifunctions.org/view/en/Z10000 English], [https://www.wikifunctions.org/view/pl/Z10000 Polish], and [https://www.wikifunctions.org/view/he/Z10000 Hebrew], and it is available in many more languages.
* '''Contributors can edit and improve Wikifunctions using their language.''' Even implementations can be edited in the natural language of the contributor. For example, the composition of the “and” function can be edited in [https://www.wikifunctions.org/wiki/Z11223?action=edit&uselang=de German], [https://www.wikifunctions.org/wiki/Z11223?action=edit&uselang=en English], or any other of about 300 languages.
* '''Wikifunctions functions can be used to create results for any natural language.''' The community is creating a growing number of functions to support the generation of text in many natural languages. We have functions for [[Wikifunctions:Catalogue#Breton|Breton]], [[Wikifunctions:Catalogue#Rohingya|Rohingya]], [[Wikifunctions:Catalogue#English|English]], and many other languages.
* '''Functions in Wikifunctions can be implemented in various different programming languages.''' For example, the [[Z10000|join function]] is implemented in both [[Z10005|JavaScript]] and [[Z10004|Python]].
=== Which programming languages does Wikifunctions currently support? Which programming languages will be supported in the future? ===
{{main|WF:programming languages}}
Currently, Wikifunctions supports implementations written in JavaScript and Python. We plan to add support for more programming languages in the future. We hope to add at least one further programming language in 2025 (but have not yet decided which one).
=== How will Wikifunctions be integrated into other projects? ===
Wikifunctions is the first step towards building Abstract Wikipedia. Our near-term focus will be on supporting the community and making improvements based on feedback. Concurrently, we will begin the process of integrating it with Wikipedia and Wikidata, which will enable broader real-life applications and get us closer to the vision of Abstract Wikipedia.
Contributors will be able to call functions stored on the Wikifunctions site from within their wikis. The result of the function call will be displayed to readers of the wiki. This can be used, for example, to calculate the age of a person, the population density based on population and area data from Wikidata, or to draw a graph and integrate it into a given article.
Another option to integrate Wikifunctions will be to integrate an interactive function call interface within their wiki. This could be used, for example, in a Wikipedia article to dynamically calculate the result of a physical equation based on reader-provided parameters, draw and interact with mathematical functions, etc.
=== What Wikifunctions is not ===
Please, see [[Special:MyLanguage/Wikifunctions:What Wikifunctions is not|Wikifunctions:What Wikifunctions is not]] for more information on that.
=== What license will the functions and derived content be under? ===
Per the discussion happened [[:m:Special:MyLanguage/Abstract Wikipedia/Licensing discussion|on Meta between November and December 2021]], all contributions to Wikifunctions and the wider Abstract Wikipedia projects will be published under free licenses. In particular:
* [[Special:MyLanguage/Wikifunctions:Glossary#Content|Textual content]] on Wikifunctions will be published under [[w:Creative Commons license|CC BY-SA 4.0]].
* [[Special:MyLanguage/Wikifunctions:Glossary#Function|Function signatures]] and other structured content on Wikifunctions will be published under [[w:CC0|CC 0]].
* [[Special:MyLanguage/Wikifunctions:Glossary#Implementation|Code implementations]] in Wikifunctions will be published under the [[w:Apache License|Apache 2 license]].
* [[Special:MyLanguage/Wikifunctions:Glossary#Content|Abstract Content]] for Abstract Wikipedia will be published under CC BY-SA 4.0.
There are still some points that will need to be addressed in the future, such as the license of the generated content from the abstract content. We plan on drafting a more comprehensive document with the Legal department about how people can re-use code from Wikifunctions as painlessly as possible, while adhering to the license.
== Contributing ==
=== I'm new here. What is there for me to do and how can I help? ===
Welcome! We're very happy to have you here! There are many opportunities for contributing to Wikifunctions, from creating new functions to improving and translating documentation. If you are looking for ways to get involved, we recommend that maybe, depending on your level of comfort, you suggest a new function on a topic you are interested in. Or even create such a function. Provide some tests. Try your hand at an implementation. Help with translations. Read and improve our documentation. Help with organizing the community.
=== How do I create a new function, implementation, or test? ===
To see how to create a new function, implementation, or test, see [[Special:MyLanguage/Wikifunctions:Introduction|Wikifunctions:Introduction]].
To see in more detail how to create an implementation, see [[Special:MyLanguage/Wikifunctions:How to create implementations|Wikifunctions:How to create implementations]].
=== What should I edit first? ===
If you can write several languages, find functions that don't have labels and descriptions in your languages yet on the page [[Special:ListMissingLabels]], and help to add them.
If you have some interest in a domain that could feature functions in Wikifunctions, but yet doesn't, or if you have more ideas for functions, go to the page for [[Wikifunctions:Suggest a new function|suggesting new functions]] and present your ideas.
If you are a coder in JavaScript or Python, maybe you want to check for functions that don't yet have implementations in JavaScript or Python, and try to write them.
=== Where can I go for help? ===
Your first stop should be the [[Special:MyLanguage/Help:Contents|Help portal]], where you'll find all the documentation related to using and editing Wikifunctions. If you're still stuck, post a message on [[Wikifunctions:Project chat|Project chat]], and someone will answer your question.
=== How do we sort or categorize functions? ===
{{Tracked|T285424}}
For now, the best way to sort or categorize functions is to do it by hand through [[Special:MyLanguage/Wikifunctions:Catalogue|pages in the Wikifunctions namespace]]. Another option would be through the talk page of the given function. We will monitor these efforts and discuss with the community which changes to the system would be helpful for this task.
=== How can I setup the software locally to hack on it? ===
See [[Special:MyLanguage/Wikifunctions:Hacking on the evaluator and orchestrator|Hacking on the evaluator and orchestrator]].
[[Category:FAQ| {{#translation:}}]]
h3utgi885twkfj3gufulzqf1lj6w0m2
Wikifunctions:Requests for deletions
4
1696
297150
296283
2026-08-07T06:26:51Z
EatingCarBatteries
61191
/* Z38360 */ new section
297150
wikitext
text/x-wiki
<noinclude>__NEWSECTIONLINK__ __FORCETOC__</noinclude>
Functions or implementations or tests which do not work properly, do not meet notability criteria or are duplicates of another object can be deleted. Please nominate items for deletions under the "Requests for deletion" section below.
If it is obvious vandalism, just report it in [[Wikifunctions:Report vandalism]], or ping an [[Special:ListAdmins|administrator]]. Contact can also be made with an administrator on [https://t.me/Wikifunctions Telegram] or IRC [irc://irc.libera.chat/wikipedia-abstract #wikipedia-abstract].
If it is a predefined object (its ZID is less than 10000), please see [[Wikifunctions:Report a technical problem]].
{{Autoarchive resolved section
|age = 1
|archive = ((FULLPAGENAME))/Archive/((year))/((month:##))
|level = 2
}}
{{Archives|{{Special:PrefixIndex/Wikifunctions:Requests for deletions/Archive/|stripprefix=1}}}}
= Requests for deletion =
== [[Z13148]] ==
Can we delete this one, now that we have [[Z19460]]? --[[User:Ameisenigel|Ameisenigel]] ([[User talk:Ameisenigel|talk]]) 19:52, 26 July 2026 (UTC)
:@[[User:Ameisenigel|Ameisenigel]]: They're for different Types, and the latter is collared. @[[User:FenrisAureus|FenrisAureus]] created it, and @[[User:99of9|99of9]] [https://www.wikifunctions.org/wiki/Z13148?diff=prev&oldid=108053 added "(!)"] presumably to tell people not to use it, both in 2024; perhaps they might have views. [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 08:40, 27 July 2026 (UTC)
::the implementation of [[Z19460]] is (i believe) of xorshift128 while [[Z13148]] is of xorshift32 and xorshift64. I suggest merging and renaming [[Z19460]]'s current implementation to eliminate confusion. — [[User:FenrisAureus|<span style="color:#f18">'''''FenrisAureus '''''▲ <span style="font-size:75%">'''''(she/they)'''''</span></span>]] ([[User talk:FenrisAureus|<span style="color:#060">talk</span>]]) 10:04, 2 August 2026 (UTC)
== [[Z19488]] ==
Unused string. --[[User:Ameisenigel|Ameisenigel]] ([[User talk:Ameisenigel|talk]]) 22:21, 29 July 2026 (UTC)
:cc @[[User:Feeglgeef|Feeglgeef]] <span style="font-family:monospace;font-weight:bold">[[User:Bunnypranav|<span style="color:#63b3ed">~/Bunny</span><span style="color:#2c5282">pranav</span>]]:<[[User talk:Bunnypranav|<span style="color:#63b3ed">ping</span>]]></span> 12:41, 30 July 2026 (UTC)
== [[Z38360]] ==
Unused [[User:EatingCarBatteries|EatingCarBatteries]] ([[User talk:EatingCarBatteries|talk]]) 06:26, 7 August 2026 (UTC)
db0f1788hzqfpa4mhed7880f2pmv91x
Wikifunctions:FAQ/de
4
3396
296912
234239
2026-08-06T18:01:55Z
FuzzyBot
207
Updating to match new version of source page
296912
wikitext
text/x-wiki
<languages/>
{{shortcut|[[WF:FAQ]]}}
Dies ist eine spezielle Seite für häufig gestellte Fragen zu Wikifunctions. Bitte stelle deine eigene Frage auf der [[Wikifunctions talk:FAQ|Diskussionsseite]], wenn deine Frage hier nicht aufgeführt ist!
Bitte sieh dir unser [[:m:Special:MyLanguage/Abstract Wikipedia/FAQ|FAQ auf Meta]] für allgemeinere Fragen zu Wikifunctions und der Abstrakten Wikipedia an.
__TOC__
<span id="Introduction"></span>
== Einführung ==
<span id="What_is_this_project_about?"></span>
=== Worum geht es bei diesem Projekt? ===
Wikifunctions ist ein neues Wikimedia-Projekt, das einen Katalog aller Arten von Funktionen bereitstellt, die jeder aufrufen, schreiben, verwalten und nutzen kann. Es stellt auch die zugrunde liegende Technologie bereit, die schließlich die Übersetzung sprachunabhängiger Artikel aus der abstrakten Wikipedia in die Sprache jeder Wikipedia ermöglichen wird. Dies ermöglicht es jedem, Beiträge in seiner bevorzugten Sprache zu leisten und Artikel in dieser Sprache zu lesen.
<span id="What_is_a_function?"></span>
=== Was ist eine Funktion? ===
Funktionen sind eine Form von Wissen, die Fragen beantworten kann, beispielsweise wie viele Tage zwischen zwei Daten vergangen sind oder wie groß die Entfernung zwischen zwei Städten ist. Kompliziertere Funktionen können kompliziertere Fragen beantworten, etwa das Volumen einer dreidimensionalen Form, den Abstand zwischen Mars und Venus an einem bestimmten Datum oder ob zwei Arten gleichzeitig lebten.
Wir nutzen Funktionen bereits bei vielen Arten von Wissensabfragen, beispielsweise beim Stellen einer Frage an eine Suchmaschine. Die Vorlagen, wie etwa [[:w:en:Template:Convert|Vorlage:Einheitenumrechnung]] und [[:w:en:Template:Age|Vorlage:Alter]] in der englischen Wikipedia, sind auch Beispiele für Funktionen, die bereits in vielen Wikipedias verwendet werden, geschrieben in Wikitext und Lua und manuell in jedes Wiki kopiert, wo es benötigt wird.
<span id="What_is_an_implementation?"></span>
=== Was ist eine Implementierung? ===
Eine Implementierung ist eine bestimmte Art und Weise, eine Funktion auszuführen. Eine Implementierung ist ein Rezept, das die Schritte auflistet, die zum Ausführen der Funktion erforderlich sind. Dabei kann es sich um einen Codeabschnitt in einer Programmiersprache oder um eine Kombination von Aufrufen anderer Funktionen handeln. Eine Funktion kann viele Implementierungen haben, die alle gleichwertig sein sollten.
<span id="What_is_a_test?"></span>
=== Was ist ein Test? ===
Ein Test ist eine Möglichkeit, festzustellen, ob eine bestimmte Funktion das Richtige tut. Eine Funktion verfügt normalerweise über mehrere Tester, von denen jeder eine Eingabe für die Funktion und die Bedingungen, die die Ausgabe für die gegebene Eingabe erfüllen muss, angibt.
Tester für eine „Groß-/Kleinschreibung“-Funktion könnten beispielsweise Folgendes umfassen: „<span dir="ltr" lang="en">abc</span>“ sollte zu „<span dir="ltr" lang="en">Abc</span>“ werden; „<span dir="ltr" lang="en">war and peace</span>“ sollte zu „<span dir="ltr" lang="en">War and Peace</span>“ werden; „<span dir="ltr" lang="ru">война и мир</span>“ sollte zu „<span dir="ltr" lang="ru">Война и мир</span>“ werden; und „<span dir="ltr" lang="en">123</span>“ sollte „<span dir="ltr" lang="en">123</span>“ bleiben.
<span id="Which_features_are_available_now,_which_will_be_soon_available,_and_which_are_further_away?"></span>
=== Welche Funktionen sind jetzt verfügbar, welche werden bald verfügbar sein und welche sind in weiter Ferne? ===
* Beim Start:
** Wir haben die Möglichkeit, Funktionen zu haben, die mit Zeichenketten und Booleschen Werten arbeiten.
** Wikifunctions wird von Anfang an vollständig internationalisiert sein. Es kann in jeder Sprache verwendet werden.
* [[Wikifunctions:Status|Laufende Entwicklung]]:
** Generische Typen und generische Funktionen werden nicht vollständig unterstützt.
** Das Hinzufügen von Typen ist vorerst auf das Entwicklungsteam beschränkt. Zukünftig kann die Gemeinschaft weitere Typen hinzufügen. Es wird in Zukunft noch viel zu tun geben, um das Verhalten der Typen deutlich reibungsloser zu gestalten.
*** Ein besonders interessanter Typ werden Binärdaten und insbesondere Dateien sein.
** Wir unterstützen derzeit zwei Programmiersprachen für Implementierungen: JavaScript und Python. In Zukunft wollen wir noch viele weitere unterstützen.
** Es ist derzeit ''nicht'' möglich, andere Funktionen aus Implementierungen aufzurufen, die in einer Programmiersprache geschrieben sind. Dies ist derzeit nur für Kompositionen verfügbar.
* In der Zukunft:
** Es wird möglich sein, Wikifunctions-Funktionen aus anderen Wikimedia-Projekten aufzurufen und deren Ergebnisse in die Ausgabe der Seite zu integrieren.
** Es wird möglich sein, Daten aus Wikidata in Funktionen zu verwenden.
** Es wird möglich sein, Datensätze aus dem Daten-Namensraum auf Commons aufzurufen.
<span id="How_is_Wikifunctions_multilingual?"></span>
=== Wie ist Wikifunctions mehrsprachig? ===
{{main|Special:MyLanguage/Help:Multilingual}}
Wikifunctions und die Abstrakte Wikipedia sind auf eine Reihe unterschiedlicher Arten mehrsprachig, die sich nicht beeinflussen:
* '''Wikifunctions ist in Bezug auf seinen Inhalt und seine Benutzeroberfläche mehrsprachig.''' Benutzer können Funktionen auf Wikifunctions in jeder natürlichen Sprache lesen und aufrufen. Hier ist die Funktion “verbinde” auf [https://www.wikifunctions.org/view/en/Z10000 Englisch], [https://www.wikifunctions.org/view/pl/Z10000 Polnisch] und [https://www.wikifunctions.org/view/he/Z10000 Hebräisch]. Außerdem ist sie in vielen weiteren Sprachen verfügbar.
* '''Beitragende können Wikifunctions in ihrer eigenen Sprache bearbeiten und verbessern.''' Selbst Implementierungen können in der Sprache des Beitragenden bearbeitet werden. Beispielsweise kann die Komposition der Funktion “und” auf [https://www.wikifunctions.org/wiki/Z11223?action=edit&uselang=de Deutsch], [https://www.wikifunctions.org/wiki/Z11223?action=edit&uselang=en Englisch] oder in über 300 Sprachen bearbeitet werden.
* '''Wikifunctions-Funktionen können genutzt werden, um Ergebnisse für jede natürliche Sprache zu erstellen.''' Die Community erstellt eine wachsende Anzahl von Funktionen zur Unterstützung der Generierung von Text in vielen natürlichen Sprachen. Wir haben Funktionen für [[Wikifunctions:Catalogue#Breton|Bretonisch]], [[Wikifunctions:Catalogue#Rohingya|Rohingya]], [[Wikifunctions:Catalogue#English|Englisch]] und viele andere Sprachen.
* '''Funktionen auf Wikifunctions können in unterschiedlichen Programmiersprachen implementiert werden.''' Beispielsweise ist die Funktion [[Z10000|verbinde]] sowohl in [[Z10005|JavaScript]] als auch in [[Z10004|Python]] implementiert.
<span id="Which_programming_languages_does_Wikifunctions_currently_support?_Which_programming_languages_will_be_supported_in_the_future?"></span>
=== Welche Programmiersprachen unterstützt Wikifunctions derzeit? Welche Programmiersprachen werden in Zukunft unterstützt? ===
{{main|WF:programming languages}}
Derzeit unterstützt Wikifunctions Implementierungen in JavaScript und Python. Wir planen, in Zukunft die Unterstützung weiterer Programmiersprachen zu ergänzen. Wir hoffen, 2025 mindestens eine weitere Programmiersprache hinzuzufügen (haben aber noch nicht entschieden welche).
<span id="How_will_Wikifunctions_be_integrated_into_other_projects?"></span>
=== Wie wird Wikifunctions in andere Projekte integriert werden? ===
Wikifunctions ist der erste Schritt zum Aufbau der Abstrakten Wikipedia. Unser kurzfristiger Fokus wird darauf liegen, die Gemeinschaft zu unterstützen und auf der Grundlage von Rückmeldungen Verbesserungen vorzunehmen. Gleichzeitig werden wir mit der Integration in Wikipedia und Wikidata beginnen, was breitere reale Anwendungen ermöglichen und uns der Vision der Abstrakten Wikipedia näher bringen wird.
Beitragende werden Funktionen, die auf Wikifunctions gespeichert sind, aus ihren Wikis aufrufen können. Das Ergebnis des Funktionsaufrufs wird den Lesern des Wikis angezeigt. Dies kann beispielsweise genutzt werden, um das Alter einer Person oder die Bevölkerungsdichte anhand der Daten zur Einwohnerzahl und Größe des Gebiets aus Wikidata zu berechnen oder einen Graphen zu zeichnen und diesen in einen bestimmten Artikel einzubinden.
Eine weitere Option zur Integration von Wikifunctions wird es sein, eine interaktive Benutzeroberfläche für den Abruf von Funktionen in ihrem Wiki zu integrieren. Dies kann beispielsweise genutzt werden, um in einem Wikipedia-Artikel dynamisch das Ergebnis einer physikalischen Gleichung basierend auf Parametern des Lesers zu berechnen oder um mathematische Funktionen darzustellen und mit ihnen zu interagieren, etc.
<span id="What_Wikifunctions_is_not"></span>
=== Was Wikifunctions nicht ist ===
Siehe bitte [[Special:MyLanguage/Wikifunctions:What Wikifunctions is not|Wikifunctions:Was Wikifunctions nicht ist]] für weitere Informationen dazu.
<span id="What_license_will_the_functions_and_derived_content_be_under?"></span>
=== Unter welcher Lizenz werden Funktionen und von ihnen abgeleitete Inhalte stehen? ===
Gemäß der Diskussion [[:m:Special:MyLanguage/Abstract Wikipedia/Licensing discussion|auf Meta im November und Dezember 2021]] werden alle Beiträge zu Wikifunctions und den umfassenderen Projekten der Abstrakten Wikipedia unter freien Lizenzen veröffentlicht. Konkret:
* [[Special:MyLanguage/Wikifunctions:Glossary#Content|Textinhalte]] auf Wikifunctions werden unter [[:de:Creative-Commons-Lizenz|CC BY-SA 4.0]] veröffentlicht.
* [[Special:MyLanguage/Wikifunctions:Glossary#Function|Funktionssignaturen]] und andere strukturierte Inhalte auf Wikifunctions werden unter [[:de:CC0|CC 0]] veröffentlicht.
* [[Special:MyLanguage/Wikifunctions:Glossary#Implementation|Code-Implementierungen]] in Wikifunctions werden unter der [[:de:Apache-Lizenz|Lizenz Apache 2]] veröffentlicht.
* [[Special:MyLanguage/Wikifunctions:Glossary#Content|Abstrakter Inhalt]] für die Abstrakte Wikipedia wird unter CC BY-SA 4.0 veröffentlicht.
Es gibt noch einige Punkte, die in Zukunft geklärt werden müssen, beispielsweise die Lizenzierung der generierten Inhalte aus den abstrakten Inhalten. Wir planen, mit der Rechtsabteilung ein umfassenderes Dokument darüber zu verfassen, wie Menschen Code aus Wikifunctions unter Einhaltung der Lizenz so problemlos wie möglich wiederverwenden können.
<span id="Contributing"></span>
== Beitragen ==
<span id="I'm_new_here._What_is_there_for_me_to_do_and_how_can_I_help?"></span>
=== Ich bin neu hier. Was kann ich tun und wie kann ich helfen? ===
Willkommen! Wir freuen uns sehr, dass du da bist! Es gibt viele Möglichkeiten, zu Wikifunctions beizutragen, von der Erstellung neuer Funktionen bis hin zur Verbesserung und Übersetzung der Dokumentation. Wenn du nach Möglichkeiten suchst, dich zu engagieren, empfehlen wir dir, abhängig von deinem Komfortniveau, vielleicht eine neue Funktion zu einem Thema vorzuschlagen, das dich interessiert. Oder du erstellst sogar eine solche Funktion. Stelle einige Tests bereit. Versuche dich an einer Implementierung. Hilf bei Übersetzungen. Lies und verbessere unsere Dokumentation. Hilf bei der Organisation der Gemeinschaft.
<span id="How_do_I_create_a_new_function,_implementation,_or_test?"></span>
=== Wie erstelle ich eine neue Funktion, Implementierung oder einen Test? ===
Um zu sehen, wie man eine neue Funktion, Implementierung oder einen Test erstellt, siehe [[Special:MyLanguage/Wikifunctions:Introduction|Wikifunctions:Einführung]].
Für weitere Details zur Erstellung einer Implementierung siehe [[Special:MyLanguage/Wikifunctions:How to create implementations|Wikifunctions:Wie man Implementierungen erstellt]].
<span id="What_should_I_edit_first?"></span>
=== Was sollte ich als erstes bearbeiten? ===
Wenn du in mehreren Sprachen schreiben kannst, suche auf der Seite [[Special:ListMissingLabels]] nach Funktionen, für die es in deinen Sprachen noch keine Bezeichnungen und Beschreibungen gibt, und hilf dabei, sie hinzuzufügen.
Wenn du Interesse an einer Domain hast, die Funktionen in Wikifunctions bieten könnte, dies aber noch nicht tut, oder wenn du weitere Ideen für Funktionen hast, gehe zur Seite für [[Wikifunctions:Suggest a new function|Vorschläge für neue Funktionen]] und präsentiere deine Ideen.
Wenn du JavaScript oder Python programmierst, möchtest du vielleicht nach Funktionen suchen, die noch keine Implementierungen in JavaScript oder Python haben, und versuchen, diese zu schreiben.
<span id="Where_can_I_go_for_help?"></span>
=== Wo kann ich Hilfe erhalten? ===
Deine erste Anlaufstelle sollte das [[Special:MyLanguage/Help:Contents|Hilfeportal]] sein, wo du die gesamte Dokumentation zur Verwendung und Bearbeitung von Wikifunctions findest. Wenn du immer noch nicht weiterkommst, hinterlasse eine Nachricht in der [[Wikifunctions:Project chat|Projektdiskussion]] und jemand wird deine Frage beantworten.
<span id="How_do_we_sort_or_categorize_functions?"></span>
=== Wie sortieren oder kategorisieren wir Funktionen? ===
{{Tracked|T285424}}
Der beste Weg, Funktionen zu sortieren oder zu kategorisieren, besteht derzeit darin, die [[Special:MyLanguage/Wikifunctions:Catalogue|Seiten im Wikifunctions-Namensraum]] manuell zu durchsuchen. Eine andere Möglichkeit wäre die Diskussionsseite der jeweiligen Funktion. Wir werden diese Bemühungen beobachten und mit der Gemeinschaft diskutieren, welche Änderungen am System für diese Aufgabe hilfreich wären.
<div lang="en" dir="ltr" class="mw-content-ltr">
=== How can I setup the software locally to hack on it? ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
See [[Special:MyLanguage/Wikifunctions:Hacking on the evaluator and orchestrator|Hacking on the evaluator and orchestrator]].
</div>
[[Category:FAQ| {{#translation:}}]]
dqxwza5a8ed4szbbayq7ojwsxmfrl5y
297037
296912
2026-08-06T18:07:46Z
Ameisenigel
44
Created page with "=== Wie kann ich die Software lokal einrichten, um daran zu arbeiten? ==="
297037
wikitext
text/x-wiki
<languages/>
{{shortcut|[[WF:FAQ]]}}
Dies ist eine spezielle Seite für häufig gestellte Fragen zu Wikifunctions. Bitte stelle deine eigene Frage auf der [[Wikifunctions talk:FAQ|Diskussionsseite]], wenn deine Frage hier nicht aufgeführt ist!
Bitte sieh dir unser [[:m:Special:MyLanguage/Abstract Wikipedia/FAQ|FAQ auf Meta]] für allgemeinere Fragen zu Wikifunctions und der Abstrakten Wikipedia an.
__TOC__
<span id="Introduction"></span>
== Einführung ==
<span id="What_is_this_project_about?"></span>
=== Worum geht es bei diesem Projekt? ===
Wikifunctions ist ein neues Wikimedia-Projekt, das einen Katalog aller Arten von Funktionen bereitstellt, die jeder aufrufen, schreiben, verwalten und nutzen kann. Es stellt auch die zugrunde liegende Technologie bereit, die schließlich die Übersetzung sprachunabhängiger Artikel aus der abstrakten Wikipedia in die Sprache jeder Wikipedia ermöglichen wird. Dies ermöglicht es jedem, Beiträge in seiner bevorzugten Sprache zu leisten und Artikel in dieser Sprache zu lesen.
<span id="What_is_a_function?"></span>
=== Was ist eine Funktion? ===
Funktionen sind eine Form von Wissen, die Fragen beantworten kann, beispielsweise wie viele Tage zwischen zwei Daten vergangen sind oder wie groß die Entfernung zwischen zwei Städten ist. Kompliziertere Funktionen können kompliziertere Fragen beantworten, etwa das Volumen einer dreidimensionalen Form, den Abstand zwischen Mars und Venus an einem bestimmten Datum oder ob zwei Arten gleichzeitig lebten.
Wir nutzen Funktionen bereits bei vielen Arten von Wissensabfragen, beispielsweise beim Stellen einer Frage an eine Suchmaschine. Die Vorlagen, wie etwa [[:w:en:Template:Convert|Vorlage:Einheitenumrechnung]] und [[:w:en:Template:Age|Vorlage:Alter]] in der englischen Wikipedia, sind auch Beispiele für Funktionen, die bereits in vielen Wikipedias verwendet werden, geschrieben in Wikitext und Lua und manuell in jedes Wiki kopiert, wo es benötigt wird.
<span id="What_is_an_implementation?"></span>
=== Was ist eine Implementierung? ===
Eine Implementierung ist eine bestimmte Art und Weise, eine Funktion auszuführen. Eine Implementierung ist ein Rezept, das die Schritte auflistet, die zum Ausführen der Funktion erforderlich sind. Dabei kann es sich um einen Codeabschnitt in einer Programmiersprache oder um eine Kombination von Aufrufen anderer Funktionen handeln. Eine Funktion kann viele Implementierungen haben, die alle gleichwertig sein sollten.
<span id="What_is_a_test?"></span>
=== Was ist ein Test? ===
Ein Test ist eine Möglichkeit, festzustellen, ob eine bestimmte Funktion das Richtige tut. Eine Funktion verfügt normalerweise über mehrere Tester, von denen jeder eine Eingabe für die Funktion und die Bedingungen, die die Ausgabe für die gegebene Eingabe erfüllen muss, angibt.
Tester für eine „Groß-/Kleinschreibung“-Funktion könnten beispielsweise Folgendes umfassen: „<span dir="ltr" lang="en">abc</span>“ sollte zu „<span dir="ltr" lang="en">Abc</span>“ werden; „<span dir="ltr" lang="en">war and peace</span>“ sollte zu „<span dir="ltr" lang="en">War and Peace</span>“ werden; „<span dir="ltr" lang="ru">война и мир</span>“ sollte zu „<span dir="ltr" lang="ru">Война и мир</span>“ werden; und „<span dir="ltr" lang="en">123</span>“ sollte „<span dir="ltr" lang="en">123</span>“ bleiben.
<span id="Which_features_are_available_now,_which_will_be_soon_available,_and_which_are_further_away?"></span>
=== Welche Funktionen sind jetzt verfügbar, welche werden bald verfügbar sein und welche sind in weiter Ferne? ===
* Beim Start:
** Wir haben die Möglichkeit, Funktionen zu haben, die mit Zeichenketten und Booleschen Werten arbeiten.
** Wikifunctions wird von Anfang an vollständig internationalisiert sein. Es kann in jeder Sprache verwendet werden.
* [[Wikifunctions:Status|Laufende Entwicklung]]:
** Generische Typen und generische Funktionen werden nicht vollständig unterstützt.
** Das Hinzufügen von Typen ist vorerst auf das Entwicklungsteam beschränkt. Zukünftig kann die Gemeinschaft weitere Typen hinzufügen. Es wird in Zukunft noch viel zu tun geben, um das Verhalten der Typen deutlich reibungsloser zu gestalten.
*** Ein besonders interessanter Typ werden Binärdaten und insbesondere Dateien sein.
** Wir unterstützen derzeit zwei Programmiersprachen für Implementierungen: JavaScript und Python. In Zukunft wollen wir noch viele weitere unterstützen.
** Es ist derzeit ''nicht'' möglich, andere Funktionen aus Implementierungen aufzurufen, die in einer Programmiersprache geschrieben sind. Dies ist derzeit nur für Kompositionen verfügbar.
* In der Zukunft:
** Es wird möglich sein, Wikifunctions-Funktionen aus anderen Wikimedia-Projekten aufzurufen und deren Ergebnisse in die Ausgabe der Seite zu integrieren.
** Es wird möglich sein, Daten aus Wikidata in Funktionen zu verwenden.
** Es wird möglich sein, Datensätze aus dem Daten-Namensraum auf Commons aufzurufen.
<span id="How_is_Wikifunctions_multilingual?"></span>
=== Wie ist Wikifunctions mehrsprachig? ===
{{main|Special:MyLanguage/Help:Multilingual}}
Wikifunctions und die Abstrakte Wikipedia sind auf eine Reihe unterschiedlicher Arten mehrsprachig, die sich nicht beeinflussen:
* '''Wikifunctions ist in Bezug auf seinen Inhalt und seine Benutzeroberfläche mehrsprachig.''' Benutzer können Funktionen auf Wikifunctions in jeder natürlichen Sprache lesen und aufrufen. Hier ist die Funktion “verbinde” auf [https://www.wikifunctions.org/view/en/Z10000 Englisch], [https://www.wikifunctions.org/view/pl/Z10000 Polnisch] und [https://www.wikifunctions.org/view/he/Z10000 Hebräisch]. Außerdem ist sie in vielen weiteren Sprachen verfügbar.
* '''Beitragende können Wikifunctions in ihrer eigenen Sprache bearbeiten und verbessern.''' Selbst Implementierungen können in der Sprache des Beitragenden bearbeitet werden. Beispielsweise kann die Komposition der Funktion “und” auf [https://www.wikifunctions.org/wiki/Z11223?action=edit&uselang=de Deutsch], [https://www.wikifunctions.org/wiki/Z11223?action=edit&uselang=en Englisch] oder in über 300 Sprachen bearbeitet werden.
* '''Wikifunctions-Funktionen können genutzt werden, um Ergebnisse für jede natürliche Sprache zu erstellen.''' Die Community erstellt eine wachsende Anzahl von Funktionen zur Unterstützung der Generierung von Text in vielen natürlichen Sprachen. Wir haben Funktionen für [[Wikifunctions:Catalogue#Breton|Bretonisch]], [[Wikifunctions:Catalogue#Rohingya|Rohingya]], [[Wikifunctions:Catalogue#English|Englisch]] und viele andere Sprachen.
* '''Funktionen auf Wikifunctions können in unterschiedlichen Programmiersprachen implementiert werden.''' Beispielsweise ist die Funktion [[Z10000|verbinde]] sowohl in [[Z10005|JavaScript]] als auch in [[Z10004|Python]] implementiert.
<span id="Which_programming_languages_does_Wikifunctions_currently_support?_Which_programming_languages_will_be_supported_in_the_future?"></span>
=== Welche Programmiersprachen unterstützt Wikifunctions derzeit? Welche Programmiersprachen werden in Zukunft unterstützt? ===
{{main|WF:programming languages}}
Derzeit unterstützt Wikifunctions Implementierungen in JavaScript und Python. Wir planen, in Zukunft die Unterstützung weiterer Programmiersprachen zu ergänzen. Wir hoffen, 2025 mindestens eine weitere Programmiersprache hinzuzufügen (haben aber noch nicht entschieden welche).
<span id="How_will_Wikifunctions_be_integrated_into_other_projects?"></span>
=== Wie wird Wikifunctions in andere Projekte integriert werden? ===
Wikifunctions ist der erste Schritt zum Aufbau der Abstrakten Wikipedia. Unser kurzfristiger Fokus wird darauf liegen, die Gemeinschaft zu unterstützen und auf der Grundlage von Rückmeldungen Verbesserungen vorzunehmen. Gleichzeitig werden wir mit der Integration in Wikipedia und Wikidata beginnen, was breitere reale Anwendungen ermöglichen und uns der Vision der Abstrakten Wikipedia näher bringen wird.
Beitragende werden Funktionen, die auf Wikifunctions gespeichert sind, aus ihren Wikis aufrufen können. Das Ergebnis des Funktionsaufrufs wird den Lesern des Wikis angezeigt. Dies kann beispielsweise genutzt werden, um das Alter einer Person oder die Bevölkerungsdichte anhand der Daten zur Einwohnerzahl und Größe des Gebiets aus Wikidata zu berechnen oder einen Graphen zu zeichnen und diesen in einen bestimmten Artikel einzubinden.
Eine weitere Option zur Integration von Wikifunctions wird es sein, eine interaktive Benutzeroberfläche für den Abruf von Funktionen in ihrem Wiki zu integrieren. Dies kann beispielsweise genutzt werden, um in einem Wikipedia-Artikel dynamisch das Ergebnis einer physikalischen Gleichung basierend auf Parametern des Lesers zu berechnen oder um mathematische Funktionen darzustellen und mit ihnen zu interagieren, etc.
<span id="What_Wikifunctions_is_not"></span>
=== Was Wikifunctions nicht ist ===
Siehe bitte [[Special:MyLanguage/Wikifunctions:What Wikifunctions is not|Wikifunctions:Was Wikifunctions nicht ist]] für weitere Informationen dazu.
<span id="What_license_will_the_functions_and_derived_content_be_under?"></span>
=== Unter welcher Lizenz werden Funktionen und von ihnen abgeleitete Inhalte stehen? ===
Gemäß der Diskussion [[:m:Special:MyLanguage/Abstract Wikipedia/Licensing discussion|auf Meta im November und Dezember 2021]] werden alle Beiträge zu Wikifunctions und den umfassenderen Projekten der Abstrakten Wikipedia unter freien Lizenzen veröffentlicht. Konkret:
* [[Special:MyLanguage/Wikifunctions:Glossary#Content|Textinhalte]] auf Wikifunctions werden unter [[:de:Creative-Commons-Lizenz|CC BY-SA 4.0]] veröffentlicht.
* [[Special:MyLanguage/Wikifunctions:Glossary#Function|Funktionssignaturen]] und andere strukturierte Inhalte auf Wikifunctions werden unter [[:de:CC0|CC 0]] veröffentlicht.
* [[Special:MyLanguage/Wikifunctions:Glossary#Implementation|Code-Implementierungen]] in Wikifunctions werden unter der [[:de:Apache-Lizenz|Lizenz Apache 2]] veröffentlicht.
* [[Special:MyLanguage/Wikifunctions:Glossary#Content|Abstrakter Inhalt]] für die Abstrakte Wikipedia wird unter CC BY-SA 4.0 veröffentlicht.
Es gibt noch einige Punkte, die in Zukunft geklärt werden müssen, beispielsweise die Lizenzierung der generierten Inhalte aus den abstrakten Inhalten. Wir planen, mit der Rechtsabteilung ein umfassenderes Dokument darüber zu verfassen, wie Menschen Code aus Wikifunctions unter Einhaltung der Lizenz so problemlos wie möglich wiederverwenden können.
<span id="Contributing"></span>
== Beitragen ==
<span id="I'm_new_here._What_is_there_for_me_to_do_and_how_can_I_help?"></span>
=== Ich bin neu hier. Was kann ich tun und wie kann ich helfen? ===
Willkommen! Wir freuen uns sehr, dass du da bist! Es gibt viele Möglichkeiten, zu Wikifunctions beizutragen, von der Erstellung neuer Funktionen bis hin zur Verbesserung und Übersetzung der Dokumentation. Wenn du nach Möglichkeiten suchst, dich zu engagieren, empfehlen wir dir, abhängig von deinem Komfortniveau, vielleicht eine neue Funktion zu einem Thema vorzuschlagen, das dich interessiert. Oder du erstellst sogar eine solche Funktion. Stelle einige Tests bereit. Versuche dich an einer Implementierung. Hilf bei Übersetzungen. Lies und verbessere unsere Dokumentation. Hilf bei der Organisation der Gemeinschaft.
<span id="How_do_I_create_a_new_function,_implementation,_or_test?"></span>
=== Wie erstelle ich eine neue Funktion, Implementierung oder einen Test? ===
Um zu sehen, wie man eine neue Funktion, Implementierung oder einen Test erstellt, siehe [[Special:MyLanguage/Wikifunctions:Introduction|Wikifunctions:Einführung]].
Für weitere Details zur Erstellung einer Implementierung siehe [[Special:MyLanguage/Wikifunctions:How to create implementations|Wikifunctions:Wie man Implementierungen erstellt]].
<span id="What_should_I_edit_first?"></span>
=== Was sollte ich als erstes bearbeiten? ===
Wenn du in mehreren Sprachen schreiben kannst, suche auf der Seite [[Special:ListMissingLabels]] nach Funktionen, für die es in deinen Sprachen noch keine Bezeichnungen und Beschreibungen gibt, und hilf dabei, sie hinzuzufügen.
Wenn du Interesse an einer Domain hast, die Funktionen in Wikifunctions bieten könnte, dies aber noch nicht tut, oder wenn du weitere Ideen für Funktionen hast, gehe zur Seite für [[Wikifunctions:Suggest a new function|Vorschläge für neue Funktionen]] und präsentiere deine Ideen.
Wenn du JavaScript oder Python programmierst, möchtest du vielleicht nach Funktionen suchen, die noch keine Implementierungen in JavaScript oder Python haben, und versuchen, diese zu schreiben.
<span id="Where_can_I_go_for_help?"></span>
=== Wo kann ich Hilfe erhalten? ===
Deine erste Anlaufstelle sollte das [[Special:MyLanguage/Help:Contents|Hilfeportal]] sein, wo du die gesamte Dokumentation zur Verwendung und Bearbeitung von Wikifunctions findest. Wenn du immer noch nicht weiterkommst, hinterlasse eine Nachricht in der [[Wikifunctions:Project chat|Projektdiskussion]] und jemand wird deine Frage beantworten.
<span id="How_do_we_sort_or_categorize_functions?"></span>
=== Wie sortieren oder kategorisieren wir Funktionen? ===
{{Tracked|T285424}}
Der beste Weg, Funktionen zu sortieren oder zu kategorisieren, besteht derzeit darin, die [[Special:MyLanguage/Wikifunctions:Catalogue|Seiten im Wikifunctions-Namensraum]] manuell zu durchsuchen. Eine andere Möglichkeit wäre die Diskussionsseite der jeweiligen Funktion. Wir werden diese Bemühungen beobachten und mit der Gemeinschaft diskutieren, welche Änderungen am System für diese Aufgabe hilfreich wären.
<span id="How_can_I_setup_the_software_locally_to_hack_on_it?"></span>
=== Wie kann ich die Software lokal einrichten, um daran zu arbeiten? ===
<div lang="en" dir="ltr" class="mw-content-ltr">
See [[Special:MyLanguage/Wikifunctions:Hacking on the evaluator and orchestrator|Hacking on the evaluator and orchestrator]].
</div>
[[Category:FAQ| {{#translation:}}]]
jfh578jzdo9d3sgbvcnlaicd4mbmbyo
297039
297037
2026-08-06T18:08:19Z
Ameisenigel
44
Created page with "Siehe [[$1|Arbeiten am Auswerter und Orchestrierer]]."
297039
wikitext
text/x-wiki
<languages/>
{{shortcut|[[WF:FAQ]]}}
Dies ist eine spezielle Seite für häufig gestellte Fragen zu Wikifunctions. Bitte stelle deine eigene Frage auf der [[Wikifunctions talk:FAQ|Diskussionsseite]], wenn deine Frage hier nicht aufgeführt ist!
Bitte sieh dir unser [[:m:Special:MyLanguage/Abstract Wikipedia/FAQ|FAQ auf Meta]] für allgemeinere Fragen zu Wikifunctions und der Abstrakten Wikipedia an.
__TOC__
<span id="Introduction"></span>
== Einführung ==
<span id="What_is_this_project_about?"></span>
=== Worum geht es bei diesem Projekt? ===
Wikifunctions ist ein neues Wikimedia-Projekt, das einen Katalog aller Arten von Funktionen bereitstellt, die jeder aufrufen, schreiben, verwalten und nutzen kann. Es stellt auch die zugrunde liegende Technologie bereit, die schließlich die Übersetzung sprachunabhängiger Artikel aus der abstrakten Wikipedia in die Sprache jeder Wikipedia ermöglichen wird. Dies ermöglicht es jedem, Beiträge in seiner bevorzugten Sprache zu leisten und Artikel in dieser Sprache zu lesen.
<span id="What_is_a_function?"></span>
=== Was ist eine Funktion? ===
Funktionen sind eine Form von Wissen, die Fragen beantworten kann, beispielsweise wie viele Tage zwischen zwei Daten vergangen sind oder wie groß die Entfernung zwischen zwei Städten ist. Kompliziertere Funktionen können kompliziertere Fragen beantworten, etwa das Volumen einer dreidimensionalen Form, den Abstand zwischen Mars und Venus an einem bestimmten Datum oder ob zwei Arten gleichzeitig lebten.
Wir nutzen Funktionen bereits bei vielen Arten von Wissensabfragen, beispielsweise beim Stellen einer Frage an eine Suchmaschine. Die Vorlagen, wie etwa [[:w:en:Template:Convert|Vorlage:Einheitenumrechnung]] und [[:w:en:Template:Age|Vorlage:Alter]] in der englischen Wikipedia, sind auch Beispiele für Funktionen, die bereits in vielen Wikipedias verwendet werden, geschrieben in Wikitext und Lua und manuell in jedes Wiki kopiert, wo es benötigt wird.
<span id="What_is_an_implementation?"></span>
=== Was ist eine Implementierung? ===
Eine Implementierung ist eine bestimmte Art und Weise, eine Funktion auszuführen. Eine Implementierung ist ein Rezept, das die Schritte auflistet, die zum Ausführen der Funktion erforderlich sind. Dabei kann es sich um einen Codeabschnitt in einer Programmiersprache oder um eine Kombination von Aufrufen anderer Funktionen handeln. Eine Funktion kann viele Implementierungen haben, die alle gleichwertig sein sollten.
<span id="What_is_a_test?"></span>
=== Was ist ein Test? ===
Ein Test ist eine Möglichkeit, festzustellen, ob eine bestimmte Funktion das Richtige tut. Eine Funktion verfügt normalerweise über mehrere Tester, von denen jeder eine Eingabe für die Funktion und die Bedingungen, die die Ausgabe für die gegebene Eingabe erfüllen muss, angibt.
Tester für eine „Groß-/Kleinschreibung“-Funktion könnten beispielsweise Folgendes umfassen: „<span dir="ltr" lang="en">abc</span>“ sollte zu „<span dir="ltr" lang="en">Abc</span>“ werden; „<span dir="ltr" lang="en">war and peace</span>“ sollte zu „<span dir="ltr" lang="en">War and Peace</span>“ werden; „<span dir="ltr" lang="ru">война и мир</span>“ sollte zu „<span dir="ltr" lang="ru">Война и мир</span>“ werden; und „<span dir="ltr" lang="en">123</span>“ sollte „<span dir="ltr" lang="en">123</span>“ bleiben.
<span id="Which_features_are_available_now,_which_will_be_soon_available,_and_which_are_further_away?"></span>
=== Welche Funktionen sind jetzt verfügbar, welche werden bald verfügbar sein und welche sind in weiter Ferne? ===
* Beim Start:
** Wir haben die Möglichkeit, Funktionen zu haben, die mit Zeichenketten und Booleschen Werten arbeiten.
** Wikifunctions wird von Anfang an vollständig internationalisiert sein. Es kann in jeder Sprache verwendet werden.
* [[Wikifunctions:Status|Laufende Entwicklung]]:
** Generische Typen und generische Funktionen werden nicht vollständig unterstützt.
** Das Hinzufügen von Typen ist vorerst auf das Entwicklungsteam beschränkt. Zukünftig kann die Gemeinschaft weitere Typen hinzufügen. Es wird in Zukunft noch viel zu tun geben, um das Verhalten der Typen deutlich reibungsloser zu gestalten.
*** Ein besonders interessanter Typ werden Binärdaten und insbesondere Dateien sein.
** Wir unterstützen derzeit zwei Programmiersprachen für Implementierungen: JavaScript und Python. In Zukunft wollen wir noch viele weitere unterstützen.
** Es ist derzeit ''nicht'' möglich, andere Funktionen aus Implementierungen aufzurufen, die in einer Programmiersprache geschrieben sind. Dies ist derzeit nur für Kompositionen verfügbar.
* In der Zukunft:
** Es wird möglich sein, Wikifunctions-Funktionen aus anderen Wikimedia-Projekten aufzurufen und deren Ergebnisse in die Ausgabe der Seite zu integrieren.
** Es wird möglich sein, Daten aus Wikidata in Funktionen zu verwenden.
** Es wird möglich sein, Datensätze aus dem Daten-Namensraum auf Commons aufzurufen.
<span id="How_is_Wikifunctions_multilingual?"></span>
=== Wie ist Wikifunctions mehrsprachig? ===
{{main|Special:MyLanguage/Help:Multilingual}}
Wikifunctions und die Abstrakte Wikipedia sind auf eine Reihe unterschiedlicher Arten mehrsprachig, die sich nicht beeinflussen:
* '''Wikifunctions ist in Bezug auf seinen Inhalt und seine Benutzeroberfläche mehrsprachig.''' Benutzer können Funktionen auf Wikifunctions in jeder natürlichen Sprache lesen und aufrufen. Hier ist die Funktion “verbinde” auf [https://www.wikifunctions.org/view/en/Z10000 Englisch], [https://www.wikifunctions.org/view/pl/Z10000 Polnisch] und [https://www.wikifunctions.org/view/he/Z10000 Hebräisch]. Außerdem ist sie in vielen weiteren Sprachen verfügbar.
* '''Beitragende können Wikifunctions in ihrer eigenen Sprache bearbeiten und verbessern.''' Selbst Implementierungen können in der Sprache des Beitragenden bearbeitet werden. Beispielsweise kann die Komposition der Funktion “und” auf [https://www.wikifunctions.org/wiki/Z11223?action=edit&uselang=de Deutsch], [https://www.wikifunctions.org/wiki/Z11223?action=edit&uselang=en Englisch] oder in über 300 Sprachen bearbeitet werden.
* '''Wikifunctions-Funktionen können genutzt werden, um Ergebnisse für jede natürliche Sprache zu erstellen.''' Die Community erstellt eine wachsende Anzahl von Funktionen zur Unterstützung der Generierung von Text in vielen natürlichen Sprachen. Wir haben Funktionen für [[Wikifunctions:Catalogue#Breton|Bretonisch]], [[Wikifunctions:Catalogue#Rohingya|Rohingya]], [[Wikifunctions:Catalogue#English|Englisch]] und viele andere Sprachen.
* '''Funktionen auf Wikifunctions können in unterschiedlichen Programmiersprachen implementiert werden.''' Beispielsweise ist die Funktion [[Z10000|verbinde]] sowohl in [[Z10005|JavaScript]] als auch in [[Z10004|Python]] implementiert.
<span id="Which_programming_languages_does_Wikifunctions_currently_support?_Which_programming_languages_will_be_supported_in_the_future?"></span>
=== Welche Programmiersprachen unterstützt Wikifunctions derzeit? Welche Programmiersprachen werden in Zukunft unterstützt? ===
{{main|WF:programming languages}}
Derzeit unterstützt Wikifunctions Implementierungen in JavaScript und Python. Wir planen, in Zukunft die Unterstützung weiterer Programmiersprachen zu ergänzen. Wir hoffen, 2025 mindestens eine weitere Programmiersprache hinzuzufügen (haben aber noch nicht entschieden welche).
<span id="How_will_Wikifunctions_be_integrated_into_other_projects?"></span>
=== Wie wird Wikifunctions in andere Projekte integriert werden? ===
Wikifunctions ist der erste Schritt zum Aufbau der Abstrakten Wikipedia. Unser kurzfristiger Fokus wird darauf liegen, die Gemeinschaft zu unterstützen und auf der Grundlage von Rückmeldungen Verbesserungen vorzunehmen. Gleichzeitig werden wir mit der Integration in Wikipedia und Wikidata beginnen, was breitere reale Anwendungen ermöglichen und uns der Vision der Abstrakten Wikipedia näher bringen wird.
Beitragende werden Funktionen, die auf Wikifunctions gespeichert sind, aus ihren Wikis aufrufen können. Das Ergebnis des Funktionsaufrufs wird den Lesern des Wikis angezeigt. Dies kann beispielsweise genutzt werden, um das Alter einer Person oder die Bevölkerungsdichte anhand der Daten zur Einwohnerzahl und Größe des Gebiets aus Wikidata zu berechnen oder einen Graphen zu zeichnen und diesen in einen bestimmten Artikel einzubinden.
Eine weitere Option zur Integration von Wikifunctions wird es sein, eine interaktive Benutzeroberfläche für den Abruf von Funktionen in ihrem Wiki zu integrieren. Dies kann beispielsweise genutzt werden, um in einem Wikipedia-Artikel dynamisch das Ergebnis einer physikalischen Gleichung basierend auf Parametern des Lesers zu berechnen oder um mathematische Funktionen darzustellen und mit ihnen zu interagieren, etc.
<span id="What_Wikifunctions_is_not"></span>
=== Was Wikifunctions nicht ist ===
Siehe bitte [[Special:MyLanguage/Wikifunctions:What Wikifunctions is not|Wikifunctions:Was Wikifunctions nicht ist]] für weitere Informationen dazu.
<span id="What_license_will_the_functions_and_derived_content_be_under?"></span>
=== Unter welcher Lizenz werden Funktionen und von ihnen abgeleitete Inhalte stehen? ===
Gemäß der Diskussion [[:m:Special:MyLanguage/Abstract Wikipedia/Licensing discussion|auf Meta im November und Dezember 2021]] werden alle Beiträge zu Wikifunctions und den umfassenderen Projekten der Abstrakten Wikipedia unter freien Lizenzen veröffentlicht. Konkret:
* [[Special:MyLanguage/Wikifunctions:Glossary#Content|Textinhalte]] auf Wikifunctions werden unter [[:de:Creative-Commons-Lizenz|CC BY-SA 4.0]] veröffentlicht.
* [[Special:MyLanguage/Wikifunctions:Glossary#Function|Funktionssignaturen]] und andere strukturierte Inhalte auf Wikifunctions werden unter [[:de:CC0|CC 0]] veröffentlicht.
* [[Special:MyLanguage/Wikifunctions:Glossary#Implementation|Code-Implementierungen]] in Wikifunctions werden unter der [[:de:Apache-Lizenz|Lizenz Apache 2]] veröffentlicht.
* [[Special:MyLanguage/Wikifunctions:Glossary#Content|Abstrakter Inhalt]] für die Abstrakte Wikipedia wird unter CC BY-SA 4.0 veröffentlicht.
Es gibt noch einige Punkte, die in Zukunft geklärt werden müssen, beispielsweise die Lizenzierung der generierten Inhalte aus den abstrakten Inhalten. Wir planen, mit der Rechtsabteilung ein umfassenderes Dokument darüber zu verfassen, wie Menschen Code aus Wikifunctions unter Einhaltung der Lizenz so problemlos wie möglich wiederverwenden können.
<span id="Contributing"></span>
== Beitragen ==
<span id="I'm_new_here._What_is_there_for_me_to_do_and_how_can_I_help?"></span>
=== Ich bin neu hier. Was kann ich tun und wie kann ich helfen? ===
Willkommen! Wir freuen uns sehr, dass du da bist! Es gibt viele Möglichkeiten, zu Wikifunctions beizutragen, von der Erstellung neuer Funktionen bis hin zur Verbesserung und Übersetzung der Dokumentation. Wenn du nach Möglichkeiten suchst, dich zu engagieren, empfehlen wir dir, abhängig von deinem Komfortniveau, vielleicht eine neue Funktion zu einem Thema vorzuschlagen, das dich interessiert. Oder du erstellst sogar eine solche Funktion. Stelle einige Tests bereit. Versuche dich an einer Implementierung. Hilf bei Übersetzungen. Lies und verbessere unsere Dokumentation. Hilf bei der Organisation der Gemeinschaft.
<span id="How_do_I_create_a_new_function,_implementation,_or_test?"></span>
=== Wie erstelle ich eine neue Funktion, Implementierung oder einen Test? ===
Um zu sehen, wie man eine neue Funktion, Implementierung oder einen Test erstellt, siehe [[Special:MyLanguage/Wikifunctions:Introduction|Wikifunctions:Einführung]].
Für weitere Details zur Erstellung einer Implementierung siehe [[Special:MyLanguage/Wikifunctions:How to create implementations|Wikifunctions:Wie man Implementierungen erstellt]].
<span id="What_should_I_edit_first?"></span>
=== Was sollte ich als erstes bearbeiten? ===
Wenn du in mehreren Sprachen schreiben kannst, suche auf der Seite [[Special:ListMissingLabels]] nach Funktionen, für die es in deinen Sprachen noch keine Bezeichnungen und Beschreibungen gibt, und hilf dabei, sie hinzuzufügen.
Wenn du Interesse an einer Domain hast, die Funktionen in Wikifunctions bieten könnte, dies aber noch nicht tut, oder wenn du weitere Ideen für Funktionen hast, gehe zur Seite für [[Wikifunctions:Suggest a new function|Vorschläge für neue Funktionen]] und präsentiere deine Ideen.
Wenn du JavaScript oder Python programmierst, möchtest du vielleicht nach Funktionen suchen, die noch keine Implementierungen in JavaScript oder Python haben, und versuchen, diese zu schreiben.
<span id="Where_can_I_go_for_help?"></span>
=== Wo kann ich Hilfe erhalten? ===
Deine erste Anlaufstelle sollte das [[Special:MyLanguage/Help:Contents|Hilfeportal]] sein, wo du die gesamte Dokumentation zur Verwendung und Bearbeitung von Wikifunctions findest. Wenn du immer noch nicht weiterkommst, hinterlasse eine Nachricht in der [[Wikifunctions:Project chat|Projektdiskussion]] und jemand wird deine Frage beantworten.
<span id="How_do_we_sort_or_categorize_functions?"></span>
=== Wie sortieren oder kategorisieren wir Funktionen? ===
{{Tracked|T285424}}
Der beste Weg, Funktionen zu sortieren oder zu kategorisieren, besteht derzeit darin, die [[Special:MyLanguage/Wikifunctions:Catalogue|Seiten im Wikifunctions-Namensraum]] manuell zu durchsuchen. Eine andere Möglichkeit wäre die Diskussionsseite der jeweiligen Funktion. Wir werden diese Bemühungen beobachten und mit der Gemeinschaft diskutieren, welche Änderungen am System für diese Aufgabe hilfreich wären.
<span id="How_can_I_setup_the_software_locally_to_hack_on_it?"></span>
=== Wie kann ich die Software lokal einrichten, um daran zu arbeiten? ===
Siehe [[Special:MyLanguage/Wikifunctions:Hacking on the evaluator and orchestrator|Arbeiten am Auswerter und Orchestrierer]].
[[Category:FAQ| {{#translation:}}]]
bj8ctftk0rtd6fq708pyakcperk3vaq
Wikifunctions:FAQ/ja
4
3410
296921
272954
2026-08-06T18:01:59Z
FuzzyBot
207
Updating to match new version of source page
296921
wikitext
text/x-wiki
<languages/>
{{shortcut|[[WF:FAQ]]}}
ここはウィキファンクションズに関するよくある質問の専用ページです。ここに記載されていない質問があれば、[[Wikifunctions talk:FAQ|トークページ]]で質問してください!
<div lang="en" dir="ltr" class="mw-content-ltr">
Also, please consider our [[:m:Special:MyLanguage/Abstract Wikipedia/FAQ|FAQ on Meta]] regarding more general questions about Wikifunctions and Abstract Wikipedia.
</div>
__TOC__
<span id="Introduction"></span>
== はじめに ==
<span id="What_is_this_project_about?"></span>
=== ここはどんなプロジェクトですか? ===
ウィキファンクションズはウィキメディアの新しいプロジェクトで、誰もが呼び出し、作成、維持、利用できるあらゆる種類の関数のカタログを提供しています。また、言語に依存しない記事を抽象ウィキペディアから任意のウィキペディアの言語に翻訳することを最終的に可能にする基盤技術も提供しています。これによって、誰もが自分の好きな言語で記事を投稿したり読んだりすることができます。
<span id="What_is_a_function?"></span>
=== 関数とは何ですか? ===
関数とは、2つの日付の間に何日が経過したか、2つの都市の間の距離といった質問に答えることができる知識の一形態です。より複雑な関数は、3次元形状の体積、特定の日付における火星と金星の間の距離、2つの種が同時に生きていたかどうかなど、より複雑な質問に答えることができます。
<div class="mw-translate-fuzzy">
私たちはすでに、検索エンジンに質問をするなど、多くの種類の知識照会で関数を使用しています。英語版ウィキペディアの[[:w:en:Template:Convert|Template:Convert]]や[[:w:en:Template:Age|Template:Age]]などのテンプレートも、多くのウィキペディアですでに使用されている関数の例であり、ウィキテキストとLuaで記述され、必要な各ウィキに手動でコピーされています。
</div>
<span id="What_is_an_implementation?"></span>
=== 実装とは何ですか? ===
<div class="mw-translate-fuzzy">
実装とは、関数を実行するための決まったやり方です。実装とは、関数の実行に必要な手順をリストしたレシピです。これは、プログラミング言語のコードの一部である場合もあれば、他の関数への呼び出しの組合せである場合もあります。関数には多数の実装があるかもしれませんが、すべて同等である必要があります。
</div>
<span id="What_is_a_test?"></span>
=== テストとは何ですか? ===
テストとは、特定の関数が正しいことを行っているかどうかを判断するやり方です。関数には通常、複数のテスターがあり、それぞれが関数への入力と、指定された入力に対する出力が満たさなければならない条件を指定します。
たとえば、「title case」関数のテスターには、「<span dir="ltr" lang="en">abc</span>」は「<span dir="ltr" lang="en">Abc</span>」になる、「<span dir="ltr" lang="en">war and peace</span>」は「<span dir="ltr" lang="en">War and Peace</span>」になる、「<span dir="ltr" lang="ru">война и мир</span>」は「<span dir="ltr" lang="ru">Война и мир</span>」になる、「<span dir="ltr" lang="en">123</span>」は「<span dir="ltr" lang="en">123</span>」のまま、といった内容が含まれるでしょう。
<span id="Which_features_are_available_now,_which_will_be_soon_available,_and_which_are_further_away?"></span>
=== 機能のうち現在利用可能なもの、間もなく利用可能になるもの、および随分先になるものはどういったものですか? ===
* ローンチ時点:
** StringとBooleanを扱う関数を持つことができます。
** ウィキファンクションズは当初から完全に国際化されます。どんな言語でも使うことができます。
* [[Wikifunctions:Status|進行中の開発]]:
** <span class="mw-translate-fuzzy">ジェネリック型とジェネリック関数は完全にはサポートされていません。</span>
** <span class="mw-translate-fuzzy">型の追加は、今のところ開発チームに限定されています。将来的には、コミュニティ自身が型を追加できるようになります。型の動作をよりスムーズにするために、今後多くの作業が行われます。</span>
*** 特に興味深い型のひとつは、バイナリデータ、特にファイルです。
** <span class="mw-translate-fuzzy">現在は、JavaScriptとPythonの2つの実装用プログラミング言語をサポートしています。将来的には、さらに多くの言語をサポートしたいと考えています。</span>
** <span class="mw-translate-fuzzy">現在は、他のプログラミング言語で書かれた実装から他の関数を呼び出すことはでき''ません''。</span>
* 将来構想:
** <span class="mw-translate-fuzzy">他のWikimediaプロジェクトからウィキファンクションズ関数を呼び出し、その結果をページの出力に統合することが可能となるでしょう。</span>
** 関数内でウィキデータのデータを利用できるようになるでしょう。
** コモンズのデータ名前空間からデータセットを呼び出せるようになるでしょう。
<div lang="en" dir="ltr" class="mw-content-ltr">
=== How is Wikifunctions multilingual? ===
</div>
{{main|Special:MyLanguage/Help:Multilingual}}
<div lang="en" dir="ltr" class="mw-content-ltr">
Wikifunctions and Abstract Wikipedia are multilingual in a number of ways that do not impact each other:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Wikifunctions is multilingual in terms of its content and user interface.''' Users can read and call functions on Wikifunctions in any natural language. Here is the “join string” function in [https://www.wikifunctions.org/view/en/Z10000 English], [https://www.wikifunctions.org/view/pl/Z10000 Polish], and [https://www.wikifunctions.org/view/he/Z10000 Hebrew], and it is available in many more languages.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Contributors can edit and improve Wikifunctions using their language.''' Even implementations can be edited in the natural language of the contributor. For example, the composition of the “and” function can be edited in [https://www.wikifunctions.org/wiki/Z11223?action=edit&uselang=de German], [https://www.wikifunctions.org/wiki/Z11223?action=edit&uselang=en English], or any other of about 300 languages.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Wikifunctions functions can be used to create results for any natural language.''' The community is creating a growing number of functions to support the generation of text in many natural languages. We have functions for [[Wikifunctions:Catalogue#Breton|Breton]], [[Wikifunctions:Catalogue#Rohingya|Rohingya]], [[Wikifunctions:Catalogue#English|English]], and many other languages.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Functions in Wikifunctions can be implemented in various different programming languages.''' For example, the [[Z10000|join function]] is implemented in both [[Z10005|JavaScript]] and [[Z10004|Python]].</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Which programming languages does Wikifunctions currently support? Which programming languages will be supported in the future? ===
</div>
{{main|WF:programming languages}}
<div lang="en" dir="ltr" class="mw-content-ltr">
Currently, Wikifunctions supports implementations written in JavaScript and Python. We plan to add support for more programming languages in the future. We hope to add at least one further programming language in 2025 (but have not yet decided which one).
</div>
<span id="How_will_Wikifunctions_be_integrated_into_other_projects?"></span>
=== ウィキファンクションズは他のプロジェクトにどのように統合されるでしょうか? ===
ウィキファンクションズは、抽象ウィキペディアの構築に向けた第一歩です。短期的には、コミュニティをサポートし、フィードバックに基づいて改善を行うことにフォーカスします。同時に、ウィキペディアとウィキデータを統合するプロセスを開始します。これにより、より広範な実生活アプリケーションが可能になり、抽象ウィキペディアのビジョンに近づくことができます。
<div class="mw-translate-fuzzy">
投稿者は、自分のWiki内からウィキファンクションズを通じて関数を呼び出すことができます。Wikiの読者には、関数呼び出しの結果が表示されます。これは、たとえば、ウィキデータの人口と面積のデータに基づいて年齢、人口密度を計算したり、グラフを描いて特定の記事に統合したりするために使用できます。
</div>
ウィキファンクションズを統合するもう1つの選択肢は、対話的な関数呼び出しインターフェースをWiki内に統合することです。これは、例えば、ウィキペディアの記事で、読者が与えたパラメータに基づいて物理方程式の結果を動的に計算したり、数学関数を描画して相互作用したりするのに使えます。
<span id="What_Wikifunctions_is_not"></span>
<div class="mw-translate-fuzzy">
=== ウィキファンクションズは何でないか ===
</div>
詳細については、[[Special:MyLanguage/Wikifunctions:What Wikifunctions is not|Wikifunctions:What Wikifunctions is not]]を参照してください。
<span id="What_license_will_the_functions_and_derived_content_be_under?"></span>
=== 関数と派生コンテンツにはどのようなライセンスが適用されますか? ===
<div class="mw-translate-fuzzy">
[[:m:Special:MyLanguage/Abstract Wikipedia/Licensing discussion|on Meta between November and December 2021]]で行われた議論によると、ウィキファンクションズとより広範な抽象ウィキペディアプロジェクトへのすべての貢献は、無料ライセンスの下で公開されます。特に:
</div>
* ウィキファンクションズの[[Special:MyLanguage/Wikifunctions:Glossary#Content|テキストコンテンツ]]は、[[w:クリエイティブ・コモンズ・ライセンス|CC BY-SA 4.0]]で公開されます。
* ウィキファンクションズにおける[[Special:MyLanguage/Wikifunctions:Glossary#Function|関数シグネチャ]]およびにそれ以外の構造化コンテンツは、[[w:ja:CC0|CC 0]]の下で公開されます。
* ウィキファンクションズの[[Special:MyLanguage/Wikifunctions:Glossary#Implementation|コード実装]]は、[[w:ja:Apache License|Apache 2ライセンス]]の下で公開されます。
* 抽象ウィキペディアの[[Special:MyLanguage/Wikifunctions:Glossary#Content|Abstract Content]]は、CC BY-SA 4.0の下で公開されます。
抽象コンテンツから生成されたコンテンツのライセンスなど、今後対処する必要がある点がまだいくつかあります。ライセンスを遵守しながら、ウィキファンクションズのコードを可能な限り問題なく再利用する方法について、法務部門とより包括的な文書を作成する予定です。
<span id="Contributing"></span>
== 貢献 ==
<span id="I'm_new_here._What_is_there_for_me_to_do_and_how_can_I_help?"></span>
=== ここに来るのは初めてです。何かお手伝いできることはありますか? ===
ようこそ!あなたがここにいてくれてとてもうれしいです!新しい関数の作成から文書の改善や翻訳に至るまで、ウィキファンクションズに貢献する機会はたくさんあります。参加する方法を探しているのであれば、好みのレベルに応じて、興味のあるトピックに新しい関数を提案することをお勧めします。あるいは、そのような関数を作成することもお勧めします。いくつかのテストを提供してください。実装を試してみてください。翻訳を手伝ってください。文書を読んで改善してください。コミュニティの組織化を手伝ってください。
<span id="How_do_I_create_a_new_function,_implementation,_or_test?"></span>
=== 新しい関数、実装、テストを作成するにはどうすればよいですか? ===
新しい関数、実装、またはテストの作成方法については、[[Special:MyLanguage/Wikifunctions:Introduction|Wikifunctions:Introduction]]を参照してください。
実装の作成方法の詳細については、[[Special:MyLanguage/Wikifunctions:How to create implementations|Wikifunctions:How to create implementations]]を参照してください。
<span id="What_should_I_edit_first?"></span>
=== 最初は何を編集したら良いですか? ===
もしあなたが複数の言語を書けるのであれば、[[Special:ListMissingLabels]]に記載されているあなたの言語のラベルや説明をまだ持っていない関数を見つけて、それらを追加する手助けをしてください。
もしあなたが、ウィキファンクションズで関数を提供する可能性のあるドメインに興味を持っているがまだ存在していないなかったり、関数についてもっとアイデアがある場合は、[[Wikifunctions:Suggest a new function|suggesting new functions]]のページにアクセスして、アイデアを発表してください。
もしあなたがJavaScriptやPythonをコーディングできるのであれば、JavaScriptやPythonでまだ実装されていない関数をチェックして、それらを作成したいと思うかもしれません。
<span id="Where_can_I_go_for_help?"></span>
=== 助けがほしいときは、どこに行けばいいですか? ===
最初に立ち寄るべきは[[Special:MyLanguage/Help:Contents|Help portal]]で、ウィキデータの使い方や編集の仕方についての説明文書がすべてみつかると思います。それでもまだ行き詰まっているなら、[[Wikifunctions:Project chat|Project chat]]にメッセージを投稿してみてください。誰かがあなたの質問に答えてくれるでしょう。
<span id="How_do_we_sort_or_categorize_functions?"></span>
=== 関数のソートやカテゴライズはどうしますか? ===
{{Tracked|T285424}}
<div class="mw-translate-fuzzy">
今のところ、関数をソートしたり分類したりする最善の方法は、Wikifunctions名前空間のページを使って手動で行うことです。もう1つの選択肢は、指定された関数のトークページを使うことです。私たちはこれらの取り組みを監視し、システムのどの変更がこのタスクに役立つかをコミュニティと議論する予定です。
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== How can I setup the software locally to hack on it? ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
See [[Special:MyLanguage/Wikifunctions:Hacking on the evaluator and orchestrator|Hacking on the evaluator and orchestrator]].
</div>
[[Category:FAQ| {{#translation:}}]]
dxm59dskwzx7wekexk074b7xp999gtr
Wikifunctions:FAQ/ru
4
3559
296928
265385
2026-08-06T18:02:03Z
FuzzyBot
207
Updating to match new version of source page
296928
wikitext
text/x-wiki
<languages/>
{{shortcut|[[WF:FAQ]]}}
Эта страница содержит ответы на часто задаваемые вопросы о Викифункциях. Если вашего вопроса здесь еще нет, вы можете задать его на [[Wikifunctions talk:FAQ|странице обсуждения]].
<div lang="en" dir="ltr" class="mw-content-ltr">
Also, please consider our [[:m:Special:MyLanguage/Abstract Wikipedia/FAQ|FAQ on Meta]] regarding more general questions about Wikifunctions and Abstract Wikipedia.
</div>
__TOC__
<span id="Introduction"></span>
== Введение ==
<span id="What_is_this_project_about?"></span>
=== О чем этот проект? ===
Викифункции – новый проект Викимедиа, содержащий каталог всех видов функций, которые любой может вызвать, написать, поддерживать и использовать. Проект также предоставляет базовую технологию, которая впоследствии позволит переводить не зависящие от языка статьи из абстрактной Википедии на язык любого раздела Википедии. Это позволит любому участнику редактировать и читать статьи на предпочитаемом языке.
<span id="What_is_a_function?"></span>
=== Что такое функция? ===
Функции — это форма знаний, которая может ответить на вопросы, такие как, сколько дней прошло между двумя датами или расстояние между двумя городами. Более сложные функции могут ответить на более сложные вопросы, такие как объем трехмерной формы, расстояние между Марсом и Венерой в определенную дату или жили ли два вида в одно время.
<div lang="en" dir="ltr" class="mw-content-ltr">
We already use functions in many types of knowledge inquiries, such as asking a question to a search engine. The templates, such as [[:w:en:Template:Convert|Template:Convert]] and [[:w:en:Template:Age|Template:Age]] on English Wikipedia, are also examples of functions that are already used in many Wikipedias, written in wikitext and Lua and manually copied to each wiki where they're wanted.
</div>
<span id="What_is_an_implementation?"></span>
=== Что такое реализация? ===
<div class="mw-translate-fuzzy">
Реализация — это определенный способ выполнения функции. Реализация — это рецепт, в котором перечислены шаги, необходимые для выполнения функции. Это может быть кусок кода в языке программирования или комбинация вызовов к другим функциям. Функция может иметь много вариантов реализации, и все они должны быть эквивалентными.
</div>
<span id="What_is_a_test?"></span>
=== Что такое тест? ===
Тест — это способ определить, правильно ли выполняется функция. Функция, обычно, будет иметь несколько тестеров, каждый из которых указывает некоторые входные данные для функции и условия, которым должен удовлетворять результат выполнения функции для этих входных данных.
Например, тестеры для функции "регистр заголовка" могут включать: "<span dir="ltr" lang="en">abc</span>" должен стать "<span dir="ltr" lang="en">Abc</span>"; "<span dir="ltr" lang="en">war and peace</span>" должен стать " <span dir="ltr" lang="en">War and Peace</span>"; "<span dir="ltr" lang="ru">война и мир</span>" должен стать " <span dir="ltr" lang="ru">война и мир</span>"; и "<span dir="ltr" lang="en">123</span>" должен оставаться "<span dir="ltr" lang="en">123</span>".
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Which features are available now, which will be soon available, and which are further away? ===
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">At launch:</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">We have the ability to have functions that work with Strings and Booleans.</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">Wikifunctions will be fully internationalized from the beginning. It can be used in any language.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Wikifunctions:Status|Ongoing development]]:</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">Generic types and generic functions are not fully supported.</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">Adding types will, for now, be something that is limited to the development team. In the future, the community will be able to add more types. There is a lot of work to be done in the future to make types behave much more smoothly.</span>
*** <span lang="en" dir="ltr" class="mw-content-ltr">One particularly interesting type will be binary data, and particularly files.</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">We currently support two programming languages for implementations: JavaScript and Python. In the future, we want to support many more.</span>
** В настоящее время ''не'' возможно вызывать другие функции с помощью реализаций, написанных на другом языке программирования.
* В будущем:
** <span lang="en" dir="ltr" class="mw-content-ltr">It will be possible to call Wikifunctions functions from other Wikimedia projects and integrate their results into the output of the page.</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">It will be possible to use data from Wikidata in functions.</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">It will be possible to call data sets from Commons Data namespace.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== How is Wikifunctions multilingual? ===
</div>
{{main|Special:MyLanguage/Help:Multilingual}}
<div lang="en" dir="ltr" class="mw-content-ltr">
Wikifunctions and Abstract Wikipedia are multilingual in a number of ways that do not impact each other:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Wikifunctions is multilingual in terms of its content and user interface.''' Users can read and call functions on Wikifunctions in any natural language. Here is the “join string” function in [https://www.wikifunctions.org/view/en/Z10000 English], [https://www.wikifunctions.org/view/pl/Z10000 Polish], and [https://www.wikifunctions.org/view/he/Z10000 Hebrew], and it is available in many more languages.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Contributors can edit and improve Wikifunctions using their language.''' Even implementations can be edited in the natural language of the contributor. For example, the composition of the “and” function can be edited in [https://www.wikifunctions.org/wiki/Z11223?action=edit&uselang=de German], [https://www.wikifunctions.org/wiki/Z11223?action=edit&uselang=en English], or any other of about 300 languages.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Wikifunctions functions can be used to create results for any natural language.''' The community is creating a growing number of functions to support the generation of text in many natural languages. We have functions for [[Wikifunctions:Catalogue#Breton|Breton]], [[Wikifunctions:Catalogue#Rohingya|Rohingya]], [[Wikifunctions:Catalogue#English|English]], and many other languages.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Functions in Wikifunctions can be implemented in various different programming languages.''' For example, the [[Z10000|join function]] is implemented in both [[Z10005|JavaScript]] and [[Z10004|Python]].</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Which programming languages does Wikifunctions currently support? Which programming languages will be supported in the future? ===
</div>
{{main|WF:programming languages}}
<div lang="en" dir="ltr" class="mw-content-ltr">
Currently, Wikifunctions supports implementations written in JavaScript and Python. We plan to add support for more programming languages in the future. We hope to add at least one further programming language in 2025 (but have not yet decided which one).
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== How will Wikifunctions be integrated into other projects? ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Wikifunctions is the first step towards building Abstract Wikipedia. Our near-term focus will be on supporting the community and making improvements based on feedback. Concurrently, we will begin the process of integrating it with Wikipedia and Wikidata, which will enable broader real-life applications and get us closer to the vision of Abstract Wikipedia.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Contributors will be able to call functions stored on the Wikifunctions site from within their wikis. The result of the function call will be displayed to readers of the wiki. This can be used, for example, to calculate the age of a person, the population density based on population and area data from Wikidata, or to draw a graph and integrate it into a given article.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Another option to integrate Wikifunctions will be to integrate an interactive function call interface within their wiki. This could be used, for example, in a Wikipedia article to dynamically calculate the result of a physical equation based on reader-provided parameters, draw and interact with mathematical functions, etc.
</div>
<span id="What_Wikifunctions_is_not"></span>
<div class="mw-translate-fuzzy">
=== Чем не являются Викифункции? ===
</div>
Пожалуйста, см. [[Special:MyLanguage/Wikifunctions:What Wikifunctions is not|Викифункции:Чем не являются Викифункции]] для получения дополнительной информации по этому вопросу.
<div lang="en" dir="ltr" class="mw-content-ltr">
=== What license will the functions and derived content be under? ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Per the discussion happened [[:m:Special:MyLanguage/Abstract Wikipedia/Licensing discussion|on Meta between November and December 2021]], all contributions to Wikifunctions and the wider Abstract Wikipedia projects will be published under free licenses. In particular:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Special:MyLanguage/Wikifunctions:Glossary#Content|Textual content]] on Wikifunctions will be published under [[w:Creative Commons license|CC BY-SA 4.0]].</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Special:MyLanguage/Wikifunctions:Glossary#Function|Function signatures]] and other structured content on Wikifunctions will be published under [[w:CC0|CC 0]].</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Special:MyLanguage/Wikifunctions:Glossary#Implementation|Code implementations]] in Wikifunctions will be published under the [[w:Apache License|Apache 2 license]].</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Special:MyLanguage/Wikifunctions:Glossary#Content|Abstract Content]] for Abstract Wikipedia will be published under CC BY-SA 4.0.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
There are still some points that will need to be addressed in the future, such as the license of the generated content from the abstract content. We plan on drafting a more comprehensive document with the Legal department about how people can re-use code from Wikifunctions as painlessly as possible, while adhering to the license.
</div>
<span id="Contributing"></span>
== Участие ==
<div lang="en" dir="ltr" class="mw-content-ltr">
=== I'm new here. What is there for me to do and how can I help? ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Welcome! We're very happy to have you here! There are many opportunities for contributing to Wikifunctions, from creating new functions to improving and translating documentation. If you are looking for ways to get involved, we recommend that maybe, depending on your level of comfort, you suggest a new function on a topic you are interested in. Or even create such a function. Provide some tests. Try your hand at an implementation. Help with translations. Read and improve our documentation. Help with organizing the community.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== How do I create a new function, implementation, or test? ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
To see how to create a new function, implementation, or test, see [[Special:MyLanguage/Wikifunctions:Introduction|Wikifunctions:Introduction]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
To see in more detail how to create an implementation, see [[Special:MyLanguage/Wikifunctions:How to create implementations|Wikifunctions:How to create implementations]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== What should I edit first? ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If you can write several languages, find functions that don't have labels and descriptions in your languages yet on the page [[Special:ListMissingLabels]], and help to add them.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If you have some interest in a domain that could feature functions in Wikifunctions, but yet doesn't, or if you have more ideas for functions, go to the page for [[Wikifunctions:Suggest a new function|suggesting new functions]] and present your ideas.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If you are a coder in JavaScript or Python, maybe you want to check for functions that don't yet have implementations in JavaScript or Python, and try to write them.
</div>
<span id="Where_can_I_go_for_help?"></span>
=== Где я могу найти помощь? ===
<div class="mw-translate-fuzzy">
Первым делом изучите [[Special:MyLanguage/Help:Contents|портал помощи]], где вы найдете всю документацию, связанную с использованием и редактированием Викифункций. Если у Вас ещё остались вопросы, разместите сообщение на [[Wikifunctions:Project chat|форуме]], кто-то ответит на ваш вопрос.
</div>
<span id="How_do_we_sort_or_categorize_functions?"></span>
=== Как мы сортируем или категоризируем функции? ===
{{Tracked|T285424}}
<div lang="en" dir="ltr" class="mw-content-ltr">
For now, the best way to sort or categorize functions is to do it by hand through [[Special:MyLanguage/Wikifunctions:Catalogue|pages in the Wikifunctions namespace]]. Another option would be through the talk page of the given function. We will monitor these efforts and discuss with the community which changes to the system would be helpful for this task.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== How can I setup the software locally to hack on it? ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
See [[Special:MyLanguage/Wikifunctions:Hacking on the evaluator and orchestrator|Hacking on the evaluator and orchestrator]].
</div>
[[Category:FAQ| {{#translation:}}]]
7md25jvmt821d8ilpz6ni589mj5u6ti
Wikifunctions:FAQ/sv
4
3573
296930
234257
2026-08-06T18:02:04Z
FuzzyBot
207
Updating to match new version of source page
296930
wikitext
text/x-wiki
<languages/>
{{shortcut|[[WF:FAQ]]}}
Detta är en sida för vanligaste frågorna om Wikifunctions. Känn dig fri att ställa dina egna frågor på [[Wikifunctions talk:FAQ|diskussionssidan]] om din fråga inte besvaras här!
Läs gärna också vår [[:m:Special:MyLanguage/Abstract Wikipedia/FAQ|FAQ på Meta]] som har mer allmänna frågor om Wikifunctions och abstrakta Wikipedia.
__TOC__
<span id="Introduction"></span>
== Introduktion ==
<span id="What_is_this_project_about?"></span>
=== Vad handlar projektet om? ===
Wikifunctions är ett nytt Wikimediaprojekt som erbjuder en katalog över alla möjliga sorters funktioner som vem som helst kan anropa, skriva, underhålla och använda. Det erbjuder också den underliggande teknologin som till slut kommer möjliggöra översättning av språkoberoende artiklar från Abstrakta Wikipedia till alla Wikipedias språk. Detta kommer möjliggöra för alla att bidra och läsa artiklar på sitt föredragna språk.
<span id="What_is_a_function?"></span>
=== Vad är en funktion? ===
Funktioner är ett sorts kunskap som kan besvara frågor, som till exempel hur många dagar som gått mellan två datum eller avståndet mellan två städer. Mer komplicerade funktioner kan svara på mer komplicerade frågor, såsom volymen av en tredimensionell form, avståndet mellan Mars och Venus vid ett angivet datum eller om två arter levde samtidigt.
<div class="mw-translate-fuzzy">
Vi använder redan funktioner i flera formar av kunskapsfrågor, som när vi ställer frågor till en sökmotor. Mallar, såsom [[:w:en:Template:Convert|Template:Convert]] och [[:w:en:Template:Age|Template:Age]] på engelskspråkiga Wikipedia, är också exempel på funktionalitet som vi redan använder på flera Wikipediaversioner, skrivna i wikitext och Lua och manuellt kopierad till varje enskild wiki där det önskas.
</div>
<span id="What_is_an_implementation?"></span>
=== Vad är en implementering? ===
En implementation är visst sätt att köra en funktion. En implementation är ett recept som listar alla steg som behövs för att köra funktionen. Det kan vara en bit kod på ett programmeringsspråk eller en kombination av anrop av andra funktioner. En funktion kan ha flera implementationer vilka alla borde vara likvärdiga.
<span id="What_is_a_test?"></span>
=== Vad är ett test? ===
Ett test är ett sätt att bestämma om en viss funktion gör rätt sak. En funktion kommer oftast ha flera testare, där varje anger någon inmatning till funktionen och villkoren som den angivna inmatningen måste uppfylla.
Till exempel kan testare för en "titelkapitaliserings"-funktion kan innehålla: "<span dir="ltr" lang="en">abc</span>" borde bli "<span dir="ltr" lang="en">Abc</span>"; "<span dir="ltr" lang="en">war and peace</span>" borde bli "<span dir="ltr" lang="en">War and Peace</span>"; "<span dir="ltr" lang="ru">война и мир</span>" borde bli "<span dir="ltr" lang="ru">Война и мир</span>"; och "<span dir="ltr" lang="en">123</span>" borde bli förbli "<span dir="ltr" lang="en">123</span>".
<span id="Which_features_are_available_now,_which_will_be_soon_available,_and_which_are_further_away?"></span>
=== Vilka funktioner är tillgängliga nu, vilka blir snart tillgängliga och vilka är längre bort? ===
* Vid starten:
** Vi kan ha funktioner som fungerar med strängar och booleaner.
** Wikifunctions kommer vara fullt internationaliserad från början och kan användas på alla språk.
* [[Wikifunctions:Status|Fortsatt utveckling]]:
** Allmänna typer och allmänna funktioner stöds inte helt.
** Att lägga till typer kommer för tillfället vara något som begränsas till utvecklingsteamet. I framtiden kommer gemenskapen kunna lägga till fler typer. Det finns mycket arbete att göra i framtiden för att få typer att bete sig smidigare.
*** En särskilt intressant typ kommer vara binär data och särskilda filer.
** Vi stödjer för tillfället två programmeringsspråk för implementationer: JavaScript och Python. I framtiden vill vi stödjer fler.
** Man kan för tillfället ''inte'' anropa andra funktioner från implementationer skrivna i något programmeringsspråk. Detta kan man för närvarande endast uppnå med komposition.
* I framtiden:
** Det går att anropa Wikifunctions-funktioner från andra Wikimediaprojekt och integrera deras resultat i sidans utmatning.
** Man kommer kunna använda data från Wikidata i funktioner.
** Man kan kommer kunna anropa datauppsättningar från Commons Data-namnrymd.
<span id="How_is_Wikifunctions_multilingual?"></span>
=== Hur är Wikifunctions flerspråkigt? ===
{{main|Special:MyLanguage/Help:Multilingual}}
Wikifunctions och abstrakta Wikipedia är flerspråkiga på flera olika sätt som inte påverkar varandra:
* '''Wikifuntions är flerspråkigt vad gäller dess innehåll och användargränssnitt.''' Användare kan läsa och anropa funktioner på Wikifunctions på valfritt naturligt språk. Här är funktionen "slå ihop sträng" på [https://www.wikifunctions.org/view/en/Z10000 engelska], [https://www.wikifunctions.org/view/pl/Z10000 polska] och [https://www.wikifunctions.org/view/he/Z10000 hebreiska] och den är tillgänglig på fler språk.
* '''Bidragsgivare kan redigera och förbättra Wikifunctions på sitt eget språk.''' Även implementationer kan redigeras på bidragsgivarens eget språk. Till exempel kan kompositionen hos funktionen "and" redigeras på [https://www.wikifunctions.org/wiki/Z11223?action=edit&uselang=de tyska], [https://www.wikifunctions.org/wiki/Z11223?action=edit&uselang=en engelska] eller något annat av runt 300 språk.
* '''Wikifunctions-funktioner kan användas för att skapa resultat för valfritt naturligt språk.''' Gemenskapen skapar ett växande antal funktioner för att stödja generering av text på många naturliga språk. Vi har funktioner för [[Wikifunctions:Catalogue#Breton|bretonska]], [[Wikifunctions:Catalogue#Rohingya|rohingya]], [[Wikifunctions:Catalogue#English|engelska]] och många fler språk.
* '''Funktioner på Wikifunctions kan implementeras på flera olika programmeringsspråk.''' Till exempel så implementeras [[Z10000|funktionen join]] i både [[Z10005|JavaScript]] och i [[Z10004|Python]].
<span id="Which_programming_languages_does_Wikifunctions_currently_support?_Which_programming_languages_will_be_supported_in_the_future?"></span>
=== Vilka programmeringsspråk stödjer Wikifunctions för tillfället? Vilka programmeringsspråk kommer stödjas i framtiden? ===
{{main|WF:programming languages}}
För nuvarande stödjer Wikifunctions implementationer skrivna i JavaScript och Python. Vi planerar att lägga till stöd för flera programmeringsspråk i framtiden. Vi hoppas kunna lägga till minst ett programmeringsspråk till under 2025 (men har ännu inte bestämt vilket).
<span id="How_will_Wikifunctions_be_integrated_into_other_projects?"></span>
=== Hur kommer Wikifunctions integreras med andra projekt? ===
Wikifunctions är det första steget mot att bygga upp abstrakta Wikipedia. Vi kommer i närtid att fokusera på att stödja gemenskapen och genomföra förbättringar baserat på återkoppling. Samtidigt kommer vi inleda processen med att integrera det med Wikipedia och Wikidata, som kommer möjliggöra bredare tillämpning i verkliga livet och röra oss närmare målsättning med abstrakta Wikipedia.
Bidragsgivare kommer kunna anropa funktioner som lagras på Wikifunctions inifrån sina wikier. Funktionens resultat kommer visas för wikins läsare kommer. Detta kan exempelvis användas för att beräkna en persons ålder, befolkningstätheten baserat på befolkning och områdesdata från Wikidata eller rita ett diagram och integrera det i en viss artikel.
<div lang="en" dir="ltr" class="mw-content-ltr">
Another option to integrate Wikifunctions will be to integrate an interactive function call interface within their wiki. This could be used, for example, in a Wikipedia article to dynamically calculate the result of a physical equation based on reader-provided parameters, draw and interact with mathematical functions, etc.
</div>
<span id="What_Wikifunctions_is_not"></span>
<div class="mw-translate-fuzzy">
=== Vad är inte Wikifunctions? ===
</div>
Se [[Special:MyLanguage/Wikifunctions:What Wikifunctions is not|Wikifunctions:What Wikifunctions is not]] för mer information om det.
<span id="What_license_will_the_functions_and_derived_content_be_under?"></span>
=== Vilken licens kommer funktioner och härlett material publiceras under? ===
Efter en diskussion [[:m:Special:MyLanguage/Abstract Wikipedia/Licensing discussion|på Meta mellan november och december 2021]] kommer alla bidrag till Wikifunctions och bredare abstrakta Wikipedia-projekten publiceras under fri licens. I synnerhet:
* [[Special:MyLanguage/Wikifunctions:Glossary#Content|Textmaterial]] på Wikifunctions kommer publiceras under [[w:Creative Commons license|CC BY-SA 4.0]].
* [[Special:MyLanguage/Wikifunctions:Glossary#Function|Funktionssignaturer]] och annat strukturerat innehåll på Wikifunctions kommer publiceras under [[w:CC0|CC 0]].
* [[Special:MyLanguage/Wikifunctions:Glossary#Implementation|Kodimplementationer]] på Wikifunctions kommer publiceras under [[w:Apache License|licensen Apache 2]].
* [[Special:MyLanguage/Wikifunctions:Glossary#Content|Abstrakt innehåll]] för abstrakta Wikipedia kommer publiceras under CC BY-SA 4.0.
<div lang="en" dir="ltr" class="mw-content-ltr">
There are still some points that will need to be addressed in the future, such as the license of the generated content from the abstract content. We plan on drafting a more comprehensive document with the Legal department about how people can re-use code from Wikifunctions as painlessly as possible, while adhering to the license.
</div>
<span id="Contributing"></span>
== Bidra ==
<span id="I'm_new_here._What_is_there_for_me_to_do_and_how_can_I_help?"></span>
=== Jag är ny här. Vad behöver göras och hur kan jag hjälpa till? ===
<div lang="en" dir="ltr" class="mw-content-ltr">
Welcome! We're very happy to have you here! There are many opportunities for contributing to Wikifunctions, from creating new functions to improving and translating documentation. If you are looking for ways to get involved, we recommend that maybe, depending on your level of comfort, you suggest a new function on a topic you are interested in. Or even create such a function. Provide some tests. Try your hand at an implementation. Help with translations. Read and improve our documentation. Help with organizing the community.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== How do I create a new function, implementation, or test? ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
To see how to create a new function, implementation, or test, see [[Special:MyLanguage/Wikifunctions:Introduction|Wikifunctions:Introduction]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
To see in more detail how to create an implementation, see [[Special:MyLanguage/Wikifunctions:How to create implementations|Wikifunctions:How to create implementations]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== What should I edit first? ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If you can write several languages, find functions that don't have labels and descriptions in your languages yet on the page [[Special:ListMissingLabels]], and help to add them.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If you have some interest in a domain that could feature functions in Wikifunctions, but yet doesn't, or if you have more ideas for functions, go to the page for [[Wikifunctions:Suggest a new function|suggesting new functions]] and present your ideas.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If you are a coder in JavaScript or Python, maybe you want to check for functions that don't yet have implementations in JavaScript or Python, and try to write them.
</div>
<span id="Where_can_I_go_for_help?"></span>
=== Vart kan jag vända mig för att få hjälp? ===
<div lang="en" dir="ltr" class="mw-content-ltr">
Your first stop should be the [[Special:MyLanguage/Help:Contents|Help portal]], where you'll find all the documentation related to using and editing Wikifunctions. If you're still stuck, post a message on [[Wikifunctions:Project chat|Project chat]], and someone will answer your question.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== How do we sort or categorize functions? ===
</div>
{{Tracked|T285424}}
<div lang="en" dir="ltr" class="mw-content-ltr">
For now, the best way to sort or categorize functions is to do it by hand through [[Special:MyLanguage/Wikifunctions:Catalogue|pages in the Wikifunctions namespace]]. Another option would be through the talk page of the given function. We will monitor these efforts and discuss with the community which changes to the system would be helpful for this task.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== How can I setup the software locally to hack on it? ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
See [[Special:MyLanguage/Wikifunctions:Hacking on the evaluator and orchestrator|Hacking on the evaluator and orchestrator]].
</div>
[[Category:FAQ| {{#translation:}}]]
70vks4mx42980ax4f1fggtfs2mxiuwk
Wikifunctions:FAQ/it
4
8471
296920
234248
2026-08-06T18:01:59Z
FuzzyBot
207
Updating to match new version of source page
296920
wikitext
text/x-wiki
<languages/>
{{shortcut|[[WF:FAQ]]}}
Questa è una pagina dedicata alle domande frequenti su Wikifunctions. Puoi inviare le tue domande nella [[Wikifunctions talk:FAQ|pagina di discussione]] se non trovi una risposta in questa pagina!
Inoltre, considera le nostre [[:m:Special:MyLanguage/Abstract Wikipedia/FAQ|FAQ su Meta]] per le domande più generali su Wikifunctions e Abstract Wikipedia
__TOC__
<span id="Introduction"></span>
== Introduzione ==
<span id="What_is_this_project_about?"></span>
=== Di cosa si occupa questo progetto? ===
Wikifunctions è un nuovo progetto Wikimedia che fornisce un catalogo di tutti i tipi di funzioni che chiunque può chiamare, scrivere, mantenere e utilizzare. Fornisce inoltre la tecnologia sottostante che permetterà la traduzione di articoli indipendenti da Abstract Wikipedia nella lingua di ogni Wikipedia. Ciò permetterà a tutti di contribuire e leggere gli articoli nella lingua che preferiscono.
<span id="What_is_a_function?"></span>
=== Cos'è una funzione? ===
Le funzioni sono una forma di conoscenza che può rispondere alle domande, come ad esempio il numero di giorni trascorsi tra due date o la distanza tra due città. Funzioni più complicate possono rispondere a domande più complicate, come il volume di una forma tridimensionale, la distanza tra Marte e Venere in una data determinata, o se due specie erano vive nello stesso periodo storico.
<div class="mw-translate-fuzzy">
Usiamo già delle funzioni in molti tipi di ricerca delle informazioni, ad esempio facendo una domanda ad un motore di ricerca. I template, come ad esempio [[:w:en:Template:Convert|Template:Convert]] e [[:w:en:Template:Age|Template:Age]] nella Wikipedia Inglese, sono un esempio di funzionalità che sono già usate in molte versioni di Wikipedia, scritti in wikitesto e Lua e manualmente copiati in tutti i wiki in cui sono necessari.
</div>
<span id="What_is_an_implementation?"></span>
=== Cos'è una implementazione? ===
Un'implementazione è un modo particolare di eseguire una funzione. Un'implementazione è una ricetta che elenca i passaggi necessari per eseguire la funzione. Potrebbe essere un pezzo di codice in un linguaggio di programmazione, o una combinazione di chiamate ad altre funzioni. Una funzione può avere molte implementazioni, tutte strettamente equivalenti.
<span id="What_is_a_test?"></span>
=== Cos'è un test? ===
Un test è un modo per determinare se una determinata funzione sta facendo la cosa giusta. Una funzione avrà in genere più test, ognuno dei quali specifica alcuni ingressi alla funzione e le condizioni che l'uscita per il dato ingresso deve soddisfare.
Ad esempio, i test per una funzione "converti in Title Case" potrebbero includere: "<span dir="ltr" lang="en">abc</span>" diventa "<span dir="ltr" lang="en">Abc</span>"; "<span dir="ltr" lang="en">war and peace</span>" diventa "<span dir="ltr" lang="en">War and Peace</span>"; "<span dir="ltr" lang="ru">война и мир</span>" diventa "<span dir="ltr" lang="ru">Война и мир</span>"; "<span dir="ltr" lang="en">123</span>" rimane "<span dir="ltr" lang="en">123</span>".
<span id="Which_features_are_available_now,_which_will_be_soon_available,_and_which_are_further_away?"></span>
=== Quali funzionalità sono già diponibili, quali lo saranno presto, e quali sono più distanti? ===
* Al lancio:
** Abbiamo la capacità di avere funzioni che funzionano con Stringhe e Booleani.
** Wikifunzions sarà completamente internazionalizzato fin dall'inizio. Può essere usato in qualsiasi lingua.
* [[Wikifunctions:Status|Sviluppi attuali]]:
** I tipi generici e le funzioni generiche non sono pienamente supportati.
** L'aggiunta di tipi, per ora, è limitato al team di sviluppo. Nel futuro, la comunità sara capace di aggiungere nuovi tipi. C'è molto lavoro che dovrà essere fatto per far funzionari i tipi in modo molto più fluido.
*** Un tipo particolarmente interessante saranno i dati binari, e in particolare i file.
** Attualmente supportiamo due linguaggi di programmazione per le implementazioni: JavaScript e Python. In futuro, abbiamo intenzione di supportarne molti altri.
** Attualmente, ''non'' è possibile chiamare altre funzioni dall'implementazione scritta in un qualsiasi linguaggio di programmazione. Questo è possibile solo tramite la composizione.
* In futuro:
** Sarà possibile chiamare le funzioni Wikifunctions da altri progetti Wikimedia e integrare i loro risultati nell'output della pagina.
** Sarà possibile utilizzare i dati di Wikidata nelle funzioni.
** Sarà possibile richiamare insieme di dati dal namespace di Commons Data.
<span id="How_is_Wikifunctions_multilingual?"></span>
=== In che modo Wikifunctions è multilingue? ===
{{main|Special:MyLanguage/Help:Multilingual}}
Wikifunctions e la Wikipedia astratta sono multilingua in diversi modi indipendenti:
* '''Wikifunctions è multilingua in termini di contenuti e di interfaccia utente'''. Gli utenti possono leggere e chiamare funzioni su Wikifunctions in qualsiasi lingua naturale. Ecco la funzione "concatena stringhe" in [https://www.wikifunctions.org/view/en/Z10000 inglese], [https://www.wikifunctions.org/view/pl/Z10000 polacco] ed [https://www.wikifunctions.org/view/he/Z10000 ebraico]; è disponibile in molte altre lingue.
* '''I contributori possono modificare e migliorare Wikifunctions usando la loro lingua.''' Ogni implementazione può essere modificata nella lingua madre di ogni utente. Per esempio, la composizione della funzione "e" può essere modificata in [https://www.wikifunctions.org/wiki/Z11223?action=edit&uselang=de tedesco], [https://www.wikifunctions.org/wiki/Z11223?action=edit&uselang=en inglese] o in ognuna delle circa 300 lingue.
* '''Le funzioni di Wikifunctions possono essere usate per restituire risultati in ogni lingua.''' La comunità sta creando un numero crescente di funzioni che supportano la generazione di testi in numerose lingue. Abbiamofunzioni per il [[Wikifunctions:Catalogue#Breton|Bretone]], il [[Wikifunctions:Catalogue#Rohingya|Rohingya]], l'[[Wikifunctions:Catalogue#English|Inglese]] e molte altre lingue.
* '''Le funzioni di Wikifunctions possono essere implementate con linguaggi di programmazione differenti.''' Ad esempio, la funzione [[Z10000]] è implementata sia in [[Z10005|JavaScript]] che in [[Z10004|Python]].
<span id="Which_programming_languages_does_Wikifunctions_currently_support?_Which_programming_languages_will_be_supported_in_the_future?"></span>
=== Quali linguaggi di programmazione vengono attualmente supportati? Quali saranno supportati nel futuro? ===
{{main|WF:programming languages}}
Attualmente, Wikifunctions supporta le implementazioni scritte in JavaScript e Python. In futuro, intendiamo aggiungere il supporto per altri linguaggi di programmazione. Speriamo di aggiungere almeno un altro linguaggio di programmazione entro il 2025 (ma non abbiamo ancora deciso quale).
<span id="How_will_Wikifunctions_be_integrated_into_other_projects?"></span>
=== Come sarà integrata Wikifunctions negli altri progetti? ===
Wikifunctions è il primo passo verso la costruzione di Abstract Wikipedia. Il nostro obiettivo a breve termine sarà sostenere la comunità e migliorare in base al feedback. Allo stesso tempo, inizieremo il processo di integrazione con Wikipedia e Wikidata, che consentirà applicazioni più ampie nella vita reale e ci avvicinerà alla visione di Abstract Wikipedia.
I contributori potranno chiamare le funzioni memorizzate sul sito Wikifunctions dal loro wiki. Il risultato della chiamata verrà visualizzato ai lettori della wiki. Questo può essere utilizzato, ad esempio, per calcolare l'età di una persona, la densità di popolazione basata su dati sulla popolazione e sull'area di Wikidata, o per disegnare un grafico e integrarlo in un articolo.
Un'altra opzione per integrare Wikifunctions sarà quella di integrare un'interfaccia per richiamare una funzione all'interno di una wiki. Questa interfaccia potrebbe essere usata, per esempio, in una voce di Wikipedia per calcolare il risultato di un'equazione fisica basandosi su parametri forniti dal lettore, disegnare ed interagire con funzioni matematiche, ecc.
<span id="What_Wikifunctions_is_not"></span>
<div class="mw-translate-fuzzy">
=== Cosa non è Wikifunctions? ===
</div>
Consulta [[Special:MyLanguage/Wikifunctions:What Wikifunctions is not|Wikifunctions:Cosa non è Wikifunctions]] per maggiori informazioni.
<span id="What_license_will_the_functions_and_derived_content_be_under?"></span>
=== Sotto quale licenza saranno le funzioni e il contenuto collegato? ===
In accordo con la discussione che si è tenuta [[:m:Special:MyLanguage/Abstract Wikipedia/Licensing discussion|su Meta tra novembre e dicembre 2021]], tutti i contributi su Wikifunctions e gli progetti di Abstract Wikipedia saranno pubblicati sotto licenza libera. In particolare:
* [[Special:MyLanguage/Wikifunctions:Glossary#Content|Il contenuto testuale]] su Wikifunctions sarà pubblicato sotto [[w:Creative Commons license|CC BY-SA 4.0]].
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Special:MyLanguage/Wikifunctions:Glossary#Function|Function signatures]] and other structured content on Wikifunctions will be published under [[w:CC0|CC 0]].</span>
* Le [[Special:MyLanguage/Wikifunctions:Glossary#Implementation|implementazioni]] di Wikifunctions saranno pubblicate sotto la [[w:Apache License|licenza Apache 2]].
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Special:MyLanguage/Wikifunctions:Glossary#Content|Abstract Content]] for Abstract Wikipedia will be published under CC BY-SA 4.0.</span>
Ci sono ancora alcuni punti che dovranno essere affrontati in futuro, come la licenza del contenuto generato dal contenuto astratto. Abbiamo in programma di redigere un documento più completo con il Dipartimento legale su come le persone possano riutilizzare il codice di Wikifunctions nel modo più indolore possibile, rispettando comunque la licenza.
<span id="Contributing"></span>
== Contribuire ==
<span id="I'm_new_here._What_is_there_for_me_to_do_and_how_can_I_help?"></span>
=== Sono appena entrato. Cosa c'è per me e come posso aiutare? ===
Benvenuti! Siamo molto felici di averti qui! Ci sono molte opportunità per contribuire a Wikifunctions, dalla creazione di nuove funzioni fino al miglioramento e alla traduzione della documentazione. Se cerchi di partecipare, ti consigliamo di suggerire, a seconda del tuo livello di comfort, una nuova funzione su un argomento che ti interessa. O addirittura creare tale funzione. Crea dei test. Prova a fare un'implementazione. Aiuta con le traduzioni. Leggi e migliora la nostra documentazione. Aiuta a organizzare la comunità.
<span id="How_do_I_create_a_new_function,_implementation,_or_test?"></span>
=== Come posso creare una nuova funzione, implementazione o test? ===
Per vedere come creare una nuova funzione, implementazione o test, vedi [[Special:MyLanguage/Wikifunctions:Introduction|Wikifunctions:Introduzione]].
Per vedere più nel dettaglio come creare un'implementazione, guarda [[Special:MyLanguage/Wikifunctions:How to create implementations|Wikifunctions:Come creare impletentazioni]].
<span id="What_should_I_edit_first?"></span>
=== Come dovrei iniziare? ===
Se conosci più lingue, trova funzioni che non hanno ancora etichette e descrizioni nelle tue lingue nella pagina [[Special:ListMissingLabels]] e aggiungile tu.
Se hai qualche interesse in un dominio che potrebbe essere coperto da funzioni su Wikifunctions, ma non lo è ancora, oppure se hai altre idee per funzioni, vai alla pagina per [[Wikifunctions:Suggest a new function|suggerire nuove funzioni]] e presenta le tue idee.
Se sei un programmatore in Javascript o Python, puoi cercare le funzioni che non hanno ancora un'implementazione in Javascript o Python, e aggiungerle tu.
<span id="Where_can_I_go_for_help?"></span>
=== Dove posso cercare aiuto? ===
Inizialmente dovresti andare nel [[Special:MyLanguage/Help:Contents|portale d'aiuto]], dove puoi cercare tutta la documentazione sull'uso e sulla modifica di Wikifunctions. Se sei ancora bloccato, lascia un messaggio sulla [[Wikifunctions:Project chat|Chat di progetto]], e qualcuno risponderà alla tua domanda.
<span id="How_do_we_sort_or_categorize_functions?"></span>
=== Come ordiniamo o categorizziamo le funzioni? ===
{{Tracked|T285424}}
<div class="mw-translate-fuzzy">
Per ora, il modo migliore per ordinare o classificare le funzioni è farlo a mano attraverso le pagine nel namespace di Wikifunctions. Un'altra opzione sarebbe quella di consultare la pagina di discussione della funzione data. Monitoreremo questi sforzi e discuteremo con la comunità quali modifiche al sistema potrebbero essere utili per questo compito.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== How can I setup the software locally to hack on it? ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
See [[Special:MyLanguage/Wikifunctions:Hacking on the evaluator and orchestrator|Hacking on the evaluator and orchestrator]].
</div>
[[Category:FAQ| {{#translation:}}]]
phbyv50gqfjxeep0442qsbrf114zwmo
Translations:Wikifunctions:How to create implementations/3/en
1198
8883
296935
235433
2026-08-06T18:02:22Z
FuzzyBot
207
Importing a new version from external source
296935
wikitext
text/x-wiki
In this section, we give a concrete example on how to create an implementation in the form of Code in Python. Say we want to create an implementation for a Function which combines two input strings by putting a space between them, returning the result of that. Let’s assume the ZID of that function is Z30000.
hm0wxsn5vlj5d3sa5lsk4gs9glnzf8a
Translations:Wikifunctions:How to create implementations/13/en
1198
8893
296936
235438
2026-08-06T18:02:22Z
FuzzyBot
207
Importing a new version from external source
296936
wikitext
text/x-wiki
In this section, we give a concrete example on how to create an implementation in the form of Code in JavaScript. Say we want to create an implementation for a Function which combines two input strings by putting a space between them, returning the result of that. Let’s assume the ZID of that function is $1.
nwkcigpbaumbj3c1kcc2zgx9b17ewji
Translations:Wikifunctions:How to create implementations/23/en
1198
8903
296937
235443
2026-08-06T18:02:22Z
FuzzyBot
207
Importing a new version from external source
296937
wikitext
text/x-wiki
In this section, we give a concrete example on how to create an implementation in the form of a composition. Say we want to create an implementation for a Function which combines two input strings by putting a space between them, returning the result of that. Let’s assume the ZID of that function is $1.
mpqxcr7n54x15h6my9a9ccd5agak0td
Wikifunctions:How to create implementations/en
4
8925
296938
276446
2026-08-06T18:02:30Z
FuzzyBot
207
Updating to match new version of source page
296938
wikitext
text/x-wiki
<languages/>
This page provides a more detailed guide to '''creating implementations''', beyond the overview at {{ll|Wikifunctions:Introduction}}.
== Types of Implementations ==
In Wikifunctions, an '''implementation''' can take one of two main forms: '''code''' or '''composition'''. A code implementation directly expresses the function’s logic in any of the available programming languages (currently, Python3 or JavaScript). It’s most useful when the function’s behavior can’t easily be built from existing Wikifunctions, or when precise control over data processing is needed.
A composition implementation, on the other hand, defines the function entirely by combining other existing functions, without writing code. Compositions are easier to understand, reuse, and translate into other languages automatically, but they depend on suitable building blocks already being available and often are less performant. In general, start by checking whether your goal can be achieved through composition; if it can’t, or if performance or fine-grained logic matters, choose a code implementation instead.
There's a third type of implementation: '''built-ins'''. These are run by system-built code, and are not editable. Most likely all pre-defined functions will have a built-in implementation. In such cases, when opening the implementation page, you will see a message stating ''"{{int|wikilambda-implementation-selector-none}}"''
== Practice Test-Driven Development ==
'''Test-Driven Development''', or '''TDD''', is a way of creating software where you write tests before you write the actual code. Tests are just a way of understanding what your function is supposed to do by listing examples and how they should work.
In Wikifunctions, writing tests first offers significant benefits. If you are working on an implementation, you can run your code against the existing tests to check that it behaves as expected. This makes it easier to catch errors early before even publishing your implementation. Tests are also a powerful way to describe the function you need. By writing tests, '''you clearly communicate the expected behavior''', and the community can step in and help with the implementation, or create alternative implementations.
Imagine you want to implement a Function that combines two strings with a space in between. A basic test for this might look like:
<syntaxhighlight lang="prolog">
join_with_space( "Hello", "world" ) => "Hello world"
</syntaxhighlight>
Once you have defined the basic behavior, it's important to '''think about edge cases'''—situations where the inputs are such that you might need some special behavior.
For example, what if your first string ends in a space, or your second string starts with a space? Should the function keep all existing spaces and add another one, or should it return a neatly spaced result with just a single space between the words?
Depending on your requirements, you should build a test for such a case. For example, a test for this edge case could be either one of these — but not both!:
<syntaxhighlight lang="prolog">
join_with_space( "Hello ", " world") => "Hello world"
</syntaxhighlight>
or ...
<syntaxhighlight lang="prolog">
join_with_space( "Hello ", " world") => "Hello world"
</syntaxhighlight>
Make sure that all possible special cases are covered by your tests, and once you have them, make sure that they are all connected to the Function by selecting them and clicking "Connect".
== Code implementations ==
[[File:Code implementation.png|thumb|alt=Wikifunctions code editor initialized with a function template|When adding a new code implementation, the function template is initialized with the function and argument names]]
When creating an implementation using code, the Wikifunctions UI will set up a code editor with the selected language activated for syntax highlighting and validation. When the function to implement and the programming language are selected, this editor will be set with the correct function template: '''do not remove or edit this'''! Keep your code inside this function signature: if you need auxiliary functions, you can simply declare them inside your top-level function declaration.
=== Using input types in your code ===
Wikifunctions types {{Z|Z6}} and {{Z|Z40}} can be used as if they were native types in both JavaScript and Python3. For example, a String input can be concatenated or a Boolean be directly used in a logical expression. To use other types in your code implementations, you will have to look deeper into the type, figure out if it has a conversion to a native equivalent, and treat it accordingly.
For example, let's say we want to write some Python code that handles an input of type {{Z|Z20420}}. In the page for this type, let's look at its "type converters to code" and search for a Python one. The converter {{Z|Z20424}} will be applied to our date input before our code, so looking at "native type" we know that our input will be a Python ''dict'' and looking at the implementation we can see the keys we can expect:
<syntaxhighlight lang="python3">
return {
'K1': year,
'K2': month,
'K3': day
}
</syntaxhighlight>
When a type doesn't have a converter, you'll have to access its parts directly using its keys. For example, let's assume that your function <code>Z30000</code> has one input <code>Z30000K1</code> of type {{Z|Z11}}. This type has two keys: <code>Z11K1</code> for the language (itself an object of type {{Z|Z60}}), and <code>Z11K2</code> for the string value. Similarly, the language object has a key <code>Z60K1</code> for the language code. So, to get a string with the language code and the text, you can write:
<syntaxhighlight lang="javascript">
function Z30000( Z30000K1 ) {
// e.g. "en: some text"
return Z30000K1.Z11K1.Z60K1 + ": " + Z30000K1.Z11K2;
}
</syntaxhighlight>
For a quick reference of the available type conversions visit [[Special:MyLanguage/Wikifunctions:Execution targets#Default type conversion|the default type conversion table]].
=== Returning the right outputs ===
Similarly to the way you treat inputs, outputs need to match the type specified in the function definition. Some can be treated as simply as native types, so any string output will be converted into a Wikifunctions {{Z|Z6}} object and any native boolean returned by your implementation will be converted into a Wikifunctions {{Z|Z40}} object.
Those types that have "type converters from code" will apply the appropriate function to the output, in order to build the required type. Following the example of {{Z|Z20420}}, the {{Z|Z20443}} will transform the output from your implementation–a dict with K1, K2 and K3 keys–into its correct ZObject representation.
For types that don't have converters from code, you can carefully build and return the output objects. For example, imagine that our function <code>Z30000</code> takes two string inputs: language code and text, and should return a {{Z|Z11}} object. You can do this in Python by using the <code>ZObject</code> constructor:
<syntaxhighlight lang="python3">
def Z30000(Z30000K1, Z30000K2):
lang_object = ZObject(
{"Z1K1": "Z9", "Z9K1": "Z60"},
Z60K1 = Z30000K1
)
return ZObject(
{"Z1K1": "Z9", "Z9K1": "Z11"},
Z11K1 = lang_object,
Z11K2 = Z30000K2
)
</syntaxhighlight>
Or in JavaScript:
<syntaxhighlight lang="javascript">
function Z30000( Z30000K1, Z30000K2 ) {
const langObject = new ZObject(
new Map( [ [ "Z60K1", Z30000K1 ] ] ),
{ "Z1K1": "Z9", "Z9K1": "Z60" }
);
const monolingualKeys = new Map( [
[ "Z11K1", langObject ],
[ "Z11K2", Z30000K2 ]
] );
return new ZObject(
monolingualKeys,
{ "Z1K1": "Z9", "Z9K1": "Z11" }
);
}
</syntaxhighlight>
You can learn more about the <code>ZObject</code> class and other useful constructors in {{ll|Wikifunctions:Execution_targets#Custom_and_non-built-in_type_conversion}}
{{phab|T392750}}As of 2026-05, trying to return a list of lists may fail, so you're not able to implement such functions in code.
=== Code in Python ===
In this section, we give a concrete example on how to create an implementation in the form of Code in Python. Say we want to create an implementation for a Function which combines two input strings by putting a space between them, returning the result of that. Let’s assume the ZID of that function is Z30000.
The implementation is defined using the ZID of the function. So are the arguments of the function. So in the case of the function Z30000 with its two arguments, the function template should look like this:
<syntaxhighlight lang="python3">
def Z30000(Z30000K1, Z30000K2):
</syntaxhighlight>
As we described before, we know that the arguments (<code>Z30000K1</code> and <code>Z30000K2</code>) are Strings, so we can treat them as simply as we use native strings in Python. Also, the function should return a String. For our example, we simply return the two arguments concatenated with a space in between:
<syntaxhighlight lang="python3">
def Z30000(Z30000K1, Z30000K2):
return Z30000K1 + " " + Z30000K2
</syntaxhighlight>
Since this is Python, do not forget to indent this line.
If you have followed our advice to [[#Practice Test-Driven Development|practice TDD]], you will already have a set of tests that you know should work. If that's the case, while building your implementation you can click on the circular arrow in the Tests panel, and see if your implementation passes all of them.
Remember that the runtime has no state. Don’t assume values for global or static variables. If you have further questions about what you can and cannot do in Python, ask on [[Wikifunctions:Python implementations]].
=== Code in JavaScript ===
In this section, we give a concrete example on how to create an implementation in the form of Code in JavaScript. Say we want to create an implementation for a Function which combines two input strings by putting a space between them, returning the result of that. Let’s assume the ZID of that function is <code>Z30000</code>.
The implementation is defined using the ZID of the function. So are the arguments of the function. So in the case of the function <code>Z30000</code> with its two arguments, the function template should look like this:
<syntaxhighlight lang="javascript">
function Z30000( Z30000K1, Z30000K2 ) {
}
</syntaxhighlight>
We know that the arguments (<code>Z30000K1</code> and <code>Z30000K2</code>) are Strings, so we can treat them as native strings in JavaScript. Also, the function should return a String. To complete our function, you can then add a line concatenating the input strings, like this:
<syntaxhighlight lang="javascript">
function Z30000( Z30000K1, Z30000K2 ) {
return Z30000K1 + " " + Z30000K2;
}
</syntaxhighlight>
If you have tests as recommended in the [[#Practice Test-Driven Development|TDD]] section above, click on the circular arrow in the Tests panel and see if your implementation passes all of them.
Remember that the runtime has no state. Don’t assume values for global or static variables. If you have further questions about what you can and cannot do in JavaScript, ask on [[Wikifunctions:JavaScript implementations]].
== Compositions ==
In this section, we give a concrete example on how to create an implementation in the form of a composition. Say we want to create an implementation for a Function which combines two input strings by putting a space between them, returning the result of that. Let’s assume the ZID of that function is <code>Z30000</code>.
It is usually a good idea to first think about how to combine existing functions in order to create the desired output. Sometimes this might be trivial, and you can just go ahead with composing functions, but in many cases it is worthwhile to note the desired composition down.
For example, for the given Function, we could use the existing Function {{Z|Z10000}}. That Function takes two strings and makes one string out of them. But we need to add a space in between. So we first concatenate a space to the end of the first string, and then concatenate the second string to the result of that first concatenation. So our composition could be noted down like this:
<syntaxhighlight lang="prolog">
join_strings( join_strings( Z30000K1, " " ), Z30000K2 )
</syntaxhighlight>
There are multiple ways to write a composition: notice that the same thing could be accomplished with:
<syntaxhighlight lang="prolog">
join_strings( Z30000K1, join_strings( " ", Z30000K2 ) )
</syntaxhighlight>
An alternative implementation could also use the existing Function {{Z|Z15175}}, so your composition could be:
<syntaxhighlight lang="prolog">
join_with_separator( Z30000K1, Z30000K2, " " )
</syntaxhighlight>
As you can see, there are multiple ways to accomplish this, so take your time and explore the existing functions available in the {{ll|Wikifunctions:Catalogue}}.
Let's try to create the second example, <code>join_strings(Z30000K1, join_strings(" ", Z30000K2))</code>.
In order to create this:
# Start adding an implementation by clicking on the "+" button in the "Implementations" table from your Function page.
# Make sure that the option "composition" under "Implementation" is selected.
# Click on the "›" icon or click the "Select Function" link to expand the function details.
# Under "function" search for the name of the outermost function you want to use, which in this example is "join two strings". Then, select the wanted function from the dropdown list.
# You will see two new fields, one for each of the arguments needed for the selected function.
# For the first argument, we want to select the first input to our function:
## Next to "first string", click on the "…" button and select "Argument reference".
## Under "key id" you can now select the first string of your function from the dropdown, which contains all available inputs.
# For the second argument, we want to use the result of another call to "join two strings":
## Next to "second string", click on the "…" button and select "Function call".
## Under "function", search and select the function you want to call, which is again "join two strings".
## For this inner function call, configure the "first string" by simply typing a white space in the text field, and configure the "second string" as you did for step 6: change it using the "…" button to "Argument reference", and then select the second argument in the dropdown.
Your composition is now complete!
You can expand and collapse the details using the chevron buttons to see how it looks. If you already have Tests as recommended in the [[#Practice Test-Driven Development|TDD]] section above, click on the circular arrow in the Tests panel and see if your implementation passes the tests. Once your composition passes the tests, go ahead and publish it.
[[File:Composition implementation expanded.png|frame|center|alt=A Wikifunctions composition implementation in its expanded view|A Wikifunctions composition implementation in its expanded view]]
[[File:Composition implementation collapsed.png|frame|center|alt=A Wikifunctions composition implementation in its collapsed view|A Wikifunctions composition implementation in its collapsed view]]
== Wikifunctions error handling ==
As a Wikifunctions function creator, you might want to warn the user calling your function when something goes wrong in the code, or when their inputs do not fit a certain criteria. For example, if your Function expects a string input to contain a name, you might want to check that the name is not empty and, if it is, show an error message that the person using your Function can understand.
For this purpose, you can use <code>Wikifunctions.Error()</code> from your code implementations or the function {{Z|Z851}} from your compositions.
In this section you will learn:
* How to throw errors from both code and composition implementations,
* how to write tests for error cases, and
* how to catch and handle errors thrown by functions that you are using in your compositions.
=== Throwing errors from code implementations ===
When writing code, both from JavaScript and Python, you can use <code>Wikifunctions.Error()</code> to end the execution with a wanted error.
<code>Wikifunctions.Error()</code> has two parameters:
# Error type: a string containing the ZID of the error type you want to return.
# Error arguments: a list of string arguments to build the error.
Let's go one by one:
==== Error type ====
An error type is an object that describes a kind of error that could happen in the system. There are a number of built-in error types but you can also build other error types that are more suited to your use case. When using errors, the best idea is to browse through the available error types, which can be explored in [[Special:ListObjectsByType/Z50|this list]].
If there are no errors that fit your case, create a new one by going to the create page, and selecting "Error type" in the type selector. Then, set the necessary fields:
[[File:Error type.png|thumb|alt=Error type creation in Wikifunctions|To create new Error type (Z50), edit the label and add the necessary keys.]]
* '''Label''' – This is the main title of the error, which should contain a short but descriptive message. Set the error label on the right-side box titled "About".
* '''Keys''' – Keys contain additional information about what caused the error. For example, if an input had the wrong format, you might want to inform the user of what was the input content when raising the error. To use them in your implementations, keys should be strings. To create a key, click on the "[+]" icon below "keys", select "String" under "value type", and add a label that describes it appropriately, for example "current input". Once you have all the necessary keys, you can Publish your error type and keep the ID of the newly created object.
==== Error arguments ====
Error arguments correspond to the keys of the Error type, and they should provide additional information to understand the error. Error arguments should always be Strings.
==== Using Wikifunctions.Error() ====
Say that you want an error to be thrown when either your first or your second input are empty. You have already created the error type, and the assigned ZID was <code>Z30005</code>. Your error type has two string keys:
* Input key: contains the key of the failing input
* Input value: contains the current value of the failing input
To raise an error in your JavaScript implementation you should do something like this:
<syntaxhighlight lang="javascript">
function Z30000( Z30000K1, Z30000K2 ) {
if ( trim( Z30000K1 ) === '' ) {
// If the first input is empty, raise error Z30005
// with two string args: [ first input key, first input value ]
Wikifunctions.Error( 'Z30005', [ "Z30000K1", Z30000K1 ] )
}
if ( trim( Z30000K2 ) === '' ) {
// If the second input is empty, raise error Z30005
// with two string args: [ second input key, second input value ]
Wikifunctions.Error( 'Z30005', [ "Z30000K2", Z30000K2 ] )
}
return Z30000K1 + " " + Z30000K2;
}
</syntaxhighlight>
To raise an error in your Python implementation you should do something like this:
<syntaxhighlight lang="python3">
def Z30000(Z30000K1, Z30000K2):
if Z30000K1.strip() == "":
# If the first input is empty, raise error Z30005
# with two string args: [ first input key, first input value ]
Wikifunctions.Error("Z30005", ["Z30000K1", Z30000K1])
if Z30000K2.strip() == "":
# If the second input is empty, raise error Z30005
# with two string args: [ first input key, first input value ]
Wikifunctions.Error("Z30005", ["Z30000K2", Z30000K2])
return Z30000K1 + " " + Z30000K2
</syntaxhighlight>
Remember that calling <code>Wikifunctions.Error()</code> ends the execution!
=== Throwing errors from compositions ===
If you are creating a composition implementation, you can throw an error by calling the special function {{Z|Z851}}.
==== Throw Error function (Z851) ====
The {{Z|Z851}} function is similar to the <code>Wikifunctions.Error()</code> method and takes two arguments:
* '''Error type''' – A reference to the Error type you want to raise
* '''Error parameters''' – A list with the arguments to create your Error, which should also be Strings.
==== Using Throw Error ====
Say you want to modify your composition so that it first checks that the arguments are not empty, and raises an error when it finds an empty one. Then, if none of them are empty, it runs the original composition, which is:
<syntaxhighlight lang="prolog">
join_with_separator( Z30000K1, Z30000K2, " " )
</syntaxhighlight>
To do this, you need to create conditional paths, for which you can use the {{Z|Z802}} function. Think of it like this:
* If the first argument is empty, throw an error for the first argument
* Else, proceed to check the second argument
* If the second argument is empty, throw an error for the second argument
* Else, proceed with the success path and return the joint strings with the space separator
Or in functional pseudo code:
<syntaxhighlight lang="prolog">
if (
is_empty_string( Z30000K1 ),
throw_error( Z30005, [ "Z30000K1", Z30000K1 ] ),
if(
is_empty_string( Z30000K2 ),
throw_error( Z30005, [ "Z30000K2", Z30000K2 ] ),
join_with_separator( Z30000K1, Z30000K2, " " )
)
)
</syntaxhighlight>
Let's create this step by step:
# Start adding an implementation by clicking on the "+” button in the "Implementations" table from your Function page.
# Make sure that the option "composition" under "Implementation" is selected.
# Click on the "›” icon or click the "Select Function" link to expand the function details.
# Under "function" search and select the outermost function you want to use, which in this case is "if".
# Check the validity of the first argument:
## Next to "condition", click on the "…" button and select "function call"
## Under "function", search and select the function "is empty string"
## Next to "input", click on the "…" button and select "argument reference"
## Under "key id", select the first input (e.g. "first string")
## You can now collapse the "condition" function call if you want, by clicking on the down-chevron next to "condition". You should see something like "f(x) is empty string( → first string )"
# Throw error if the condition is true:
## Next to "then", click on the "…" button and select "function call"
## Under "function", search and select the function "Throw Error"
## Under "error type", search and select your error type (you can directly input the error ID if you know it, e.g. Z30005)
## Under "error parameters", add two items by clicking on the "+" button
## For "Item 1" (offending argument key), set its type to "String" and write the argument identifier (e.g. "first input", or "Z30000K1")
## For "Item 2" (offending argument value), click on the "…" next to "Item 2" and select "argument reference"
## Under "key id", select the first input (e.g. "first string")
## You can now collapse the "then" function call if you want, by clicking on the down-chevron next to "then". You should see something like "f(x) Throw Error( Input was the wrong format, Typed list( Object, "first input", → first string ) )"
# Continue to check the second argument if the first was good:
## Next to "else", click on the "…" button and select "function call"
## Under "function", search and select the function "if"
## Set up "condition" to check the validity of the second argument by following the same process as described in step 5.
## Set up "then" to throw an error for the second argument by following the same process as described in step 6.
# Finally, set up the success path:
## Next to the nested "else", click on the "…" button and select "function call"
## Under "function", search and select the successful function, which in this case can be "join strings with separator"
## Next to "first string", click on the "…" button and set it to "argument reference", then select "first string"
## Next to "second string", click on the "…" button and set it to "argument reference", then select "second string"
## Under "separator" add a space into the text field
The resulting function call should look like this:
[[File:Throw error expanded.png|frame|center|alt=Wikifunctions composition using Throw Error function|Wikifunctions composition using Throw Error function]]
[[File:Throw error collapsed.png|frame|center|alt=Wikifunctions composition using Throw Error function, in its collapsed view|Wikifunctions composition using Throw Error function, in its collapsed view]]
=== Handling errors in compositions ===
While it is useful to allow functions to raise expected errors, it is crucial to be able to handle errors in your compositions in order to safely use these functions.
Say you want to create a new function "full name of a person" – we will refer to it with the ZID <code>Z30010</code>. This function should return the full name of a person given a first and last names, but if any of the two fields are empty, it should return the text "Unknown" instead.
You could create a composition using our example function "Join two strings with a space" or <code>Z30000</code> to generate the name. If any of the inputs are empty, you know that <code>Z30000</code> will throw an error of type <code>Z30005</code>. Using the function {{Z|Z850}} as a wrapper, you can attempt the join operation and intercept a possible error to simply return "Unknown" whenever it occurs.
==== Try-Catch function (Z850) ====
The {{Z|Z850}} function is built-in with ZID <code>Z850</code> and takes three arguments:
* '''Function call''' – The initial function call to run. If nothing goes wrong, the response will be the result of this function call.
* '''Error type''' – An error type to catch in case it is thrown during the execution of the first function call.
* '''Error handler''' – A function call that will be run in case the error specified above is caught during the execution of the initial function call. If that happens, the result of the error handler will be the value returned.
==== Using Try-Catch ====
Once we have all the functions for our composition, we can craft it like this:
<syntaxhighlight lang="prolog">
try_catch(
join_with_space( Z30010K1, Z30010K2 ),
Z30005,
echo( "Unknown" )
)
</syntaxhighlight>
This means that:
* The "Join two strings with a space" function will be tried with the two inputs and, if everything goes well, the output of this function will be returned
* If any of the inputs are blank, "Join two strings with a space" with raise an error of type <code>Z30005</code>
* Our {{Z|Z850}} will then detect this error and run the {{Z|Z801}} function to return "Unknown"
Let's create this step by step:
# Start adding an implementation by clicking on the "+" button in the "Implementations" table from your Function page.
# Make sure that the option "composition" under "Implementation" is selected.
# Click on the "›” icon or click the "Select Function" link to expand the function details.
# Under "function" search and select the outermost function you want to use, which in this case is "Try-Catch".
# Set the main function call:
## Under the field where the "Try-Catch" function is selected, next to the "function call" key, click on the "…" button and select "function call"
## Under "function" search and select the function "join two strings with space"
## Next to "first string", click on the "…" button and select "argument reference", then select the "first name" argument from the dropdown.
## Next to "second string", click on the "…" button and select "argument reference", then select the "second name" argument from the dropdown.
# Select the error to catch:
## Under "error type", search and select "bad string input" – you can search directly by its ZID <code>Z30005</code>
# Set the error handler function call:
## Next to "error handler", click on the "…" button and select "function call"
## Under "function", search and select the function "echo"
## Under "input" and "type", search and select the type "String"
## Now, under "input", type "Unknown" in the text field
The resulting function should look like this:
[[File:Try catch expanded.png|frame|center|alt=Wikifunctions composition using Try-catch function, in expanded mode|Wikifunctions composition using Try-catch function, in expanded mode]]
[[File:Try catch collapsed.png|frame|center|alt=Wikifunctions composition using Try-catch function, in collapsed mode|Wikifunctions composition using Try-catch function, in collapsed mode]]
=== Testing your failure use cases ===
As we introduced in the above section about [[#Practice Test-Driven Development|practicing TDD]], it's important to test not only the most common paths, but also the possible edge cases. It is equally important to test failure behavior. In this section we will give you the tools necessary to test that your function fails with a given set of inputs, and that the error thrown is the expected one.
To do that, you will need other two system functions:
==== Is error type (Z852) ====
The {{Z|Z852}} function is built-in with ZID <code>Z852</code> and takes two arguments:
* '''Error''' – An {{Z|Z5}} object, which can be thrown by a failing call. An error instance has a type and a value.
* '''Error type''' – A reference to an {{Z|Z50}} which will be compared to the type of the Error passed as a first argument. If that's the case, the function will return true.
==== Get error thrown by function call (Z853) ====
The {{Z|Z853}} function is built-in with ZID <code>Z853</code> and takes one argument:
* '''Function call''' – A function call which can either return a successful value of any type, or throw an error.
This function returns a {{Z|Z882}} with a {{Z|Z40}} in first place and an {{Z|Z1}} in the second:
* If the Function call runs successfully and hence does not throw any error, the returned pair will contain False in the first place, and void in the second.
* If the Function call throws an error, the returned pair will contain True in the first place, and the caught error in the second.
To use this function in your compositions, you might need to use the additional functions:
* {{Z|Z821}}, and
* {{Z|Z822}}
==== Testing errors ====
Say our target function, "Join two strings with a space" or <code>Z30000</code>, throws an error of type <code>Z30005</code> and we want to test this behavior. To do that we need to:
* Throw a failing function call
* Get the error using the function {{Z|Z853}}
* Check that the error is the right type with {{Z|Z852}}
Tests have two fields:
* '''Call''' – A function call that will produce an output with the inputs you want to test. This call will return a value.
* '''Result validation''' – A function call that will validate that the value returned by the call above is the expected one. The first argument of this function call will be automatically assigned to take the return value of the first call.
For step-by-step instructions on how to create tests, see {{ll|Wikifunctions:Introduction#Create_tests}}.
In our example, we can structure it like this — but this is not the only way!
The call, which will return an {{Z|Z5}} object:
<syntaxhighlight lang="prolog">
error = get_second_element_of_typed_list(
get_error_thrown_by(
join_strings_by_whitespace( "", "not empty" )
)
)
</syntaxhighlight>
And the result validation, which will take the {{Z|Z5}} object as its first argument:
<syntaxhighlight lang="prolog">
is_error_type( error, Z30005 )
</syntaxhighlight>
Let's do this step by step:
# Start adding a test by clicking on the "+" button in the "Tests" table from your Function page. The "call" and "result validation" fields already have some functions pre-set, but to test the errors we will need to change them.
# First, let's set the call:
## Under "call", click the "›" chevron button to expand the function call.
## Under "function", edit the field and search and select the function "Get second element of a typed pair"
## Once selected, next to "Typed pair", click on the "…" button and select "function call"
## Under "function", search and select the function "Get error thrown by function call"
## Next to "function call", click on the "…" button and select "function call"
## Under "function", search and select the function "Join two strings with a space" (or by ZID <code>Z30000</code>)
## Now set the inputs so that they cause a failure: at least one of them should be empty.
## You can now collapse your "call" by clicking again on the down-chevron button if you want!
# Next, let's set the result validation:
## Under "result validation", click the "›" chevron button to expand the function call.
## Under "function", edit the field and search and select the function "Is error type"
## Now you will only be asked to configure the second argument. Under "error type", search and select your <code>Z30005</code> error type.
# And you are done! You can now click the circular arrow in the "Implementations" box and you should see green checks.
If everything went right, you can now save your test. It should look like this:
[[File:Get error expanded.png|frame|center|alt=Testing a failure using Get error and Is error type functions, in expanded mode|Testing a failure using Get error and Is error type functions, in expanded mode]]
[[File:Get error collapsed.png|frame|center|alt=Testing a failure using Get error and Is error type functions, in collapsed mode|Testing a failure using Get error and Is error type functions, in collapsed mode]]
== Debugging your implementations ==
Sometimes things can go wrong. A function might behave differently than expected or a value might not look quite right. Sometimes implementations are really complex and, because they are run in a sandboxed environment, it can seem really difficult to debug. To help understand what's going on inside a function call, Wikifunctions includes a small set of debugging tools.
These tools don't change the result of a function, but will add extra information to the returned metadata, which you can observe after running the function. You can use <code>Wikifunctions.Debug()</code> from your code implementations or the function {{Z|Z854}} from your compositions.
In this section you will learn:
* How to add debug messages from both code and composition implementations,
* how to inspect the metadata manually or via the UI to inspect these logs.
=== Debugging your code implementations ===
When writing code, both from JavaScript and Python3, you can use <code>Wikifunctions.Debug()</code> to add a message to your debugging log and continue the execution.
<code>Wikifunctions.Debug()</code> has one parameter, which is generally expected to be a string. However, any other object passed as parameter will get directly converted into a string.
If we want to add debug logs to our code implementations for our "Join two strings with a space" example function, we can do, in JavaScript:
<syntaxhighlight lang="JavaScript">
function Z30000( Z30000K1, Z30000K2 ) {
if ( trim( Z30000K1 ) === '' ) {
Wikifunctions.Debug( `first input is empty "${ Z30000K1 }"` );
Wikifunctions.Error( 'Z30005', [ "Z30000K1", Z30000K1 ] )
}
if ( trim( Z30000K2 ) === '' ) {
Wikifunctions.Debug( `second input is empty "${ Z30000K2 }"` );
Wikifunctions.Error( 'Z30005', [ "Z30000K2", Z30000K2 ] )
}
Wikifunctions.Debug( "both inputs are fine" );
return Z30000K1 + " " + Z30000K2;
}
</syntaxhighlight>
And the same in your Python3 implementation will be:
<syntaxhighlight lang="python3">
def Z30000(Z30000K1, Z30000K2):
if Z30000K1.strip() == "":
Wikifunctions.Debug( 'first input is empty "'+Z30000K1+'"' )
Wikifunctions.Error("Z30005", ["Z30000K1", Z30000K1])
if Z30000K2.strip() == "":
Wikifunctions.Debug( 'second input is empty "'+Z30000K2+'"' )
Wikifunctions.Error("Z30005", ["Z30000K2", Z30000K2])
Wikifunctions.Debug( 'both inputs are fine' )
return Z30000K1 + " " + Z30000K2
</syntaxhighlight>
This way, no matter what happens, we will be adding one message to your debugging logs:
* If the function call fails when checking on the first or second input, the result of the execution will be a failure, but it will contain one informative log about what branch caused the failure.
* If the function call succeeds—because both inputs are valid—the function call will return the joined string, but the returned metadata will also contain a debug log.
=== Debugging your compositions ===
To support debugging compositions, Wikifunctions provides the built-in function {{Z|Z854}}. This function allows you to attach debug messages to the execution of any function call that generates the final output. The debug logs collected during the evaluation are returned as part of the execution metadata, under the <code>executorDebugLogs</code> key.
==== Add debug log to function call (Z854) ====
The {{Z|Z854}} function is built-in with ZID <code>Z854</code> and takes two arguments:
* '''Function call''' – Any composition you want to execute.
* '''Debug log''' – A string message that will be recorded if the given function call is evaluated.
When the wrapped function call runs, the provided message is added to the execution logs. If that function call is not executed, or its execution is not part of the final output, its debug log will not appear in the final result metadata.
You will benefit from this built-in if you want to observe:
* Which branch of a conditional was executed, or
* the order of evaluation in a composition.
==== Using Add debug log to function call ====
Say that you want to add debug logs to our example function "Join two strings with a space" or <code>Z30000</code>, so that different messages are added to the different possible outcomes. You could use our debugging builtin like this:
<syntaxhighlight lang="prolog">
if (
is_empty_string( Z30000K1 ),
add_debug_log( throw_error( Z30005, ... ), 'failed on first input' )
if(
is_empty_string( Z30000K2 ),
add_debug_log( throw_error( Z30005, ... ), 'failed on second input' ),
add_debug_log(
join_with_separator( Z30000K1, Z30000K2, " " ),
'both inputs are ok!'
)
)
)
</syntaxhighlight>
This way,
* when called with an empty first input, the function will return a failed response, and the metadata will contain an <code>executorDebugLogs</code> entry with the "failed on first input" log.
* When called with an empty second input, the call will also fail, but the logged message will be "failed on second input"
* When called with valid inputs, the function will return a successful response, and additionally the metadata will contain "both inputs are ok" in its <code>executorDebugLogs</code> key.
This is the way this composition would look:
[[File:Add debug log expanded.png|frame|center|alt=Composition implementation using Add debug logs to log all possible execution paths|Composition implementation using Add debug logs to log all possible execution paths]]
=== Accessing execution debug logs ===
Whether your execution logs are added via <code>Wikifunctions.Debug()</code> or via the {{Z|Z854}} built-in function, they are returned as part of the response metadata. To see the logs, once you run your function, click on the "Details" button that appears at the bottom of the "Result" section.
The error and debug information will appear at the top of the "Details" dialog.
This is what you would see when running the composition from our previous example with valid and invalid inputs:
{| class="wikitable"
| [[File:Execution logs success.png|frameless|center|alt=Function metadata dialog for a successful execution with debug logs]]
| [[File:Execution logs failure.png|frameless|center|alt=Function metadata dialog for a failed execution with debug logs]]
|-
| Function metadata dialog for a successful execution: shows no errors, but displays the successful execution log: ''"both inputs are ok!"''
| Function metadata dialog for a failed execution: shows the error information, and the additional execution log for the first failure branch: ''"failed on first input"''
|}
[[Category:How to create implementations| {{#translation:}}]]
ds93ex6onrk1mrqa53zw6z2qrkr2ass
Wikifunctions:FAQ/bn
4
9168
296910
234237
2026-08-06T18:01:54Z
FuzzyBot
207
Updating to match new version of source page
296910
wikitext
text/x-wiki
<languages/>
{{shortcut|[[WF:FAQ]]}}
এটি উইকিফাংশন সম্পর্কে প্রায়শই জিজ্ঞাসিত প্রশ্ন সম্পর্কিত একটি পাতা। আপনার নিজের কোনো প্রশ্ন থাকলে এবং তা যদি এই তালিকায় না থাকে তবে অনুগ্রহ করে [[Wikifunctions talk:FAQ|আলাপ পাতায়]] তা বলুন।
এছাড়াও, উইকিফাংশন এবং বিমূর্ত উইকিপিডিয়া সম্পর্কে আরও সাধারণ প্রশ্নগুলির বিষয়ে আমাদের [[:m:Special:MyLanguage/Abstract Wikipedia/FAQ|মেটাতে প্রাজিপ্র]] বিবেচনা করুন।
__TOC__
<span id="Introduction"></span>
== ভূমিকা ==
<span id="What_is_this_project_about?"></span>
=== এই প্রকল্পটি কী সম্পর্কে? ===
উইকিফাংশন হলো একটি নতুন উইকিমিডিয়া প্রকল্প যা যে কেউ কল করতে, লিখতে, রক্ষণাবেক্ষণ এবং ব্যবহার করতে পারে এমন সব ধরনের ফাংশনের ক্যাটালগ প্রদান করে। এটি এমন অন্তর্নিহিত প্রযুক্তিও প্রদান করে যা শেষ পর্যন্ত বিমূর্ত উইকিপিডিয়া থেকে ভাষা-স্বাধীন নিবন্ধগুলোকে যেকোনো উইকিপিডিয়ার ভাষায় অনুবাদ করতে সক্ষম করবে। এটি প্রত্যেককে অবদান রাখতে এবং তাদের পছন্দের ভাষায় নিবন্ধ পড়ার সুযোগ দেবে।
<span id="What_is_a_function?"></span>
=== একটি ফাংশন কী? ===
ফাংশন হল জ্ঞানের একটি রূপ যা দুটি তারিখের মধ্যে কত দিন কেটে গেছে বা দুটি শহরের মধ্যে দূরত্বের মতো প্রশ্নের উত্তর দিতে পারে। আরও জটিল ফাংশনগুলি আরও জটিল প্রশ্নের উত্তর দিতে পারে, যেমন ত্রিমাত্রিক আকৃতির আয়তন, একটি নির্দিষ্ট তারিখে মঙ্গল ও শুক্রের মধ্যে দূরত্ব, অথবা একই সময়ে দুটি প্রজাতি জীবিত ছিল কিনা।
<div class="mw-translate-fuzzy">
আমরা ইতিমধ্যেই অনেক ধরণের জ্ঞান অনুসন্ধানে ফাংশন ব্যবহার করি, যেমন একটি সার্চ ইঞ্জিনকে প্রশ্ন জিজ্ঞাসা করা। এছাড়াও ইংরেজি উইকিপিডিয়াতে টেমপ্লেটগুলি, যেমন [[:w:en:Template:Convert|টেমপ্লেট:convert]] এবং [[:w:en:Template:Age|টেমপ্লেট:age]], ফাংশন সমূহের উদাহরণ যা ইতিমধ্যে অনেক উইকিপিডিয়াতে ব্যবহৃত হয়েছে। টেমপ্লেট গুলো উইকিপাঠ্য এবং লুয়াতে লেখা এবং প্রতিটি উইকি যেখানে এটি চায় সেখানে ম্যানুয়ালি কপি করা হয়েছে।
</div>
<span id="What_is_an_implementation?"></span>
=== বাস্তবায়ন কী? ===
বাস্তবায়ন হল একটি ফাংশন কার্যকর করার একটি নির্দিষ্ট উপায়। বাস্তবায়ন হল এমন একটি প্রণালী যা ফাংশনটি চালানোর জন্য প্রয়োজনীয় পদক্ষেপগুলি তালিকাভুক্ত করে। এটি একটি প্রোগ্রামিং ভাষার কোডের অংশ হতে পারে, অথবা অন্যান্য ফাংশনে কলের সংমিশ্রণ হতে পারে। একটি ফাংশনের অনেক বাস্তবায়ন থাকতে পারে, যা সবগুলিই সমতুল্য হওয়া উচিত।
<span id="What_is_a_test?"></span>
=== একটি পরীক্ষা কী? ===
একটি পরীক্ষা হল একটি প্রদত্ত ফাংশন সঠিক কাজ করছে কিনা তা নির্ধারণ করার একটি উপায়। একটি ফাংশনে সাধারণত একাধিক পরীক্ষক থাকবে, প্রতিটি পরীক্ষক ফাংশনে কিছু ইনপুট নির্দিষ্ট করে এবং প্রদত্ত ইনপুটের জন্য আউটপুটকে অবশ্যই শর্ত পূরণ করতে হবে।
উদাহরণস্বরূপ, একটি "টাইটেল কেস" ফাংশনের জন্য পরীক্ষক গুলো অন্তর্ভুক্ত করতে পারে: "<span dir="ltr" lang="en">abc</span>" হওয়া উচিত "<span dir="ltr" lang="en">Abc</span>"; "<span dir="ltr" lang="en">war and peace</span>" হওয়া উচিত "<span dir="ltr" lang="en">War and Peace</span>"; "<span dir="ltr" lang="ru">война и мир</span>" হওয়া উচিত "<span dir="ltr" lang="ru">Война и мир</span>"; এবং "<span dir="ltr" lang="en">123</span>" থাকা উচিত "<span dir="ltr" lang="en">123</span>" হিসেবেই।
<span id="Which_features_are_available_now,_which_will_be_soon_available,_and_which_are_further_away?"></span>
=== কোন বৈশিষ্ট্যগুলি এখন উপলব্ধ, কোনটি শীঘ্রই উপলব্ধ হবে এবং কোনটি আরও দূরে? ===
* লঞ্চের সময়:
** আমাদের অক্ষরসারি বা স্ট্রিং এবং বুলিয়ানের সাথে কাজ করে এমন ফাংশন রাখার ক্ষমতা রয়েছে।
** উইকিফাংশন শুরু থেকেই সম্পূর্ণ আন্তর্জাতিকীকৃত হবে। এটি যেকোনো ভাষায় ব্যবহার করা যেতে পারে।
* [[Wikifunctions:Status|চলমান উন্নয়ন]]:
** সাধারণ ধরণ এবং সাধারণ ফাংশন সম্পূর্ণরূপে সমর্থিত নয়।
** আপাতত একটি ধরণ যুক্ত করা কেবল উন্নয়নকারী দলের জন্যই সীমাবদ্ধ। ভবিষ্যতে, সম্প্রদায় আরও ধরণ যোগ করতে সক্ষম হবে। ধরনগুলিকে আরও মসৃণ আচরণ করানোর জন্য ভবিষ্যতে অনেক কাজ করতে হবে।
*** একটি বিশেষ আকর্ষণীয় প্রকার হবে বাইনারি উপাত্ত এবং বিশেষ করে ফাইল।
** আমরা বর্তমানে বাস্তবায়নের জন্য দুটি প্রোগ্রামিং ভাষা সমর্থন করি: জাভাস্ক্রিপ্ট এবং পাইথন। ভবিষ্যতে আমরা আরও অনেকগুলো সমর্থন করতে চাই।
** প্রোগ্রামিং ভাষায় লিখিত বাস্তবায়ন থেকে অন্যান্য ফাংশনকে কল করা বর্তমানে ''সম্ভব নয়''। এটি বর্তমানে শুধুমাত্র প্রণয়নের মাধ্যমেই সম্ভব।
* ভবিষ্যতে:
** অন্যান্য উইকিমিডিয়া প্রকল্প থেকে উইকিফাংশনের ফাংশন কল করা সম্ভব হবে, এবং পাতার আউটপুটের মধ্যে তাদের ফলাফল একত্রিত করা সম্ভব হবে।
** ফাংশনে উইকিউপাত্ত থেকে উপাত্ত ব্যবহার করা সম্ভব হবে।
** কমন্সের উপাত্ত নামস্থান থেকে উপাত্ত সেট কল করা সম্ভব হবে।
<span id="How_is_Wikifunctions_multilingual?"></span>
=== কিভাবে উইকিফাংশন বহুভাষিক? ===
{{main|Special:MyLanguage/Help:Multilingual}}
উইকিফাংশন এবং বিমূর্ত উইকিপিডিয়া বিভিন্ন উপায়ে বহুভাষিক যা একে অপরকে প্রভাবিত করে না:
* '''উইকিফাংশন এর বিষয়বস্তু এবং ইউজার ইন্টারফেসের দিক থেকে বহুভাষিক।''' ব্যবহারকারীরা যেকোনো প্রাকৃতিক ভাষায় উইকিফাংশনে ফাংশন পড়তে এবং কল করতে পারেন। এখানে [https://www.wikifunctions.org/view/en/Z10000 ইংরেজি], [https://www.wikifunctions.org/view/pl/Z10000 পোলিশ] এবং [https://www.wikifunctions.org/view/he/Z10000 হিব্রু] ভাষায় "অক্ষরসারি সংযোগ" ফাংশন রয়েছে এবং এটি আরও অনেক ভাষায় উপলব্ধ।
* '''অবদানকারীরা তাদের ভাষা ব্যবহার করে উইকিফাংশন সম্পাদনা ও উন্নতি করতে পারে।''' এমনকি বাস্তবায়নও অবদানকারীর স্বাভাবিক ভাষায় সম্পাদনা করা যেতে পারে। উদাহরণস্বরূপ, "এবং" ফাংশনের বাস্তবায়নটি [https://www.wikifunctions.org/wiki/Z11223?action=edit&uselang=de জার্মান], [https://www.wikifunctions.org/wiki/Z11223?action=edit&uselang=en ইংরেজি], বা প্রায় ৩০০টি ভাষার অন্য যে কোনোটিতে সম্পাদনা করা যেতে পারে।
* '''উইকিফাংশনের ফাংশন গুলো ব্যবহার করা যেতে পারে কোনো প্রাকৃতিক ভাষার জন্য ফলাফল তৈরি করতে।''' সম্প্রদায় অনেকগুলি প্রাকৃতিক ভাষায় পাঠ্য তৈরি করতে সহায়তা করার জন্য ক্রমবর্ধমান সংখ্যক ফাংশন তৈরি করছে। আমাদের [[Wikifunctions:Catalogue#Breton|ব্রেটন]], [[Wikifunctions:Catalogue#Rohingya|রোহিঙ্গা]], [[Wikifunctions:Catalogue#English|ইংরেজি]] এবং অন্যান্য অনেক ভাষার জন্য ফাংশন আছে।
* '''উইকিফাংশনের ফাংশনগুলি বিভিন্ন প্রোগ্রামিং ভাষায় প্রয়োগ করা যেতে পারে।''' উদাহরণস্বরূপ, [[Z10000|ফাংশন সংযোগ]]-কে [[Z10005|জাভাস্ক্রিপ্ট]] এবং [[Z10004|পাইথন]] উভয় ক্ষেত্রেই প্রয়োগ করা হয়েছে।
<span id="Which_programming_languages_does_Wikifunctions_currently_support?_Which_programming_languages_will_be_supported_in_the_future?"></span>
=== উইকিফাংশন বর্তমানে কোন প্রোগ্রামিং ভাষাগুলো সমর্থন করে? কোন প্রোগ্রামিং ভাষা ভবিষ্যতে সমর্থিত হবে? ===
{{main|WF:programming languages}}
বর্তমানে, উইকিফাংশন জাভাস্ক্রিপ্ট এবং পাইথনে লিখিত বাস্তবায়নকে সমর্থন করে। আমরা ভবিষ্যতে আরও প্রোগ্রামিং ভাষার জন্য সমর্থন যোগ করার পরিকল্পনা করছি। আমরা ২০২৫ সালে কমপক্ষে আরও একটি প্রোগ্রামিং ভাষা যুক্ত করার আশা করছি (তবে এখনও কোনটি সিদ্ধান্ত নেওয়া হয়নি)।
<span id="How_will_Wikifunctions_be_integrated_into_other_projects?"></span>
=== কীভাবে উইকিফাংশন অন্যান্য প্রকল্পের সাথে ইন্টিগ্রেট হবে? ===
উইকিফাংশন হল বিমূর্ত উইকিপিডিয়া তৈরির প্রথম পদক্ষেপ। আমাদের নিকট মেয়াদী লক্ষ হবে সম্প্রদায়কে সমর্থন করা এবং প্রতিক্রিয়ার উপর ভিত্তি করে উন্নতি করা। একই সঙ্গে আমরা এটিকে উইকিপিডিয়া এবং উইকিউপাত্তের সঙ্গে একীভূত করার প্রক্রিয়া শুরু করব, যা বৃহত্তর বাস্তব জীবনের প্রয়োগগুলিকে সক্ষম করবে এবং আমাদের বিমূর্ত উইকিপিডিয়ার দৃষ্টিভঙ্গির কাছাকাছি নিয়ে যাবে।
অবদানকারীরা তাদের উইকির মধ্যে থেকে উইকিফাংশন সাইটে সংরক্ষিত ফাংশন কল করতে সক্ষম হবে। ফাংশন কলের ফলাফল উইকির পাঠকদের কাছে প্রদর্শিত হবে। উদাহরণস্বরূপ, একজন ব্যক্তির বয়স গণনা করতে, উইকিউপাত্ত থেকে জনসংখ্যা এবং এলাকার তথ্যের উপর ভিত্তি করে জনসংখ্যার ঘনত্ব নির্ণয়ে, অথবা একটি গ্রাফ আঁকা এবং একটি প্রদত্ত নিবন্ধে এটি একীভূত করা।
উইকিফাংশনকে একীভূত করার আরেকটি বিকল্প হবে তাদের উইকির মধ্যে একটি ইন্টারেক্টিভ ফাংশন কল ইন্টারফেসকে সংহত করা। উদাহরণস্বরূপ, একটি উইকিপিডিয়া নিবন্ধে পাঠক প্রদত্ত পরামিতিগুলির উপর ভিত্তি করে একটি ভৌত সমীকরণের ফলাফল গতিশীলভাবে গণনা করতে, গাণিতিক ক্রিয়াকলাপের সাথে আঁকতে এবং যোগাযোগ করতে এটি ব্যবহার করা যেতে পারে।
<span id="What_Wikifunctions_is_not"></span>
<div class="mw-translate-fuzzy">
=== উইকিফাংশন কী নয়? ===
</div>
এর জন্য আরও তথ্যের জন্য অনুগ্রহ করে [[Special:MyLanguage/Wikifunctions:What Wikifunctions is not|উইকিফাংশন কী নয়]] পাতাটি দেখুন।
<span id="What_license_will_the_functions_and_derived_content_be_under?"></span>
=== ফাংশন এবং প্রাপ্ত বিষয়বস্তু কোন লাইসেন্সের অধীনে থাকবে? ===
[[:m:Special:MyLanguage/Abstract Wikipedia/Licensing discussion|মেটায় নভেম্বর এবং ডিসেম্বর ২০২১ এ]] হওয়া আলোচনা অনুসারে, উইকিফাংশন এবং বৃহত্তর বিমূর্ত উইকিপিডিয়া প্রকল্পগুলোতে সমস্ত অবদান বিনামূল্যে লাইসেন্সের অধীনে প্রকাশিত হবে। নির্দিষ্টভাবে:
* উইকিফাংশনে [[Special:MyLanguage/Wikifunctions:Glossary#Content|পাঠ্য বিষয়বস্তু]] [[w:Creative Commons license|সিসি বাই-এসএ ৪.০]] এর অধীনে প্রকাশিত হবে।
* [[Special:MyLanguage/Wikifunctions:Glossary#Function|ফাংশনের সিগনেচার]] এবং উইকিফাংশনের অন্যান্য কাঠামোগত বিষয়বস্তু [[w:CC0|সিসি ০]] এর অধীনে প্রকাশিত হবে।
* উইকিফাংশনে [[Special:MyLanguage/Wikifunctions:Glossary#Implementation|কোড বাস্তবায়ন]] [[w:Apache License|অ্যাপাচি ২ লাইসেন্সের]] অধীনে প্রকাশিত হবে।
* বিমূর্ত উইকিপিডিয়ার [[Special:MyLanguage/Wikifunctions:Glossary#Content|বিমূর্ত বিষয়বস্তু]] সিসি বাই-এসএ ৪.০ এর অধীনে প্রকাশিত হবে।
এখনও কিছু বিষয় রয়েছে যা ভবিষ্যতে সমাধান করা প্রয়োজন, যেমন বিমূর্ত বিষয়বস্তু থেকে উত্পন্ন বিষয়বস্তুর লাইসেন্স। লাইসেন্স মেনে চলার সময় লোকজন কীভাবে উইকিফাংশন থেকে যতটা সম্ভব কম ব্যথাহীনভাবে কোডটি পুনরায় ব্যবহার করতে পারে সে সম্পর্কে আমরা আইনি বিভাগের সাথে আরও বিস্তৃত নথির খসড়া তৈরি করার পরিকল্পনা করছি।
<span id="Contributing"></span>
== অবদান ==
<span id="I'm_new_here._What_is_there_for_me_to_do_and_how_can_I_help?"></span>
=== আমি এখানে নতুন। আমার কী করার আছে এবং আমি কিভাবে সাহায্য করতে পারি? ===
স্বাগত! আমরা আপনাকে এখানে পেয়ে খুব খুশি! নতুন ফাংশন তৈরি করা থেকে শুরু করে ডকুমেন্টেশনের উন্নতি এবং অনুবাদ করার জন্য উইকিফাংশনে অবদান রাখার অনেক সুযোগ রয়েছে। আপনি যদি এতে জড়িত হওয়ার উপায় খুঁজে থাকেন, তাহলে আমরা সুপারিশ করছি যে, আপনার স্বাচ্ছন্দ্যের উপর ভিত্তি করে, আপনি আপনার আগ্রহের বিষয়ে একটি নতুন ফাংশনের পরামর্শ দিন। অথবা এমন একটি ফাংশন তৈরি করুন। কিছু টেস্ট প্রদান করুন। এটি বাস্তবায়নে চেষ্টা করুন। অনুবাদে সাহায্য করুন। আমাদের ডকুমেন্টেশন/নথিপত্র উন্নয়নে সাহায্য করুন এবং তা পড়ুন। সম্প্রদায় সংগঠিত করতে সাহায্য করুন।
<span id="How_do_I_create_a_new_function,_implementation,_or_test?"></span>
=== আমি কিভাবে একটি নতুন ফাংশন, বাস্তবায়ন, বা পরীক্ষা তৈরি করব? ===
কিভাবে একটি নতুন ফাংশন, বাস্তবায়ন, বা পরীক্ষা তৈরি করা যায় তা জানতে [[Special:MyLanguage/Wikifunctions:Introduction|উইকিফাংশন:ভূমিকা]] দেখুন।
কিভাবে একটি বাস্তবায়ন তৈরি করতে হয় তা বিস্তারিতভাবে জানতে দেখুন [[Special:MyLanguage/Wikifunctions:How to create implementations|উইকিফাংশন:কিভাবে বাস্তবায়ন তৈরি করতে হয়]]।
<span id="What_should_I_edit_first?"></span>
=== আমার প্রথমে কী সম্পাদনা করা উচিত? ===
আপনি যদি বেশ কয়েকটি ভাষা লিখতে পারেন, তাহলে [[Special:ListMissingLabels]] পাতায় এমন ফাংশনগুলো খুঁজে বের করুন যেগুলোর লেবেল এবং বর্ণনা এখনও আপনার ভাষায় নেই এবং এগুলি যোগ করতে সহায়তা করুন৷
আপনার যদি এমন একটি বিষয়ের প্রতি আগ্রহ থাকে যা উইকিফাংশনের ফাংশনগুলিকে বৈশিষ্ট্যযুক্ত করতে পারে, কিন্তু এখনও সেগুলো তৈরী হয়নি বা আপনার যদি ফাংশনগুলির জন্য আরও ধারণা থাকে, তাহলে [[Wikifunctions:Suggest a new function|নতুন ফাংশনগুলির পরামর্শ দেওয়া]] পৃষ্ঠায় যান এবং আপনার ধারণাগুলি বর্ণনা করুন৷
আপনি যদি জাভাস্ক্রিপ্ট বা পাইথনের কোডার হন, তাহলে হয়তো আপনি এমন ফাংশনগুলি পরীক্ষা করতে চাইবেন যেগুলির এখনও জাভাস্ক্রোপ্ট বা পাইথনে বাস্তবায়ন নেই, এবং সেগুলি লেখার চেষ্টা করুন।
<span id="Where_can_I_go_for_help?"></span>
=== সাহায্যের জন্য কোথায় যাবো? ===
আপনার প্রথম ঠিকানা হওয়া উচিত [[Special:MyLanguage/Help:Contents|সাহায্য প্রবেশদ্বার]] যেখানে আপনি উইকিফাংশনের ব্যবহার এবং সম্পাদনা সংক্রান্ত সমস্ত নথি পাবেন। আপনি যদি এখনও আটকে থাকেন তবে [[Wikifunctions:Project chat|প্রকল্প আড্ডায়]] একটি বার্তা লিখুন, এবং কেই আপনার প্রশ্নের উত্তর দেবে।
<span id="How_do_we_sort_or_categorize_functions?"></span>
=== আমরা কিভাবে ফাংশন বাছাই বা শ্রেণীবদ্ধ করব? ===
{{Tracked|T285424}}
<div class="mw-translate-fuzzy">
আপাতত, ফাংশনগুলিকে সাজানোর বা শ্রেণীবদ্ধ করার সর্বোত্তম উপায় হল উইকিফাংশন নামস্থানে পৃষ্ঠাগুলির মাধ্যমে হাত দ্বারাই এটি করা। আরেকটি বিকল্প হবে প্রদত্ত ফাংশনের আলাপ পাতার মাধ্যমে। আমরা এই প্রচেষ্টাগুলি পর্যবেক্ষণ করব এবং সম্প্রদায়ের সঙ্গে আলোচনা করব যে সিস্টেম এ কোন পরিবর্তনগুলি এই কাজের জন্য সহায়ক হবে।
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== How can I setup the software locally to hack on it? ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
See [[Special:MyLanguage/Wikifunctions:Hacking on the evaluator and orchestrator|Hacking on the evaluator and orchestrator]].
</div>
[[Category:FAQ| {{#translation:}}]]
dulpyn74063266lozjf56baegttrz7p
Wikifunctions:FAQ/id
4
9216
296919
234246
2026-08-06T18:01:58Z
FuzzyBot
207
Updating to match new version of source page
296919
wikitext
text/x-wiki
<languages/>
{{shortcut|[[WF:FAQ]]}}
Ini adalah halaman khusus untuk Soal Sering Ditanya (SSD) tentang Wikifunctions. Silakan ajukan pertanyaan Anda sendiri di [[Wikifunctions talk:FAQ|halaman pembicaraan]] jika pertanyaan Anda tidak tercantum di sini!
Selain itu, pertimbangkan untuk melihat daftar [[:m:Special:MyLanguage/Abstract Wikipedia/FAQ|SSD di Meta]] mengenai pertanyaan yang lebih umum mengenai Wikifunctions dan Wikipedia Abstrak.
__TOC__
<span id="Introduction"></span>
== Pendahuluan ==
<span id="What_is_this_project_about?"></span>
=== Proyek apakah ini? ===
Wikifunctions adalah proyek Wikimedia baru yang menyediakan katalog dari berbagai jenis fungsi yang dapat dipanggil, ditulis, dipelihara, dan digunakan oleh siapa saja. Ia juga menyediakan teknologi dasar yang pada akhirnya akan memungkinkan terjemahan artikel bebas-bahasa dari Wikipedia Abstrak ke Wikipedia bahasa apa pun. Dengan demikian, semua orang dapat berkontribusi dan membaca artikel dalam bahasa yang mereka sukai.
<span id="What_is_a_function?"></span>
=== Apa itu "fungsi"? ===
Fungsi adalah bentuk pengetahuan yang dapat menjawab pertanyaan, seperti berapa hari telah berlalu antara dua tanggal atau jarak antara dua kota. Fungsi yang lebih rumit dapat menjawab pertanyaan yang lebih rumit, seperti volume dari bangun ruang tiga dimensi, jarak antara Mars dan Venus pada tanggal tertentu, atau apakah dua spesies hidup pada saat yang sama.
<div class="mw-translate-fuzzy">
Kita sudah menggunakan fungsi dalam berbagai jenis pencarian pengetahuan, seperti bertanya ke mesin pencari. Templat, seperti [[:w:en:Template:Convert|Template:Convert]] dan [[:w:en:Template:Age|Template:Age]] di Wikipedia bahasa Inggris, juga merupakan contoh fungsi yang sudah digunakan banyak Wikipedia, ditulis dalam teks wiki dan Lua serta disalin secara manual ke setiap wiki yang menginginkannya.
</div>
<span id="What_is_an_implementation?"></span>
=== Apa itu implementasi? ===
Implementasi adalah cara tertentu untuk mengeksekusi fungsi. Implementasi adalah resep yang mencantumkan langkah-langkah yang diperlukan untuk menjalankan fungsi. Ia bisa jadi merupakan sepotong kode dalam suatu bahasa pemrograman, atau kombinasi panggilan untuk fungsi-fungsi lain. Sebuah fungsi dapat memiliki banyak implementasi, yang semuanya harus setara.
<span id="What_is_a_test?"></span>
=== Apa itu tes? ===
Tes adalah cara untuk menentukan apakah suatu fungsi melakukan hal yang benar. Sebuah fungsi biasanya memiliki beberapa penguji, masing-masing menentukan beberapa masukan untuk fungsi dan kondisi yang harus dipenuhi keluaran untuk input yang diberikan.
Misalnya, tes untuk fungsi "kapitalisasi judul" bisa berupa: "<span dir="ltr" lang="en">abc</span>" harus menjadi "<span dir="ltr" lang="en">Abc</span>"; "<span dir="ltr" lang="en">war and peace</span>" harus menjadi "<span dir="ltr" lang="en">War and Peace</span>"; "<span dir="ltr" lang="ru">война и мир</span>" harus menjadi "<span dir="ltr" lang="en">abc</span>"; dan "<span dir="ltr" lang="en">123</span>" harus tetap "<span dir="ltr" lang="en">123</span>".
<span id="Which_features_are_available_now,_which_will_be_soon_available,_and_which_are_further_away?"></span>
=== Fitur apa saja yang tersedia sekarang, yang akan segera tersedia, dan yang masih lama tersedia? ===
* Saat peluncuran:
** Kita bisa memiliki fungsi yang bekerja dengan nilai-nilai Untaian dan Boolean.
** Wikifunctions akan sepenuhnya diinternasionalkan dari awal. Ia bisa digunakan dalam bahasa apa pun.
* [[Wikifunctions:Status|Sedang dikembangkan]]:
** Tipe generik dan fungsi generik tidak sepenuhnya didukung.
** Menambahkan tipe, untuk saat ini, akan menjadi sesuatu yang hanya dilakukan oleh tim pengembangan. Di masa yang akan datang, komunitas akan dapat menambahkan lebih banyak tipe. Ada banyak pekerjaan di masa depan untuk membuat tipe berperilaku lebih lancar.
*** Salah satu tipe yang sangat menarik akan data biner, dan terutama berkas.
** Saat ini kami mendukung dua bahasa pemrograman untuk implementasi: JavaScript dan Python. Di masa depan, kami ingin mendukung lebih banyak lagi.
** Saat ini, ''tidak'' mungkin fungsi lain dipanggil dari implementasi yang ditulis dalam bahasa pemrograman lain.
* Di masa yang akan datang:
** Akan mungkin untuk memanggil fungsi Wikifunctions dari proyek Wikimedia lainnya, dan mengintegrasikan hasilnya ke keluaran halaman.
** Akan mungkin untuk menggunakan data dari Wikidata dalam fungsi.
** Akan mungkin untuk memanggil himpunan data dari ruang nama Data Commons.
<span id="How_is_Wikifunctions_multilingual?"></span>
=== Bagaimana Wikifunctions bisa disebut multibahasa? ===
{{main|Special:MyLanguage/Help:Multilingual}}
Wikifunctions dan Wikipedia Abstrak bersifat multibahasa dalam sejumlah cara yang berbeda dan tidak saling memengaruhi:
* '''Wikifunctions bersifat multibahasa dalam cakupan konten dan antarmuka penggunanya.''' Pengguna bisa membaca dan memanggil fungsi di Wikifunctions dalam bahasa alami mana pun. Berikut adalah fungsi “menggabungkan untaian” dalam bahasa [https://www.wikifunctions.org/view/en/Z10000 Inggris], [https://www.wikifunctions.org/view/pl/Z10000 Polandia], dan [https://www.wikifunctions.org/view/he/Z10000 Ibrani], dan fungsi tersebut juga tersedia dalam banyak bahasa lain.
* '''Kontributor dapat menyunting dan memperbaiki Wikifunctions menggunakan bahasa mereka masing-masing.''' Implementasipun bisa disunting dalam bahasa alaminya kontributor. Sebagai contoh, komposisi fungsi “dan” bisa disunting dalam bahasa [https://www.wikifunctions.org/wiki/Z11223?action=edit&uselang=de Jerman], [https://www.wikifunctions.org/wiki/Z11223?action=edit&uselang=en Inggris], ataupun 300 bahasa lainnya.
* '''Fungsi Wikifunctions bisa digunakan untuk mengeluarkan hasil dalam bahasa alami mana pun.''' Komunitas sedang membuat fungsi-fungsi untuk mendukung pembuatan teks dalam banyak bahasa alami. Kami punya fungsi untuk bahasa [[Wikifunctions:Catalogue#Breton|Breton]], [[Wikifunctions:Catalogue#Rohingya|Rohingya]], [[Wikifunctions:Catalogue#English|Inggris]], dan lain-lain.
* '''Fungsi di Wikifunctions bisa diimplementasikan dalam berbagai bahasa pemrograman berbeda.''' Sebagai contoh, [[Z10000|fungsi penggabung]] diimplementasikan dalam bahasa [[Z10005|JavaScript]] dan [[Z10004|Python]].
<span id="Which_programming_languages_does_Wikifunctions_currently_support?_Which_programming_languages_will_be_supported_in_the_future?"></span>
=== Bahasa pemrograman apa saja yang saat ini didukung oleh Wikifunctions? Bahasa pemrograman apa saja yang akan didukung di masa mendatang? ===
{{main|WF:programming languages}}
Saat ini, Wikifunctions mendukung implementasi yang ditulis dalam JavaScript dan Python. Kami berencana untuk menambahkan dukungan untuk lebih banyak bahasa pemrograman di masa depan. Kami berharap untuk menambahkan setidaknya satu bahasa pemrograman lagi pada tahun 2025 (tetapi belum memutuskan bahasa yang mana).
<span id="How_will_Wikifunctions_be_integrated_into_other_projects?"></span>
=== Bagaimana Wikifunctions akan diintegrasikan ke dalam proyek-proyek lain? ===
Wikifunctions adalah langkah pertama menuju membangun Wikipedia Abstrak. Fokus jangka pendek kami akan mendukung komunitas dan membuat perbaikan berdasarkan umpan balik. Pada saat yang sama, kami akan memulai proses mengintegrasikannya dengan Wikipedia dan Wikidata, yang akan memungkinkan aplikasi nyata yang lebih luas dan membawa kita lebih dekat dengan visi Wikipedia Abstrak.
Kontributor akan dapat memanggil fungsi dari Wikifunctions dari dalam wiki mereka. Hasil panggilan fungsi akan ditampilkan untuk pembaca. Hal ini dapat digunakan, misalnya, untuk menghitung usia seseorang, kepadatan populasi berdasarkan data populasi dan area dari Wikidata, atau untuk menggambar grafik dan mengintegrasikannya ke dalam artikel tertentu.
Pilihan lainnya untuk mengintegrasikan Wikifunctions adalah dengan mengintegrasikan antarmuka panggilan fungsi interaktif dalam wiki mereka. Hal ini dapat digunakan, misalnya, dalam artikel Wikipedia untuk menghitung hasil persamaan fisik secara dinamis berdasarkan parameter yang disediakan pembaca, menggambar dan berinteraksi dengan fungsi matematika, dll.
<span id="What_Wikifunctions_is_not"></span>
<div class="mw-translate-fuzzy">
=== Apa yang tidak dicakup oleh Wikifunctions? ===
</div>
Tolong lihat [[Special:MyLanguage/Wikifunctions:What Wikifunctions is not|Wikifunctions:Wikifunctions bukanlah]] untuk informasi mengenai hal tersebut.
<span id="What_license_will_the_functions_and_derived_content_be_under?"></span>
=== Lisensi apa yang akan digunakan untuk fungsi dan konten turunannya? ===
Sesuai diskusi yang terjadi [[:m:Special:MyLanguage/Abstract Wikipedia/Licensing discussion|di Meta antara bulan November dan Desember 2021]], semua kontribusi di Wikifunctions dan proyek-proyek Wikipedia Abstrak akan diterbitkan di bawah lisensi bebas. Secara khusus:
* [[Special:MyLanguage/Wikifunctions:Glossary#Content|Konten teks]] di Wikifunctions akan diterbitkan di bawah [[w:id:Lisensi Creative Commons|CC BY-SA 4.0]].
* [[Special:MyLanguage/Wikifunctions:Glossary#Function|Pengenal fungsi]] dan konten terstruktur lainnya di Wikifunctions akan diterbitkan di bawah [[w:id:CC0|CC 0]].
* [[Special:MyLanguage/Wikifunctions:Glossary#Implementation|Implementasi kode]] di Wikifunctions akan diterbitkan di bawah [[w:id:Lisensi Apache|lisensi Apache 2]].
* [[Special:MyLanguage/Wikifunctions:Glossary#Content|Konten Abstrak]] untuk Wikipedia Abstrak akan diterbitkan di bawah CC BY-SA 4.0.
Masih ada beberapa poin yang perlu ditangani di masa depan, seperti lisensi konten yang dihasilkan dari konten abstrak. Kami berencana untuk menyusun dokumen yang lebih komprehensif dengan Departemen Hukum tentang bagaimana orang-orang dapat menggunakan kembali kode dari Wikifunctions dengan semudah mungkin selama masih sejalan dengan lisensi.
<span id="Contributing"></span>
== Berkontribusi ==
<span id="I'm_new_here._What_is_there_for_me_to_do_and_how_can_I_help?"></span>
=== Saya baru bergabung di sini. Apa yang harus saya lakukan dan bagaimana saya dapat ikut membantu? ===
Selamat datang! Kami sangat senang menerima Anda di sini! Ada banyak kesempatan untuk berkontribusi di Wikifunctions, mulai dari menciptakan fungsi baru sampai memperbaiki dan menerjemahkan dokumentasi. Jika Anda mencari cara untuk terlibat, kami menyarankan, tergantung pada tingkat kenyamanan Anda, agar Anda mungkin bisa mengusulkan fungsi baru pada topik yang Anda minati. Atau bahkan menciptakan fungsi seperti itu. Berikan beberapa tes. Cobalah mengerjakan implementasi. Bantu penerjemahan. Baca dan perbaiki dokumentasi kami. Bantu mengorganisir komunitas.
<span id="How_do_I_create_a_new_function,_implementation,_or_test?"></span>
=== Bagaimana cara membuat fungsi, implementasi, atau tes baru? ===
Untuk melihat cara membuat fungsi, implementasi, atau tes baru, lihat [[Special:MyLanguage/Wikifunctions:Introduction|Wikifunctions:Perkenalan]].
Untuk melihat cara membuat implementasi secara lebih rinci, lihat [[Special:MyLanguage/Wikifunctions:How to create implementations|Wikifunctions:Cara membuat implementasi]].
<span id="What_should_I_edit_first?"></span>
=== Apa yang harus saya sunting mula-mula? ===
Jika Anda bisa menuturkan beberapa bahasa, cari fungsi yang belum memiliki label dan deskripsi dalam bahasa Anda pada halaman [[Special:ListMissingLabels]], dan bantu menambahkannya.
Jika Anda punya minat dalam bidang yang bisa memiliki fungsi di Wikifunctions, tetapi bidang tersebut belum memilikinya, atau jika Anda punya ide untuk fungsi baru, pergi ke halaman [[Wikifunctions:Suggest a new function|pengusulan fungsi baru]], dan sampaikan ide Anda.
Jika Anda bisa membuat kode dalam bahasa JavaScript atau Python, mungkin Anda ingin memeriksa fungsi yang belum memiliki implementasi dalam bahasa JavaScript atau Python, dan mencoba menulisnya.
<span id="Where_can_I_go_for_help?"></span>
=== Bagaimana saya bisa mendapatkan bantuan? ===
Tempat pertama yang sebaiknya Anda kunjungi adalah [[Special:MyLanguage/Help:Contents|portal Bantuan]], tempat Anda akan menemukan semua dokumentasi mengenai cara menggunakan dan menyunting Wikifunctions. Jika Anda masih kesulitan, kirim pesan di [[Wikifunctions:Project chat|Warung Kopi]], dan seseorang akan menjawab pertanyaan Anda.
<span id="How_do_we_sort_or_categorize_functions?"></span>
=== Bagaimana cara mengurutkan atau mengkategorikan fungsi? ===
{{Tracked|T285424}}
<div class="mw-translate-fuzzy">
Untuk saat ini, cara terbaik untuk mengurutkan atau mengategorikan fungsi adalah melakukannya secara manual melalui halaman di ruang nama Wikifunctions. Pilihan lainnya adalah melalui halaman diskusi dari suatu fungsi. Kami akan memantau upaya ini, dan membahas dengan komunitas mengenai perubahan sistem yang akan membantu untuk tugas ini.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== How can I setup the software locally to hack on it? ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
See [[Special:MyLanguage/Wikifunctions:Hacking on the evaluator and orchestrator|Hacking on the evaluator and orchestrator]].
</div>
[[Category:FAQ| {{#translation:}}]]
n77188u5rsyulk86c9bnmqikhe0n658
Translations:Wikifunctions:Report a technical problem/14/en
1198
9573
296952
33874
2026-08-06T18:03:03Z
FuzzyBot
207
Importing a new version from external source
296952
wikitext
text/x-wiki
The discussion page [[$1|here]].
gcd7plp1zfoulf62dba4b53we3tjryj
Wikifunctions:Report a technical problem/en
4
9591
296957
279536
2026-08-06T18:03:07Z
FuzzyBot
207
Updating to match new version of source page
296957
wikitext
text/x-wiki
<languages/>
{{shortcut|[[WF:BUG]]}}
{{see also
|Special:MyLanguage/WF:Status|l1=WF:Status
|Special:MyLanguage/WF:Feature_petitions|l2=WF:Feature petitions
}}
If you have found a bug in Wikifunctions, or you have a feature request for Wikifunctions, please let us know!
== Scope ==
* '''Bug''' - a problem that is producing incorrect or unexpected results on Wikifunctions. Note that problems within Functions themselves are not considered as a bug in this context.
* '''Feature request''' - an idea that the development team can add to Wikifunctions to make it even more awesome.
Do you need help with something else?
: The following are '''out of scope''' of the work of the Wikifunctions development team:
:* The '''content of individual Functions''' – Discuss those on the talkpage of the Function itself, or ask for help at [[Wikifunctions:Project chat]] or in the channels listed below; if you think a function is missing, see [[Wikifunctions:Suggest a function]]
:* The '''Wikifunctions project's policies''' – Ask about those at [[Wikifunctions:Project chat]] or in the channels listed below
== Find existing bugs and feature requests ==
* See '''[[Wikifunctions:Status]]''' for a quick summary of high-level issues.
* You can '''[[phab:maniphest/query/UzvNRqsdnymk/|search the Phabricator]] listing of open tasks''' to see if your bug or feature idea is already documented.
== Discuss with others ==
You can ask questions about possible bugs or feature ideas at a few locations. This may be helpful if you are unsure how to clearly describe the bug or feature idea:
* The discussion page [[Wikifunctions:Project chat|here]].
* The main chat on [https://t.me/Wikifunctions Telegram] or IRC {{channel|wikipedia-abstract}} (bridged together) ([https://wm-bot.wmcloud.org/logs/%23wikipedia-abstract/ logs], [https://wm-bot.wmflabs.org/logs/%23wikipedia-abstract/ old logs])
* The developer chat on [https://t.me/abstract_wikipedia_tech Telegram] or IRC {{channel|wikipedia-abstract-tech}} (bridged together) ([https://wm-bot.wmcloud.org/logs/%23wikipedia-abstract-tech/ logs])
== File a task in Phabricator ==
If you are familiar with Phabricator, you can search and file tasks directly.
If you are not yet familiar: Phabricator is the web-based development collaboration tool mostly used to manage MediaWiki software projects including Wikifunctions. A short summary about Phabricator for newcomers, including tutorial videos, is on MediaWiki's wiki at [[mw:Special:MyLanguage/Phabricator/Help|mw:Phabricator/Help]].
* You can '''[[phab:maniphest/query/UzvNRqsdnymk/|search]] the listing of open tasks''' to see if your bug or feature idea is already documented.
** The existing tasks are collected with the '''[[phab:tag/abstract wikipedia team|#abstract wikipedia team]] tag'''.
* You can '''[https://phabricator.wikimedia.org/maniphest/task/edit/form/43/?projects=abstract_wikipedia file a new task]'''. Please always include:
** Examples
** Any relevant links
** For bugs: The exact steps that produced the bug, so that the team can reproduce and diagnose it.
== Languages ==
The development team understands a limited number of languages – but you are free to report issues in any language that you're comfortable with.
If possible, please provide a summary in English when creating a phabricator task, or ask someone to help you.
== Follow-up ==
* The locations above are followed by the Wikifunctions development team, as well as community members. The time to get a reply varies depending on the nature or complexity of the topic, etc. However, in general, you can get an answer within 2 workdays. Please let us know if we missed something, as life can get distracting!
* Not all problems can be solved immediately: depending on the impact, priority, etc. some bugs can be triaged to low priority. You may follow the status of your report on the relevant linked phabricator task.
[[Category:Report a technical problem{{#translation:}}]]
1gx4ykc95zl33b2vj10keucbx74eveo
Wikifunctions:Report a technical problem/de
4
9729
296956
279535
2026-08-06T18:03:06Z
FuzzyBot
207
Updating to match new version of source page
296956
wikitext
text/x-wiki
<languages/>
{{shortcut|[[WF:BUG]]}}
{{see also
|Special:MyLanguage/WF:Status|l1=WF:Status
|Special:MyLanguage/WF:Feature_petitions|l2=WF:Feature petitions
}}
Wenn du einen Fehler in Wikifunctions gefunden hast oder einen Wunsch für neue Funktionalitäten für Wikifunctions hast, teile uns dies bitte mit!
<span id="Scope"></span>
== Umfang ==
* '''Fehler''' - ein Problem, das bei Wikifunctions zu falschen oder unerwarteten Ergebnissen führt. Beachte, dass Probleme innerhalb von Funktionen in diesem Zusammenhang nicht als Fehler betrachtet werden.
* '''Funktionalitätswunsch''' - eine Idee, die das Entwicklungsteam zu Wikifunctions hinzufügen kann, um es noch großartiger zu machen.
Brauchst du Hilfe bei etwas anderem?
: Folgendes liegt '''außerhalb des Umfangs''' der Arbeit des Wikifunctions-Entwicklungsteams:
:* Der '''Inhalt einzelner Funktionen''' – Diskutiere diese auf der Diskussionsseite der Funktion selbst oder bitte auf [[Wikifunctions:Project chat]] oder über die unten aufgeführten Kanäle um Hilfe; wenn du der Meinung bist, dass eine Funktion fehlt, siehe [[Wikifunctions:Suggest a function]]
:* Die '''Projektrichtlinien von Wikifunctions''' – Stelle Fragen über diese auf [[Wikifunctions:Project chat]] oder über die unten aufgeführten Kanäle
<span id="Find_existing_bugs_and_feature_requests"></span>
== Vorhandene Fehler und Funktionalitätswünsche finden ==
* Siehe '''[[Wikifunctions:Status]]''' für eine kurze Zusammenfassung wichtiger Probleme.
* Du kannst '''die offenen Aufgaben [[phab:maniphest/query/UzvNRqsdnymk/|im Phabricator durchsuchen]]''', um zu sehen, ob dein Fehler oder Funktionalitätswunsch schon dokumentiert ist.
<span id="Discuss_with_others"></span>
== Diskutiere mit anderen ==
Du kannst Fragen zu möglichen Fehlern oder Funktionalitätsideen an mehreren Orten stellen. Dies kann hilfreich sein, wenn du dir nicht sicher bist, wie du den Fehler oder die Funktionalitätsidee klar beschreiben sollst:
* <span class="mw-translate-fuzzy">Die Diskussionsseite hier.</span>
* Der Hauptchat auf [https://t.me/Wikifunctions Telegram] oder IRC {{channel|wikipedia-abstract}} (gekoppelt) ([https://wm-bot.wmcloud.org/logs/%23wikipedia-abstract/ Logbücher], [https://wm-bot.wmflabs.org/logs/%23wikipedia-abstract/ alte Logbücher])
* Der Entwicklerchat auf [https://t.me/abstract_wikipedia_tech Telegram] oder IRC {{channel|wikipedia-abstract-tech}} (gekoppelt) ([https://wm-bot.wmcloud.org/logs/%23wikipedia-abstract-tech/ Logbücher])
<span id="File_a_task_in_Phabricator"></span>
== Erstelle eine Aufgabe im Phabricator ==
Wenn du mit Phabricator vertraut bist, kannst du direkt Aufgaben suchen und erstellen.
Wenn du nicht damit vertraut bist: Phabricator ist das webbasierte Werkzeug für die Entwicklungszusammenarbeit, das hauptsächlich zur Verwaltung von MediaWiki-Softwareprojekten einschließlich Wikifunctions verwendet wird. Eine kurze Zusammenfassung über Phabricator für Neulinge, einschließlich Video-Tutorials, findest du im MediaWiki-Wiki auf [[mw:Special:MyLanguage/Phabricator/Help|mw:Phabricator/Help]].
* Du kannst '''die offenen Aufgaben [[phab:maniphest/query/UzvNRqsdnymk/|durchsuchen]]''', um zu sehen, ob dein Fehler oder deine Funktionalitätsidee schon dokumentiert ist.
** Die vorhandenen Aufgaben werden unter der '''Markierung [[phab:tag/abstract wikipedia team|#abstract wikipedia team]]''' gesammelt.
* Du kannst '''[https://phabricator.wikimedia.org/maniphest/task/edit/form/43/?projects=abstract_wikipedia eine neue Aufgabe erstellen]'''. Bitte gib immer Folgendes an:
** Beispiele
** Alle relevanten Links
** Für Fehler: Die exakten Schritte, um den Fehler zu reproduzieren, damit das Team ihn reproduzieren und untersuchen kann.
<span id="Languages"></span>
== Sprachen ==
Das Entwicklungsteam versteht eine begrenzte Anzahl von Sprachen – es steht dir jedoch frei, Probleme in jeder Sprache zu melden, mit der du vertraut bist.
Wenn möglich, gib beim Erstellen einer Phabricator-Aufgabe bitte eine Zusammenfassung auf Englisch an oder bitte jemanden, dir zu helfen.
<span id="Follow-up"></span>
== Nachverfolgung ==
* Die oben genannten Orte werden vom Wikifunctions-Entwicklungsteam sowie von Mitgliedern der Gemeinschaft beobachtet. Die Zeit bis zum Erhalt einer Antwort variiert je nach Art oder Komplexität des Themas etc. Im Allgemeinen kannst du jedoch innerhalb von 2 Werktagen eine Antwort erhalten. Bitte teile uns mit, wenn wir etwas verpasst haben, denn das Leben kann ablenkend sein!
* Nicht alle Probleme können sofort gelöst werden: Abhängig von der Auswirkung, der Priorität etc. können einige Fehler mit einer niedrigen Priorität eingestuft werden. Du kannst den Status deines Berichts über die entsprechende Phabricator-Aufgabe verfolgen.
[[Category:Report a technical problem{{#translation:}}]]
ex56ioqs3fsbnymmyhkbvfhuqi73sy9
297031
296956
2026-08-06T18:06:50Z
Ameisenigel
44
297031
wikitext
text/x-wiki
<languages/>
{{shortcut|[[WF:BUG]]}}
{{see also
|Special:MyLanguage/WF:Status|l1=WF:Status
|Special:MyLanguage/WF:Feature_petitions|l2=WF:Feature petitions
}}
Wenn du einen Fehler in Wikifunctions gefunden hast oder einen Wunsch für neue Funktionalitäten für Wikifunctions hast, teile uns dies bitte mit!
<span id="Scope"></span>
== Umfang ==
* '''Fehler''' - ein Problem, das bei Wikifunctions zu falschen oder unerwarteten Ergebnissen führt. Beachte, dass Probleme innerhalb von Funktionen in diesem Zusammenhang nicht als Fehler betrachtet werden.
* '''Funktionalitätswunsch''' - eine Idee, die das Entwicklungsteam zu Wikifunctions hinzufügen kann, um es noch großartiger zu machen.
Brauchst du Hilfe bei etwas anderem?
: Folgendes liegt '''außerhalb des Umfangs''' der Arbeit des Wikifunctions-Entwicklungsteams:
:* Der '''Inhalt einzelner Funktionen''' – Diskutiere diese auf der Diskussionsseite der Funktion selbst oder bitte auf [[Wikifunctions:Project chat]] oder über die unten aufgeführten Kanäle um Hilfe; wenn du der Meinung bist, dass eine Funktion fehlt, siehe [[Wikifunctions:Suggest a function]]
:* Die '''Projektrichtlinien von Wikifunctions''' – Stelle Fragen über diese auf [[Wikifunctions:Project chat]] oder über die unten aufgeführten Kanäle
<span id="Find_existing_bugs_and_feature_requests"></span>
== Vorhandene Fehler und Funktionalitätswünsche finden ==
* Siehe '''[[Wikifunctions:Status]]''' für eine kurze Zusammenfassung wichtiger Probleme.
* Du kannst '''die offenen Aufgaben [[phab:maniphest/query/UzvNRqsdnymk/|im Phabricator durchsuchen]]''', um zu sehen, ob dein Fehler oder Funktionalitätswunsch schon dokumentiert ist.
<span id="Discuss_with_others"></span>
== Diskutiere mit anderen ==
Du kannst Fragen zu möglichen Fehlern oder Funktionalitätsideen an mehreren Orten stellen. Dies kann hilfreich sein, wenn du dir nicht sicher bist, wie du den Fehler oder die Funktionalitätsidee klar beschreiben sollst:
* Die Diskussionsseite [[Wikifunctions:Project chat|hier]].
* Der Hauptchat auf [https://t.me/Wikifunctions Telegram] oder IRC {{channel|wikipedia-abstract}} (gekoppelt) ([https://wm-bot.wmcloud.org/logs/%23wikipedia-abstract/ Logbücher], [https://wm-bot.wmflabs.org/logs/%23wikipedia-abstract/ alte Logbücher])
* Der Entwicklerchat auf [https://t.me/abstract_wikipedia_tech Telegram] oder IRC {{channel|wikipedia-abstract-tech}} (gekoppelt) ([https://wm-bot.wmcloud.org/logs/%23wikipedia-abstract-tech/ Logbücher])
<span id="File_a_task_in_Phabricator"></span>
== Erstelle eine Aufgabe im Phabricator ==
Wenn du mit Phabricator vertraut bist, kannst du direkt Aufgaben suchen und erstellen.
Wenn du nicht damit vertraut bist: Phabricator ist das webbasierte Werkzeug für die Entwicklungszusammenarbeit, das hauptsächlich zur Verwaltung von MediaWiki-Softwareprojekten einschließlich Wikifunctions verwendet wird. Eine kurze Zusammenfassung über Phabricator für Neulinge, einschließlich Video-Tutorials, findest du im MediaWiki-Wiki auf [[mw:Special:MyLanguage/Phabricator/Help|mw:Phabricator/Help]].
* Du kannst '''die offenen Aufgaben [[phab:maniphest/query/UzvNRqsdnymk/|durchsuchen]]''', um zu sehen, ob dein Fehler oder deine Funktionalitätsidee schon dokumentiert ist.
** Die vorhandenen Aufgaben werden unter der '''Markierung [[phab:tag/abstract wikipedia team|#abstract wikipedia team]]''' gesammelt.
* Du kannst '''[https://phabricator.wikimedia.org/maniphest/task/edit/form/43/?projects=abstract_wikipedia eine neue Aufgabe erstellen]'''. Bitte gib immer Folgendes an:
** Beispiele
** Alle relevanten Links
** Für Fehler: Die exakten Schritte, um den Fehler zu reproduzieren, damit das Team ihn reproduzieren und untersuchen kann.
<span id="Languages"></span>
== Sprachen ==
Das Entwicklungsteam versteht eine begrenzte Anzahl von Sprachen – es steht dir jedoch frei, Probleme in jeder Sprache zu melden, mit der du vertraut bist.
Wenn möglich, gib beim Erstellen einer Phabricator-Aufgabe bitte eine Zusammenfassung auf Englisch an oder bitte jemanden, dir zu helfen.
<span id="Follow-up"></span>
== Nachverfolgung ==
* Die oben genannten Orte werden vom Wikifunctions-Entwicklungsteam sowie von Mitgliedern der Gemeinschaft beobachtet. Die Zeit bis zum Erhalt einer Antwort variiert je nach Art oder Komplexität des Themas etc. Im Allgemeinen kannst du jedoch innerhalb von 2 Werktagen eine Antwort erhalten. Bitte teile uns mit, wenn wir etwas verpasst haben, denn das Leben kann ablenkend sein!
* Nicht alle Probleme können sofort gelöst werden: Abhängig von der Auswirkung, der Priorität etc. können einige Fehler mit einer niedrigen Priorität eingestuft werden. Du kannst den Status deines Berichts über die entsprechende Phabricator-Aufgabe verfolgen.
[[Category:Report a technical problem{{#translation:}}]]
j0hvebwc75lu7qh23fcg9ucma15v01f
Wikifunctions:Report a technical problem/bn
4
9797
296954
279533
2026-08-06T18:03:05Z
FuzzyBot
207
Updating to match new version of source page
296954
wikitext
text/x-wiki
<languages/>
{{shortcut|[[WF:BUG]]}}
{{see also
|Special:MyLanguage/WF:Status|l1=WF:Status
|Special:MyLanguage/WF:Feature_petitions|l2=WF:Feature petitions
}}
আপনি যদি উইকিফাংশনে কোনো বাগ খুঁজে পেয়ে থাকেন, অথবা আপনার যদি উইকিফাংশনের জন্য কোনো বৈশিষ্ট্যের অনুরোধ থাকে, অনুগ্রহ করে আমাদের জানান!
<span id="Scope"></span>
== পরিধি ==
* '''বাগ''' - একটি সমস্যা যা উইকিফাংশনে ভুল বা অপ্রত্যাশিত ফলাফল তৈরি করছে। মনে রাখবেন ফাংশনের অভ্যন্তরীণ সমস্যাগুলো এখানে বাগ হিসেবে বিবেচিত হবে না।
* '''বৈশিষ্ট্যের অনুরোধ''' - এমন একটি আইডিয়া যা ডেভেলপমেন্ট টিম উইকিফাংশনে যোগ করতে পারে যাতে এটিকে আরও অসাধারণ করে তোলা যায়।
আপনার অন্য কিছু নিয়ে সাহায্য প্রয়োজন?
: নিম্নলিখিত বিষয়গুলো উইকিফাংশনস ডেভেলপমেন্ট টিমের কাজের '''পরিধির বাইরে''':
:* '''প্রতিটি ফাংশনের বিষয়বস্তু'''- ফাংশনের আলাপ পাতায় সেগুলি নিয়ে আলোচনা করুন, অথবা [[Wikifunctions:Project chat]]-এ বা নীচে তালিকাভুক্ত চ্যানেলগুলিতে সাহায্যের জন্য জিজ্ঞাসা করুন; আপনি যদি মনে করেন একটি ফাংশন অনুপস্থিত তাহলে [[Wikifunctions:Suggest a function]] দেখুন
:* '''উইকিফাংশন প্রকল্পের নীতিমালা''' - [[Wikifunctions:Project chat]] -এ বা নিচে তালিকাভুক্ত চ্যানেলগুলোতে এ সম্পর্কে জিজ্ঞাসা করুন
<span id="Find_existing_bugs_and_feature_requests"></span>
== বিদ্যমান বাগ এবং বৈশিষ্ট্য অনুরোধ খোঁজা ==
* উচ্চ-স্তরের সমস্যাগুলোর দ্রুত সারাংশের জন্য '''[[Wikifunctions:Status]]''' দেখুন।
* আপনার যে ত্রুটি লক্ষ্য করেছেন বা কোনো বৈশিষ্ট্যের প্রস্তাব ইতিমধ্যেই নথিভুক্ত হয়েছে কিনা তা দেখতে আপনি '''[[phab:maniphest/query/UzvNRqsdnymk/|ফ্যাব্রিকেটর]] উন্মুক্ত কাজের তালিকা অনুসন্ধান করতে পারেন''''৷
<span id="Discuss_with_others"></span>
== অন্যদের সাথে আলোচনা করুন ==
আপনি কয়েকটি জায়গায় সম্ভাব্য বাগ বা বৈশিষ্ট্যের আইডিয়া সম্পর্কে প্রশ্ন জিজ্ঞাসা করতে পারেন। এটি সহায়ক হতে পারে যদি আপনি বাগ বা বৈশিষ্ট্য আইডিয়া স্পষ্টভাবে বর্ণনা করতে না পারেন:
* <span class="mw-translate-fuzzy">এখানকার আলোচনা পাতা।</span>
* [https://t.me/Wikifunctions টেলিগ্রামের] মূল চ্যাট বা আইআরসি {{channel|wikipedia-abstract}} (একত্রে ব্রিজ করা) ([https://wm-bot.wmcloud.org/logs/%23wikipedia-abstract/ লগ], [https://wm-bot.wmflabs.org/logs/%23wikipedia-abstract/ পুরনো লগ])
* [https://t.me/abstract_wikipedia_tech টেলিগ্রামে] ডেভেলপার চ্যাট বা আইআরসি {{channel|wikipedia-abstract-tech}} (একত্রে ব্রিজ করা) ([https://wm-bot.wmcloud.org/logs/%23wikipedia-abstract-tech/ লগ])
<span id="File_a_task_in_Phabricator"></span>
== ফ্যাব্রিকেটরে একটি টাস্ক যোগ করা ==
আপনি যদি ফ্যাব্রিকেটরের সাথে পরিচিত হন তবে আপনি সরাসরি টাস্ক অনুসন্ধান এবং ফাইল করতে পারেন।
আপনি যদি এখনও পরিচিত না হন: ফ্যাব্রিকেটর হলো ওয়েব-ভিত্তিক উন্নয়ন সহযোগিতার সরঞ্জাম যা মূলত উইকিফাংশনসহ মিডিয়াউইকি সফ্টওয়্যার প্রকল্পগুলো পরিচালনা করতে ব্যবহৃত হয়। টিউটোরিয়াল ভিডিও সহ মিডিয়াউইকির উইকিতে নতুনদের জন্য ফ্যাব্রিকেটর সম্পর্কে একটি সংক্ষিপ্ত সারাংশ [[mw:Special:MyLanguage/Phabricator/Help|mw:Phabricator/Help]]।
* আপনি যে ত্রুটি লক্ষ্য করেছেন কিংবা কোনো বৈশিষ্ট্যের প্রস্তাব ইতিমধ্যেই নথিভুক্ত হয়েছে কিনা তা দেখতে আপনি ''' উন্মুক্ত কাজের তালিকা [[phab:maniphest/query/UzvNRqsdnymk/|অনুসন্ধান]]''' করতে পারেন৷
** <span class="mw-translate-fuzzy">বিদ্যমান টাস্ক '''[[[[phab:tag/abstract wikipedia team|#abstract wikipedia team]]|#abstract wikipedia team]]''' ট্যাগের মাধ্যমে সংগ্রহ করা হয়।</span>
* আপনি '''[https://phabricator.wikimedia.org/maniphest/task/edit/form/43/?projects=abstract_wikipedia একটি নতুন টাস্ক]''' ফাইল করতে পারেন। এতে যা অবশ্যই অন্তর্ভুক্ত করতে হবে:
** উদাহরণ
** কোনো প্রাসঙ্গিক লিঙ্ক
** বাগের জন্য: বাগটি তৈরি হবার সঠিক পদক্ষেপগুলি, যাতে উন্নয়ন দলটি এটি পুনরুত্পাদন এবং নির্ণয় করতে পারে।
<span id="Languages"></span>
== ভাষাসমূহ ==
ডেভেলপমেন্ট টিম সীমিত সংখ্যক ভাষা বোঝেন -- কিন্তু আপনি স্বাচ্ছন্দ্য বোধ করেন এমন যেকোনো ভাষায় সমস্যার রিপোর্ট করতে পারবেন।
যদি সম্ভব হয়, ফ্যাব্রিকেটর টাস্ক তৈরি করার সময় অনুগ্রহ করে ইংরেজিতে একটি সারসংক্ষেপ প্রদান করুন, অথবা কাউকে সাহায্য করতে বলুন।
<span id="Follow-up"></span>
== ফলো-আপ ==
* উপরের অবস্থানগুলি উইকিফাংশন উন্নয়ন দল, পাশাপাশি সম্প্রদায়ের সদস্যরা অনুসরণ করে। উত্তর পাওয়ার জন্য সময় সাধারনত বিষয়টির প্রকৃতি বা জটিলতা ইত্যাদির উপর নির্ভর করে তবে সাধারণভাবে আপনি ২ কার্যদিবসের মধ্যে উত্তর পেতে পারেন। অনুগ্রহ করে আমাদের জানান যে আমরা যদি কিছু মিস করি, কারণ জীবন বিভ্রান্তিকর হয়ে উঠতে পারে!
* সকল সমস্যা অবিলম্বে সমাধান করা যায় না: প্রভাব, অগ্রাধিকার ইত্যাদির উপর নির্ভর করে। কিছু বাগ কম অগ্রাধিকারে ট্রায়েজড হতে পারে। আপনি প্রাসঙ্গিক লিঙ্কযুক্ত ফ্যাব্রিকেটর টাস্কে আপনার প্রতিবেদনের স্থিতি অনুসরণ করতে পারেন।
[[Category:Report a technical problem{{#translation:}}]]
k2hk1cj8n4uzs6nvv5l4m4ysxg6h88m
Translations:Wikifunctions:Report a technical problem/14/de
1198
9858
297030
34869
2026-08-06T18:06:49Z
Ameisenigel
44
297030
wikitext
text/x-wiki
Die Diskussionsseite [[$1|hier]].
394cyqqga7vsxeudqrveft7bkz4nu7r
Wikifunctions:Report a technical problem/ja
4
9963
296965
279544
2026-08-06T18:03:09Z
FuzzyBot
207
Updating to match new version of source page
296965
wikitext
text/x-wiki
<languages/>
{{shortcut|[[WF:BUG]]}}
{{see also
|Special:MyLanguage/WF:Status|l1=WF:Status
|Special:MyLanguage/WF:Feature_petitions|l2=WF:Feature petitions
}}
<div lang="en" dir="ltr" class="mw-content-ltr">
If you have found a bug in Wikifunctions, or you have a feature request for Wikifunctions, please let us know!
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Scope ==
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Bug''' - a problem that is producing incorrect or unexpected results on Wikifunctions. Note that problems within Functions themselves are not considered as a bug in this context.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Feature request''' - an idea that the development team can add to Wikifunctions to make it even more awesome.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
Do you need help with something else?
</div>
: <span lang="en" dir="ltr" class="mw-content-ltr">The following are '''out of scope''' of the work of the Wikifunctions development team:</span>
:* <span lang="en" dir="ltr" class="mw-content-ltr">The '''content of individual Functions''' – Discuss those on the talkpage of the Function itself, or ask for help at [[Wikifunctions:Project chat]] or in the channels listed below; if you think a function is missing, see [[Wikifunctions:Suggest a function]]</span>
:* <span lang="en" dir="ltr" class="mw-content-ltr">The '''Wikifunctions project's policies''' – Ask about those at [[Wikifunctions:Project chat]] or in the channels listed below</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Find existing bugs and feature requests ==
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">See '''[[Wikifunctions:Status]]''' for a quick summary of high-level issues.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">You can '''[[phab:maniphest/query/UzvNRqsdnymk/|search the Phabricator]] listing of open tasks''' to see if your bug or feature idea is already documented.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Discuss with others ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
You can ask questions about possible bugs or feature ideas at a few locations. This may be helpful if you are unsure how to clearly describe the bug or feature idea:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">The discussion page [[Wikifunctions:Project chat|here]].</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">The main chat on [https://t.me/Wikifunctions Telegram] or IRC {{channel|wikipedia-abstract}} (bridged together) ([https://wm-bot.wmcloud.org/logs/%23wikipedia-abstract/ logs], [https://wm-bot.wmflabs.org/logs/%23wikipedia-abstract/ old logs])</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">The developer chat on [https://t.me/abstract_wikipedia_tech Telegram] or IRC {{channel|wikipedia-abstract-tech}} (bridged together) ([https://wm-bot.wmcloud.org/logs/%23wikipedia-abstract-tech/ logs])</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
== File a task in Phabricator ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If you are familiar with Phabricator, you can search and file tasks directly.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If you are not yet familiar: Phabricator is the web-based development collaboration tool mostly used to manage MediaWiki software projects including Wikifunctions. A short summary about Phabricator for newcomers, including tutorial videos, is on MediaWiki's wiki at [[mw:Special:MyLanguage/Phabricator/Help|mw:Phabricator/Help]].
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">You can '''[[phab:maniphest/query/UzvNRqsdnymk/|search]] the listing of open tasks''' to see if your bug or feature idea is already documented.</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">The existing tasks are collected with the '''[[phab:tag/abstract wikipedia team|#abstract wikipedia team]] tag'''.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">You can '''[https://phabricator.wikimedia.org/maniphest/task/edit/form/43/?projects=abstract_wikipedia file a new task]'''. Please always include:</span>
** 例
** <span lang="en" dir="ltr" class="mw-content-ltr">Any relevant links</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">For bugs: The exact steps that produced the bug, so that the team can reproduce and diagnose it.</span>
<span id="Languages"></span>
== 言語 ==
<div lang="en" dir="ltr" class="mw-content-ltr">
The development team understands a limited number of languages – but you are free to report issues in any language that you're comfortable with.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If possible, please provide a summary in English when creating a phabricator task, or ask someone to help you.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Follow-up ==
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">The locations above are followed by the Wikifunctions development team, as well as community members. The time to get a reply varies depending on the nature or complexity of the topic, etc. However, in general, you can get an answer within 2 workdays. Please let us know if we missed something, as life can get distracting!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Not all problems can be solved immediately: depending on the impact, priority, etc. some bugs can be triaged to low priority. You may follow the status of your report on the relevant linked phabricator task.</span>
[[Category:Report a technical problem{{#translation:}}]]
3xo7w4xu4gv1i2bm9lluq2fkhkjvhji
Wikifunctions:Report a technical problem/ru
4
9975
296975
279553
2026-08-06T18:03:14Z
FuzzyBot
207
Updating to match new version of source page
296975
wikitext
text/x-wiki
<languages/>
{{shortcut|[[WF:BUG]]}}
{{see also
|Special:MyLanguage/WF:Status|l1=WF:Status
|Special:MyLanguage/WF:Feature_petitions|l2=WF:Feature petitions
}}
<div lang="en" dir="ltr" class="mw-content-ltr">
If you have found a bug in Wikifunctions, or you have a feature request for Wikifunctions, please let us know!
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Scope ==
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Bug''' - a problem that is producing incorrect or unexpected results on Wikifunctions. Note that problems within Functions themselves are not considered as a bug in this context.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Feature request''' - an idea that the development team can add to Wikifunctions to make it even more awesome.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
Do you need help with something else?
</div>
: <span lang="en" dir="ltr" class="mw-content-ltr">The following are '''out of scope''' of the work of the Wikifunctions development team:</span>
:* <span lang="en" dir="ltr" class="mw-content-ltr">The '''content of individual Functions''' – Discuss those on the talkpage of the Function itself, or ask for help at [[Wikifunctions:Project chat]] or in the channels listed below; if you think a function is missing, see [[Wikifunctions:Suggest a function]]</span>
:* <span lang="en" dir="ltr" class="mw-content-ltr">The '''Wikifunctions project's policies''' – Ask about those at [[Wikifunctions:Project chat]] or in the channels listed below</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Find existing bugs and feature requests ==
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">See '''[[Wikifunctions:Status]]''' for a quick summary of high-level issues.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">You can '''[[phab:maniphest/query/UzvNRqsdnymk/|search the Phabricator]] listing of open tasks''' to see if your bug or feature idea is already documented.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Discuss with others ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
You can ask questions about possible bugs or feature ideas at a few locations. This may be helpful if you are unsure how to clearly describe the bug or feature idea:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">The discussion page [[Wikifunctions:Project chat|here]].</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">The main chat on [https://t.me/Wikifunctions Telegram] or IRC {{channel|wikipedia-abstract}} (bridged together) ([https://wm-bot.wmcloud.org/logs/%23wikipedia-abstract/ logs], [https://wm-bot.wmflabs.org/logs/%23wikipedia-abstract/ old logs])</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">The developer chat on [https://t.me/abstract_wikipedia_tech Telegram] or IRC {{channel|wikipedia-abstract-tech}} (bridged together) ([https://wm-bot.wmcloud.org/logs/%23wikipedia-abstract-tech/ logs])</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
== File a task in Phabricator ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If you are familiar with Phabricator, you can search and file tasks directly.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If you are not yet familiar: Phabricator is the web-based development collaboration tool mostly used to manage MediaWiki software projects including Wikifunctions. A short summary about Phabricator for newcomers, including tutorial videos, is on MediaWiki's wiki at [[mw:Special:MyLanguage/Phabricator/Help|mw:Phabricator/Help]].
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">You can '''[[phab:maniphest/query/UzvNRqsdnymk/|search]] the listing of open tasks''' to see if your bug or feature idea is already documented.</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">The existing tasks are collected with the '''[[phab:tag/abstract wikipedia team|#abstract wikipedia team]] tag'''.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">You can '''[https://phabricator.wikimedia.org/maniphest/task/edit/form/43/?projects=abstract_wikipedia file a new task]'''. Please always include:</span>
** Примеры
** <span lang="en" dir="ltr" class="mw-content-ltr">Any relevant links</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">For bugs: The exact steps that produced the bug, so that the team can reproduce and diagnose it.</span>
<span id="Languages"></span>
== Языки ==
<div lang="en" dir="ltr" class="mw-content-ltr">
The development team understands a limited number of languages – but you are free to report issues in any language that you're comfortable with.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If possible, please provide a summary in English when creating a phabricator task, or ask someone to help you.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Follow-up ==
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">The locations above are followed by the Wikifunctions development team, as well as community members. The time to get a reply varies depending on the nature or complexity of the topic, etc. However, in general, you can get an answer within 2 workdays. Please let us know if we missed something, as life can get distracting!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Not all problems can be solved immediately: depending on the impact, priority, etc. some bugs can be triaged to low priority. You may follow the status of your report on the relevant linked phabricator task.</span>
[[Category:Report a technical problem{{#translation:}}]]
6zdd3elbhsrimexcjppx86b7nr6c74q
Wikifunctions:FAQ/vi
4
10751
296931
265387
2026-08-06T18:02:05Z
FuzzyBot
207
Updating to match new version of source page
296931
wikitext
text/x-wiki
<languages/>
{{shortcut|[[WF:FAQ]]}}
Đây là một trang dành riêng cho những câu hỏi thường gặp về Wikifunctions. Hãy tự do hỏi những câu hỏi của mình trong [[Wikifunctions talk:FAQ|trang thảo luận]], nếu câu hỏi của bạn không được hiện ở đây!
<div lang="en" dir="ltr" class="mw-content-ltr">
Also, please consider our [[:m:Special:MyLanguage/Abstract Wikipedia/FAQ|FAQ on Meta]] regarding more general questions about Wikifunctions and Abstract Wikipedia.
</div>
__TOC__
<span id="Introduction"></span>
== Giới thiệu ==
<span id="What_is_this_project_about?"></span>
=== Dự án này về cái gì? ===
<div lang="en" dir="ltr" class="mw-content-ltr">
Wikifunctions is a new Wikimedia project that provides a catalog of all kinds of functions that anyone can call, write, maintain, and use. It also provides the underlying technology that will eventually enable the translation of language-independent articles from Abstract Wikipedia into the language of any Wikipedia. This will allow everyone to contribute and read articles in their preferred languages.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== What is a function? ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Functions are a form of knowledge that can answer questions, such as how many days have passed between two dates or the distance between two cities. More complicated functions can answer more complicated questions, such as the volume of a three-dimensional shape, the distance between Mars and Venus on a certain date, or whether two species were alive at the same time.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
We already use functions in many types of knowledge inquiries, such as asking a question to a search engine. The templates, such as [[:w:en:Template:Convert|Template:Convert]] and [[:w:en:Template:Age|Template:Age]] on English Wikipedia, are also examples of functions that are already used in many Wikipedias, written in wikitext and Lua and manually copied to each wiki where they're wanted.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== What is an implementation? ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
An implementation is a particular way to execute a function. An implementation is a recipe that lists the steps that are needed to run the function. It may be a piece of code in a programming language or a combination of calls to other functions. A function may have many implementations, which should all be equivalent.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== What is a test? ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
A test is a way to determine if a given function is doing the right thing. A function will typically have multiple testers, each specifying some input to the function and the conditions the output for the given input must fulfill.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For example, testers for a “title case” function might include: “<span dir="ltr" lang="en">abc</span>” should become “<span dir="ltr" lang="en">Abc</span>”; “<span dir="ltr" lang="en">war and peace</span>” should become “<span dir="ltr" lang="en">War and Peace</span>”; “<span dir="ltr" lang="ru">война и мир</span>” should become “<span dir="ltr" lang="ru">Война и мир</span>”; and “<span dir="ltr" lang="en">123</span>” should remain “<span dir="ltr" lang="en">123</span>”.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Which features are available now, which will be soon available, and which are further away? ===
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">At launch:</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">We have the ability to have functions that work with Strings and Booleans.</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">Wikifunctions will be fully internationalized from the beginning. It can be used in any language.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Wikifunctions:Status|Ongoing development]]:</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">Generic types and generic functions are not fully supported.</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">Adding types will, for now, be something that is limited to the development team. In the future, the community will be able to add more types. There is a lot of work to be done in the future to make types behave much more smoothly.</span>
*** <span lang="en" dir="ltr" class="mw-content-ltr">One particularly interesting type will be binary data, and particularly files.</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">We currently support two programming languages for implementations: JavaScript and Python. In the future, we want to support many more.</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">Currently, it is ''not'' possible to call other functions from implementations written in any programming language. This is currently only possible through composition.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">In the future:</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">It will be possible to call Wikifunctions functions from other Wikimedia projects and integrate their results into the output of the page.</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">It will be possible to use data from Wikidata in functions.</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">It will be possible to call data sets from Commons Data namespace.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== How is Wikifunctions multilingual? ===
</div>
{{main|Special:MyLanguage/Help:Multilingual}}
<div lang="en" dir="ltr" class="mw-content-ltr">
Wikifunctions and Abstract Wikipedia are multilingual in a number of ways that do not impact each other:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Wikifunctions is multilingual in terms of its content and user interface.''' Users can read and call functions on Wikifunctions in any natural language. Here is the “join string” function in [https://www.wikifunctions.org/view/en/Z10000 English], [https://www.wikifunctions.org/view/pl/Z10000 Polish], and [https://www.wikifunctions.org/view/he/Z10000 Hebrew], and it is available in many more languages.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Contributors can edit and improve Wikifunctions using their language.''' Even implementations can be edited in the natural language of the contributor. For example, the composition of the “and” function can be edited in [https://www.wikifunctions.org/wiki/Z11223?action=edit&uselang=de German], [https://www.wikifunctions.org/wiki/Z11223?action=edit&uselang=en English], or any other of about 300 languages.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Wikifunctions functions can be used to create results for any natural language.''' The community is creating a growing number of functions to support the generation of text in many natural languages. We have functions for [[Wikifunctions:Catalogue#Breton|Breton]], [[Wikifunctions:Catalogue#Rohingya|Rohingya]], [[Wikifunctions:Catalogue#English|English]], and many other languages.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Functions in Wikifunctions can be implemented in various different programming languages.''' For example, the [[Z10000|join function]] is implemented in both [[Z10005|JavaScript]] and [[Z10004|Python]].</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Which programming languages does Wikifunctions currently support? Which programming languages will be supported in the future? ===
</div>
{{main|WF:programming languages}}
<div lang="en" dir="ltr" class="mw-content-ltr">
Currently, Wikifunctions supports implementations written in JavaScript and Python. We plan to add support for more programming languages in the future. We hope to add at least one further programming language in 2025 (but have not yet decided which one).
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== How will Wikifunctions be integrated into other projects? ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Wikifunctions is the first step towards building Abstract Wikipedia. Our near-term focus will be on supporting the community and making improvements based on feedback. Concurrently, we will begin the process of integrating it with Wikipedia and Wikidata, which will enable broader real-life applications and get us closer to the vision of Abstract Wikipedia.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Contributors will be able to call functions stored on the Wikifunctions site from within their wikis. The result of the function call will be displayed to readers of the wiki. This can be used, for example, to calculate the age of a person, the population density based on population and area data from Wikidata, or to draw a graph and integrate it into a given article.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Another option to integrate Wikifunctions will be to integrate an interactive function call interface within their wiki. This could be used, for example, in a Wikipedia article to dynamically calculate the result of a physical equation based on reader-provided parameters, draw and interact with mathematical functions, etc.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== What Wikifunctions is not ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Please, see [[Special:MyLanguage/Wikifunctions:What Wikifunctions is not|Wikifunctions:What Wikifunctions is not]] for more information on that.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== What license will the functions and derived content be under? ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Per the discussion happened [[:m:Special:MyLanguage/Abstract Wikipedia/Licensing discussion|on Meta between November and December 2021]], all contributions to Wikifunctions and the wider Abstract Wikipedia projects will be published under free licenses. In particular:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Special:MyLanguage/Wikifunctions:Glossary#Content|Textual content]] on Wikifunctions will be published under [[w:Creative Commons license|CC BY-SA 4.0]].</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Special:MyLanguage/Wikifunctions:Glossary#Function|Function signatures]] and other structured content on Wikifunctions will be published under [[w:CC0|CC 0]].</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Special:MyLanguage/Wikifunctions:Glossary#Implementation|Code implementations]] in Wikifunctions will be published under the [[w:Apache License|Apache 2 license]].</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Special:MyLanguage/Wikifunctions:Glossary#Content|Abstract Content]] for Abstract Wikipedia will be published under CC BY-SA 4.0.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
There are still some points that will need to be addressed in the future, such as the license of the generated content from the abstract content. We plan on drafting a more comprehensive document with the Legal department about how people can re-use code from Wikifunctions as painlessly as possible, while adhering to the license.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Contributing ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== I'm new here. What is there for me to do and how can I help? ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Welcome! We're very happy to have you here! There are many opportunities for contributing to Wikifunctions, from creating new functions to improving and translating documentation. If you are looking for ways to get involved, we recommend that maybe, depending on your level of comfort, you suggest a new function on a topic you are interested in. Or even create such a function. Provide some tests. Try your hand at an implementation. Help with translations. Read and improve our documentation. Help with organizing the community.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== How do I create a new function, implementation, or test? ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
To see how to create a new function, implementation, or test, see [[Special:MyLanguage/Wikifunctions:Introduction|Wikifunctions:Introduction]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
To see in more detail how to create an implementation, see [[Special:MyLanguage/Wikifunctions:How to create implementations|Wikifunctions:How to create implementations]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== What should I edit first? ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If you can write several languages, find functions that don't have labels and descriptions in your languages yet on the page [[Special:ListMissingLabels]], and help to add them.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If you have some interest in a domain that could feature functions in Wikifunctions, but yet doesn't, or if you have more ideas for functions, go to the page for [[Wikifunctions:Suggest a new function|suggesting new functions]] and present your ideas.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If you are a coder in JavaScript or Python, maybe you want to check for functions that don't yet have implementations in JavaScript or Python, and try to write them.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Where can I go for help? ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Your first stop should be the [[Special:MyLanguage/Help:Contents|Help portal]], where you'll find all the documentation related to using and editing Wikifunctions. If you're still stuck, post a message on [[Wikifunctions:Project chat|Project chat]], and someone will answer your question.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== How do we sort or categorize functions? ===
</div>
{{Tracked|T285424}}
<div lang="en" dir="ltr" class="mw-content-ltr">
For now, the best way to sort or categorize functions is to do it by hand through [[Special:MyLanguage/Wikifunctions:Catalogue|pages in the Wikifunctions namespace]]. Another option would be through the talk page of the given function. We will monitor these efforts and discuss with the community which changes to the system would be helpful for this task.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== How can I setup the software locally to hack on it? ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
See [[Special:MyLanguage/Wikifunctions:Hacking on the evaluator and orchestrator|Hacking on the evaluator and orchestrator]].
</div>
[[Category:FAQ| {{#translation:}}]]
f44ldiup9asygcrfds0l1lxg5kpbl4s
Wikifunctions:Report a technical problem/sv
4
11045
296974
279554
2026-08-06T18:03:14Z
FuzzyBot
207
Updating to match new version of source page
296974
wikitext
text/x-wiki
<languages/>
{{shortcut|[[WF:BUG]]}}
{{see also
|Special:MyLanguage/WF:Status|l1=WF:Status
|Special:MyLanguage/WF:Feature_petitions|l2=WF:Feature petitions
}}
Om du har hittat en bugg i Wikifunctions eller önskar en förbättring, så får du gärna berätta det!
<span id="Scope"></span>
== Omfattning ==
* '''Bugg''' – ett problem som orsakar felaktiga eller oförutsägbara resultat på Wikifunctions. Tänk på att problem med själva funktionerna inte är buggar i det här sammanhanget.
* '''Förbättring''' – en idé som utvecklingsgruppen kan lägga till i Wikifunctions för att göra projektet ännu häftigare.
Behöver du hjälp med någonting annat?
: Följande faller utanför arbetsområdet för Wikifunctions utvecklare:
:* '''Innehållet i enskilda funktioner''' – Ta upp detta på funktionens diskussionssida eller be om hjälp på [[Wikifunctions:Project chat]] eller genom någon av kanalerna nedan. Om du saknar en funktion, se [[Wikifunctions:Suggest a function]].
:* Projektet '''Wikifunctions policyer''' – Fråga om dessa på [[Wikifunctions:Project chat]] eller genom någon av kanalerna nedan.
<span id="Find_existing_bugs_and_feature_requests"></span>
== Hitta befintliga buggar och funktionsbegäran ==
* Se '''[[Wikifunctions:Status]]''' för en snabbgenomgång av de största problemen.
* Du kan '''[[phab:maniphest/query/UzvNRqsdnymk/|söka på Phabricator]] efter listor över öppna ärenden''' för att se om din bugg eller funktionsidé redan dokumenterats.
<span id="Discuss_with_others"></span>
== Diskutera med andra ==
Du kan ställa frågor om eventuella buggar eller funktionsidéer på några olika ställen. Detta kan vara till hjälp om du är osäker på hur man tydligt beskriver buggen eller funktionsidén:
* <span class="mw-translate-fuzzy">Diskussionssidan här.</span>
* Huvudchatten på [https://t.me/Wikifunctions Telegram] eller IRC {{channel|wikipedia-abstract}} (sammanslagen) ([https://wm-bot.wmcloud.org/logs/%23wikipedia-abstract/ loggar], [https://wm-bot.wmflabs.org/logs/%23wikipedia-abstract/ gamla loggar])
* Utvecklarnas chatt på [https://t.me/abstract_wikipedia_tech Telegram] eller IRC {{channel|wikipedia-abstract-tech}} (sammanslagen) ([https://wm-bot.wmcloud.org/logs/%23wikipedia-abstract-tech/ loggar])
<span id="File_a_task_in_Phabricator"></span>
== Öppna ett ärende på Phabricator ==
Är du bekant med Phabricator kan du söka efter och skicka in ärendena direkt.
Om du inte vet vad det är: Phabricator är ett webbaserat verktyg för utvecklingssamarbete som för det mesta används för att hantera MediaWikis programvaruprojekt däribland Wikifunctions. En kort sammanfattning om Phabricator för nykomlingar, däribland guider, finns på MediaWikis wiki på [[mw:Special:MyLanguage/Phabricator/Help|mw:Phabricator/Help]].
* Du kan '''[[phab:maniphest/query/UzvNRqsdnymk/|söka]] i listan över öppna ärenden''' för att se om din bugg eller funktionsidé redan dokumenterats.
** <span class="mw-translate-fuzzy">De befintliga ärendena samlas in med '''[[[[phab:tag/abstract wikipedia team|#abstract wikipedia team]]|taggen #abstract wikipedia team]]'''</span>
* Du kan '''[https://phabricator.wikimedia.org/maniphest/task/edit/form/43/?projects=abstract_wikipedia skicka in ett nytt ärenden]'''. Ange alltid:
** Exempel
** Relevanta länkar
** För buggar: De exakta stegen som producerar buggen så att teamet kan återskapa den och diagnosticera.
<span id="Languages"></span>
== Språk ==
Utvecklarna förstår ett begränsat antal språk – men du kan fritt rapportera problem på det språk du är bekväm med.
Om möjligt kan du ange en sammanfattning på engelska när du skapar ett ärende på Phabricator, eller fråga någon som kan hjälpa dig.
<span id="Follow-up"></span>
== Uppföljning ==
* Platserna ovan följs av Wikifunctions utvecklingsteam och gemenskapsmedlemmar. Tiden det tar att få svar varierar beroende på ämnets typ eller komplexitet, osv. Du får däremot oftast svar inom 2 arbetsdagar. Berätta gärna för oss om vi missat något.
* Inte alla problem kan lösas omedelbart: beroende på effekt, prioritet, osv., kan vissa buggar petas ner till låg prioritet. Du kan följa din rapports status på den relevanta länkade Phabricator-ärendet.
[[Category:Report a technical problem{{#translation:}}]]
0bk076p0skplbfy3sa9jszxdhzwzq95
Wikifunctions:FAQ/he
4
11371
296917
234244
2026-08-06T18:01:58Z
FuzzyBot
207
Updating to match new version of source page
296917
wikitext
text/x-wiki
<languages/>
{{shortcut|[[WF:FAQ]]}}
הדף הזה מוקדש לשאלות נפוצות על ויקיפונקציות. תרגישו חופשיים לשאול את השאלה שלך ב[[Wikifunctions talk:FAQ|דף השיחה]] אם היא עדיין לא רשומה פה!
בנוסף, ישנו דף [[:m:Special:MyLanguage/Abstract Wikipedia/FAQ|שאלות ותשובות במטא]], העוסק בשאלות יותר כלליות על ויקיפונקציות או ויקיפדיה המופשטת.
__TOC__
<span id="Introduction"></span>
== מבוא ==
<span id="What_is_this_project_about?"></span>
=== במה המיזם עוסק? ===
ויקיפונקציות היא מיזם ויקימדיה חדש שמספק קטלוג של כל מיני פונקציות שכל אחד יכול לקרוא להן, לכתוב ולתחזק אותן, ולהשתמש בהן. מיזם ויקיפונקציות מספק את הטכנולוגיה היסודים שתאפשר בסופו של דבר תרגום של ערכים בלתי־תלויים בשפה מוויקיפדיה מופשטת (Abstract Wikipedia) לשפה של כל ויקיפדיה אחרת. זה יאפשר לכולם לתרום ולקרוא ערכים בשפה המועדפת עליהם.
<span id="What_is_a_function?"></span>
== מהי פונקציה? ==
פונקציות הן סוג של ידע שיכול לענות על שאלות, כגון כמה ימים עברו בין שני תאריכים, או מהו המרחק בין שתי ערים. פונקציות מורכבות יותר יכולות לענות על שאלות מורכבות יותר, כמו מה הנפח של צורה תלת־ממדית, המרחק ממאדים לנוגה בתאריך מסוים, או האם שני מינים חיו באותו הזמן.
אנו כבר משתמשים בפונקציות בסוגים רבים של פניות לקבלת ידע, כגון הפניית שאלה למנוע חיפוש. התבניות, כגון [[:w:en:Template:Convert|Template:Convert]] ו־[[:w:en:Template:Age|Template:Age]] בוויקיפדיה האנגלית, הן גם דוגמאות לפונקציות שכבר משמשות בוויקיפדיות רבות, כתובות בקוד ויקי ובלואה ([[:w:he:WP:Lua|Lua]]) ומועתקות ידנית לכל ויקי לפי הצורך.
<span id="What_is_an_implementation?"></span>
=== מהו מימוש? ===
מימוש הוא דרך מסוימת לבצע פונקציה. מימוש הוא מתכון שמפרט את הצעדים הדרושים להרצת הפונקציה. הוא יכול להיות פיסת קוד בשפת תכנות או שילוב של קריאות לפונקציות אחרות. לפונקציה יכולים להיות מימושים רבים, שכולם חייבים להיות שקולים זה לזה.
<span id="What_is_a_test?"></span>
=== מהי בדיקה? ===
בדיקה היא דרך לקבוע האם פונקציה נתונה עושה את הדבר הנכון. לרוב, לפונקציה יהיו כמה בדיקות, שכל אחת מהן מציינת קלט כלשהו לפונקציה והתנאים שהפלט התואם נדרש לקיים.
לדוגמה, בודקים לפונקציה "רישיות כותרת" (title case) עשויים לכלול: "<span dir="ltr" lang="en">abc</span>" צריך להפוך ל־"<span dir="ltr" lang="en">Abc</span>"; "<span dir="ltr" lang="en">war and peace</span>" צריך להפוך ל־"<span dir="ltr" lang="en">War and Peace</span>"; "<span dir="ltr" lang="ru">война и мир</span>" צריך להפוך ל־"<span dir="ltr" lang="ru">Война и мир</span>"; ו־"<span dir="ltr" lang="en">123</span>" צריך להפוך ל־"<span dir="ltr" lang="en">123</span>".
<span id="Which_features_are_available_now,_which_will_be_soon_available,_and_which_are_further_away?"></span>
=== אילו יכולות זמינות עכשיו, אילו יהיו זמינים בקרוב ואילו בהמשך? ===
* בהשקה:
** תהיה לנו יכולת לארח פונקציות שעובדות עם מחרוזות ובוליאנים.
** יהיה אפשר לתרגם ויקיפונקצמות ישר מההתחלה. יהיה אפשר להשתמש בהן בכל שפה.
* [[Wikifunctions:Status|בפיתוח מתמשך]]:
** סוגים כלליים פונקציות כלליות (generic) אינם נתמכים לגמרי.
** הוספת סוגים תהיה, לעת־עתה, משהו שרק צוות הפיתוח יכול לעשות. בעתיד, הקהילה תוכל להוסיף עוד סוגים. יש הרבה עבודה שעלינו לעשות בעתיד כדי לגרום לסוגים להתנהג בצורה הרבה יותר חלקה.
*** סוג מעניין במיוחד יהיה נתונים בינריים ובמיוחד קבצים.
** אנחנו תומכים עכשיו בשתי שפות למימושים: JavaScript ופייתון. אנחנו רוצים לתמוך בהרבה יותר שפות בעתיד.
** כרגע, ''לא'' ניתן לקרוא לפונקציות מתוך מימושים בשום שפת תכנות. כרגע זה אפשרי רק באמצעות הרכבה.
* בעתיד:
** יהיה אפשר לקרוא לפונקצית של ויקיפונקציות למיזמי ויקימדיה אחרים ולשלב את התוצאות שלהן בפלט של דף.
** יהיה אפשר להשתמש בנתונים מוויקינתונים בפונקציות.
** יהיה אפשר לקרוא לערכות נתונים ממרחב השם Data בוויקישיתוף.
<span id="How_is_Wikifunctions_multilingual?"></span>
== איך מיזם ויקיפונקציות יהיה רב־לשוני? ==
{{main|Special:MyLanguage/Help:Multilingual}}
מיזמי ויקיפונקציות וויקיפדיה מופשטת יהיה רב־לשוניים בכמה אופנים שאינם משפיעים זה על זה:
* '''מיזם ויקיפונקציות יהיה רב־לשוני מבחינת התוכן וממשק המשתמש שלו.''' משתמשים יכולים לקרוא את התוכן ולקרוא לפונקציות בוויקיפונקציות בכל שפה טבעית. הנה פונקציית "שרשור מחרוזות" [https://www.wikifunctions.org/view/en/Z10000 באנגלית], [https://www.wikifunctions.org/view/pl/Z10000 בפולנית] [https://www.wikifunctions.org/view/he/Z10000 בעברית], והיא זמינה בשפות רבות נוספות.
* '''תורמים יכולים לערוך ולשפר את ויקיפונקציות בשפה שלהם.''' ניתן לערוך אפילו מימושים בשפה הטבעית של התורם. למשל, ניתן לערוך את ההרכבה של הפונקציה "וגם" [https://www.wikifunctions.org/wiki/Z11223?action=edit&uselang=de בגרמנית], [https://www.wikifunctions.org/wiki/Z11223?action=edit&uselang=en באנגלית] או בכל אחת מכ־300 שפות.
* '''אפשר להשתמש בפונקציות של ויקיפונקציות כדי ליצור תוצאות לכל שפה טבעית.''' הקהילה יוצרת מספר הולך וגדל של פונקציות כדי לתמוך ביצירת טקסט בשפות טבעיות רבות. יש לנו פונקציות עבור [[Wikifunctions:Catalogue#Breton|ברטונית]], [[Wikifunctions:Catalogue#Rohingya|רוהינגיה]], [[Wikifunctions:Catalogue#English|אנגלית]] ושפות רבות אחרות.
* '''ניתן לממש פונקציות בוויקיפונקציות בשפות תכנות שונות.''' למשל, [[Z10000|פונקציית השרשור]] ממומשת גם ב־[[Z10005|JavaScript]] וגם ב[[Z10004|פייתון]].
<span id="Which_programming_languages_does_Wikifunctions_currently_support?_Which_programming_languages_will_be_supported_in_the_future?"></span>
=== באילו שפות תכנות מיזם ויקיפונקציות תומך כעת? אילו שפות תכנות ייתמכו בעתיד? ===
{{main|WF:programming languages}}
כעת, ויקיפונקציות תומכות במימושים שכתובים ב־JavaScript ובפייתון. אנחנו מתכננים להוסיף תמיכה ביותר שפות תכנות בעתיד. אנו מקווים להוסיף לפחות שפת תכנות אחת בשנת 2025 (אבל עדיין לא החלטנו איזו).
<span id="How_will_Wikifunctions_be_integrated_into_other_projects?"></span>
=== איך ישולבו ויקיפונקציות במיזמים אחרים? ===
מיזם ויקיפונקציות הוא הצעד הראשון לקראת בניית ויקיפדיה מופשטת (Abstract Wikipedia). ההתמקדות בטווח הקרוב שלנו תהיה בתמיכה בקהילה ובביצוע שיפורים על סמך משוב. במקביל נתחיל בתהליך השילוב שלו עם ויקיפדיה וויקינתונים, מה שיאפשר יישומים רחבים יותר בחיים האמיתיים ויקרב אותנו לחזון של ויקיפדיה מופשטת.
תורמים יוכלו לקרוא לפונקציות שמאוחסנות באתר ויקיפונקציות מתוך הוויקי שלהם. התוצאה של קריאת הפונקציה תוצג לקוראי הוויקי. זה יכול לשמש, למשל, לחישוב גילו של אדם, צפיפות האוכלוסין בהתבסס על נתוני אוכלוסייה ושטח מוויקינתונים, או לציור תרשים ולשילובו בערך נתון.
אפשרות נוספת לשילוב של ויקיפונקציות היא הכנסת ממשק אינטראקטיבי לקריאה לפונקציות לתוך הוויקי שלהם. זה יכול לשמש, למשל, בערך בוויקיפדיה לחישוב דינמי של תוצאה של משוואה בפיזיקה על סמך פרמטרים שניתנים על־ידי הקורא, לצייר פונקציות מתמטיות ולתקשר איתן, וכו'.
<span id="What_Wikifunctions_is_not"></span>
=== מה מיזם ויקיפונקציות איננו ===
ר' את הדף [[Special:MyLanguage/Wikifunctions:What Wikifunctions is not|מה מיזם ויקיפונקציות איננו]] למידע נוסף.
<span id="What_license_will_the_functions_and_derived_content_be_under?"></span>
=== מה יהיה הרישיון של הפונקציות והתוכן הנגזר מהם? ===
<div lang="en" dir="ltr" class="mw-content-ltr">
Per the discussion happened [[:m:Special:MyLanguage/Abstract Wikipedia/Licensing discussion|on Meta between November and December 2021]], all contributions to Wikifunctions and the wider Abstract Wikipedia projects will be published under free licenses. In particular:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Special:MyLanguage/Wikifunctions:Glossary#Content|Textual content]] on Wikifunctions will be published under [[w:Creative Commons license|CC BY-SA 4.0]].</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Special:MyLanguage/Wikifunctions:Glossary#Function|Function signatures]] and other structured content on Wikifunctions will be published under [[w:CC0|CC 0]].</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Special:MyLanguage/Wikifunctions:Glossary#Implementation|Code implementations]] in Wikifunctions will be published under the [[w:Apache License|Apache 2 license]].</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Special:MyLanguage/Wikifunctions:Glossary#Content|Abstract Content]] for Abstract Wikipedia will be published under CC BY-SA 4.0.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
There are still some points that will need to be addressed in the future, such as the license of the generated content from the abstract content. We plan on drafting a more comprehensive document with the Legal department about how people can re-use code from Wikifunctions as painlessly as possible, while adhering to the license.
</div>
<span id="Contributing"></span>
== תרומה ==
<span id="I'm_new_here._What_is_there_for_me_to_do_and_how_can_I_help?"></span>
=== הגעתי עכשיו. מה יש לי לעשות ואיך אפשר לעזור? ===
ברוך בואך! אנחנו שמחים מאוד שבאת! יש הזדמנויות רבות לתרום לוויקיפונקציות, מיצירת פונקציות חדשות ועד לשיפור ותרגום תיעוד. אם חיפשת דרכים להיכנס לעניינים, אנו ממליצים לך, בהתאם לרמת הנוחות שלך, להציע פונקציה חדשה בנושא שמעניין אותך. או אפילו ליצור פונקציה כזאת בעצמך. לכתוב כמה בדיקות. לנסות את עצמך בכתיבת מימוש. לעזור בתרגומים. לקרוא ולשפר את התיעוד שלנו. לעזור בארגון הקהילה.
<span id="How_do_I_create_a_new_function,_implementation,_or_test?"></span>
=== איך אפשר ליצור פונקציה חדשה, מימוש חדש או בדיקה חדשה? ===
כדי לראות איך ליצור פונקציה חדשה, מימוש חדש או בדיקה חדשה, ר' [[Special:MyLanguage/Wikifunctions:Introduction|מבוא לוויקיפונקציות]].
ליותר פרטים על יצירת מימוש, ר' [[Special:MyLanguage/Wikifunctions:How to create implementations|איך ליצור מימושים]].
<span id="What_should_I_edit_first?"></span>
=== מה כדאי לי לערוך תחילה? ===
אם יש לך יכולת לכתוב בכמה שפות, אפשר למצוא פונקציות שעדיין אין להן תוויות ותיאורים בשפות שלך בדף [[Special:ListMissingLabels]], ולעזור להוסיף אותם.
אם מעניין אותך נושא מסוים שיכולות להיות עליו פונקציות בוויקיפונקציות, אך הן עדיין לא קיימות, או אם יש לך רעיונות נוספים לפונקציות, ר' את הדף [[Wikifunctions:Suggest a new function|להצעת פונקציות חדשות]]. שם אפשר להציג את הרעיונות שלך.
אם יש לך יכולות כתיבת קוד ב-JavaScript או בפייתון, אולי אפשר לחפש פונקציות שעדיין אין להן מימושים ב-JavaScript או בפייתון ולנסות לכתוב אותן.
<span id="Where_can_I_go_for_help?"></span>
=== לאן אוכל לפנות לעזרה? ===
התחנה הראשונה שלך אמורה להיות [[Special:MyLanguage/Help:Contents|פורטל העזרה]] שאפשר למצוא בו את כל התיעוד הקשור לשימוש בוויקיפונקציות ועריכה באתר. אם נתקעת, נא לשלוח הודעה ב-[[Wikifunctions:Project chat|מזנון]], ומישהו ויענה על השאלה שלך.
<span id="How_do_we_sort_or_categorize_functions?"></span>
=== איך אנו ממיינים את הפונקציות? ===
{{Tracked|T285424}}
<div class="mw-translate-fuzzy">
לעת־עתה, הדרך הטובה ביותר למיין או לסווג פונקציות היא לעשות זאת ידנית דרך דפים במרחב השמות Wikifunctions. אפשרות נוספת תהיה דרך דף השיחה של הפונקציה הנתונה. אנו נעקוב אחר המאמצים האלה, ונדון עם הקהילה אילו שינויים במערכת יועילו למשימה הזאת.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== How can I setup the software locally to hack on it? ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
See [[Special:MyLanguage/Wikifunctions:Hacking on the evaluator and orchestrator|Hacking on the evaluator and orchestrator]].
</div>
[[Category:FAQ| {{#translation:}}]]
asrr8eunyq2ocz2mmvjhttucle7g23z
Wikifunctions:Report a technical problem/fr
4
11769
296960
279539
2026-08-06T18:03:07Z
FuzzyBot
207
Updating to match new version of source page
296960
wikitext
text/x-wiki
<languages/>
{{shortcut|[[WF:BUG]]}}
{{see also
|Special:MyLanguage/WF:Status|l1=WF:Status
|Special:MyLanguage/WF:Feature_petitions|l2=WF:Feature petitions
}}
Si vous avez trouvé un bug ou un problème dans Wikifunctions, ou si vous avez une requête pour ajouter une fonctionnalité, faites-le nous savoir !
<span id="Scope"></span>
== But ==
* '''Bug''' - Un problème qui produit des résultats incorrects ou inattendus sur Wikifunctions. Notez que les problèmes dans les fonctions elle-mêmes ne sont pas considérés comme un bug dans ce contexte.
* '''Demande de fonctionnalité''' - une idée que l'équipe de développement peut ajouter à Wikifunctions pour le rendre encore plus impressionnant !
Avez-vous besoin d'aide pour autre chose ?
: Les éléments suivants sont '''hors-sujet''' du travail de l'équipe de développement de Wikifunctions :
:* '''Le contenu des fonctions individuelles''' - Discutez de celles-ci sur la page de discussion de la fonction elle-même, ou demandez de l'aide à [[Wikifunctions:Project chat]] ou dans les canaux énumérés ci-dessous ; si vous pensez qu'une fonction manque, voir [[Wikifunctions:Suggest a function]]
:* '''Les politiques du projet Wikifunctions''' - Demandez-le à [[Wikifunctions:Project chat]] ou dans les canaux énumérés ci-dessous
<span id="Find_existing_bugs_and_feature_requests"></span>
== Trouver les bugs et les requêtes de fonctionnalités qui existent ==
* Voir '''[[Wikifunctions:Status]]''' pour un résumé rapide des problèmes de haut niveau.
* Vous pouvez '''[[phab:maniphest/query/UzvNRqsdnymk/|rechercher dans la liste]] des tâches ouvertes de Phabricator''' pour voir si votre bug ou idée de fonctionnalité est déjà documenté.
<span id="Discuss_with_others"></span>
== Discussions avec les autres ==
Vous pouvez poser des questions sur les éventuels bugs ou idées de fonctionnalités à quelques endroits. Cela peut être utile si vous ne savez pas comment décrire clairement le bug ou l'idée de fonctionnalité :
* <span class="mw-translate-fuzzy">La page de discussion est ici.</span>
* Le chat principal sur [https://t.me/Wikifunctions Telegram] ou IRC {{channel|wikipedia-abstract}} (réunis) ([https://wm-bot.wmcloud.org/logs/%23wikipedia-abstract/ logs], [https://wm-bot.wmflabs.org/logs/%23wikipedia-abstract/ anciens logs])
* Le chat des développeurs sur [https://t.me/abstract_wikipedia_tech Telegram] ou IRC {{channel|wikipedia-abstract-tech}} (réunis) ([https://wm-bot.wmcloud.org/logs/%23wikipedia-abstract-tech/ journaux])
<span id="File_a_task_in_Phabricator"></span>
== Enregistrez une tâche dans Phabricator ==
Si vous connaissez Phabricator, vous pouvez rechercher et archiver les tâches directement.
Si vous ne le savez pas encore : Phabricator est l'outil collaboratif de développement basé sur le Web principalement utilisé pour gérer les projets logiciels MediaWiki, y compris Wikifunctions. Un bref résumé de Phabricator pour les nouveaux arrivants, y compris des vidéos tutorielles, est sur le wiki de MediaWiki à [[mw:Special:MyLanguage/Phabricator/Help|mw:Phabricator/Help]] .
* Vous pouvez '''[[phab:maniphest/query/UzvNRqsdnymk/|rechercher dans la liste]] des tâches ouvertes de Phabricator''' pour voir si votre bug ou idée de fonctionnalité est déjà documenté.
** Les tâches existantes sont collectées avec la balise '''[[phab:tag/abstract wikipedia team|#abstract wikipedia team]]'''.
* Vous pouvez '''[https://phabricator.wikimedia.org/maniphest/task/edit/form/43/?projects=abstract_wikipedia enregistrer une nouvelle tâche]'''. Veuillez toujours inclure :
** Exemples
** Tout lien pertinent
** Pour les bugs : les étapes exactes qui ont produit le bug, afin que l'équipe puisse le reproduire et le diagnostiquer.
<span id="Languages"></span>
== Langues ==
L'équipe de développement comprend un nombre limité de langues - mais vous êtes libre de signaler les problèmes dans n'importe quelle langue qui vous convient.
Si possible, veuillez fournir un résumé en anglais lors de la création d'une tâche de phabricator, ou demander à quelqu'un de vous aider.
<span id="Follow-up"></span>
== Suivi ==
* Les sites ci-dessus sont suivis par l'équipe de développement de Wikifunctions, ainsi que par les membres de la communauté. Le temps de réponse varie selon la nature ou la complexité du sujet, etc. Cependant, en général, vous pouvez obtenir une réponse dans les 2 jours ouvrables. S'il vous plaît, dites-nous si nous avons manqué quelque chose, car la vie peut être distractive !
* Tous les problèmes ne peuvent pas être résolus immédiatement : en fonction de l'impact, de la priorité, etc., certains bugs peuvent être triés à la priorité basse. Vous pouvez suivre l'état de votre rapport sur la tâche de phabricator liée.
[[Category:Report a technical problem{{#translation:}}]]
qtqobajthz11kuqn481m6bvd4tn75m1
Wikifunctions:Report a technical problem/he
4
11786
296962
279541
2026-08-06T18:03:08Z
FuzzyBot
207
Updating to match new version of source page
296962
wikitext
text/x-wiki
<languages/>
{{shortcut|[[WF:BUG]]}}
{{see also
|Special:MyLanguage/WF:Status|l1=WF:Status
|Special:MyLanguage/WF:Feature_petitions|l2=WF:Feature petitions
}}
אם מצאתם באג בויקיפונקציות, או אם יש לכם בקשות לתכונות חדשות, ספרו לנו!
<span id="Scope"></span>
== מה זה כולל ==
* '''באג''' - תקלה שגורמת לתוצאה שגויה או בלתי־צפויה בוויקיפונקציות. נא לשים לב לכך שתקלות בפונקציות עצמן לא נחשבות כבאג בהקשר הזה.
* '''הצעות לתכונות''' - הצעות שצוות פיתוח יכול להוסיף אל מיזם ויקיפונקציות כדי לשפר אותו עוד יותר.
האם אתם צריכים עזרה עם משהו אחר?
: הדברים הבאים הם '''מחוץ לתחום''' העבודה של צוות הפיתוח של ויקיפונקציות:
:* ה'''תוכן של פונקציות מסוימות''' – יש לדון באלה בדף השיחה של הפונקציה עצמה או לבקש עזרה בדף [[Wikifunctions:Project chat]] או בערוצים הרשוימה למטה; אם נראה לכם שחסרה פונקציה, ר' [[Wikifunctions:Suggest a function]]
:* '''מדיניות מיזם ויקיפונקציות''' – נא לשאול על אלה בדף [[Wikifunctions:Project chat]] או הערוצים הרשומים למטה
<span id="Find_existing_bugs_and_feature_requests"></span>
== איך למצוא באגים והצעות לתכונות שכבר קיימים ==
* ר' '''[[Wikifunctions:Status]]''' עבור סיכום קצר על בעיות בעדיפות גבוהה.
* אפשר '''[[phab:maniphest/query/UzvNRqsdnymk/|לחפש בפבריקטור]] רשימות של משימות פתוחות''' כדי לראות אם הבאג או ההצעה לשיפור כבר קיימים במערכת.
<span id="Discuss_with_others"></span>
== דיון עם אחרים ==
אתם מוזמנים לשאול שאלות אם אתם חושדים שיש באג חדש או שיש לכם הצעות לשיפור במספר מקומות. אלו הדברים שיכולים לעזור אם אתם לא בטוחים איך לתאר באג או הצעה לשיפור:
* <span class="mw-translate-fuzzy">דף השיחה כאן.</span>
* ההתכתבות הראשית ב[https://t.me/Wikifunctions טלגרם] או ב־IRC {{channel|wikipedia-abstract}} (מקושרים יחד) ([https://wm-bot.wmcloud.org/logs/%23wikipedia-abstract/ יומנים], [https://wm-bot.wmflabs.org/logs/%23wikipedia-abstract/ יומנים ישנים])
* ההתכתבות של המפתחים ב[https://t.me/abstract_wikipedia_tech טלגרם] או ב־IRC {{channel|wikipedia-abstract-tech}} (מקושרים יחד) ([https://wm-bot.wmcloud.org/logs/%23wikipedia-abstract-tech/ יומנים])
<span id="File_a_task_in_Phabricator"></span>
== הוסיפו משימה לפבריקטור ==
אם אתם מכירים את הפבריקטור, תוכלו לחפש ולהוסיף משימה ישירות.
אם הפבריקטור לא מוכר לכם עדיין: הפבריקטור הוא כלי פיתוח מבוסס אתר שנועד לנהל את אתרי תוכנת מדיה־ויקי הכולל את ויקיפונקציות. סיכום קצר על פבריקטור בעבור משתמשים חדשים, כולל מספר סרטונים, נמצאים באתר של מדיה־ויקי ב־[[mw:Special:MyLanguage/Phabricator/Help|mw:Phabricator/Help]].
* אתם יכולים '''[[phab:maniphest/query/UzvNRqsdnymk/|לחפש]] את הרשימה של המשימות הפתוחות''' כדי לראות אם הבאג או ההצעה לשיפור כבר נוספה.
** המשימות הקיימות מתוייגות באמצעות '''התג [[phab:tag/abstract wikipedia team|#abstract wikipedia team]]'''.
* אתם מוזמנים '''[https://phabricator.wikimedia.org/maniphest/task/edit/form/43/?projects=abstract_wikipedia ליצור משימה חדשה]'''. אנא הוסיפו תמיד:
** דוגמאות
** קישורים רלוונטים
** עבור באגים: הדרך המדויקת שגרמה להופעת הבאג, כדי שצוות הפיתוח יוכל לגרום אליו ולאבחן אותו.
<span id="Languages"></span>
== שפות ==
צוות הפיתוח יודע מספר מצומצם של שפות - אך אתם מוזמנים לדווח על תקלה בכל שפה שתבחרו.
אם זה אפשרי, אנא כתבו סיכום באנגלית כאשר פותחים משימה בפבריקטור, או בקשו ממישהו לעזור לכם.
<span id="Follow-up"></span>
== מעקב ==
* <span lang="en" dir="ltr" class="mw-content-ltr">The locations above are followed by the Wikifunctions development team, as well as community members. The time to get a reply varies depending on the nature or complexity of the topic, etc. However, in general, you can get an answer within 2 workdays. Please let us know if we missed something, as life can get distracting!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Not all problems can be solved immediately: depending on the impact, priority, etc. some bugs can be triaged to low priority. You may follow the status of your report on the relevant linked phabricator task.</span>
[[Category:Report a technical problem{{#translation:}}]]
fqsuo6rk8nj7eefo52acmoduikf0c5x
Wikifunctions:FAQ/en-gb
4
11821
296914
265378
2026-08-06T18:01:56Z
FuzzyBot
207
Updating to match new version of source page
296914
wikitext
text/x-wiki
<languages/>
{{shortcut|[[WF:FAQ]]}}
<div lang="en" dir="ltr" class="mw-content-ltr">
This is a dedicated page for the Frequently Asked Questions about Wikifunctions. Please, feel free to ask your own question on the [[Wikifunctions talk:FAQ|talk page]], if your question is not listed here!
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Also, please consider our [[:m:Special:MyLanguage/Abstract Wikipedia/FAQ|FAQ on Meta]] regarding more general questions about Wikifunctions and Abstract Wikipedia.
</div>
__TOC__
== Introduction ==
=== What is this project about? ===
<div lang="en" dir="ltr" class="mw-content-ltr">
Wikifunctions is a new Wikimedia project that provides a catalog of all kinds of functions that anyone can call, write, maintain, and use. It also provides the underlying technology that will eventually enable the translation of language-independent articles from Abstract Wikipedia into the language of any Wikipedia. This will allow everyone to contribute and read articles in their preferred languages.
</div>
=== What is a function? ===
<div lang="en" dir="ltr" class="mw-content-ltr">
Functions are a form of knowledge that can answer questions, such as how many days have passed between two dates or the distance between two cities. More complicated functions can answer more complicated questions, such as the volume of a three-dimensional shape, the distance between Mars and Venus on a certain date, or whether two species were alive at the same time.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
We already use functions in many types of knowledge inquiries, such as asking a question to a search engine. The templates, such as [[:w:en:Template:Convert|Template:Convert]] and [[:w:en:Template:Age|Template:Age]] on English Wikipedia, are also examples of functions that are already used in many Wikipedias, written in wikitext and Lua and manually copied to each wiki where they're wanted.
</div>
=== What is an implementation? ===
<div lang="en" dir="ltr" class="mw-content-ltr">
An implementation is a particular way to execute a function. An implementation is a recipe that lists the steps that are needed to run the function. It may be a piece of code in a programming language or a combination of calls to other functions. A function may have many implementations, which should all be equivalent.
</div>
=== What is a test? ===
<div lang="en" dir="ltr" class="mw-content-ltr">
A test is a way to determine if a given function is doing the right thing. A function will typically have multiple testers, each specifying some input to the function and the conditions the output for the given input must fulfill.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For example, testers for a “title case” function might include: “<span dir="ltr" lang="en">abc</span>” should become “<span dir="ltr" lang="en">Abc</span>”; “<span dir="ltr" lang="en">war and peace</span>” should become “<span dir="ltr" lang="en">War and Peace</span>”; “<span dir="ltr" lang="ru">война и мир</span>” should become “<span dir="ltr" lang="ru">Война и мир</span>”; and “<span dir="ltr" lang="en">123</span>” should remain “<span dir="ltr" lang="en">123</span>”.
</div>
=== Which features are available now, which will be soon available, and which are further away? ===
* <span lang="en" dir="ltr" class="mw-content-ltr">At launch:</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">We have the ability to have functions that work with Strings and Booleans.</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">Wikifunctions will be fully internationalized from the beginning. It can be used in any language.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Wikifunctions:Status|Ongoing development]]:</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">Generic types and generic functions are not fully supported.</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">Adding types will, for now, be something that is limited to the development team. In the future, the community will be able to add more types. There is a lot of work to be done in the future to make types behave much more smoothly.</span>
*** <span lang="en" dir="ltr" class="mw-content-ltr">One particularly interesting type will be binary data, and particularly files.</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">We currently support two programming languages for implementations: JavaScript and Python. In the future, we want to support many more.</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">Currently, it is ''not'' possible to call other functions from implementations written in any programming language. This is currently only possible through composition.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">In the future:</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">It will be possible to call Wikifunctions functions from other Wikimedia projects and integrate their results into the output of the page.</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">It will be possible to use data from Wikidata in functions.</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">It will be possible to call data sets from Commons Data namespace.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== How is Wikifunctions multilingual? ===
</div>
{{main|Special:MyLanguage/Help:Multilingual}}
<div lang="en" dir="ltr" class="mw-content-ltr">
Wikifunctions and Abstract Wikipedia are multilingual in a number of ways that do not impact each other:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Wikifunctions is multilingual in terms of its content and user interface.''' Users can read and call functions on Wikifunctions in any natural language. Here is the “join string” function in [https://www.wikifunctions.org/view/en/Z10000 English], [https://www.wikifunctions.org/view/pl/Z10000 Polish], and [https://www.wikifunctions.org/view/he/Z10000 Hebrew], and it is available in many more languages.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Contributors can edit and improve Wikifunctions using their language.''' Even implementations can be edited in the natural language of the contributor. For example, the composition of the “and” function can be edited in [https://www.wikifunctions.org/wiki/Z11223?action=edit&uselang=de German], [https://www.wikifunctions.org/wiki/Z11223?action=edit&uselang=en English], or any other of about 300 languages.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Wikifunctions functions can be used to create results for any natural language.''' The community is creating a growing number of functions to support the generation of text in many natural languages. We have functions for [[Wikifunctions:Catalogue#Breton|Breton]], [[Wikifunctions:Catalogue#Rohingya|Rohingya]], [[Wikifunctions:Catalogue#English|English]], and many other languages.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Functions in Wikifunctions can be implemented in various different programming languages.''' For example, the [[Z10000|join function]] is implemented in both [[Z10005|JavaScript]] and [[Z10004|Python]].</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Which programming languages does Wikifunctions currently support? Which programming languages will be supported in the future? ===
</div>
{{main|WF:programming languages}}
<div lang="en" dir="ltr" class="mw-content-ltr">
Currently, Wikifunctions supports implementations written in JavaScript and Python. We plan to add support for more programming languages in the future. We hope to add at least one further programming language in 2025 (but have not yet decided which one).
</div>
=== How will Wikifunctions be integrated into other projects? ===
<div lang="en" dir="ltr" class="mw-content-ltr">
Wikifunctions is the first step towards building Abstract Wikipedia. Our near-term focus will be on supporting the community and making improvements based on feedback. Concurrently, we will begin the process of integrating it with Wikipedia and Wikidata, which will enable broader real-life applications and get us closer to the vision of Abstract Wikipedia.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Contributors will be able to call functions stored on the Wikifunctions site from within their wikis. The result of the function call will be displayed to readers of the wiki. This can be used, for example, to calculate the age of a person, the population density based on population and area data from Wikidata, or to draw a graph and integrate it into a given article.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Another option to integrate Wikifunctions will be to integrate an interactive function call interface within their wiki. This could be used, for example, in a Wikipedia article to dynamically calculate the result of a physical equation based on reader-provided parameters, draw and interact with mathematical functions, etc.
</div>
<span id="What_Wikifunctions_is_not"></span>
<div class="mw-translate-fuzzy">
=== What Wikifunctions is not? ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Please, see [[Special:MyLanguage/Wikifunctions:What Wikifunctions is not|Wikifunctions:What Wikifunctions is not]] for more information on that.
</div>
=== What license will the functions and derived content be under? ===
<div lang="en" dir="ltr" class="mw-content-ltr">
Per the discussion happened [[:m:Special:MyLanguage/Abstract Wikipedia/Licensing discussion|on Meta between November and December 2021]], all contributions to Wikifunctions and the wider Abstract Wikipedia projects will be published under free licenses. In particular:
</div>
* [[Special:MyLanguage/Wikifunctions:Glossary#Content|Textual content]] on Wikifunctions will be published under [[w:Creative Commons license|CC BY-SA 4.0]].
* [[Special:MyLanguage/Wikifunctions:Glossary#Function|Function signatures]] and other structured content on Wikifunctions will be published under [[w:CC0|CC 0]].
* [[Special:MyLanguage/Wikifunctions:Glossary#Implementation|Code implementations]] in Wikifunctions will be published under the [[w:Apache License|Apache 2 license]].
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Special:MyLanguage/Wikifunctions:Glossary#Content|Abstract Content]] for Abstract Wikipedia will be published under CC BY-SA 4.0.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
There are still some points that will need to be addressed in the future, such as the license of the generated content from the abstract content. We plan on drafting a more comprehensive document with the Legal department about how people can re-use code from Wikifunctions as painlessly as possible, while adhering to the license.
</div>
== Contributing ==
=== I'm new here. What is there for me to do and how can I help? ===
Welcome! We're very happy to have you here! There are many opportunities for contributing to Wikifunctions, from creating new functions to improving and translating documentation. If you are looking for ways to get involved, we recommend that maybe, depending on your level of comfort, you suggest a new function on a topic you are interested in. Or even create such a function. Provide some tests. Try your hand at an implementation. Help with translations. Read and improve our documentation. Help with organising the community.
<span id="How_do_I_create_a_new_function,_implementation,_or_test?"></span>
=== How do I create a new function or implementation or test? ===
<div lang="en" dir="ltr" class="mw-content-ltr">
To see how to create a new function, implementation, or test, see [[Special:MyLanguage/Wikifunctions:Introduction|Wikifunctions:Introduction]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
To see in more detail how to create an implementation, see [[Special:MyLanguage/Wikifunctions:How to create implementations|Wikifunctions:How to create implementations]].
</div>
=== What should I edit first? ===
<div lang="en" dir="ltr" class="mw-content-ltr">
If you can write several languages, find functions that don't have labels and descriptions in your languages yet on the page [[Special:ListMissingLabels]], and help to add them.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If you have some interest in a domain that could feature functions in Wikifunctions, but yet doesn't, or if you have more ideas for functions, go to the page for [[Wikifunctions:Suggest a new function|suggesting new functions]] and present your ideas.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If you are a coder in JavaScript or Python, maybe you want to check for functions that don't yet have implementations in JavaScript or Python, and try to write them.
</div>
=== Where can I go for help? ===
<div lang="en" dir="ltr" class="mw-content-ltr">
Your first stop should be the [[Special:MyLanguage/Help:Contents|Help portal]], where you'll find all the documentation related to using and editing Wikifunctions. If you're still stuck, post a message on [[Wikifunctions:Project chat|Project chat]], and someone will answer your question.
</div>
<span id="How_do_we_sort_or_categorize_functions?"></span>
=== How do we sort or categorise functions? ===
{{Tracked|T285424}}
<div lang="en" dir="ltr" class="mw-content-ltr">
For now, the best way to sort or categorize functions is to do it by hand through [[Special:MyLanguage/Wikifunctions:Catalogue|pages in the Wikifunctions namespace]]. Another option would be through the talk page of the given function. We will monitor these efforts and discuss with the community which changes to the system would be helpful for this task.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== How can I setup the software locally to hack on it? ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
See [[Special:MyLanguage/Wikifunctions:Hacking on the evaluator and orchestrator|Hacking on the evaluator and orchestrator]].
</div>
[[Category:FAQ| {{#translation:}}]]
h9i66hvkeyl9b6b4caqufrtkqrt1d1p
Wikifunctions:Report a technical problem/en-gb
4
12009
296958
279537
2026-08-06T18:03:07Z
FuzzyBot
207
Updating to match new version of source page
296958
wikitext
text/x-wiki
<languages/>
{{shortcut|[[WF:BUG]]}}
{{see also
|Special:MyLanguage/WF:Status|l1=WF:Status
|Special:MyLanguage/WF:Feature_petitions|l2=WF:Feature petitions
}}
If you have found a bug in Wikifunctions, or you have a feature request for Wikifunctions, please let us know!
== Scope ==
* '''Bug''' - a problem that is producing incorrect or unexpected results on Wikifunctions. Note that problems within Functions themselves are not considered a bug in this context.
* '''Feature request''' - an idea that the development team can add to Wikifunctions to make it even better.
Do you need help with something else?
: The following are '''out of scope''' of the work of the Wikifunctions development team:
:* The '''content of individual Functions''' – Discuss those on the talkpage of the Function itself, or ask for help at [[Wikifunctions:Project chat]] or in the channels listed below; if you think a function is missing, see [[Wikifunctions:Suggest a function]]
:* The '''Wikifunctions project's policies''' – Ask about those at [[Wikifunctions:Project chat]] or in the channels listed below
== Find existing bugs and feature requests ==
* See '''[[Wikifunctions:Status]]''' for a quick summary of high-level issues.
* You can '''[[phab:maniphest/query/UzvNRqsdnymk/|search the Phabricator]] listing of open tasks''' to see if your bug or feature idea is already documented.
== Discuss with others ==
You can ask questions about possible bugs or feature ideas at a few locations. This may be helpful if you are unsure how to clearly describe the bug or feature idea:
* <span class="mw-translate-fuzzy">The discussion page here.</span>
* The main chat on [https://t.me/Wikifunctions Telegram] or IRC {{channel|wikipedia-abstract}} (bridged together) ([https://wm-bot.wmcloud.org/logs/%23wikipedia-abstract/ logs], [https://wm-bot.wmflabs.org/logs/%23wikipedia-abstract/ old logs])
* The developer chat on [https://t.me/abstract_wikipedia_tech Telegram] or IRC {{channel|wikipedia-abstract-tech}} (bridged together) ([https://wm-bot.wmcloud.org/logs/%23wikipedia-abstract-tech/ logs])
== File a task in Phabricator ==
If you are familiar with Phabricator, you can search and file tasks directly.
If you are not yet familiar: Phabricator is the web-based development collaboration tool mostly used to manage MediaWiki software projects including Wikifunctions. A short summary about Phabricator for newcomers, including tutorial videos, is on MediaWiki's wiki at [[mw:Special:MyLanguage/Phabricator/Help|mw:Phabricator/Help]].
* You can '''[[phab:maniphest/query/UzvNRqsdnymk/|search]] the listing of open tasks''' to see if your bug or feature idea is already documented.
** <span class="mw-translate-fuzzy">The existing tasks are collected with the '''[[[[phab:tag/abstract wikipedia team|#abstract wikipedia team]]|#abstract wikipedia team]] tag'''.</span>
* You can '''[https://phabricator.wikimedia.org/maniphest/task/edit/form/43/?projects=abstract_wikipedia file a new task]'''. Please always include:
** Examples
** Any relevant links
** For bugs: The exact steps that produced the bug, so that the team can reproduce and diagnose it.
== Languages ==
The development team understands a limited number of languages – but you are free to report issues in any language that you're comfortable with.
If possible, please provide a summary in English when creating a phabricator task, or ask someone to help you.
== Follow-up ==
* The locations above are followed by the Wikifunctions development team, as well as community members. The time to get a reply varies depending on the nature or complexity of the topic, etc. However, in general, you can get an answer within 2 workdays. Please let us know if we missed something, as life can get distracting!
* Not all problems can be solved immediately: depending on the impact, priority, etc., some bugs can be triaged to low priority. You may follow the status of your report on the relevant linked phabricator task.
[[Category:Report a technical problem{{#translation:}}]]
7gxvimsrnszvb7116cfbix20p1e78jy
Wikifunctions:How to create implementations/en-gb
4
12322
296939
276448
2026-08-06T18:02:31Z
FuzzyBot
207
Updating to match new version of source page
296939
wikitext
text/x-wiki
<languages/>
<div lang="en" dir="ltr" class="mw-content-ltr">
This page provides a more detailed guide to '''creating implementations''', beyond the overview at {{ll|Wikifunctions:Introduction}}.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Types of Implementations ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
In Wikifunctions, an '''implementation''' can take one of two main forms: '''code''' or '''composition'''. A code implementation directly expresses the function’s logic in any of the available programming languages (currently, Python3 or JavaScript). It’s most useful when the function’s behavior can’t easily be built from existing Wikifunctions, or when precise control over data processing is needed.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
A composition implementation, on the other hand, defines the function entirely by combining other existing functions, without writing code. Compositions are easier to understand, reuse, and translate into other languages automatically, but they depend on suitable building blocks already being available and often are less performant. In general, start by checking whether your goal can be achieved through composition; if it can’t, or if performance or fine-grained logic matters, choose a code implementation instead.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
There's a third type of implementation: '''built-ins'''. These are run by system-built code, and are not editable. Most likely all pre-defined functions will have a built-in implementation. In such cases, when opening the implementation page, you will see a message stating ''"{{int|wikilambda-implementation-selector-none}}"''
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Practice Test-Driven Development ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
'''Test-Driven Development''', or '''TDD''', is a way of creating software where you write tests before you write the actual code. Tests are just a way of understanding what your function is supposed to do by listing examples and how they should work.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
In Wikifunctions, writing tests first offers significant benefits. If you are working on an implementation, you can run your code against the existing tests to check that it behaves as expected. This makes it easier to catch errors early before even publishing your implementation. Tests are also a powerful way to describe the function you need. By writing tests, '''you clearly communicate the expected behavior''', and the community can step in and help with the implementation, or create alternative implementations.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Imagine you want to implement a Function that combines two strings with a space in between. A basic test for this might look like:
</div>
<syntaxhighlight lang="prolog">
join_with_space( "Hello", "world" ) => "Hello world"
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
Once you have defined the basic behavior, it's important to '''think about edge cases'''—situations where the inputs are such that you might need some special behavior.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For example, what if your first string ends in a space, or your second string starts with a space? Should the function keep all existing spaces and add another one, or should it return a neatly spaced result with just a single space between the words?
Depending on your requirements, you should build a test for such a case. For example, a test for this edge case could be either one of these — but not both!:
</div>
<syntaxhighlight lang="prolog">
join_with_space( "Hello ", " world") => "Hello world"
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
or ...
</div>
<syntaxhighlight lang="prolog">
join_with_space( "Hello ", " world") => "Hello world"
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
Make sure that all possible special cases are covered by your tests, and once you have them, make sure that they are all connected to the Function by selecting them and clicking "Connect".
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Code implementations ==
</div>
[[File:Code implementation.png|thumb|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Wikifunctions code editor initialized with a function template</span>|<span lang="en" dir="ltr" class="mw-content-ltr">When adding a new code implementation, the function template is initialized with the function and argument names</span>]]
<div lang="en" dir="ltr" class="mw-content-ltr">
When creating an implementation using code, the Wikifunctions UI will set up a code editor with the selected language activated for syntax highlighting and validation. When the function to implement and the programming language are selected, this editor will be set with the correct function template: '''do not remove or edit this'''! Keep your code inside this function signature: if you need auxiliary functions, you can simply declare them inside your top-level function declaration.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Using input types in your code ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Wikifunctions types {{Z|Z6}} and {{Z|Z40}} can be used as if they were native types in both JavaScript and Python3. For example, a String input can be concatenated or a Boolean be directly used in a logical expression. To use other types in your code implementations, you will have to look deeper into the type, figure out if it has a conversion to a native equivalent, and treat it accordingly.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For example, let's say we want to write some Python code that handles an input of type {{Z|Z20420}}. In the page for this type, let's look at its "type converters to code" and search for a Python one. The converter {{Z|Z20424}} will be applied to our date input before our code, so looking at "native type" we know that our input will be a Python ''dict'' and looking at the implementation we can see the keys we can expect:
</div>
<syntaxhighlight lang="python3">
return {
'K1': year,
'K2': month,
'K3': day
}
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
When a type doesn't have a converter, you'll have to access its parts directly using its keys. For example, let's assume that your function <code>Z30000</code> has one input <code>Z30000K1</code> of type {{Z|Z11}}. This type has two keys: <code>Z11K1</code> for the language (itself an object of type {{Z|Z60}}), and <code>Z11K2</code> for the string value. Similarly, the language object has a key <code>Z60K1</code> for the language code. So, to get a string with the language code and the text, you can write:
</div>
<syntaxhighlight lang="javascript">
function Z30000( Z30000K1 ) {
// e.g. "en: some text"
return Z30000K1.Z11K1.Z60K1 + ": " + Z30000K1.Z11K2;
}
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
For a quick reference of the available type conversions visit [[Special:MyLanguage/Wikifunctions:Execution targets#Default type conversion|the default type conversion table]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Returning the right outputs ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Similarly to the way you treat inputs, outputs need to match the type specified in the function definition. Some can be treated as simply as native types, so any string output will be converted into a Wikifunctions {{Z|Z6}} object and any native boolean returned by your implementation will be converted into a Wikifunctions {{Z|Z40}} object.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Those types that have "type converters from code" will apply the appropriate function to the output, in order to build the required type. Following the example of {{Z|Z20420}}, the {{Z|Z20443}} will transform the output from your implementation–a dict with K1, K2 and K3 keys–into its correct ZObject representation.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For types that don't have converters from code, you can carefully build and return the output objects. For example, imagine that our function <code>Z30000</code> takes two string inputs: language code and text, and should return a {{Z|Z11}} object. You can do this in Python by using the <code>ZObject</code> constructor:
</div>
<syntaxhighlight lang="python3">
def Z30000(Z30000K1, Z30000K2):
lang_object = ZObject(
{"Z1K1": "Z9", "Z9K1": "Z60"},
Z60K1 = Z30000K1
)
return ZObject(
{"Z1K1": "Z9", "Z9K1": "Z11"},
Z11K1 = lang_object,
Z11K2 = Z30000K2
)
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
Or in JavaScript:
</div>
<syntaxhighlight lang="javascript">
function Z30000( Z30000K1, Z30000K2 ) {
const langObject = new ZObject(
new Map( [ [ "Z60K1", Z30000K1 ] ] ),
{ "Z1K1": "Z9", "Z9K1": "Z60" }
);
const monolingualKeys = new Map( [
[ "Z11K1", langObject ],
[ "Z11K2", Z30000K2 ]
] );
return new ZObject(
monolingualKeys,
{ "Z1K1": "Z9", "Z9K1": "Z11" }
);
}
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
You can learn more about the <code>ZObject</code> class and other useful constructors in {{ll|Wikifunctions:Execution_targets#Custom_and_non-built-in_type_conversion}}
</div>
{{phab|T392750}}<div lang="en" dir="ltr" class="mw-content-ltr">
As of 2026-05, trying to return a list of lists may fail, so you're not able to implement such functions in code.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Code in Python ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
In this section, we give a concrete example on how to create an implementation in the form of Code in Python. Say we want to create an implementation for a Function which combines two input strings by putting a space between them, returning the result of that. Let’s assume the ZID of that function is Z30000.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The implementation is defined using the ZID of the function. So are the arguments of the function. So in the case of the function Z30000 with its two arguments, the function template should look like this:
</div>
<syntaxhighlight lang="python3">
def Z30000(Z30000K1, Z30000K2):
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
As we described before, we know that the arguments (<code>Z30000K1</code> and <code>Z30000K2</code>) are Strings, so we can treat them as simply as we use native strings in Python. Also, the function should return a String. For our example, we simply return the two arguments concatenated with a space in between:
</div>
<syntaxhighlight lang="python3">
def Z30000(Z30000K1, Z30000K2):
return Z30000K1 + " " + Z30000K2
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
Since this is Python, do not forget to indent this line.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If you have followed our advice to [[#Practice Test-Driven Development|practice TDD]], you will already have a set of tests that you know should work. If that's the case, while building your implementation you can click on the circular arrow in the Tests panel, and see if your implementation passes all of them.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Remember that the runtime has no state. Don’t assume values for global or static variables. If you have further questions about what you can and cannot do in Python, ask on [[Wikifunctions:Python implementations]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Code in JavaScript ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
In this section, we give a concrete example on how to create an implementation in the form of Code in JavaScript. Say we want to create an implementation for a Function which combines two input strings by putting a space between them, returning the result of that. Let’s assume the ZID of that function is <code>Z30000</code>.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The implementation is defined using the ZID of the function. So are the arguments of the function. So in the case of the function <code>Z30000</code> with its two arguments, the function template should look like this:
</div>
<syntaxhighlight lang="javascript">
function Z30000( Z30000K1, Z30000K2 ) {
}
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
We know that the arguments (<code>Z30000K1</code> and <code>Z30000K2</code>) are Strings, so we can treat them as native strings in JavaScript. Also, the function should return a String. To complete our function, you can then add a line concatenating the input strings, like this:
</div>
<syntaxhighlight lang="javascript">
function Z30000( Z30000K1, Z30000K2 ) {
return Z30000K1 + " " + Z30000K2;
}
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
If you have tests as recommended in the [[#Practice Test-Driven Development|TDD]] section above, click on the circular arrow in the Tests panel and see if your implementation passes all of them.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Remember that the runtime has no state. Don’t assume values for global or static variables. If you have further questions about what you can and cannot do in JavaScript, ask on [[Wikifunctions:JavaScript implementations]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Compositions ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
In this section, we give a concrete example on how to create an implementation in the form of a composition. Say we want to create an implementation for a Function which combines two input strings by putting a space between them, returning the result of that. Let’s assume the ZID of that function is <code>Z30000</code>.
</div>
<div class="mw-translate-fuzzy">
It is usually a good idea to first think about how to combine existing functions in order to create the desired output. Sometimes this might be trivial and you can just go ahead with composing functions, but in many cases it is worthwhile to note the desired composition down. The Wikifunctions composition interface is not very good yet at editing compositions, so it is a good idea to first figure out what exactly you want to create.
</div>
<div class="mw-translate-fuzzy">
For example, for the given Function, we could use the existing [[{{Z|Z10000}}|''Function to concatenate strings'']]. That Function takes two strings and makes one string out of them. But we need to add a space in between. So we first concatenate a space to the end of the first string, and then concatenate the second string to the result of that first concatenation. So our composition could be noted down like this:
</div>
<syntaxhighlight lang="prolog">
join_strings( join_strings( Z30000K1, " " ), Z30000K2 )
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
There are multiple ways to write a composition: notice that the same thing could be accomplished with:
</div>
<syntaxhighlight lang="prolog">
join_strings( Z30000K1, join_strings( " ", Z30000K2 ) )
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
An alternative implementation could also use the existing Function {{Z|Z15175}}, so your composition could be:
</div>
<syntaxhighlight lang="prolog">
join_with_separator( Z30000K1, Z30000K2, " " )
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
As you can see, there are multiple ways to accomplish this, so take your time and explore the existing functions available in the {{ll|Wikifunctions:Catalogue}}.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Let's try to create the second example, <code>join_strings(Z30000K1, join_strings(" ", Z30000K2))</code>.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
In order to create this:
</div>
# <span lang="en" dir="ltr" class="mw-content-ltr">Start adding an implementation by clicking on the "+" button in the "Implementations" table from your Function page.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Make sure that the option "composition" under "Implementation" is selected.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Click on the "›" icon or click the "Select Function" link to expand the function details.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Under "function" search for the name of the outermost function you want to use, which in this example is "join two strings". Then, select the wanted function from the dropdown list.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">You will see two new fields, one for each of the arguments needed for the selected function.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">For the first argument, we want to select the first input to our function:</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "first string", click on the "…" button and select "Argument reference".</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "key id" you can now select the first string of your function from the dropdown, which contains all available inputs.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">For the second argument, we want to use the result of another call to "join two strings":</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "second string", click on the "…" button and select "Function call".</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function", search and select the function you want to call, which is again "join two strings".</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">For this inner function call, configure the "first string" by simply typing a white space in the text field, and configure the "second string" as you did for step 6: change it using the "…" button to "Argument reference", and then select the second argument in the dropdown.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
Your composition is now complete!
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
You can expand and collapse the details using the chevron buttons to see how it looks. If you already have Tests as recommended in the [[#Practice Test-Driven Development|TDD]] section above, click on the circular arrow in the Tests panel and see if your implementation passes the tests. Once your composition passes the tests, go ahead and publish it.
</div>
[[File:Composition implementation expanded.png|frame|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">A Wikifunctions composition implementation in its expanded view</span>|<span lang="en" dir="ltr" class="mw-content-ltr">A Wikifunctions composition implementation in its expanded view</span>]]
[[File:Composition implementation collapsed.png|frame|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">A Wikifunctions composition implementation in its collapsed view</span>|<span lang="en" dir="ltr" class="mw-content-ltr">A Wikifunctions composition implementation in its collapsed view</span>]]
<div lang="en" dir="ltr" class="mw-content-ltr">
== Wikifunctions error handling ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
As a Wikifunctions function creator, you might want to warn the user calling your function when something goes wrong in the code, or when their inputs do not fit a certain criteria. For example, if your Function expects a string input to contain a name, you might want to check that the name is not empty and, if it is, show an error message that the person using your Function can understand.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For this purpose, you can use <code>Wikifunctions.Error()</code> from your code implementations or the function {{Z|Z851}} from your compositions.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
In this section you will learn:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">How to throw errors from both code and composition implementations,</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">how to write tests for error cases, and</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">how to catch and handle errors thrown by functions that you are using in your compositions.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Throwing errors from code implementations ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
When writing code, both from JavaScript and Python, you can use <code>Wikifunctions.Error()</code> to end the execution with a wanted error.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
<code>Wikifunctions.Error()</code> has two parameters:
</div>
# <span lang="en" dir="ltr" class="mw-content-ltr">Error type: a string containing the ZID of the error type you want to return.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Error arguments: a list of string arguments to build the error.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
Let's go one by one:
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Error type ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
An error type is an object that describes a kind of error that could happen in the system. There are a number of built-in error types but you can also build other error types that are more suited to your use case. When using errors, the best idea is to browse through the available error types, which can be explored in [[Special:ListObjectsByType/Z50|this list]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If there are no errors that fit your case, create a new one by going to the create page, and selecting "Error type" in the type selector. Then, set the necessary fields:
</div>
[[File:Error type.png|thumb|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Error type creation in Wikifunctions</span>|<span lang="en" dir="ltr" class="mw-content-ltr">To create new Error type (Z50), edit the label and add the necessary keys.</span>]]
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Label''' – This is the main title of the error, which should contain a short but descriptive message. Set the error label on the right-side box titled "About".</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Keys''' – Keys contain additional information about what caused the error. For example, if an input had the wrong format, you might want to inform the user of what was the input content when raising the error. To use them in your implementations, keys should be strings. To create a key, click on the "[+]" icon below "keys", select "String" under "value type", and add a label that describes it appropriately, for example "current input". Once you have all the necessary keys, you can Publish your error type and keep the ID of the newly created object.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Error arguments ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Error arguments correspond to the keys of the Error type, and they should provide additional information to understand the error. Error arguments should always be Strings.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Using Wikifunctions.Error() ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Say that you want an error to be thrown when either your first or your second input are empty. You have already created the error type, and the assigned ZID was <code>Z30005</code>. Your error type has two string keys:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">Input key: contains the key of the failing input</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Input value: contains the current value of the failing input</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
To raise an error in your JavaScript implementation you should do something like this:
</div>
<syntaxhighlight lang="javascript">
function Z30000( Z30000K1, Z30000K2 ) {
if ( trim( Z30000K1 ) === '' ) {
// If the first input is empty, raise error Z30005
// with two string args: [ first input key, first input value ]
Wikifunctions.Error( 'Z30005', [ "Z30000K1", Z30000K1 ] )
}
if ( trim( Z30000K2 ) === '' ) {
// If the second input is empty, raise error Z30005
// with two string args: [ second input key, second input value ]
Wikifunctions.Error( 'Z30005', [ "Z30000K2", Z30000K2 ] )
}
return Z30000K1 + " " + Z30000K2;
}
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
To raise an error in your Python implementation you should do something like this:
</div>
<syntaxhighlight lang="python3">
def Z30000(Z30000K1, Z30000K2):
if Z30000K1.strip() == "":
# If the first input is empty, raise error Z30005
# with two string args: [ first input key, first input value ]
Wikifunctions.Error("Z30005", ["Z30000K1", Z30000K1])
if Z30000K2.strip() == "":
# If the second input is empty, raise error Z30005
# with two string args: [ first input key, first input value ]
Wikifunctions.Error("Z30005", ["Z30000K2", Z30000K2])
return Z30000K1 + " " + Z30000K2
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
Remember that calling <code>Wikifunctions.Error()</code> ends the execution!
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Throwing errors from compositions ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If you are creating a composition implementation, you can throw an error by calling the special function {{Z|Z851}}.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Throw Error function (Z851) ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The {{Z|Z851}} function is similar to the <code>Wikifunctions.Error()</code> method and takes two arguments:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Error type''' – A reference to the Error type you want to raise</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Error parameters''' – A list with the arguments to create your Error, which should also be Strings.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Using Throw Error ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Say you want to modify your composition so that it first checks that the arguments are not empty, and raises an error when it finds an empty one. Then, if none of them are empty, it runs the original composition, which is:
</div>
<syntaxhighlight lang="prolog">
join_with_separator( Z30000K1, Z30000K2, " " )
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
To do this, you need to create conditional paths, for which you can use the {{Z|Z802}} function. Think of it like this:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">If the first argument is empty, throw an error for the first argument</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Else, proceed to check the second argument</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">If the second argument is empty, throw an error for the second argument</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Else, proceed with the success path and return the joint strings with the space separator</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
Or in functional pseudo code:
</div>
<syntaxhighlight lang="prolog">
if (
is_empty_string( Z30000K1 ),
throw_error( Z30005, [ "Z30000K1", Z30000K1 ] ),
if(
is_empty_string( Z30000K2 ),
throw_error( Z30005, [ "Z30000K2", Z30000K2 ] ),
join_with_separator( Z30000K1, Z30000K2, " " )
)
)
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
Let's create this step by step:
</div>
# <span lang="en" dir="ltr" class="mw-content-ltr">Start adding an implementation by clicking on the "+” button in the "Implementations" table from your Function page.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Make sure that the option "composition" under "Implementation" is selected.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Click on the "›” icon or click the "Select Function" link to expand the function details.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Under "function" search and select the outermost function you want to use, which in this case is "if".</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Check the validity of the first argument:</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "condition", click on the "…" button and select "function call"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function", search and select the function "is empty string"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "input", click on the "…" button and select "argument reference"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "key id", select the first input (e.g. "first string")</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">You can now collapse the "condition" function call if you want, by clicking on the down-chevron next to "condition". You should see something like "f(x) is empty string( → first string )"</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Throw error if the condition is true:</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "then", click on the "…" button and select "function call"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function", search and select the function "Throw Error"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "error type", search and select your error type (you can directly input the error ID if you know it, e.g. Z30005)</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "error parameters", add two items by clicking on the "+" button</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">For "Item 1" (offending argument key), set its type to "String" and write the argument identifier (e.g. "first input", or "Z30000K1")</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">For "Item 2" (offending argument value), click on the "…" next to "Item 2" and select "argument reference"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "key id", select the first input (e.g. "first string")</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">You can now collapse the "then" function call if you want, by clicking on the down-chevron next to "then". You should see something like "f(x) Throw Error( Input was the wrong format, Typed list( Object, "first input", → first string ) )"</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Continue to check the second argument if the first was good:</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "else", click on the "…" button and select "function call"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function", search and select the function "if"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Set up "condition" to check the validity of the second argument by following the same process as described in step 5.</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Set up "then" to throw an error for the second argument by following the same process as described in step 6.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Finally, set up the success path:</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to the nested "else", click on the "…" button and select "function call"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function", search and select the successful function, which in this case can be "join strings with separator"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "first string", click on the "…" button and set it to "argument reference", then select "first string"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "second string", click on the "…" button and set it to "argument reference", then select "second string"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "separator" add a space into the text field</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
The resulting function call should look like this:
</div>
[[File:Throw error expanded.png|frame|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Wikifunctions composition using Throw Error function</span>|<span lang="en" dir="ltr" class="mw-content-ltr">Wikifunctions composition using Throw Error function</span>]]
[[File:Throw error collapsed.png|frame|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Wikifunctions composition using Throw Error function, in its collapsed view</span>|<span lang="en" dir="ltr" class="mw-content-ltr">Wikifunctions composition using Throw Error function, in its collapsed view</span>]]
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Handling errors in compositions ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
While it is useful to allow functions to raise expected errors, it is crucial to be able to handle errors in your compositions in order to safely use these functions.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Say you want to create a new function "full name of a person" – we will refer to it with the ZID <code>Z30010</code>. This function should return the full name of a person given a first and last names, but if any of the two fields are empty, it should return the text "Unknown" instead.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
You could create a composition using our example function "Join two strings with a space" or <code>Z30000</code> to generate the name. If any of the inputs are empty, you know that <code>Z30000</code> will throw an error of type <code>Z30005</code>. Using the function {{Z|Z850}} as a wrapper, you can attempt the join operation and intercept a possible error to simply return "Unknown" whenever it occurs.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Try-Catch function (Z850) ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The {{Z|Z850}} function is built-in with ZID <code>Z850</code> and takes three arguments:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Function call''' – The initial function call to run. If nothing goes wrong, the response will be the result of this function call.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Error type''' – An error type to catch in case it is thrown during the execution of the first function call.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Error handler''' – A function call that will be run in case the error specified above is caught during the execution of the initial function call. If that happens, the result of the error handler will be the value returned.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Using Try-Catch ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Once we have all the functions for our composition, we can craft it like this:
</div>
<syntaxhighlight lang="prolog">
try_catch(
join_with_space( Z30010K1, Z30010K2 ),
Z30005,
echo( "Unknown" )
)
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
This means that:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">The "Join two strings with a space" function will be tried with the two inputs and, if everything goes well, the output of this function will be returned</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">If any of the inputs are blank, "Join two strings with a space" with raise an error of type <code>Z30005</code></span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Our {{Z|Z850}} will then detect this error and run the {{Z|Z801}} function to return "Unknown"</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
Let's create this step by step:
</div>
# <span lang="en" dir="ltr" class="mw-content-ltr">Start adding an implementation by clicking on the "+" button in the "Implementations" table from your Function page.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Make sure that the option "composition" under "Implementation" is selected.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Click on the "›” icon or click the "Select Function" link to expand the function details.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Under "function" search and select the outermost function you want to use, which in this case is "Try-Catch".</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Set the main function call:</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under the field where the "Try-Catch" function is selected, next to the "function call" key, click on the "…" button and select "function call"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function" search and select the function "join two strings with space"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "first string", click on the "…" button and select "argument reference", then select the "first name" argument from the dropdown.</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "second string", click on the "…" button and select "argument reference", then select the "second name" argument from the dropdown.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Select the error to catch:</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "error type", search and select "bad string input" – you can search directly by its ZID <code>Z30005</code></span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Set the error handler function call:</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "error handler", click on the "…" button and select "function call"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function", search and select the function "echo"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "input" and "type", search and select the type "String"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Now, under "input", type "Unknown" in the text field</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
The resulting function should look like this:
</div>
[[File:Try catch expanded.png|frame|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Wikifunctions composition using Try-catch function, in expanded mode</span>|<span lang="en" dir="ltr" class="mw-content-ltr">Wikifunctions composition using Try-catch function, in expanded mode</span>]]
[[File:Try catch collapsed.png|frame|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Wikifunctions composition using Try-catch function, in collapsed mode</span>|<span lang="en" dir="ltr" class="mw-content-ltr">Wikifunctions composition using Try-catch function, in collapsed mode</span>]]
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Testing your failure use cases ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
As we introduced in the above section about [[#Practice Test-Driven Development|practicing TDD]], it's important to test not only the most common paths, but also the possible edge cases. It is equally important to test failure behavior. In this section we will give you the tools necessary to test that your function fails with a given set of inputs, and that the error thrown is the expected one.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
To do that, you will need other two system functions:
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Is error type (Z852) ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The {{Z|Z852}} function is built-in with ZID <code>Z852</code> and takes two arguments:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Error''' – An {{Z|Z5}} object, which can be thrown by a failing call. An error instance has a type and a value.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Error type''' – A reference to an {{Z|Z50}} which will be compared to the type of the Error passed as a first argument. If that's the case, the function will return true.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Get error thrown by function call (Z853) ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The {{Z|Z853}} function is built-in with ZID <code>Z853</code> and takes one argument:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Function call''' – A function call which can either return a successful value of any type, or throw an error.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
This function returns a {{Z|Z882}} with a {{Z|Z40}} in first place and an {{Z|Z1}} in the second:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">If the Function call runs successfully and hence does not throw any error, the returned pair will contain False in the first place, and void in the second.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">If the Function call throws an error, the returned pair will contain True in the first place, and the caught error in the second.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
To use this function in your compositions, you might need to use the additional functions:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z821}}, and</span>
* {{Z|Z822}}
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Testing errors ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Say our target function, "Join two strings with a space" or <code>Z30000</code>, throws an error of type <code>Z30005</code> and we want to test this behavior. To do that we need to:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">Throw a failing function call</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Get the error using the function {{Z|Z853}}</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Check that the error is the right type with {{Z|Z852}}</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
Tests have two fields:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Call''' – A function call that will produce an output with the inputs you want to test. This call will return a value.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Result validation''' – A function call that will validate that the value returned by the call above is the expected one. The first argument of this function call will be automatically assigned to take the return value of the first call.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
For step-by-step instructions on how to create tests, see {{ll|Wikifunctions:Introduction#Create_tests}}.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
In our example, we can structure it like this — but this is not the only way!
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The call, which will return an {{Z|Z5}} object:
</div>
<syntaxhighlight lang="prolog">
error = get_second_element_of_typed_list(
get_error_thrown_by(
join_strings_by_whitespace( "", "not empty" )
)
)
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
And the result validation, which will take the {{Z|Z5}} object as its first argument:
</div>
<syntaxhighlight lang="prolog">
is_error_type( error, Z30005 )
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
Let's do this step by step:
</div>
# <span lang="en" dir="ltr" class="mw-content-ltr">Start adding a test by clicking on the "+" button in the "Tests" table from your Function page. The "call" and "result validation" fields already have some functions pre-set, but to test the errors we will need to change them.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">First, let's set the call:</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "call", click the "›" chevron button to expand the function call.</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function", edit the field and search and select the function "Get second element of a typed pair"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Once selected, next to "Typed pair", click on the "…" button and select "function call"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function", search and select the function "Get error thrown by function call"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "function call", click on the "…" button and select "function call"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function", search and select the function "Join two strings with a space" (or by ZID <code>Z30000</code>)</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Now set the inputs so that they cause a failure: at least one of them should be empty.</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">You can now collapse your "call" by clicking again on the down-chevron button if you want!</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Next, let's set the result validation:</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "result validation", click the "›" chevron button to expand the function call.</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function", edit the field and search and select the function "Is error type"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Now you will only be asked to configure the second argument. Under "error type", search and select your <code>Z30005</code> error type.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">And you are done! You can now click the circular arrow in the "Implementations" box and you should see green checks.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
If everything went right, you can now save your test. It should look like this:
</div>
[[File:Get error expanded.png|frame|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Testing a failure using Get error and Is error type functions, in expanded mode</span>|<span lang="en" dir="ltr" class="mw-content-ltr">Testing a failure using Get error and Is error type functions, in expanded mode</span>]]
[[File:Get error collapsed.png|frame|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Testing a failure using Get error and Is error type functions, in collapsed mode</span>|<span lang="en" dir="ltr" class="mw-content-ltr">Testing a failure using Get error and Is error type functions, in collapsed mode</span>]]
<div lang="en" dir="ltr" class="mw-content-ltr">
== Debugging your implementations ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Sometimes things can go wrong. A function might behave differently than expected or a value might not look quite right. Sometimes implementations are really complex and, because they are run in a sandboxed environment, it can seem really difficult to debug. To help understand what's going on inside a function call, Wikifunctions includes a small set of debugging tools.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
These tools don't change the result of a function, but will add extra information to the returned metadata, which you can observe after running the function. You can use <code>Wikifunctions.Debug()</code> from your code implementations or the function {{Z|Z854}} from your compositions.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
In this section you will learn:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">How to add debug messages from both code and composition implementations,</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">how to inspect the metadata manually or via the UI to inspect these logs.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Debugging your code implementations ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
When writing code, both from JavaScript and Python3, you can use <code>Wikifunctions.Debug()</code> to add a message to your debugging log and continue the execution.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
<code>Wikifunctions.Debug()</code> has one parameter, which is generally expected to be a string. However, any other object passed as parameter will get directly converted into a string.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If we want to add debug logs to our code implementations for our "Join two strings with a space" example function, we can do, in JavaScript:
</div>
<syntaxhighlight lang="JavaScript">
function Z30000( Z30000K1, Z30000K2 ) {
if ( trim( Z30000K1 ) === '' ) {
Wikifunctions.Debug( `first input is empty "${ Z30000K1 }"` );
Wikifunctions.Error( 'Z30005', [ "Z30000K1", Z30000K1 ] )
}
if ( trim( Z30000K2 ) === '' ) {
Wikifunctions.Debug( `second input is empty "${ Z30000K2 }"` );
Wikifunctions.Error( 'Z30005', [ "Z30000K2", Z30000K2 ] )
}
Wikifunctions.Debug( "both inputs are fine" );
return Z30000K1 + " " + Z30000K2;
}
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
And the same in your Python3 implementation will be:
</div>
<syntaxhighlight lang="python3">
def Z30000(Z30000K1, Z30000K2):
if Z30000K1.strip() == "":
Wikifunctions.Debug( 'first input is empty "'+Z30000K1+'"' )
Wikifunctions.Error("Z30005", ["Z30000K1", Z30000K1])
if Z30000K2.strip() == "":
Wikifunctions.Debug( 'second input is empty "'+Z30000K2+'"' )
Wikifunctions.Error("Z30005", ["Z30000K2", Z30000K2])
Wikifunctions.Debug( 'both inputs are fine' )
return Z30000K1 + " " + Z30000K2
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
This way, no matter what happens, we will be adding one message to your debugging logs:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">If the function call fails when checking on the first or second input, the result of the execution will be a failure, but it will contain one informative log about what branch caused the failure.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">If the function call succeeds—because both inputs are valid—the function call will return the joined string, but the returned metadata will also contain a debug log.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Debugging your compositions ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
To support debugging compositions, Wikifunctions provides the built-in function {{Z|Z854}}. This function allows you to attach debug messages to the execution of any function call that generates the final output. The debug logs collected during the evaluation are returned as part of the execution metadata, under the <code>executorDebugLogs</code> key.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Add debug log to function call (Z854) ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The {{Z|Z854}} function is built-in with ZID <code>Z854</code> and takes two arguments:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Function call''' – Any composition you want to execute.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Debug log''' – A string message that will be recorded if the given function call is evaluated.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
When the wrapped function call runs, the provided message is added to the execution logs. If that function call is not executed, or its execution is not part of the final output, its debug log will not appear in the final result metadata.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
You will benefit from this built-in if you want to observe:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">Which branch of a conditional was executed, or</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">the order of evaluation in a composition.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Using Add debug log to function call ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Say that you want to add debug logs to our example function "Join two strings with a space" or <code>Z30000</code>, so that different messages are added to the different possible outcomes. You could use our debugging builtin like this:
</div>
<syntaxhighlight lang="prolog">
if (
is_empty_string( Z30000K1 ),
add_debug_log( throw_error( Z30005, ... ), 'failed on first input' )
if(
is_empty_string( Z30000K2 ),
add_debug_log( throw_error( Z30005, ... ), 'failed on second input' ),
add_debug_log(
join_with_separator( Z30000K1, Z30000K2, " " ),
'both inputs are ok!'
)
)
)
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
This way,
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">when called with an empty first input, the function will return a failed response, and the metadata will contain an <code>executorDebugLogs</code> entry with the "failed on first input" log.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">When called with an empty second input, the call will also fail, but the logged message will be "failed on second input"</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">When called with valid inputs, the function will return a successful response, and additionally the metadata will contain "both inputs are ok" in its <code>executorDebugLogs</code> key.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
This is the way this composition would look:
</div>
[[File:Add debug log expanded.png|frame|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Composition implementation using Add debug logs to log all possible execution paths</span>|<span lang="en" dir="ltr" class="mw-content-ltr">Composition implementation using Add debug logs to log all possible execution paths</span>]]
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Accessing execution debug logs ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Whether your execution logs are added via <code>Wikifunctions.Debug()</code> or via the {{Z|Z854}} built-in function, they are returned as part of the response metadata. To see the logs, once you run your function, click on the "Details" button that appears at the bottom of the "Result" section.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The error and debug information will appear at the top of the "Details" dialog.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
This is what you would see when running the composition from our previous example with valid and invalid inputs:
</div>
{| class="wikitable"
| [[File:Execution logs success.png|frameless|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Function metadata dialog for a successful execution with debug logs</span>]]
| [[File:Execution logs failure.png|frameless|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Function metadata dialog for a failed execution with debug logs</span>]]
|-
| <span lang="en" dir="ltr" class="mw-content-ltr">Function metadata dialog for a successful execution: shows no errors, but displays the successful execution log: ''"both inputs are ok!"''</span>
| <span lang="en" dir="ltr" class="mw-content-ltr">Function metadata dialog for a failed execution: shows the error information, and the additional execution log for the first failure branch: ''"failed on first input"''</span>
|}
[[Category:How to create implementations| {{#translation:}}]]
tp470jhzaiydxrninh9h31l1t3zd6xu
Wikifunctions:FAQ/fr
4
13207
296915
240203
2026-08-06T18:01:57Z
FuzzyBot
207
Updating to match new version of source page
296915
wikitext
text/x-wiki
<languages/>
{{shortcut|[[WF:FAQ]]}}
Ceci est une page dédiée à la Foire Aux Questions sur les Wikifunctions. N'hésitez pas à poser votre propre question sur la [[Wikifunctions talk:FAQ|page de discussion]], si votre question n'est pas listée ici !
Veuillez également consulter notre [[:m:Special:MyLanguage/Abstract Wikipedia/FAQ|FAQ sur Meta]] pour des questions plus générales sur Wikifunctions et (ou) sur la Wikipédia abstraite.
__TOC__
== Introduction ==
<span id="What_is_this_project_about?"></span>
=== Sur quoi porte ce projet ? ===
Wikifunctions est un nouveau projet Wikimedia qui fournit un catalogue de toutes sortes de fonctions que chacun peut appeler, écrire, maintenir, et utiliser. Il fournit aussi la technologie de base qui permettrait éventuellement la traduction des articles indépendants de la langue d' [[meta:Abstract Wikipedia/fr|Abstract Wikipedia]] vers la langue de n'importe quel projet Wikipédia. Ceci permettra à tous de contribuer et lire des articles dans leur langue préférée.
<span id="What_is_a_function?"></span>
=== Qu’est-ce qu’une fonction ? ===
Les fonctions sont une forme de connaissance qui peut répondre à des questions, telles que le nombre de jours qui se sont écoulés entre deux dates ou la distance entre deux villes. Des fonctions plus complexes peuvent répondre à des questions plus complexes, comme le volume d'une forme tridimensionnelle, la distance entre Mars et Vénus à une certaine date, ou si deux espèces étaient vivantes en même temps.
Nous utilisons déjà des fonctions dans de nombreux types de requêtes sur la connaissance, comme poser une question à un moteur de recherche. Les modèles, tels que [[:w:en:Template:Convert|Template:Convert]] et [[:w:en:Template:Age|Template:Age]] sur la Wikipédia anglaise, sont également des exemples de fonctions déjà utilisées dans de nombreuses Wikipédias, écrites en wikicode et en Lua et recopiées manuellement sur chaque wiki où elles sont nécessaires.
<span id="What_is_an_implementation?"></span>
=== Qu'est-ce qu'une implémentation ? ===
Une implémentation est une façon particulière d'exécuter une fonction. Une implémentation est une recette qui énumère les étapes nécessaires pour exécuter la fonction. Il peut s'agir d'un morceau de code dans un langage de programmation ou d'une combinaison d'appels à d'autres fonctions. Une fonction peut avoir de nombreuses implémentations, qui doivent toutes être équivalentes.
<span id="What_is_a_test?"></span>
=== Qu'est-ce qu'un test ? ===
Un test est un moyen de déterminer si une fonction donnée fait ce qu'il faut. Une fonction aura généralement plusieurs testeurs, chacun spécifiant une certaine entrée de la fonction et les conditions que la sortie doit satisfaire pour une entrée donnée.
Par exemple, les testeurs pour une fonction "title case" peuvent inclure : "<span dir="ltr" lang="en">abc</span>" devrait devenir "<span dir="ltr" lang="en">Abc</span>" ; "<span dir="ltr" lang="en">war and peace</span>" devrait devenir "<span dir="ltr" lang="en">War and Peace</span>" ; "<span dir="ltr" lang="ru">война и мир</span>" devrait devenir "<span dir="ltr" lang="ru">Война и мир</span>" ; et "<span dir="ltr" lang="en">123</span>" devrait rester "<span dir="ltr" lang="en">123</span>".
<span id="Which_features_are_available_now,_which_will_be_soon_available,_and_which_are_further_away?"></span>
=== Quelles sont les fonctionnalités disponibles aujourd'hui, celles qui le seront bientôt et celles qui le seront plus tard ? ===
* Lors du lancement :
** Les fonction utilisables concernent les chaînes et les booléens.
** Wikifunctions sera entièrement internationalisé dès le départ. Il peut être utilisé dans n'importe quelle langue.
* [[Wikifunctions:Status|Développement en cours]] :
** Les types génériques et les fonctions génériques ne sont pas entièrement pris en charge.
** L'ajout de types sera, pour l'instant, limité à l'équipe de développement. À l'avenir, la communauté pourra ajouter elle-même de nouveaux types. Il y a beaucoup de travail à faire dans l'avenir pour que les types se comportent de manière beaucoup plus fluide.
*** Un type particulièrement intéressant sera les données binaires, et en particulier les fichiers.
** Nous prenons actuellement en charge deux langages de programmation pour les implémentations : JavaScript et Python. À l'avenir, nous voulons en supporter beaucoup d'autres.
** Il n'est actuellement ''pas'' possible d'appeler d'autres fonctions à partir d'implémentations écrites dans un autre langage de programmation. En ce moment, ceci est seulement possible avec les compositions.
* A l'avenir :
** Il sera possible d'appeler les fonctions de Wikifunctions à partir d'autres projets Wikimedia et d'intégrer leurs résultats dans la sortie de la page.
** Il sera possible d'utiliser les données de Wikidata dans les fonctions.
** Il sera possible d'appeler des ensembles de données à partir de l'espace de noms Data de Commons.
<span id="How_is_Wikifunctions_multilingual?"></span>
=== Comment Wikifunctions est-il multilingue ? ===
{{main|Special:MyLanguage/Help:Multilingual}}
Wikifonctions et la Wikipédia abstraite sont multilingues à le manières et n’ont pas d’impact l’une sur l’autre :
* '''Wikifonctions est multilingue en termes de contenu et d’interface utilisateur'''. Les utilisateurs peuvent lire et appeler des fonctions sur Wikifonctions dans n’importe quelle langue naturelle. Voici la fonction « combinaison de chaînes » en [https://www.wikifunctions.org/view/en/Z10000 anglais], [https://www.wikifunctions.org/view/pl/Z10000 polonais], et [https://www.wikifunctions.org/view/he/Z10000 hébreu] ; elle est disponible dans de nombreuses autres langues.
* '''Les contributeurs peuvent éditer et améliorer les Wikifonctions dans leur langue.''' Même les implémentations peuvent être éditées dans la langue naturelle du contributeur. Par exemple, la composition de la fonction « et » peut être éditée en [https://www.wikifunctions.org/wiki/Z11223?action=edit&uselang=de allemand], en [https://www.wikifunctions.org/wiki/Z11223?action=edit&uselang=en anglais], ou dans n’importe quelle autre langue parmi les 300 proposées.
* '''Les fonctions de Wikifunctions peuvent être utilisées pour créer des résultats dans n’importe quelle langue naturelle'''. La communauté crée un nombre grandissant de fonctions permettant de générer des textes dans de nombreuses langues naturelles. Nous avons des fonctions pour le [[Wikifunctions:Catalogue#Breton|breton]], [[Wikifunctions:Catalogue#Rohingya|rohingya]], [[Wikifunctions:Catalogue#English|anglais]], et bien d’autres langues.
* ''''Les fonctions de Wikifunctions peuvent être implémentées dans différents langages de programmation.''' Par exemple, la fonction [[Z10000|combinaison de chaînes]] est implémentée à la fois en [[Z10005|JavaScript]] et en [[Z10004|Python]].
<span id="Which_programming_languages_does_Wikifunctions_currently_support?_Which_programming_languages_will_be_supported_in_the_future?"></span>
=== Quels langages de programmation sont actuellement dans Wikifunctions ? Quels langages de programmation seront pris en charge à l'avenir ? ===
{{main|WF:programming languages}}
Actuellement, Wikifunctions accepte les implémentations écrites en JavaScript et en Python. Nous prévoyons d’ajouter d’autres langages de programmation à l’avenir. Nous espérons ajouter au moins un autre langage de programmation en 2025 (mais nous n’avons pas encore décidé lequel).
<span id="How_will_Wikifunctions_be_integrated_into_other_projects?"></span>
=== Comment Wikifunctions sera-t-il intégré dans les autres projets ? ===
Wikifunctions est la première étape de la construction d'Abstract Wikipedia. À court terme, nous nous attacherons à soutenir la communauté et à apporter des améliorations sur la base des commentaires reçus. Parallèlement, nous entamerons le processus d'intégration avec Wikipédia et Wikidata, ce qui permettra d'élargir les applications réelles et de nous rapprocher de la vision d'Abstract Wikipedia.
Les contributeurs pourront appeler les fonctions hébergées sur le site Wikifunctions à partir de leurs wikis. Le résultat de l'appel de la fonction sera affiché aux lecteurs du wiki. Cela peut être utilisé, par exemple, pour calculer l'âge d'une personne, la densité de population basée sur les données de population et de superficie de Wikidata, ou pour dessiner un graphique et l'intégrer dans un article donné.
Une autre option pour intégrer Wikifunctions consistera à intégrer une interface interactive d'appel de fonctions dans leur wiki. Cette interface pourrait être utilisée, par exemple, dans un article de Wikipédia pour calculer dynamiquement le résultat d'une équation physique en fonction des paramètres fournis par le lecteur, dessiner et interagir avec des fonctions mathématiques, etc.
<span id="What_Wikifunctions_is_not"></span>
=== Ce que Wikifonctions n’est pas ===
Veuillez consulter [[Special:MyLanguage/Wikifunctions:What Wikifunctions is not|Ce que WikiFunctions n'est pas]] pour plus d'informations à ce sujet.
<span id="What_license_will_the_functions_and_derived_content_be_under?"></span>
=== Sous quelle licence seront les fonctions et le contenu dérivé ? ===
Conformément à la discussion qui s'est déroulée [[:m:Special:MyLanguage/Abstract Wikipedia/Licensing discussion|sur Meta entre novembre et décembre 2021]], toutes les contributions à Wikifunctions et aux projets plus larges de la Wikipédia abstraite seront publiées sous licence libre. En particulier :
* Le [[Special:MyLanguage/Wikifunctions:Glossary#Content|contenu textuel]] de Wikifunctions sera publié sous [[w:Creative Commons license|CC BY-SA 4.0]].
* Les [[Special:MyLanguage/Wikifunctions:Glossary#Function|signatures de fonctions]] et autres contenus structurés sur Wikifunctions seront publiés sous la licence [[w:CC0|CC 0]].
* Les [[Special:MyLanguage/Wikifunctions:Glossary#Implementation|implémentations de code]] dans Wikifunctions seront publiées sous la [[w:Apache License|Licence Apache 2]].
* Le [[Special:MyLanguage/Wikifunctions:Glossary#Content|contenu abstrait]] pour Abstract Wikipedia sera publié sous CC BY-SA 4.0.
Certains points devront encore être abordés à l'avenir, comme la licence du contenu généré à partir du contenu abstrait. Nous prévoyons de rédiger un document plus complet avec le département juridique sur la façon dont les gens peuvent réutiliser le code des Wikifunctions aussi facilement que possible, tout en adhérant à la licence.
<span id="Contributing"></span>
== Contribuer ==
<span id="I'm_new_here._What_is_there_for_me_to_do_and_how_can_I_help?"></span>
=== Je suis nouveau ici. Que dois-je faire et comment puis-je aider ? ===
Bienvenue ! Nous sommes très heureux de vous accueillir ici ! Il existe de nombreuses possibilités de contribuer à Wikifunctions, qu'il s'agisse de créer de nouvelles fonctions ou d'améliorer et de traduire la documentation. Si vous cherchez des moyens de vous impliquer, nous vous recommandons, selon votre niveau d'aisance, de suggérer une nouvelle fonction sur un sujet qui vous intéresse. Ou même de créer une telle fonction. Proposez des tests. Essayez-vous à une implémentation. Aidez à la traduction. Lisez et améliorez notre documentation. Aidez à organiser la communauté.
<span id="How_do_I_create_a_new_function,_implementation,_or_test?"></span>
=== Comment créer une nouvelle fonction, une nouvelle implémentation ou un nouveau test ? ===
Pour savoir comment créer une nouvelle fonction, une implémentation ou un test, voir [[Special:MyLanguage/Wikifunctions:Introduction|Wikifunctions:Introduction]].
Pour savoir plus en détail comment créer une implémentation, voir [[Special:MyLanguage/Wikifunctions:How to create implementations|Wikifunctions:Comment créer des implémentations]].
<span id="What_should_I_edit_first?"></span>
=== Que devrais-je éditer en premier ? ===
Si vous pouvez écrire plusieurs langages, recherchez les fonctions qui n'ont pas encore d'étiquettes et de descriptions dans vos langages sur la page [[Special:ListMissingLabels]], et aidez à les ajouter.
Si vous êtes intéressé par un domaine qui pourrait proposer des fonctions dans Wikifunctions, mais que ce n'est pas encore le cas, ou si vous avez d'autres idées de fonctions, rendez-vous sur la page [[Wikifunctions:Suggest a new function|suggérant de nouvelles fonctions]] et présentez vos idées.
Si vous êtes un développeur en JavaScript ou en Python, vous voudrez peut-être rechercher des fonctions qui n'ont pas encore d'implémentation en JavaScript ou en Python, et essayer de les écrire.
<span id="Where_can_I_go_for_help?"></span>
=== Où puis-je trouver de l'aide ? ===
Votre premier arrêt devrait être le [[Special:MyLanguage/Help:Contents|Portail d'aide]], où vous trouverez toute la documentation relative à l'utilisation et à l'édition des Wikifunctions. Si vous êtes toujours bloqué, postez un message sur le [[Wikifunctions:Project chat|Chat du projet]] et quelqu'un répondra à votre question.
<span id="How_do_we_sort_or_categorize_functions?"></span>
=== Comment trier ou catégoriser les fonctions ? ===
{{Tracked|T285424}}
Pour l'instant, la meilleure façon de trier ou de catégoriser les fonctions est de le faire à la main à travers les [[Special:MyLanguage/Wikifunctions:Catalogue|pages de l'espace de noms Wikifunctions]]. Une autre option serait de passer par la page de discussion de la fonction en question. Nous surveillerons ces efforts et discuterons avec la communauté des changements à apporter au système pour faciliter cette tâche.
<div lang="en" dir="ltr" class="mw-content-ltr">
=== How can I setup the software locally to hack on it? ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
See [[Special:MyLanguage/Wikifunctions:Hacking on the evaluator and orchestrator|Hacking on the evaluator and orchestrator]].
</div>
[[Category:FAQ| {{#translation:}}]]
h296lbhcj3ubfid896nffqwb20lwwqn
Template:Documentation subpage/en
10
13480
297005
99261
2026-08-06T18:04:29Z
FuzzyBot
207
Updating to match new version of source page
297005
wikitext
text/x-wiki
<noinclude><languages/></noinclude><includeonly>{{#if:{{IsDocSubpage|override={{{override|doc}}}}}
| <!--doc subpage--></includeonly>{{#ifeq:{{{doc-notice|show}}}|show
| {{Ombox|type=notice|image=[[File:OOjs UI icon articles-ltr.svg|35px|link=|class=skin-invert-image]]
|text='''This is a [[Special:MyLanguage/Help:Template documentation|documentation]] [[mw:Special:MyLanguage/Help:Subpages|subpage]] for {{#if:{{{1|}}}
| {{{1}}}
| [[:{{SUBJECTSPACE}}:{{BASEPAGENAME}}]]
}}.'''<br/> It contains usage information, [[Special:MyLanguage/Help:Categorization|categories]], and other content that is not part of the original<!--
--> {{#if: {{{text2|}}}
| {{{text2|}}}
| {{#if: {{{text1|}}}
| {{{text1|}}}
| {{#ifeq: {{SUBJECTSPACE}} | {{ns:User}}
| {{lc:{{SUBJECTSPACE}}}} template page
| {{#if: {{SUBJECTSPACE}}
| {{lc:{{SUBJECTSPACE}}}} page
| article
}}
}}
}}
}}.
}}
<!--If not on a doc subpage, do nothing-->}}{{DEFAULTSORT:{{{defaultsort|{{PAGENAME}}}}}}}{{#if: {{{inhibit|}}}
| <!--Skip-->
| <includeonly>{{#ifexist: {{NAMESPACE}}:{{BASEPAGENAME}}
| [[Category:{{#switch: {{SUBJECTSPACE}}
|Template=Template
|Module=Module
|User=User
|#default=Template
}} documentation pages{{#translation:}}]]
| [[Category:Documentation subpages without corresponding pages{{#translation:}}]]
}}</includeonly>
}}<includeonly>
}}</includeonly><noinclude>{{Documentation}}[[Category:Template documentation]]<!--Add categories and interwikis to the /doc subpage, not here!--></noinclude>
qvw1wgobyfldbvvqy1vifvp2mp9bano
Wikifunctions:FAQ/gu
4
14592
296916
265379
2026-08-06T18:01:57Z
FuzzyBot
207
Updating to match new version of source page
296916
wikitext
text/x-wiki
<languages/>
{{shortcut|[[WF:FAQ]]}}
<div lang="en" dir="ltr" class="mw-content-ltr">
This is a dedicated page for the Frequently Asked Questions about Wikifunctions. Please, feel free to ask your own question on the [[Wikifunctions talk:FAQ|talk page]], if your question is not listed here!
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Also, please consider our [[:m:Special:MyLanguage/Abstract Wikipedia/FAQ|FAQ on Meta]] regarding more general questions about Wikifunctions and Abstract Wikipedia.
</div>
__TOC__
<span id="Introduction"></span>
== પરિચય ==
<div lang="en" dir="ltr" class="mw-content-ltr">
=== What is this project about? ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Wikifunctions is a new Wikimedia project that provides a catalog of all kinds of functions that anyone can call, write, maintain, and use. It also provides the underlying technology that will eventually enable the translation of language-independent articles from Abstract Wikipedia into the language of any Wikipedia. This will allow everyone to contribute and read articles in their preferred languages.
</div>
<span id="What_is_a_function?"></span>
=== વિધેય (ફંક્શન) શું છે? ===
<div lang="en" dir="ltr" class="mw-content-ltr">
Functions are a form of knowledge that can answer questions, such as how many days have passed between two dates or the distance between two cities. More complicated functions can answer more complicated questions, such as the volume of a three-dimensional shape, the distance between Mars and Venus on a certain date, or whether two species were alive at the same time.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
We already use functions in many types of knowledge inquiries, such as asking a question to a search engine. The templates, such as [[:w:en:Template:Convert|Template:Convert]] and [[:w:en:Template:Age|Template:Age]] on English Wikipedia, are also examples of functions that are already used in many Wikipedias, written in wikitext and Lua and manually copied to each wiki where they're wanted.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== What is an implementation? ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
An implementation is a particular way to execute a function. An implementation is a recipe that lists the steps that are needed to run the function. It may be a piece of code in a programming language or a combination of calls to other functions. A function may have many implementations, which should all be equivalent.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== What is a test? ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
A test is a way to determine if a given function is doing the right thing. A function will typically have multiple testers, each specifying some input to the function and the conditions the output for the given input must fulfill.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For example, testers for a “title case” function might include: “<span dir="ltr" lang="en">abc</span>” should become “<span dir="ltr" lang="en">Abc</span>”; “<span dir="ltr" lang="en">war and peace</span>” should become “<span dir="ltr" lang="en">War and Peace</span>”; “<span dir="ltr" lang="ru">война и мир</span>” should become “<span dir="ltr" lang="ru">Война и мир</span>”; and “<span dir="ltr" lang="en">123</span>” should remain “<span dir="ltr" lang="en">123</span>”.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Which features are available now, which will be soon available, and which are further away? ===
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">At launch:</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">We have the ability to have functions that work with Strings and Booleans.</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">Wikifunctions will be fully internationalized from the beginning. It can be used in any language.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Wikifunctions:Status|Ongoing development]]:</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">Generic types and generic functions are not fully supported.</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">Adding types will, for now, be something that is limited to the development team. In the future, the community will be able to add more types. There is a lot of work to be done in the future to make types behave much more smoothly.</span>
*** <span lang="en" dir="ltr" class="mw-content-ltr">One particularly interesting type will be binary data, and particularly files.</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">We currently support two programming languages for implementations: JavaScript and Python. In the future, we want to support many more.</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">Currently, it is ''not'' possible to call other functions from implementations written in any programming language. This is currently only possible through composition.</span>
* ભવિષ્યમાં:
** <span lang="en" dir="ltr" class="mw-content-ltr">It will be possible to call Wikifunctions functions from other Wikimedia projects and integrate their results into the output of the page.</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">It will be possible to use data from Wikidata in functions.</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">It will be possible to call data sets from Commons Data namespace.</span>
<span id="How_is_Wikifunctions_multilingual?"></span>
=== વિકિવિધેય બહુભાષી કઇ રીતે છે? ===
{{main|Special:MyLanguage/Help:Multilingual}}
<div lang="en" dir="ltr" class="mw-content-ltr">
Wikifunctions and Abstract Wikipedia are multilingual in a number of ways that do not impact each other:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Wikifunctions is multilingual in terms of its content and user interface.''' Users can read and call functions on Wikifunctions in any natural language. Here is the “join string” function in [https://www.wikifunctions.org/view/en/Z10000 English], [https://www.wikifunctions.org/view/pl/Z10000 Polish], and [https://www.wikifunctions.org/view/he/Z10000 Hebrew], and it is available in many more languages.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Contributors can edit and improve Wikifunctions using their language.''' Even implementations can be edited in the natural language of the contributor. For example, the composition of the “and” function can be edited in [https://www.wikifunctions.org/wiki/Z11223?action=edit&uselang=de German], [https://www.wikifunctions.org/wiki/Z11223?action=edit&uselang=en English], or any other of about 300 languages.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Wikifunctions functions can be used to create results for any natural language.''' The community is creating a growing number of functions to support the generation of text in many natural languages. We have functions for [[Wikifunctions:Catalogue#Breton|Breton]], [[Wikifunctions:Catalogue#Rohingya|Rohingya]], [[Wikifunctions:Catalogue#English|English]], and many other languages.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Functions in Wikifunctions can be implemented in various different programming languages.''' For example, the [[Z10000|join function]] is implemented in both [[Z10005|JavaScript]] and [[Z10004|Python]].</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Which programming languages does Wikifunctions currently support? Which programming languages will be supported in the future? ===
</div>
{{main|WF:programming languages}}
<div lang="en" dir="ltr" class="mw-content-ltr">
Currently, Wikifunctions supports implementations written in JavaScript and Python. We plan to add support for more programming languages in the future. We hope to add at least one further programming language in 2025 (but have not yet decided which one).
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== How will Wikifunctions be integrated into other projects? ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Wikifunctions is the first step towards building Abstract Wikipedia. Our near-term focus will be on supporting the community and making improvements based on feedback. Concurrently, we will begin the process of integrating it with Wikipedia and Wikidata, which will enable broader real-life applications and get us closer to the vision of Abstract Wikipedia.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Contributors will be able to call functions stored on the Wikifunctions site from within their wikis. The result of the function call will be displayed to readers of the wiki. This can be used, for example, to calculate the age of a person, the population density based on population and area data from Wikidata, or to draw a graph and integrate it into a given article.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Another option to integrate Wikifunctions will be to integrate an interactive function call interface within their wiki. This could be used, for example, in a Wikipedia article to dynamically calculate the result of a physical equation based on reader-provided parameters, draw and interact with mathematical functions, etc.
</div>
<span id="What_Wikifunctions_is_not"></span>
<div class="mw-translate-fuzzy">
=== વિકિવિધેય શું નથી? ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Please, see [[Special:MyLanguage/Wikifunctions:What Wikifunctions is not|Wikifunctions:What Wikifunctions is not]] for more information on that.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== What license will the functions and derived content be under? ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Per the discussion happened [[:m:Special:MyLanguage/Abstract Wikipedia/Licensing discussion|on Meta between November and December 2021]], all contributions to Wikifunctions and the wider Abstract Wikipedia projects will be published under free licenses. In particular:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Special:MyLanguage/Wikifunctions:Glossary#Content|Textual content]] on Wikifunctions will be published under [[w:Creative Commons license|CC BY-SA 4.0]].</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Special:MyLanguage/Wikifunctions:Glossary#Function|Function signatures]] and other structured content on Wikifunctions will be published under [[w:CC0|CC 0]].</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Special:MyLanguage/Wikifunctions:Glossary#Implementation|Code implementations]] in Wikifunctions will be published under the [[w:Apache License|Apache 2 license]].</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Special:MyLanguage/Wikifunctions:Glossary#Content|Abstract Content]] for Abstract Wikipedia will be published under CC BY-SA 4.0.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
There are still some points that will need to be addressed in the future, such as the license of the generated content from the abstract content. We plan on drafting a more comprehensive document with the Legal department about how people can re-use code from Wikifunctions as painlessly as possible, while adhering to the license.
</div>
<span id="Contributing"></span>
== યોગદાન ==
<div lang="en" dir="ltr" class="mw-content-ltr">
=== I'm new here. What is there for me to do and how can I help? ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Welcome! We're very happy to have you here! There are many opportunities for contributing to Wikifunctions, from creating new functions to improving and translating documentation. If you are looking for ways to get involved, we recommend that maybe, depending on your level of comfort, you suggest a new function on a topic you are interested in. Or even create such a function. Provide some tests. Try your hand at an implementation. Help with translations. Read and improve our documentation. Help with organizing the community.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== How do I create a new function, implementation, or test? ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
To see how to create a new function, implementation, or test, see [[Special:MyLanguage/Wikifunctions:Introduction|Wikifunctions:Introduction]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
To see in more detail how to create an implementation, see [[Special:MyLanguage/Wikifunctions:How to create implementations|Wikifunctions:How to create implementations]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== What should I edit first? ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If you can write several languages, find functions that don't have labels and descriptions in your languages yet on the page [[Special:ListMissingLabels]], and help to add them.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If you have some interest in a domain that could feature functions in Wikifunctions, but yet doesn't, or if you have more ideas for functions, go to the page for [[Wikifunctions:Suggest a new function|suggesting new functions]] and present your ideas.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If you are a coder in JavaScript or Python, maybe you want to check for functions that don't yet have implementations in JavaScript or Python, and try to write them.
</div>
<span id="Where_can_I_go_for_help?"></span>
=== હું મદદ માટે ક્યાં જઈ શકું? ===
<div lang="en" dir="ltr" class="mw-content-ltr">
Your first stop should be the [[Special:MyLanguage/Help:Contents|Help portal]], where you'll find all the documentation related to using and editing Wikifunctions. If you're still stuck, post a message on [[Wikifunctions:Project chat|Project chat]], and someone will answer your question.
</div>
<span id="How_do_we_sort_or_categorize_functions?"></span>
=== અમે વિધેયોની ગોઠવણી કે વર્ગીકરણ કેવી રીતે કરીએ છીએ? ===
{{Tracked|T285424}}
<div lang="en" dir="ltr" class="mw-content-ltr">
For now, the best way to sort or categorize functions is to do it by hand through [[Special:MyLanguage/Wikifunctions:Catalogue|pages in the Wikifunctions namespace]]. Another option would be through the talk page of the given function. We will monitor these efforts and discuss with the community which changes to the system would be helpful for this task.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== How can I setup the software locally to hack on it? ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
See [[Special:MyLanguage/Wikifunctions:Hacking on the evaluator and orchestrator|Hacking on the evaluator and orchestrator]].
</div>
[[Category:FAQ| {{#translation:}}]]
6sckbkw62cs1cb3qz9ha8gdds53esh2
Wikifunctions:FAQ/uk
4
14697
296932
234258
2026-08-06T18:02:05Z
FuzzyBot
207
Updating to match new version of source page
296932
wikitext
text/x-wiki
<languages/>
{{shortcut|[[WF:FAQ]]}}
Це спеціальна сторінка для частих запитань про Вікіфункції. Будь ласка, не соромтеся задати своє питання на [[Wikifunctions talk:FAQ|сторінці обговорення]], якщо ваше питання не вказано тут!
Крім того, будь ласка, розгляньте наші [[:m:Special:MyLanguage/Abstract Wikipedia/FAQ|ЧаПи на Meta]] щодо більш загальних питань про Вікіфункції та Абстрактну Вікіпедію.
__TOC__
<span id="Introduction"></span>
== Вступ ==
<span id="What_is_this_project_about?"></span>
=== Про що цей проєкт? ===
Вікіфункції — це новий проєкт Вікімедіа, що надає каталог всіх видів функцій, які може будь-хто викликати, писати, обслуговувати та використовувати. Він також надає базову технологію, що в майбутньому дозволить переклад мовно-незалежних статей із Абстрактної Вікіпедії на мову будь-якої Вікіпедії. Це дозволить кожному робити свої внески та читати статті мовами, яким вони надають перевагу.
<span id="What_is_a_function?"></span>
=== Що таке функція? ===
Функції — це форма знань, яка може відповісти на запитання, наприклад, скільки днів минуло між двома датами або яка відстань між двома містами. Складніші функції можуть відповісти на складніші запитання, наприклад, який об'єм тривимірної форми, яка відстань між Марсом і Венерою на певну дату або чи жили два види одночасно.
<div class="mw-translate-fuzzy">
Ми вже використовуємо функції в багатьох типах запитів на знання, наприклад, ставлячи запитання пошуковій системі. Шаблони, такі як [[:w:en:Template:Convert|Template:Convert]] і [[:w:en:Template:Age|Template:Age]] в англійській Вікіпедії, також є прикладами функцій, які вже використовуються в багатьох Вікіпедіях, написані у вікітексті та Lua та вручну скопійовані до кожної вікі, де вони потрібні.
</div>
<span id="What_is_an_implementation?"></span>
=== Що таке реалізація? ===
Реалізація — це конкретний спосіб виконання функції. Реалізація — це рецепт, який перераховує кроки, необхідні для запуску функції. Це може бути шматок коду на мові програмування, або комбінація викликів інших функцій. Функція може мати багато реалізацій, які всі повинні бути еквівалентними.
<span id="What_is_a_test?"></span>
=== Що таке тест? ===
Тест — це спосіб визначити, чи правильно виконується ця функція. Функція, як правило, має кілька тестерів, кожен із яких визначає певний вхід функції та умови, яким повинен відповідати вихід для цього входу.
Наприклад, тестувальники для функції «регістр назви» можуть включати: «<span dir="ltr" lang="en">abc</span>» повинно стати «<span dir="ltr" lang="en">Abc</span>»; «<span dir="ltr" lang="en">war and peace</span>» повинно стати «<span dir="ltr" lang="en">War and Peace</span>»; «<span dir="ltr" lang="ru">война и мир</span>» повинно стати «<span dir="ltr" lang="ru">Война и мир</span>» та «<span dir="ltr" lang="en">123</span>» повинно залишитися «<span dir="ltr" lang="en">123</span>».
<span id="Which_features_are_available_now,_which_will_be_soon_available,_and_which_are_further_away?"></span>
=== Які функції доступні зараз, які будуть доступні незабаром, і які пізніше? ===
* На старті:
** Ми маємо можливість мати функції, що працюють з рядками (Strings) та булевими змінними (Booleans).
** Вікіфункції будуть повністю інтернаціоналізовані із самого початку. Вони можуть бути використанні в будь-якій мові.
* [[Wikifunctions:Status|Поточна розробка]]:
** Загальні типи і загальні функції не повністю підтримуються.
** Зараз додавання типів є чимось, що обмежено командою розробників. У майбутньому спільнота матиме змогу додавати більше типів. Є багато роботи, яку потрібно зробити в майбутньому, щоб зробити поведінку типів набагато плавнішою.
*** Одним особливо зацікавленим типом буде бінарний тип, а особливо, файли.
** Зараз ми підтримуємо дві мови програмування для реалізацій: JavaScript і Python. У майбутньому, ми хочемо підтримувати багато інших мов.
** Тепер ''не'' можливо викликати інші функції з реалізацій, написаних будь-якою мовою програмування. Наразі це можливо лише через композицію.
* У майбутньому:
** Буде можливість викликати функції Вікіфункції з інших проєктів Вікімедіа та інтегрувати їхні результати у вивід сторінки.
** Буде можливість використовувати дані із Вікіданих у функціях.
** Буде можливість викликати набори даних із простору Commons Data.
<span id="How_is_Wikifunctions_multilingual?"></span>
=== Як Вікіфункції є багатомовними? ===
{{main|Special:MyLanguage/Help:Multilingual}}
Вікіфункції й абстрактна Вікіпедія є багатомовними різними способами, які не впливають один на одного:
* '''Вікіфункції є багатомовними з точки зору їх вмісту та інтерфейсу користувача'''. Користувачі можуть читати і викликати функції на Вікіфункціях будь-якою природною мовою. Ось функція «об'єднати рядки» [https://www.wikifunctions.org/view/en/Z10000 англійською], [https://www.wikifunctions.org/view/pl/Z10000 польською] мовами та [https://www.wikifunctions.org/view/he/Z10000 івритом], і вона доступна багатьма іншими мовами.
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Contributors can edit and improve Wikifunctions using their language.''' Even implementations can be edited in the natural language of the contributor. For example, the composition of the “and” function can be edited in [https://www.wikifunctions.org/wiki/Z11223?action=edit&uselang=de German], [https://www.wikifunctions.org/wiki/Z11223?action=edit&uselang=en English], or any other of about 300 languages.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Wikifunctions functions can be used to create results for any natural language.''' The community is creating a growing number of functions to support the generation of text in many natural languages. We have functions for [[Wikifunctions:Catalogue#Breton|Breton]], [[Wikifunctions:Catalogue#Rohingya|Rohingya]], [[Wikifunctions:Catalogue#English|English]], and many other languages.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Functions in Wikifunctions can be implemented in various different programming languages.''' For example, the [[Z10000|join function]] is implemented in both [[Z10005|JavaScript]] and [[Z10004|Python]].</span>
<span id="Which_programming_languages_does_Wikifunctions_currently_support?_Which_programming_languages_will_be_supported_in_the_future?"></span>
=== Які мови програмування зараз підтримуються Вікіфункціями? Які мови програмування підтримуватимуться в майбутньому? ===
{{main|WF:programming languages}}
<div lang="en" dir="ltr" class="mw-content-ltr">
Currently, Wikifunctions supports implementations written in JavaScript and Python. We plan to add support for more programming languages in the future. We hope to add at least one further programming language in 2025 (but have not yet decided which one).
</div>
<span id="How_will_Wikifunctions_be_integrated_into_other_projects?"></span>
=== Як Вікіфункції будуть інтегровані в інші проєкти? ===
<div lang="en" dir="ltr" class="mw-content-ltr">
Wikifunctions is the first step towards building Abstract Wikipedia. Our near-term focus will be on supporting the community and making improvements based on feedback. Concurrently, we will begin the process of integrating it with Wikipedia and Wikidata, which will enable broader real-life applications and get us closer to the vision of Abstract Wikipedia.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Contributors will be able to call functions stored on the Wikifunctions site from within their wikis. The result of the function call will be displayed to readers of the wiki. This can be used, for example, to calculate the age of a person, the population density based on population and area data from Wikidata, or to draw a graph and integrate it into a given article.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Another option to integrate Wikifunctions will be to integrate an interactive function call interface within their wiki. This could be used, for example, in a Wikipedia article to dynamically calculate the result of a physical equation based on reader-provided parameters, draw and interact with mathematical functions, etc.
</div>
<span id="What_Wikifunctions_is_not"></span>
<div class="mw-translate-fuzzy">
=== Чим не є Вікіфункції? ===
</div>
Будь ласка, ознайомтесь із [[Special:MyLanguage/Wikifunctions:What Wikifunctions is not|Вікіфункції:Чим не є Вікіфункції]] для детальнішої інформації про це.
<span id="What_license_will_the_functions_and_derived_content_be_under?"></span>
=== Під якою ліцензією перебуватимуть функції та похідний контент? ===
<div lang="en" dir="ltr" class="mw-content-ltr">
Per the discussion happened [[:m:Special:MyLanguage/Abstract Wikipedia/Licensing discussion|on Meta between November and December 2021]], all contributions to Wikifunctions and the wider Abstract Wikipedia projects will be published under free licenses. In particular:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Special:MyLanguage/Wikifunctions:Glossary#Content|Textual content]] on Wikifunctions will be published under [[w:Creative Commons license|CC BY-SA 4.0]].</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Special:MyLanguage/Wikifunctions:Glossary#Function|Function signatures]] and other structured content on Wikifunctions will be published under [[w:CC0|CC 0]].</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Special:MyLanguage/Wikifunctions:Glossary#Implementation|Code implementations]] in Wikifunctions will be published under the [[w:Apache License|Apache 2 license]].</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Special:MyLanguage/Wikifunctions:Glossary#Content|Abstract Content]] for Abstract Wikipedia will be published under CC BY-SA 4.0.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
There are still some points that will need to be addressed in the future, such as the license of the generated content from the abstract content. We plan on drafting a more comprehensive document with the Legal department about how people can re-use code from Wikifunctions as painlessly as possible, while adhering to the license.
</div>
<span id="Contributing"></span>
== Участь ==
<span id="I'm_new_here._What_is_there_for_me_to_do_and_how_can_I_help?"></span>
=== Я тут новачок. Що мені робити і чим я можу допомогти? ===
<div lang="en" dir="ltr" class="mw-content-ltr">
Welcome! We're very happy to have you here! There are many opportunities for contributing to Wikifunctions, from creating new functions to improving and translating documentation. If you are looking for ways to get involved, we recommend that maybe, depending on your level of comfort, you suggest a new function on a topic you are interested in. Or even create such a function. Provide some tests. Try your hand at an implementation. Help with translations. Read and improve our documentation. Help with organizing the community.
</div>
<span id="How_do_I_create_a_new_function,_implementation,_or_test?"></span>
=== Як створити нову функцію, реалізацію або тест? ===
<div lang="en" dir="ltr" class="mw-content-ltr">
To see how to create a new function, implementation, or test, see [[Special:MyLanguage/Wikifunctions:Introduction|Wikifunctions:Introduction]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
To see in more detail how to create an implementation, see [[Special:MyLanguage/Wikifunctions:How to create implementations|Wikifunctions:How to create implementations]].
</div>
<span id="What_should_I_edit_first?"></span>
=== Що мені редагувати спочатку? ===
<div lang="en" dir="ltr" class="mw-content-ltr">
If you can write several languages, find functions that don't have labels and descriptions in your languages yet on the page [[Special:ListMissingLabels]], and help to add them.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If you have some interest in a domain that could feature functions in Wikifunctions, but yet doesn't, or if you have more ideas for functions, go to the page for [[Wikifunctions:Suggest a new function|suggesting new functions]] and present your ideas.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If you are a coder in JavaScript or Python, maybe you want to check for functions that don't yet have implementations in JavaScript or Python, and try to write them.
</div>
<span id="Where_can_I_go_for_help?"></span>
=== Куди я можу звернутися за допомогою? ===
<div lang="en" dir="ltr" class="mw-content-ltr">
Your first stop should be the [[Special:MyLanguage/Help:Contents|Help portal]], where you'll find all the documentation related to using and editing Wikifunctions. If you're still stuck, post a message on [[Wikifunctions:Project chat|Project chat]], and someone will answer your question.
</div>
<span id="How_do_we_sort_or_categorize_functions?"></span>
=== Як ми сортуємо або класифікуємо функції? ===
{{Tracked|T285424}}
<div lang="en" dir="ltr" class="mw-content-ltr">
For now, the best way to sort or categorize functions is to do it by hand through [[Special:MyLanguage/Wikifunctions:Catalogue|pages in the Wikifunctions namespace]]. Another option would be through the talk page of the given function. We will monitor these efforts and discuss with the community which changes to the system would be helpful for this task.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== How can I setup the software locally to hack on it? ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
See [[Special:MyLanguage/Wikifunctions:Hacking on the evaluator and orchestrator|Hacking on the evaluator and orchestrator]].
</div>
[[Category:FAQ| {{#translation:}}]]
2hco5cw2ooph7alx3uogvo79ix9qq95
Wikifunctions:Report a technical problem/gu
4
15033
296961
279540
2026-08-06T18:03:08Z
FuzzyBot
207
Updating to match new version of source page
296961
wikitext
text/x-wiki
<languages/>
{{shortcut|[[WF:BUG]]}}
{{see also
|Special:MyLanguage/WF:Status|l1=WF:Status
|Special:MyLanguage/WF:Feature_petitions|l2=WF:Feature petitions
}}
<div lang="en" dir="ltr" class="mw-content-ltr">
If you have found a bug in Wikifunctions, or you have a feature request for Wikifunctions, please let us know!
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Scope ==
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Bug''' - a problem that is producing incorrect or unexpected results on Wikifunctions. Note that problems within Functions themselves are not considered as a bug in this context.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Feature request''' - an idea that the development team can add to Wikifunctions to make it even more awesome.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
Do you need help with something else?
</div>
: <span lang="en" dir="ltr" class="mw-content-ltr">The following are '''out of scope''' of the work of the Wikifunctions development team:</span>
:* <span lang="en" dir="ltr" class="mw-content-ltr">The '''content of individual Functions''' – Discuss those on the talkpage of the Function itself, or ask for help at [[Wikifunctions:Project chat]] or in the channels listed below; if you think a function is missing, see [[Wikifunctions:Suggest a function]]</span>
:* <span lang="en" dir="ltr" class="mw-content-ltr">The '''Wikifunctions project's policies''' – Ask about those at [[Wikifunctions:Project chat]] or in the channels listed below</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Find existing bugs and feature requests ==
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">See '''[[Wikifunctions:Status]]''' for a quick summary of high-level issues.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">You can '''[[phab:maniphest/query/UzvNRqsdnymk/|search the Phabricator]] listing of open tasks''' to see if your bug or feature idea is already documented.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Discuss with others ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
You can ask questions about possible bugs or feature ideas at a few locations. This may be helpful if you are unsure how to clearly describe the bug or feature idea:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">The discussion page [[Wikifunctions:Project chat|here]].</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">The main chat on [https://t.me/Wikifunctions Telegram] or IRC {{channel|wikipedia-abstract}} (bridged together) ([https://wm-bot.wmcloud.org/logs/%23wikipedia-abstract/ logs], [https://wm-bot.wmflabs.org/logs/%23wikipedia-abstract/ old logs])</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">The developer chat on [https://t.me/abstract_wikipedia_tech Telegram] or IRC {{channel|wikipedia-abstract-tech}} (bridged together) ([https://wm-bot.wmcloud.org/logs/%23wikipedia-abstract-tech/ logs])</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
== File a task in Phabricator ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If you are familiar with Phabricator, you can search and file tasks directly.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If you are not yet familiar: Phabricator is the web-based development collaboration tool mostly used to manage MediaWiki software projects including Wikifunctions. A short summary about Phabricator for newcomers, including tutorial videos, is on MediaWiki's wiki at [[mw:Special:MyLanguage/Phabricator/Help|mw:Phabricator/Help]].
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">You can '''[[phab:maniphest/query/UzvNRqsdnymk/|search]] the listing of open tasks''' to see if your bug or feature idea is already documented.</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">The existing tasks are collected with the '''[[phab:tag/abstract wikipedia team|#abstract wikipedia team]] tag'''.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">You can '''[https://phabricator.wikimedia.org/maniphest/task/edit/form/43/?projects=abstract_wikipedia file a new task]'''. Please always include:</span>
** ઉદાહરણો
** <span lang="en" dir="ltr" class="mw-content-ltr">Any relevant links</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">For bugs: The exact steps that produced the bug, so that the team can reproduce and diagnose it.</span>
<span id="Languages"></span>
== ભાષાઓ ==
<div lang="en" dir="ltr" class="mw-content-ltr">
The development team understands a limited number of languages – but you are free to report issues in any language that you're comfortable with.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If possible, please provide a summary in English when creating a phabricator task, or ask someone to help you.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Follow-up ==
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">The locations above are followed by the Wikifunctions development team, as well as community members. The time to get a reply varies depending on the nature or complexity of the topic, etc. However, in general, you can get an answer within 2 workdays. Please let us know if we missed something, as life can get distracting!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Not all problems can be solved immediately: depending on the impact, priority, etc. some bugs can be triaged to low priority. You may follow the status of your report on the relevant linked phabricator task.</span>
[[Category:Report a technical problem{{#translation:}}]]
12tsen5ske1g95t0bch4quxtgonagso
Wikifunctions:FAQ/hi
4
15190
296918
265380
2026-08-06T18:01:58Z
FuzzyBot
207
Updating to match new version of source page
296918
wikitext
text/x-wiki
<languages/>
{{shortcut|[[WF:FAQ]]}}
<div lang="en" dir="ltr" class="mw-content-ltr">
This is a dedicated page for the Frequently Asked Questions about Wikifunctions. Please, feel free to ask your own question on the [[Wikifunctions talk:FAQ|talk page]], if your question is not listed here!
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Also, please consider our [[:m:Special:MyLanguage/Abstract Wikipedia/FAQ|FAQ on Meta]] regarding more general questions about Wikifunctions and Abstract Wikipedia.
</div>
__TOC__
<span id="Introduction"></span>
== परिचय ==
<span id="What_is_this_project_about?"></span>
=== यह परियोजना किस बारे में है? ===
<div lang="en" dir="ltr" class="mw-content-ltr">
Wikifunctions is a new Wikimedia project that provides a catalog of all kinds of functions that anyone can call, write, maintain, and use. It also provides the underlying technology that will eventually enable the translation of language-independent articles from Abstract Wikipedia into the language of any Wikipedia. This will allow everyone to contribute and read articles in their preferred languages.
</div>
<span id="What_is_a_function?"></span>
=== एक फ़ंक्शन क्या होता है? ===
<div lang="en" dir="ltr" class="mw-content-ltr">
Functions are a form of knowledge that can answer questions, such as how many days have passed between two dates or the distance between two cities. More complicated functions can answer more complicated questions, such as the volume of a three-dimensional shape, the distance between Mars and Venus on a certain date, or whether two species were alive at the same time.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
We already use functions in many types of knowledge inquiries, such as asking a question to a search engine. The templates, such as [[:w:en:Template:Convert|Template:Convert]] and [[:w:en:Template:Age|Template:Age]] on English Wikipedia, are also examples of functions that are already used in many Wikipedias, written in wikitext and Lua and manually copied to each wiki where they're wanted.
</div>
<span id="What_is_an_implementation?"></span>
=== एक कार्यान्वयन क्या होता है? ===
<div lang="en" dir="ltr" class="mw-content-ltr">
An implementation is a particular way to execute a function. An implementation is a recipe that lists the steps that are needed to run the function. It may be a piece of code in a programming language or a combination of calls to other functions. A function may have many implementations, which should all be equivalent.
</div>
<span id="What_is_a_test?"></span>
=== एक परीक्षण क्या होता है? ===
<div lang="en" dir="ltr" class="mw-content-ltr">
A test is a way to determine if a given function is doing the right thing. A function will typically have multiple testers, each specifying some input to the function and the conditions the output for the given input must fulfill.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For example, testers for a “title case” function might include: “<span dir="ltr" lang="en">abc</span>” should become “<span dir="ltr" lang="en">Abc</span>”; “<span dir="ltr" lang="en">war and peace</span>” should become “<span dir="ltr" lang="en">War and Peace</span>”; “<span dir="ltr" lang="ru">война и мир</span>” should become “<span dir="ltr" lang="ru">Война и мир</span>”; and “<span dir="ltr" lang="en">123</span>” should remain “<span dir="ltr" lang="en">123</span>”.
</div>
<span id="Which_features_are_available_now,_which_will_be_soon_available,_and_which_are_further_away?"></span>
=== इस समय कौन-सी सुविधाएँ उपलब्ध हैं, कौन-सी जल्द होंगी, और किन को आने में देर होगी? ===
* लॉन्च पर:
** <span lang="en" dir="ltr" class="mw-content-ltr">We have the ability to have functions that work with Strings and Booleans.</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">Wikifunctions will be fully internationalized from the beginning. It can be used in any language.</span>
* [[Wikifunctions:Status|विकास जारी]]:
** <span lang="en" dir="ltr" class="mw-content-ltr">Generic types and generic functions are not fully supported.</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">Adding types will, for now, be something that is limited to the development team. In the future, the community will be able to add more types. There is a lot of work to be done in the future to make types behave much more smoothly.</span>
*** <span lang="en" dir="ltr" class="mw-content-ltr">One particularly interesting type will be binary data, and particularly files.</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">We currently support two programming languages for implementations: JavaScript and Python. In the future, we want to support many more.</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">Currently, it is ''not'' possible to call other functions from implementations written in any programming language. This is currently only possible through composition.</span>
* भविष्य में:
** <span lang="en" dir="ltr" class="mw-content-ltr">It will be possible to call Wikifunctions functions from other Wikimedia projects and integrate their results into the output of the page.</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">It will be possible to use data from Wikidata in functions.</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">It will be possible to call data sets from Commons Data namespace.</span>
<span id="How_is_Wikifunctions_multilingual?"></span>
=== विकिफ़ंक्शन्स बहुभाषी कैसे है? ===
{{main|Special:MyLanguage/Help:Multilingual}}
<div lang="en" dir="ltr" class="mw-content-ltr">
Wikifunctions and Abstract Wikipedia are multilingual in a number of ways that do not impact each other:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Wikifunctions is multilingual in terms of its content and user interface.''' Users can read and call functions on Wikifunctions in any natural language. Here is the “join string” function in [https://www.wikifunctions.org/view/en/Z10000 English], [https://www.wikifunctions.org/view/pl/Z10000 Polish], and [https://www.wikifunctions.org/view/he/Z10000 Hebrew], and it is available in many more languages.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Contributors can edit and improve Wikifunctions using their language.''' Even implementations can be edited in the natural language of the contributor. For example, the composition of the “and” function can be edited in [https://www.wikifunctions.org/wiki/Z11223?action=edit&uselang=de German], [https://www.wikifunctions.org/wiki/Z11223?action=edit&uselang=en English], or any other of about 300 languages.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Wikifunctions functions can be used to create results for any natural language.''' The community is creating a growing number of functions to support the generation of text in many natural languages. We have functions for [[Wikifunctions:Catalogue#Breton|Breton]], [[Wikifunctions:Catalogue#Rohingya|Rohingya]], [[Wikifunctions:Catalogue#English|English]], and many other languages.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Functions in Wikifunctions can be implemented in various different programming languages.''' For example, the [[Z10000|join function]] is implemented in both [[Z10005|JavaScript]] and [[Z10004|Python]].</span>
<span id="Which_programming_languages_does_Wikifunctions_currently_support?_Which_programming_languages_will_be_supported_in_the_future?"></span>
=== विकिफ़ंक्शन्स पर इस समय कौन-सी प्रोग्रामिंग भाषाएँ समर्थित हैं कौन-सी प्रोग्रामिंग भाषाएँ भविष्य में समर्थित की जाएँगी? ===
{{main|WF:programming languages}}
<div lang="en" dir="ltr" class="mw-content-ltr">
Currently, Wikifunctions supports implementations written in JavaScript and Python. We plan to add support for more programming languages in the future. We hope to add at least one further programming language in 2025 (but have not yet decided which one).
</div>
<span id="How_will_Wikifunctions_be_integrated_into_other_projects?"></span>
=== विकिफ़ंक्शन्स को दूसरी परियोजनाओं के साथ कैसे एकीकृत किया जाएगा? ===
<div lang="en" dir="ltr" class="mw-content-ltr">
Wikifunctions is the first step towards building Abstract Wikipedia. Our near-term focus will be on supporting the community and making improvements based on feedback. Concurrently, we will begin the process of integrating it with Wikipedia and Wikidata, which will enable broader real-life applications and get us closer to the vision of Abstract Wikipedia.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Contributors will be able to call functions stored on the Wikifunctions site from within their wikis. The result of the function call will be displayed to readers of the wiki. This can be used, for example, to calculate the age of a person, the population density based on population and area data from Wikidata, or to draw a graph and integrate it into a given article.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Another option to integrate Wikifunctions will be to integrate an interactive function call interface within their wiki. This could be used, for example, in a Wikipedia article to dynamically calculate the result of a physical equation based on reader-provided parameters, draw and interact with mathematical functions, etc.
</div>
<span id="What_Wikifunctions_is_not"></span>
<div class="mw-translate-fuzzy">
=== विकिफ़ंक्शन्स क्या नहीं है? ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Please, see [[Special:MyLanguage/Wikifunctions:What Wikifunctions is not|Wikifunctions:What Wikifunctions is not]] for more information on that.
</div>
<span id="What_license_will_the_functions_and_derived_content_be_under?"></span>
=== फ़ंक्शन्स और व्युत्पन्न सामग्री का क्या लाइसेंस होगा? ===
<div lang="en" dir="ltr" class="mw-content-ltr">
Per the discussion happened [[:m:Special:MyLanguage/Abstract Wikipedia/Licensing discussion|on Meta between November and December 2021]], all contributions to Wikifunctions and the wider Abstract Wikipedia projects will be published under free licenses. In particular:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Special:MyLanguage/Wikifunctions:Glossary#Content|Textual content]] on Wikifunctions will be published under [[w:Creative Commons license|CC BY-SA 4.0]].</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Special:MyLanguage/Wikifunctions:Glossary#Function|Function signatures]] and other structured content on Wikifunctions will be published under [[w:CC0|CC 0]].</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Special:MyLanguage/Wikifunctions:Glossary#Implementation|Code implementations]] in Wikifunctions will be published under the [[w:Apache License|Apache 2 license]].</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Special:MyLanguage/Wikifunctions:Glossary#Content|Abstract Content]] for Abstract Wikipedia will be published under CC BY-SA 4.0.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
There are still some points that will need to be addressed in the future, such as the license of the generated content from the abstract content. We plan on drafting a more comprehensive document with the Legal department about how people can re-use code from Wikifunctions as painlessly as possible, while adhering to the license.
</div>
<span id="Contributing"></span>
== योगदान करना ==
<span id="I'm_new_here._What_is_there_for_me_to_do_and_how_can_I_help?"></span>
=== मैं यहाँ नया/नई हूँ। मेरे लिए करने को क्या है और मैं कैसे मदद कर सकता/सकती हूँ? ===
<div lang="en" dir="ltr" class="mw-content-ltr">
Welcome! We're very happy to have you here! There are many opportunities for contributing to Wikifunctions, from creating new functions to improving and translating documentation. If you are looking for ways to get involved, we recommend that maybe, depending on your level of comfort, you suggest a new function on a topic you are interested in. Or even create such a function. Provide some tests. Try your hand at an implementation. Help with translations. Read and improve our documentation. Help with organizing the community.
</div>
<span id="How_do_I_create_a_new_function,_implementation,_or_test?"></span>
=== मैं एक नया फ़ंक्शन, कार्यान्वयन, या परीक्षण कैसे बनाऊँ? ===
<div lang="en" dir="ltr" class="mw-content-ltr">
To see how to create a new function, implementation, or test, see [[Special:MyLanguage/Wikifunctions:Introduction|Wikifunctions:Introduction]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
To see in more detail how to create an implementation, see [[Special:MyLanguage/Wikifunctions:How to create implementations|Wikifunctions:How to create implementations]].
</div>
<span id="What_should_I_edit_first?"></span>
=== मुझे पहले क्या सम्पादित करना चाहिए? ===
<div lang="en" dir="ltr" class="mw-content-ltr">
If you can write several languages, find functions that don't have labels and descriptions in your languages yet on the page [[Special:ListMissingLabels]], and help to add them.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If you have some interest in a domain that could feature functions in Wikifunctions, but yet doesn't, or if you have more ideas for functions, go to the page for [[Wikifunctions:Suggest a new function|suggesting new functions]] and present your ideas.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If you are a coder in JavaScript or Python, maybe you want to check for functions that don't yet have implementations in JavaScript or Python, and try to write them.
</div>
<span id="Where_can_I_go_for_help?"></span>
=== मैं मदद के लिए कहाँ जाऊँ? ===
<div lang="en" dir="ltr" class="mw-content-ltr">
Your first stop should be the [[Special:MyLanguage/Help:Contents|Help portal]], where you'll find all the documentation related to using and editing Wikifunctions. If you're still stuck, post a message on [[Wikifunctions:Project chat|Project chat]], and someone will answer your question.
</div>
<span id="How_do_we_sort_or_categorize_functions?"></span>
=== हम फ़ंक्शन्स को कैसे छाँटते या श्रेणीकृत करते हैं? ===
{{Tracked|T285424}}
<div lang="en" dir="ltr" class="mw-content-ltr">
For now, the best way to sort or categorize functions is to do it by hand through [[Special:MyLanguage/Wikifunctions:Catalogue|pages in the Wikifunctions namespace]]. Another option would be through the talk page of the given function. We will monitor these efforts and discuss with the community which changes to the system would be helpful for this task.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== How can I setup the software locally to hack on it? ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
See [[Special:MyLanguage/Wikifunctions:Hacking on the evaluator and orchestrator|Hacking on the evaluator and orchestrator]].
</div>
[[Category:FAQ| {{#translation:}}]]
9xwbw3h71ezakh87r6xnrktne6b6nwx
Z11248
0
15612
297059
99540
2026-08-06T21:18:14Z
99of9
1622
Added Z38940 to the approved list of test cases
297059
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z11248"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z6",
"Z17K2": "Z11248K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Enter an Igbo word"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "Wort in Igbo"
}
]
}
}
],
"Z8K2": "Z6",
"Z8K3": [
"Z20",
"Z38940"
],
"Z8K4": [
"Z14",
"Z11249"
],
"Z8K5": "Z11248"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Adds a preposition 'na' to a word (Igbo)"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1014",
"Z11K2": "Na-gbakwụnye mbụụzọ 'na' na okwu"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "füge Präposition 'na' zu einem Wort hinzu (Igbo)"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Add na before the word when the word begins with a consonant and adds n' before the word when the word begins with a vowel."
},
{
"Z1K1": "Z11",
"Z11K1": "Z1014",
"Z11K2": "Tinye 'na' tụpụ okwu mgbe okwu na-amalite na mgbochiume, ma tinye kwa (n') tụpụ okwu Mgbe okwu na-amalite na ụdaume."
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "fügt 'na' vor einem Wort ein, wenn es mit einem Konsonant beginnt und n', wenn es mit einem Vokal beginnt"
}
]
}
}
8u0idtdlb3iwd04pxbfy4mn8uwudo1s
Wikifunctions:How to create implementations/uk
4
16127
296948
276461
2026-08-06T18:02:41Z
FuzzyBot
207
Updating to match new version of source page
296948
wikitext
text/x-wiki
<languages/>
Ця сторінка надає більш детальні інструкції щодо того '''як створювати реалізації''', ніж короткий огляд на сторінці {{ll|Wikifunctions:Introduction}}.
<div lang="en" dir="ltr" class="mw-content-ltr">
== Types of Implementations ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
In Wikifunctions, an '''implementation''' can take one of two main forms: '''code''' or '''composition'''. A code implementation directly expresses the function’s logic in any of the available programming languages (currently, Python3 or JavaScript). It’s most useful when the function’s behavior can’t easily be built from existing Wikifunctions, or when precise control over data processing is needed.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
A composition implementation, on the other hand, defines the function entirely by combining other existing functions, without writing code. Compositions are easier to understand, reuse, and translate into other languages automatically, but they depend on suitable building blocks already being available and often are less performant. In general, start by checking whether your goal can be achieved through composition; if it can’t, or if performance or fine-grained logic matters, choose a code implementation instead.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
There's a third type of implementation: '''built-ins'''. These are run by system-built code, and are not editable. Most likely all pre-defined functions will have a built-in implementation. In such cases, when opening the implementation page, you will see a message stating ''"{{int|wikilambda-implementation-selector-none}}"''
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Practice Test-Driven Development ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
'''Test-Driven Development''', or '''TDD''', is a way of creating software where you write tests before you write the actual code. Tests are just a way of understanding what your function is supposed to do by listing examples and how they should work.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
In Wikifunctions, writing tests first offers significant benefits. If you are working on an implementation, you can run your code against the existing tests to check that it behaves as expected. This makes it easier to catch errors early before even publishing your implementation. Tests are also a powerful way to describe the function you need. By writing tests, '''you clearly communicate the expected behavior''', and the community can step in and help with the implementation, or create alternative implementations.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Imagine you want to implement a Function that combines two strings with a space in between. A basic test for this might look like:
</div>
<syntaxhighlight lang="prolog">
join_with_space( "Hello", "world" ) => "Hello world"
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
Once you have defined the basic behavior, it's important to '''think about edge cases'''—situations where the inputs are such that you might need some special behavior.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For example, what if your first string ends in a space, or your second string starts with a space? Should the function keep all existing spaces and add another one, or should it return a neatly spaced result with just a single space between the words?
Depending on your requirements, you should build a test for such a case. For example, a test for this edge case could be either one of these — but not both!:
</div>
<syntaxhighlight lang="prolog">
join_with_space( "Hello ", " world") => "Hello world"
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
or ...
</div>
<syntaxhighlight lang="prolog">
join_with_space( "Hello ", " world") => "Hello world"
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
Make sure that all possible special cases are covered by your tests, and once you have them, make sure that they are all connected to the Function by selecting them and clicking "Connect".
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Code implementations ==
</div>
[[File:Code implementation.png|thumb|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Wikifunctions code editor initialized with a function template</span>|<span lang="en" dir="ltr" class="mw-content-ltr">When adding a new code implementation, the function template is initialized with the function and argument names</span>]]
<div lang="en" dir="ltr" class="mw-content-ltr">
When creating an implementation using code, the Wikifunctions UI will set up a code editor with the selected language activated for syntax highlighting and validation. When the function to implement and the programming language are selected, this editor will be set with the correct function template: '''do not remove or edit this'''! Keep your code inside this function signature: if you need auxiliary functions, you can simply declare them inside your top-level function declaration.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Using input types in your code ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Wikifunctions types {{Z|Z6}} and {{Z|Z40}} can be used as if they were native types in both JavaScript and Python3. For example, a String input can be concatenated or a Boolean be directly used in a logical expression. To use other types in your code implementations, you will have to look deeper into the type, figure out if it has a conversion to a native equivalent, and treat it accordingly.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For example, let's say we want to write some Python code that handles an input of type {{Z|Z20420}}. In the page for this type, let's look at its "type converters to code" and search for a Python one. The converter {{Z|Z20424}} will be applied to our date input before our code, so looking at "native type" we know that our input will be a Python ''dict'' and looking at the implementation we can see the keys we can expect:
</div>
<syntaxhighlight lang="python3">
return {
'K1': year,
'K2': month,
'K3': day
}
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
When a type doesn't have a converter, you'll have to access its parts directly using its keys. For example, let's assume that your function <code>Z30000</code> has one input <code>Z30000K1</code> of type {{Z|Z11}}. This type has two keys: <code>Z11K1</code> for the language (itself an object of type {{Z|Z60}}), and <code>Z11K2</code> for the string value. Similarly, the language object has a key <code>Z60K1</code> for the language code. So, to get a string with the language code and the text, you can write:
</div>
<syntaxhighlight lang="javascript">
function Z30000( Z30000K1 ) {
// e.g. "en: some text"
return Z30000K1.Z11K1.Z60K1 + ": " + Z30000K1.Z11K2;
}
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
For a quick reference of the available type conversions visit [[Special:MyLanguage/Wikifunctions:Execution targets#Default type conversion|the default type conversion table]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Returning the right outputs ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Similarly to the way you treat inputs, outputs need to match the type specified in the function definition. Some can be treated as simply as native types, so any string output will be converted into a Wikifunctions {{Z|Z6}} object and any native boolean returned by your implementation will be converted into a Wikifunctions {{Z|Z40}} object.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Those types that have "type converters from code" will apply the appropriate function to the output, in order to build the required type. Following the example of {{Z|Z20420}}, the {{Z|Z20443}} will transform the output from your implementation–a dict with K1, K2 and K3 keys–into its correct ZObject representation.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For types that don't have converters from code, you can carefully build and return the output objects. For example, imagine that our function <code>Z30000</code> takes two string inputs: language code and text, and should return a {{Z|Z11}} object. You can do this in Python by using the <code>ZObject</code> constructor:
</div>
<syntaxhighlight lang="python3">
def Z30000(Z30000K1, Z30000K2):
lang_object = ZObject(
{"Z1K1": "Z9", "Z9K1": "Z60"},
Z60K1 = Z30000K1
)
return ZObject(
{"Z1K1": "Z9", "Z9K1": "Z11"},
Z11K1 = lang_object,
Z11K2 = Z30000K2
)
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
Or in JavaScript:
</div>
<syntaxhighlight lang="javascript">
function Z30000( Z30000K1, Z30000K2 ) {
const langObject = new ZObject(
new Map( [ [ "Z60K1", Z30000K1 ] ] ),
{ "Z1K1": "Z9", "Z9K1": "Z60" }
);
const monolingualKeys = new Map( [
[ "Z11K1", langObject ],
[ "Z11K2", Z30000K2 ]
] );
return new ZObject(
monolingualKeys,
{ "Z1K1": "Z9", "Z9K1": "Z11" }
);
}
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
You can learn more about the <code>ZObject</code> class and other useful constructors in {{ll|Wikifunctions:Execution_targets#Custom_and_non-built-in_type_conversion}}
</div>
{{phab|T392750}}<div lang="en" dir="ltr" class="mw-content-ltr">
As of 2026-05, trying to return a list of lists may fail, so you're not able to implement such functions in code.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Code in Python ===
</div>
<div class="mw-translate-fuzzy">
Далі ми надаємо конкретний приклад того, як створювати Реалізації у вигляді Коду на Python. Скажімо, ми хочемо створити реалізацію Функції, яка комбінує два рядки вводу вставивши між ними пробіл, і повертає результат цього. Давайте припустимо, що ZID такої функції Z11057.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The implementation is defined using the ZID of the function. So are the arguments of the function. So in the case of the function Z30000 with its two arguments, the function template should look like this:
</div>
<syntaxhighlight lang="python3">
def Z30000(Z30000K1, Z30000K2):
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
As we described before, we know that the arguments (<code>Z30000K1</code> and <code>Z30000K2</code>) are Strings, so we can treat them as simply as we use native strings in Python. Also, the function should return a String. For our example, we simply return the two arguments concatenated with a space in between:
</div>
<syntaxhighlight lang="python3">
def Z30000(Z30000K1, Z30000K2):
return Z30000K1 + " " + Z30000K2
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
Since this is Python, do not forget to indent this line.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If you have followed our advice to [[#Practice Test-Driven Development|practice TDD]], you will already have a set of tests that you know should work. If that's the case, while building your implementation you can click on the circular arrow in the Tests panel, and see if your implementation passes all of them.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Remember that the runtime has no state. Don’t assume values for global or static variables. If you have further questions about what you can and cannot do in Python, ask on [[Wikifunctions:Python implementations]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Code in JavaScript ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
In this section, we give a concrete example on how to create an implementation in the form of Code in JavaScript. Say we want to create an implementation for a Function which combines two input strings by putting a space between them, returning the result of that. Let’s assume the ZID of that function is <code>Z30000</code>.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The implementation is defined using the ZID of the function. So are the arguments of the function. So in the case of the function <code>Z30000</code> with its two arguments, the function template should look like this:
</div>
<syntaxhighlight lang="javascript">
function Z30000( Z30000K1, Z30000K2 ) {
}
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
We know that the arguments (<code>Z30000K1</code> and <code>Z30000K2</code>) are Strings, so we can treat them as native strings in JavaScript. Also, the function should return a String. To complete our function, you can then add a line concatenating the input strings, like this:
</div>
<syntaxhighlight lang="javascript">
function Z30000( Z30000K1, Z30000K2 ) {
return Z30000K1 + " " + Z30000K2;
}
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
If you have tests as recommended in the [[#Practice Test-Driven Development|TDD]] section above, click on the circular arrow in the Tests panel and see if your implementation passes all of them.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Remember that the runtime has no state. Don’t assume values for global or static variables. If you have further questions about what you can and cannot do in JavaScript, ask on [[Wikifunctions:JavaScript implementations]].
</div>
<span id="Compositions"></span>
<div class="mw-translate-fuzzy">
== Композиція ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
In this section, we give a concrete example on how to create an implementation in the form of a composition. Say we want to create an implementation for a Function which combines two input strings by putting a space between them, returning the result of that. Let’s assume the ZID of that function is <code>Z30000</code>.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
It is usually a good idea to first think about how to combine existing functions in order to create the desired output. Sometimes this might be trivial, and you can just go ahead with composing functions, but in many cases it is worthwhile to note the desired composition down.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For example, for the given Function, we could use the existing Function {{Z|Z10000}}. That Function takes two strings and makes one string out of them. But we need to add a space in between. So we first concatenate a space to the end of the first string, and then concatenate the second string to the result of that first concatenation. So our composition could be noted down like this:
</div>
<syntaxhighlight lang="prolog">
join_strings( join_strings( Z30000K1, " " ), Z30000K2 )
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
There are multiple ways to write a composition: notice that the same thing could be accomplished with:
</div>
<syntaxhighlight lang="prolog">
join_strings( Z30000K1, join_strings( " ", Z30000K2 ) )
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
An alternative implementation could also use the existing Function {{Z|Z15175}}, so your composition could be:
</div>
<syntaxhighlight lang="prolog">
join_with_separator( Z30000K1, Z30000K2, " " )
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
As you can see, there are multiple ways to accomplish this, so take your time and explore the existing functions available in the {{ll|Wikifunctions:Catalogue}}.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Let's try to create the second example, <code>join_strings(Z30000K1, join_strings(" ", Z30000K2))</code>.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
In order to create this:
</div>
# <span lang="en" dir="ltr" class="mw-content-ltr">Start adding an implementation by clicking on the "+" button in the "Implementations" table from your Function page.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Make sure that the option "composition" under "Implementation" is selected.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Click on the "›" icon or click the "Select Function" link to expand the function details.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Under "function" search for the name of the outermost function you want to use, which in this example is "join two strings". Then, select the wanted function from the dropdown list.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">You will see two new fields, one for each of the arguments needed for the selected function.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">For the first argument, we want to select the first input to our function:</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "first string", click on the "…" button and select "Argument reference".</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "key id" you can now select the first string of your function from the dropdown, which contains all available inputs.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">For the second argument, we want to use the result of another call to "join two strings":</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "second string", click on the "…" button and select "Function call".</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function", search and select the function you want to call, which is again "join two strings".</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">For this inner function call, configure the "first string" by simply typing a white space in the text field, and configure the "second string" as you did for step 6: change it using the "…" button to "Argument reference", and then select the second argument in the dropdown.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
Your composition is now complete!
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
You can expand and collapse the details using the chevron buttons to see how it looks. If you already have Tests as recommended in the [[#Practice Test-Driven Development|TDD]] section above, click on the circular arrow in the Tests panel and see if your implementation passes the tests. Once your composition passes the tests, go ahead and publish it.
</div>
[[File:Composition implementation expanded.png|frame|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">A Wikifunctions composition implementation in its expanded view</span>|<span lang="en" dir="ltr" class="mw-content-ltr">A Wikifunctions composition implementation in its expanded view</span>]]
[[File:Composition implementation collapsed.png|frame|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">A Wikifunctions composition implementation in its collapsed view</span>|<span lang="en" dir="ltr" class="mw-content-ltr">A Wikifunctions composition implementation in its collapsed view</span>]]
<div lang="en" dir="ltr" class="mw-content-ltr">
== Wikifunctions error handling ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
As a Wikifunctions function creator, you might want to warn the user calling your function when something goes wrong in the code, or when their inputs do not fit a certain criteria. For example, if your Function expects a string input to contain a name, you might want to check that the name is not empty and, if it is, show an error message that the person using your Function can understand.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For this purpose, you can use <code>Wikifunctions.Error()</code> from your code implementations or the function {{Z|Z851}} from your compositions.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
In this section you will learn:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">How to throw errors from both code and composition implementations,</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">how to write tests for error cases, and</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">how to catch and handle errors thrown by functions that you are using in your compositions.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Throwing errors from code implementations ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
When writing code, both from JavaScript and Python, you can use <code>Wikifunctions.Error()</code> to end the execution with a wanted error.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
<code>Wikifunctions.Error()</code> has two parameters:
</div>
# <span lang="en" dir="ltr" class="mw-content-ltr">Error type: a string containing the ZID of the error type you want to return.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Error arguments: a list of string arguments to build the error.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
Let's go one by one:
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Error type ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
An error type is an object that describes a kind of error that could happen in the system. There are a number of built-in error types but you can also build other error types that are more suited to your use case. When using errors, the best idea is to browse through the available error types, which can be explored in [[Special:ListObjectsByType/Z50|this list]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If there are no errors that fit your case, create a new one by going to the create page, and selecting "Error type" in the type selector. Then, set the necessary fields:
</div>
[[File:Error type.png|thumb|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Error type creation in Wikifunctions</span>|<span lang="en" dir="ltr" class="mw-content-ltr">To create new Error type (Z50), edit the label and add the necessary keys.</span>]]
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Label''' – This is the main title of the error, which should contain a short but descriptive message. Set the error label on the right-side box titled "About".</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Keys''' – Keys contain additional information about what caused the error. For example, if an input had the wrong format, you might want to inform the user of what was the input content when raising the error. To use them in your implementations, keys should be strings. To create a key, click on the "[+]" icon below "keys", select "String" under "value type", and add a label that describes it appropriately, for example "current input". Once you have all the necessary keys, you can Publish your error type and keep the ID of the newly created object.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Error arguments ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Error arguments correspond to the keys of the Error type, and they should provide additional information to understand the error. Error arguments should always be Strings.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Using Wikifunctions.Error() ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Say that you want an error to be thrown when either your first or your second input are empty. You have already created the error type, and the assigned ZID was <code>Z30005</code>. Your error type has two string keys:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">Input key: contains the key of the failing input</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Input value: contains the current value of the failing input</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
To raise an error in your JavaScript implementation you should do something like this:
</div>
<syntaxhighlight lang="javascript">
function Z30000( Z30000K1, Z30000K2 ) {
if ( trim( Z30000K1 ) === '' ) {
// If the first input is empty, raise error Z30005
// with two string args: [ first input key, first input value ]
Wikifunctions.Error( 'Z30005', [ "Z30000K1", Z30000K1 ] )
}
if ( trim( Z30000K2 ) === '' ) {
// If the second input is empty, raise error Z30005
// with two string args: [ second input key, second input value ]
Wikifunctions.Error( 'Z30005', [ "Z30000K2", Z30000K2 ] )
}
return Z30000K1 + " " + Z30000K2;
}
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
To raise an error in your Python implementation you should do something like this:
</div>
<syntaxhighlight lang="python3">
def Z30000(Z30000K1, Z30000K2):
if Z30000K1.strip() == "":
# If the first input is empty, raise error Z30005
# with two string args: [ first input key, first input value ]
Wikifunctions.Error("Z30005", ["Z30000K1", Z30000K1])
if Z30000K2.strip() == "":
# If the second input is empty, raise error Z30005
# with two string args: [ first input key, first input value ]
Wikifunctions.Error("Z30005", ["Z30000K2", Z30000K2])
return Z30000K1 + " " + Z30000K2
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
Remember that calling <code>Wikifunctions.Error()</code> ends the execution!
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Throwing errors from compositions ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If you are creating a composition implementation, you can throw an error by calling the special function {{Z|Z851}}.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Throw Error function (Z851) ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The {{Z|Z851}} function is similar to the <code>Wikifunctions.Error()</code> method and takes two arguments:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Error type''' – A reference to the Error type you want to raise</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Error parameters''' – A list with the arguments to create your Error, which should also be Strings.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Using Throw Error ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Say you want to modify your composition so that it first checks that the arguments are not empty, and raises an error when it finds an empty one. Then, if none of them are empty, it runs the original composition, which is:
</div>
<syntaxhighlight lang="prolog">
join_with_separator( Z30000K1, Z30000K2, " " )
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
To do this, you need to create conditional paths, for which you can use the {{Z|Z802}} function. Think of it like this:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">If the first argument is empty, throw an error for the first argument</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Else, proceed to check the second argument</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">If the second argument is empty, throw an error for the second argument</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Else, proceed with the success path and return the joint strings with the space separator</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
Or in functional pseudo code:
</div>
<syntaxhighlight lang="prolog">
if (
is_empty_string( Z30000K1 ),
throw_error( Z30005, [ "Z30000K1", Z30000K1 ] ),
if(
is_empty_string( Z30000K2 ),
throw_error( Z30005, [ "Z30000K2", Z30000K2 ] ),
join_with_separator( Z30000K1, Z30000K2, " " )
)
)
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
Let's create this step by step:
</div>
# <span lang="en" dir="ltr" class="mw-content-ltr">Start adding an implementation by clicking on the "+” button in the "Implementations" table from your Function page.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Make sure that the option "composition" under "Implementation" is selected.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Click on the "›” icon or click the "Select Function" link to expand the function details.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Under "function" search and select the outermost function you want to use, which in this case is "if".</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Check the validity of the first argument:</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "condition", click on the "…" button and select "function call"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function", search and select the function "is empty string"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "input", click on the "…" button and select "argument reference"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "key id", select the first input (e.g. "first string")</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">You can now collapse the "condition" function call if you want, by clicking on the down-chevron next to "condition". You should see something like "f(x) is empty string( → first string )"</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Throw error if the condition is true:</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "then", click on the "…" button and select "function call"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function", search and select the function "Throw Error"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "error type", search and select your error type (you can directly input the error ID if you know it, e.g. Z30005)</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "error parameters", add two items by clicking on the "+" button</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">For "Item 1" (offending argument key), set its type to "String" and write the argument identifier (e.g. "first input", or "Z30000K1")</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">For "Item 2" (offending argument value), click on the "…" next to "Item 2" and select "argument reference"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "key id", select the first input (e.g. "first string")</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">You can now collapse the "then" function call if you want, by clicking on the down-chevron next to "then". You should see something like "f(x) Throw Error( Input was the wrong format, Typed list( Object, "first input", → first string ) )"</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Continue to check the second argument if the first was good:</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "else", click on the "…" button and select "function call"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function", search and select the function "if"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Set up "condition" to check the validity of the second argument by following the same process as described in step 5.</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Set up "then" to throw an error for the second argument by following the same process as described in step 6.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Finally, set up the success path:</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to the nested "else", click on the "…" button and select "function call"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function", search and select the successful function, which in this case can be "join strings with separator"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "first string", click on the "…" button and set it to "argument reference", then select "first string"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "second string", click on the "…" button and set it to "argument reference", then select "second string"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "separator" add a space into the text field</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
The resulting function call should look like this:
</div>
[[File:Throw error expanded.png|frame|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Wikifunctions composition using Throw Error function</span>|<span lang="en" dir="ltr" class="mw-content-ltr">Wikifunctions composition using Throw Error function</span>]]
[[File:Throw error collapsed.png|frame|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Wikifunctions composition using Throw Error function, in its collapsed view</span>|<span lang="en" dir="ltr" class="mw-content-ltr">Wikifunctions composition using Throw Error function, in its collapsed view</span>]]
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Handling errors in compositions ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
While it is useful to allow functions to raise expected errors, it is crucial to be able to handle errors in your compositions in order to safely use these functions.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Say you want to create a new function "full name of a person" – we will refer to it with the ZID <code>Z30010</code>. This function should return the full name of a person given a first and last names, but if any of the two fields are empty, it should return the text "Unknown" instead.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
You could create a composition using our example function "Join two strings with a space" or <code>Z30000</code> to generate the name. If any of the inputs are empty, you know that <code>Z30000</code> will throw an error of type <code>Z30005</code>. Using the function {{Z|Z850}} as a wrapper, you can attempt the join operation and intercept a possible error to simply return "Unknown" whenever it occurs.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Try-Catch function (Z850) ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The {{Z|Z850}} function is built-in with ZID <code>Z850</code> and takes three arguments:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Function call''' – The initial function call to run. If nothing goes wrong, the response will be the result of this function call.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Error type''' – An error type to catch in case it is thrown during the execution of the first function call.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Error handler''' – A function call that will be run in case the error specified above is caught during the execution of the initial function call. If that happens, the result of the error handler will be the value returned.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Using Try-Catch ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Once we have all the functions for our composition, we can craft it like this:
</div>
<syntaxhighlight lang="prolog">
try_catch(
join_with_space( Z30010K1, Z30010K2 ),
Z30005,
echo( "Unknown" )
)
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
This means that:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">The "Join two strings with a space" function will be tried with the two inputs and, if everything goes well, the output of this function will be returned</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">If any of the inputs are blank, "Join two strings with a space" with raise an error of type <code>Z30005</code></span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Our {{Z|Z850}} will then detect this error and run the {{Z|Z801}} function to return "Unknown"</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
Let's create this step by step:
</div>
# <span lang="en" dir="ltr" class="mw-content-ltr">Start adding an implementation by clicking on the "+" button in the "Implementations" table from your Function page.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Make sure that the option "composition" under "Implementation" is selected.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Click on the "›” icon or click the "Select Function" link to expand the function details.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Under "function" search and select the outermost function you want to use, which in this case is "Try-Catch".</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Set the main function call:</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under the field where the "Try-Catch" function is selected, next to the "function call" key, click on the "…" button and select "function call"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function" search and select the function "join two strings with space"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "first string", click on the "…" button and select "argument reference", then select the "first name" argument from the dropdown.</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "second string", click on the "…" button and select "argument reference", then select the "second name" argument from the dropdown.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Select the error to catch:</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "error type", search and select "bad string input" – you can search directly by its ZID <code>Z30005</code></span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Set the error handler function call:</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "error handler", click on the "…" button and select "function call"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function", search and select the function "echo"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "input" and "type", search and select the type "String"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Now, under "input", type "Unknown" in the text field</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
The resulting function should look like this:
</div>
[[File:Try catch expanded.png|frame|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Wikifunctions composition using Try-catch function, in expanded mode</span>|<span lang="en" dir="ltr" class="mw-content-ltr">Wikifunctions composition using Try-catch function, in expanded mode</span>]]
[[File:Try catch collapsed.png|frame|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Wikifunctions composition using Try-catch function, in collapsed mode</span>|<span lang="en" dir="ltr" class="mw-content-ltr">Wikifunctions composition using Try-catch function, in collapsed mode</span>]]
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Testing your failure use cases ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
As we introduced in the above section about [[#Practice Test-Driven Development|practicing TDD]], it's important to test not only the most common paths, but also the possible edge cases. It is equally important to test failure behavior. In this section we will give you the tools necessary to test that your function fails with a given set of inputs, and that the error thrown is the expected one.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
To do that, you will need other two system functions:
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Is error type (Z852) ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The {{Z|Z852}} function is built-in with ZID <code>Z852</code> and takes two arguments:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Error''' – An {{Z|Z5}} object, which can be thrown by a failing call. An error instance has a type and a value.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Error type''' – A reference to an {{Z|Z50}} which will be compared to the type of the Error passed as a first argument. If that's the case, the function will return true.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Get error thrown by function call (Z853) ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The {{Z|Z853}} function is built-in with ZID <code>Z853</code> and takes one argument:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Function call''' – A function call which can either return a successful value of any type, or throw an error.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
This function returns a {{Z|Z882}} with a {{Z|Z40}} in first place and an {{Z|Z1}} in the second:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">If the Function call runs successfully and hence does not throw any error, the returned pair will contain False in the first place, and void in the second.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">If the Function call throws an error, the returned pair will contain True in the first place, and the caught error in the second.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
To use this function in your compositions, you might need to use the additional functions:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z821}}, and</span>
* {{Z|Z822}}
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Testing errors ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Say our target function, "Join two strings with a space" or <code>Z30000</code>, throws an error of type <code>Z30005</code> and we want to test this behavior. To do that we need to:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">Throw a failing function call</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Get the error using the function {{Z|Z853}}</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Check that the error is the right type with {{Z|Z852}}</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
Tests have two fields:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Call''' – A function call that will produce an output with the inputs you want to test. This call will return a value.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Result validation''' – A function call that will validate that the value returned by the call above is the expected one. The first argument of this function call will be automatically assigned to take the return value of the first call.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
For step-by-step instructions on how to create tests, see {{ll|Wikifunctions:Introduction#Create_tests}}.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
In our example, we can structure it like this — but this is not the only way!
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The call, which will return an {{Z|Z5}} object:
</div>
<syntaxhighlight lang="prolog">
error = get_second_element_of_typed_list(
get_error_thrown_by(
join_strings_by_whitespace( "", "not empty" )
)
)
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
And the result validation, which will take the {{Z|Z5}} object as its first argument:
</div>
<syntaxhighlight lang="prolog">
is_error_type( error, Z30005 )
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
Let's do this step by step:
</div>
# <span lang="en" dir="ltr" class="mw-content-ltr">Start adding a test by clicking on the "+" button in the "Tests" table from your Function page. The "call" and "result validation" fields already have some functions pre-set, but to test the errors we will need to change them.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">First, let's set the call:</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "call", click the "›" chevron button to expand the function call.</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function", edit the field and search and select the function "Get second element of a typed pair"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Once selected, next to "Typed pair", click on the "…" button and select "function call"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function", search and select the function "Get error thrown by function call"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "function call", click on the "…" button and select "function call"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function", search and select the function "Join two strings with a space" (or by ZID <code>Z30000</code>)</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Now set the inputs so that they cause a failure: at least one of them should be empty.</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">You can now collapse your "call" by clicking again on the down-chevron button if you want!</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Next, let's set the result validation:</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "result validation", click the "›" chevron button to expand the function call.</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function", edit the field and search and select the function "Is error type"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Now you will only be asked to configure the second argument. Under "error type", search and select your <code>Z30005</code> error type.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">And you are done! You can now click the circular arrow in the "Implementations" box and you should see green checks.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
If everything went right, you can now save your test. It should look like this:
</div>
[[File:Get error expanded.png|frame|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Testing a failure using Get error and Is error type functions, in expanded mode</span>|<span lang="en" dir="ltr" class="mw-content-ltr">Testing a failure using Get error and Is error type functions, in expanded mode</span>]]
[[File:Get error collapsed.png|frame|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Testing a failure using Get error and Is error type functions, in collapsed mode</span>|<span lang="en" dir="ltr" class="mw-content-ltr">Testing a failure using Get error and Is error type functions, in collapsed mode</span>]]
<div lang="en" dir="ltr" class="mw-content-ltr">
== Debugging your implementations ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Sometimes things can go wrong. A function might behave differently than expected or a value might not look quite right. Sometimes implementations are really complex and, because they are run in a sandboxed environment, it can seem really difficult to debug. To help understand what's going on inside a function call, Wikifunctions includes a small set of debugging tools.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
These tools don't change the result of a function, but will add extra information to the returned metadata, which you can observe after running the function. You can use <code>Wikifunctions.Debug()</code> from your code implementations or the function {{Z|Z854}} from your compositions.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
In this section you will learn:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">How to add debug messages from both code and composition implementations,</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">how to inspect the metadata manually or via the UI to inspect these logs.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Debugging your code implementations ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
When writing code, both from JavaScript and Python3, you can use <code>Wikifunctions.Debug()</code> to add a message to your debugging log and continue the execution.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
<code>Wikifunctions.Debug()</code> has one parameter, which is generally expected to be a string. However, any other object passed as parameter will get directly converted into a string.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If we want to add debug logs to our code implementations for our "Join two strings with a space" example function, we can do, in JavaScript:
</div>
<syntaxhighlight lang="JavaScript">
function Z30000( Z30000K1, Z30000K2 ) {
if ( trim( Z30000K1 ) === '' ) {
Wikifunctions.Debug( `first input is empty "${ Z30000K1 }"` );
Wikifunctions.Error( 'Z30005', [ "Z30000K1", Z30000K1 ] )
}
if ( trim( Z30000K2 ) === '' ) {
Wikifunctions.Debug( `second input is empty "${ Z30000K2 }"` );
Wikifunctions.Error( 'Z30005', [ "Z30000K2", Z30000K2 ] )
}
Wikifunctions.Debug( "both inputs are fine" );
return Z30000K1 + " " + Z30000K2;
}
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
And the same in your Python3 implementation will be:
</div>
<syntaxhighlight lang="python3">
def Z30000(Z30000K1, Z30000K2):
if Z30000K1.strip() == "":
Wikifunctions.Debug( 'first input is empty "'+Z30000K1+'"' )
Wikifunctions.Error("Z30005", ["Z30000K1", Z30000K1])
if Z30000K2.strip() == "":
Wikifunctions.Debug( 'second input is empty "'+Z30000K2+'"' )
Wikifunctions.Error("Z30005", ["Z30000K2", Z30000K2])
Wikifunctions.Debug( 'both inputs are fine' )
return Z30000K1 + " " + Z30000K2
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
This way, no matter what happens, we will be adding one message to your debugging logs:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">If the function call fails when checking on the first or second input, the result of the execution will be a failure, but it will contain one informative log about what branch caused the failure.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">If the function call succeeds—because both inputs are valid—the function call will return the joined string, but the returned metadata will also contain a debug log.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Debugging your compositions ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
To support debugging compositions, Wikifunctions provides the built-in function {{Z|Z854}}. This function allows you to attach debug messages to the execution of any function call that generates the final output. The debug logs collected during the evaluation are returned as part of the execution metadata, under the <code>executorDebugLogs</code> key.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Add debug log to function call (Z854) ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The {{Z|Z854}} function is built-in with ZID <code>Z854</code> and takes two arguments:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Function call''' – Any composition you want to execute.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Debug log''' – A string message that will be recorded if the given function call is evaluated.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
When the wrapped function call runs, the provided message is added to the execution logs. If that function call is not executed, or its execution is not part of the final output, its debug log will not appear in the final result metadata.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
You will benefit from this built-in if you want to observe:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">Which branch of a conditional was executed, or</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">the order of evaluation in a composition.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Using Add debug log to function call ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Say that you want to add debug logs to our example function "Join two strings with a space" or <code>Z30000</code>, so that different messages are added to the different possible outcomes. You could use our debugging builtin like this:
</div>
<syntaxhighlight lang="prolog">
if (
is_empty_string( Z30000K1 ),
add_debug_log( throw_error( Z30005, ... ), 'failed on first input' )
if(
is_empty_string( Z30000K2 ),
add_debug_log( throw_error( Z30005, ... ), 'failed on second input' ),
add_debug_log(
join_with_separator( Z30000K1, Z30000K2, " " ),
'both inputs are ok!'
)
)
)
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
This way,
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">when called with an empty first input, the function will return a failed response, and the metadata will contain an <code>executorDebugLogs</code> entry with the "failed on first input" log.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">When called with an empty second input, the call will also fail, but the logged message will be "failed on second input"</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">When called with valid inputs, the function will return a successful response, and additionally the metadata will contain "both inputs are ok" in its <code>executorDebugLogs</code> key.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
This is the way this composition would look:
</div>
[[File:Add debug log expanded.png|frame|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Composition implementation using Add debug logs to log all possible execution paths</span>|<span lang="en" dir="ltr" class="mw-content-ltr">Composition implementation using Add debug logs to log all possible execution paths</span>]]
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Accessing execution debug logs ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Whether your execution logs are added via <code>Wikifunctions.Debug()</code> or via the {{Z|Z854}} built-in function, they are returned as part of the response metadata. To see the logs, once you run your function, click on the "Details" button that appears at the bottom of the "Result" section.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The error and debug information will appear at the top of the "Details" dialog.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
This is what you would see when running the composition from our previous example with valid and invalid inputs:
</div>
{| class="wikitable"
| [[File:Execution logs success.png|frameless|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Function metadata dialog for a successful execution with debug logs</span>]]
| [[File:Execution logs failure.png|frameless|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Function metadata dialog for a failed execution with debug logs</span>]]
|-
| <span lang="en" dir="ltr" class="mw-content-ltr">Function metadata dialog for a successful execution: shows no errors, but displays the successful execution log: ''"both inputs are ok!"''</span>
| <span lang="en" dir="ltr" class="mw-content-ltr">Function metadata dialog for a failed execution: shows the error information, and the additional execution log for the first failure branch: ''"failed on first input"''</span>
|}
[[Category:How to create implementations| {{#translation:}}]]
l7iu4gv7ej5271ylf49j76lcchr0eq8
Wikifunctions:How to create implementations/ru
4
17562
296944
292796
2026-08-06T18:02:37Z
FuzzyBot
207
Updating to match new version of source page
296944
wikitext
text/x-wiki
<languages/>
<div lang="en" dir="ltr" class="mw-content-ltr">
This page provides a more detailed guide to '''creating implementations''', beyond the overview at {{ll|Wikifunctions:Introduction}}.
</div>
<span id="Types_of_Implementations"></span>
== Типы реализаций ==
<div lang="en" dir="ltr" class="mw-content-ltr">
In Wikifunctions, an '''implementation''' can take one of two main forms: '''code''' or '''composition'''. A code implementation directly expresses the function’s logic in any of the available programming languages (currently, Python3 or JavaScript). It’s most useful when the function’s behavior can’t easily be built from existing Wikifunctions, or when precise control over data processing is needed.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
A composition implementation, on the other hand, defines the function entirely by combining other existing functions, without writing code. Compositions are easier to understand, reuse, and translate into other languages automatically, but they depend on suitable building blocks already being available and often are less performant. In general, start by checking whether your goal can be achieved through composition; if it can’t, or if performance or fine-grained logic matters, choose a code implementation instead.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
There's a third type of implementation: '''built-ins'''. These are run by system-built code, and are not editable. Most likely all pre-defined functions will have a built-in implementation. In such cases, when opening the implementation page, you will see a message stating ''"{{int|wikilambda-implementation-selector-none}}"''
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Practice Test-Driven Development ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
'''Test-Driven Development''', or '''TDD''', is a way of creating software where you write tests before you write the actual code. Tests are just a way of understanding what your function is supposed to do by listing examples and how they should work.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
In Wikifunctions, writing tests first offers significant benefits. If you are working on an implementation, you can run your code against the existing tests to check that it behaves as expected. This makes it easier to catch errors early before even publishing your implementation. Tests are also a powerful way to describe the function you need. By writing tests, '''you clearly communicate the expected behavior''', and the community can step in and help with the implementation, or create alternative implementations.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Imagine you want to implement a Function that combines two strings with a space in between. A basic test for this might look like:
</div>
<syntaxhighlight lang="prolog">
join_with_space( "Hello", "world" ) => "Hello world"
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
Once you have defined the basic behavior, it's important to '''think about edge cases'''—situations where the inputs are such that you might need some special behavior.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For example, what if your first string ends in a space, or your second string starts with a space? Should the function keep all existing spaces and add another one, or should it return a neatly spaced result with just a single space between the words?
Depending on your requirements, you should build a test for such a case. For example, a test for this edge case could be either one of these — but not both!:
</div>
<syntaxhighlight lang="prolog">
join_with_space( "Hello ", " world") => "Hello world"
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
or ...
</div>
<syntaxhighlight lang="prolog">
join_with_space( "Hello ", " world") => "Hello world"
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
Make sure that all possible special cases are covered by your tests, and once you have them, make sure that they are all connected to the Function by selecting them and clicking "Connect".
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Code implementations ==
</div>
[[File:Code implementation.png|thumb|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Wikifunctions code editor initialized with a function template</span>|<span lang="en" dir="ltr" class="mw-content-ltr">When adding a new code implementation, the function template is initialized with the function and argument names</span>]]
<div lang="en" dir="ltr" class="mw-content-ltr">
When creating an implementation using code, the Wikifunctions UI will set up a code editor with the selected language activated for syntax highlighting and validation. When the function to implement and the programming language are selected, this editor will be set with the correct function template: '''do not remove or edit this'''! Keep your code inside this function signature: if you need auxiliary functions, you can simply declare them inside your top-level function declaration.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Using input types in your code ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Wikifunctions types {{Z|Z6}} and {{Z|Z40}} can be used as if they were native types in both JavaScript and Python3. For example, a String input can be concatenated or a Boolean be directly used in a logical expression. To use other types in your code implementations, you will have to look deeper into the type, figure out if it has a conversion to a native equivalent, and treat it accordingly.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For example, let's say we want to write some Python code that handles an input of type {{Z|Z20420}}. In the page for this type, let's look at its "type converters to code" and search for a Python one. The converter {{Z|Z20424}} will be applied to our date input before our code, so looking at "native type" we know that our input will be a Python ''dict'' and looking at the implementation we can see the keys we can expect:
</div>
<syntaxhighlight lang="python3">
return {
'K1': year,
'K2': month,
'K3': day
}
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
When a type doesn't have a converter, you'll have to access its parts directly using its keys. For example, let's assume that your function <code>Z30000</code> has one input <code>Z30000K1</code> of type {{Z|Z11}}. This type has two keys: <code>Z11K1</code> for the language (itself an object of type {{Z|Z60}}), and <code>Z11K2</code> for the string value. Similarly, the language object has a key <code>Z60K1</code> for the language code. So, to get a string with the language code and the text, you can write:
</div>
<syntaxhighlight lang="javascript">
function Z30000( Z30000K1 ) {
// e.g. "en: some text"
return Z30000K1.Z11K1.Z60K1 + ": " + Z30000K1.Z11K2;
}
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
For a quick reference of the available type conversions visit [[Special:MyLanguage/Wikifunctions:Execution targets#Default type conversion|the default type conversion table]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Returning the right outputs ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Similarly to the way you treat inputs, outputs need to match the type specified in the function definition. Some can be treated as simply as native types, so any string output will be converted into a Wikifunctions {{Z|Z6}} object and any native boolean returned by your implementation will be converted into a Wikifunctions {{Z|Z40}} object.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Those types that have "type converters from code" will apply the appropriate function to the output, in order to build the required type. Following the example of {{Z|Z20420}}, the {{Z|Z20443}} will transform the output from your implementation–a dict with K1, K2 and K3 keys–into its correct ZObject representation.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For types that don't have converters from code, you can carefully build and return the output objects. For example, imagine that our function <code>Z30000</code> takes two string inputs: language code and text, and should return a {{Z|Z11}} object. You can do this in Python by using the <code>ZObject</code> constructor:
</div>
<syntaxhighlight lang="python3">
def Z30000(Z30000K1, Z30000K2):
lang_object = ZObject(
{"Z1K1": "Z9", "Z9K1": "Z60"},
Z60K1 = Z30000K1
)
return ZObject(
{"Z1K1": "Z9", "Z9K1": "Z11"},
Z11K1 = lang_object,
Z11K2 = Z30000K2
)
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
Or in JavaScript:
</div>
<syntaxhighlight lang="javascript">
function Z30000( Z30000K1, Z30000K2 ) {
const langObject = new ZObject(
new Map( [ [ "Z60K1", Z30000K1 ] ] ),
{ "Z1K1": "Z9", "Z9K1": "Z60" }
);
const monolingualKeys = new Map( [
[ "Z11K1", langObject ],
[ "Z11K2", Z30000K2 ]
] );
return new ZObject(
monolingualKeys,
{ "Z1K1": "Z9", "Z9K1": "Z11" }
);
}
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
You can learn more about the <code>ZObject</code> class and other useful constructors in {{ll|Wikifunctions:Execution_targets#Custom_and_non-built-in_type_conversion}}
</div>
{{phab|T392750}}<div lang="en" dir="ltr" class="mw-content-ltr">
As of 2026-05, trying to return a list of lists may fail, so you're not able to implement such functions in code.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Code in Python ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
In this section, we give a concrete example on how to create an implementation in the form of Code in Python. Say we want to create an implementation for a Function which combines two input strings by putting a space between them, returning the result of that. Let’s assume the ZID of that function is Z30000.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The implementation is defined using the ZID of the function. So are the arguments of the function. So in the case of the function Z30000 with its two arguments, the function template should look like this:
</div>
<syntaxhighlight lang="python3">
def Z30000(Z30000K1, Z30000K2):
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
As we described before, we know that the arguments (<code>Z30000K1</code> and <code>Z30000K2</code>) are Strings, so we can treat them as simply as we use native strings in Python. Also, the function should return a String. For our example, we simply return the two arguments concatenated with a space in between:
</div>
<syntaxhighlight lang="python3">
def Z30000(Z30000K1, Z30000K2):
return Z30000K1 + " " + Z30000K2
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
Since this is Python, do not forget to indent this line.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If you have followed our advice to [[#Practice Test-Driven Development|practice TDD]], you will already have a set of tests that you know should work. If that's the case, while building your implementation you can click on the circular arrow in the Tests panel, and see if your implementation passes all of them.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Remember that the runtime has no state. Don’t assume values for global or static variables. If you have further questions about what you can and cannot do in Python, ask on [[Wikifunctions:Python implementations]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Code in JavaScript ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
In this section, we give a concrete example on how to create an implementation in the form of Code in JavaScript. Say we want to create an implementation for a Function which combines two input strings by putting a space between them, returning the result of that. Let’s assume the ZID of that function is <code>Z30000</code>.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The implementation is defined using the ZID of the function. So are the arguments of the function. So in the case of the function <code>Z30000</code> with its two arguments, the function template should look like this:
</div>
<syntaxhighlight lang="javascript">
function Z30000( Z30000K1, Z30000K2 ) {
}
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
We know that the arguments (<code>Z30000K1</code> and <code>Z30000K2</code>) are Strings, so we can treat them as native strings in JavaScript. Also, the function should return a String. To complete our function, you can then add a line concatenating the input strings, like this:
</div>
<syntaxhighlight lang="javascript">
function Z30000( Z30000K1, Z30000K2 ) {
return Z30000K1 + " " + Z30000K2;
}
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
If you have tests as recommended in the [[#Practice Test-Driven Development|TDD]] section above, click on the circular arrow in the Tests panel and see if your implementation passes all of them.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Remember that the runtime has no state. Don’t assume values for global or static variables. If you have further questions about what you can and cannot do in JavaScript, ask on [[Wikifunctions:JavaScript implementations]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Compositions ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
In this section, we give a concrete example on how to create an implementation in the form of a composition. Say we want to create an implementation for a Function which combines two input strings by putting a space between them, returning the result of that. Let’s assume the ZID of that function is <code>Z30000</code>.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
It is usually a good idea to first think about how to combine existing functions in order to create the desired output. Sometimes this might be trivial, and you can just go ahead with composing functions, but in many cases it is worthwhile to note the desired composition down.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For example, for the given Function, we could use the existing Function {{Z|Z10000}}. That Function takes two strings and makes one string out of them. But we need to add a space in between. So we first concatenate a space to the end of the first string, and then concatenate the second string to the result of that first concatenation. So our composition could be noted down like this:
</div>
<syntaxhighlight lang="prolog">
join_strings( join_strings( Z30000K1, " " ), Z30000K2 )
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
There are multiple ways to write a composition: notice that the same thing could be accomplished with:
</div>
<syntaxhighlight lang="prolog">
join_strings( Z30000K1, join_strings( " ", Z30000K2 ) )
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
An alternative implementation could also use the existing Function {{Z|Z15175}}, so your composition could be:
</div>
<syntaxhighlight lang="prolog">
join_with_separator( Z30000K1, Z30000K2, " " )
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
As you can see, there are multiple ways to accomplish this, so take your time and explore the existing functions available in the {{ll|Wikifunctions:Catalogue}}.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Let's try to create the second example, <code>join_strings(Z30000K1, join_strings(" ", Z30000K2))</code>.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
In order to create this:
</div>
# <span lang="en" dir="ltr" class="mw-content-ltr">Start adding an implementation by clicking on the "+" button in the "Implementations" table from your Function page.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Make sure that the option "composition" under "Implementation" is selected.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Click on the "›" icon or click the "Select Function" link to expand the function details.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Under "function" search for the name of the outermost function you want to use, which in this example is "join two strings". Then, select the wanted function from the dropdown list.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">You will see two new fields, one for each of the arguments needed for the selected function.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">For the first argument, we want to select the first input to our function:</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "first string", click on the "…" button and select "Argument reference".</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "key id" you can now select the first string of your function from the dropdown, which contains all available inputs.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">For the second argument, we want to use the result of another call to "join two strings":</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "second string", click on the "…" button and select "Function call".</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function", search and select the function you want to call, which is again "join two strings".</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">For this inner function call, configure the "first string" by simply typing a white space in the text field, and configure the "second string" as you did for step 6: change it using the "…" button to "Argument reference", and then select the second argument in the dropdown.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
Your composition is now complete!
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
You can expand and collapse the details using the chevron buttons to see how it looks. If you already have Tests as recommended in the [[#Practice Test-Driven Development|TDD]] section above, click on the circular arrow in the Tests panel and see if your implementation passes the tests. Once your composition passes the tests, go ahead and publish it.
</div>
[[File:Composition implementation expanded.png|frame|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">A Wikifunctions composition implementation in its expanded view</span>|<span lang="en" dir="ltr" class="mw-content-ltr">A Wikifunctions composition implementation in its expanded view</span>]]
[[File:Composition implementation collapsed.png|frame|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">A Wikifunctions composition implementation in its collapsed view</span>|<span lang="en" dir="ltr" class="mw-content-ltr">A Wikifunctions composition implementation in its collapsed view</span>]]
<div lang="en" dir="ltr" class="mw-content-ltr">
== Wikifunctions error handling ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
As a Wikifunctions function creator, you might want to warn the user calling your function when something goes wrong in the code, or when their inputs do not fit a certain criteria. For example, if your Function expects a string input to contain a name, you might want to check that the name is not empty and, if it is, show an error message that the person using your Function can understand.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For this purpose, you can use <code>Wikifunctions.Error()</code> from your code implementations or the function {{Z|Z851}} from your compositions.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
In this section you will learn:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">How to throw errors from both code and composition implementations,</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">how to write tests for error cases, and</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">how to catch and handle errors thrown by functions that you are using in your compositions.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Throwing errors from code implementations ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
When writing code, both from JavaScript and Python, you can use <code>Wikifunctions.Error()</code> to end the execution with a wanted error.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
<code>Wikifunctions.Error()</code> has two parameters:
</div>
# <span lang="en" dir="ltr" class="mw-content-ltr">Error type: a string containing the ZID of the error type you want to return.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Error arguments: a list of string arguments to build the error.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
Let's go one by one:
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Error type ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
An error type is an object that describes a kind of error that could happen in the system. There are a number of built-in error types but you can also build other error types that are more suited to your use case. When using errors, the best idea is to browse through the available error types, which can be explored in [[Special:ListObjectsByType/Z50|this list]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If there are no errors that fit your case, create a new one by going to the create page, and selecting "Error type" in the type selector. Then, set the necessary fields:
</div>
[[File:Error type.png|thumb|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Error type creation in Wikifunctions</span>|<span lang="en" dir="ltr" class="mw-content-ltr">To create new Error type (Z50), edit the label and add the necessary keys.</span>]]
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Label''' – This is the main title of the error, which should contain a short but descriptive message. Set the error label on the right-side box titled "About".</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Keys''' – Keys contain additional information about what caused the error. For example, if an input had the wrong format, you might want to inform the user of what was the input content when raising the error. To use them in your implementations, keys should be strings. To create a key, click on the "[+]" icon below "keys", select "String" under "value type", and add a label that describes it appropriately, for example "current input". Once you have all the necessary keys, you can Publish your error type and keep the ID of the newly created object.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Error arguments ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Error arguments correspond to the keys of the Error type, and they should provide additional information to understand the error. Error arguments should always be Strings.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Using Wikifunctions.Error() ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Say that you want an error to be thrown when either your first or your second input are empty. You have already created the error type, and the assigned ZID was <code>Z30005</code>. Your error type has two string keys:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">Input key: contains the key of the failing input</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Input value: contains the current value of the failing input</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
To raise an error in your JavaScript implementation you should do something like this:
</div>
<syntaxhighlight lang="javascript">
function Z30000( Z30000K1, Z30000K2 ) {
if ( trim( Z30000K1 ) === '' ) {
// If the first input is empty, raise error Z30005
// with two string args: [ first input key, first input value ]
Wikifunctions.Error( 'Z30005', [ "Z30000K1", Z30000K1 ] )
}
if ( trim( Z30000K2 ) === '' ) {
// If the second input is empty, raise error Z30005
// with two string args: [ second input key, second input value ]
Wikifunctions.Error( 'Z30005', [ "Z30000K2", Z30000K2 ] )
}
return Z30000K1 + " " + Z30000K2;
}
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
To raise an error in your Python implementation you should do something like this:
</div>
<syntaxhighlight lang="python3">
def Z30000(Z30000K1, Z30000K2):
if Z30000K1.strip() == "":
# If the first input is empty, raise error Z30005
# with two string args: [ first input key, first input value ]
Wikifunctions.Error("Z30005", ["Z30000K1", Z30000K1])
if Z30000K2.strip() == "":
# If the second input is empty, raise error Z30005
# with two string args: [ first input key, first input value ]
Wikifunctions.Error("Z30005", ["Z30000K2", Z30000K2])
return Z30000K1 + " " + Z30000K2
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
Remember that calling <code>Wikifunctions.Error()</code> ends the execution!
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Throwing errors from compositions ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If you are creating a composition implementation, you can throw an error by calling the special function {{Z|Z851}}.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Throw Error function (Z851) ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The {{Z|Z851}} function is similar to the <code>Wikifunctions.Error()</code> method and takes two arguments:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Error type''' – A reference to the Error type you want to raise</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Error parameters''' – A list with the arguments to create your Error, which should also be Strings.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Using Throw Error ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Say you want to modify your composition so that it first checks that the arguments are not empty, and raises an error when it finds an empty one. Then, if none of them are empty, it runs the original composition, which is:
</div>
<syntaxhighlight lang="prolog">
join_with_separator( Z30000K1, Z30000K2, " " )
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
To do this, you need to create conditional paths, for which you can use the {{Z|Z802}} function. Think of it like this:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">If the first argument is empty, throw an error for the first argument</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Else, proceed to check the second argument</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">If the second argument is empty, throw an error for the second argument</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Else, proceed with the success path and return the joint strings with the space separator</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
Or in functional pseudo code:
</div>
<syntaxhighlight lang="prolog">
if (
is_empty_string( Z30000K1 ),
throw_error( Z30005, [ "Z30000K1", Z30000K1 ] ),
if(
is_empty_string( Z30000K2 ),
throw_error( Z30005, [ "Z30000K2", Z30000K2 ] ),
join_with_separator( Z30000K1, Z30000K2, " " )
)
)
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
Let's create this step by step:
</div>
# <span lang="en" dir="ltr" class="mw-content-ltr">Start adding an implementation by clicking on the "+” button in the "Implementations" table from your Function page.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Make sure that the option "composition" under "Implementation" is selected.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Click on the "›” icon or click the "Select Function" link to expand the function details.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Under "function" search and select the outermost function you want to use, which in this case is "if".</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Check the validity of the first argument:</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "condition", click on the "…" button and select "function call"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function", search and select the function "is empty string"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "input", click on the "…" button and select "argument reference"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "key id", select the first input (e.g. "first string")</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">You can now collapse the "condition" function call if you want, by clicking on the down-chevron next to "condition". You should see something like "f(x) is empty string( → first string )"</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Throw error if the condition is true:</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "then", click on the "…" button and select "function call"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function", search and select the function "Throw Error"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "error type", search and select your error type (you can directly input the error ID if you know it, e.g. Z30005)</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "error parameters", add two items by clicking on the "+" button</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">For "Item 1" (offending argument key), set its type to "String" and write the argument identifier (e.g. "first input", or "Z30000K1")</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">For "Item 2" (offending argument value), click on the "…" next to "Item 2" and select "argument reference"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "key id", select the first input (e.g. "first string")</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">You can now collapse the "then" function call if you want, by clicking on the down-chevron next to "then". You should see something like "f(x) Throw Error( Input was the wrong format, Typed list( Object, "first input", → first string ) )"</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Continue to check the second argument if the first was good:</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "else", click on the "…" button and select "function call"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function", search and select the function "if"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Set up "condition" to check the validity of the second argument by following the same process as described in step 5.</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Set up "then" to throw an error for the second argument by following the same process as described in step 6.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Finally, set up the success path:</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to the nested "else", click on the "…" button and select "function call"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function", search and select the successful function, which in this case can be "join strings with separator"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "first string", click on the "…" button and set it to "argument reference", then select "first string"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "second string", click on the "…" button and set it to "argument reference", then select "second string"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "separator" add a space into the text field</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
The resulting function call should look like this:
</div>
[[File:Throw error expanded.png|frame|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Wikifunctions composition using Throw Error function</span>|<span lang="en" dir="ltr" class="mw-content-ltr">Wikifunctions composition using Throw Error function</span>]]
[[File:Throw error collapsed.png|frame|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Wikifunctions composition using Throw Error function, in its collapsed view</span>|<span lang="en" dir="ltr" class="mw-content-ltr">Wikifunctions composition using Throw Error function, in its collapsed view</span>]]
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Handling errors in compositions ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
While it is useful to allow functions to raise expected errors, it is crucial to be able to handle errors in your compositions in order to safely use these functions.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Say you want to create a new function "full name of a person" – we will refer to it with the ZID <code>Z30010</code>. This function should return the full name of a person given a first and last names, but if any of the two fields are empty, it should return the text "Unknown" instead.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
You could create a composition using our example function "Join two strings with a space" or <code>Z30000</code> to generate the name. If any of the inputs are empty, you know that <code>Z30000</code> will throw an error of type <code>Z30005</code>. Using the function {{Z|Z850}} as a wrapper, you can attempt the join operation and intercept a possible error to simply return "Unknown" whenever it occurs.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Try-Catch function (Z850) ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The {{Z|Z850}} function is built-in with ZID <code>Z850</code> and takes three arguments:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Function call''' – The initial function call to run. If nothing goes wrong, the response will be the result of this function call.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Error type''' – An error type to catch in case it is thrown during the execution of the first function call.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Error handler''' – A function call that will be run in case the error specified above is caught during the execution of the initial function call. If that happens, the result of the error handler will be the value returned.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Using Try-Catch ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Once we have all the functions for our composition, we can craft it like this:
</div>
<syntaxhighlight lang="prolog">
try_catch(
join_with_space( Z30010K1, Z30010K2 ),
Z30005,
echo( "Unknown" )
)
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
This means that:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">The "Join two strings with a space" function will be tried with the two inputs and, if everything goes well, the output of this function will be returned</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">If any of the inputs are blank, "Join two strings with a space" with raise an error of type <code>Z30005</code></span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Our {{Z|Z850}} will then detect this error and run the {{Z|Z801}} function to return "Unknown"</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
Let's create this step by step:
</div>
# <span lang="en" dir="ltr" class="mw-content-ltr">Start adding an implementation by clicking on the "+" button in the "Implementations" table from your Function page.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Make sure that the option "composition" under "Implementation" is selected.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Click on the "›” icon or click the "Select Function" link to expand the function details.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Under "function" search and select the outermost function you want to use, which in this case is "Try-Catch".</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Set the main function call:</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under the field where the "Try-Catch" function is selected, next to the "function call" key, click on the "…" button and select "function call"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function" search and select the function "join two strings with space"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "first string", click on the "…" button and select "argument reference", then select the "first name" argument from the dropdown.</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "second string", click on the "…" button and select "argument reference", then select the "second name" argument from the dropdown.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Select the error to catch:</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "error type", search and select "bad string input" – you can search directly by its ZID <code>Z30005</code></span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Set the error handler function call:</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "error handler", click on the "…" button and select "function call"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function", search and select the function "echo"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "input" and "type", search and select the type "String"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Now, under "input", type "Unknown" in the text field</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
The resulting function should look like this:
</div>
[[File:Try catch expanded.png|frame|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Wikifunctions composition using Try-catch function, in expanded mode</span>|<span lang="en" dir="ltr" class="mw-content-ltr">Wikifunctions composition using Try-catch function, in expanded mode</span>]]
[[File:Try catch collapsed.png|frame|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Wikifunctions composition using Try-catch function, in collapsed mode</span>|<span lang="en" dir="ltr" class="mw-content-ltr">Wikifunctions composition using Try-catch function, in collapsed mode</span>]]
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Testing your failure use cases ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
As we introduced in the above section about [[#Practice Test-Driven Development|practicing TDD]], it's important to test not only the most common paths, but also the possible edge cases. It is equally important to test failure behavior. In this section we will give you the tools necessary to test that your function fails with a given set of inputs, and that the error thrown is the expected one.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
To do that, you will need other two system functions:
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Is error type (Z852) ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The {{Z|Z852}} function is built-in with ZID <code>Z852</code> and takes two arguments:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Error''' – An {{Z|Z5}} object, which can be thrown by a failing call. An error instance has a type and a value.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Error type''' – A reference to an {{Z|Z50}} which will be compared to the type of the Error passed as a first argument. If that's the case, the function will return true.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Get error thrown by function call (Z853) ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The {{Z|Z853}} function is built-in with ZID <code>Z853</code> and takes one argument:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Function call''' – A function call which can either return a successful value of any type, or throw an error.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
This function returns a {{Z|Z882}} with a {{Z|Z40}} in first place and an {{Z|Z1}} in the second:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">If the Function call runs successfully and hence does not throw any error, the returned pair will contain False in the first place, and void in the second.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">If the Function call throws an error, the returned pair will contain True in the first place, and the caught error in the second.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
To use this function in your compositions, you might need to use the additional functions:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z821}}, and</span>
* {{Z|Z822}}
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Testing errors ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Say our target function, "Join two strings with a space" or <code>Z30000</code>, throws an error of type <code>Z30005</code> and we want to test this behavior. To do that we need to:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">Throw a failing function call</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Get the error using the function {{Z|Z853}}</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Check that the error is the right type with {{Z|Z852}}</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
Tests have two fields:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Call''' – A function call that will produce an output with the inputs you want to test. This call will return a value.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Result validation''' – A function call that will validate that the value returned by the call above is the expected one. The first argument of this function call will be automatically assigned to take the return value of the first call.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
For step-by-step instructions on how to create tests, see {{ll|Wikifunctions:Introduction#Create_tests}}.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
In our example, we can structure it like this — but this is not the only way!
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The call, which will return an {{Z|Z5}} object:
</div>
<syntaxhighlight lang="prolog">
error = get_second_element_of_typed_list(
get_error_thrown_by(
join_strings_by_whitespace( "", "not empty" )
)
)
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
And the result validation, which will take the {{Z|Z5}} object as its first argument:
</div>
<syntaxhighlight lang="prolog">
is_error_type( error, Z30005 )
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
Let's do this step by step:
</div>
# <span lang="en" dir="ltr" class="mw-content-ltr">Start adding a test by clicking on the "+" button in the "Tests" table from your Function page. The "call" and "result validation" fields already have some functions pre-set, but to test the errors we will need to change them.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">First, let's set the call:</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "call", click the "›" chevron button to expand the function call.</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function", edit the field and search and select the function "Get second element of a typed pair"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Once selected, next to "Typed pair", click on the "…" button and select "function call"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function", search and select the function "Get error thrown by function call"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "function call", click on the "…" button and select "function call"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function", search and select the function "Join two strings with a space" (or by ZID <code>Z30000</code>)</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Now set the inputs so that they cause a failure: at least one of them should be empty.</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">You can now collapse your "call" by clicking again on the down-chevron button if you want!</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Next, let's set the result validation:</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "result validation", click the "›" chevron button to expand the function call.</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function", edit the field and search and select the function "Is error type"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Now you will only be asked to configure the second argument. Under "error type", search and select your <code>Z30005</code> error type.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">And you are done! You can now click the circular arrow in the "Implementations" box and you should see green checks.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
If everything went right, you can now save your test. It should look like this:
</div>
[[File:Get error expanded.png|frame|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Testing a failure using Get error and Is error type functions, in expanded mode</span>|<span lang="en" dir="ltr" class="mw-content-ltr">Testing a failure using Get error and Is error type functions, in expanded mode</span>]]
[[File:Get error collapsed.png|frame|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Testing a failure using Get error and Is error type functions, in collapsed mode</span>|<span lang="en" dir="ltr" class="mw-content-ltr">Testing a failure using Get error and Is error type functions, in collapsed mode</span>]]
<div lang="en" dir="ltr" class="mw-content-ltr">
== Debugging your implementations ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Sometimes things can go wrong. A function might behave differently than expected or a value might not look quite right. Sometimes implementations are really complex and, because they are run in a sandboxed environment, it can seem really difficult to debug. To help understand what's going on inside a function call, Wikifunctions includes a small set of debugging tools.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
These tools don't change the result of a function, but will add extra information to the returned metadata, which you can observe after running the function. You can use <code>Wikifunctions.Debug()</code> from your code implementations or the function {{Z|Z854}} from your compositions.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
In this section you will learn:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">How to add debug messages from both code and composition implementations,</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">how to inspect the metadata manually or via the UI to inspect these logs.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Debugging your code implementations ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
When writing code, both from JavaScript and Python3, you can use <code>Wikifunctions.Debug()</code> to add a message to your debugging log and continue the execution.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
<code>Wikifunctions.Debug()</code> has one parameter, which is generally expected to be a string. However, any other object passed as parameter will get directly converted into a string.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If we want to add debug logs to our code implementations for our "Join two strings with a space" example function, we can do, in JavaScript:
</div>
<syntaxhighlight lang="JavaScript">
function Z30000( Z30000K1, Z30000K2 ) {
if ( trim( Z30000K1 ) === '' ) {
Wikifunctions.Debug( `first input is empty "${ Z30000K1 }"` );
Wikifunctions.Error( 'Z30005', [ "Z30000K1", Z30000K1 ] )
}
if ( trim( Z30000K2 ) === '' ) {
Wikifunctions.Debug( `second input is empty "${ Z30000K2 }"` );
Wikifunctions.Error( 'Z30005', [ "Z30000K2", Z30000K2 ] )
}
Wikifunctions.Debug( "both inputs are fine" );
return Z30000K1 + " " + Z30000K2;
}
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
And the same in your Python3 implementation will be:
</div>
<syntaxhighlight lang="python3">
def Z30000(Z30000K1, Z30000K2):
if Z30000K1.strip() == "":
Wikifunctions.Debug( 'first input is empty "'+Z30000K1+'"' )
Wikifunctions.Error("Z30005", ["Z30000K1", Z30000K1])
if Z30000K2.strip() == "":
Wikifunctions.Debug( 'second input is empty "'+Z30000K2+'"' )
Wikifunctions.Error("Z30005", ["Z30000K2", Z30000K2])
Wikifunctions.Debug( 'both inputs are fine' )
return Z30000K1 + " " + Z30000K2
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
This way, no matter what happens, we will be adding one message to your debugging logs:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">If the function call fails when checking on the first or second input, the result of the execution will be a failure, but it will contain one informative log about what branch caused the failure.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">If the function call succeeds—because both inputs are valid—the function call will return the joined string, but the returned metadata will also contain a debug log.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Debugging your compositions ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
To support debugging compositions, Wikifunctions provides the built-in function {{Z|Z854}}. This function allows you to attach debug messages to the execution of any function call that generates the final output. The debug logs collected during the evaluation are returned as part of the execution metadata, under the <code>executorDebugLogs</code> key.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Add debug log to function call (Z854) ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The {{Z|Z854}} function is built-in with ZID <code>Z854</code> and takes two arguments:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Function call''' – Any composition you want to execute.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Debug log''' – A string message that will be recorded if the given function call is evaluated.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
When the wrapped function call runs, the provided message is added to the execution logs. If that function call is not executed, or its execution is not part of the final output, its debug log will not appear in the final result metadata.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
You will benefit from this built-in if you want to observe:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">Which branch of a conditional was executed, or</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">the order of evaluation in a composition.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Using Add debug log to function call ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Say that you want to add debug logs to our example function "Join two strings with a space" or <code>Z30000</code>, so that different messages are added to the different possible outcomes. You could use our debugging builtin like this:
</div>
<syntaxhighlight lang="prolog">
if (
is_empty_string( Z30000K1 ),
add_debug_log( throw_error( Z30005, ... ), 'failed on first input' )
if(
is_empty_string( Z30000K2 ),
add_debug_log( throw_error( Z30005, ... ), 'failed on second input' ),
add_debug_log(
join_with_separator( Z30000K1, Z30000K2, " " ),
'both inputs are ok!'
)
)
)
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
This way,
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">when called with an empty first input, the function will return a failed response, and the metadata will contain an <code>executorDebugLogs</code> entry with the "failed on first input" log.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">When called with an empty second input, the call will also fail, but the logged message will be "failed on second input"</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">When called with valid inputs, the function will return a successful response, and additionally the metadata will contain "both inputs are ok" in its <code>executorDebugLogs</code> key.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
This is the way this composition would look:
</div>
[[File:Add debug log expanded.png|frame|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Composition implementation using Add debug logs to log all possible execution paths</span>|<span lang="en" dir="ltr" class="mw-content-ltr">Composition implementation using Add debug logs to log all possible execution paths</span>]]
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Accessing execution debug logs ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Whether your execution logs are added via <code>Wikifunctions.Debug()</code> or via the {{Z|Z854}} built-in function, they are returned as part of the response metadata. To see the logs, once you run your function, click on the "Details" button that appears at the bottom of the "Result" section.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The error and debug information will appear at the top of the "Details" dialog.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
This is what you would see when running the composition from our previous example with valid and invalid inputs:
</div>
{| class="wikitable"
| [[File:Execution logs success.png|frameless|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Function metadata dialog for a successful execution with debug logs</span>]]
| [[File:Execution logs failure.png|frameless|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Function metadata dialog for a failed execution with debug logs</span>]]
|-
| <span lang="en" dir="ltr" class="mw-content-ltr">Function metadata dialog for a successful execution: shows no errors, but displays the successful execution log: ''"both inputs are ok!"''</span>
| <span lang="en" dir="ltr" class="mw-content-ltr">Function metadata dialog for a failed execution: shows the error information, and the additional execution log for the first failure branch: ''"failed on first input"''</span>
|}
[[Category:How to create implementations| {{#translation:}}]]
hcnquq5c2v6tbdfsf8nx2brmiikdvbq
Wikifunctions:Report a technical problem/es
4
18347
296959
279538
2026-08-06T18:03:07Z
FuzzyBot
207
Updating to match new version of source page
296959
wikitext
text/x-wiki
<languages/>
{{shortcut|[[WF:BUG]]}}
{{see also
|Special:MyLanguage/WF:Status|l1=WF:Status
|Special:MyLanguage/WF:Feature_petitions|l2=WF:Feature petitions
}}
<div lang="en" dir="ltr" class="mw-content-ltr">
If you have found a bug in Wikifunctions, or you have a feature request for Wikifunctions, please let us know!
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Scope ==
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Bug''' - a problem that is producing incorrect or unexpected results on Wikifunctions. Note that problems within Functions themselves are not considered as a bug in this context.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Feature request''' - an idea that the development team can add to Wikifunctions to make it even more awesome.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
Do you need help with something else?
</div>
: <span lang="en" dir="ltr" class="mw-content-ltr">The following are '''out of scope''' of the work of the Wikifunctions development team:</span>
:* <span lang="en" dir="ltr" class="mw-content-ltr">The '''content of individual Functions''' – Discuss those on the talkpage of the Function itself, or ask for help at [[Wikifunctions:Project chat]] or in the channels listed below; if you think a function is missing, see [[Wikifunctions:Suggest a function]]</span>
:* <span lang="en" dir="ltr" class="mw-content-ltr">The '''Wikifunctions project's policies''' – Ask about those at [[Wikifunctions:Project chat]] or in the channels listed below</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Find existing bugs and feature requests ==
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">See '''[[Wikifunctions:Status]]''' for a quick summary of high-level issues.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">You can '''[[phab:maniphest/query/UzvNRqsdnymk/|search the Phabricator]] listing of open tasks''' to see if your bug or feature idea is already documented.</span>
<span id="Discuss_with_others"></span>
== Discuta con otros ==
<div lang="en" dir="ltr" class="mw-content-ltr">
You can ask questions about possible bugs or feature ideas at a few locations. This may be helpful if you are unsure how to clearly describe the bug or feature idea:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">The discussion page [[Wikifunctions:Project chat|here]].</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">The main chat on [https://t.me/Wikifunctions Telegram] or IRC {{channel|wikipedia-abstract}} (bridged together) ([https://wm-bot.wmcloud.org/logs/%23wikipedia-abstract/ logs], [https://wm-bot.wmflabs.org/logs/%23wikipedia-abstract/ old logs])</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">The developer chat on [https://t.me/abstract_wikipedia_tech Telegram] or IRC {{channel|wikipedia-abstract-tech}} (bridged together) ([https://wm-bot.wmcloud.org/logs/%23wikipedia-abstract-tech/ logs])</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
== File a task in Phabricator ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If you are familiar with Phabricator, you can search and file tasks directly.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If you are not yet familiar: Phabricator is the web-based development collaboration tool mostly used to manage MediaWiki software projects including Wikifunctions. A short summary about Phabricator for newcomers, including tutorial videos, is on MediaWiki's wiki at [[mw:Special:MyLanguage/Phabricator/Help|mw:Phabricator/Help]].
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">You can '''[[phab:maniphest/query/UzvNRqsdnymk/|search]] the listing of open tasks''' to see if your bug or feature idea is already documented.</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">The existing tasks are collected with the '''[[phab:tag/abstract wikipedia team|#abstract wikipedia team]] tag'''.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">You can '''[https://phabricator.wikimedia.org/maniphest/task/edit/form/43/?projects=abstract_wikipedia file a new task]'''. Please always include:</span>
** Ejemplos
** <span lang="en" dir="ltr" class="mw-content-ltr">Any relevant links</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">For bugs: The exact steps that produced the bug, so that the team can reproduce and diagnose it.</span>
<span id="Languages"></span>
== Idiomas ==
<div lang="en" dir="ltr" class="mw-content-ltr">
The development team understands a limited number of languages – but you are free to report issues in any language that you're comfortable with.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If possible, please provide a summary in English when creating a phabricator task, or ask someone to help you.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Follow-up ==
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">The locations above are followed by the Wikifunctions development team, as well as community members. The time to get a reply varies depending on the nature or complexity of the topic, etc. However, in general, you can get an answer within 2 workdays. Please let us know if we missed something, as life can get distracting!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Not all problems can be solved immediately: depending on the impact, priority, etc. some bugs can be triaged to low priority. You may follow the status of your report on the relevant linked phabricator task.</span>
[[Category:Report a technical problem{{#translation:}}]]
59w9qacwnx44ub9eu90a3kuw3e8kvrj
Wikifunctions:Report a technical problem/uk
4
19252
296977
279556
2026-08-06T18:03:14Z
FuzzyBot
207
Updating to match new version of source page
296977
wikitext
text/x-wiki
<languages/>
{{shortcut|[[WF:BUG]]}}
{{see also
|Special:MyLanguage/WF:Status|l1=WF:Status
|Special:MyLanguage/WF:Feature_petitions|l2=WF:Feature petitions
}}
Якщо ви знайшли помилку у Вікіфункціях або у вас є пропозиція щодо можливостей Вікіфункцій, повідомте нам про них!
<span id="Scope"></span>
== Тематика ==
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Bug''' - a problem that is producing incorrect or unexpected results on Wikifunctions. Note that problems within Functions themselves are not considered as a bug in this context.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Feature request''' - an idea that the development team can add to Wikifunctions to make it even more awesome.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
Do you need help with something else?
</div>
: <span lang="en" dir="ltr" class="mw-content-ltr">The following are '''out of scope''' of the work of the Wikifunctions development team:</span>
:* <span lang="en" dir="ltr" class="mw-content-ltr">The '''content of individual Functions''' – Discuss those on the talkpage of the Function itself, or ask for help at [[Wikifunctions:Project chat]] or in the channels listed below; if you think a function is missing, see [[Wikifunctions:Suggest a function]]</span>
:* <span lang="en" dir="ltr" class="mw-content-ltr">The '''Wikifunctions project's policies''' – Ask about those at [[Wikifunctions:Project chat]] or in the channels listed below</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Find existing bugs and feature requests ==
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">See '''[[Wikifunctions:Status]]''' for a quick summary of high-level issues.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">You can '''[[phab:maniphest/query/UzvNRqsdnymk/|search the Phabricator]] listing of open tasks''' to see if your bug or feature idea is already documented.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Discuss with others ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
You can ask questions about possible bugs or feature ideas at a few locations. This may be helpful if you are unsure how to clearly describe the bug or feature idea:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">The discussion page [[Wikifunctions:Project chat|here]].</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">The main chat on [https://t.me/Wikifunctions Telegram] or IRC {{channel|wikipedia-abstract}} (bridged together) ([https://wm-bot.wmcloud.org/logs/%23wikipedia-abstract/ logs], [https://wm-bot.wmflabs.org/logs/%23wikipedia-abstract/ old logs])</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">The developer chat on [https://t.me/abstract_wikipedia_tech Telegram] or IRC {{channel|wikipedia-abstract-tech}} (bridged together) ([https://wm-bot.wmcloud.org/logs/%23wikipedia-abstract-tech/ logs])</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
== File a task in Phabricator ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If you are familiar with Phabricator, you can search and file tasks directly.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If you are not yet familiar: Phabricator is the web-based development collaboration tool mostly used to manage MediaWiki software projects including Wikifunctions. A short summary about Phabricator for newcomers, including tutorial videos, is on MediaWiki's wiki at [[mw:Special:MyLanguage/Phabricator/Help|mw:Phabricator/Help]].
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">You can '''[[phab:maniphest/query/UzvNRqsdnymk/|search]] the listing of open tasks''' to see if your bug or feature idea is already documented.</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">The existing tasks are collected with the '''[[phab:tag/abstract wikipedia team|#abstract wikipedia team]] tag'''.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">You can '''[https://phabricator.wikimedia.org/maniphest/task/edit/form/43/?projects=abstract_wikipedia file a new task]'''. Please always include:</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">Examples</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">Any relevant links</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">For bugs: The exact steps that produced the bug, so that the team can reproduce and diagnose it.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Languages ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The development team understands a limited number of languages – but you are free to report issues in any language that you're comfortable with.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If possible, please provide a summary in English when creating a phabricator task, or ask someone to help you.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Follow-up ==
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">The locations above are followed by the Wikifunctions development team, as well as community members. The time to get a reply varies depending on the nature or complexity of the topic, etc. However, in general, you can get an answer within 2 workdays. Please let us know if we missed something, as life can get distracting!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Not all problems can be solved immediately: depending on the impact, priority, etc. some bugs can be triaged to low priority. You may follow the status of your report on the relevant linked phabricator task.</span>
[[Category:Report a technical problem{{#translation:}}]]
ba2n9hryqmhr0rfsccl9o4n10t5xgim
User talk:Amire80
3
19475
297164
294483
2026-08-07T07:17:42Z
HenkvD
1290
/* Request for implementation */ new section
297164
wikitext
text/x-wiki
{{Welcome/lang|user=Amire80|welcominguser=Envlh|1=[[User:Envlh|Envlh]] ([[User talk:Envlh|talk]]) 08:50, 23 December 2023 (UTC)}}
== Notice of expiration of your translationadmin right ==
<div dir="ltr">Hi, as part of [[:m:Global reminder bot|Global reminder bot]], this is an automated reminder to let you know that your permission "translationadmin" (Translation administrators) will expire on 2025-12-30 00:54:35. Please renew this right if you would like to continue using it. <i>In other languages: [[:m:Global reminder bot/Messages/default|click here]]</i> [[User:Leaderbot|Leaderbot]] ([[User talk:Leaderbot|talk]]) 19:41, 23 December 2024 (UTC)</div>
== Deletion of translation pages ==
Hello! Can you tell me why you deleted some translation pages? I just put the content into google translate and it seems fine to me. Thanks! [[User:Feeglgeef|Feeglgeef]] ([[User talk:Feeglgeef|talk]]) 05:22, 3 January 2025 (UTC)
:It ''looks'' fine if you check it with machine translation, but it's not actually fine. It's a nasty, weird, and unfortunately common kind of vandalism. See [[:m:Steward_requests/Global/2024-w51#Global_lock_for_Nabulsi_Trima]]. [[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 13:09, 3 January 2025 (UTC)
::Alright. Thank you! [[User:Feeglgeef|Feeglgeef]] ([[User talk:Feeglgeef|talk]]) 17:12, 3 January 2025 (UTC)
== Upcoming expiry of your translationadmin right ==
Hi, this is an automated reminder as part of [[metawiki:Global reminder bot|Global reminder bot]] to let you know that your permission "translationadmin" (Translation administrators) will expire on 04:16, 31 December 2026 (UTC). For most rights, you will need to renew at [[Wikifunctions:Requests for user groups]], unless you have been told otherwise when your right was approved. (To opt out of user right expiry notifications, add yourself to [[m:Global reminder bot/Exclusion]].) [[User:Leaderbot|Leaderbot]] ([[User talk:Leaderbot|talk]]) 19:41, 28 December 2025 (UTC)
== Hebrew functions ==
Amire80, I saw you created [[User:Amire80/Hebrew Fragments]] during Wikimania session. I also see that you already had created a function {{Z|Z32160}}. That function produce output like פריז היא בירה של צרפת. (which google translates to "Paris is the capital of France." That seems quite OK to me. I connected the test and the implementation. As this might not be 100% OK yet I (temporarily) removed it from {{Z|Z28020}}. Contact if you need further assistance. [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 14:20, 28 July 2026 (UTC)
:Thanks.
:The sentence "פריז היא בירה של צרפת" happens to be correct, but the function [[Z32160]] is very incomplete, as I noted on [[Talk:Z32160|its talk page]]. I don't have the Wikifunctions skills or the time to implement the rest of it, although I can talk for hours about Hebrew grammar to someone who wants to try to write that code. I also don't mind if someone just deletes it.
:The page [[User:Amire80/Hebrew Fragments]] is also incomplete. I do plan to complete it just for fun, but I do have to note that the example sentences there are heavily biased towards English (and perhaps Dagbani) and don't really represent all the needs of Hebrew or many other languages. [[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 15:16, 28 July 2026 (UTC)
== Request for implementation ==
Hi Amire80. I think you know how to write functions in Python. Can you help with this function [[Talk:Z38960]] to be used in {{Z|Z37827}}? [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 07:17, 7 August 2026 (UTC)
8wczi1sqj9m934vh2cv17vr7bh2k91m
Wikifunctions:FAQ/nl
4
19760
296923
247412
2026-08-06T18:02:01Z
FuzzyBot
207
Updating to match new version of source page
296923
wikitext
text/x-wiki
<languages/>
{{shortcut|[[WF:FAQ]]}}
Dit is een pagina toegewijd aan de veelgestelde vragen over Wikifuncties. Alstublieft, voel u vrij om uw eigen vragen in de [[Wikifunctions talk:FAQ|overlegpagina]] te stellen, indien uw vragen hier niet zijn vermeld!
Bekijk ook onze [[:m:Special:MyLanguage/Abstract Wikipedia/FAQ|veelgestelde vragen op Meta]] met betrekking tot meer algemene vragen over Wikifuncties en Abstract Wikipedia.
__TOC__
<span id="Introduction"></span>
== Introductie ==
<span id="What_is_this_project_about?"></span>
=== Waar gaat dit project over? ===
Wikifuncties is een nieuw Wikimedia-project dat een catalogus biedt van allerlei functies die iedereen kan oproepen, schrijven, onderhouden en gebruiken. Het biedt ook de onderliggende technologie die uiteindelijk de vertaling van taalonafhankelijke artikelen van Abstract Wikipedia in de taal van elke Wikipedia mogelijk maakt. Zo kan iedereen artikelen in hun voorkeurstaal bijdragen en lezen.
<span id="What_is_a_function?"></span>
== Wat is een functie? ==
Functies zijn een vorm van kennis die vragen kan beantwoorden, zoals hoeveel dagen er zijn verstreken tussen twee data of de afstand tussen twee steden. Gecompliceerde functies kunnen meer ingewikkelde vragen beantwoorden, zoals het volume van een driedimensionale vorm, de afstand tussen Mars en Venus op een bepaalde datum, of de vraag of twee soorten tegelijkertijd leefden.
We gebruiken functies in veel soorten kennisverzoeken, zoals het stellen van een vraag aan een zoekmachine. De sjablonen, zoals [[:w:en:Template:Convert|Template:Convert]] en [[:w:en:Template:Age|Template:Age]] op de Engelstalige Wikipedia, zijn ook voorbeelden van functies die al in veel Wikipedia's worden gebruikt, in wikitekst en Lua zijn geschreven en handmatig naar elke wiki gekopieerd zijn waar die nodig is.
<span id="What_is_an_implementation?"></span>
== Wat is een implementatie? ==
Een implementatie is een bepaalde manier om een functie uit te voeren. Een implementatie is een recept dat de stappen vermeldt die nodig zijn om de functie uit te voeren. Het kan een stukje code zijn in een programmeertaal of een combinatie van andere functies. Een functie kan veel implementaties hebben, die allemaal gelijkwaardig moeten zijn.
<span id="What_is_a_test?"></span>
=== Wat is een test? ===
Een test is een manier om te bepalen of een bepaalde functie het juiste doet. Een functie zal meestal meerdere testers hebben, die elk een bepaalde invoer aan de functie en de uitvoersvoorwaarden specificeren.
Bijvoorbeeld, testen voor een functie "title case" kunnen omvatten: “<span dir="ltr" lang="en">abc</span>” moet “<span dir="ltr" lang="en">Abc</span>” worden; “<span dir="ltr" lang="en">war and peace</span>” moet “<span dir="ltr" lang="en">War and Peace</span>” worden; “<span dir="ltr" lang="ru">война и мир</span>” moet “<span dir="ltr" lang="ru">Война и мир</span>” worden; en “<span dir="ltr" lang="en">123</span>” moet “<span dir="ltr" lang="en">123</span>” blijven.
<span id="Which_features_are_available_now,_which_will_be_soon_available,_and_which_are_further_away?"></span>
=== Welke mogelijkheden zijn nu beschikbaar, welke zijn straks beschikbaar, en welke komen later? ===
* Bij de lancering:
** We hebben de mogelijkheid om functies te hebben die werken met tekenreeksen en booleans.
** Wikifuncties zullen vanaf het begin volledig internationaal worden. Het kan in elke taal worden gebruikt.
* [[Wikifunctions:Status|Huidige ontwikkeling]]:
** Generieke typen en generieke functies worden niet volledig ondersteund.
** Het toevoegen van typen zal vooralsnog iets zijn dat beperkt is tot het ontwikkelaarsteam. In de toekomst zal de gemeenschap zelf meer soorten kunnen toevoegen. Er is nog veel werk te doen om de typen zich soepeler te laten gedragen.
*** Een bijzonder interessant type is binaire gegevens en met name bestanden.
** We ondersteunen momenteel twee programmeertalen voor implementaties: JavaScript en Python. In de toekomst willen we nog veel meer ondersteunen.
** Nu i het ''niet'' mogelijk om andere functies op te roepen van implementaties die in een programmeertaal zijn geschreven. Dit is nu alleen mogelijk door middel van compositie.
* In de toekomst:
** Het zal mogelijk zijn om Wikifuncties-functies uit andere Wikimedia-projecten aan te roepen en hun resultaten te integreren in de uitvoer van de pagina.
** Het zal mogelijk zijn om gegevens uit Wikidata te gebruiken bij functies.
** Het zal mogelijk zijn om gegevenssets te roepen uit de Data-naamruimte op Commons.
<span id="How_is_Wikifunctions_multilingual?"></span>
=== Hoe is Wikifuncties meertalig? ===
{{main|Special:MyLanguage/Help:Multilingual}}
Wikifuncties en Abstract Wikipedia zijn meertalig op verschillende manieren die elkaar niet beïnvloeden:
* '''Wikifuncties is meertalig op basis van zijn inhoud en gebruikersinterface.''' Gebruikers kunnen functies op Wikifuncties in iedere natuurlijke taal lezen en roepen. Hier staat de “tekenreeks samenvoegen” functie in [https://www.wikifunctions.org/view/en/Z10000 Engels], [https://www.wikifunctions.org/view/pl/Z10000 Pools], en [https://www.wikifunctions.org/view/he/Z10000 Hebreeuws], en het is beschikbaar in veel meer talen.
* '''Bijdragers kunnen Wikifuncties met hun eigen talen bewerken en verbeteren.''' Ook kunnen implementaties in de natuurlijke taal van de bijdrager worden bewerkt. Bijvoorbeeld de samenvoeging van de “en” functie kan bewerkt zijn in [https://www.wikifunctions.org/wiki/Z11223?action=edit&uselang=de Duits], [https://www.wikifunctions.org/wiki/Z11223?action=edit&uselang=en Engels] of een andere uit ongeveer 300 talen.
* '''Wikifuncties functies kunnen worden gebruikt om resultaten voor iedere natuurlijke taal te maken.''' De gemeenschap is bezig met het creëren van een aantal functies om de tekstgeneratie in veel natuurlijke talen te ondersteunen. We hebben functies voor [[Wikifunctions:Catalogue#Breton|het Bretons]], [[Wikifunctions:Catalogue#Rohingya|het Rohingya]], [[Wikifunctions:Catalogue#English|het Engels]] en veel andere talen.
* '''Functies in Wikifuncties kunnen in verschillende programmeertalen worden geïmplementeerd.''' Bijvoorbeeld de [[Z10000|samenvoegen-functie]] is geïmplementeerd in zowel [[Z10005|JavaScript]] als [[Z10004|Python]].
<span id="Which_programming_languages_does_Wikifunctions_currently_support?_Which_programming_languages_will_be_supported_in_the_future?"></span>
=== Welke programmeertalen zijn momenteel door Wikifuncties ondersteund? Welke programmeertalen worden in de toekomst ondersteund? ===
{{main|WF:programming languages}}
Momenteel ondersteunt Wikifuncties implementaties die zijn geschreven in JavaScript en Python. We willen in de toekomst meer programmeertalen ondersteunen. We hopen in 2025 nog minstens één andere programmeertaal toe te voegen (maar dat hebben we nog niet besloten).
<span id="How_will_Wikifunctions_be_integrated_into_other_projects?"></span>
=== Hoe wordt Wikifuncties geïntegreerd in andere projecten? ===
Wikifuncties is de eerste stap naar het bouwen van Abstract Wikipedia. Onze focus op de korte termijn zal het ondersteunen van de gemeenschap zijn en het verbeteren op basis van feedback. Tegelijkertijd zullen we beginnen met het proces om het te integreren met Wikipedia en Wikidata, wat bredere toepassingen in het echte leven mogelijk maakt en ons dichter bij de visie van Abstract Wikipedia brengt.
Bijdragers zullen functies op de Wikifuncties-site vanuit hun wiki's kunnen oproepen. Het resultaat van de functie-aanroep wordt voor de lezers van de wiki weergegeven. Dit kan bijvoorbeeld worden gebruikt om de leeftijd van een persoon, de bevolkingsdichtheid op basis van bevolking- en oppervlaktegegevens van Wikidata berekenen, of om een grafiek te tekenen en te integreren in een bepaald artikel.
Een andere optie om Wikifuncties te integreren is om een interactieve functieoproep-interface binnen hun wiki te integreren. Dit kan bijvoorbeeld worden gebruikt in een Wikipedia-artikel om het resultaat van een natuurkundige vergelijking dynamisch te berekenen op basis van door de lezer verstrekte parameters en te interageren met wiskundige functies, enz.
<span id="What_Wikifunctions_is_not"></span>
=== Wat Wikifuncties niet is ===
Alstublieft zie [[Special:MyLanguage/Wikifunctions:What Wikifunctions is not|Wikifuncties:Wat Wikifuncties niet is]] voor meer informatie daarvoor.
<span id="What_license_will_the_functions_and_derived_content_be_under?"></span>
=== Onder welke licentie zullen de functies en afgeleide inhoud beschikbaar zijn? ===
Op basis van de discussie die [[:m:Special:MyLanguage/Abstract Wikipedia/Licensing discussion|op Meta tussen november en december 2021]] plaatsvond, zullen alle bijdragen aan Wikifuncties en de bredere Abstract Wikipedia-projecten onder vrije licenties worden gepubliceerd. In het bijzonder:
* [[Special:MyLanguage/Wikifunctions:Glossary#Content|Tekstuele inhoud]] op Wikifuncties zal worden gepubliceerd onder [[w:nl:Creative Commons-licentie|CC BY-SA 4.0]].
* [[Special:MyLanguage/Wikifunctions:Glossary#Function|Functiehandtekeningen]] en andere gestructureerde inhoud op Wikifuncties zullen worden gepubliceerd onder [[w:nl:CC0|CC 0]].
* [[Special:MyLanguage/Wikifunctions:Glossary#Implementation|Code-implementaties]] in Wikifuncties zullen worden gepubliceerd onder de [[w:nl:Apache-licentie|Apache 2-licentie]].
* [[Special:MyLanguage/Wikifunctions:Glossary#Content|Abstracte inhoud]] voor Abstract Wikipedia wordt gepubliceerd onder CC BY-SA 4.0.
Er zijn nog punten die in de toekomst moeten worden aangepakt, zoals de licentie van de gegenereerde inhoud van de abstracte inhoud. We zijn van plan om samen met de juridische afdeling een uitgebreider document op te stellen over hoe mensen de code van Wikifuncties zo pijnloos mogelijk kunnen hergebruiken, terwijl ze zich aan de licentie houden.
<span id="Contributing"></span>
== Bijdragen ==
<span id="I'm_new_here._What_is_there_for_me_to_do_and_how_can_I_help?"></span>
=== Ik ben nieuw hier. Wat is er voor mij te doen en hoe kan ik helpen? ===
Welkom! We zijn erg blij dat u hier bent! Er zijn veel mogelijkheden om bij te dragen aan Wikifuncties, van het creëren van nieuwe functies tot het verbeteren en vertalen van de documentatie. Als u op zoek bent naar manieren om betrokken te raken, raden wij u aan, afhankelijk van uw niveau van comfort, om een nieuwe functie voor te stellen over een onderwerp waarin u interesse heeft. Of zelfs die functie aanmaken. U kunt helpen met vertalingen. U kunt onze documentatie lezen en verbeteren. U kunt helpen met het organiseren van de gemeenschap.
<span id="How_do_I_create_a_new_function,_implementation,_or_test?"></span>
=== Hoe creëer ik een nieuwe functie, implementatie of test? ===
Om te zien hoe u een nieuwe functie, implementatie, of test kunt aanmaken, ga naar [[Special:MyLanguage/Wikifunctions:Introduction|de introductie]].
Om meer gedetailleerd te zien hoe u een implementatie maakt, zie [[Special:MyLanguage/Wikifunctions:How to create implementations|Implementaties maken]].
<span id="What_should_I_edit_first?"></span>
=== Wat moet ik eerst bewerken? ===
Als u meerdere talen beheerst dan kunt u op pagina [[Special:ListMissingLabels]] functies zoeken die nog geen labels en beschrijvingen in uw talen hebben en deze helpen toe te voegen.
Als u interesse heeft in een onderwerp dat functies in Wikifuncties zou kunnen bevatten, maar dat nog niet kunt, of als u meer ideeën voor functies hebt, kunt u naar de pagina gaan om [[Wikifunctions:Suggest a new function|nieuwe functies voor te stellen]] en uw ideeën presenteren.
Als u programmeur bent van JavaScript of Python wilt u misschien functies controleren die nog geen implementaties hebben in JavaScript of Python en die proberen te schrijven.
<span id="Where_can_I_go_for_help?"></span>
=== Waar kan ik hulp krijgen? ===
Uw eerste stop zou het [[Special:MyLanguage/Help:Contents|Hulpportaal]] moeten zijn, waar u alle documentatie kunt vinden met betrekking tot het gebruik en bewerken van Wikifuncties. Als u nog steeds niet verder kunt, dan kunt u een bericht op [[Wikifunctions:Project chat|Projectchat]] plaatsen, iemand zal uw vraag dan beantwoorden.
<span id="How_do_we_sort_or_categorize_functions?"></span>
=== Hoe sorteren of categoriseren wij functies? ===
{{Tracked|T285424}}
Voorlopig is het het beste om handmatig door [[Special:MyLanguage/Wikifunctions:Catalogue|pagina's in de namespace Wikifuncties]] te bladeren. Een andere optie zou zijn via de overlegpagina van de gegeven functie. Wij zullen deze inspanningen volgen en met de gemeenschap bespreken welke wijzigingen in het systeem voor deze taak nuttig zouden zijn.
<div lang="en" dir="ltr" class="mw-content-ltr">
=== How can I setup the software locally to hack on it? ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
See [[Special:MyLanguage/Wikifunctions:Hacking on the evaluator and orchestrator|Hacking on the evaluator and orchestrator]].
</div>
[[Category:FAQ| {{#translation:}}]]
7ufp2g94k6yh9o26zcxsvq2s4jjwrfc
Wikifunctions:FAQ/pl
4
19835
296926
265384
2026-08-06T18:02:02Z
FuzzyBot
207
Updating to match new version of source page
296926
wikitext
text/x-wiki
<languages/>
{{shortcut|[[WF:FAQ]]}}
To jest strona poświęcona często zadawanym pytaniom na temat Wikifunkcji. Możesz zadać własne pytanie na [[Wikifunctions talk:FAQ|stronie dyskusji]], jeśli twojego pytania nie ma na liście!
<div lang="en" dir="ltr" class="mw-content-ltr">
Also, please consider our [[:m:Special:MyLanguage/Abstract Wikipedia/FAQ|FAQ on Meta]] regarding more general questions about Wikifunctions and Abstract Wikipedia.
</div>
__TOC__
<span id="Introduction"></span>
== Wprowadzenie ==
<span id="What_is_this_project_about?"></span>
=== O co chodzi w tym projekcie? ===
<div lang="en" dir="ltr" class="mw-content-ltr">
Wikifunctions is a new Wikimedia project that provides a catalog of all kinds of functions that anyone can call, write, maintain, and use. It also provides the underlying technology that will eventually enable the translation of language-independent articles from Abstract Wikipedia into the language of any Wikipedia. This will allow everyone to contribute and read articles in their preferred languages.
</div>
<span id="What_is_a_function?"></span>
=== Co to jest funkcja? ===
Funkcje to forma wiedzy, która może odpowiedzieć na pytania, takie jak ile dni minęło między dwiema datami lub odległość między dwiema miastami. Bardziej złożone funkcje mogą odpowiedzieć na bardziej skomplikowane pytania, takie jak objętość trójwymiarowego kształtu, odległość między Marsem a Wenus w określonym dniu lub czy dwa gatunki żyły w tym samym czasie.
<div lang="en" dir="ltr" class="mw-content-ltr">
We already use functions in many types of knowledge inquiries, such as asking a question to a search engine. The templates, such as [[:w:en:Template:Convert|Template:Convert]] and [[:w:en:Template:Age|Template:Age]] on English Wikipedia, are also examples of functions that are already used in many Wikipedias, written in wikitext and Lua and manually copied to each wiki where they're wanted.
</div>
<span id="What_is_an_implementation?"></span>
=== Co to jest implementacja? ===
Implementacja to szczególny sposób wykonania funkcji. Implementacja to przepis zawierający listę kroków niezbędnych do uruchomienia funkcji. Może to być fragment kodu w języku programowania lub kombinacja wywołań innych funkcji. Funkcja może mieć wiele implementacji i wszystkie powinny być równoważne.
<span id="What_is_a_test?"></span>
=== Czym jest test? ===
<div lang="en" dir="ltr" class="mw-content-ltr">
A test is a way to determine if a given function is doing the right thing. A function will typically have multiple testers, each specifying some input to the function and the conditions the output for the given input must fulfill.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For example, testers for a “title case” function might include: “<span dir="ltr" lang="en">abc</span>” should become “<span dir="ltr" lang="en">Abc</span>”; “<span dir="ltr" lang="en">war and peace</span>” should become “<span dir="ltr" lang="en">War and Peace</span>”; “<span dir="ltr" lang="ru">война и мир</span>” should become “<span dir="ltr" lang="ru">Война и мир</span>”; and “<span dir="ltr" lang="en">123</span>” should remain “<span dir="ltr" lang="en">123</span>”.
</div>
<span id="Which_features_are_available_now,_which_will_be_soon_available,_and_which_are_further_away?"></span>
=== Jaka funkcjonalność jest już dostępna, jaka będzie wkrótce, a jaka później? ===
* <span lang="en" dir="ltr" class="mw-content-ltr">At launch:</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">We have the ability to have functions that work with Strings and Booleans.</span>
** Wikifunkcje będą od początku w pełni umiędzynarodowione. Można ich używać w dowolnym języku.
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Wikifunctions:Status|Ongoing development]]:</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">Generic types and generic functions are not fully supported.</span>
** <span class="mw-translate-fuzzy">Dodawanie typów będzie na razie czymś ograniczonym dla zespołu programistów. W przyszłości społeczność będzie mogła samodzielnie dodawać więcej typów. Czeka nas dużo pracy, aby typy zachowywały się bardziej gładko.</span>
*** Szczególnie interesującym typem będą dane binarne, a zwłaszcza pliki.
** Obecnie obsługujemy dwa języki programowania dla implementacji: JavaScript i Python. W przyszłości chcemy obsługiwać ich znacznie więcej.
** Obecnie ''nie'' jest możliwe wywoływanie innych funkcji z implementacji napisanych w jakimkolwiek języku programowania. Takie coś możliwe jest jedynie przy użyciu złożeń.
* W przyszłości:
** Będzie możliwe wywoływanie funkcji Wikifunkcji z innych projektów Wikimedia i integrowanie ich wyników z wynikowymi stronami.
** W funkcjach będzie można używać danych z Wikidanych.
** <span lang="en" dir="ltr" class="mw-content-ltr">It will be possible to call data sets from Commons Data namespace.</span>
<span id="How_is_Wikifunctions_multilingual?"></span>
=== W jaki sposób Wikifunkcje są wielojęzyczne? ===
{{main|Special:MyLanguage/Help:Multilingual}}
<div lang="en" dir="ltr" class="mw-content-ltr">
Wikifunctions and Abstract Wikipedia are multilingual in a number of ways that do not impact each other:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Wikifunctions is multilingual in terms of its content and user interface.''' Users can read and call functions on Wikifunctions in any natural language. Here is the “join string” function in [https://www.wikifunctions.org/view/en/Z10000 English], [https://www.wikifunctions.org/view/pl/Z10000 Polish], and [https://www.wikifunctions.org/view/he/Z10000 Hebrew], and it is available in many more languages.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Contributors can edit and improve Wikifunctions using their language.''' Even implementations can be edited in the natural language of the contributor. For example, the composition of the “and” function can be edited in [https://www.wikifunctions.org/wiki/Z11223?action=edit&uselang=de German], [https://www.wikifunctions.org/wiki/Z11223?action=edit&uselang=en English], or any other of about 300 languages.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Wikifunctions functions can be used to create results for any natural language.''' The community is creating a growing number of functions to support the generation of text in many natural languages. We have functions for [[Wikifunctions:Catalogue#Breton|Breton]], [[Wikifunctions:Catalogue#Rohingya|Rohingya]], [[Wikifunctions:Catalogue#English|English]], and many other languages.</span>
* '''Funkcje w Wikifunkcjach mogą być implementowane w różnych językach programowania.''' Na przykład [[Z10000|funkcja łączenia tekstu]] jest zaimplementowana zarówno w [[Z10005|JavaScripcie]], jak i [[Z10004|Pythonie]].
<span id="Which_programming_languages_does_Wikifunctions_currently_support?_Which_programming_languages_will_be_supported_in_the_future?"></span>
=== Jakie języki programowania obsługują obecnie Wikifunkcje? Jakie języki programowania będą obsługiwane w przyszłości? ===
{{main|WF:programming languages}}
Obecnie Wikifunkcje obsługują implementacje napisane w języku JavaScript i Python. W przyszłości planujemy dodać wsparcie dla większej liczby języków programowania. Mamy nadzieję, że w 2025 roku dołączy się przynajmniej jeden język programowania (ale jeszcze nie zdecydowaliśmy który).
<span id="How_will_Wikifunctions_be_integrated_into_other_projects?"></span>
=== W jaki sposób Wikifunkcje zostaną zintegrowane z innymi projektami? ===
<div lang="en" dir="ltr" class="mw-content-ltr">
Wikifunctions is the first step towards building Abstract Wikipedia. Our near-term focus will be on supporting the community and making improvements based on feedback. Concurrently, we will begin the process of integrating it with Wikipedia and Wikidata, which will enable broader real-life applications and get us closer to the vision of Abstract Wikipedia.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Contributors will be able to call functions stored on the Wikifunctions site from within their wikis. The result of the function call will be displayed to readers of the wiki. This can be used, for example, to calculate the age of a person, the population density based on population and area data from Wikidata, or to draw a graph and integrate it into a given article.
</div>
Inną opcją na integrację WikiFunkcji będzie umożliwienie bezpośrednio w wiki interaktywnego wywoływania funkcji. Dzięki temu będzie można na przykład w artykule w Wikipedii dynamicznie obliczać wyniki równań fizycznych na podstawie parametrów wprowadzonych przez czytelnika; rysować i wchodzić w interakcję z funkcjami matematycznymi; itp.
<span id="What_Wikifunctions_is_not"></span>
=== Czym Wikifunkcje nie są ===
Więcej informacji na ten temat znajdziesz w artykule [[Special:MyLanguage/Wikifunctions:What Wikifunctions is not|Wikifunkcje:Czym Wikifunkcje nie są]].
<span id="What_license_will_the_functions_and_derived_content_be_under?"></span>
=== Jakiej licencji będą podlegać funkcje i treści pochodne? ===
<div lang="en" dir="ltr" class="mw-content-ltr">
Per the discussion happened [[:m:Special:MyLanguage/Abstract Wikipedia/Licensing discussion|on Meta between November and December 2021]], all contributions to Wikifunctions and the wider Abstract Wikipedia projects will be published under free licenses. In particular:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Special:MyLanguage/Wikifunctions:Glossary#Content|Textual content]] on Wikifunctions will be published under [[w:Creative Commons license|CC BY-SA 4.0]].</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Special:MyLanguage/Wikifunctions:Glossary#Function|Function signatures]] and other structured content on Wikifunctions will be published under [[w:CC0|CC 0]].</span>
* [[Special:MyLanguage/Wikifunctions:Glossary#Implementation|Implementacje kodu]] w Wikifuncjach będą publikowane na [[w:Apache License|Licencji Apache 2]].
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Special:MyLanguage/Wikifunctions:Glossary#Content|Abstract Content]] for Abstract Wikipedia will be published under CC BY-SA 4.0.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
There are still some points that will need to be addressed in the future, such as the license of the generated content from the abstract content. We plan on drafting a more comprehensive document with the Legal department about how people can re-use code from Wikifunctions as painlessly as possible, while adhering to the license.
</div>
<span id="Contributing"></span>
== Wkład ==
<span id="I'm_new_here._What_is_there_for_me_to_do_and_how_can_I_help?"></span>
=== Jestem tu nowy. Co mogę zrobić i jak mogę pomóc? ===
<div lang="en" dir="ltr" class="mw-content-ltr">
Welcome! We're very happy to have you here! There are many opportunities for contributing to Wikifunctions, from creating new functions to improving and translating documentation. If you are looking for ways to get involved, we recommend that maybe, depending on your level of comfort, you suggest a new function on a topic you are interested in. Or even create such a function. Provide some tests. Try your hand at an implementation. Help with translations. Read and improve our documentation. Help with organizing the community.
</div>
<span id="How_do_I_create_a_new_function,_implementation,_or_test?"></span>
=== Jak utworzyć nową funkcję, implementację lub test? ===
Aby zobaczyć, jak utworzyć nową funkcję, implementację lub test, zobacz [[Special:MyLanguage/Wikifunctions:Introduction|Wikifunkcje:Wprowadzenie]].
Aby zobaczyć bardziej szczegółowo, jak utworzyć implementację, zobacz [[Special:MyLanguage/Wikifunctions:How to create implementations|Wikifunkcje:Jak tworzyć implementacje]].
<span id="What_should_I_edit_first?"></span>
=== Co powinienem edytować na początku? ===
Jeśli potrafisz pisać w kilku językach naturalnych, znajdź funkcje, które nie mają jeszcze etykiet i opisów w tych językach na stronie [[Special:ListMissingLabels]] i pomóż je dodać.
<div lang="en" dir="ltr" class="mw-content-ltr">
If you have some interest in a domain that could feature functions in Wikifunctions, but yet doesn't, or if you have more ideas for functions, go to the page for [[Wikifunctions:Suggest a new function|suggesting new functions]] and present your ideas.
</div>
Jeśli jesteś programistą w JavaScripcie lub Pythonie, być może chcesz sprawdzić funkcje, które nie mają jeszcze implementacji w JavaScript lub Pythonie i spróbować je napisać.
<span id="Where_can_I_go_for_help?"></span>
=== Gdzie mogę zwrócić się po pomoc? ===
Twoje pierwsze kroki powinny prowadzić do [[Special:MyLanguage/Help:Contents|Portalu pomocy]], gdzie znajdziesz całą dokumentację związaną z korzystaniem i edycją WikiFunkcji. Jeśli nadal będziesz mieć problemy, umieść wiadomość na [[Wikifunctions:Project chat|Czacie projektu]], gdzie ktoś odpowie na twoje pytanie.
<span id="How_do_we_sort_or_categorize_functions?"></span>
=== Jak sortujemy i kategoryzujemy funkcje? ===
{{Tracked|T285424}}
<div lang="en" dir="ltr" class="mw-content-ltr">
For now, the best way to sort or categorize functions is to do it by hand through [[Special:MyLanguage/Wikifunctions:Catalogue|pages in the Wikifunctions namespace]]. Another option would be through the talk page of the given function. We will monitor these efforts and discuss with the community which changes to the system would be helpful for this task.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== How can I setup the software locally to hack on it? ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
See [[Special:MyLanguage/Wikifunctions:Hacking on the evaluator and orchestrator|Hacking on the evaluator and orchestrator]].
</div>
[[Category:FAQ| {{#translation:}}]]
tuaodnikufzpe8e2aznc7n46g9p5la3
Wikifunctions:How to create implementations/pl
4
20044
296943
276456
2026-08-06T18:02:35Z
FuzzyBot
207
Updating to match new version of source page
296943
wikitext
text/x-wiki
<languages/>
<div lang="en" dir="ltr" class="mw-content-ltr">
This page provides a more detailed guide to '''creating implementations''', beyond the overview at {{ll|Wikifunctions:Introduction}}.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Types of Implementations ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
In Wikifunctions, an '''implementation''' can take one of two main forms: '''code''' or '''composition'''. A code implementation directly expresses the function’s logic in any of the available programming languages (currently, Python3 or JavaScript). It’s most useful when the function’s behavior can’t easily be built from existing Wikifunctions, or when precise control over data processing is needed.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
A composition implementation, on the other hand, defines the function entirely by combining other existing functions, without writing code. Compositions are easier to understand, reuse, and translate into other languages automatically, but they depend on suitable building blocks already being available and often are less performant. In general, start by checking whether your goal can be achieved through composition; if it can’t, or if performance or fine-grained logic matters, choose a code implementation instead.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
There's a third type of implementation: '''built-ins'''. These are run by system-built code, and are not editable. Most likely all pre-defined functions will have a built-in implementation. In such cases, when opening the implementation page, you will see a message stating ''"{{int|wikilambda-implementation-selector-none}}"''
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Practice Test-Driven Development ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
'''Test-Driven Development''', or '''TDD''', is a way of creating software where you write tests before you write the actual code. Tests are just a way of understanding what your function is supposed to do by listing examples and how they should work.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
In Wikifunctions, writing tests first offers significant benefits. If you are working on an implementation, you can run your code against the existing tests to check that it behaves as expected. This makes it easier to catch errors early before even publishing your implementation. Tests are also a powerful way to describe the function you need. By writing tests, '''you clearly communicate the expected behavior''', and the community can step in and help with the implementation, or create alternative implementations.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Imagine you want to implement a Function that combines two strings with a space in between. A basic test for this might look like:
</div>
<syntaxhighlight lang="prolog">
join_with_space( "Hello", "world" ) => "Hello world"
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
Once you have defined the basic behavior, it's important to '''think about edge cases'''—situations where the inputs are such that you might need some special behavior.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For example, what if your first string ends in a space, or your second string starts with a space? Should the function keep all existing spaces and add another one, or should it return a neatly spaced result with just a single space between the words?
Depending on your requirements, you should build a test for such a case. For example, a test for this edge case could be either one of these — but not both!:
</div>
<syntaxhighlight lang="prolog">
join_with_space( "Hello ", " world") => "Hello world"
</syntaxhighlight>
lub ...
<syntaxhighlight lang="prolog">
join_with_space( "Hello ", " world") => "Hello world"
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
Make sure that all possible special cases are covered by your tests, and once you have them, make sure that they are all connected to the Function by selecting them and clicking "Connect".
</div>
<span id="Code_implementations"></span>
== Implementacje kodu ==
[[File:Code implementation.png|thumb|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Wikifunctions code editor initialized with a function template</span>|<span lang="en" dir="ltr" class="mw-content-ltr">When adding a new code implementation, the function template is initialized with the function and argument names</span>]]
<div lang="en" dir="ltr" class="mw-content-ltr">
When creating an implementation using code, the Wikifunctions UI will set up a code editor with the selected language activated for syntax highlighting and validation. When the function to implement and the programming language are selected, this editor will be set with the correct function template: '''do not remove or edit this'''! Keep your code inside this function signature: if you need auxiliary functions, you can simply declare them inside your top-level function declaration.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Using input types in your code ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Wikifunctions types {{Z|Z6}} and {{Z|Z40}} can be used as if they were native types in both JavaScript and Python3. For example, a String input can be concatenated or a Boolean be directly used in a logical expression. To use other types in your code implementations, you will have to look deeper into the type, figure out if it has a conversion to a native equivalent, and treat it accordingly.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For example, let's say we want to write some Python code that handles an input of type {{Z|Z20420}}. In the page for this type, let's look at its "type converters to code" and search for a Python one. The converter {{Z|Z20424}} will be applied to our date input before our code, so looking at "native type" we know that our input will be a Python ''dict'' and looking at the implementation we can see the keys we can expect:
</div>
<syntaxhighlight lang="python3">
return {
'K1': year,
'K2': month,
'K3': day
}
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
When a type doesn't have a converter, you'll have to access its parts directly using its keys. For example, let's assume that your function <code>Z30000</code> has one input <code>Z30000K1</code> of type {{Z|Z11}}. This type has two keys: <code>Z11K1</code> for the language (itself an object of type {{Z|Z60}}), and <code>Z11K2</code> for the string value. Similarly, the language object has a key <code>Z60K1</code> for the language code. So, to get a string with the language code and the text, you can write:
</div>
<syntaxhighlight lang="javascript">
function Z30000( Z30000K1 ) {
// e.g. "en: some text"
return Z30000K1.Z11K1.Z60K1 + ": " + Z30000K1.Z11K2;
}
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
For a quick reference of the available type conversions visit [[Special:MyLanguage/Wikifunctions:Execution targets#Default type conversion|the default type conversion table]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Returning the right outputs ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Similarly to the way you treat inputs, outputs need to match the type specified in the function definition. Some can be treated as simply as native types, so any string output will be converted into a Wikifunctions {{Z|Z6}} object and any native boolean returned by your implementation will be converted into a Wikifunctions {{Z|Z40}} object.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Those types that have "type converters from code" will apply the appropriate function to the output, in order to build the required type. Following the example of {{Z|Z20420}}, the {{Z|Z20443}} will transform the output from your implementation–a dict with K1, K2 and K3 keys–into its correct ZObject representation.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For types that don't have converters from code, you can carefully build and return the output objects. For example, imagine that our function <code>Z30000</code> takes two string inputs: language code and text, and should return a {{Z|Z11}} object. You can do this in Python by using the <code>ZObject</code> constructor:
</div>
<syntaxhighlight lang="python3">
def Z30000(Z30000K1, Z30000K2):
lang_object = ZObject(
{"Z1K1": "Z9", "Z9K1": "Z60"},
Z60K1 = Z30000K1
)
return ZObject(
{"Z1K1": "Z9", "Z9K1": "Z11"},
Z11K1 = lang_object,
Z11K2 = Z30000K2
)
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
Or in JavaScript:
</div>
<syntaxhighlight lang="javascript">
function Z30000( Z30000K1, Z30000K2 ) {
const langObject = new ZObject(
new Map( [ [ "Z60K1", Z30000K1 ] ] ),
{ "Z1K1": "Z9", "Z9K1": "Z60" }
);
const monolingualKeys = new Map( [
[ "Z11K1", langObject ],
[ "Z11K2", Z30000K2 ]
] );
return new ZObject(
monolingualKeys,
{ "Z1K1": "Z9", "Z9K1": "Z11" }
);
}
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
You can learn more about the <code>ZObject</code> class and other useful constructors in {{ll|Wikifunctions:Execution_targets#Custom_and_non-built-in_type_conversion}}
</div>
{{phab|T392750}}<div lang="en" dir="ltr" class="mw-content-ltr">
As of 2026-05, trying to return a list of lists may fail, so you're not able to implement such functions in code.
</div>
<span id="Code_in_Python"></span>
=== Kod w Pythonie ===
<div lang="en" dir="ltr" class="mw-content-ltr">
In this section, we give a concrete example on how to create an implementation in the form of Code in Python. Say we want to create an implementation for a Function which combines two input strings by putting a space between them, returning the result of that. Let’s assume the ZID of that function is Z30000.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The implementation is defined using the ZID of the function. So are the arguments of the function. So in the case of the function Z30000 with its two arguments, the function template should look like this:
</div>
<syntaxhighlight lang="python3">
def Z30000(Z30000K1, Z30000K2):
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
As we described before, we know that the arguments (<code>Z30000K1</code> and <code>Z30000K2</code>) are Strings, so we can treat them as simply as we use native strings in Python. Also, the function should return a String. For our example, we simply return the two arguments concatenated with a space in between:
</div>
<syntaxhighlight lang="python3">
def Z30000(Z30000K1, Z30000K2):
return Z30000K1 + " " + Z30000K2
</syntaxhighlight>
Ponieważ to Python, nie zapomnij o wcięciu tej linii.
<div lang="en" dir="ltr" class="mw-content-ltr">
If you have followed our advice to [[#Practice Test-Driven Development|practice TDD]], you will already have a set of tests that you know should work. If that's the case, while building your implementation you can click on the circular arrow in the Tests panel, and see if your implementation passes all of them.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Remember that the runtime has no state. Don’t assume values for global or static variables. If you have further questions about what you can and cannot do in Python, ask on [[Wikifunctions:Python implementations]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Code in JavaScript ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
In this section, we give a concrete example on how to create an implementation in the form of Code in JavaScript. Say we want to create an implementation for a Function which combines two input strings by putting a space between them, returning the result of that. Let’s assume the ZID of that function is <code>Z30000</code>.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The implementation is defined using the ZID of the function. So are the arguments of the function. So in the case of the function <code>Z30000</code> with its two arguments, the function template should look like this:
</div>
<syntaxhighlight lang="javascript">
function Z30000( Z30000K1, Z30000K2 ) {
}
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
We know that the arguments (<code>Z30000K1</code> and <code>Z30000K2</code>) are Strings, so we can treat them as native strings in JavaScript. Also, the function should return a String. To complete our function, you can then add a line concatenating the input strings, like this:
</div>
<syntaxhighlight lang="javascript">
function Z30000( Z30000K1, Z30000K2 ) {
return Z30000K1 + " " + Z30000K2;
}
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
If you have tests as recommended in the [[#Practice Test-Driven Development|TDD]] section above, click on the circular arrow in the Tests panel and see if your implementation passes all of them.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Remember that the runtime has no state. Don’t assume values for global or static variables. If you have further questions about what you can and cannot do in JavaScript, ask on [[Wikifunctions:JavaScript implementations]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Compositions ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
In this section, we give a concrete example on how to create an implementation in the form of a composition. Say we want to create an implementation for a Function which combines two input strings by putting a space between them, returning the result of that. Let’s assume the ZID of that function is <code>Z30000</code>.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
It is usually a good idea to first think about how to combine existing functions in order to create the desired output. Sometimes this might be trivial, and you can just go ahead with composing functions, but in many cases it is worthwhile to note the desired composition down.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For example, for the given Function, we could use the existing Function {{Z|Z10000}}. That Function takes two strings and makes one string out of them. But we need to add a space in between. So we first concatenate a space to the end of the first string, and then concatenate the second string to the result of that first concatenation. So our composition could be noted down like this:
</div>
<syntaxhighlight lang="prolog">
join_strings( join_strings( Z30000K1, " " ), Z30000K2 )
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
There are multiple ways to write a composition: notice that the same thing could be accomplished with:
</div>
<syntaxhighlight lang="prolog">
join_strings( Z30000K1, join_strings( " ", Z30000K2 ) )
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
An alternative implementation could also use the existing Function {{Z|Z15175}}, so your composition could be:
</div>
<syntaxhighlight lang="prolog">
join_with_separator( Z30000K1, Z30000K2, " " )
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
As you can see, there are multiple ways to accomplish this, so take your time and explore the existing functions available in the {{ll|Wikifunctions:Catalogue}}.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Let's try to create the second example, <code>join_strings(Z30000K1, join_strings(" ", Z30000K2))</code>.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
In order to create this:
</div>
# <span lang="en" dir="ltr" class="mw-content-ltr">Start adding an implementation by clicking on the "+" button in the "Implementations" table from your Function page.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Make sure that the option "composition" under "Implementation" is selected.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Click on the "›" icon or click the "Select Function" link to expand the function details.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Under "function" search for the name of the outermost function you want to use, which in this example is "join two strings". Then, select the wanted function from the dropdown list.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">You will see two new fields, one for each of the arguments needed for the selected function.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">For the first argument, we want to select the first input to our function:</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "first string", click on the "…" button and select "Argument reference".</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "key id" you can now select the first string of your function from the dropdown, which contains all available inputs.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">For the second argument, we want to use the result of another call to "join two strings":</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "second string", click on the "…" button and select "Function call".</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function", search and select the function you want to call, which is again "join two strings".</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">For this inner function call, configure the "first string" by simply typing a white space in the text field, and configure the "second string" as you did for step 6: change it using the "…" button to "Argument reference", and then select the second argument in the dropdown.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
Your composition is now complete!
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
You can expand and collapse the details using the chevron buttons to see how it looks. If you already have Tests as recommended in the [[#Practice Test-Driven Development|TDD]] section above, click on the circular arrow in the Tests panel and see if your implementation passes the tests. Once your composition passes the tests, go ahead and publish it.
</div>
[[File:Composition implementation expanded.png|frame|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">A Wikifunctions composition implementation in its expanded view</span>|<span lang="en" dir="ltr" class="mw-content-ltr">A Wikifunctions composition implementation in its expanded view</span>]]
[[File:Composition implementation collapsed.png|frame|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">A Wikifunctions composition implementation in its collapsed view</span>|<span lang="en" dir="ltr" class="mw-content-ltr">A Wikifunctions composition implementation in its collapsed view</span>]]
<div lang="en" dir="ltr" class="mw-content-ltr">
== Wikifunctions error handling ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
As a Wikifunctions function creator, you might want to warn the user calling your function when something goes wrong in the code, or when their inputs do not fit a certain criteria. For example, if your Function expects a string input to contain a name, you might want to check that the name is not empty and, if it is, show an error message that the person using your Function can understand.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For this purpose, you can use <code>Wikifunctions.Error()</code> from your code implementations or the function {{Z|Z851}} from your compositions.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
In this section you will learn:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">How to throw errors from both code and composition implementations,</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">how to write tests for error cases, and</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">how to catch and handle errors thrown by functions that you are using in your compositions.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Throwing errors from code implementations ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
When writing code, both from JavaScript and Python, you can use <code>Wikifunctions.Error()</code> to end the execution with a wanted error.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
<code>Wikifunctions.Error()</code> has two parameters:
</div>
# <span lang="en" dir="ltr" class="mw-content-ltr">Error type: a string containing the ZID of the error type you want to return.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Error arguments: a list of string arguments to build the error.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
Let's go one by one:
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Error type ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
An error type is an object that describes a kind of error that could happen in the system. There are a number of built-in error types but you can also build other error types that are more suited to your use case. When using errors, the best idea is to browse through the available error types, which can be explored in [[Special:ListObjectsByType/Z50|this list]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If there are no errors that fit your case, create a new one by going to the create page, and selecting "Error type" in the type selector. Then, set the necessary fields:
</div>
[[File:Error type.png|thumb|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Error type creation in Wikifunctions</span>|<span lang="en" dir="ltr" class="mw-content-ltr">To create new Error type (Z50), edit the label and add the necessary keys.</span>]]
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Label''' – This is the main title of the error, which should contain a short but descriptive message. Set the error label on the right-side box titled "About".</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Keys''' – Keys contain additional information about what caused the error. For example, if an input had the wrong format, you might want to inform the user of what was the input content when raising the error. To use them in your implementations, keys should be strings. To create a key, click on the "[+]" icon below "keys", select "String" under "value type", and add a label that describes it appropriately, for example "current input". Once you have all the necessary keys, you can Publish your error type and keep the ID of the newly created object.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Error arguments ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Error arguments correspond to the keys of the Error type, and they should provide additional information to understand the error. Error arguments should always be Strings.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Using Wikifunctions.Error() ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Say that you want an error to be thrown when either your first or your second input are empty. You have already created the error type, and the assigned ZID was <code>Z30005</code>. Your error type has two string keys:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">Input key: contains the key of the failing input</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Input value: contains the current value of the failing input</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
To raise an error in your JavaScript implementation you should do something like this:
</div>
<syntaxhighlight lang="javascript">
function Z30000( Z30000K1, Z30000K2 ) {
if ( trim( Z30000K1 ) === '' ) {
// If the first input is empty, raise error Z30005
// with two string args: [ first input key, first input value ]
Wikifunctions.Error( 'Z30005', [ "Z30000K1", Z30000K1 ] )
}
if ( trim( Z30000K2 ) === '' ) {
// If the second input is empty, raise error Z30005
// with two string args: [ second input key, second input value ]
Wikifunctions.Error( 'Z30005', [ "Z30000K2", Z30000K2 ] )
}
return Z30000K1 + " " + Z30000K2;
}
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
To raise an error in your Python implementation you should do something like this:
</div>
<syntaxhighlight lang="python3">
def Z30000(Z30000K1, Z30000K2):
if Z30000K1.strip() == "":
# If the first input is empty, raise error Z30005
# with two string args: [ first input key, first input value ]
Wikifunctions.Error("Z30005", ["Z30000K1", Z30000K1])
if Z30000K2.strip() == "":
# If the second input is empty, raise error Z30005
# with two string args: [ first input key, first input value ]
Wikifunctions.Error("Z30005", ["Z30000K2", Z30000K2])
return Z30000K1 + " " + Z30000K2
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
Remember that calling <code>Wikifunctions.Error()</code> ends the execution!
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Throwing errors from compositions ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If you are creating a composition implementation, you can throw an error by calling the special function {{Z|Z851}}.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Throw Error function (Z851) ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The {{Z|Z851}} function is similar to the <code>Wikifunctions.Error()</code> method and takes two arguments:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Error type''' – A reference to the Error type you want to raise</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Error parameters''' – A list with the arguments to create your Error, which should also be Strings.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Using Throw Error ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Say you want to modify your composition so that it first checks that the arguments are not empty, and raises an error when it finds an empty one. Then, if none of them are empty, it runs the original composition, which is:
</div>
<syntaxhighlight lang="prolog">
join_with_separator( Z30000K1, Z30000K2, " " )
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
To do this, you need to create conditional paths, for which you can use the {{Z|Z802}} function. Think of it like this:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">If the first argument is empty, throw an error for the first argument</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Else, proceed to check the second argument</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">If the second argument is empty, throw an error for the second argument</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Else, proceed with the success path and return the joint strings with the space separator</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
Or in functional pseudo code:
</div>
<syntaxhighlight lang="prolog">
if (
is_empty_string( Z30000K1 ),
throw_error( Z30005, [ "Z30000K1", Z30000K1 ] ),
if(
is_empty_string( Z30000K2 ),
throw_error( Z30005, [ "Z30000K2", Z30000K2 ] ),
join_with_separator( Z30000K1, Z30000K2, " " )
)
)
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
Let's create this step by step:
</div>
# <span lang="en" dir="ltr" class="mw-content-ltr">Start adding an implementation by clicking on the "+” button in the "Implementations" table from your Function page.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Make sure that the option "composition" under "Implementation" is selected.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Click on the "›” icon or click the "Select Function" link to expand the function details.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Under "function" search and select the outermost function you want to use, which in this case is "if".</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Check the validity of the first argument:</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "condition", click on the "…" button and select "function call"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function", search and select the function "is empty string"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "input", click on the "…" button and select "argument reference"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "key id", select the first input (e.g. "first string")</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">You can now collapse the "condition" function call if you want, by clicking on the down-chevron next to "condition". You should see something like "f(x) is empty string( → first string )"</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Throw error if the condition is true:</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "then", click on the "…" button and select "function call"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function", search and select the function "Throw Error"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "error type", search and select your error type (you can directly input the error ID if you know it, e.g. Z30005)</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "error parameters", add two items by clicking on the "+" button</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">For "Item 1" (offending argument key), set its type to "String" and write the argument identifier (e.g. "first input", or "Z30000K1")</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">For "Item 2" (offending argument value), click on the "…" next to "Item 2" and select "argument reference"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "key id", select the first input (e.g. "first string")</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">You can now collapse the "then" function call if you want, by clicking on the down-chevron next to "then". You should see something like "f(x) Throw Error( Input was the wrong format, Typed list( Object, "first input", → first string ) )"</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Continue to check the second argument if the first was good:</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "else", click on the "…" button and select "function call"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function", search and select the function "if"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Set up "condition" to check the validity of the second argument by following the same process as described in step 5.</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Set up "then" to throw an error for the second argument by following the same process as described in step 6.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Finally, set up the success path:</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to the nested "else", click on the "…" button and select "function call"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function", search and select the successful function, which in this case can be "join strings with separator"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "first string", click on the "…" button and set it to "argument reference", then select "first string"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "second string", click on the "…" button and set it to "argument reference", then select "second string"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "separator" add a space into the text field</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
The resulting function call should look like this:
</div>
[[File:Throw error expanded.png|frame|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Wikifunctions composition using Throw Error function</span>|<span lang="en" dir="ltr" class="mw-content-ltr">Wikifunctions composition using Throw Error function</span>]]
[[File:Throw error collapsed.png|frame|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Wikifunctions composition using Throw Error function, in its collapsed view</span>|<span lang="en" dir="ltr" class="mw-content-ltr">Wikifunctions composition using Throw Error function, in its collapsed view</span>]]
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Handling errors in compositions ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
While it is useful to allow functions to raise expected errors, it is crucial to be able to handle errors in your compositions in order to safely use these functions.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Say you want to create a new function "full name of a person" – we will refer to it with the ZID <code>Z30010</code>. This function should return the full name of a person given a first and last names, but if any of the two fields are empty, it should return the text "Unknown" instead.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
You could create a composition using our example function "Join two strings with a space" or <code>Z30000</code> to generate the name. If any of the inputs are empty, you know that <code>Z30000</code> will throw an error of type <code>Z30005</code>. Using the function {{Z|Z850}} as a wrapper, you can attempt the join operation and intercept a possible error to simply return "Unknown" whenever it occurs.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Try-Catch function (Z850) ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The {{Z|Z850}} function is built-in with ZID <code>Z850</code> and takes three arguments:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Function call''' – The initial function call to run. If nothing goes wrong, the response will be the result of this function call.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Error type''' – An error type to catch in case it is thrown during the execution of the first function call.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Error handler''' – A function call that will be run in case the error specified above is caught during the execution of the initial function call. If that happens, the result of the error handler will be the value returned.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Using Try-Catch ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Once we have all the functions for our composition, we can craft it like this:
</div>
<syntaxhighlight lang="prolog">
try_catch(
join_with_space( Z30010K1, Z30010K2 ),
Z30005,
echo( "Unknown" )
)
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
This means that:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">The "Join two strings with a space" function will be tried with the two inputs and, if everything goes well, the output of this function will be returned</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">If any of the inputs are blank, "Join two strings with a space" with raise an error of type <code>Z30005</code></span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Our {{Z|Z850}} will then detect this error and run the {{Z|Z801}} function to return "Unknown"</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
Let's create this step by step:
</div>
# <span lang="en" dir="ltr" class="mw-content-ltr">Start adding an implementation by clicking on the "+" button in the "Implementations" table from your Function page.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Make sure that the option "composition" under "Implementation" is selected.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Click on the "›” icon or click the "Select Function" link to expand the function details.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Under "function" search and select the outermost function you want to use, which in this case is "Try-Catch".</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Set the main function call:</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under the field where the "Try-Catch" function is selected, next to the "function call" key, click on the "…" button and select "function call"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function" search and select the function "join two strings with space"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "first string", click on the "…" button and select "argument reference", then select the "first name" argument from the dropdown.</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "second string", click on the "…" button and select "argument reference", then select the "second name" argument from the dropdown.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Select the error to catch:</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "error type", search and select "bad string input" – you can search directly by its ZID <code>Z30005</code></span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Set the error handler function call:</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "error handler", click on the "…" button and select "function call"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function", search and select the function "echo"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "input" and "type", search and select the type "String"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Now, under "input", type "Unknown" in the text field</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
The resulting function should look like this:
</div>
[[File:Try catch expanded.png|frame|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Wikifunctions composition using Try-catch function, in expanded mode</span>|<span lang="en" dir="ltr" class="mw-content-ltr">Wikifunctions composition using Try-catch function, in expanded mode</span>]]
[[File:Try catch collapsed.png|frame|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Wikifunctions composition using Try-catch function, in collapsed mode</span>|<span lang="en" dir="ltr" class="mw-content-ltr">Wikifunctions composition using Try-catch function, in collapsed mode</span>]]
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Testing your failure use cases ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
As we introduced in the above section about [[#Practice Test-Driven Development|practicing TDD]], it's important to test not only the most common paths, but also the possible edge cases. It is equally important to test failure behavior. In this section we will give you the tools necessary to test that your function fails with a given set of inputs, and that the error thrown is the expected one.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
To do that, you will need other two system functions:
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Is error type (Z852) ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The {{Z|Z852}} function is built-in with ZID <code>Z852</code> and takes two arguments:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Error''' – An {{Z|Z5}} object, which can be thrown by a failing call. An error instance has a type and a value.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Error type''' – A reference to an {{Z|Z50}} which will be compared to the type of the Error passed as a first argument. If that's the case, the function will return true.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Get error thrown by function call (Z853) ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The {{Z|Z853}} function is built-in with ZID <code>Z853</code> and takes one argument:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Function call''' – A function call which can either return a successful value of any type, or throw an error.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
This function returns a {{Z|Z882}} with a {{Z|Z40}} in first place and an {{Z|Z1}} in the second:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">If the Function call runs successfully and hence does not throw any error, the returned pair will contain False in the first place, and void in the second.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">If the Function call throws an error, the returned pair will contain True in the first place, and the caught error in the second.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
To use this function in your compositions, you might need to use the additional functions:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z821}}, and</span>
* {{Z|Z822}}
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Testing errors ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Say our target function, "Join two strings with a space" or <code>Z30000</code>, throws an error of type <code>Z30005</code> and we want to test this behavior. To do that we need to:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">Throw a failing function call</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Get the error using the function {{Z|Z853}}</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Check that the error is the right type with {{Z|Z852}}</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
Tests have two fields:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Call''' – A function call that will produce an output with the inputs you want to test. This call will return a value.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Result validation''' – A function call that will validate that the value returned by the call above is the expected one. The first argument of this function call will be automatically assigned to take the return value of the first call.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
For step-by-step instructions on how to create tests, see {{ll|Wikifunctions:Introduction#Create_tests}}.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
In our example, we can structure it like this — but this is not the only way!
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The call, which will return an {{Z|Z5}} object:
</div>
<syntaxhighlight lang="prolog">
error = get_second_element_of_typed_list(
get_error_thrown_by(
join_strings_by_whitespace( "", "not empty" )
)
)
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
And the result validation, which will take the {{Z|Z5}} object as its first argument:
</div>
<syntaxhighlight lang="prolog">
is_error_type( error, Z30005 )
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
Let's do this step by step:
</div>
# <span lang="en" dir="ltr" class="mw-content-ltr">Start adding a test by clicking on the "+" button in the "Tests" table from your Function page. The "call" and "result validation" fields already have some functions pre-set, but to test the errors we will need to change them.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">First, let's set the call:</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "call", click the "›" chevron button to expand the function call.</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function", edit the field and search and select the function "Get second element of a typed pair"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Once selected, next to "Typed pair", click on the "…" button and select "function call"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function", search and select the function "Get error thrown by function call"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "function call", click on the "…" button and select "function call"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function", search and select the function "Join two strings with a space" (or by ZID <code>Z30000</code>)</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Now set the inputs so that they cause a failure: at least one of them should be empty.</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">You can now collapse your "call" by clicking again on the down-chevron button if you want!</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Next, let's set the result validation:</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "result validation", click the "›" chevron button to expand the function call.</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function", edit the field and search and select the function "Is error type"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Now you will only be asked to configure the second argument. Under "error type", search and select your <code>Z30005</code> error type.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">And you are done! You can now click the circular arrow in the "Implementations" box and you should see green checks.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
If everything went right, you can now save your test. It should look like this:
</div>
[[File:Get error expanded.png|frame|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Testing a failure using Get error and Is error type functions, in expanded mode</span>|<span lang="en" dir="ltr" class="mw-content-ltr">Testing a failure using Get error and Is error type functions, in expanded mode</span>]]
[[File:Get error collapsed.png|frame|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Testing a failure using Get error and Is error type functions, in collapsed mode</span>|<span lang="en" dir="ltr" class="mw-content-ltr">Testing a failure using Get error and Is error type functions, in collapsed mode</span>]]
<div lang="en" dir="ltr" class="mw-content-ltr">
== Debugging your implementations ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Sometimes things can go wrong. A function might behave differently than expected or a value might not look quite right. Sometimes implementations are really complex and, because they are run in a sandboxed environment, it can seem really difficult to debug. To help understand what's going on inside a function call, Wikifunctions includes a small set of debugging tools.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
These tools don't change the result of a function, but will add extra information to the returned metadata, which you can observe after running the function. You can use <code>Wikifunctions.Debug()</code> from your code implementations or the function {{Z|Z854}} from your compositions.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
In this section you will learn:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">How to add debug messages from both code and composition implementations,</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">how to inspect the metadata manually or via the UI to inspect these logs.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Debugging your code implementations ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
When writing code, both from JavaScript and Python3, you can use <code>Wikifunctions.Debug()</code> to add a message to your debugging log and continue the execution.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
<code>Wikifunctions.Debug()</code> has one parameter, which is generally expected to be a string. However, any other object passed as parameter will get directly converted into a string.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If we want to add debug logs to our code implementations for our "Join two strings with a space" example function, we can do, in JavaScript:
</div>
<syntaxhighlight lang="JavaScript">
function Z30000( Z30000K1, Z30000K2 ) {
if ( trim( Z30000K1 ) === '' ) {
Wikifunctions.Debug( `first input is empty "${ Z30000K1 }"` );
Wikifunctions.Error( 'Z30005', [ "Z30000K1", Z30000K1 ] )
}
if ( trim( Z30000K2 ) === '' ) {
Wikifunctions.Debug( `second input is empty "${ Z30000K2 }"` );
Wikifunctions.Error( 'Z30005', [ "Z30000K2", Z30000K2 ] )
}
Wikifunctions.Debug( "both inputs are fine" );
return Z30000K1 + " " + Z30000K2;
}
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
And the same in your Python3 implementation will be:
</div>
<syntaxhighlight lang="python3">
def Z30000(Z30000K1, Z30000K2):
if Z30000K1.strip() == "":
Wikifunctions.Debug( 'first input is empty "'+Z30000K1+'"' )
Wikifunctions.Error("Z30005", ["Z30000K1", Z30000K1])
if Z30000K2.strip() == "":
Wikifunctions.Debug( 'second input is empty "'+Z30000K2+'"' )
Wikifunctions.Error("Z30005", ["Z30000K2", Z30000K2])
Wikifunctions.Debug( 'both inputs are fine' )
return Z30000K1 + " " + Z30000K2
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
This way, no matter what happens, we will be adding one message to your debugging logs:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">If the function call fails when checking on the first or second input, the result of the execution will be a failure, but it will contain one informative log about what branch caused the failure.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">If the function call succeeds—because both inputs are valid—the function call will return the joined string, but the returned metadata will also contain a debug log.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Debugging your compositions ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
To support debugging compositions, Wikifunctions provides the built-in function {{Z|Z854}}. This function allows you to attach debug messages to the execution of any function call that generates the final output. The debug logs collected during the evaluation are returned as part of the execution metadata, under the <code>executorDebugLogs</code> key.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Add debug log to function call (Z854) ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The {{Z|Z854}} function is built-in with ZID <code>Z854</code> and takes two arguments:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Function call''' – Any composition you want to execute.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Debug log''' – A string message that will be recorded if the given function call is evaluated.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
When the wrapped function call runs, the provided message is added to the execution logs. If that function call is not executed, or its execution is not part of the final output, its debug log will not appear in the final result metadata.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
You will benefit from this built-in if you want to observe:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">Which branch of a conditional was executed, or</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">the order of evaluation in a composition.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Using Add debug log to function call ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Say that you want to add debug logs to our example function "Join two strings with a space" or <code>Z30000</code>, so that different messages are added to the different possible outcomes. You could use our debugging builtin like this:
</div>
<syntaxhighlight lang="prolog">
if (
is_empty_string( Z30000K1 ),
add_debug_log( throw_error( Z30005, ... ), 'failed on first input' )
if(
is_empty_string( Z30000K2 ),
add_debug_log( throw_error( Z30005, ... ), 'failed on second input' ),
add_debug_log(
join_with_separator( Z30000K1, Z30000K2, " " ),
'both inputs are ok!'
)
)
)
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
This way,
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">when called with an empty first input, the function will return a failed response, and the metadata will contain an <code>executorDebugLogs</code> entry with the "failed on first input" log.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">When called with an empty second input, the call will also fail, but the logged message will be "failed on second input"</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">When called with valid inputs, the function will return a successful response, and additionally the metadata will contain "both inputs are ok" in its <code>executorDebugLogs</code> key.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
This is the way this composition would look:
</div>
[[File:Add debug log expanded.png|frame|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Composition implementation using Add debug logs to log all possible execution paths</span>|<span lang="en" dir="ltr" class="mw-content-ltr">Composition implementation using Add debug logs to log all possible execution paths</span>]]
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Accessing execution debug logs ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Whether your execution logs are added via <code>Wikifunctions.Debug()</code> or via the {{Z|Z854}} built-in function, they are returned as part of the response metadata. To see the logs, once you run your function, click on the "Details" button that appears at the bottom of the "Result" section.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The error and debug information will appear at the top of the "Details" dialog.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
This is what you would see when running the composition from our previous example with valid and invalid inputs:
</div>
{| class="wikitable"
| [[File:Execution logs success.png|frameless|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Function metadata dialog for a successful execution with debug logs</span>]]
| [[File:Execution logs failure.png|frameless|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Function metadata dialog for a failed execution with debug logs</span>]]
|-
| <span lang="en" dir="ltr" class="mw-content-ltr">Function metadata dialog for a successful execution: shows no errors, but displays the successful execution log: ''"both inputs are ok!"''</span>
| <span lang="en" dir="ltr" class="mw-content-ltr">Function metadata dialog for a failed execution: shows the error information, and the additional execution log for the first failure branch: ''"failed on first input"''</span>
|}
[[Category:How to create implementations| {{#translation:}}]]
ijh2lvzg2ofot4hywmvae64og3dbucp
Wikifunctions:Report a technical problem/pl
4
20052
296971
279550
2026-08-06T18:03:12Z
FuzzyBot
207
Updating to match new version of source page
296971
wikitext
text/x-wiki
<languages/>
{{shortcut|[[WF:BUG]]}}
{{see also
|Special:MyLanguage/WF:Status|l1=WF:Status
|Special:MyLanguage/WF:Feature_petitions|l2=WF:Feature petitions
}}
Jeśli znalazłeś błąd w Wikifunkcjach, lub masz prośbę o dodanie nowych funkcji w Wikifunkcjach, daj nam znać!
<span id="Scope"></span>
== Zakres ==
* '''Błąd''' - problem, który powoduje niepoprawne lub nieoczekiwane wyniki na Wikifunkcjach. Należy zauważyć, że problemy związane z funkcjami same w sobie nie są uznawane za błąd w tym kontekście.
* '''Prośba o nową funkcję''' - pomysł, który zespół deweloperski może dodać do Wikifunkcji, aby uczynić je jeszcze lepszymi.
Potrzebujesz pomocy w czymś innym?
: Następujące rzeczy są '''poza zakresem''' pracy zespołu deweloperskiego Wikifunkcji:
:* '''Zawartość poszczególnych funkcji''' – dyskutuj o nich na stronie dyskusji danej funkcji lub poproś o pomoc na stronie [[Wikifunctions:Project chat]] lub na kanałach wymienionych poniżej; jeśli uważasz, że brakuje jakiejś funkcji, zobacz [[Wikifunctions:Suggest a function]].
:* '''Polityki projektu Wikifunkcji''' – zapytaj o nie na stronie [[Wikifunctions:Project chat]] lub na kanałach wymienionych poniżej.
<span id="Find_existing_bugs_and_feature_requests"></span>
== Znajdź istniejące błędy i prośby o nowe funkcje ==
* Zobacz '''[[Wikifunctions:Status]]''' po szybkie podsumowanie najważniejszych problemów.
* Możesz '''[[phab:maniphest/query/UzvNRqsdnymk/|przeszukać Phabricator]] w poszukiwaniu otwartych zgłoszeń''', aby sprawdzić, czy Twój błąd lub pomysł na funkcję został już udokumentowany.
<span id="Discuss_with_others"></span>
== Przedyskutuj z innymi ==
Możesz zadawać pytania dotyczące potencjalnych błędów lub pomysłów na nowe funkcje w kilku miejscach. Może to być pomocne, jeśli nie jesteś pewien, jak dokładnie opisać problem lub propozycję:
* <span class="mw-translate-fuzzy">Strona dyskusji tutaj.</span>
* Główny czat na [https://t.me/Wikifunctions Telegramie] lub IRC {{channel|wikipedia-abstract}} (powiązane) ([https://wm-bot.wmcloud.org/logs/%23wikipedia-abstract/ rejestry], [https://wm-bot.wmflabs.org/logs/%23wikipedia-abstract/ stare rejestry])
* Czat deweloperów na [https://t.me/abstract_wikipedia_tech Telegramie] lub IRC {{channel|wikipedia-abstract-tech}} (połączone ze sobą) ([https://wm-bot.wmcloud.org/logs/%23wikipedia-abstract-tech/ rejestry]).
<span id="File_a_task_in_Phabricator"></span>
== Utwórz zadanie na Phabricatorze ==
Jeśli znasz Phabricatora, możesz bezpośrednio wyszukiwać i zgłaszać zadania.
Jeśli jeszcze nie znasz Phabricatora: jest to internetowe narzędzie do współpracy deweloperskiej, używane głównie do zarządzania projektami MediaWiki, w tym Wikifunkcjami. Krótkie wprowadzenie do Phabricatora dla nowych użytkowników, wraz z materiałami wideo, znajdziesz na wiki MediaWiki pod adresem [[mw:Special:MyLanguage/Phabricator/Help|mw:Phabricator/Help]].
* Możesz '''[[phab:maniphest/query/UzvNRqsdnymk/|przeszukać]] listę otwartych zadań''', aby sprawdzić, czy Twój błąd lub pomysł na funkcję został już udokumentowany.
** Istniejące zadania są zebrane pod znacznikiem '''[[phab:tag/abstract wikipedia team|#abstract wikipedia team]]'''.
* Możesz '''[https://phabricator.wikimedia.org/maniphest/task/edit/form/43/?projects=abstract_wikipedia zgłosić nowe zadanie]'''. Zawsze dołącz do niego:
** Przykłady
** Wszelkie istotne linki
** W przypadku błędów: dokładne kroki, które spowodowały błąd, aby zespół mógł go odtworzyć i zdiagnozować.
<span id="Languages"></span>
== Języki ==
Zespół deweloperski zna ograniczoną liczbę języków, ale możesz zgłaszać problemy w dowolnym języku, w którym czujesz się komfortowo.
Jeśli to możliwe, prosimy o dołączenie podsumowania w języku angielskim podczas tworzenia zgłoszenia w Phabricatorze lub poproszenie kogoś o pomoc.
<span id="Follow-up"></span>
== Śledzenie ==
* Powyższe miejsca są śledzone zarówno przez zespół deweloperski Wikifunkcji, jak i członków społeczności. Czas oczekiwania na odpowiedź zależy od charakteru i złożoności tematu itp. Jednak zazwyczaj możesz otrzymać odpowiedź w ciągu 2 dni roboczych. Daj nam znać, jeśli coś przeoczyliśmy – życie bywa rozpraszające!
* Nie wszystkie problemy mogą zostać rozwiązane natychmiast: w zależności od ich wpływu, priorytetu itp. niektóre błędy mogą zostać sklasyfikowane jako niskiego priorytetu. Możesz śledzić status swojego zgłoszenia w odpowiednim zadaniu na Phabricatorze.
[[Category:Report a technical problem{{#translation:}}]]
qgn1po1h8c40ok83tuzrcd5pqmc8u00
Wikifunctions:Report a technical problem/id
4
21126
296964
279543
2026-08-06T18:03:09Z
FuzzyBot
207
Updating to match new version of source page
296964
wikitext
text/x-wiki
<languages/>
{{shortcut|[[WF:BUG]]}}
{{see also
|Special:MyLanguage/WF:Status|l1=WF:Status
|Special:MyLanguage/WF:Feature_petitions|l2=WF:Feature petitions
}}
Jika Anda menemukan kekutu di Wikifunctions, atau Anda memiliki permintaan fitur untuk Wikifunctions, silakan beri tahu kami!
<span id="Scope"></span>
== Cakupan ==
* '''Kekutu''' (bahasa Inggris: ''bug'') - masalah yang menyebabkan hasil yang salah atau tidak diharapkan di Wikifunctions. Perhatikan bahwa masalah yang terjadi dalam Fungsi bukanlah sebuah kekutu dalam konteks ini.
* '''Permohonan fitur''' - ide yang tim pengembangan bisa tambahkan ke Wikifunctions untuk membuatnya semakin keren.
Apa butuh bantuan mengenai hal lain?
: Hal-hal berikut berada '''di luar cakupan''' pekerjaan tim pengembangan Wikifunctions:
:* '''Konten Fungsi tertentu''' – Diskusikan ini di halaman pembicaraan Fungsi tersebut, atau minta bantuan di [[Wikifunctions:Project chat]] atau di saluran yang dicantumkan di bawah; jika Anda merasa belum ada fungsi yang seharusnya ada, lihat [[Wikifunctions:Suggest a function]]
:* '''Kebijakan proyek Wikifunctions''' – Tanyakan tentang ini di [[Wikifunctions:Project chat]] atau di saluran yang dicantumkan di bawah in the channels listed below
<span id="Find_existing_bugs_and_feature_requests"></span>
== Mencari kekutu dan permintaan fitur yang sudah ada ==
* Lihat '''[[Wikifunctions:Status]]''' untuk rangkuman singkat masalah tingkat tinggi.
* Anda bisa '''[[phab:maniphest/query/UzvNRqsdnymk/|mencari daftar pekerjaan terbuka di Phabricator]]''' untuk melihat apakah kekutu atau ide fitur Anda sudah didokumentasikan.
<span id="Discuss_with_others"></span>
== Diskusikan dengan yang lainnya ==
Anda bisa bertanya tentang kemungkinan kutu atau ide fitur di beberapa lokasi. Ini bisa jadi membantu jika Anda tidak yakin cara menjelaskan kutu atau ide fiturnya:
* <span class="mw-translate-fuzzy">Halaman pembicaraan di sini.</span>
* Obrolan utama di [https://t.me/Wikifunctions Telegram] atau IRC {{channel|wikipedia-abstract}} (dijembatani) ([https://wm-bot.wmcloud.org/logs/%23wikipedia-abstract/ log], [https://wm-bot.wmflabs.org/logs/%23wikipedia-abstract/ log lama])
* Obrolan pengembang di [https://t.me/abstract_wikipedia_tech Telegram] atau IRC {{channel|wikipedia-abstract-tech}} (dijembatani) ([https://wm-bot.wmcloud.org/logs/%23wikipedia-abstract-tech/ log])
<span id="File_a_task_in_Phabricator"></span>
== Mengajukan pekerjaan di Phabricator ==
Jika Anda sudah terbiasa dengan Phabricator, Anda dapat mencari dan mengajukan pekerjaan secara langsung.
Jika ada belum terbiasa: Phabricator adalah perkakas kolaborasi pengembangan berbasis web yang digunakan untuk mengelola proyek-proyek terkait perangkat lunak MediaWiki termasuk Wikifunctions. Penjelasan singkat tentang Phabricator bagi pemula, termasuk video tutorial, ada di [[mw:Special:MyLanguage/Phabricator/Help|mw:Phabricator/Help]] MediaWiki.
* Anda bisa '''[[phab:maniphest/query/UzvNRqsdnymk/|mencari]] daftar pekerjaan terbuka''' untuk melihat apakah kutu atau ide fitur Anda sudah didokumentasikan.
** Pekerjaan-pekerjaan yang ada dikelompokkan dengan '''tag [[phab:tag/abstract wikipedia team|#abstract wikipedia team]]'''.
* Anda bisa '''[https://phabricator.wikimedia.org/maniphest/task/edit/form/43/?projects=abstract_wikipedia mengajukan pekerjaan baru]'''. Tolong pastikan untuk mencantumkan:
** Contoh
** Pranala yang relevan
** Untuk kekutu: Langkah-langkah yang tepat yang menghasilkan kutu tersebut, sehingga tim dapat menirunya dan mendiagnosisnya.
<span id="Languages"></span>
== Bahasa ==
Tim pengembangan hanya memahami sejumlah bahasa yang terbatas – tetapi Anda boleh melaporkan masalah dengan bahasa apa pun yang Anda senangi.
Jika memungkinkan, berikan ringkasan dalam bahasa Inggris saat membuat tugas phabricator, atau minta seseorang untuk membantu Anda.
<span id="Follow-up"></span>
== Tindakan selanjutnya ==
* Lokasi-lokasi di atas diikuti oleh tim pengembangan Wikifunctions, serta anggota-anggota komunitas. Waktu untuk mendapatkan balasan bisa bermacam-macam tergantung sifat atau kerumitan topik, dll. Namun, pada umumnya, Anda bisa mendapatkan jawaban dalam waktu 2 hari kerja. Tolong beri tahu kami jika kami melewatkan sesuatu, karena hidup kadang bisa mengalihkan perhatian!
* Tidak semua masalah dapat diselesaikan segera: tergantung pada dampak, prioritas, dll. beberapa kutu dapat diberikan prioritas rendah. Anda dapat mengikuti status laporan Anda di tugas phabricator yang terkait.
[[Category:Report a technical problem{{#translation:}}]]
1q78786ezdv1xqltw0x1ege3dkhdpz1
Wikifunctions:Report a technical problem/hu
4
21699
296963
279542
2026-08-06T18:03:09Z
FuzzyBot
207
Updating to match new version of source page
296963
wikitext
text/x-wiki
<languages/>
{{shortcut|[[WF:BUG]]}}
{{see also
|Special:MyLanguage/WF:Status|l1=WF:Status
|Special:MyLanguage/WF:Feature_petitions|l2=WF:Feature petitions
}}
Ha hibát találtál a Wikifunkciókban, vagy új funkciót javasolnál, kérjük, szólj!
<span id="Scope"></span>
== Hatáskör ==
* '''Hiba''' – hibás vagy váratlan eredményeket adó probléma. Megjegyzendő, hogy a függvények problémái e kontextusban nem hibák.
* '''Funkciójavaslat''' – a Wikifunkciókhoz hozzáadható ötlet annak jobbá tétele érdekében.
Segítségre van szükséged valami másban?
: Az alábbiak a Wikifunkciók fejlesztőcsapatának '''hatáskörén kívül''' van:
:* Az '''egyes függvények tartalma''' – Ezt a függvény vitalapján írd meg, vagy kérj segítséget a [[Wikifunctions:Project chat]] lapon vagy az alábbi csatornákon; ha szerinted egy függvény hiányzik, lásd: [[Wikifunctions:Suggest a function]]
:* <span lang="en" dir="ltr" class="mw-content-ltr">The '''Wikifunctions project's policies''' – Ask about those at [[Wikifunctions:Project chat]] or in the channels listed below</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Find existing bugs and feature requests ==
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">See '''[[Wikifunctions:Status]]''' for a quick summary of high-level issues.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">You can '''[[phab:maniphest/query/UzvNRqsdnymk/|search the Phabricator]] listing of open tasks''' to see if your bug or feature idea is already documented.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Discuss with others ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
You can ask questions about possible bugs or feature ideas at a few locations. This may be helpful if you are unsure how to clearly describe the bug or feature idea:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">The discussion page [[Wikifunctions:Project chat|here]].</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">The main chat on [https://t.me/Wikifunctions Telegram] or IRC {{channel|wikipedia-abstract}} (bridged together) ([https://wm-bot.wmcloud.org/logs/%23wikipedia-abstract/ logs], [https://wm-bot.wmflabs.org/logs/%23wikipedia-abstract/ old logs])</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">The developer chat on [https://t.me/abstract_wikipedia_tech Telegram] or IRC {{channel|wikipedia-abstract-tech}} (bridged together) ([https://wm-bot.wmcloud.org/logs/%23wikipedia-abstract-tech/ logs])</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
== File a task in Phabricator ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If you are familiar with Phabricator, you can search and file tasks directly.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If you are not yet familiar: Phabricator is the web-based development collaboration tool mostly used to manage MediaWiki software projects including Wikifunctions. A short summary about Phabricator for newcomers, including tutorial videos, is on MediaWiki's wiki at [[mw:Special:MyLanguage/Phabricator/Help|mw:Phabricator/Help]].
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">You can '''[[phab:maniphest/query/UzvNRqsdnymk/|search]] the listing of open tasks''' to see if your bug or feature idea is already documented.</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">The existing tasks are collected with the '''[[phab:tag/abstract wikipedia team|#abstract wikipedia team]] tag'''.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">You can '''[https://phabricator.wikimedia.org/maniphest/task/edit/form/43/?projects=abstract_wikipedia file a new task]'''. Please always include:</span>
** Példák
** Minden kapcsolódó link
** Hibák esetén: a hibát előállító lépések, így az reprodukálható és ellenőrizhető.
<div lang="en" dir="ltr" class="mw-content-ltr">
== Languages ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The development team understands a limited number of languages – but you are free to report issues in any language that you're comfortable with.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If possible, please provide a summary in English when creating a phabricator task, or ask someone to help you.
</div>
<span id="Follow-up"></span>
== Utólagos teendők ==
* <span lang="en" dir="ltr" class="mw-content-ltr">The locations above are followed by the Wikifunctions development team, as well as community members. The time to get a reply varies depending on the nature or complexity of the topic, etc. However, in general, you can get an answer within 2 workdays. Please let us know if we missed something, as life can get distracting!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Not all problems can be solved immediately: depending on the impact, priority, etc. some bugs can be triaged to low priority. You may follow the status of your report on the relevant linked phabricator task.</span>
[[Category:Report a technical problem{{#translation:}}]]
hy2175cav69utnpxyihky7nphobqdy9
Wikifunctions:Status updates
4
22740
296978
296608
2026-08-06T18:03:24Z
Ameisenigel
44
Marked this version for translation
296978
wikitext
text/x-wiki
<languages/>
{{shortcut|WF:SU}}{{notice|1=<translate><!--T:1--> '''[[<tvar name="sub">:m:Global message delivery/Targets/Wikifunctions & Abstract Wikipedia</tvar>|Subscribe]]''' to receive short on-wiki MassMessage notifications about each new issue</translate>}}
{{Wikifunctions updates
| prevlabel = <translate><!--T:2--> Previous update</translate>
| prev = 2024-02-01
| nextlabel = <translate><!--T:3--> Last update</translate>
| next = 2026-08-05
}}
<translate><!--T:4-->
A lot is happening around Wikifunctions and Abstract Wikipedia. This is the page where our updates are posted, including the [[<tvar name="1">Special:MyLanguage/WF:function of the Week</tvar>|function of the Week]].
<!--T:5-->
You can also subscribe to the [[<tvar name="sub">:m:Global message delivery/Targets/Wikifunctions & Abstract Wikipedia</tvar>|on-wiki newsletter]] to have them delivered to your talk page or to your project's village pump.</translate>
<inputbox>
type=fulltext
prefix={{NAMESPACE}}:{{PAGENAME}}/
break=no
width=30
searchbuttonlabel={{int:Search}}
placeholder=<translate nowrap><!--T:119--> Search all status updates</translate>
</inputbox>
<translate>
== Newsletters == <!--T:28-->
</translate>
<!--<nowiki> Newsletter entry template:
* <translate><tvar name="1">{{Status updates|2026-0?-??}}</tvar>: Title</translate>
NOTE: Remember to also update the "next =" date at the top of this page.
</nowiki>-->
=== 2026 ===
* <translate><!--T:131--> <tvar name="1">{{Status updates|2026-08-05}}</tvar>: An apple is a fruit</translate>
* <translate><!--T:130--> <tvar name="1">{{Status updates|2026-07-29}}</tvar>: Abstract Wikipedia at Wikimania</translate>
* <translate><!--T:129--> <tvar name="1">{{Status updates|2026-07-16}}</tvar>: Beyond syntactic tables</translate>
* <translate><!--T:128--> <tvar name="1">{{Status updates|2026-07-08}}</tvar>: Moving toward our first Abstract Wikipedia integration milestone</translate>
* <translate><!--T:127--> <tvar name="1">{{Status updates|2026-07-01}}</tvar>: Integration on test wiki and annual plan</translate>
* <translate><!--T:126--> <tvar name="1">{{Status updates|2026-06-26}}</tvar>: Working on Functions, together</translate>
* <translate><!--T:125--> <tvar name="1">{{Status updates|2026-06-19}}</tvar>: The or not the, this is (the?) question</translate>
* <translate><!--T:124--> <tvar name="1">{{Status updates|2026-06-12}}</tvar>: Improved loading and display of Test results</translate>
* <translate><!--T:123--> <tvar name="1">{{Status updates|2026-06-05}}</tvar>: The illustrated encyclopaedia</translate>
* <translate><!--T:122--> <tvar name="1">{{Status updates|2026-05-30}}</tvar>: Looking back and forward</translate>
* <translate><!--T:121--> <tvar name="1">{{Status updates|2026-05-23}}</tvar>: Annual plan 2026-2027</translate>
* <translate><!--T:120--> <tvar name="1">{{Status updates|2026-05-15}}</tvar>: A higher meaning</translate>
* <translate><!--T:117--> <tvar name="1">{{Status updates|2026-05-08}}</tvar>: References from Wikidata are now available</translate>
* <translate><!--T:116--> <tvar name="1">{{Status updates|2026-05-02}}</tvar>: Request for input: what should we count for Abstract Wikipedia?</translate>
* <translate><!--T:115--> <tvar name="1">{{Status updates|2026-04-25}}</tvar>: The Foundation's search for the perfect language</translate>
* <translate><!--T:114--> <tvar name="1">{{Status updates|2026-04-16}}</tvar>: Milestones; Some major issues hopefully resolved</translate>
* <translate><!--T:113--> <tvar name="1">{{Status updates|2026-04-10}}</tvar>: Community proposals for capturing meaning</translate>
* <translate><!--T:112--> <tvar name="1">{{Status updates|2026-04-02}}</tvar>: Request for Discussion: Syntactic tables</translate>
* <translate><!--T:111--> <tvar name="1">{{Status updates|2026-03-26}}</tvar>: First few days of Abstract Wikipedia Beta; Status of Composition Language v2</translate>
* <translate><!--T:110--> <tvar name="1">{{Status updates|2026-03-19}}</tvar>: Abstract Wikipedia in Beta</translate>
* <translate><!--T:109--> <tvar name="1">{{Status updates|2026-03-11}}</tvar>: A new composition language</translate>
* <translate><!--T:108--> <tvar name="1">{{Status updates|2026-03-06}}</tvar>: Citations and Copy and Paste</translate>
* <translate><!--T:107--> <tvar name="1">{{Status updates|2026-02-26}}</tvar>: Graceful overrides and fallbacks</translate>
* <translate><!--T:106--> <tvar name="1">{{Status updates|2026-02-20}}</tvar>: A sneak preview of Abstract Wikipedia</translate>
* <translate><!--T:105--> <tvar name="1">{{Status updates|2026-02-13}}</tvar>: Finishing each other sentences: Starting things; Offsite in Istanbul</translate>
* <translate><!--T:104--> <tvar name="1">{{Status updates|2026-01-29}}</tvar>: Integrating Abstract Wikipedia</translate>
* <translate><!--T:103--> <tvar name="1">{{Status updates|2026-01-22}}</tvar>: Quarterly plan for January–March 2026</translate>
* <translate><!--T:102--> <tvar name="1">{{Status updates|2026-01-15}}</tvar>: 25 years of Wikipedia</translate>
=== 2025 ===
* <translate><!--T:101--> <tvar name="1">{{Status updates|2025-12-18}}</tvar>: We wish you a happy new Gregorian year!</translate>
* <translate><!--T:100--> <tvar name="1">{{Status updates|2025-12-11}}</tvar>: How to write better error messages</translate>
* <translate><!--T:99--> <tvar name="1">{{Status updates|2025-12-04}}</tvar>: And the name is Abstract Wikipedia</translate>
* <translate><!--T:98--> <tvar name="1">{{Status updates|2025-11-27}}</tvar>: Vote on the new wiki name!; Finishing each other’s sentences</translate>
* <translate><!--T:97--> <tvar name="1">{{Status updates|2025-11-20}}</tvar>: Second round of voting for naming the wiki with language-independent content; Sharing function calls</translate>
* <translate><!--T:96--> <tvar name="1">{{Status updates|2025-11-13}}</tvar>: Getting ready for second round of voting for naming the wiki with abstract content; Rewriting the backend: Why Rust?</translate>
* <translate><!--T:95--> <tvar name="1">{{Status updates|2025-11-05}}</tvar>: First round of voting for naming the wiki for abstract content closed; Calling for Wiktionary functions; Embedded Wikifunctions on Bengali Wikipedia and seven more Wiktionaries</translate>
* <translate><!--T:94--> <tvar name="1">{{Status updates|2025-10-29}}</tvar>: Round 1 of “abstract content wiki” naming vote ending Monday; An example of short descriptions</translate>
* <translate><!--T:93--> <tvar name="1">{{Status updates|2025-10-23}}</tvar>: Welcome Zaree and Laura! Naming contest round 1 kicked off</translate>
* <translate><!--T:92--> <tvar name="1">{{Status updates|2025-10-15}}</tvar>: Kicking Off the Naming Contest for Abstract Wikipedia; Visualizing functions</translate>
* <translate><!--T:91--> <tvar name="1">{{Status updates|2025-10-08}}</tvar>: Decision on location for abstract content and Quarterly Planning for October–December</translate>
* <translate><!--T:90--> <tvar name="1">{{Status updates|2025-10-03}}</tvar>: Rich text now available in embedded function calls on 148 Wiktionaries and Incubator</translate>
* <translate><!--T:89--> <tvar name="1">{{Status updates|2025-09-26}}</tvar>: Accessing qualifiers in Wikidata statements</translate>
* <translate><!--T:88--> <tvar name="1">{{Status updates|2025-09-19}}</tvar>: Wikifunctions available on 123 Wiktionary languages</translate>
* <translate><!--T:87--> <tvar name="1">{{Status updates|2025-09-12}}</tvar>: More than 3,000 functions on Wikifunctions</translate>
* <translate><!--T:86--> <tvar name="1">{{Status updates|2025-09-07}}</tvar>: Copying function calls from one Wikipedia to another</translate>
* <translate><!--T:85--> <tvar name="1">{{Status updates|2025-08-29}}</tvar>: Accessing Wikidata items now possible from embedded function calls; Wikifunctions available on 65 Wikitionaries</translate>
* <translate><!--T:84--> <tvar name="1">{{Status updates|2025-08-22}}</tvar>: Recording of Wikimania session: Wikifunctions is coming soon to a wiki near you!</translate>
* <translate><!--T:83--> <tvar name="1">{{Status updates|2025-08-01}}</tvar>: Wikimania 2025 is coming soon!</translate>
* <translate><!--T:82--> <tvar name="1">{{Status updates|2025-07-26}}</tvar>: “Wikipedia is an encyclopedia”; Two years of Wikifunctions</translate>
* <translate><!--T:81--> <tvar name="1">{{Status updates|2025-07-19}}</tvar>: Wikidata-based enumerations are here</translate>
* <translate><!--T:80--> <tvar name="1">{{Status updates|2025-07-10}}</tvar>: Length limits on labels and descriptions</translate>
* <translate><!--T:79--> <tvar name="1">{{Status updates|2025-07-04}}</tvar>: Coverage of 1298</translate>
* <translate><!--T:78--> <tvar name="1">{{Status updates|2025-06-27}}</tvar>: How many people are needed to write an encyclopedia?</translate>
* <translate><!--T:76--> <tvar name="1">{{Status updates|2025-06-21}}</tvar>: Quarterly Planning for July–September 2025</translate>
* <translate><!--T:77--> <tvar name="1">{{Status updates|2025-06-15}}</tvar>: Closing the consultation about the location of Abstract Content</translate>
* <translate><!--T:75--> <tvar name="1">{{Status updates|2025-06-06}}</tvar>: Where will Abstract Content go?</translate>
* <translate><!--T:74--> <tvar name="1">{{Status updates|2025-05-29}}</tvar>: Rolling out to five Wiktionaries; Calculating with today's date</translate>
* <translate><!--T:73--> <tvar name="1">{{Status updates|2025-05-23}}</tvar>: Ongoing consultation about the Location for Abstract Content</translate>
* <translate><!--T:72--> <tvar name="1">{{Status updates|2025-05-15}}</tvar>: Location of Abstract Content</translate>
* <translate><!--T:71--> <tvar name="1">{{Status updates|2025-05-09}}</tvar>: Abstract Wikipedia and the Wikimedia AI Strategy</translate>
* <translate><!--T:70--> <tvar name="1">{{Status updates|2025-04-30}}</tvar>: Abstract Wikipedia is a MacArthur 100&Change finalist</translate>
* <translate><!--T:69--> <tvar name="1">{{Status updates|2025-04-25}}</tvar>: Welcome, Gregory!</translate>
* <translate><!--T:68--> <tvar name="1">{{Status updates|2025-04-16}}</tvar>: Wikifunctions integrated in Dagbani - and Wikifunctions; and the date of Easter</translate>
* <translate><!--T:67--> <tvar name="1">{{Status updates|2025-04-11}}</tvar>: Quarter in review</translate>
* <translate><!--T:65--> <tvar name="1">{{Status updates|2025-04-05}}</tvar>: Quarterly Planning for April–June 2025; We are looking for a Senior Product Manager</translate>
* <translate><!--T:66--> <tvar name="1">{{Status updates|2025-03-28}}</tvar>: It's about time</translate>
* <translate><!--T:64--> <tvar name="1">{{Status updates|2025-03-20}}</tvar>: Wikidata-based simple enumerations</translate>
* <translate><!--T:63--> <tvar name="1">{{Status updates|2025-03-15}}</tvar>: Upcoming NLG meeting, Recent Changes in the software</translate>
* <translate><!--T:62--> <tvar name="1">{{Status updates|2025-03-07}}</tvar>: Recent Changes in the software, Recording of Volunteer’s Corner, and talks in London</translate>
* <translate><!--T:61--> <tvar name="1">{{Status updates|2025-02-26}}</tvar>: From things to words</translate>
* <translate><!--T:60--> <tvar name="1">{{Status updates|2025-02-19}}</tvar>: A proposal for types per language and part of speech</translate>
* <translate><!--T:59--> <tvar name="1">{{Status updates|2025-02-13}}</tvar>: Restricting the World, redux</translate>
* <translate><!--T:58--> <tvar name="1">{{Status updates|2025-02-06}}</tvar>: Invitation to the Natural Language Generation Special Interest Group</translate>
* <translate><!--T:57--> <tvar name="1">{{Status updates|2025-01-29}}</tvar>: With 2000 Functions into the new year: time for stats</translate>
* <translate><!--T:56--> <tvar name="1">{{Status updates|2025-01-22}}</tvar>: Welcome, David! Naming conventions recommendations</translate>
* <translate><!--T:55--> <tvar name="1">{{Status updates|2025-01-15}}</tvar>: Happy Wikipedia day! Quarterly planning</translate>
=== 2024 ===
* <translate><!--T:54--> <tvar name="1">{{Status updates|2024-12-19}}</tvar>: Function of the Week: age; Intros for year articles; New Type: Floating-point number</translate>
* <translate><!--T:53--> <tvar name="1">{{Status updates|2024-12-12}}</tvar>: Sketching a path to Abstract Wikipedia; Team offsite in Lisbon; and much more</translate>
* <translate><!--T:52--> <tvar name="1">{{Status updates|2024-11-27}}</tvar>: WordGraph release; New Special page: list functions by tests; new type for day of the year, and much more</translate>
* <translate><!--T:51--> <tvar name="1">{{Status updates|2024-11-21}}</tvar>: New special page for missing labels, new type for Gregorian years, and much more</translate>
* <translate><!--T:50--> <tvar name="1">{{Status updates|2024-11-13}}</tvar>: New Type: Rational number; Documentation on Wikidata-based types; and more</translate>
* <translate><!--T:48--> <tvar name="1">{{Status updates|2024-11-07}}</tvar>: The Dream of a Universal Language</translate>
* <translate><!--T:49--> <tvar name="1">{{Status updates|2024-11-01}}</tvar>: Rewriting the backend</translate>
* <translate><!--T:47--> <tvar name="1">{{Status updates|2024-10-25}}</tvar>: Our goal for this Quarter: Agreement</translate>
* <translate><!--T:45--> <tvar name="1">{{Status updates|2024-10-17}}</tvar>: What could abstract content look like?</translate>
* <translate><!--T:46--> <tvar name="1">{{Status updates|2024-10-11}}</tvar>: Wikidata Lexemes in Wikifunctions are coming soon</translate>
* <translate><!--T:44--> <tvar name="1">{{Status updates|2024-10-02}}</tvar>: Focus topic: Food</translate>
* <translate><!--T:43--> <tvar name="1">{{Status updates|2024-09-26}}</tvar>: Quarterly planning for October–December 2024; Presentation at Celtic Knot tomorrow</translate>
* <translate><!--T:42--> <tvar name="1">{{Status updates|2024-09-20}}</tvar>: Introducing focus topic areas</translate>
* <translate><!--T:41--> <tvar name="1">{{Status updates|2024-09-13}}</tvar>: Dagbani Wikipedia will be our first wiki for Wikifunctions integration</translate>
* <translate><!--T:40--> <tvar name="1">{{Status updates|2024-09-06}}</tvar>: Volunteer's corner and other updates</translate>
* <translate><!--T:39--> <tvar name="1">{{Status updates|2024-08-29}}</tvar>: Limits on Name and Description Lengths</translate>
* <translate><!--T:38--> <tvar name="1">{{Status updates|2024-08-23}}</tvar>: WasmEdge, Now 300ms Less Edgy</translate>
* <translate><!--T:37--> <tvar name="1">{{Status updates|2024-08-16}}</tvar>: Wikimania 2024 edition</translate>
* <translate><!--T:36--> <tvar name="1">{{Status updates|2024-08-02}}</tvar>: Revamping our 'About' widget</translate>
* <translate><!--T:35--> <tvar name="1">{{Status updates|2024-07-26}}</tvar>: Wikimania 2024 coming soon!</translate>
* <translate><!--T:34--> <tvar name="1">{{Status updates|2024-07-18}}</tvar>: Research report on integrating Wikifunctions from Wikipedia</translate>
* <translate><!--T:33--> <tvar name="1">{{Status updates|2024-07-10}}</tvar>: Type proposals for accessing Lexemes</translate>
* <translate><!--T:32--> <tvar name="1">{{Status updates|2024-07-03}}</tvar>: Quarterly planning</translate>
* <translate><!--T:31--> <tvar name="1">{{Status updates|2024-06-26}}</tvar>: Welcome, Daphne!</translate>
* <translate><!--T:30--> <tvar name="1">{{Status updates|2024-06-20}}</tvar>: New Type: Integers</translate>
* <translate><!--T:29--> <tvar name="1">{{Status updates|2024-06-13}}</tvar>: New Type: Igbo calendar months</translate>
* <translate><!--T:27--> <tvar name="1">{{Status updates|2024-06-06}}</tvar>: New Type: Sign</translate>
* <translate><!--T:26--> <tvar name="1">{{Status updates|2024-05-30}}</tvar>: A single singular or a plurality of plurals?</translate>
* <translate><!--T:25--> <tvar name="1">{{Status updates|2024-05-22}}</tvar>: New Type: Gregorian calendar months</translate>
* <translate><!--T:24--> <tvar name="1">{{Status updates|2024-05-15}}</tvar>: Call for Functions: Spell out the number!</translate>
* <translate><!--T:23--> <tvar name="1">{{Status updates|2024-05-10}}</tvar>: Flagship type for enumerations: Months of the Gregorian calendar</translate>
* <translate><!--T:22--> <tvar name="1">{{Status updates|2024-05-03}}</tvar>: Team meeting and Quarterly plan</translate>
* <translate><!--T:21--> <tvar name="1">{{Status updates|2024-04-19}}</tvar>: Welcome, Sharvani!</translate>
* <translate><!--T:20--> <tvar name="1">{{Status updates|2024-04-11}}</tvar>: New API for calling Wikifunctions and celebrating 1000 functions</translate>
* <translate><!--T:19--> <tvar name="1">{{Status updates|2024-04-03}}</tvar>: Product Update on Diff and Upcoming API Improvements</translate>
* <translate><!--T:18--> <tvar name="1">{{Status updates|2024-03-28}}</tvar>: Creating tests is now much easier!</translate>
* <translate><!--T:17--> <tvar name="1">{{Status updates|2024-03-21}}</tvar>: On the way to internationalizing numbers</translate>
* <translate><!--T:16--> <tvar name="1">{{Status updates|2024-03-13}}</tvar>: On identity</translate>
* <translate><!--T:15--> <tvar name="1">{{Status updates|2024-03-07}}</tvar>: Introducing our second new type: Natural numbers</translate>
* <translate><!--T:14--> <tvar name="1">{{Status updates|2024-02-28}}</tvar>: Type proposal for natural numbers</translate>
* <translate><!--T:13--> <tvar name="1">{{Status updates|2024-02-22}}</tvar>: Updating the function model</translate>
* <translate><!--T:12--> <tvar name="1">{{Status updates|2024-02-14}}</tvar>: Fix-it week</translate>
* <translate><!--T:11--> <tvar name="1">{{Status updates|2024-02-07}}</tvar>: Quarterly planning. Thank you, Nick! Function of the Week: is permutation</translate>
* <translate><!--T:9--> <tvar name="1">{{Status updates|2024-02-01}}</tvar>: The Igbo Imperative!</translate>
<translate>
=== Before February 2024 === <!--T:7-->
<!--T:10-->
All updates from this period are [[<tvar name="meta">:m:Special:MyLanguage/Abstract Wikipedia/Updates</tvar>|available on Meta-Wiki]].
</translate>
[[Category:Status updates{{#translation:}}| ]]
rc48rhwpat5jb0x21ho34w3a740e9o3
Wikifunctions:Status updates/en
4
22759
296986
295111
2026-08-06T18:03:34Z
FuzzyBot
207
Updating to match new version of source page
296986
wikitext
text/x-wiki
<languages/>
{{shortcut|WF:SU}}{{notice|1='''[[:m:Global message delivery/Targets/Wikifunctions & Abstract Wikipedia|Subscribe]]''' to receive short on-wiki MassMessage notifications about each new issue}}
{{Wikifunctions updates
| prevlabel = Previous update
| prev = 2024-02-01
| nextlabel = Last update
| next = 2026-08-05
}}
A lot is happening around Wikifunctions and Abstract Wikipedia. This is the page where our updates are posted, including the [[Special:MyLanguage/WF:function of the Week|function of the Week]].
You can also subscribe to the [[:m:Global message delivery/Targets/Wikifunctions & Abstract Wikipedia|on-wiki newsletter]] to have them delivered to your talk page or to your project's village pump.
<inputbox>
type=fulltext
prefix={{NAMESPACE}}:{{PAGENAME}}/
break=no
width=30
searchbuttonlabel={{int:Search}}
placeholder=Search all status updates
</inputbox>
== Newsletters ==
<!--<nowiki> Newsletter entry template:
* <translate><tvar name="1">{{Status updates|2026-0?-??}}</tvar>: Title</translate>
NOTE: Remember to also update the "next =" date at the top of this page.
</nowiki>-->
=== 2026 ===
* {{Status updates|2026-08-05}}: An apple is a fruit
* {{Status updates|2026-07-29}}: Abstract Wikipedia at Wikimania
* {{Status updates|2026-07-16}}: Beyond syntactic tables
* {{Status updates|2026-07-08}}: Moving toward our first Abstract Wikipedia integration milestone
* {{Status updates|2026-07-01}}: Integration on test wiki and annual plan
* {{Status updates|2026-06-26}}: Working on Functions, together
* {{Status updates|2026-06-19}}: The or not the, this is (the?) question
* {{Status updates|2026-06-12}}: Improved loading and display of Test results
* {{Status updates|2026-06-05}}: The illustrated encyclopaedia
* {{Status updates|2026-05-30}}: Looking back and forward
* {{Status updates|2026-05-23}}: Annual plan 2026-2027
* {{Status updates|2026-05-15}}: A higher meaning
* {{Status updates|2026-05-08}}: References from Wikidata are now available
* {{Status updates|2026-05-02}}: Request for input: what should we count for Abstract Wikipedia?
* {{Status updates|2026-04-25}}: The Foundation's search for the perfect language
* {{Status updates|2026-04-16}}: Milestones; Some major issues hopefully resolved
* {{Status updates|2026-04-10}}: Community proposals for capturing meaning
* {{Status updates|2026-04-02}}: Request for Discussion: Syntactic tables
* {{Status updates|2026-03-26}}: First few days of Abstract Wikipedia Beta; Status of Composition Language v2
* {{Status updates|2026-03-19}}: Abstract Wikipedia in Beta
* {{Status updates|2026-03-11}}: A new composition language
* {{Status updates|2026-03-06}}: Citations and Copy and Paste
* {{Status updates|2026-02-26}}: Graceful overrides and fallbacks
* {{Status updates|2026-02-20}}: A sneak preview of Abstract Wikipedia
* {{Status updates|2026-02-13}}: Finishing each other sentences: Starting things; Offsite in Istanbul
* {{Status updates|2026-01-29}}: Integrating Abstract Wikipedia
* {{Status updates|2026-01-22}}: Quarterly plan for January–March 2026
* {{Status updates|2026-01-15}}: 25 years of Wikipedia
=== 2025 ===
* {{Status updates|2025-12-18}}: We wish you a happy new Gregorian year!
* {{Status updates|2025-12-11}}: How to write better error messages
* {{Status updates|2025-12-04}}: And the name is Abstract Wikipedia
* {{Status updates|2025-11-27}}: Vote on the new wiki name!; Finishing each other’s sentences
* {{Status updates|2025-11-20}}: Second round of voting for naming the wiki with language-independent content; Sharing function calls
* {{Status updates|2025-11-13}}: Getting ready for second round of voting for naming the wiki with abstract content; Rewriting the backend: Why Rust?
* {{Status updates|2025-11-05}}: First round of voting for naming the wiki for abstract content closed; Calling for Wiktionary functions; Embedded Wikifunctions on Bengali Wikipedia and seven more Wiktionaries
* {{Status updates|2025-10-29}}: Round 1 of “abstract content wiki” naming vote ending Monday; An example of short descriptions
* {{Status updates|2025-10-23}}: Welcome Zaree and Laura! Naming contest round 1 kicked off
* {{Status updates|2025-10-15}}: Kicking Off the Naming Contest for Abstract Wikipedia; Visualizing functions
* {{Status updates|2025-10-08}}: Decision on location for abstract content and Quarterly Planning for October–December
* {{Status updates|2025-10-03}}: Rich text now available in embedded function calls on 148 Wiktionaries and Incubator
* {{Status updates|2025-09-26}}: Accessing qualifiers in Wikidata statements
* {{Status updates|2025-09-19}}: Wikifunctions available on 123 Wiktionary languages
* {{Status updates|2025-09-12}}: More than 3,000 functions on Wikifunctions
* {{Status updates|2025-09-07}}: Copying function calls from one Wikipedia to another
* {{Status updates|2025-08-29}}: Accessing Wikidata items now possible from embedded function calls; Wikifunctions available on 65 Wikitionaries
* {{Status updates|2025-08-22}}: Recording of Wikimania session: Wikifunctions is coming soon to a wiki near you!
* {{Status updates|2025-08-01}}: Wikimania 2025 is coming soon!
* {{Status updates|2025-07-26}}: “Wikipedia is an encyclopedia”; Two years of Wikifunctions
* {{Status updates|2025-07-19}}: Wikidata-based enumerations are here
* {{Status updates|2025-07-10}}: Length limits on labels and descriptions
* {{Status updates|2025-07-04}}: Coverage of 1298
* {{Status updates|2025-06-27}}: How many people are needed to write an encyclopedia?
* {{Status updates|2025-06-21}}: Quarterly Planning for July–September 2025
* {{Status updates|2025-06-15}}: Closing the consultation about the location of Abstract Content
* {{Status updates|2025-06-06}}: Where will Abstract Content go?
* {{Status updates|2025-05-29}}: Rolling out to five Wiktionaries; Calculating with today's date
* {{Status updates|2025-05-23}}: Ongoing consultation about the Location for Abstract Content
* {{Status updates|2025-05-15}}: Location of Abstract Content
* {{Status updates|2025-05-09}}: Abstract Wikipedia and the Wikimedia AI Strategy
* {{Status updates|2025-04-30}}: Abstract Wikipedia is a MacArthur 100&Change finalist
* {{Status updates|2025-04-25}}: Welcome, Gregory!
* {{Status updates|2025-04-16}}: Wikifunctions integrated in Dagbani - and Wikifunctions; and the date of Easter
* {{Status updates|2025-04-11}}: Quarter in review
* {{Status updates|2025-04-05}}: Quarterly Planning for April–June 2025; We are looking for a Senior Product Manager
* {{Status updates|2025-03-28}}: It's about time
* {{Status updates|2025-03-20}}: Wikidata-based simple enumerations
* {{Status updates|2025-03-15}}: Upcoming NLG meeting, Recent Changes in the software
* {{Status updates|2025-03-07}}: Recent Changes in the software, Recording of Volunteer’s Corner, and talks in London
* {{Status updates|2025-02-26}}: From things to words
* {{Status updates|2025-02-19}}: A proposal for types per language and part of speech
* {{Status updates|2025-02-13}}: Restricting the World, redux
* {{Status updates|2025-02-06}}: Invitation to the Natural Language Generation Special Interest Group
* {{Status updates|2025-01-29}}: With 2000 Functions into the new year: time for stats
* {{Status updates|2025-01-22}}: Welcome, David! Naming conventions recommendations
* {{Status updates|2025-01-15}}: Happy Wikipedia day! Quarterly planning
=== 2024 ===
* {{Status updates|2024-12-19}}: Function of the Week: age; Intros for year articles; New Type: Floating-point number
* {{Status updates|2024-12-12}}: Sketching a path to Abstract Wikipedia; Team offsite in Lisbon; and much more
* {{Status updates|2024-11-27}}: WordGraph release; New Special page: list functions by tests; new type for day of the year, and much more
* {{Status updates|2024-11-21}}: New special page for missing labels, new type for Gregorian years, and much more
* {{Status updates|2024-11-13}}: New Type: Rational number; Documentation on Wikidata-based types; and more
* {{Status updates|2024-11-07}}: The Dream of a Universal Language
* {{Status updates|2024-11-01}}: Rewriting the backend
* {{Status updates|2024-10-25}}: Our goal for this Quarter: Agreement
* {{Status updates|2024-10-17}}: What could abstract content look like?
* {{Status updates|2024-10-11}}: Wikidata Lexemes in Wikifunctions are coming soon
* {{Status updates|2024-10-02}}: Focus topic: Food
* {{Status updates|2024-09-26}}: Quarterly planning for October–December 2024; Presentation at Celtic Knot tomorrow
* {{Status updates|2024-09-20}}: Introducing focus topic areas
* {{Status updates|2024-09-13}}: Dagbani Wikipedia will be our first wiki for Wikifunctions integration
* {{Status updates|2024-09-06}}: Volunteer's corner and other updates
* {{Status updates|2024-08-29}}: Limits on Name and Description Lengths
* {{Status updates|2024-08-23}}: WasmEdge, Now 300ms Less Edgy
* {{Status updates|2024-08-16}}: Wikimania 2024 edition
* {{Status updates|2024-08-02}}: Revamping our 'About' widget
* {{Status updates|2024-07-26}}: Wikimania 2024 coming soon!
* {{Status updates|2024-07-18}}: Research report on integrating Wikifunctions from Wikipedia
* {{Status updates|2024-07-10}}: Type proposals for accessing Lexemes
* {{Status updates|2024-07-03}}: Quarterly planning
* {{Status updates|2024-06-26}}: Welcome, Daphne!
* {{Status updates|2024-06-20}}: New Type: Integers
* {{Status updates|2024-06-13}}: New Type: Igbo calendar months
* {{Status updates|2024-06-06}}: New Type: Sign
* {{Status updates|2024-05-30}}: A single singular or a plurality of plurals?
* {{Status updates|2024-05-22}}: New Type: Gregorian calendar months
* {{Status updates|2024-05-15}}: Call for Functions: Spell out the number!
* {{Status updates|2024-05-10}}: Flagship type for enumerations: Months of the Gregorian calendar
* {{Status updates|2024-05-03}}: Team meeting and Quarterly plan
* {{Status updates|2024-04-19}}: Welcome, Sharvani!
* {{Status updates|2024-04-11}}: New API for calling Wikifunctions and celebrating 1000 functions
* {{Status updates|2024-04-03}}: Product Update on Diff and Upcoming API Improvements
* {{Status updates|2024-03-28}}: Creating tests is now much easier!
* {{Status updates|2024-03-21}}: On the way to internationalizing numbers
* {{Status updates|2024-03-13}}: On identity
* {{Status updates|2024-03-07}}: Introducing our second new type: Natural numbers
* {{Status updates|2024-02-28}}: Type proposal for natural numbers
* {{Status updates|2024-02-22}}: Updating the function model
* {{Status updates|2024-02-14}}: Fix-it week
* {{Status updates|2024-02-07}}: Quarterly planning. Thank you, Nick! Function of the Week: is permutation
* {{Status updates|2024-02-01}}: The Igbo Imperative!
=== Before February 2024 ===
All updates from this period are [[:m:Special:MyLanguage/Abstract Wikipedia/Updates|available on Meta-Wiki]].
[[Category:Status updates{{#translation:}}| ]]
h6u3quv6nqttlq9gujq59doltd849n1
Wikifunctions:Status updates/pl
4
22849
296995
295123
2026-08-06T18:03:41Z
FuzzyBot
207
Updating to match new version of source page
296995
wikitext
text/x-wiki
<languages/>
{{shortcut|WF:SU}}{{notice|1=<span lang="en" dir="ltr" class="mw-content-ltr">'''[[:m:Global message delivery/Targets/Wikifunctions & Abstract Wikipedia|Subscribe]]''' to receive short on-wiki MassMessage notifications about each new issue</span>}}
{{Wikifunctions updates
| prevlabel = Poprzednia aktualizacja
| prev = 2024-02-01
| nextlabel = Ostatnia aktualizacja
| next = 2026-08-05
}}
<div lang="en" dir="ltr" class="mw-content-ltr">
A lot is happening around Wikifunctions and Abstract Wikipedia. This is the page where our updates are posted, including the [[Special:MyLanguage/WF:function of the Week|function of the Week]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
You can also subscribe to the [[:m:Global message delivery/Targets/Wikifunctions & Abstract Wikipedia|on-wiki newsletter]] to have them delivered to your talk page or to your project's village pump.
</div>
<inputbox>
type=fulltext
prefix={{NAMESPACE}}:{{PAGENAME}}/
break=no
width=30
searchbuttonlabel={{int:Search}}
placeholder=Search all status updates
</inputbox>
<span id="Newsletters"></span>
== Newslettery ==
<!--<nowiki> Newsletter entry template:
* <translate><tvar name="1">{{Status updates|2026-0?-??}}</tvar>: Title</translate>
NOTE: Remember to also update the "next =" date at the top of this page.
</nowiki>-->
=== 2026 ===
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-08-05}}: An apple is a fruit</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-07-29}}: Abstract Wikipedia at Wikimania</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-07-16}}: Beyond syntactic tables</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-07-08}}: Moving toward our first Abstract Wikipedia integration milestone</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-07-01}}: Integration on test wiki and annual plan</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-06-26}}: Working on Functions, together</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-06-19}}: The or not the, this is (the?) question</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-06-12}}: Improved loading and display of Test results</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-06-05}}: The illustrated encyclopaedia</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-05-30}}: Looking back and forward</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-05-23}}: Annual plan 2026-2027</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-05-15}}: A higher meaning</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-05-08}}: References from Wikidata are now available</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-05-02}}: Request for input: what should we count for Abstract Wikipedia?</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-04-25}}: The Foundation's search for the perfect language</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-04-16}}: Milestones; Some major issues hopefully resolved</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-04-10}}: Community proposals for capturing meaning</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-04-02}}: Request for Discussion: Syntactic tables</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-03-26}}: First few days of Abstract Wikipedia Beta; Status of Composition Language v2</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-03-19}}: Abstract Wikipedia in Beta</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-03-11}}: A new composition language</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-03-06}}: Citations and Copy and Paste</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-02-26}}: Graceful overrides and fallbacks</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-02-20}}: A sneak preview of Abstract Wikipedia</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-02-13}}: Finishing each other sentences: Starting things; Offsite in Istanbul</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-01-29}}: Integrating Abstract Wikipedia</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-01-22}}: Quarterly plan for January–March 2026</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-01-15}}: 25 years of Wikipedia</span>
=== 2025 ===
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-12-18}}: We wish you a happy new Gregorian year!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-12-11}}: How to write better error messages</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-12-04}}: And the name is Abstract Wikipedia</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-11-27}}: Vote on the new wiki name!; Finishing each other’s sentences</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-11-20}}: Second round of voting for naming the wiki with language-independent content; Sharing function calls</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-11-13}}: Getting ready for second round of voting for naming the wiki with abstract content; Rewriting the backend: Why Rust?</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-11-05}}: First round of voting for naming the wiki for abstract content closed; Calling for Wiktionary functions; Embedded Wikifunctions on Bengali Wikipedia and seven more Wiktionaries</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-10-29}}: Round 1 of “abstract content wiki” naming vote ending Monday; An example of short descriptions</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-10-23}}: Welcome Zaree and Laura! Naming contest round 1 kicked off</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-10-15}}: Kicking Off the Naming Contest for Abstract Wikipedia; Visualizing functions</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-10-08}}: Decision on location for abstract content and Quarterly Planning for October–December</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-10-03}}: Rich text now available in embedded function calls on 148 Wiktionaries and Incubator</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-09-26}}: Accessing qualifiers in Wikidata statements</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-09-19}}: Wikifunctions available on 123 Wiktionary languages</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-09-12}}: More than 3,000 functions on Wikifunctions</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-09-07}}: Copying function calls from one Wikipedia to another</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-08-29}}: Accessing Wikidata items now possible from embedded function calls; Wikifunctions available on 65 Wikitionaries</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-08-22}}: Recording of Wikimania session: Wikifunctions is coming soon to a wiki near you!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-08-01}}: Wikimania 2025 is coming soon!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-07-26}}: “Wikipedia is an encyclopedia”; Two years of Wikifunctions</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-07-19}}: Wikidata-based enumerations are here</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-07-10}}: Length limits on labels and descriptions</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-07-04}}: Coverage of 1298</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-06-27}}: How many people are needed to write an encyclopedia?</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-06-21}}: Quarterly Planning for July–September 2025</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-06-15}}: Closing the consultation about the location of Abstract Content</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-06-06}}: Where will Abstract Content go?</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-05-29}}: Rolling out to five Wiktionaries; Calculating with today's date</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-05-23}}: Ongoing consultation about the Location for Abstract Content</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-05-15}}: Location of Abstract Content</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-05-09}}: Abstract Wikipedia and the Wikimedia AI Strategy</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-04-30}}: Abstract Wikipedia is a MacArthur 100&Change finalist</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-04-25}}: Welcome, Gregory!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-04-16}}: Wikifunctions integrated in Dagbani - and Wikifunctions; and the date of Easter</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-04-11}}: Quarter in review</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-04-05}}: Quarterly Planning for April–June 2025; We are looking for a Senior Product Manager</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-03-28}}: It's about time</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-03-20}}: Wikidata-based simple enumerations</span>
* {{Status updates|2025-03-15}}: nadchodzące spotkanie NLG, najnowsze zmiany w oprogramowaniu
* {{Status updates|2025-03-07}}: Ostatnie zmiany w oprogramowaniu, nagranie Kącika Wolontariuszy oraz spotkania w Londynie
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-02-26}}: From things to words</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-02-19}}: A proposal for types per language and part of speech</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-02-13}}: Restricting the World, redux</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-02-06}}: Invitation to the Natural Language Generation Special Interest Group</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-01-29}}: With 2000 Functions into the new year: time for stats</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-01-22}}: Welcome, David! Naming conventions recommendations</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-01-15}}: Happy Wikipedia day! Quarterly planning</span>
=== 2024 ===
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-12-19}}: Function of the Week: age; Intros for year articles; New Type: Floating-point number</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-12-12}}: Sketching a path to Abstract Wikipedia; Team offsite in Lisbon; and much more</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-11-27}}: WordGraph release; New Special page: list functions by tests; new type for day of the year, and much more</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-11-21}}: New special page for missing labels, new type for Gregorian years, and much more</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-11-13}}: New Type: Rational number; Documentation on Wikidata-based types; and more</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-11-07}}: The Dream of a Universal Language</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-11-01}}: Rewriting the backend</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-10-25}}: Our goal for this Quarter: Agreement</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-10-17}}: What could abstract content look like?</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-10-11}}: Wikidata Lexemes in Wikifunctions are coming soon</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-10-02}}: Focus topic: Food</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-09-26}}: Quarterly planning for October–December 2024; Presentation at Celtic Knot tomorrow</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-09-20}}: Introducing focus topic areas</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-09-13}}: Dagbani Wikipedia will be our first wiki for Wikifunctions integration</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-09-06}}: Volunteer's corner and other updates</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-08-29}}: Limits on Name and Description Lengths</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-08-23}}: WasmEdge, Now 300ms Less Edgy</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-08-16}}: Wikimania 2024 edition</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-08-02}}: Revamping our 'About' widget</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-07-26}}: Wikimania 2024 coming soon!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-07-18}}: Research report on integrating Wikifunctions from Wikipedia</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-07-10}}: Type proposals for accessing Lexemes</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-07-03}}: Quarterly planning</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-06-26}}: Welcome, Daphne!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-06-20}}: New Type: Integers</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-06-13}}: New Type: Igbo calendar months</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-06-06}}: New Type: Sign</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-05-30}}: A single singular or a plurality of plurals?</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-05-22}}: New Type: Gregorian calendar months</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-05-15}}: Call for Functions: Spell out the number!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-05-10}}: Flagship type for enumerations: Months of the Gregorian calendar</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-05-03}}: Team meeting and Quarterly plan</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-04-19}}: Welcome, Sharvani!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-04-11}}: New API for calling Wikifunctions and celebrating 1000 functions</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-04-03}}: Product Update on Diff and Upcoming API Improvements</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-03-28}}: Creating tests is now much easier!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-03-21}}: On the way to internationalizing numbers</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-03-13}}: On identity</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-03-07}}: Introducing our second new type: Natural numbers</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-02-28}}: Type proposal for natural numbers</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-02-22}}: Updating the function model</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-02-14}}: Fix-it week</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-02-07}}: Quarterly planning. Thank you, Nick! Function of the Week: is permutation</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-02-01}}: The Igbo Imperative!</span>
<span id="Before_February_2024"></span>
=== Do lutego 2024 ===
<div lang="en" dir="ltr" class="mw-content-ltr">
All updates from this period are [[:m:Special:MyLanguage/Abstract Wikipedia/Updates|available on Meta-Wiki]].
</div>
[[Category:Status updates{{#translation:}}| ]]
msyrair1sgycfpb9i7ppvtnecapq863
Wikifunctions:Status updates/de
4
22906
296983
295110
2026-08-06T18:03:32Z
FuzzyBot
207
Updating to match new version of source page
296983
wikitext
text/x-wiki
<languages/>
{{shortcut|WF:SU}}{{notice|1='''[[:m:Global message delivery/Targets/Wikifunctions & Abstract Wikipedia|Abonniere]]''' kurze MassMessage-Benachrichtigungen im Wiki über jede neue Ausgabe.}}
{{Wikifunctions updates
| prevlabel = Vorheriges Update
| prev = 2024-02-01
| nextlabel = Letztes Update
| next = 2026-08-05
}}
Es passiert viel rund um Wikifunctions und die Abstrakte Wikipedia. Auf dieser Seite werden unsere Updates veröffentlicht, inklusive der [[Special:MyLanguage/WF:function of the Week|Funktion der Woche]].
Du kannst auch den [[:m:Global message delivery/Targets/Wikifunctions & Abstract Wikipedia|On-Wiki-Newsletter]] abonnieren, um sie auf deine Diskussionsseite oder die Projektdiskussion deines Projekts geliefert zu bekommen.
<inputbox>
type=fulltext
prefix={{NAMESPACE}}:{{PAGENAME}}/
break=no
width=30
searchbuttonlabel={{int:Search}}
placeholder=Suchen Sie nach allen Status-Updates
</inputbox>
<span id="Newsletters"></span>
== Newsletter ==
<!--<nowiki> Newsletter entry template:
* <translate><tvar name="1">{{Status updates|2026-0?-??}}</tvar>: Title</translate>
NOTE: Remember to also update the "next =" date at the top of this page.
</nowiki>-->
=== 2026 ===
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-08-05}}: An apple is a fruit</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-07-29}}: Abstract Wikipedia at Wikimania</span>
* {{Status updates|2026-07-16}}: Über syntaktische Tabellen hinaus
* {{Status updates|2026-07-08}}: Auf dem Weg zu unserem ersten Meilenstein bei der Integration der Abstrakten Wikipedia
* {{Status updates|2026-07-01}}: Integration im Test-Wiki und Jahresplan
* {{Status updates|2026-06-26}}: Arbeit an Funktionen, gemeinsam
* {{Status updates|2026-06-19}}: Der/die/das oder nicht, (das?) ist hier die Frage
* {{Status updates|2026-06-12}}: Verbessertes Laden und Anzeigen von Testergebnissen
* {{Status updates|2026-06-05}}: Die illustrierte Enzyklopädie
* {{Status updates|2026-05-30}}: Rückblick und Ausblick
* {{Status updates|2026-05-23}}: Jahresplan 2026/2027
* {{Status updates|2026-05-15}}: Eine höhere Bedeutung
* {{Status updates|2026-05-08}}: Einzelnachweise aus Wikidata jetzt verfügbar
* {{Status updates|2026-05-02}}: Bitte um Anregungen: Was sollten wir für die Abstrakte Wikipedia zählen?
* {{Status updates|2026-04-25}}: Die Suche der Foundation nach der perfekten Sprache
* {{Status updates|2026-04-16}}: Meilensteine; Einige größere Probleme hoffentlich behoben
* {{Status updates|2026-04-10}}: Community-Vorschläge zur Erfassung von Bedeutungen
* {{Status updates|2026-04-02}}: Diskussionsanfrage: Syntaktische Tabellen
* {{Status updates|2026-03-26}}: Erste Tage der Abstrakten Wikipedia Beta; Status der Kompositionssprache v2
* {{Status updates|2026-03-19}}: Abstrakte Wikipedia in Beta
* {{Status updates|2026-03-11}}: Eine neue Kompositionssprache
* {{Status updates|2026-03-06}}: Einzelnachweise und Kopieren und Einfügen
* {{Status updates|2026-02-26}}: Elegante Überschreibungen und Rückfalllösungen
* {{Status updates|2026-02-20}}: Eine Vorschau auf die Abstrakte Wikipedia
* {{Status updates|2026-02-13}}: Sätze des anderen beenden: Dinge anfangen; Treffen in Istanbul
* {{Status updates|2026-01-29}}: Integration der Abstrakten Wikipedia
* {{Status updates|2026-01-22}}: Vierteljährliche Planung für Januar–März 2026
* {{Status updates|2026-01-15}}: 25 Jahre Wikipedia
=== 2025 ===
* {{Status updates|2025-12-18}}: Wir wünschen euch ein frohes neues gregorianisches Jahr!
* {{Status updates|2025-12-11}}: Wie man bessere Fehlermeldungen schreibt
* {{Status updates|2025-12-04}}: Und der Name ist Abstrakte Wikipedia
* {{Status updates|2025-11-27}}: Stimme über den Namen für das neue Wiki ab!; Sätze des anderen beenden
* {{Status updates|2025-11-20}}: Zweite Abstimmungsrunde über den Namen des Wikis mit sprachunabhängigen Inhalten; Teilen von Funktionsaufrufen
* {{Status updates|2025-11-13}}: Vorbereitung für die zweite Abstimmungsrunde über den Namen des Wikis mit abstraktem Inhalt; Neuschreiben des Back-Ends: Warum Rust?
* {{Status updates|2025-11-05}}: Erste Runde der Abstimmung über den Namen für das Wiki der Abstrakten Inhalte beendet; Aufruf für Wiktionary-Funktionen; Eingebettete Wikifunctions in der bengalischen Wikipedia und sieben weiteren Wiktionarys
* {{Status updates|2025-10-29}}: Runde 1 der Abstimmung über den Namen für das “Wiki der Abstrakten Inhalte” endet Montag; Ein Beispiel für Kurzbeschreibungen
* {{Status updates|2025-10-23}}: Willkommen, Zaree und Laura! Runde 1 des Namenswettbewerbs gestartet
* {{Status updates|2025-10-15}}: Start des Namenswettbewerbs für die Abstrakte Wikipedia; Visualisierung von Funktionen
* {{Status updates|2025-10-08}}: Entscheidung über den Ort für abstrakte Inhalte und Quartalsplanung für Oktober–Dezember
* {{Status updates|2025-10-03}}: Rich Text jetzt in eingebetteten Funktionsaufrufen in 148 Wiktionarys und im Incubator verfügbar
* {{Status updates|2025-09-26}}: Zugriff auf Qualifikatoren in Wikidata-Aussagen
* {{Status updates|2025-09-19}}: Wikifunctions in 123 Wiktionary-Sprachversionen verfügbar
* {{Status updates|2025-09-12}}: Mehr als 3000 Funktionen auf Wikifunctions
* {{Status updates|2025-09-07}}: Funktionsaufrufe aus einer Wikipedia in eine andere kopieren
* {{Status updates|2025-08-29}}: Zugriff auf Wikidata-Datenobjekte über eingebettete Funktionsaufrufe nun möglich; Wikifunctions in 65 Wiktionarys verfügbar
* {{Status updates|2025-08-22}}: Aufzeichnung der Wikimania-Sitzung: Wikifunctions kommt bald in ein Wiki in deiner Nähe!
* {{Status updates|2025-08-01}}: Die Wikimania 2025 kommt bald!
* {{Status updates|2025-07-26}}: “Wikipedia ist eine Enzyklopädie”; Zwei Jahre Wikifunctions
* {{Status updates|2025-07-19}}: Wikidata-basierte Aufzählungen sind da
* {{Status updates|2025-07-10}}: Längenbeschränkungen für Bezeichnungen und Beschreibungen
* {{Status updates|2025-07-04}}: Abdeckung von 1298
* {{Status updates|2025-06-27}}: Wie viele Personen werden benötigt, um eine Enzyklopädie zu schreiben?
* {{Status updates|2025-06-21}}: Quartalsplanung für Juli-September 2025
* {{Status updates|2025-06-15}}: Ende der Konsultation über den Ort des Abstrakten Inhalts
* {{Status updates|2025-06-06}}: Wo wird sich der Abstrakte Inhalt befinden?
* {{Status updates|2025-05-29}}: Einführung in fünf Wiktionarys; Berechnung mit dem heutigen Datum
* {{Status updates|2025-05-23}}: Laufende Konsultation über den Ort des Abstrakten Inhalts
* {{Status updates|2025-05-15}}: Ort des Abstrakten Inhalts
* {{Status updates|2025-05-09}}: Abstrakte Wikipedia und die Wikimedia KI-Strategie
* {{Status updates|2025-04-30}}: Abstrakte Wikipedia ist Finalist bei MacArthur 100&Change
* {{Status updates|2025-04-25}}: Willkommen, Gregory!
* {{Status updates|2025-04-16}}: Wikifunctions integriert in Dagbani - und Wikifunctions; und das Osterdatum
* {{Status updates|2025-04-11}}: Rückblick auf das Quartal
* {{Status updates|2025-04-05}}: Vierteljährliche Planung für April–Juni 2025; Wir suchen nach einem Leitenden Produktmanager
* {{Status updates|2025-03-28}}: Es ist Zeit
* {{Status updates|2025-03-20}}: Auf Wikidata basierende einfache Aufzählungen
* {{Status updates|2025-03-15}}: Anstehendes NLG-Treffen, letzte Änderungen an der Software
* {{Status updates|2025-03-07}}: Letzte Änderungen an der Software, Aufzeichnung des Freiwilligentreffens und Vorträge in London
* {{Status updates|2025-02-26}}: Von Dingen zu Worten
* {{Status updates|2025-02-19}}: Ein Vorschlag für Typen je Sprache und Wortart
* {{Status updates|2025-02-13}}: Die Welt begrenzen
* {{Status updates|2025-02-06}}: Einladung zur Natural Language Generation Special Interest Group
* {{Status updates|2025-01-29}}: Mit 2000 Funktionen ins neue Jahr: Zeit für Statistiken
* {{Status updates|2025-01-22}}: Willkommen, David! Empfehlungen zu Namenskonventionen
* {{Status updates|2025-01-15}}: Einen frohen Wikipedia-Tag! Vierteljährliche Planung
=== 2024 ===
* {{Status updates|2024-12-19}}: Funktion der Woche: Alter; Intro für Artikel über Jahre; Neuer Typ: Gleitkommazahl
* {{Status updates|2024-12-12}}: Skizzieren eines Pfads zur Abstrakten Wikipedia; Offsite des Teams in Lissabon; und vieles mehr
* {{Status updates|2024-11-27}}: WordGraph-Veröffentlichung; Neue Spezialseite: Funktionen nach Tests auflisten; neuer Typ für Tag des Jahres und viel mehr
* {{Status updates|2024-11-21}}: Neue Spezialseite für fehlende Bezeichnungen, neuer Typ für Gregorianische Jahre und viel mehr
* {{Status updates|2024-11-13}}: Neuer Typ: rationale Zahl; Dokumentation zu Wikidata-basierten Typen; und mehr
* {{Status updates|2024-11-07}}: Der Traum einer universellen Sprache
* {{Status updates|2024-11-01}}: Neuschreiben des Back-Ends
* {{Status updates|2024-10-25}}: Unser Ziel für dieses Quartal: Kongruenz
* {{Status updates|2024-10-17}}: Wie könnte abstrakter Inhalt aussehen?
* {{Status updates|2024-10-11}}: Wikidata-Lexeme sind in Wikifunctions bald verfügbar
* {{Status updates|2024-10-02}}: Fokusthema: Essen
* {{Status updates|2024-09-26}}: Vierteljährliche Planung für Oktober bis Dezember 2024; Präsentation bei Celtic Knot morgen
* {{Status updates|2024-09-20}}: Einführung von Fokus-Themenbereichen
* {{Status updates|2024-09-13}}: Die Dagbani-Wikipedia wird unser erstes Wiki für die Integration von Wikifunctions sein
* {{Status updates|2024-09-06}}: Freiwilligentreffen und andere Neuigkeiten
* {{Status updates|2024-08-29}}: Beschränkungen für die Länge von Namen und Beschreibungen
* {{Status updates|2024-08-23}}: WasmEdge, jetzt 300 ms weniger langsam
* {{Status updates|2024-08-16}}: Ausgabe zur Wikimania 2024
* {{Status updates|2024-08-02}}: Überarbeitung unseres 'Info'-Widgets
* {{Status updates|2024-07-26}}: Bald findet die Wikimania 2024 statt!
* {{Status updates|2024-07-18}}: Forschungsbericht zur Integration von Wikifunctions in Wikipedia
* {{Status updates|2024-07-10}}: Typen-Vorschläge für den Zugriff auf Lexeme
* {{Status updates|2024-07-03}}: Vierteljährliche Planung
* {{Status updates|2024-06-26}}: Willkommen, Daphne!
* {{Status updates|2024-06-20}}: Neuer Typ: Integer
* {{Status updates|2024-06-13}}: Neuer Typ: Monate des Igbo-Kalenders
* {{Status updates|2024-06-06}}: Neuer Typ: Zeichen
* {{Status updates|2024-05-30}}: Ein einziger Singular oder eine Vielzahl von Pluralen?
* {{Status updates|2024-05-22}}: Neuer Typ: Monate des Gregorianischen Kalenders
* {{Status updates|2024-05-15}}: Aufruf zur Erstellung von Funktionen: Ausschreibung von Zahlen!
* {{Status updates|2024-05-10}}: Flaggschifftyp für Aufzählungen: Monate des Gregorianischen Kalenders
* {{Status updates|2024-05-03}}: Teamtreffen und Quartalsplan
* {{Status updates|2024-04-19}}: Willkommen, Sharvani!
* {{Status updates|2024-04-11}}: Neue API zum Aufrufen von Wikifunctions und Feier von 1000 Funktionen
* {{Status updates|2024-04-03}}: Produktneuigkeiten auf Diff und anstehende API-Verbesserungen
* {{Status updates|2024-03-28}}: Das Erstellen von Tests ist nun viel einfacher!
* {{Status updates|2024-03-21}}: Auf dem Weg zur Internationalisierung von Zahlen
* {{Status updates|2024-03-13}}: Zur Identität
* {{Status updates|2024-03-07}}: Einführung unseres zweiten neuen Typs: Natürliche Zahlen
* {{Status updates|2024-02-28}}: Typenvorschlag für natürliche Zahlen
* {{Status updates|2024-02-22}}: Aktualisierung des Funktionsmodells
* {{Status updates|2024-02-14}}: Reparatur-Woche
* {{Status updates|2024-02-07}}: Vierteljährliche Planung. Danke, Nick! Funktion der Woche: ist Permutation
* {{Status updates|2024-02-01}}: Der Igbo-Imperativ!
<span id="Before_February_2024"></span>
=== Vor Februar 2024 ===
Alle Updates aus dieser Zeit sind [[:m:Special:MyLanguage/Abstract Wikipedia/Updates|im Meta-Wiki verfügbar]].
[[Category:Status updates{{#translation:}}| ]]
824tn8jaqxks59p2v8d6dv0wy0kqpns
297033
296983
2026-08-06T18:07:15Z
Ameisenigel
44
Created page with "$1: Ein Apfel ist eine Frucht"
297033
wikitext
text/x-wiki
<languages/>
{{shortcut|WF:SU}}{{notice|1='''[[:m:Global message delivery/Targets/Wikifunctions & Abstract Wikipedia|Abonniere]]''' kurze MassMessage-Benachrichtigungen im Wiki über jede neue Ausgabe.}}
{{Wikifunctions updates
| prevlabel = Vorheriges Update
| prev = 2024-02-01
| nextlabel = Letztes Update
| next = 2026-08-05
}}
Es passiert viel rund um Wikifunctions und die Abstrakte Wikipedia. Auf dieser Seite werden unsere Updates veröffentlicht, inklusive der [[Special:MyLanguage/WF:function of the Week|Funktion der Woche]].
Du kannst auch den [[:m:Global message delivery/Targets/Wikifunctions & Abstract Wikipedia|On-Wiki-Newsletter]] abonnieren, um sie auf deine Diskussionsseite oder die Projektdiskussion deines Projekts geliefert zu bekommen.
<inputbox>
type=fulltext
prefix={{NAMESPACE}}:{{PAGENAME}}/
break=no
width=30
searchbuttonlabel={{int:Search}}
placeholder=Suchen Sie nach allen Status-Updates
</inputbox>
<span id="Newsletters"></span>
== Newsletter ==
<!--<nowiki> Newsletter entry template:
* <translate><tvar name="1">{{Status updates|2026-0?-??}}</tvar>: Title</translate>
NOTE: Remember to also update the "next =" date at the top of this page.
</nowiki>-->
=== 2026 ===
* {{Status updates|2026-08-05}}: Ein Apfel ist eine Frucht
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-07-29}}: Abstract Wikipedia at Wikimania</span>
* {{Status updates|2026-07-16}}: Über syntaktische Tabellen hinaus
* {{Status updates|2026-07-08}}: Auf dem Weg zu unserem ersten Meilenstein bei der Integration der Abstrakten Wikipedia
* {{Status updates|2026-07-01}}: Integration im Test-Wiki und Jahresplan
* {{Status updates|2026-06-26}}: Arbeit an Funktionen, gemeinsam
* {{Status updates|2026-06-19}}: Der/die/das oder nicht, (das?) ist hier die Frage
* {{Status updates|2026-06-12}}: Verbessertes Laden und Anzeigen von Testergebnissen
* {{Status updates|2026-06-05}}: Die illustrierte Enzyklopädie
* {{Status updates|2026-05-30}}: Rückblick und Ausblick
* {{Status updates|2026-05-23}}: Jahresplan 2026/2027
* {{Status updates|2026-05-15}}: Eine höhere Bedeutung
* {{Status updates|2026-05-08}}: Einzelnachweise aus Wikidata jetzt verfügbar
* {{Status updates|2026-05-02}}: Bitte um Anregungen: Was sollten wir für die Abstrakte Wikipedia zählen?
* {{Status updates|2026-04-25}}: Die Suche der Foundation nach der perfekten Sprache
* {{Status updates|2026-04-16}}: Meilensteine; Einige größere Probleme hoffentlich behoben
* {{Status updates|2026-04-10}}: Community-Vorschläge zur Erfassung von Bedeutungen
* {{Status updates|2026-04-02}}: Diskussionsanfrage: Syntaktische Tabellen
* {{Status updates|2026-03-26}}: Erste Tage der Abstrakten Wikipedia Beta; Status der Kompositionssprache v2
* {{Status updates|2026-03-19}}: Abstrakte Wikipedia in Beta
* {{Status updates|2026-03-11}}: Eine neue Kompositionssprache
* {{Status updates|2026-03-06}}: Einzelnachweise und Kopieren und Einfügen
* {{Status updates|2026-02-26}}: Elegante Überschreibungen und Rückfalllösungen
* {{Status updates|2026-02-20}}: Eine Vorschau auf die Abstrakte Wikipedia
* {{Status updates|2026-02-13}}: Sätze des anderen beenden: Dinge anfangen; Treffen in Istanbul
* {{Status updates|2026-01-29}}: Integration der Abstrakten Wikipedia
* {{Status updates|2026-01-22}}: Vierteljährliche Planung für Januar–März 2026
* {{Status updates|2026-01-15}}: 25 Jahre Wikipedia
=== 2025 ===
* {{Status updates|2025-12-18}}: Wir wünschen euch ein frohes neues gregorianisches Jahr!
* {{Status updates|2025-12-11}}: Wie man bessere Fehlermeldungen schreibt
* {{Status updates|2025-12-04}}: Und der Name ist Abstrakte Wikipedia
* {{Status updates|2025-11-27}}: Stimme über den Namen für das neue Wiki ab!; Sätze des anderen beenden
* {{Status updates|2025-11-20}}: Zweite Abstimmungsrunde über den Namen des Wikis mit sprachunabhängigen Inhalten; Teilen von Funktionsaufrufen
* {{Status updates|2025-11-13}}: Vorbereitung für die zweite Abstimmungsrunde über den Namen des Wikis mit abstraktem Inhalt; Neuschreiben des Back-Ends: Warum Rust?
* {{Status updates|2025-11-05}}: Erste Runde der Abstimmung über den Namen für das Wiki der Abstrakten Inhalte beendet; Aufruf für Wiktionary-Funktionen; Eingebettete Wikifunctions in der bengalischen Wikipedia und sieben weiteren Wiktionarys
* {{Status updates|2025-10-29}}: Runde 1 der Abstimmung über den Namen für das “Wiki der Abstrakten Inhalte” endet Montag; Ein Beispiel für Kurzbeschreibungen
* {{Status updates|2025-10-23}}: Willkommen, Zaree und Laura! Runde 1 des Namenswettbewerbs gestartet
* {{Status updates|2025-10-15}}: Start des Namenswettbewerbs für die Abstrakte Wikipedia; Visualisierung von Funktionen
* {{Status updates|2025-10-08}}: Entscheidung über den Ort für abstrakte Inhalte und Quartalsplanung für Oktober–Dezember
* {{Status updates|2025-10-03}}: Rich Text jetzt in eingebetteten Funktionsaufrufen in 148 Wiktionarys und im Incubator verfügbar
* {{Status updates|2025-09-26}}: Zugriff auf Qualifikatoren in Wikidata-Aussagen
* {{Status updates|2025-09-19}}: Wikifunctions in 123 Wiktionary-Sprachversionen verfügbar
* {{Status updates|2025-09-12}}: Mehr als 3000 Funktionen auf Wikifunctions
* {{Status updates|2025-09-07}}: Funktionsaufrufe aus einer Wikipedia in eine andere kopieren
* {{Status updates|2025-08-29}}: Zugriff auf Wikidata-Datenobjekte über eingebettete Funktionsaufrufe nun möglich; Wikifunctions in 65 Wiktionarys verfügbar
* {{Status updates|2025-08-22}}: Aufzeichnung der Wikimania-Sitzung: Wikifunctions kommt bald in ein Wiki in deiner Nähe!
* {{Status updates|2025-08-01}}: Die Wikimania 2025 kommt bald!
* {{Status updates|2025-07-26}}: “Wikipedia ist eine Enzyklopädie”; Zwei Jahre Wikifunctions
* {{Status updates|2025-07-19}}: Wikidata-basierte Aufzählungen sind da
* {{Status updates|2025-07-10}}: Längenbeschränkungen für Bezeichnungen und Beschreibungen
* {{Status updates|2025-07-04}}: Abdeckung von 1298
* {{Status updates|2025-06-27}}: Wie viele Personen werden benötigt, um eine Enzyklopädie zu schreiben?
* {{Status updates|2025-06-21}}: Quartalsplanung für Juli-September 2025
* {{Status updates|2025-06-15}}: Ende der Konsultation über den Ort des Abstrakten Inhalts
* {{Status updates|2025-06-06}}: Wo wird sich der Abstrakte Inhalt befinden?
* {{Status updates|2025-05-29}}: Einführung in fünf Wiktionarys; Berechnung mit dem heutigen Datum
* {{Status updates|2025-05-23}}: Laufende Konsultation über den Ort des Abstrakten Inhalts
* {{Status updates|2025-05-15}}: Ort des Abstrakten Inhalts
* {{Status updates|2025-05-09}}: Abstrakte Wikipedia und die Wikimedia KI-Strategie
* {{Status updates|2025-04-30}}: Abstrakte Wikipedia ist Finalist bei MacArthur 100&Change
* {{Status updates|2025-04-25}}: Willkommen, Gregory!
* {{Status updates|2025-04-16}}: Wikifunctions integriert in Dagbani - und Wikifunctions; und das Osterdatum
* {{Status updates|2025-04-11}}: Rückblick auf das Quartal
* {{Status updates|2025-04-05}}: Vierteljährliche Planung für April–Juni 2025; Wir suchen nach einem Leitenden Produktmanager
* {{Status updates|2025-03-28}}: Es ist Zeit
* {{Status updates|2025-03-20}}: Auf Wikidata basierende einfache Aufzählungen
* {{Status updates|2025-03-15}}: Anstehendes NLG-Treffen, letzte Änderungen an der Software
* {{Status updates|2025-03-07}}: Letzte Änderungen an der Software, Aufzeichnung des Freiwilligentreffens und Vorträge in London
* {{Status updates|2025-02-26}}: Von Dingen zu Worten
* {{Status updates|2025-02-19}}: Ein Vorschlag für Typen je Sprache und Wortart
* {{Status updates|2025-02-13}}: Die Welt begrenzen
* {{Status updates|2025-02-06}}: Einladung zur Natural Language Generation Special Interest Group
* {{Status updates|2025-01-29}}: Mit 2000 Funktionen ins neue Jahr: Zeit für Statistiken
* {{Status updates|2025-01-22}}: Willkommen, David! Empfehlungen zu Namenskonventionen
* {{Status updates|2025-01-15}}: Einen frohen Wikipedia-Tag! Vierteljährliche Planung
=== 2024 ===
* {{Status updates|2024-12-19}}: Funktion der Woche: Alter; Intro für Artikel über Jahre; Neuer Typ: Gleitkommazahl
* {{Status updates|2024-12-12}}: Skizzieren eines Pfads zur Abstrakten Wikipedia; Offsite des Teams in Lissabon; und vieles mehr
* {{Status updates|2024-11-27}}: WordGraph-Veröffentlichung; Neue Spezialseite: Funktionen nach Tests auflisten; neuer Typ für Tag des Jahres und viel mehr
* {{Status updates|2024-11-21}}: Neue Spezialseite für fehlende Bezeichnungen, neuer Typ für Gregorianische Jahre und viel mehr
* {{Status updates|2024-11-13}}: Neuer Typ: rationale Zahl; Dokumentation zu Wikidata-basierten Typen; und mehr
* {{Status updates|2024-11-07}}: Der Traum einer universellen Sprache
* {{Status updates|2024-11-01}}: Neuschreiben des Back-Ends
* {{Status updates|2024-10-25}}: Unser Ziel für dieses Quartal: Kongruenz
* {{Status updates|2024-10-17}}: Wie könnte abstrakter Inhalt aussehen?
* {{Status updates|2024-10-11}}: Wikidata-Lexeme sind in Wikifunctions bald verfügbar
* {{Status updates|2024-10-02}}: Fokusthema: Essen
* {{Status updates|2024-09-26}}: Vierteljährliche Planung für Oktober bis Dezember 2024; Präsentation bei Celtic Knot morgen
* {{Status updates|2024-09-20}}: Einführung von Fokus-Themenbereichen
* {{Status updates|2024-09-13}}: Die Dagbani-Wikipedia wird unser erstes Wiki für die Integration von Wikifunctions sein
* {{Status updates|2024-09-06}}: Freiwilligentreffen und andere Neuigkeiten
* {{Status updates|2024-08-29}}: Beschränkungen für die Länge von Namen und Beschreibungen
* {{Status updates|2024-08-23}}: WasmEdge, jetzt 300 ms weniger langsam
* {{Status updates|2024-08-16}}: Ausgabe zur Wikimania 2024
* {{Status updates|2024-08-02}}: Überarbeitung unseres 'Info'-Widgets
* {{Status updates|2024-07-26}}: Bald findet die Wikimania 2024 statt!
* {{Status updates|2024-07-18}}: Forschungsbericht zur Integration von Wikifunctions in Wikipedia
* {{Status updates|2024-07-10}}: Typen-Vorschläge für den Zugriff auf Lexeme
* {{Status updates|2024-07-03}}: Vierteljährliche Planung
* {{Status updates|2024-06-26}}: Willkommen, Daphne!
* {{Status updates|2024-06-20}}: Neuer Typ: Integer
* {{Status updates|2024-06-13}}: Neuer Typ: Monate des Igbo-Kalenders
* {{Status updates|2024-06-06}}: Neuer Typ: Zeichen
* {{Status updates|2024-05-30}}: Ein einziger Singular oder eine Vielzahl von Pluralen?
* {{Status updates|2024-05-22}}: Neuer Typ: Monate des Gregorianischen Kalenders
* {{Status updates|2024-05-15}}: Aufruf zur Erstellung von Funktionen: Ausschreibung von Zahlen!
* {{Status updates|2024-05-10}}: Flaggschifftyp für Aufzählungen: Monate des Gregorianischen Kalenders
* {{Status updates|2024-05-03}}: Teamtreffen und Quartalsplan
* {{Status updates|2024-04-19}}: Willkommen, Sharvani!
* {{Status updates|2024-04-11}}: Neue API zum Aufrufen von Wikifunctions und Feier von 1000 Funktionen
* {{Status updates|2024-04-03}}: Produktneuigkeiten auf Diff und anstehende API-Verbesserungen
* {{Status updates|2024-03-28}}: Das Erstellen von Tests ist nun viel einfacher!
* {{Status updates|2024-03-21}}: Auf dem Weg zur Internationalisierung von Zahlen
* {{Status updates|2024-03-13}}: Zur Identität
* {{Status updates|2024-03-07}}: Einführung unseres zweiten neuen Typs: Natürliche Zahlen
* {{Status updates|2024-02-28}}: Typenvorschlag für natürliche Zahlen
* {{Status updates|2024-02-22}}: Aktualisierung des Funktionsmodells
* {{Status updates|2024-02-14}}: Reparatur-Woche
* {{Status updates|2024-02-07}}: Vierteljährliche Planung. Danke, Nick! Funktion der Woche: ist Permutation
* {{Status updates|2024-02-01}}: Der Igbo-Imperativ!
<span id="Before_February_2024"></span>
=== Vor Februar 2024 ===
Alle Updates aus dieser Zeit sind [[:m:Special:MyLanguage/Abstract Wikipedia/Updates|im Meta-Wiki verfügbar]].
[[Category:Status updates{{#translation:}}| ]]
mlr6zufknkal439tlq7hk040byd3v65
297035
297033
2026-08-06T18:07:18Z
Ameisenigel
44
Created page with "$1: Abstrakte Wikipedia bei der Wikimania"
297035
wikitext
text/x-wiki
<languages/>
{{shortcut|WF:SU}}{{notice|1='''[[:m:Global message delivery/Targets/Wikifunctions & Abstract Wikipedia|Abonniere]]''' kurze MassMessage-Benachrichtigungen im Wiki über jede neue Ausgabe.}}
{{Wikifunctions updates
| prevlabel = Vorheriges Update
| prev = 2024-02-01
| nextlabel = Letztes Update
| next = 2026-08-05
}}
Es passiert viel rund um Wikifunctions und die Abstrakte Wikipedia. Auf dieser Seite werden unsere Updates veröffentlicht, inklusive der [[Special:MyLanguage/WF:function of the Week|Funktion der Woche]].
Du kannst auch den [[:m:Global message delivery/Targets/Wikifunctions & Abstract Wikipedia|On-Wiki-Newsletter]] abonnieren, um sie auf deine Diskussionsseite oder die Projektdiskussion deines Projekts geliefert zu bekommen.
<inputbox>
type=fulltext
prefix={{NAMESPACE}}:{{PAGENAME}}/
break=no
width=30
searchbuttonlabel={{int:Search}}
placeholder=Suchen Sie nach allen Status-Updates
</inputbox>
<span id="Newsletters"></span>
== Newsletter ==
<!--<nowiki> Newsletter entry template:
* <translate><tvar name="1">{{Status updates|2026-0?-??}}</tvar>: Title</translate>
NOTE: Remember to also update the "next =" date at the top of this page.
</nowiki>-->
=== 2026 ===
* {{Status updates|2026-08-05}}: Ein Apfel ist eine Frucht
* {{Status updates|2026-07-29}}: Abstrakte Wikipedia bei der Wikimania
* {{Status updates|2026-07-16}}: Über syntaktische Tabellen hinaus
* {{Status updates|2026-07-08}}: Auf dem Weg zu unserem ersten Meilenstein bei der Integration der Abstrakten Wikipedia
* {{Status updates|2026-07-01}}: Integration im Test-Wiki und Jahresplan
* {{Status updates|2026-06-26}}: Arbeit an Funktionen, gemeinsam
* {{Status updates|2026-06-19}}: Der/die/das oder nicht, (das?) ist hier die Frage
* {{Status updates|2026-06-12}}: Verbessertes Laden und Anzeigen von Testergebnissen
* {{Status updates|2026-06-05}}: Die illustrierte Enzyklopädie
* {{Status updates|2026-05-30}}: Rückblick und Ausblick
* {{Status updates|2026-05-23}}: Jahresplan 2026/2027
* {{Status updates|2026-05-15}}: Eine höhere Bedeutung
* {{Status updates|2026-05-08}}: Einzelnachweise aus Wikidata jetzt verfügbar
* {{Status updates|2026-05-02}}: Bitte um Anregungen: Was sollten wir für die Abstrakte Wikipedia zählen?
* {{Status updates|2026-04-25}}: Die Suche der Foundation nach der perfekten Sprache
* {{Status updates|2026-04-16}}: Meilensteine; Einige größere Probleme hoffentlich behoben
* {{Status updates|2026-04-10}}: Community-Vorschläge zur Erfassung von Bedeutungen
* {{Status updates|2026-04-02}}: Diskussionsanfrage: Syntaktische Tabellen
* {{Status updates|2026-03-26}}: Erste Tage der Abstrakten Wikipedia Beta; Status der Kompositionssprache v2
* {{Status updates|2026-03-19}}: Abstrakte Wikipedia in Beta
* {{Status updates|2026-03-11}}: Eine neue Kompositionssprache
* {{Status updates|2026-03-06}}: Einzelnachweise und Kopieren und Einfügen
* {{Status updates|2026-02-26}}: Elegante Überschreibungen und Rückfalllösungen
* {{Status updates|2026-02-20}}: Eine Vorschau auf die Abstrakte Wikipedia
* {{Status updates|2026-02-13}}: Sätze des anderen beenden: Dinge anfangen; Treffen in Istanbul
* {{Status updates|2026-01-29}}: Integration der Abstrakten Wikipedia
* {{Status updates|2026-01-22}}: Vierteljährliche Planung für Januar–März 2026
* {{Status updates|2026-01-15}}: 25 Jahre Wikipedia
=== 2025 ===
* {{Status updates|2025-12-18}}: Wir wünschen euch ein frohes neues gregorianisches Jahr!
* {{Status updates|2025-12-11}}: Wie man bessere Fehlermeldungen schreibt
* {{Status updates|2025-12-04}}: Und der Name ist Abstrakte Wikipedia
* {{Status updates|2025-11-27}}: Stimme über den Namen für das neue Wiki ab!; Sätze des anderen beenden
* {{Status updates|2025-11-20}}: Zweite Abstimmungsrunde über den Namen des Wikis mit sprachunabhängigen Inhalten; Teilen von Funktionsaufrufen
* {{Status updates|2025-11-13}}: Vorbereitung für die zweite Abstimmungsrunde über den Namen des Wikis mit abstraktem Inhalt; Neuschreiben des Back-Ends: Warum Rust?
* {{Status updates|2025-11-05}}: Erste Runde der Abstimmung über den Namen für das Wiki der Abstrakten Inhalte beendet; Aufruf für Wiktionary-Funktionen; Eingebettete Wikifunctions in der bengalischen Wikipedia und sieben weiteren Wiktionarys
* {{Status updates|2025-10-29}}: Runde 1 der Abstimmung über den Namen für das “Wiki der Abstrakten Inhalte” endet Montag; Ein Beispiel für Kurzbeschreibungen
* {{Status updates|2025-10-23}}: Willkommen, Zaree und Laura! Runde 1 des Namenswettbewerbs gestartet
* {{Status updates|2025-10-15}}: Start des Namenswettbewerbs für die Abstrakte Wikipedia; Visualisierung von Funktionen
* {{Status updates|2025-10-08}}: Entscheidung über den Ort für abstrakte Inhalte und Quartalsplanung für Oktober–Dezember
* {{Status updates|2025-10-03}}: Rich Text jetzt in eingebetteten Funktionsaufrufen in 148 Wiktionarys und im Incubator verfügbar
* {{Status updates|2025-09-26}}: Zugriff auf Qualifikatoren in Wikidata-Aussagen
* {{Status updates|2025-09-19}}: Wikifunctions in 123 Wiktionary-Sprachversionen verfügbar
* {{Status updates|2025-09-12}}: Mehr als 3000 Funktionen auf Wikifunctions
* {{Status updates|2025-09-07}}: Funktionsaufrufe aus einer Wikipedia in eine andere kopieren
* {{Status updates|2025-08-29}}: Zugriff auf Wikidata-Datenobjekte über eingebettete Funktionsaufrufe nun möglich; Wikifunctions in 65 Wiktionarys verfügbar
* {{Status updates|2025-08-22}}: Aufzeichnung der Wikimania-Sitzung: Wikifunctions kommt bald in ein Wiki in deiner Nähe!
* {{Status updates|2025-08-01}}: Die Wikimania 2025 kommt bald!
* {{Status updates|2025-07-26}}: “Wikipedia ist eine Enzyklopädie”; Zwei Jahre Wikifunctions
* {{Status updates|2025-07-19}}: Wikidata-basierte Aufzählungen sind da
* {{Status updates|2025-07-10}}: Längenbeschränkungen für Bezeichnungen und Beschreibungen
* {{Status updates|2025-07-04}}: Abdeckung von 1298
* {{Status updates|2025-06-27}}: Wie viele Personen werden benötigt, um eine Enzyklopädie zu schreiben?
* {{Status updates|2025-06-21}}: Quartalsplanung für Juli-September 2025
* {{Status updates|2025-06-15}}: Ende der Konsultation über den Ort des Abstrakten Inhalts
* {{Status updates|2025-06-06}}: Wo wird sich der Abstrakte Inhalt befinden?
* {{Status updates|2025-05-29}}: Einführung in fünf Wiktionarys; Berechnung mit dem heutigen Datum
* {{Status updates|2025-05-23}}: Laufende Konsultation über den Ort des Abstrakten Inhalts
* {{Status updates|2025-05-15}}: Ort des Abstrakten Inhalts
* {{Status updates|2025-05-09}}: Abstrakte Wikipedia und die Wikimedia KI-Strategie
* {{Status updates|2025-04-30}}: Abstrakte Wikipedia ist Finalist bei MacArthur 100&Change
* {{Status updates|2025-04-25}}: Willkommen, Gregory!
* {{Status updates|2025-04-16}}: Wikifunctions integriert in Dagbani - und Wikifunctions; und das Osterdatum
* {{Status updates|2025-04-11}}: Rückblick auf das Quartal
* {{Status updates|2025-04-05}}: Vierteljährliche Planung für April–Juni 2025; Wir suchen nach einem Leitenden Produktmanager
* {{Status updates|2025-03-28}}: Es ist Zeit
* {{Status updates|2025-03-20}}: Auf Wikidata basierende einfache Aufzählungen
* {{Status updates|2025-03-15}}: Anstehendes NLG-Treffen, letzte Änderungen an der Software
* {{Status updates|2025-03-07}}: Letzte Änderungen an der Software, Aufzeichnung des Freiwilligentreffens und Vorträge in London
* {{Status updates|2025-02-26}}: Von Dingen zu Worten
* {{Status updates|2025-02-19}}: Ein Vorschlag für Typen je Sprache und Wortart
* {{Status updates|2025-02-13}}: Die Welt begrenzen
* {{Status updates|2025-02-06}}: Einladung zur Natural Language Generation Special Interest Group
* {{Status updates|2025-01-29}}: Mit 2000 Funktionen ins neue Jahr: Zeit für Statistiken
* {{Status updates|2025-01-22}}: Willkommen, David! Empfehlungen zu Namenskonventionen
* {{Status updates|2025-01-15}}: Einen frohen Wikipedia-Tag! Vierteljährliche Planung
=== 2024 ===
* {{Status updates|2024-12-19}}: Funktion der Woche: Alter; Intro für Artikel über Jahre; Neuer Typ: Gleitkommazahl
* {{Status updates|2024-12-12}}: Skizzieren eines Pfads zur Abstrakten Wikipedia; Offsite des Teams in Lissabon; und vieles mehr
* {{Status updates|2024-11-27}}: WordGraph-Veröffentlichung; Neue Spezialseite: Funktionen nach Tests auflisten; neuer Typ für Tag des Jahres und viel mehr
* {{Status updates|2024-11-21}}: Neue Spezialseite für fehlende Bezeichnungen, neuer Typ für Gregorianische Jahre und viel mehr
* {{Status updates|2024-11-13}}: Neuer Typ: rationale Zahl; Dokumentation zu Wikidata-basierten Typen; und mehr
* {{Status updates|2024-11-07}}: Der Traum einer universellen Sprache
* {{Status updates|2024-11-01}}: Neuschreiben des Back-Ends
* {{Status updates|2024-10-25}}: Unser Ziel für dieses Quartal: Kongruenz
* {{Status updates|2024-10-17}}: Wie könnte abstrakter Inhalt aussehen?
* {{Status updates|2024-10-11}}: Wikidata-Lexeme sind in Wikifunctions bald verfügbar
* {{Status updates|2024-10-02}}: Fokusthema: Essen
* {{Status updates|2024-09-26}}: Vierteljährliche Planung für Oktober bis Dezember 2024; Präsentation bei Celtic Knot morgen
* {{Status updates|2024-09-20}}: Einführung von Fokus-Themenbereichen
* {{Status updates|2024-09-13}}: Die Dagbani-Wikipedia wird unser erstes Wiki für die Integration von Wikifunctions sein
* {{Status updates|2024-09-06}}: Freiwilligentreffen und andere Neuigkeiten
* {{Status updates|2024-08-29}}: Beschränkungen für die Länge von Namen und Beschreibungen
* {{Status updates|2024-08-23}}: WasmEdge, jetzt 300 ms weniger langsam
* {{Status updates|2024-08-16}}: Ausgabe zur Wikimania 2024
* {{Status updates|2024-08-02}}: Überarbeitung unseres 'Info'-Widgets
* {{Status updates|2024-07-26}}: Bald findet die Wikimania 2024 statt!
* {{Status updates|2024-07-18}}: Forschungsbericht zur Integration von Wikifunctions in Wikipedia
* {{Status updates|2024-07-10}}: Typen-Vorschläge für den Zugriff auf Lexeme
* {{Status updates|2024-07-03}}: Vierteljährliche Planung
* {{Status updates|2024-06-26}}: Willkommen, Daphne!
* {{Status updates|2024-06-20}}: Neuer Typ: Integer
* {{Status updates|2024-06-13}}: Neuer Typ: Monate des Igbo-Kalenders
* {{Status updates|2024-06-06}}: Neuer Typ: Zeichen
* {{Status updates|2024-05-30}}: Ein einziger Singular oder eine Vielzahl von Pluralen?
* {{Status updates|2024-05-22}}: Neuer Typ: Monate des Gregorianischen Kalenders
* {{Status updates|2024-05-15}}: Aufruf zur Erstellung von Funktionen: Ausschreibung von Zahlen!
* {{Status updates|2024-05-10}}: Flaggschifftyp für Aufzählungen: Monate des Gregorianischen Kalenders
* {{Status updates|2024-05-03}}: Teamtreffen und Quartalsplan
* {{Status updates|2024-04-19}}: Willkommen, Sharvani!
* {{Status updates|2024-04-11}}: Neue API zum Aufrufen von Wikifunctions und Feier von 1000 Funktionen
* {{Status updates|2024-04-03}}: Produktneuigkeiten auf Diff und anstehende API-Verbesserungen
* {{Status updates|2024-03-28}}: Das Erstellen von Tests ist nun viel einfacher!
* {{Status updates|2024-03-21}}: Auf dem Weg zur Internationalisierung von Zahlen
* {{Status updates|2024-03-13}}: Zur Identität
* {{Status updates|2024-03-07}}: Einführung unseres zweiten neuen Typs: Natürliche Zahlen
* {{Status updates|2024-02-28}}: Typenvorschlag für natürliche Zahlen
* {{Status updates|2024-02-22}}: Aktualisierung des Funktionsmodells
* {{Status updates|2024-02-14}}: Reparatur-Woche
* {{Status updates|2024-02-07}}: Vierteljährliche Planung. Danke, Nick! Funktion der Woche: ist Permutation
* {{Status updates|2024-02-01}}: Der Igbo-Imperativ!
<span id="Before_February_2024"></span>
=== Vor Februar 2024 ===
Alle Updates aus dieser Zeit sind [[:m:Special:MyLanguage/Abstract Wikipedia/Updates|im Meta-Wiki verfügbar]].
[[Category:Status updates{{#translation:}}| ]]
00t851pf5zwb8wj02rs6vz74fl0vgl8
Wikifunctions:Status updates/fr
4
22921
296987
295114
2026-08-06T18:03:35Z
FuzzyBot
207
Updating to match new version of source page
296987
wikitext
text/x-wiki
<languages/>
{{shortcut|WF:SU}}{{notice|1='''[[:m:Global message delivery/Targets/Wikifunctions & Abstract Wikipedia|Abonnez-vous]]''' pour recevoir sur le wiki de courtes [[$message|notifications de messagerie en masse]] concernant chaque nouveau changement.}}
{{Wikifunctions updates
| prevlabel = Mise à jour précédente
| prev = 2024-02-01
| nextlabel = Dernière mise à jour
| next = 2026-08-05
}}
Beaucoup de choses se passent autour de Wikifonctions et de la Wikipédia abstraite. Cette page publie nos mises à jour ainsi que la [[Special:MyLanguage/WF:function of the Week|fonction de la semaine]].
Vous pouvez également vous abonner au [[:m:Global message delivery/Targets/Wikifunctions & Abstract Wikipedia|bulletin d'information]] pour le recevoir sur votre page de discussion utilisateur ou bien sur le Bistro de votre projet.
<inputbox>
type=fulltext
prefix={{NAMESPACE}}:{{PAGENAME}}/
break=no
width=30
searchbuttonlabel={{int:Search}}
placeholder=Rechercher d'anciennes mises à jour
</inputbox>
<span id="Newsletters"></span>
== Bulletins d’actualités ==
<!--<nowiki> Newsletter entry template:
* <translate><tvar name="1">{{Status updates|2026-0?-??}}</tvar>: Title</translate>
NOTE: Remember to also update the "next =" date at the top of this page.
</nowiki>-->
=== 2026 ===
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-08-05}}: An apple is a fruit</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-07-29}}: Abstract Wikipedia at Wikimania</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-07-16}}: Beyond syntactic tables</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-07-08}}: Moving toward our first Abstract Wikipedia integration milestone</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-07-01}}: Integration on test wiki and annual plan</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-06-26}}: Working on Functions, together</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-06-19}}: The or not the, this is (the?) question</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-06-12}}: Improved loading and display of Test results</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-06-05}}: The illustrated encyclopaedia</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-05-30}}: Looking back and forward</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-05-23}}: Annual plan 2026-2027</span>
* {{Status updates|2026-05-15}} : une plus grande compréhension
* {{Status updates|2026-05-08}}: Les références de Wikidata sont maintenant disponibles
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-05-02}}: Request for input: what should we count for Abstract Wikipedia?</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-04-25}}: The Foundation's search for the perfect language</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-04-16}}: Milestones; Some major issues hopefully resolved</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-04-10}}: Community proposals for capturing meaning</span>
* {{Status updates|2026-04-02}}: Demande de discussion: tables syntactiques
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-03-26}}: First few days of Abstract Wikipedia Beta; Status of Composition Language v2</span>
* {{Status updates|2026-03-19}} : la Wikipédia abstraite en version bêta
* Un nouveau langage d'écriture
* {{Status updates|2026-03-06}} : Citations et copiés-collés
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-02-26}}: Graceful overrides and fallbacks</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-02-20}}: A sneak preview of Abstract Wikipedia</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-02-13}}: Finishing each other sentences: Starting things; Offsite in Istanbul</span>
* {{Status updates|2026-01-29}}: Intégration de la Wikipedia abstraite
* {{Status updates|2026-01-22}}: plan trimestriel pour janvier-mars 2026
* {{Status updates|2026-01-15}}: 25 ans de Wikipedia
=== 2025 ===
* {{Status updates|2025-12-18}} : Nous vous souhaitons une heureuse nouvelle année grégorienne !
* {{Status updates|2025-12-11}} : Comment mieux écrire les messages d'erreur
* {{Status updates|2025-12-04}} : Et le nom est Wikipédia abstraite
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-11-27}}: Vote on the new wiki name!; Finishing each other’s sentences</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-11-20}}: Second round of voting for naming the wiki with language-independent content; Sharing function calls</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-11-13}}: Getting ready for second round of voting for naming the wiki with abstract content; Rewriting the backend: Why Rust?</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-11-05}}: First round of voting for naming the wiki for abstract content closed; Calling for Wiktionary functions; Embedded Wikifunctions on Bengali Wikipedia and seven more Wiktionaries</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-10-29}}: Round 1 of “abstract content wiki” naming vote ending Monday; An example of short descriptions</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-10-23}}: Welcome Zaree and Laura! Naming contest round 1 kicked off</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-10-15}}: Kicking Off the Naming Contest for Abstract Wikipedia; Visualizing functions</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-10-08}}: Decision on location for abstract content and Quarterly Planning for October–December</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-10-03}}: Rich text now available in embedded function calls on 148 Wiktionaries and Incubator</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-09-26}}: Accessing qualifiers in Wikidata statements</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-09-19}}: Wikifunctions available on 123 Wiktionary languages</span>
* {{Status updates|2025-09-12}}: Plus de 3000 fonctions sur Wikifunctions
* {{Status updates|2025-09-07}}: Copie des appels de fonctions d'une Wikipédia à une autre
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-08-29}}: Accessing Wikidata items now possible from embedded function calls; Wikifunctions available on 65 Wikitionaries</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-08-22}}: Recording of Wikimania session: Wikifunctions is coming soon to a wiki near you!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-08-01}}: Wikimania 2025 is coming soon!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-07-26}}: “Wikipedia is an encyclopedia”; Two years of Wikifunctions</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-07-19}}: Wikidata-based enumerations are here</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-07-10}}: Length limits on labels and descriptions</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-07-04}}: Coverage of 1298</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-06-27}}: How many people are needed to write an encyclopedia?</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-06-21}}: Quarterly Planning for July–September 2025</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-06-15}}: Closing the consultation about the location of Abstract Content</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-06-06}}: Where will Abstract Content go?</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-05-29}}: Rolling out to five Wiktionaries; Calculating with today's date</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-05-23}}: Ongoing consultation about the Location for Abstract Content</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-05-15}}: Location of Abstract Content</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-05-09}}: Abstract Wikipedia and the Wikimedia AI Strategy</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-04-30}}: Abstract Wikipedia is a MacArthur 100&Change finalist</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-04-25}}: Welcome, Gregory!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-04-16}}: Wikifunctions integrated in Dagbani - and Wikifunctions; and the date of Easter</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-04-11}}: Quarter in review</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-04-05}}: Quarterly Planning for April–June 2025; We are looking for a Senior Product Manager</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-03-28}}: It's about time</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-03-20}}: Wikidata-based simple enumerations</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-03-15}}: Upcoming NLG meeting, Recent Changes in the software</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-03-07}}: Recent Changes in the software, Recording of Volunteer’s Corner, and talks in London</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-02-26}}: From things to words</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-02-19}}: A proposal for types per language and part of speech</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-02-13}}: Restricting the World, redux</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-02-06}}: Invitation to the Natural Language Generation Special Interest Group</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-01-29}}: With 2000 Functions into the new year: time for stats</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-01-22}}: Welcome, David! Naming conventions recommendations</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-01-15}}: Happy Wikipedia day! Quarterly planning</span>
=== 2024 ===
* {{Status updates|2024-12-19}}: Fonction de la semaine : âge ; intros pour les articles sur une année ; Nouveau type : nombre à virgule flottante
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-12-12}}: Sketching a path to Abstract Wikipedia; Team offsite in Lisbon; and much more</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-11-27}}: WordGraph release; New Special page: list functions by tests; new type for day of the year, and much more</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-11-21}}: New special page for missing labels, new type for Gregorian years, and much more</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-11-13}}: New Type: Rational number; Documentation on Wikidata-based types; and more</span>
* {{Status updates|2024-11-07}} : Le rêve d'une langue universelle
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-11-01}}: Rewriting the backend</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-10-25}}: Our goal for this Quarter: Agreement</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-10-17}}: What could abstract content look like?</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-10-11}}: Wikidata Lexemes in Wikifunctions are coming soon</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-10-02}}: Focus topic: Food</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-09-26}}: Quarterly planning for October–December 2024; Presentation at Celtic Knot tomorrow</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-09-20}}: Introducing focus topic areas</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-09-13}}: Dagbani Wikipedia will be our first wiki for Wikifunctions integration</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-09-06}}: Volunteer's corner and other updates</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-08-29}}: Limits on Name and Description Lengths</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-08-23}}: WasmEdge, Now 300ms Less Edgy</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-08-16}}: Wikimania 2024 edition</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-08-02}}: Revamping our 'About' widget</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-07-26}}: Wikimania 2024 coming soon!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-07-18}}: Research report on integrating Wikifunctions from Wikipedia</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-07-10}}: Type proposals for accessing Lexemes</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-07-03}}: Quarterly planning</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-06-26}}: Welcome, Daphne!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-06-20}}: New Type: Integers</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-06-13}}: New Type: Igbo calendar months</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-06-06}}: New Type: Sign</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-05-30}}: A single singular or a plurality of plurals?</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-05-22}}: New Type: Gregorian calendar months</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-05-15}}: Call for Functions: Spell out the number!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-05-10}}: Flagship type for enumerations: Months of the Gregorian calendar</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-05-03}}: Team meeting and Quarterly plan</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-04-19}}: Welcome, Sharvani!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-04-11}}: New API for calling Wikifunctions and celebrating 1000 functions</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-04-03}}: Product Update on Diff and Upcoming API Improvements</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-03-28}}: Creating tests is now much easier!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-03-21}}: On the way to internationalizing numbers</span>
* {{Status updates|2024-03-13}}: Sur l'identité
* {{Status updates|2024-03-07}}: Présentation de notre deuxième nouveau type : Les nombres naturels
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-02-28}}: Type proposal for natural numbers</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-02-22}}: Updating the function model</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-02-14}}: Fix-it week</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-02-07}}: Quarterly planning. Thank you, Nick! Function of the Week: is permutation</span>
* {{Status updates|2024-02-01}} : l'impératif en igbo !
<span id="Before_February_2024"></span>
=== Avant février 2024 ===
Toutes les mises à jour pour cette période sont [[:m:Special:MyLanguage/Abstract Wikipedia/Updates|disponibles sur Meta-Wiki]].
[[Category:Status updates{{#translation:}}| ]]
kji7dxgzgyya484nwhhgvew8keo0tez
Wikifunctions:Status updates/id
4
23010
296990
295118
2026-08-06T18:03:38Z
FuzzyBot
207
Updating to match new version of source page
296990
wikitext
text/x-wiki
<languages/>
{{shortcut|WF:SU}}{{notice|1='''[[:m:Global message delivery/Targets/Wikifunctions & Abstract Wikipedia|Berlanggananlah]]''' untuk mendapatkan pemberitahuan MassMessage singkat di wiki tentang setiap berita baru}}
{{Wikifunctions updates
| prevlabel = Pemberitahuan sebelumnya
| prev = 2024-02-01
| nextlabel = Pemberitahuan terakhir
| next = 2026-08-05
}}
Banyak hal terjadi di sekitar Wikifungsi dan Wikipedia Abstrak. Ini adalah halaman tempat pengumuman kami diterbitkan.
Anda juga bisa berlangganan ke [[:m:Global message delivery/Targets/Wikifunctions & Abstract Wikipedia|nawala wiki]] agar pengumumannya dikirimkan ke halaman pembicaraan Anda atau ke Warung kopi proyek Anda.
<inputbox>
type=fulltext
prefix={{NAMESPACE}}:{{PAGENAME}}/
break=no
width=30
searchbuttonlabel={{int:Search}}
placeholder=Search all status updates
</inputbox>
<span id="Newsletters"></span>
== Nawala ==
<!--<nowiki> Newsletter entry template:
* <translate><tvar name="1">{{Status updates|2026-0?-??}}</tvar>: Title</translate>
NOTE: Remember to also update the "next =" date at the top of this page.
</nowiki>-->
=== 2026 ===
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-08-05}}: An apple is a fruit</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-07-29}}: Abstract Wikipedia at Wikimania</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-07-16}}: Beyond syntactic tables</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-07-08}}: Moving toward our first Abstract Wikipedia integration milestone</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-07-01}}: Integration on test wiki and annual plan</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-06-26}}: Working on Functions, together</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-06-19}}: The or not the, this is (the?) question</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-06-12}}: Improved loading and display of Test results</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-06-05}}: The illustrated encyclopaedia</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-05-30}}: Looking back and forward</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-05-23}}: Annual plan 2026-2027</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-05-15}}: A higher meaning</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-05-08}}: References from Wikidata are now available</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-05-02}}: Request for input: what should we count for Abstract Wikipedia?</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-04-25}}: The Foundation's search for the perfect language</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-04-16}}: Milestones; Some major issues hopefully resolved</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-04-10}}: Community proposals for capturing meaning</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-04-02}}: Request for Discussion: Syntactic tables</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-03-26}}: First few days of Abstract Wikipedia Beta; Status of Composition Language v2</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-03-19}}: Abstract Wikipedia in Beta</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-03-11}}: A new composition language</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-03-06}}: Citations and Copy and Paste</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-02-26}}: Graceful overrides and fallbacks</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-02-20}}: A sneak preview of Abstract Wikipedia</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-02-13}}: Finishing each other sentences: Starting things; Offsite in Istanbul</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-01-29}}: Integrating Abstract Wikipedia</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-01-22}}: Quarterly plan for January–March 2026</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-01-15}}: 25 years of Wikipedia</span>
=== 2025 ===
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-12-18}}: We wish you a happy new Gregorian year!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-12-11}}: How to write better error messages</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-12-04}}: And the name is Abstract Wikipedia</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-11-27}}: Vote on the new wiki name!; Finishing each other’s sentences</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-11-20}}: Second round of voting for naming the wiki with language-independent content; Sharing function calls</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-11-13}}: Getting ready for second round of voting for naming the wiki with abstract content; Rewriting the backend: Why Rust?</span>
* {{Status updates|2025-11-05}}: Ronde pertama dari pemilihan nama wiki untuk konten abstrak sudah ditutup; Panggilan untuk fungsi Wikikamus; Wikifunctions tertanam di Wikipedia bahasa Bengali dan tujuh tambahan Wikikamus
* {{Status updates|2025-10-29}}: Ronde 1 untuk pemilihan nama "konten wiki abstrak" selesai Senin; Sebuah contoh untuk deskripsi singkat
* {{Status updates|2025-10-23}}: Selamat datang Zaree dan Laura! Babak 1 kontes penamaan telah dimulai.
* {{Status updates|2025-10-15}}: Memulai Kontes Penamaan untuk Wikipedia Abstrak; Memvisualisasikan fungsi
* {{Status updates|2025-10-08}}: Keputusan lokasi konten abstrak dan Perencanaan Triwulanan untuk Oktober–Desember
* {{Status updates|2025-10-03}}: Teks kaya kini tersedia dalam panggilan fungsi tertanam di 148 Wikikamus dan Inkubator
* {{Status updates|2025-09-26}}: Mengakses kualifikasi dalam pernyataan Wikidata
* {{Status updates|2025-09-19}}: Wikifunctions tersedia pada 123 bahasa Wikikamus
* {{Status updates|2025-09-12}}: Lebih dari 3.000 fungsi di Wikifunctions
* {{Status updates|2025-09-07}}: Menyalin pemanggilan fungsi dari satu Wikipedia ke yang lainnya
* {{Status updates|2025-08-29}}: Akses ke butir Wikidata sekarang dapat dilakukan pemanggilan fungsi tertanam; Wikifunctions tersedia di 65 Wikikamus
* {{Status updates|2025-08-22}}: Rekaman sesi Wikimania: Wikifunctions segera datang di wiki terdekat Anda!
* {{Status updates|2025-08-01}}: Wikimania 2025 segera datang!
* {{Status updates|2025-07-26}}: "Wikipedia adalah ensiklopedia"; Dua tahun Wikifunctions
* {{Status updates|2025-07-19}}: Enumerasi berbasis Wikidata ada di sini
* {{Status updates|2025-07-10}}: Batas panjang label dan deskripsi
* {{Status updates|2025-07-04}}: Tentang 1298
* {{Status updates|2025-06-27}}: Berpaa banyak orang yang diperlukan untuk menulis sebuah ensiklopedia?
* {{Status updates|2025-06-21}}: Perencanaan Kuartal untuk Juli-September 2025
* {{Status updates|2025-06-15}}: Menutup konsultasi tentang lokasi dari Konten Abstrak
* {{Status updates|2025-06-06}}: Di mana Konten Abstrak akan diletakkan?
* {{Status updates|2025-05-29}}: Rilis pada lima Wikikamus; Menghitung dengan tanggal hari ini
* {{Status updates|2025-05-23}}: Konsultasi yang sedang berlangsung tentang Lokasi untuk konten Abstrak
* {{Status updates|2025-05-15}}: Lokasi Konten Abstrak
* {{Status updates|2025-05-09}}; Wikipedia Abstrak dan Strategi AI Wikimedia
* {{Status updates|2025-04-30}}: Wikipedia Abstrak adalah finalis MacArthur 100&Change
* {{Status updates|2025-04-25}}: Selamat datang, Gregory!
* {{Status updates|2025-04-16}}: Wikifunction diintegrasikan di Dagbani - dan Wikifunctions; dan tanggal Paskah
* {{Status updates|2025-04-11}}: Tinjauan kuartal
* {{Status updates|2025-04-05}}: Perencanaan Kuartal untuk April-Juni 2025; Kami mencari Manajer Produk Senior
* {{Status updates|2025-03-28}}: Sudah waktunya
* {{Status updates|2025-03-20}}: Enumerasi sederhana berbasis Wikidata
* {{Status updates|2025-03-15}}: Pertemuan NLG selanjutnya, Perubahan terbaru dalam perangkat lunak
* {{Status updates|2025-03-07}}: Perubahan terbaru di perangkat lunak, Rekaman Pojok Sukarelawan, dan diskusi di London
* {{Status updates|2025-02-26}}: Dari benda ke kata
* {{Status updates|2025-02-19}}: Proposal untuk tipe per bahasa dan bagian dari bahasa
* {{Status updates|2025-02-13}}: Membatasi Dunia, redux
* {{Status updates|2025-02-06}}: Undangan untuk Grup Minat Khusus Generasi Bahasa Alami
* {{Status updates|2025-01-29}}: Dengan 2000 Fungsi menuju tahun baru: waktu untuk statistik
* {{Status updates|2025-01-22}}: Selamat datang, David! Rekomendasi konvensi nama
* {{Status updates|2025-01-15}}: Selamat hari Wikipedia! Perencanaan kuartal
=== 2024 ===
* {{Status updates|2024-12-19}}: Fungsi Mingguan: usia; Pengenalan untuk artikel tahun; Tipe baru: angka titik terapung
* {{Status updates|2024-12-12}}: Membuat sketsa arah menuju Wikipedia Abstrak; Tim luar lokasi di Lisbon; dan banyak lainnya
* {{Status updates|2024-11-27}}: Perilisan WordGraph; halaman Istimewa baru: daftar fungsi berdasarkan pengujian; tipe baru untuk hari dalam tahun, dan banyak lagi
* {{Status updates|2024-11-21}}: Halaman Istimewa baru untuk label yang hilang, tipe baru untuk tahun Gregorius, dan banyak lagi
* {{Status updates|2024-11-13}}: Tipe baru: Angka rasional; Dokumentasi untuk tipe berbasis Wikidata; dan banyak lagi
* {{Status updates|2024-11-07}}: Mimpi terhadap Bahasa Universal
* {{Status updates|2024-11-01}}: Menulis ulang perangkat lunak belakang
* {{Status updates|2024-10-25}}: Tujuan kami untuk Kuartal ini: Kesepakatan
* {{Status updates|2024-10-17}}: Seperti apa konten abstrak itu?
* {{Status updates|2024-10-11}}: Leksem Wikidata di Wikifunctions akan segera datang
* {{Status updates|2024-10-02}}: Fokus topik: Makanan
* {{Status updates|2024-09-26}}: Perencanaan kuartal untuk Oktober-Desember 2024; Presentasi di Celtic Know besok
* {{Status updates|2024-09-20}}: Mengenalkan area topik fokus
* {{Status updates|2024-09-13}}: Wikipedia Dagbani akan menjadi wiki pertama kita untuk integrasi Wikifunctions
* {{Status updates|2024-09-06}}: Pojok Sukarelawan dan pembaruan lainnya
* {{Status updates|2024-08-29}}: Batas pada panjang Nama dan Deskripsi
* {{Status updates|2024-08-23}}: WasmEdge, sekarang 300ms Lebih Cepat
* {{Status updates|2024-08-16}}: Edisi Wikimania 2024
* {{Status updates|2024-08-02}}: Mengubah gawit 'Tentang' kita
* {{Status updates|2024-07-26}}: Wikimadia 2024 segera datang!
* {{Status updates|2024-07-18}}: Laporan riset tentang mengintegrasikan Wikifunctions dari Wikipedia
* {{Status updates|2024-07-10}}: Proposal Tipe untuk mengakses Leksem
* {{Status updates|2024-07-03}}: Perencanaan kuartal
* {{Status updates|2024-06-26}}: Selamat datang, Daphne!
* {{Status updates|2024-06-20}}: Tipe baru: Bilangan bulat
* {{Status updates|2024-06-13}}: Tipe baru: Bulan kalender Igbo
* {{Status updates|2024-06-06}}: Tipe baru: Tanda
* {{Status updates|2024-05-30}}: Satu tunggal atau pluralitas plural?
* {{Status updates|2024-05-22}}: Jenis baru: bulan kalender Gregorius
* {{Status updates|2024-05-15}}: Panggilan Fungsi: Tuliskan nomornya!
* {{Status updates|2024-05-10}}: Tipe tertinggi untuk enumerasi: Bulan dari kalender Gregorius
* {{Status updates|2024-05-03}}: Pertemuan Tim dan Rencana Kuartal
* {{Status updates|2024-04-19}}: Selamat datang, Sharvani!
* {{Status updates|2024-04-11}}: API baru untuk memanggil Wikifunctions dan merayakan 1000 fungsi
* {{Status updates|2024-04-03}}: Pembaruan produk di Diff dan Perbaikan API yang Akan Datang
* {{Status updates|2024-03-28}}: Membuat pengujian sekarang lebih mudah!
* {{Status updates|2024-03-21}}: Di jalan untuk menginternasionalkan angka
* {{Status updates|2024-03-13}}: Tentang identitas
* {{Status updates|2024-03-07}}: Mengenaikan tipe baru kedua kita: bilangan asli
* {{Status updates|2024-02-28}}: Proposal tipe untuk bilangan asli
* {{Status updates|2024-02-22}}: Mengupdate model fungsi
* {{Status updates|2024-02-14}}: Minggu memperbaiki itu
* {{Status updates|2024-02-07}}: Perencanaan triwulanan. Terima kasih, Nick! Fungsi Minggu: adalah permutasi
* {{Status updates|2024-02-01}}: Imperatif Igbo!
<span id="Before_February_2024"></span>
=== Sebelum Februari 2024 ===
Sebuah pemberitahuan selama periodi ini [[:m:Special:MyLanguage/Abstract Wikipedia/Updates|dapat dilihat di Meta-Wiki]].
[[Category:Status updates{{#translation:}}| ]]
ss7xsf0iblude058rtwzjuibhc5r9y5
Wikifunctions:FAQ/pt-br
4
23593
296927
234254
2026-08-06T18:02:03Z
FuzzyBot
207
Updating to match new version of source page
296927
wikitext
text/x-wiki
<languages/>
{{shortcut|[[WF:FAQ]]}}
Esta é uma página dedicada às perguntas frequentes sobre a Wikifunções. Por favor, sinta-se à vontade para fazer sua própria pergunta na [[Wikifunctions talk:FAQ|página de discussão]], se ela não estiver listada aqui!
Além disso, considere nosso [[:m:Special:MyLanguage/Abstract Wikipedia/FAQ|FAQ no Meta]] sobre questões mais gerais sobre a Wikifunções e a Wikipédia Abstrata.
__TOC__
<span id="Introduction"></span>
== Introdução ==
<span id="What_is_this_project_about?"></span>
=== Do que se trata esse projeto? ===
A Wikifunções é um novo projeto da Wikimedia que fornece um catálogo de todos os tipos de funções que qualquer um pode chamar, escrever, manter e usar. Ele também fornece a tecnologia subjacente que eventualmente permitirá a tradução de artigos independentes de idioma da Wikipédia Abstrata para o idioma de qualquer Wikipédia. Isso permitirá que todos contribuam e leiam artigos em seus idiomas preferidos.
<span id="What_is_a_function?"></span>
=== O que é uma função? ===
As funções são uma forma de conhecimento que pode responder perguntas, como quantos dias se passaram entre duas datas ou a distância entre duas cidades. Funções mais complicadas podem responder perguntas mais complicadas, como o volume de uma forma tridimensional, a distância entre Marte e Vênus em uma determinada data, ou se duas espécies estavam vivas ao mesmo tempo.
<div class="mw-translate-fuzzy">
Já usamos funções em muitos tipos de consultas de conhecimento, como fazer uma pergunta a um mecanismo de busca. As predefinições, como [[:w:en:Template:Convert|Template:Convert]] e [[:w:en:Template:Age|Template:Age]] na Wikipédia em inglês, também são exemplos de funcionalidades que já são usadas em muitas Wikipédias, escritas em wikitexto e Lua e copiadas manualmente para cada wiki onde são desejadas.
</div>
<span id="What_is_an_implementation?"></span>
=== O que é uma implementação? ===
Uma implementação é uma maneira particular de executar uma função. Uma implementação é uma receita que lista as etapas necessárias para executar a função. Pode ser um pedaço de código em uma linguagem de programação ou uma combinação de chamadas para outras funções. Uma função pode ter muitas implementações, que devem ser todas equivalentes.
<span id="What_is_a_test?"></span>
=== O que é um teste? ===
Um teste é uma maneira de determinar se uma dada função está fazendo a coisa certa. Uma função normalmente terá vários testadores, cada um especificando alguma entrada para a função e as condições que a saída para a entrada dada deve cumprir.
Por exemplo, os testadores para uma função “capitalização de título” podem incluir: “<span dir="ltr" lang="en">abc</span>” deve se tornar “<span dir="ltr" lang="en">Abc</span>”; “<span dir="ltr" lang="en">war and peace</span>” deve se tornar “<span dir="ltr" lang="en">War and Peace</span>”; “<span dir="ltr" lang="ru">война и мир</span>” deve se tornar “<span dir="ltr" lang="ru">Война и мир</span>”; e “<span dir="ltr" lang="en">123</span>” deve permanecer “<span dir="ltr" lang="en">123</span>”.
<span id="Which_features_are_available_now,_which_will_be_soon_available,_and_which_are_further_away?"></span>
=== Quais recursos estão disponíveis agora, quais estarão disponíveis em breve e quais estão mais distantes? ===
* No lançamento:
** Temos a capacidade de ter funções que funcionam com Cadeias e Booleanos.
** A Wikifunções será totalmente internacionalizada desde o início. Ela pode ser usada em qualquer idioma.
* [[Wikifunctions:Status|Desenvolvimento em andamento]]:
** Tipos genéricos e funções genéricas não são totalmente suportados.
** Adicionar tipos será, por enquanto, algo limitado à equipe de desenvolvimento. No futuro, a comunidade poderá adicionar mais tipos. Há muito trabalho a ser feito no futuro para fazer com que os tipos se comportem de forma muito mais suave.
*** Um tipo particularmente interessante serão os dados binários, particularmente os arquivos.
** Atualmente, oferecemos suporte a duas linguagens de programação para implementações: JavaScript e Python. No futuro, queremos oferecer suporte a muitas outras.
** Atualmente, ''não'' é possível chamar outras funções de implementações escritas em qualquer linguagem de programação. Atualmente, isso só é possível por meio de composição.
* No futuro:
** Será possível chamar funções da Wikifunções de outros projetos da Wikimedia e integrar seus resultados na saída da página.
** Será possível usar dados do Wikidata em funções.
** Será possível chamar conjuntos de dados do namespace Commons Data.
<span id="How_is_Wikifunctions_multilingual?"></span>
=== Como a Wikifunções é multilíngue? ===
{{main|Special:MyLanguage/Help:Multilingual}}
A Wikifunções e a Wikipédia Abstrata são multilíngues de diversas maneiras diferentes que não afetam uma à outra:
* '''A Wikifunções é multilíngue em termos de conteúdo e interface de usuário.''' Os usuários podem ler e chamar funções na Wikifunções em qualquer idioma natural. Aqui está a função “juntar cadeias” em [https://www.wikifunctions.org/view/en/Z10000 inglês], [https://www.wikifunctions.org/view/pl/Z10000 polonês] e [https://www.wikifunctions.org/view/he/Z10000 hebraico], e está disponível em muitos outros idiomas.
* '''Colaboradores podem editar e melhorar a Wikifunções usando sua linguagem.''' Até mesmo implementações podem ser editadas na linguagem natural do colaborador. Por exemplo, a composição da função “e” pode ser editada em [https://www.wikifunctions.org/wiki/Z11223?action=edit&uselang=de alemão], [https://www.wikifunctions.org/wiki/Z11223?action=edit&uselang=en inglês], ou qualquer outro dos cerca de 300 idiomas.
* '''As funções da Wikifunções podem ser usadas para criar resultados para qualquer idioma natural.''' A comunidade está criando um número crescente de funções para dar suporte à geração de texto em muitos idiomas naturais. Temos funções para [[Wikifunctions:Catalogue#Breton|bretão]], [[Wikifunctions:Catalogue#Rohingya|ruainga]], [[Wikifunctions:Catalogue#English|inglês]], e muitos outros idiomas.
* '''As funções na Wikifunções podem ser implementadas em várias linguagens de programação diferentes.''' Por exemplo, a [[Z10000|função juntar]] é implementada em [[Z10005|JavaScript]] e em [[Z10004|Python]].
<span id="Which_programming_languages_does_Wikifunctions_currently_support?_Which_programming_languages_will_be_supported_in_the_future?"></span>
=== Quais linguagens de programação a Wikifunções suporta atualmente? Quais linguagens de programação serão suportadas no futuro? ===
{{main|WF:programming languages}}
Atualmente, a Wikifunções suporta implementações escritas em JavaScript e Python. Planejamos adicionar suporte para mais linguagens de programação no futuro. Esperamos adicionar pelo menos mais uma linguagem de programação em 2025 (mas ainda não decidimos qual).
<span id="How_will_Wikifunctions_be_integrated_into_other_projects?"></span>
=== Como a Wikifunções será integrada a outros projetos? ===
A Wikifunções é o primeiro passo para construir a Wikipédia Abstrata. Nosso foco a curto prazo será dar suporte à comunidade e fazer melhorias com base no feedback. Ao mesmo tempo, começaremos o processo de integração com a Wikipédia e o Wikidata, o que permitirá aplicações mais amplas na vida real e nos deixará mais próximos da visão da Wikipédia Abstrata.
Os contribuidores poderão chamar funções armazenadas no site da Wikifunções de dentro de suas wikis. O resultado da chamada de função será exibido aos leitores da wiki. Isso pode ser usado, por exemplo, para calcular a idade de uma pessoa, a densidade populacional com base em dados de população e área do Wikidata, ou para desenhar um gráfico e integrá-lo a um determinado artigo.
Outra opção para integrar a Wikifunções será integrar uma interface de chamada de função interativa dentro de sua wiki. Isso poderia ser usado, por exemplo, em um artigo da Wikipédia para calcular dinamicamente o resultado de uma equação física com base em parâmetros fornecidos pelo leitor, desenhar e interagir com funções matemáticas, etc.
<span id="What_Wikifunctions_is_not"></span>
<div class="mw-translate-fuzzy">
=== O que a Wikifunções não é? ===
</div>
Por favor, veja [[Special:MyLanguage/Wikifunctions:What Wikifunctions is not|Wikifunções:O que a Wikifunções não é]] para mais informações sobre isso.
<span id="What_license_will_the_functions_and_derived_content_be_under?"></span>
=== Sob qual licença as funções e o conteúdo derivado estarão? ===
Conforme a discussão aconteceu [[:m:Special:MyLanguage/Abstract Wikipedia/Licensing discussion|no Meta entre novembro e dezembro de 2021]], todas as contribuições para a Wikifunções e os projetos mais amplos da Wikipédia Abstrata serão publicadas sob licenças livres. Em particular:
* [[Special:MyLanguage/Wikifunctions:Glossary#Content|Conteúdo textual]] na Wikifunções será publicado sob [[w:pt:Licença Creative Commons|CC BY-SA 4.0]].
* [[Special:MyLanguage/Wikifunctions:Glossary#Function|Assinaturas de função]] e outros conteúdos estruturados na Wikifunções serão publicados sob [[w:CC0|CC 0]].
* [[Special:MyLanguage/Wikifunctions:Glossary#Implementation|Implementações de código]] na Wikifunções serão publicadas sob a [[w:pt:Licença Apache|Licença Apache 2]].
* [[Special:MyLanguage/Wikifunctions:Glossary#Content|Conteúdo Abstrato]] para a Wikipédia Abstrata será publicado sob CC BY-SA 4.0.
Ainda há alguns pontos que precisarão ser abordados no futuro, como a licença do conteúdo gerado a partir do conteúdo abstrato. Planejamos redigir um documento mais abrangente com o departamento Jurídico sobre como as pessoas podem reutilizar o código da Wikifunções da forma mais indolor possível, ao mesmo tempo em que respeitam a licença.
<span id="Contributing"></span>
== Contribuindo ==
<span id="I'm_new_here._What_is_there_for_me_to_do_and_how_can_I_help?"></span>
=== Sou novo aqui. O que posso fazer e como posso ajudar? ===
Bem-vindo(a)! Estamos muito felizes em ter você aqui! Há muitas oportunidades para contribuir com a Wikifunções, desde criar novas funções até melhorar e traduzir a documentação. Se você está procurando maneiras de se envolver, recomendamos que, dependendo do seu nível de conforto, você sugira uma nova função sobre um tópico do seu interesse. Ou até mesmo crie uma função desse tipo. Forneça alguns testes. Tente sua mão em uma implementação. Ajude com as traduções. Leia e melhore nossa documentação. Ajude a organizar a comunidade.
<span id="How_do_I_create_a_new_function,_implementation,_or_test?"></span>
=== Como faço para criar uma nova função, implementação ou teste? ===
Para ver como criar uma nova função, implementação ou teste, consulte [[Special:MyLanguage/Wikifunctions:Introduction|Wikifunções:Introdução]].
Para ver mais detalhes sobre como criar uma implementação, consulte [[Special:MyLanguage/Wikifunctions:How to create implementations|Wikifunções:Como criar implementações]].
<span id="What_should_I_edit_first?"></span>
=== O que devo editar primeiro? ===
<div class="mw-translate-fuzzy">
Se você consegue escrever em várias linguagens, encontre funções que ainda não tenham rótulos e descrições em suas linguagens e ajude a adicioná-las.
</div>
Se você tiver algum interesse em um domínio que poderia apresentar funções na Wikifunções, mas ainda não o faz, ou se tiver mais ideias para funções, vá para a página de [[Wikifunctions:Suggest a new function|sugestão de novas funções]] e apresente suas ideias.
Se você é um programador em JavaScript ou Python, talvez queira verificar funções que ainda não tenham implementações em JavaScript ou Python e tentar escrevê-las.
<span id="Where_can_I_go_for_help?"></span>
=== Onde posso obter ajuda? ===
Sua primeira parada deve ser o [[Special:MyLanguage/Help:Contents|portal de ajuda]] onde você encontrará toda a documentação relacionada ao uso e edição da Wikifunções. Se você ainda estiver travado, poste uma mensagem no [[Wikifunctions:Project chat|chat do projeto]], e alguém responderá sua pergunta.
<span id="How_do_we_sort_or_categorize_functions?"></span>
=== Como classificamos ou categorizamos funções? ===
{{Tracked|T285424}}
<div class="mw-translate-fuzzy">
Por enquanto, a melhor maneira de classificar ou categorizar funções é fazê-lo manualmente por meio de páginas no namespace Wikifunctions. Outra opção seria por meio da página de discussão da função dada. Monitoraremos esses esforços e discutiremos com a comunidade quais mudanças no sistema seriam úteis para essa tarefa.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== How can I setup the software locally to hack on it? ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
See [[Special:MyLanguage/Wikifunctions:Hacking on the evaluator and orchestrator|Hacking on the evaluator and orchestrator]].
</div>
[[Category:FAQ| {{#translation:}}]]
cdz9i8y6lcn22c5gefspsvj0s9m3kp8
Wikifunctions:Status updates/uk
4
24551
297001
295128
2026-08-06T18:03:46Z
FuzzyBot
207
Updating to match new version of source page
297001
wikitext
text/x-wiki
<languages/>
{{shortcut|WF:SU}}{{notice|1='''[[:m:Global message delivery/Targets/Wikifunctions & Abstract Wikipedia|Підпишіться]]''', щоб отримувати короткі сповіщення на вікі через систему масових повідомлень MassMessage про кожний новий випуск}}
{{Wikifunctions updates
| prevlabel = Попереднє оновлення
| prev = 2024-02-01
| nextlabel = Останнє оновлення
| next = 2026-08-05
}}
Багато чого відбувається навколо Вікіфункцій і Абстрактної Вікіпедії. Це сторінка, де ми публікуємо наші оновлення, включаючи [[Special:MyLanguage/WF:function of the Week|функцію тижня]].
Ви також можете підписатися на [[:m:Global message delivery/Targets/Wikifunctions & Abstract Wikipedia|бюлетень вікі-спільноти]], щоб отримувати його на свою сторінку обговорення або на сторінку спільноти вашого проєкту.
<inputbox>
type=fulltext
prefix={{NAMESPACE}}:{{PAGENAME}}/
break=no
width=30
searchbuttonlabel={{int:Search}}
placeholder=Search all status updates
</inputbox>
<span id="Newsletters"></span>
== Інформаційні бюлетені ==
<!--<nowiki> Newsletter entry template:
* <translate><tvar name="1">{{Status updates|2026-0?-??}}</tvar>: Title</translate>
NOTE: Remember to also update the "next =" date at the top of this page.
</nowiki>-->
=== 2026 ===
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-08-05}}: An apple is a fruit</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-07-29}}: Abstract Wikipedia at Wikimania</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-07-16}}: Beyond syntactic tables</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-07-08}}: Moving toward our first Abstract Wikipedia integration milestone</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-07-01}}: Integration on test wiki and annual plan</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-06-26}}: Working on Functions, together</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-06-19}}: The or not the, this is (the?) question</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-06-12}}: Improved loading and display of Test results</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-06-05}}: The illustrated encyclopaedia</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-05-30}}: Looking back and forward</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-05-23}}: Annual plan 2026-2027</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-05-15}}: A higher meaning</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-05-08}}: References from Wikidata are now available</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-05-02}}: Request for input: what should we count for Abstract Wikipedia?</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-04-25}}: The Foundation's search for the perfect language</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-04-16}}: Milestones; Some major issues hopefully resolved</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-04-10}}: Community proposals for capturing meaning</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-04-02}}: Request for Discussion: Syntactic tables</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-03-26}}: First few days of Abstract Wikipedia Beta; Status of Composition Language v2</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-03-19}}: Abstract Wikipedia in Beta</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-03-11}}: A new composition language</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-03-06}}: Citations and Copy and Paste</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-02-26}}: Graceful overrides and fallbacks</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-02-20}}: A sneak preview of Abstract Wikipedia</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-02-13}}: Finishing each other sentences: Starting things; Offsite in Istanbul</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-01-29}}: Integrating Abstract Wikipedia</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-01-22}}: Quarterly plan for January–March 2026</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-01-15}}: 25 years of Wikipedia</span>
=== 2025 ===
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-12-18}}: We wish you a happy new Gregorian year!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-12-11}}: How to write better error messages</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-12-04}}: And the name is Abstract Wikipedia</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-11-27}}: Vote on the new wiki name!; Finishing each other’s sentences</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-11-20}}: Second round of voting for naming the wiki with language-independent content; Sharing function calls</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-11-13}}: Getting ready for second round of voting for naming the wiki with abstract content; Rewriting the backend: Why Rust?</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-11-05}}: First round of voting for naming the wiki for abstract content closed; Calling for Wiktionary functions; Embedded Wikifunctions on Bengali Wikipedia and seven more Wiktionaries</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-10-29}}: Round 1 of “abstract content wiki” naming vote ending Monday; An example of short descriptions</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-10-23}}: Welcome Zaree and Laura! Naming contest round 1 kicked off</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-10-15}}: Kicking Off the Naming Contest for Abstract Wikipedia; Visualizing functions</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-10-08}}: Decision on location for abstract content and Quarterly Planning for October–December</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-10-03}}: Rich text now available in embedded function calls on 148 Wiktionaries and Incubator</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-09-26}}: Accessing qualifiers in Wikidata statements</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-09-19}}: Wikifunctions available on 123 Wiktionary languages</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-09-12}}: More than 3,000 functions on Wikifunctions</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-09-07}}: Copying function calls from one Wikipedia to another</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-08-29}}: Accessing Wikidata items now possible from embedded function calls; Wikifunctions available on 65 Wikitionaries</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-08-22}}: Recording of Wikimania session: Wikifunctions is coming soon to a wiki near you!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-08-01}}: Wikimania 2025 is coming soon!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-07-26}}: “Wikipedia is an encyclopedia”; Two years of Wikifunctions</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-07-19}}: Wikidata-based enumerations are here</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-07-10}}: Length limits on labels and descriptions</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-07-04}}: Coverage of 1298</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-06-27}}: How many people are needed to write an encyclopedia?</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-06-21}}: Quarterly Planning for July–September 2025</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-06-15}}: Closing the consultation about the location of Abstract Content</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-06-06}}: Where will Abstract Content go?</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-05-29}}: Rolling out to five Wiktionaries; Calculating with today's date</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-05-23}}: Ongoing consultation about the Location for Abstract Content</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-05-15}}: Location of Abstract Content</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-05-09}}: Abstract Wikipedia and the Wikimedia AI Strategy</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-04-30}}: Abstract Wikipedia is a MacArthur 100&Change finalist</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-04-25}}: Welcome, Gregory!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-04-16}}: Wikifunctions integrated in Dagbani - and Wikifunctions; and the date of Easter</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-04-11}}: Quarter in review</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-04-05}}: Quarterly Planning for April–June 2025; We are looking for a Senior Product Manager</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-03-28}}: It's about time</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-03-20}}: Wikidata-based simple enumerations</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-03-15}}: Upcoming NLG meeting, Recent Changes in the software</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-03-07}}: Recent Changes in the software, Recording of Volunteer’s Corner, and talks in London</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-02-26}}: From things to words</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-02-19}}: A proposal for types per language and part of speech</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-02-13}}: Restricting the World, redux</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-02-06}}: Invitation to the Natural Language Generation Special Interest Group</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-01-29}}: With 2000 Functions into the new year: time for stats</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-01-22}}: Welcome, David! Naming conventions recommendations</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-01-15}}: Happy Wikipedia day! Quarterly planning</span>
=== 2024 ===
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-12-19}}: Function of the Week: age; Intros for year articles; New Type: Floating-point number</span>
* {{Status updates|2024-12-12}}: Ескіз шляху до Абстрактної Вікіпедії; команда поза офісом у Лісабоні; і багато іншого
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-11-27}}: WordGraph release; New Special page: list functions by tests; new type for day of the year, and much more</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-11-21}}: New special page for missing labels, new type for Gregorian years, and much more</span>
* {{Status updates|2024-11-13}}: Новий тип: Раціональне число; Документація типів на основі Вікіданих; та інше
* {{Status updates|2024-11-07}}: Мрія про універсальну мову
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-11-01}}: Rewriting the backend</span>
* {{Status updates|2024-10-25}}: Наша ціль на цей квартал: Узгодження
* {{Status updates|2024-10-17}}: Як може виглядати абстрактний вміст?
* {{Status updates|2024-10-11}}: Лексеми Вікіданих зовсім скоро будуть у Вікіфункціях
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-10-02}}: Focus topic: Food</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-09-26}}: Quarterly planning for October–December 2024; Presentation at Celtic Knot tomorrow</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-09-20}}: Introducing focus topic areas</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-09-13}}: Dagbani Wikipedia will be our first wiki for Wikifunctions integration</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-09-06}}: Volunteer's corner and other updates</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-08-29}}: Limits on Name and Description Lengths</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-08-23}}: WasmEdge, Now 300ms Less Edgy</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-08-16}}: Wikimania 2024 edition</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-08-02}}: Revamping our 'About' widget</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-07-26}}: Wikimania 2024 coming soon!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-07-18}}: Research report on integrating Wikifunctions from Wikipedia</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-07-10}}: Type proposals for accessing Lexemes</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-07-03}}: Quarterly planning</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-06-26}}: Welcome, Daphne!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-06-20}}: New Type: Integers</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-06-13}}: New Type: Igbo calendar months</span>
* {{Status updates|2024-06-06}}: Новий тип: Знак
* {{Status updates|2024-05-30}}: Єдине однини чи множинність множин?
* {{Status updates|2024-05-22}}: Новий тип: Місяці григоріанського календаря
* {{Status updates|2024-05-15}}: Виклик функцій: Напишіть число словами!
* {{Status updates|2024-05-10}}: Флагманський тип для переліків: Місяці григоріанського календаря
* {{Status updates|2024-05-03}}: Зустріч команди і квартальне планування
* {{Status updates|2024-04-19}}: Ласкаво просимо, Шарвані!
* {{Status updates|2024-04-11}}: Новий API для виклику Вікіфункцій і святкування 1000 функцій
* {{Status updates|2024-04-03}}: Оновлення продукту щодо відмінностей між версіями і майбутні покращення API
* {{Status updates|2024-03-28}}: Створювати тести тепер набагато простіше!
* {{Status updates|2024-03-21}}: На шляху до інтернаціоналізації чисел
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-03-13}}: On identity</span>
* {{Status updates|2024-03-07}}: Представляємо наш другий новий тип: Натуральні числа
* {{Status updates|2024-02-28}}: Пропозиція типу для натуральних чисел
* {{Status updates|2024-02-22}}: Оновлення моделі функції
* {{Status updates|2024-02-14}}: Tиждень виправлень
* {{Status updates|2024-02-07}}: Квартальне планування. Дякуємо, Нік! Функція тижня: є перестановкою
* {{Status updates|2024-02-01}}: Наказовий спосіб у мові ібго!
<span id="Before_February_2024"></span>
=== До лютого 2024 ===
Всі оновлення цього періоду [[:m:Special:MyLanguage/Abstract Wikipedia/Updates|доступні на Meta-Wiki]].
[[Category:Status updates{{#translation:}}| ]]
82hjehu07o4pnvqtkm8rnyoq9ks0l3q
Wikifunctions:FAQ/da
4
24620
296909
265376
2026-08-06T18:01:54Z
FuzzyBot
207
Updating to match new version of source page
296909
wikitext
text/x-wiki
<languages/>
{{shortcut|[[WF:FAQ]]}}
<div lang="en" dir="ltr" class="mw-content-ltr">
This is a dedicated page for the Frequently Asked Questions about Wikifunctions. Please, feel free to ask your own question on the [[Wikifunctions talk:FAQ|talk page]], if your question is not listed here!
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Also, please consider our [[:m:Special:MyLanguage/Abstract Wikipedia/FAQ|FAQ on Meta]] regarding more general questions about Wikifunctions and Abstract Wikipedia.
</div>
__TOC__
<span id="Introduction"></span>
== Introduktion ==
<span id="What_is_this_project_about?"></span>
=== Hvad omhandler dette projekt? ===
<div lang="en" dir="ltr" class="mw-content-ltr">
Wikifunctions is a new Wikimedia project that provides a catalog of all kinds of functions that anyone can call, write, maintain, and use. It also provides the underlying technology that will eventually enable the translation of language-independent articles from Abstract Wikipedia into the language of any Wikipedia. This will allow everyone to contribute and read articles in their preferred languages.
</div>
<span id="What_is_a_function?"></span>
=== Hvad er en funktion? ===
<div lang="en" dir="ltr" class="mw-content-ltr">
Functions are a form of knowledge that can answer questions, such as how many days have passed between two dates or the distance between two cities. More complicated functions can answer more complicated questions, such as the volume of a three-dimensional shape, the distance between Mars and Venus on a certain date, or whether two species were alive at the same time.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
We already use functions in many types of knowledge inquiries, such as asking a question to a search engine. The templates, such as [[:w:en:Template:Convert|Template:Convert]] and [[:w:en:Template:Age|Template:Age]] on English Wikipedia, are also examples of functions that are already used in many Wikipedias, written in wikitext and Lua and manually copied to each wiki where they're wanted.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== What is an implementation? ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
An implementation is a particular way to execute a function. An implementation is a recipe that lists the steps that are needed to run the function. It may be a piece of code in a programming language or a combination of calls to other functions. A function may have many implementations, which should all be equivalent.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== What is a test? ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
A test is a way to determine if a given function is doing the right thing. A function will typically have multiple testers, each specifying some input to the function and the conditions the output for the given input must fulfill.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For example, testers for a “title case” function might include: “<span dir="ltr" lang="en">abc</span>” should become “<span dir="ltr" lang="en">Abc</span>”; “<span dir="ltr" lang="en">war and peace</span>” should become “<span dir="ltr" lang="en">War and Peace</span>”; “<span dir="ltr" lang="ru">война и мир</span>” should become “<span dir="ltr" lang="ru">Война и мир</span>”; and “<span dir="ltr" lang="en">123</span>” should remain “<span dir="ltr" lang="en">123</span>”.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Which features are available now, which will be soon available, and which are further away? ===
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">At launch:</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">We have the ability to have functions that work with Strings and Booleans.</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">Wikifunctions will be fully internationalized from the beginning. It can be used in any language.</span>
* [[Wikifunctions:Status|Igangnværende udvikling]]:
** <span lang="en" dir="ltr" class="mw-content-ltr">Generic types and generic functions are not fully supported.</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">Adding types will, for now, be something that is limited to the development team. In the future, the community will be able to add more types. There is a lot of work to be done in the future to make types behave much more smoothly.</span>
*** <span lang="en" dir="ltr" class="mw-content-ltr">One particularly interesting type will be binary data, and particularly files.</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">We currently support two programming languages for implementations: JavaScript and Python. In the future, we want to support many more.</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">Currently, it is ''not'' possible to call other functions from implementations written in any programming language. This is currently only possible through composition.</span>
* I fremtiden:
** <span lang="en" dir="ltr" class="mw-content-ltr">It will be possible to call Wikifunctions functions from other Wikimedia projects and integrate their results into the output of the page.</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">It will be possible to use data from Wikidata in functions.</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">It will be possible to call data sets from Commons Data namespace.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== How is Wikifunctions multilingual? ===
</div>
{{main|Special:MyLanguage/Help:Multilingual}}
<div lang="en" dir="ltr" class="mw-content-ltr">
Wikifunctions and Abstract Wikipedia are multilingual in a number of ways that do not impact each other:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Wikifunctions is multilingual in terms of its content and user interface.''' Users can read and call functions on Wikifunctions in any natural language. Here is the “join string” function in [https://www.wikifunctions.org/view/en/Z10000 English], [https://www.wikifunctions.org/view/pl/Z10000 Polish], and [https://www.wikifunctions.org/view/he/Z10000 Hebrew], and it is available in many more languages.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Contributors can edit and improve Wikifunctions using their language.''' Even implementations can be edited in the natural language of the contributor. For example, the composition of the “and” function can be edited in [https://www.wikifunctions.org/wiki/Z11223?action=edit&uselang=de German], [https://www.wikifunctions.org/wiki/Z11223?action=edit&uselang=en English], or any other of about 300 languages.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Wikifunctions functions can be used to create results for any natural language.''' The community is creating a growing number of functions to support the generation of text in many natural languages. We have functions for [[Wikifunctions:Catalogue#Breton|Breton]], [[Wikifunctions:Catalogue#Rohingya|Rohingya]], [[Wikifunctions:Catalogue#English|English]], and many other languages.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Functions in Wikifunctions can be implemented in various different programming languages.''' For example, the [[Z10000|join function]] is implemented in both [[Z10005|JavaScript]] and [[Z10004|Python]].</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Which programming languages does Wikifunctions currently support? Which programming languages will be supported in the future? ===
</div>
{{main|WF:programming languages}}
<div lang="en" dir="ltr" class="mw-content-ltr">
Currently, Wikifunctions supports implementations written in JavaScript and Python. We plan to add support for more programming languages in the future. We hope to add at least one further programming language in 2025 (but have not yet decided which one).
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== How will Wikifunctions be integrated into other projects? ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Wikifunctions is the first step towards building Abstract Wikipedia. Our near-term focus will be on supporting the community and making improvements based on feedback. Concurrently, we will begin the process of integrating it with Wikipedia and Wikidata, which will enable broader real-life applications and get us closer to the vision of Abstract Wikipedia.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Contributors will be able to call functions stored on the Wikifunctions site from within their wikis. The result of the function call will be displayed to readers of the wiki. This can be used, for example, to calculate the age of a person, the population density based on population and area data from Wikidata, or to draw a graph and integrate it into a given article.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Another option to integrate Wikifunctions will be to integrate an interactive function call interface within their wiki. This could be used, for example, in a Wikipedia article to dynamically calculate the result of a physical equation based on reader-provided parameters, draw and interact with mathematical functions, etc.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== What Wikifunctions is not ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Please, see [[Special:MyLanguage/Wikifunctions:What Wikifunctions is not|Wikifunctions:What Wikifunctions is not]] for more information on that.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== What license will the functions and derived content be under? ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Per the discussion happened [[:m:Special:MyLanguage/Abstract Wikipedia/Licensing discussion|on Meta between November and December 2021]], all contributions to Wikifunctions and the wider Abstract Wikipedia projects will be published under free licenses. In particular:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Special:MyLanguage/Wikifunctions:Glossary#Content|Textual content]] on Wikifunctions will be published under [[w:Creative Commons license|CC BY-SA 4.0]].</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Special:MyLanguage/Wikifunctions:Glossary#Function|Function signatures]] and other structured content on Wikifunctions will be published under [[w:CC0|CC 0]].</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Special:MyLanguage/Wikifunctions:Glossary#Implementation|Code implementations]] in Wikifunctions will be published under the [[w:Apache License|Apache 2 license]].</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Special:MyLanguage/Wikifunctions:Glossary#Content|Abstract Content]] for Abstract Wikipedia will be published under CC BY-SA 4.0.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
There are still some points that will need to be addressed in the future, such as the license of the generated content from the abstract content. We plan on drafting a more comprehensive document with the Legal department about how people can re-use code from Wikifunctions as painlessly as possible, while adhering to the license.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Contributing ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== I'm new here. What is there for me to do and how can I help? ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Welcome! We're very happy to have you here! There are many opportunities for contributing to Wikifunctions, from creating new functions to improving and translating documentation. If you are looking for ways to get involved, we recommend that maybe, depending on your level of comfort, you suggest a new function on a topic you are interested in. Or even create such a function. Provide some tests. Try your hand at an implementation. Help with translations. Read and improve our documentation. Help with organizing the community.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== How do I create a new function, implementation, or test? ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
To see how to create a new function, implementation, or test, see [[Special:MyLanguage/Wikifunctions:Introduction|Wikifunctions:Introduction]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
To see in more detail how to create an implementation, see [[Special:MyLanguage/Wikifunctions:How to create implementations|Wikifunctions:How to create implementations]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== What should I edit first? ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If you can write several languages, find functions that don't have labels and descriptions in your languages yet on the page [[Special:ListMissingLabels]], and help to add them.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If you have some interest in a domain that could feature functions in Wikifunctions, but yet doesn't, or if you have more ideas for functions, go to the page for [[Wikifunctions:Suggest a new function|suggesting new functions]] and present your ideas.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If you are a coder in JavaScript or Python, maybe you want to check for functions that don't yet have implementations in JavaScript or Python, and try to write them.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Where can I go for help? ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Your first stop should be the [[Special:MyLanguage/Help:Contents|Help portal]], where you'll find all the documentation related to using and editing Wikifunctions. If you're still stuck, post a message on [[Wikifunctions:Project chat|Project chat]], and someone will answer your question.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== How do we sort or categorize functions? ===
</div>
{{Tracked|T285424}}
<div lang="en" dir="ltr" class="mw-content-ltr">
For now, the best way to sort or categorize functions is to do it by hand through [[Special:MyLanguage/Wikifunctions:Catalogue|pages in the Wikifunctions namespace]]. Another option would be through the talk page of the given function. We will monitor these efforts and discuss with the community which changes to the system would be helpful for this task.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== How can I setup the software locally to hack on it? ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
See [[Special:MyLanguage/Wikifunctions:Hacking on the evaluator and orchestrator|Hacking on the evaluator and orchestrator]].
</div>
[[Category:FAQ| {{#translation:}}]]
af5q3ha3idqmwikcjvf0vu0o7xtjica
Wikifunctions:Report a technical problem/da
4
24630
296953
279532
2026-08-06T18:03:05Z
FuzzyBot
207
Updating to match new version of source page
296953
wikitext
text/x-wiki
<languages/>
{{shortcut|[[WF:BUG]]}}
{{see also
|Special:MyLanguage/WF:Status|l1=WF:Status
|Special:MyLanguage/WF:Feature_petitions|l2=WF:Feature petitions
}}
<div lang="en" dir="ltr" class="mw-content-ltr">
If you have found a bug in Wikifunctions, or you have a feature request for Wikifunctions, please let us know!
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Scope ==
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Bug''' - a problem that is producing incorrect or unexpected results on Wikifunctions. Note that problems within Functions themselves are not considered as a bug in this context.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Feature request''' - an idea that the development team can add to Wikifunctions to make it even more awesome.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
Do you need help with something else?
</div>
: <span lang="en" dir="ltr" class="mw-content-ltr">The following are '''out of scope''' of the work of the Wikifunctions development team:</span>
:* <span lang="en" dir="ltr" class="mw-content-ltr">The '''content of individual Functions''' – Discuss those on the talkpage of the Function itself, or ask for help at [[Wikifunctions:Project chat]] or in the channels listed below; if you think a function is missing, see [[Wikifunctions:Suggest a function]]</span>
:* <span lang="en" dir="ltr" class="mw-content-ltr">The '''Wikifunctions project's policies''' – Ask about those at [[Wikifunctions:Project chat]] or in the channels listed below</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Find existing bugs and feature requests ==
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">See '''[[Wikifunctions:Status]]''' for a quick summary of high-level issues.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">You can '''[[phab:maniphest/query/UzvNRqsdnymk/|search the Phabricator]] listing of open tasks''' to see if your bug or feature idea is already documented.</span>
<span id="Discuss_with_others"></span>
== Diskuter med andre ==
<div lang="en" dir="ltr" class="mw-content-ltr">
You can ask questions about possible bugs or feature ideas at a few locations. This may be helpful if you are unsure how to clearly describe the bug or feature idea:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">The discussion page [[Wikifunctions:Project chat|here]].</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">The main chat on [https://t.me/Wikifunctions Telegram] or IRC {{channel|wikipedia-abstract}} (bridged together) ([https://wm-bot.wmcloud.org/logs/%23wikipedia-abstract/ logs], [https://wm-bot.wmflabs.org/logs/%23wikipedia-abstract/ old logs])</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">The developer chat on [https://t.me/abstract_wikipedia_tech Telegram] or IRC {{channel|wikipedia-abstract-tech}} (bridged together) ([https://wm-bot.wmcloud.org/logs/%23wikipedia-abstract-tech/ logs])</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
== File a task in Phabricator ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If you are familiar with Phabricator, you can search and file tasks directly.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If you are not yet familiar: Phabricator is the web-based development collaboration tool mostly used to manage MediaWiki software projects including Wikifunctions. A short summary about Phabricator for newcomers, including tutorial videos, is on MediaWiki's wiki at [[mw:Special:MyLanguage/Phabricator/Help|mw:Phabricator/Help]].
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">You can '''[[phab:maniphest/query/UzvNRqsdnymk/|search]] the listing of open tasks''' to see if your bug or feature idea is already documented.</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">The existing tasks are collected with the '''[[phab:tag/abstract wikipedia team|#abstract wikipedia team]] tag'''.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">You can '''[https://phabricator.wikimedia.org/maniphest/task/edit/form/43/?projects=abstract_wikipedia file a new task]'''. Please always include:</span>
** Eksempler
** <span lang="en" dir="ltr" class="mw-content-ltr">Any relevant links</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">For bugs: The exact steps that produced the bug, so that the team can reproduce and diagnose it.</span>
<span id="Languages"></span>
== Sprog ==
<div lang="en" dir="ltr" class="mw-content-ltr">
The development team understands a limited number of languages – but you are free to report issues in any language that you're comfortable with.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If possible, please provide a summary in English when creating a phabricator task, or ask someone to help you.
</div>
<span id="Follow-up"></span>
== Opfølgning ==
* <span lang="en" dir="ltr" class="mw-content-ltr">The locations above are followed by the Wikifunctions development team, as well as community members. The time to get a reply varies depending on the nature or complexity of the topic, etc. However, in general, you can get an answer within 2 workdays. Please let us know if we missed something, as life can get distracting!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Not all problems can be solved immediately: depending on the impact, priority, etc. some bugs can be triaged to low priority. You may follow the status of your report on the relevant linked phabricator task.</span>
[[Category:Report a technical problem{{#translation:}}]]
lhx5vcvyku96j5eqhs09dp5ikjl7fus
Wikifunctions:Status updates/szl
4
26234
296999
295126
2026-08-06T18:03:44Z
FuzzyBot
207
Updating to match new version of source page
296999
wikitext
text/x-wiki
<languages/>
{{shortcut|WF:SU}}{{notice|1=<span lang="en" dir="ltr" class="mw-content-ltr">'''[[:m:Global message delivery/Targets/Wikifunctions & Abstract Wikipedia|Subscribe]]''' to receive short on-wiki MassMessage notifications about each new issue</span>}}
{{Wikifunctions updates
| prevlabel = <span lang="en" dir="ltr" class="mw-content-ltr">Previous update</span>
| prev = 2024-02-01
| nextlabel = <span lang="en" dir="ltr" class="mw-content-ltr">Last update</span>
| next = 2026-08-05
}}
<div lang="en" dir="ltr" class="mw-content-ltr">
A lot is happening around Wikifunctions and Abstract Wikipedia. This is the page where our updates are posted, including the [[Special:MyLanguage/WF:function of the Week|function of the Week]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
You can also subscribe to the [[:m:Global message delivery/Targets/Wikifunctions & Abstract Wikipedia|on-wiki newsletter]] to have them delivered to your talk page or to your project's village pump.
</div>
<inputbox>
type=fulltext
prefix={{NAMESPACE}}:{{PAGENAME}}/
break=no
width=30
searchbuttonlabel={{int:Search}}
placeholder=Search all status updates
</inputbox>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Newsletters ==
</div>
<!--<nowiki> Newsletter entry template:
* <translate><tvar name="1">{{Status updates|2026-0?-??}}</tvar>: Title</translate>
NOTE: Remember to also update the "next =" date at the top of this page.
</nowiki>-->
=== 2026 ===
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-08-05}}: An apple is a fruit</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-07-29}}: Abstract Wikipedia at Wikimania</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-07-16}}: Beyond syntactic tables</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-07-08}}: Moving toward our first Abstract Wikipedia integration milestone</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-07-01}}: Integration on test wiki and annual plan</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-06-26}}: Working on Functions, together</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-06-19}}: The or not the, this is (the?) question</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-06-12}}: Improved loading and display of Test results</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-06-05}}: The illustrated encyclopaedia</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-05-30}}: Looking back and forward</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-05-23}}: Annual plan 2026-2027</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-05-15}}: A higher meaning</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-05-08}}: References from Wikidata are now available</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-05-02}}: Request for input: what should we count for Abstract Wikipedia?</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-04-25}}: The Foundation's search for the perfect language</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-04-16}}: Milestones; Some major issues hopefully resolved</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-04-10}}: Community proposals for capturing meaning</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-04-02}}: Request for Discussion: Syntactic tables</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-03-26}}: First few days of Abstract Wikipedia Beta; Status of Composition Language v2</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-03-19}}: Abstract Wikipedia in Beta</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-03-11}}: A new composition language</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-03-06}}: Citations and Copy and Paste</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-02-26}}: Graceful overrides and fallbacks</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-02-20}}: A sneak preview of Abstract Wikipedia</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-02-13}}: Finishing each other sentences: Starting things; Offsite in Istanbul</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-01-29}}: Integrating Abstract Wikipedia</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-01-22}}: Quarterly plan for January–March 2026</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-01-15}}: 25 years of Wikipedia</span>
=== 2025 ===
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-12-18}}: We wish you a happy new Gregorian year!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-12-11}}: How to write better error messages</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-12-04}}: And the name is Abstract Wikipedia</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-11-27}}: Vote on the new wiki name!; Finishing each other’s sentences</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-11-20}}: Second round of voting for naming the wiki with language-independent content; Sharing function calls</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-11-13}}: Getting ready for second round of voting for naming the wiki with abstract content; Rewriting the backend: Why Rust?</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-11-05}}: First round of voting for naming the wiki for abstract content closed; Calling for Wiktionary functions; Embedded Wikifunctions on Bengali Wikipedia and seven more Wiktionaries</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-10-29}}: Round 1 of “abstract content wiki” naming vote ending Monday; An example of short descriptions</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-10-23}}: Welcome Zaree and Laura! Naming contest round 1 kicked off</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-10-15}}: Kicking Off the Naming Contest for Abstract Wikipedia; Visualizing functions</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-10-08}}: Decision on location for abstract content and Quarterly Planning for October–December</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-10-03}}: Rich text now available in embedded function calls on 148 Wiktionaries and Incubator</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-09-26}}: Accessing qualifiers in Wikidata statements</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-09-19}}: Wikifunctions available on 123 Wiktionary languages</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-09-12}}: More than 3,000 functions on Wikifunctions</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-09-07}}: Copying function calls from one Wikipedia to another</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-08-29}}: Accessing Wikidata items now possible from embedded function calls; Wikifunctions available on 65 Wikitionaries</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-08-22}}: Recording of Wikimania session: Wikifunctions is coming soon to a wiki near you!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-08-01}}: Wikimania 2025 is coming soon!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-07-26}}: “Wikipedia is an encyclopedia”; Two years of Wikifunctions</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-07-19}}: Wikidata-based enumerations are here</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-07-10}}: Length limits on labels and descriptions</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-07-04}}: Coverage of 1298</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-06-27}}: How many people are needed to write an encyclopedia?</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-06-21}}: Quarterly Planning for July–September 2025</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-06-15}}: Closing the consultation about the location of Abstract Content</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-06-06}}: Where will Abstract Content go?</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-05-29}}: Rolling out to five Wiktionaries; Calculating with today's date</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-05-23}}: Ongoing consultation about the Location for Abstract Content</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-05-15}}: Location of Abstract Content</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-05-09}}: Abstract Wikipedia and the Wikimedia AI Strategy</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-04-30}}: Abstract Wikipedia is a MacArthur 100&Change finalist</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-04-25}}: Welcome, Gregory!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-04-16}}: Wikifunctions integrated in Dagbani - and Wikifunctions; and the date of Easter</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-04-11}}: Quarter in review</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-04-05}}: Quarterly Planning for April–June 2025; We are looking for a Senior Product Manager</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-03-28}}: It's about time</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-03-20}}: Wikidata-based simple enumerations</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-03-15}}: Upcoming NLG meeting, Recent Changes in the software</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-03-07}}: Recent Changes in the software, Recording of Volunteer’s Corner, and talks in London</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-02-26}}: From things to words</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-02-19}}: A proposal for types per language and part of speech</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-02-13}}: Restricting the World, redux</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-02-06}}: Invitation to the Natural Language Generation Special Interest Group</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-01-29}}: With 2000 Functions into the new year: time for stats</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-01-22}}: Welcome, David! Naming conventions recommendations</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-01-15}}: Happy Wikipedia day! Quarterly planning</span>
=== 2024 ===
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-12-19}}: Function of the Week: age; Intros for year articles; New Type: Floating-point number</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-12-12}}: Sketching a path to Abstract Wikipedia; Team offsite in Lisbon; and much more</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-11-27}}: WordGraph release; New Special page: list functions by tests; new type for day of the year, and much more</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-11-21}}: New special page for missing labels, new type for Gregorian years, and much more</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-11-13}}: New Type: Rational number; Documentation on Wikidata-based types; and more</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-11-07}}: The Dream of a Universal Language</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-11-01}}: Rewriting the backend</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-10-25}}: Our goal for this Quarter: Agreement</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-10-17}}: What could abstract content look like?</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-10-11}}: Wikidata Lexemes in Wikifunctions are coming soon</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-10-02}}: Focus topic: Food</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-09-26}}: Quarterly planning for October–December 2024; Presentation at Celtic Knot tomorrow</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-09-20}}: Introducing focus topic areas</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-09-13}}: Dagbani Wikipedia will be our first wiki for Wikifunctions integration</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-09-06}}: Volunteer's corner and other updates</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-08-29}}: Limits on Name and Description Lengths</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-08-23}}: WasmEdge, Now 300ms Less Edgy</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-08-16}}: Wikimania 2024 edition</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-08-02}}: Revamping our 'About' widget</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-07-26}}: Wikimania 2024 coming soon!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-07-18}}: Research report on integrating Wikifunctions from Wikipedia</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-07-10}}: Type proposals for accessing Lexemes</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-07-03}}: Quarterly planning</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-06-26}}: Welcome, Daphne!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-06-20}}: New Type: Integers</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-06-13}}: New Type: Igbo calendar months</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-06-06}}: New Type: Sign</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-05-30}}: A single singular or a plurality of plurals?</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-05-22}}: New Type: Gregorian calendar months</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-05-15}}: Call for Functions: Spell out the number!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-05-10}}: Flagship type for enumerations: Months of the Gregorian calendar</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-05-03}}: Team meeting and Quarterly plan</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-04-19}}: Welcome, Sharvani!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-04-11}}: New API for calling Wikifunctions and celebrating 1000 functions</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-04-03}}: Product Update on Diff and Upcoming API Improvements</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-03-28}}: Creating tests is now much easier!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-03-21}}: On the way to internationalizing numbers</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-03-13}}: On identity</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-03-07}}: Introducing our second new type: Natural numbers</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-02-28}}: Type proposal for natural numbers</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-02-22}}: Updating the function model</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-02-14}}: Fix-it week</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-02-07}}: Quarterly planning. Thank you, Nick! Function of the Week: is permutation</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-02-01}}: The Igbo Imperative!</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Before February 2024 ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
All updates from this period are [[:m:Special:MyLanguage/Abstract Wikipedia/Updates|available on Meta-Wiki]].
</div>
[[Category:Status updates{{#translation:}}| ]]
n531gazdo2e4l8s7aebpbwum3o1psqf
Wikifunctions:Status updates/bn
4
26415
296980
295109
2026-08-06T18:03:30Z
FuzzyBot
207
Updating to match new version of source page
296980
wikitext
text/x-wiki
<languages/>
{{shortcut|WF:SU}}{{notice|1=প্রতিটি নতুন সমস্যা সম্পর্কে সংক্ষিপ্ত উইকি মধ্যস্থ গণবার্তা বিজ্ঞপ্তি পেতে '''[[:m:Global message delivery/Targets/Wikifunctions & Abstract Wikipedia|অনুসরণ করুন]]'''}}
{{Wikifunctions updates
| prevlabel = পূর্ববর্তী হালনাগাদ
| prev = 2024-02-01
| nextlabel = সর্বশেষ হালনাগাদ
| next = 2026-08-05
}}
উইকিফাংশন এবং বিমূর্ত উইকিপিডিয়ার জুড়ে অনেক কিছু ঘটছে। এটি সেই পৃষ্ঠা যেখানে আমাদের হালনাগাদ গুলো পোস্ট করা হয়, [[Special:MyLanguage/WF:function of the Week|সপ্তাহের নির্বাচিত ফাংশন]] সহ।
এছাড়াও আপনি [[:m:Global message delivery/Targets/Wikifunctions & Abstract Wikipedia|অন-উইকি নিউজলেটার]]-এ সদস্যতা নিতে পারেন যাতে সেগুলি আপনার আলাপ পাতায় বা আপনার প্রকল্পের আলোচনাসভায় পৌঁছে দেওয়া যায়।
<inputbox>
type=fulltext
prefix={{NAMESPACE}}:{{PAGENAME}}/
break=no
width=30
searchbuttonlabel={{int:Search}}
placeholder=Search all status updates
</inputbox>
<span id="Newsletters"></span>
== নিউজলেটার ==
<!--<nowiki> Newsletter entry template:
* <translate><tvar name="1">{{Status updates|2026-0?-??}}</tvar>: Title</translate>
NOTE: Remember to also update the "next =" date at the top of this page.
</nowiki>-->
=== 2026 ===
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-08-05}}: An apple is a fruit</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-07-29}}: Abstract Wikipedia at Wikimania</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-07-16}}: Beyond syntactic tables</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-07-08}}: Moving toward our first Abstract Wikipedia integration milestone</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-07-01}}: Integration on test wiki and annual plan</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-06-26}}: Working on Functions, together</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-06-19}}: The or not the, this is (the?) question</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-06-12}}: Improved loading and display of Test results</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-06-05}}: The illustrated encyclopaedia</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-05-30}}: Looking back and forward</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-05-23}}: Annual plan 2026-2027</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-05-15}}: A higher meaning</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-05-08}}: References from Wikidata are now available</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-05-02}}: Request for input: what should we count for Abstract Wikipedia?</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-04-25}}: The Foundation's search for the perfect language</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-04-16}}: Milestones; Some major issues hopefully resolved</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-04-10}}: Community proposals for capturing meaning</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-04-02}}: Request for Discussion: Syntactic tables</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-03-26}}: First few days of Abstract Wikipedia Beta; Status of Composition Language v2</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-03-19}}: Abstract Wikipedia in Beta</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-03-11}}: A new composition language</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-03-06}}: Citations and Copy and Paste</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-02-26}}: Graceful overrides and fallbacks</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-02-20}}: A sneak preview of Abstract Wikipedia</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-02-13}}: Finishing each other sentences: Starting things; Offsite in Istanbul</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-01-29}}: Integrating Abstract Wikipedia</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-01-22}}: Quarterly plan for January–March 2026</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-01-15}}: 25 years of Wikipedia</span>
=== 2025 ===
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-12-18}}: We wish you a happy new Gregorian year!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-12-11}}: How to write better error messages</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-12-04}}: And the name is Abstract Wikipedia</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-11-27}}: Vote on the new wiki name!; Finishing each other’s sentences</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-11-20}}: Second round of voting for naming the wiki with language-independent content; Sharing function calls</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-11-13}}: Getting ready for second round of voting for naming the wiki with abstract content; Rewriting the backend: Why Rust?</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-11-05}}: First round of voting for naming the wiki for abstract content closed; Calling for Wiktionary functions; Embedded Wikifunctions on Bengali Wikipedia and seven more Wiktionaries</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-10-29}}: Round 1 of “abstract content wiki” naming vote ending Monday; An example of short descriptions</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-10-23}}: Welcome Zaree and Laura! Naming contest round 1 kicked off</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-10-15}}: Kicking Off the Naming Contest for Abstract Wikipedia; Visualizing functions</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-10-08}}: Decision on location for abstract content and Quarterly Planning for October–December</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-10-03}}: Rich text now available in embedded function calls on 148 Wiktionaries and Incubator</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-09-26}}: Accessing qualifiers in Wikidata statements</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-09-19}}: Wikifunctions available on 123 Wiktionary languages</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-09-12}}: More than 3,000 functions on Wikifunctions</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-09-07}}: Copying function calls from one Wikipedia to another</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-08-29}}: Accessing Wikidata items now possible from embedded function calls; Wikifunctions available on 65 Wikitionaries</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-08-22}}: Recording of Wikimania session: Wikifunctions is coming soon to a wiki near you!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-08-01}}: Wikimania 2025 is coming soon!</span>
* {{Status updates|2025-07-26}}: “উইকিপিডিয়া একটি বিশ্বকোষ“; উইকিফাংশনের দুই বছর
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-07-19}}: Wikidata-based enumerations are here</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-07-10}}: Length limits on labels and descriptions</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-07-04}}: Coverage of 1298</span>
* {{Status updates|2025-06-27}}: একটি বিশ্বকোষ লিখতে কতজন লোকের প্রয়োজন?
* {{Status updates|2025-06-21}}: জুলাই-সেপ্টেম্বর ২০২৫-এর জন্য ত্রৈমাসিক পরিকল্পনা
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-06-15}}: Closing the consultation about the location of Abstract Content</span>
* {{Status updates|2025-06-06}}: বিমূর্ত বিষয়বস্তু কোথায় যাবে?
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-05-29}}: Rolling out to five Wiktionaries; Calculating with today's date</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-05-23}}: Ongoing consultation about the Location for Abstract Content</span>
* {{Status updates|2025-05-15}}: বিমূর্ত বিষয়বস্তুর অবস্থান
* {{Status updates|2025-05-09}}: বিমূর্ত উইকিপিডিয়া এবং উইকিমিডিয়া এআই কৌশল
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-04-30}}: Abstract Wikipedia is a MacArthur 100&Change finalist</span>
* {{Status updates|2025-04-25}}: স্বাগতম, গ্রেগরি!
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-04-16}}: Wikifunctions integrated in Dagbani - and Wikifunctions; and the date of Easter</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-04-11}}: Quarter in review</span>
* {{Status updates|2025-04-05}}: এপ্রিল–জুন ২০২৫-এর জন্য ত্রৈমাসিক পরিকল্পনা; আমরা একজন সিনিয়র প্রোডাক্ট ম্যানেজার খুঁজছি
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-03-28}}: It's about time</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-03-20}}: Wikidata-based simple enumerations</span>
* {{Status updates|2025-03-15}}: আসন্ন এনএলজি বৈঠক, সফটওয়্যারের সাম্প্রতিক পরিবর্তন
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-03-07}}: Recent Changes in the software, Recording of Volunteer’s Corner, and talks in London</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-02-26}}: From things to words</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-02-19}}: A proposal for types per language and part of speech</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-02-13}}: Restricting the World, redux</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-02-06}}: Invitation to the Natural Language Generation Special Interest Group</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-01-29}}: With 2000 Functions into the new year: time for stats</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-01-22}}: Welcome, David! Naming conventions recommendations</span>
* {{Status updates|2025-01-15}}: শুভ উইকিপিডিয়া দিবস! ত্রৈমাসিক পরিকল্পনা
=== 2024 ===
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-12-19}}: Function of the Week: age; Intros for year articles; New Type: Floating-point number</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-12-12}}: Sketching a path to Abstract Wikipedia; Team offsite in Lisbon; and much more</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-11-27}}: WordGraph release; New Special page: list functions by tests; new type for day of the year, and much more</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-11-21}}: New special page for missing labels, new type for Gregorian years, and much more</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-11-13}}: New Type: Rational number; Documentation on Wikidata-based types; and more</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-11-07}}: The Dream of a Universal Language</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-11-01}}: Rewriting the backend</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-10-25}}: Our goal for this Quarter: Agreement</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-10-17}}: What could abstract content look like?</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-10-11}}: Wikidata Lexemes in Wikifunctions are coming soon</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-10-02}}: Focus topic: Food</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-09-26}}: Quarterly planning for October–December 2024; Presentation at Celtic Knot tomorrow</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-09-20}}: Introducing focus topic areas</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-09-13}}: Dagbani Wikipedia will be our first wiki for Wikifunctions integration</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-09-06}}: Volunteer's corner and other updates</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-08-29}}: Limits on Name and Description Lengths</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-08-23}}: WasmEdge, Now 300ms Less Edgy</span>
* {{Status updates|2024-08-16}}: উইকিম্যানিয়া ২০২৪ সংস্করণ
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-08-02}}: Revamping our 'About' widget</span>
* {{Status updates|2024-07-26}}: শীঘ্রই আসছে উইকিম্যানিয়া ২০২৪!
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-07-18}}: Research report on integrating Wikifunctions from Wikipedia</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-07-10}}: Type proposals for accessing Lexemes</span>
* {{Status updates|2024-07-03}}: ত্রৈমাসিক পরিকল্পনা
* {{Status updates|2024-06-26}}: স্বাগতম, ড্যাফনি!
* {{Status updates|2024-06-20}}: নতুন ধরন: পূর্ণ সংখ্যা
* {{Status updates|2024-06-13}}: নতুন ধরন: ইগবো বর্ষপঞ্জির মাস
* {{Status updates|2024-06-06}}: নতুন ধরন: চিহ্ন
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-05-30}}: A single singular or a plurality of plurals?</span>
* {{Status updates|2024-05-22}}: নতুন ধরন: গ্রেগরীয় বর্ষপঞ্জির মাস
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-05-15}}: Call for Functions: Spell out the number!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-05-10}}: Flagship type for enumerations: Months of the Gregorian calendar</span>
* {{Status updates|2024-05-03}}: দলের বৈঠক ও ত্রৈমাসিক পরিকল্পনা
* {{Status updates|2024-04-19}}: স্বাগতম, শর্বণী!
* {{Status updates|2024-04-11}}: উইকিফাংশন কল করার নতুন এপিআই এবং ১০০০ ফাংশন উদযাপন
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-04-03}}: Product Update on Diff and Upcoming API Improvements</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-03-28}}: Creating tests is now much easier!</span>
* {{Status updates|2024-03-21}}: সংখ্যা আন্তর্জাতিকীকরণের পথে
* {{Status updates|2024-03-13}}: পরিচয় সম্পর্কে
* {{Status updates|2024-03-07}}: আমাদের দ্বিতীয় নতুন ধরণ উপস্থাপন করা হয়েছে: স্বাভাবিক সংখ্যা
* {{Status updates|2024-02-28}}: স্বাভাবিক সংখ্যার জন্য নতুন ধরণ প্রস্তাবনা
* {{Status updates|2024-02-22}}: ফাংশন মডেল হালনাগাদ করা হচ্ছে
* {{Status updates|2024-02-14}}: সঠিক করন সপ্তাহ
* {{Status updates|2024-02-07}}: ত্রৈমাসিক পরিকল্পনা। ধন্যবাদ, নিক! এই সপ্তাহের নির্বাচিত ফাংশন: এটি কি স্থানান্তর
* {{Status updates|2024-02-01}}: ইগবো অত্যাবশ্যকতা!
<span id="Before_February_2024"></span>
<div class="mw-translate-fuzzy">
=== ২০২০ থেকে জানুয়ারী ২০২৪ পর্যন্ত ===
</div>
এই সময়কালের মধ্যে সব হালনাগাদ সমূহ [[:m:Special:MyLanguage/Abstract Wikipedia/Updates|মেটা উইকিতে উপলব্ধ]]।
[[Category:Status updates{{#translation:}}| ]]
ej27161rvis2eg5w5rdiwecx6j45vef
Wikifunctions:Status updates/he
4
27145
296989
295116
2026-08-06T18:03:36Z
FuzzyBot
207
Updating to match new version of source page
296989
wikitext
text/x-wiki
<languages/>
{{shortcut|WF:SU}}{{notice|1=<span lang="en" dir="ltr" class="mw-content-ltr">'''[[:m:Global message delivery/Targets/Wikifunctions & Abstract Wikipedia|Subscribe]]''' to receive short on-wiki MassMessage notifications about each new issue</span>}}
{{Wikifunctions updates
| prevlabel = עדכון קודם
| prev = 2024-02-01
| nextlabel = עדכון אחרון
| next = 2026-08-05
}}
<div lang="en" dir="ltr" class="mw-content-ltr">
A lot is happening around Wikifunctions and Abstract Wikipedia. This is the page where our updates are posted, including the [[Special:MyLanguage/WF:function of the Week|function of the Week]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
You can also subscribe to the [[:m:Global message delivery/Targets/Wikifunctions & Abstract Wikipedia|on-wiki newsletter]] to have them delivered to your talk page or to your project's village pump.
</div>
<inputbox>
type=fulltext
prefix={{NAMESPACE}}:{{PAGENAME}}/
break=no
width=30
searchbuttonlabel={{int:Search}}
placeholder=Search all status updates
</inputbox>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Newsletters ==
</div>
<!--<nowiki> Newsletter entry template:
* <translate><tvar name="1">{{Status updates|2026-0?-??}}</tvar>: Title</translate>
NOTE: Remember to also update the "next =" date at the top of this page.
</nowiki>-->
=== 2026 ===
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-08-05}}: An apple is a fruit</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-07-29}}: Abstract Wikipedia at Wikimania</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-07-16}}: Beyond syntactic tables</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-07-08}}: Moving toward our first Abstract Wikipedia integration milestone</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-07-01}}: Integration on test wiki and annual plan</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-06-26}}: Working on Functions, together</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-06-19}}: The or not the, this is (the?) question</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-06-12}}: Improved loading and display of Test results</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-06-05}}: The illustrated encyclopaedia</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-05-30}}: Looking back and forward</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-05-23}}: Annual plan 2026-2027</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-05-15}}: A higher meaning</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-05-08}}: References from Wikidata are now available</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-05-02}}: Request for input: what should we count for Abstract Wikipedia?</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-04-25}}: The Foundation's search for the perfect language</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-04-16}}: Milestones; Some major issues hopefully resolved</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-04-10}}: Community proposals for capturing meaning</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-04-02}}: Request for Discussion: Syntactic tables</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-03-26}}: First few days of Abstract Wikipedia Beta; Status of Composition Language v2</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-03-19}}: Abstract Wikipedia in Beta</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-03-11}}: A new composition language</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-03-06}}: Citations and Copy and Paste</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-02-26}}: Graceful overrides and fallbacks</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-02-20}}: A sneak preview of Abstract Wikipedia</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-02-13}}: Finishing each other sentences: Starting things; Offsite in Istanbul</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-01-29}}: Integrating Abstract Wikipedia</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-01-22}}: Quarterly plan for January–March 2026</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-01-15}}: 25 years of Wikipedia</span>
=== 2025 ===
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-12-18}}: We wish you a happy new Gregorian year!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-12-11}}: How to write better error messages</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-12-04}}: And the name is Abstract Wikipedia</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-11-27}}: Vote on the new wiki name!; Finishing each other’s sentences</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-11-20}}: Second round of voting for naming the wiki with language-independent content; Sharing function calls</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-11-13}}: Getting ready for second round of voting for naming the wiki with abstract content; Rewriting the backend: Why Rust?</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-11-05}}: First round of voting for naming the wiki for abstract content closed; Calling for Wiktionary functions; Embedded Wikifunctions on Bengali Wikipedia and seven more Wiktionaries</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-10-29}}: Round 1 of “abstract content wiki” naming vote ending Monday; An example of short descriptions</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-10-23}}: Welcome Zaree and Laura! Naming contest round 1 kicked off</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-10-15}}: Kicking Off the Naming Contest for Abstract Wikipedia; Visualizing functions</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-10-08}}: Decision on location for abstract content and Quarterly Planning for October–December</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-10-03}}: Rich text now available in embedded function calls on 148 Wiktionaries and Incubator</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-09-26}}: Accessing qualifiers in Wikidata statements</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-09-19}}: Wikifunctions available on 123 Wiktionary languages</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-09-12}}: More than 3,000 functions on Wikifunctions</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-09-07}}: Copying function calls from one Wikipedia to another</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-08-29}}: Accessing Wikidata items now possible from embedded function calls; Wikifunctions available on 65 Wikitionaries</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-08-22}}: Recording of Wikimania session: Wikifunctions is coming soon to a wiki near you!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-08-01}}: Wikimania 2025 is coming soon!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-07-26}}: “Wikipedia is an encyclopedia”; Two years of Wikifunctions</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-07-19}}: Wikidata-based enumerations are here</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-07-10}}: Length limits on labels and descriptions</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-07-04}}: Coverage of 1298</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-06-27}}: How many people are needed to write an encyclopedia?</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-06-21}}: Quarterly Planning for July–September 2025</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-06-15}}: Closing the consultation about the location of Abstract Content</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-06-06}}: Where will Abstract Content go?</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-05-29}}: Rolling out to five Wiktionaries; Calculating with today's date</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-05-23}}: Ongoing consultation about the Location for Abstract Content</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-05-15}}: Location of Abstract Content</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-05-09}}: Abstract Wikipedia and the Wikimedia AI Strategy</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-04-30}}: Abstract Wikipedia is a MacArthur 100&Change finalist</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-04-25}}: Welcome, Gregory!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-04-16}}: Wikifunctions integrated in Dagbani - and Wikifunctions; and the date of Easter</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-04-11}}: Quarter in review</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-04-05}}: Quarterly Planning for April–June 2025; We are looking for a Senior Product Manager</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-03-28}}: It's about time</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-03-20}}: Wikidata-based simple enumerations</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-03-15}}: Upcoming NLG meeting, Recent Changes in the software</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-03-07}}: Recent Changes in the software, Recording of Volunteer’s Corner, and talks in London</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-02-26}}: From things to words</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-02-19}}: A proposal for types per language and part of speech</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-02-13}}: Restricting the World, redux</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-02-06}}: Invitation to the Natural Language Generation Special Interest Group</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-01-29}}: With 2000 Functions into the new year: time for stats</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-01-22}}: Welcome, David! Naming conventions recommendations</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-01-15}}: Happy Wikipedia day! Quarterly planning</span>
=== 2024 ===
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-12-19}}: Function of the Week: age; Intros for year articles; New Type: Floating-point number</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-12-12}}: Sketching a path to Abstract Wikipedia; Team offsite in Lisbon; and much more</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-11-27}}: WordGraph release; New Special page: list functions by tests; new type for day of the year, and much more</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-11-21}}: New special page for missing labels, new type for Gregorian years, and much more</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-11-13}}: New Type: Rational number; Documentation on Wikidata-based types; and more</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-11-07}}: The Dream of a Universal Language</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-11-01}}: Rewriting the backend</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-10-25}}: Our goal for this Quarter: Agreement</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-10-17}}: What could abstract content look like?</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-10-11}}: Wikidata Lexemes in Wikifunctions are coming soon</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-10-02}}: Focus topic: Food</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-09-26}}: Quarterly planning for October–December 2024; Presentation at Celtic Knot tomorrow</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-09-20}}: Introducing focus topic areas</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-09-13}}: Dagbani Wikipedia will be our first wiki for Wikifunctions integration</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-09-06}}: Volunteer's corner and other updates</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-08-29}}: Limits on Name and Description Lengths</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-08-23}}: WasmEdge, Now 300ms Less Edgy</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-08-16}}: Wikimania 2024 edition</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-08-02}}: Revamping our 'About' widget</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-07-26}}: Wikimania 2024 coming soon!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-07-18}}: Research report on integrating Wikifunctions from Wikipedia</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-07-10}}: Type proposals for accessing Lexemes</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-07-03}}: Quarterly planning</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-06-26}}: Welcome, Daphne!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-06-20}}: New Type: Integers</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-06-13}}: New Type: Igbo calendar months</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-06-06}}: New Type: Sign</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-05-30}}: A single singular or a plurality of plurals?</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-05-22}}: New Type: Gregorian calendar months</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-05-15}}: Call for Functions: Spell out the number!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-05-10}}: Flagship type for enumerations: Months of the Gregorian calendar</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-05-03}}: Team meeting and Quarterly plan</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-04-19}}: Welcome, Sharvani!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-04-11}}: New API for calling Wikifunctions and celebrating 1000 functions</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-04-03}}: Product Update on Diff and Upcoming API Improvements</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-03-28}}: Creating tests is now much easier!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-03-21}}: On the way to internationalizing numbers</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-03-13}}: On identity</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-03-07}}: Introducing our second new type: Natural numbers</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-02-28}}: Type proposal for natural numbers</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-02-22}}: Updating the function model</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-02-14}}: Fix-it week</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-02-07}}: Quarterly planning. Thank you, Nick! Function of the Week: is permutation</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-02-01}}: The Igbo Imperative!</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Before February 2024 ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
All updates from this period are [[:m:Special:MyLanguage/Abstract Wikipedia/Updates|available on Meta-Wiki]].
</div>
[[Category:Status updates{{#translation:}}| ]]
rjlflwp9hay5td5whkjceq74ypeyvuo
Wikifunctions:FAQ/su
4
27383
296929
265386
2026-08-06T18:02:04Z
FuzzyBot
207
Updating to match new version of source page
296929
wikitext
text/x-wiki
<languages/>
{{shortcut|[[WF:FAQ]]}}
Ieu mangrupikeun halaman khusus pikeun patarosan umum ngeunaan Wikifunctions. Punten taroskeun patarosan anjeun nyalira dina [[Wikifunctions talk:FAQ|kaca obrolan]] upami patarosan anjeun henteu didaptarkeun di dieu!
<div class="mw-translate-fuzzy">
Salaku tambahan, pertimbangkeun pariksa daptar [[:m:Special:MyLanguage/Abstract Wikipedia/FAQ|Patarosan anu sering ditaroskeun dina Meta]] ngeunaan patarosan anu langkung umum ngeunaan Wikifungsi sareng/atanapi Abstrak Wikipedia.
</div>
__TOC__
<span id="Introduction"></span>
==Panganteur==
<span id="What_is_this_project_about?"></span>
=== proyék naon ieu? ===
Wikifunctions mangrupa proyék Wikimedia anyar nu nyadiakeun katalog sagala rupa fungsi nu saha bisa nelepon, nulis, ngajaga, jeung make. Éta ogé nyayogikeun téknologi anu mendasar anu pamustunganana bakal ngamungkinkeun tarjamahan tulisan anu mandiri tina basa tina Wikipedia Abstract kana basa Wikipedia naon waé. Ku kituna, dulur-dulur bisa nyumbang jeung maca artikel dina basa nu dipikaresepna.
<span id="What_is_a_function?"></span>
=== Naon sih "fungsi"? ===
Fungsi mangrupa wangun pangaweruh nu bisa ngajawab patarosan, kayaning sabaraha poé geus kaliwat antara dua tanggal atawa jarak antara dua kota. Fungsi nu leuwih rumit bisa ngajawab patarosan nu leuwih rumit, saperti volume bentuk tilu dimensi, jarak antara Mars jeung Venus dina tanggal nu tangtu, atawa naha dua spésiés hirup dina waktu nu sarua.
<div lang="en" dir="ltr" class="mw-content-ltr">
We already use functions in many types of knowledge inquiries, such as asking a question to a search engine. The templates, such as [[:w:en:Template:Convert|Template:Convert]] and [[:w:en:Template:Age|Template:Age]] on English Wikipedia, are also examples of functions that are already used in many Wikipedias, written in wikitext and Lua and manually copied to each wiki where they're wanted.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== What is an implementation? ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
An implementation is a particular way to execute a function. An implementation is a recipe that lists the steps that are needed to run the function. It may be a piece of code in a programming language or a combination of calls to other functions. A function may have many implementations, which should all be equivalent.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== What is a test? ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
A test is a way to determine if a given function is doing the right thing. A function will typically have multiple testers, each specifying some input to the function and the conditions the output for the given input must fulfill.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For example, testers for a “title case” function might include: “<span dir="ltr" lang="en">abc</span>” should become “<span dir="ltr" lang="en">Abc</span>”; “<span dir="ltr" lang="en">war and peace</span>” should become “<span dir="ltr" lang="en">War and Peace</span>”; “<span dir="ltr" lang="ru">война и мир</span>” should become “<span dir="ltr" lang="ru">Война и мир</span>”; and “<span dir="ltr" lang="en">123</span>” should remain “<span dir="ltr" lang="en">123</span>”.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Which features are available now, which will be soon available, and which are further away? ===
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">At launch:</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">We have the ability to have functions that work with Strings and Booleans.</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">Wikifunctions will be fully internationalized from the beginning. It can be used in any language.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Wikifunctions:Status|Ongoing development]]:</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">Generic types and generic functions are not fully supported.</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">Adding types will, for now, be something that is limited to the development team. In the future, the community will be able to add more types. There is a lot of work to be done in the future to make types behave much more smoothly.</span>
*** <span lang="en" dir="ltr" class="mw-content-ltr">One particularly interesting type will be binary data, and particularly files.</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">We currently support two programming languages for implementations: JavaScript and Python. In the future, we want to support many more.</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">Currently, it is ''not'' possible to call other functions from implementations written in any programming language. This is currently only possible through composition.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">In the future:</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">It will be possible to call Wikifunctions functions from other Wikimedia projects and integrate their results into the output of the page.</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">It will be possible to use data from Wikidata in functions.</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">It will be possible to call data sets from Commons Data namespace.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== How is Wikifunctions multilingual? ===
</div>
{{main|Special:MyLanguage/Help:Multilingual}}
<div lang="en" dir="ltr" class="mw-content-ltr">
Wikifunctions and Abstract Wikipedia are multilingual in a number of ways that do not impact each other:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Wikifunctions is multilingual in terms of its content and user interface.''' Users can read and call functions on Wikifunctions in any natural language. Here is the “join string” function in [https://www.wikifunctions.org/view/en/Z10000 English], [https://www.wikifunctions.org/view/pl/Z10000 Polish], and [https://www.wikifunctions.org/view/he/Z10000 Hebrew], and it is available in many more languages.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Contributors can edit and improve Wikifunctions using their language.''' Even implementations can be edited in the natural language of the contributor. For example, the composition of the “and” function can be edited in [https://www.wikifunctions.org/wiki/Z11223?action=edit&uselang=de German], [https://www.wikifunctions.org/wiki/Z11223?action=edit&uselang=en English], or any other of about 300 languages.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Wikifunctions functions can be used to create results for any natural language.''' The community is creating a growing number of functions to support the generation of text in many natural languages. We have functions for [[Wikifunctions:Catalogue#Breton|Breton]], [[Wikifunctions:Catalogue#Rohingya|Rohingya]], [[Wikifunctions:Catalogue#English|English]], and many other languages.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Functions in Wikifunctions can be implemented in various different programming languages.''' For example, the [[Z10000|join function]] is implemented in both [[Z10005|JavaScript]] and [[Z10004|Python]].</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Which programming languages does Wikifunctions currently support? Which programming languages will be supported in the future? ===
</div>
{{main|WF:programming languages}}
<div lang="en" dir="ltr" class="mw-content-ltr">
Currently, Wikifunctions supports implementations written in JavaScript and Python. We plan to add support for more programming languages in the future. We hope to add at least one further programming language in 2025 (but have not yet decided which one).
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== How will Wikifunctions be integrated into other projects? ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Wikifunctions is the first step towards building Abstract Wikipedia. Our near-term focus will be on supporting the community and making improvements based on feedback. Concurrently, we will begin the process of integrating it with Wikipedia and Wikidata, which will enable broader real-life applications and get us closer to the vision of Abstract Wikipedia.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Contributors will be able to call functions stored on the Wikifunctions site from within their wikis. The result of the function call will be displayed to readers of the wiki. This can be used, for example, to calculate the age of a person, the population density based on population and area data from Wikidata, or to draw a graph and integrate it into a given article.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Another option to integrate Wikifunctions will be to integrate an interactive function call interface within their wiki. This could be used, for example, in a Wikipedia article to dynamically calculate the result of a physical equation based on reader-provided parameters, draw and interact with mathematical functions, etc.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== What Wikifunctions is not ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Please, see [[Special:MyLanguage/Wikifunctions:What Wikifunctions is not|Wikifunctions:What Wikifunctions is not]] for more information on that.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== What license will the functions and derived content be under? ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Per the discussion happened [[:m:Special:MyLanguage/Abstract Wikipedia/Licensing discussion|on Meta between November and December 2021]], all contributions to Wikifunctions and the wider Abstract Wikipedia projects will be published under free licenses. In particular:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Special:MyLanguage/Wikifunctions:Glossary#Content|Textual content]] on Wikifunctions will be published under [[w:Creative Commons license|CC BY-SA 4.0]].</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Special:MyLanguage/Wikifunctions:Glossary#Function|Function signatures]] and other structured content on Wikifunctions will be published under [[w:CC0|CC 0]].</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Special:MyLanguage/Wikifunctions:Glossary#Implementation|Code implementations]] in Wikifunctions will be published under the [[w:Apache License|Apache 2 license]].</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Special:MyLanguage/Wikifunctions:Glossary#Content|Abstract Content]] for Abstract Wikipedia will be published under CC BY-SA 4.0.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
There are still some points that will need to be addressed in the future, such as the license of the generated content from the abstract content. We plan on drafting a more comprehensive document with the Legal department about how people can re-use code from Wikifunctions as painlessly as possible, while adhering to the license.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Contributing ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== I'm new here. What is there for me to do and how can I help? ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Welcome! We're very happy to have you here! There are many opportunities for contributing to Wikifunctions, from creating new functions to improving and translating documentation. If you are looking for ways to get involved, we recommend that maybe, depending on your level of comfort, you suggest a new function on a topic you are interested in. Or even create such a function. Provide some tests. Try your hand at an implementation. Help with translations. Read and improve our documentation. Help with organizing the community.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== How do I create a new function, implementation, or test? ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
To see how to create a new function, implementation, or test, see [[Special:MyLanguage/Wikifunctions:Introduction|Wikifunctions:Introduction]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
To see in more detail how to create an implementation, see [[Special:MyLanguage/Wikifunctions:How to create implementations|Wikifunctions:How to create implementations]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== What should I edit first? ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If you can write several languages, find functions that don't have labels and descriptions in your languages yet on the page [[Special:ListMissingLabels]], and help to add them.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If you have some interest in a domain that could feature functions in Wikifunctions, but yet doesn't, or if you have more ideas for functions, go to the page for [[Wikifunctions:Suggest a new function|suggesting new functions]] and present your ideas.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If you are a coder in JavaScript or Python, maybe you want to check for functions that don't yet have implementations in JavaScript or Python, and try to write them.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Where can I go for help? ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Your first stop should be the [[Special:MyLanguage/Help:Contents|Help portal]], where you'll find all the documentation related to using and editing Wikifunctions. If you're still stuck, post a message on [[Wikifunctions:Project chat|Project chat]], and someone will answer your question.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== How do we sort or categorize functions? ===
</div>
{{Tracked|T285424}}
<div lang="en" dir="ltr" class="mw-content-ltr">
For now, the best way to sort or categorize functions is to do it by hand through [[Special:MyLanguage/Wikifunctions:Catalogue|pages in the Wikifunctions namespace]]. Another option would be through the talk page of the given function. We will monitor these efforts and discuss with the community which changes to the system would be helpful for this task.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== How can I setup the software locally to hack on it? ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
See [[Special:MyLanguage/Wikifunctions:Hacking on the evaluator and orchestrator|Hacking on the evaluator and orchestrator]].
</div>
[[Category:FAQ| {{#translation:}}]]
kbbwu6c2o2kx0suhpipqo0u8b2xq8he
Wikifunctions:Status updates/su
4
27399
296998
295125
2026-08-06T18:03:43Z
FuzzyBot
207
Updating to match new version of source page
296998
wikitext
text/x-wiki
<languages/>
{{shortcut|WF:SU}}{{notice|1='''[[:m:Global message delivery/Targets/Wikifunctions & Abstract Wikipedia|Ngalanggan]]''' pikeun meunangkeun béwara MassMessage pondok dina wiki ngeunaan unggal carita anyar}}
{{Wikifunctions updates
| prevlabel = Pembaruan saméméhna
| prev = 2024-02-01
| nextlabel = Pembaruan panganyarna
| next = 2026-08-05
}}
Aya seueur kajadian ngeunaan Wikifunctions sareng Wikipedia Abstrak. Ieu halaman dimana pengumuman kami diterbitkeun.
Anjeun ogé tiasa ngalanggan [[:m:Global message delivery/Targets/Wikifunctions & Abstract Wikipedia|newsletter wiki]] supados béwara dikirim ka halaman obrolan anjeun atanapi ka Warung Kopi proyék anjeun.
<inputbox>
type=fulltext
prefix={{NAMESPACE}}:{{PAGENAME}}/
break=no
width=30
searchbuttonlabel={{int:Search}}
placeholder=Search all status updates
</inputbox>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Newsletters ==
</div>
<!--<nowiki> Newsletter entry template:
* <translate><tvar name="1">{{Status updates|2026-0?-??}}</tvar>: Title</translate>
NOTE: Remember to also update the "next =" date at the top of this page.
</nowiki>-->
=== 2026 ===
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-08-05}}: An apple is a fruit</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-07-29}}: Abstract Wikipedia at Wikimania</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-07-16}}: Beyond syntactic tables</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-07-08}}: Moving toward our first Abstract Wikipedia integration milestone</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-07-01}}: Integration on test wiki and annual plan</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-06-26}}: Working on Functions, together</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-06-19}}: The or not the, this is (the?) question</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-06-12}}: Improved loading and display of Test results</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-06-05}}: The illustrated encyclopaedia</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-05-30}}: Looking back and forward</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-05-23}}: Annual plan 2026-2027</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-05-15}}: A higher meaning</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-05-08}}: References from Wikidata are now available</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-05-02}}: Request for input: what should we count for Abstract Wikipedia?</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-04-25}}: The Foundation's search for the perfect language</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-04-16}}: Milestones; Some major issues hopefully resolved</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-04-10}}: Community proposals for capturing meaning</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-04-02}}: Request for Discussion: Syntactic tables</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-03-26}}: First few days of Abstract Wikipedia Beta; Status of Composition Language v2</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-03-19}}: Abstract Wikipedia in Beta</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-03-11}}: A new composition language</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-03-06}}: Citations and Copy and Paste</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-02-26}}: Graceful overrides and fallbacks</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-02-20}}: A sneak preview of Abstract Wikipedia</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-02-13}}: Finishing each other sentences: Starting things; Offsite in Istanbul</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-01-29}}: Integrating Abstract Wikipedia</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-01-22}}: Quarterly plan for January–March 2026</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-01-15}}: 25 years of Wikipedia</span>
=== 2025 ===
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-12-18}}: We wish you a happy new Gregorian year!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-12-11}}: How to write better error messages</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-12-04}}: And the name is Abstract Wikipedia</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-11-27}}: Vote on the new wiki name!; Finishing each other’s sentences</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-11-20}}: Second round of voting for naming the wiki with language-independent content; Sharing function calls</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-11-13}}: Getting ready for second round of voting for naming the wiki with abstract content; Rewriting the backend: Why Rust?</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-11-05}}: First round of voting for naming the wiki for abstract content closed; Calling for Wiktionary functions; Embedded Wikifunctions on Bengali Wikipedia and seven more Wiktionaries</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-10-29}}: Round 1 of “abstract content wiki” naming vote ending Monday; An example of short descriptions</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-10-23}}: Welcome Zaree and Laura! Naming contest round 1 kicked off</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-10-15}}: Kicking Off the Naming Contest for Abstract Wikipedia; Visualizing functions</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-10-08}}: Decision on location for abstract content and Quarterly Planning for October–December</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-10-03}}: Rich text now available in embedded function calls on 148 Wiktionaries and Incubator</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-09-26}}: Accessing qualifiers in Wikidata statements</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-09-19}}: Wikifunctions available on 123 Wiktionary languages</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-09-12}}: More than 3,000 functions on Wikifunctions</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-09-07}}: Copying function calls from one Wikipedia to another</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-08-29}}: Accessing Wikidata items now possible from embedded function calls; Wikifunctions available on 65 Wikitionaries</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-08-22}}: Recording of Wikimania session: Wikifunctions is coming soon to a wiki near you!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-08-01}}: Wikimania 2025 is coming soon!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-07-26}}: “Wikipedia is an encyclopedia”; Two years of Wikifunctions</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-07-19}}: Wikidata-based enumerations are here</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-07-10}}: Length limits on labels and descriptions</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-07-04}}: Coverage of 1298</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-06-27}}: How many people are needed to write an encyclopedia?</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-06-21}}: Quarterly Planning for July–September 2025</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-06-15}}: Closing the consultation about the location of Abstract Content</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-06-06}}: Where will Abstract Content go?</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-05-29}}: Rolling out to five Wiktionaries; Calculating with today's date</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-05-23}}: Ongoing consultation about the Location for Abstract Content</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-05-15}}: Location of Abstract Content</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-05-09}}: Abstract Wikipedia and the Wikimedia AI Strategy</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-04-30}}: Abstract Wikipedia is a MacArthur 100&Change finalist</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-04-25}}: Welcome, Gregory!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-04-16}}: Wikifunctions integrated in Dagbani - and Wikifunctions; and the date of Easter</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-04-11}}: Quarter in review</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-04-05}}: Quarterly Planning for April–June 2025; We are looking for a Senior Product Manager</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-03-28}}: It's about time</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-03-20}}: Wikidata-based simple enumerations</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-03-15}}: Upcoming NLG meeting, Recent Changes in the software</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-03-07}}: Recent Changes in the software, Recording of Volunteer’s Corner, and talks in London</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-02-26}}: From things to words</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-02-19}}: A proposal for types per language and part of speech</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-02-13}}: Restricting the World, redux</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-02-06}}: Invitation to the Natural Language Generation Special Interest Group</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-01-29}}: With 2000 Functions into the new year: time for stats</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-01-22}}: Welcome, David! Naming conventions recommendations</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-01-15}}: Happy Wikipedia day! Quarterly planning</span>
=== 2024 ===
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-12-19}}: Function of the Week: age; Intros for year articles; New Type: Floating-point number</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-12-12}}: Sketching a path to Abstract Wikipedia; Team offsite in Lisbon; and much more</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-11-27}}: WordGraph release; New Special page: list functions by tests; new type for day of the year, and much more</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-11-21}}: New special page for missing labels, new type for Gregorian years, and much more</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-11-13}}: New Type: Rational number; Documentation on Wikidata-based types; and more</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-11-07}}: The Dream of a Universal Language</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-11-01}}: Rewriting the backend</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-10-25}}: Our goal for this Quarter: Agreement</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-10-17}}: What could abstract content look like?</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-10-11}}: Wikidata Lexemes in Wikifunctions are coming soon</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-10-02}}: Focus topic: Food</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-09-26}}: Quarterly planning for October–December 2024; Presentation at Celtic Knot tomorrow</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-09-20}}: Introducing focus topic areas</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-09-13}}: Dagbani Wikipedia will be our first wiki for Wikifunctions integration</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-09-06}}: Volunteer's corner and other updates</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-08-29}}: Limits on Name and Description Lengths</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-08-23}}: WasmEdge, Now 300ms Less Edgy</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-08-16}}: Wikimania 2024 edition</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-08-02}}: Revamping our 'About' widget</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-07-26}}: Wikimania 2024 coming soon!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-07-18}}: Research report on integrating Wikifunctions from Wikipedia</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-07-10}}: Type proposals for accessing Lexemes</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-07-03}}: Quarterly planning</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-06-26}}: Welcome, Daphne!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-06-20}}: New Type: Integers</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-06-13}}: New Type: Igbo calendar months</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-06-06}}: New Type: Sign</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-05-30}}: A single singular or a plurality of plurals?</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-05-22}}: New Type: Gregorian calendar months</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-05-15}}: Call for Functions: Spell out the number!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-05-10}}: Flagship type for enumerations: Months of the Gregorian calendar</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-05-03}}: Team meeting and Quarterly plan</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-04-19}}: Welcome, Sharvani!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-04-11}}: New API for calling Wikifunctions and celebrating 1000 functions</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-04-03}}: Product Update on Diff and Upcoming API Improvements</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-03-28}}: Creating tests is now much easier!</span>
* {{Status updates|2024-03-21}}: Dina jalan ka nomer internasionalisasi
* {{Status updates|2024-03-13}}: Dina identitas
* {{Status updates|2024-03-07}}: Ngawanohkeun tipe anyar urang kadua: angka alam
* {{Status updates|2024-02-28}}: Proposisi tipe pikeun angka alam
* {{Status updates|2024-02-22}}: Ngamutahirkeun modél fungsi
* {{Status updates|2024-02-14}}: Minggu ngalereskeunana
* {{Status updates|2024-02-07}}: Perencanaan kuartal. Hatur nuhun, Nick! Fungsi Minggu: nyaéta permutasi
* {{Status updates|2024-02-01}}: Imperatif Igbo!
<span id="Before_February_2024"></span>
<div class="mw-translate-fuzzy">
=== Ti 2020 Nepi Januari 2024 ===
</div>
Bewara dina mangsa ieu [[:m:Special:MyLanguage/Abstract Wikipedia/Updates|tiasa ditingali dina Meta-Wiki]].
[[Category:Status updates{{#translation:}}| ]]
514fn46limg4fzxt4kgmd8k5d6ichjl
Wikifunctions:Report a technical problem/ms
4
28933
296967
279547
2026-08-06T18:03:10Z
FuzzyBot
207
Updating to match new version of source page
296967
wikitext
text/x-wiki
<languages/>
{{shortcut|[[WF:BUG]]}}
{{see also
|Special:MyLanguage/WF:Status|l1=WF:Status
|Special:MyLanguage/WF:Feature_petitions|l2=WF:Feature petitions
}}
<div lang="en" dir="ltr" class="mw-content-ltr">
If you have found a bug in Wikifunctions, or you have a feature request for Wikifunctions, please let us know!
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Scope ==
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Bug''' - a problem that is producing incorrect or unexpected results on Wikifunctions. Note that problems within Functions themselves are not considered as a bug in this context.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Feature request''' - an idea that the development team can add to Wikifunctions to make it even more awesome.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
Do you need help with something else?
</div>
: <span lang="en" dir="ltr" class="mw-content-ltr">The following are '''out of scope''' of the work of the Wikifunctions development team:</span>
:* <span lang="en" dir="ltr" class="mw-content-ltr">The '''content of individual Functions''' – Discuss those on the talkpage of the Function itself, or ask for help at [[Wikifunctions:Project chat]] or in the channels listed below; if you think a function is missing, see [[Wikifunctions:Suggest a function]]</span>
:* <span lang="en" dir="ltr" class="mw-content-ltr">The '''Wikifunctions project's policies''' – Ask about those at [[Wikifunctions:Project chat]] or in the channels listed below</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Find existing bugs and feature requests ==
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">See '''[[Wikifunctions:Status]]''' for a quick summary of high-level issues.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">You can '''[[phab:maniphest/query/UzvNRqsdnymk/|search the Phabricator]] listing of open tasks''' to see if your bug or feature idea is already documented.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Discuss with others ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
You can ask questions about possible bugs or feature ideas at a few locations. This may be helpful if you are unsure how to clearly describe the bug or feature idea:
</div>
* <span class="mw-translate-fuzzy">Laman perbincangan di sini.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">The main chat on [https://t.me/Wikifunctions Telegram] or IRC {{channel|wikipedia-abstract}} (bridged together) ([https://wm-bot.wmcloud.org/logs/%23wikipedia-abstract/ logs], [https://wm-bot.wmflabs.org/logs/%23wikipedia-abstract/ old logs])</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">The developer chat on [https://t.me/abstract_wikipedia_tech Telegram] or IRC {{channel|wikipedia-abstract-tech}} (bridged together) ([https://wm-bot.wmcloud.org/logs/%23wikipedia-abstract-tech/ logs])</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
== File a task in Phabricator ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If you are familiar with Phabricator, you can search and file tasks directly.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If you are not yet familiar: Phabricator is the web-based development collaboration tool mostly used to manage MediaWiki software projects including Wikifunctions. A short summary about Phabricator for newcomers, including tutorial videos, is on MediaWiki's wiki at [[mw:Special:MyLanguage/Phabricator/Help|mw:Phabricator/Help]].
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">You can '''[[phab:maniphest/query/UzvNRqsdnymk/|search]] the listing of open tasks''' to see if your bug or feature idea is already documented.</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">The existing tasks are collected with the '''[[phab:tag/abstract wikipedia team|#abstract wikipedia team]] tag'''.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">You can '''[https://phabricator.wikimedia.org/maniphest/task/edit/form/43/?projects=abstract_wikipedia file a new task]'''. Please always include:</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">Examples</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">Any relevant links</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">For bugs: The exact steps that produced the bug, so that the team can reproduce and diagnose it.</span>
<span id="Languages"></span>
== Bahasa ==
<div lang="en" dir="ltr" class="mw-content-ltr">
The development team understands a limited number of languages – but you are free to report issues in any language that you're comfortable with.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If possible, please provide a summary in English when creating a phabricator task, or ask someone to help you.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Follow-up ==
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">The locations above are followed by the Wikifunctions development team, as well as community members. The time to get a reply varies depending on the nature or complexity of the topic, etc. However, in general, you can get an answer within 2 workdays. Please let us know if we missed something, as life can get distracting!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Not all problems can be solved immediately: depending on the impact, priority, etc. some bugs can be triaged to low priority. You may follow the status of your report on the relevant linked phabricator task.</span>
[[Category:Report a technical problem{{#translation:}}]]
05d068dwscc4oy1l9rqeusdioewkti4
Wikifunctions:Status updates/eo
4
29262
296984
295112
2026-08-06T18:03:33Z
FuzzyBot
207
Updating to match new version of source page
296984
wikitext
text/x-wiki
<languages/>
{{shortcut|WF:SU}}{{notice|1=<span lang="en" dir="ltr" class="mw-content-ltr">'''[[:m:Global message delivery/Targets/Wikifunctions & Abstract Wikipedia|Subscribe]]''' to receive short on-wiki MassMessage notifications about each new issue</span>}}
{{Wikifunctions updates
| prevlabel = <span lang="en" dir="ltr" class="mw-content-ltr">Previous update</span>
| prev = 2024-02-01
| nextlabel = <span lang="en" dir="ltr" class="mw-content-ltr">Last update</span>
| next = 2026-08-05
}}
<div lang="en" dir="ltr" class="mw-content-ltr">
A lot is happening around Wikifunctions and Abstract Wikipedia. This is the page where our updates are posted, including the [[Special:MyLanguage/WF:function of the Week|function of the Week]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
You can also subscribe to the [[:m:Global message delivery/Targets/Wikifunctions & Abstract Wikipedia|on-wiki newsletter]] to have them delivered to your talk page or to your project's village pump.
</div>
<inputbox>
type=fulltext
prefix={{NAMESPACE}}:{{PAGENAME}}/
break=no
width=30
searchbuttonlabel={{int:Search}}
placeholder=Search all status updates
</inputbox>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Newsletters ==
</div>
<!--<nowiki> Newsletter entry template:
* <translate><tvar name="1">{{Status updates|2026-0?-??}}</tvar>: Title</translate>
NOTE: Remember to also update the "next =" date at the top of this page.
</nowiki>-->
=== 2026 ===
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-08-05}}: An apple is a fruit</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-07-29}}: Abstract Wikipedia at Wikimania</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-07-16}}: Beyond syntactic tables</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-07-08}}: Moving toward our first Abstract Wikipedia integration milestone</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-07-01}}: Integration on test wiki and annual plan</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-06-26}}: Working on Functions, together</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-06-19}}: The or not the, this is (the?) question</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-06-12}}: Improved loading and display of Test results</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-06-05}}: The illustrated encyclopaedia</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-05-30}}: Looking back and forward</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-05-23}}: Annual plan 2026-2027</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-05-15}}: A higher meaning</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-05-08}}: References from Wikidata are now available</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-05-02}}: Request for input: what should we count for Abstract Wikipedia?</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-04-25}}: The Foundation's search for the perfect language</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-04-16}}: Milestones; Some major issues hopefully resolved</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-04-10}}: Community proposals for capturing meaning</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-04-02}}: Request for Discussion: Syntactic tables</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-03-26}}: First few days of Abstract Wikipedia Beta; Status of Composition Language v2</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-03-19}}: Abstract Wikipedia in Beta</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-03-11}}: A new composition language</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-03-06}}: Citations and Copy and Paste</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-02-26}}: Graceful overrides and fallbacks</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-02-20}}: A sneak preview of Abstract Wikipedia</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-02-13}}: Finishing each other sentences: Starting things; Offsite in Istanbul</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-01-29}}: Integrating Abstract Wikipedia</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-01-22}}: Quarterly plan for January–March 2026</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-01-15}}: 25 years of Wikipedia</span>
=== 2025 ===
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-12-18}}: We wish you a happy new Gregorian year!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-12-11}}: How to write better error messages</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-12-04}}: And the name is Abstract Wikipedia</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-11-27}}: Vote on the new wiki name!; Finishing each other’s sentences</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-11-20}}: Second round of voting for naming the wiki with language-independent content; Sharing function calls</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-11-13}}: Getting ready for second round of voting for naming the wiki with abstract content; Rewriting the backend: Why Rust?</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-11-05}}: First round of voting for naming the wiki for abstract content closed; Calling for Wiktionary functions; Embedded Wikifunctions on Bengali Wikipedia and seven more Wiktionaries</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-10-29}}: Round 1 of “abstract content wiki” naming vote ending Monday; An example of short descriptions</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-10-23}}: Welcome Zaree and Laura! Naming contest round 1 kicked off</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-10-15}}: Kicking Off the Naming Contest for Abstract Wikipedia; Visualizing functions</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-10-08}}: Decision on location for abstract content and Quarterly Planning for October–December</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-10-03}}: Rich text now available in embedded function calls on 148 Wiktionaries and Incubator</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-09-26}}: Accessing qualifiers in Wikidata statements</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-09-19}}: Wikifunctions available on 123 Wiktionary languages</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-09-12}}: More than 3,000 functions on Wikifunctions</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-09-07}}: Copying function calls from one Wikipedia to another</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-08-29}}: Accessing Wikidata items now possible from embedded function calls; Wikifunctions available on 65 Wikitionaries</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-08-22}}: Recording of Wikimania session: Wikifunctions is coming soon to a wiki near you!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-08-01}}: Wikimania 2025 is coming soon!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-07-26}}: “Wikipedia is an encyclopedia”; Two years of Wikifunctions</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-07-19}}: Wikidata-based enumerations are here</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-07-10}}: Length limits on labels and descriptions</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-07-04}}: Coverage of 1298</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-06-27}}: How many people are needed to write an encyclopedia?</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-06-21}}: Quarterly Planning for July–September 2025</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-06-15}}: Closing the consultation about the location of Abstract Content</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-06-06}}: Where will Abstract Content go?</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-05-29}}: Rolling out to five Wiktionaries; Calculating with today's date</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-05-23}}: Ongoing consultation about the Location for Abstract Content</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-05-15}}: Location of Abstract Content</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-05-09}}: Abstract Wikipedia and the Wikimedia AI Strategy</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-04-30}}: Abstract Wikipedia is a MacArthur 100&Change finalist</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-04-25}}: Welcome, Gregory!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-04-16}}: Wikifunctions integrated in Dagbani - and Wikifunctions; and the date of Easter</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-04-11}}: Quarter in review</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-04-05}}: Quarterly Planning for April–June 2025; We are looking for a Senior Product Manager</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-03-28}}: It's about time</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-03-20}}: Wikidata-based simple enumerations</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-03-15}}: Upcoming NLG meeting, Recent Changes in the software</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-03-07}}: Recent Changes in the software, Recording of Volunteer’s Corner, and talks in London</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-02-26}}: From things to words</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-02-19}}: A proposal for types per language and part of speech</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-02-13}}: Restricting the World, redux</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-02-06}}: Invitation to the Natural Language Generation Special Interest Group</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-01-29}}: With 2000 Functions into the new year: time for stats</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-01-22}}: Welcome, David! Naming conventions recommendations</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-01-15}}: Happy Wikipedia day! Quarterly planning</span>
=== 2024 ===
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-12-19}}: Function of the Week: age; Intros for year articles; New Type: Floating-point number</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-12-12}}: Sketching a path to Abstract Wikipedia; Team offsite in Lisbon; and much more</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-11-27}}: WordGraph release; New Special page: list functions by tests; new type for day of the year, and much more</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-11-21}}: New special page for missing labels, new type for Gregorian years, and much more</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-11-13}}: New Type: Rational number; Documentation on Wikidata-based types; and more</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-11-07}}: The Dream of a Universal Language</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-11-01}}: Rewriting the backend</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-10-25}}: Our goal for this Quarter: Agreement</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-10-17}}: What could abstract content look like?</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-10-11}}: Wikidata Lexemes in Wikifunctions are coming soon</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-10-02}}: Focus topic: Food</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-09-26}}: Quarterly planning for October–December 2024; Presentation at Celtic Knot tomorrow</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-09-20}}: Introducing focus topic areas</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-09-13}}: Dagbani Wikipedia will be our first wiki for Wikifunctions integration</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-09-06}}: Volunteer's corner and other updates</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-08-29}}: Limits on Name and Description Lengths</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-08-23}}: WasmEdge, Now 300ms Less Edgy</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-08-16}}: Wikimania 2024 edition</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-08-02}}: Revamping our 'About' widget</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-07-26}}: Wikimania 2024 coming soon!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-07-18}}: Research report on integrating Wikifunctions from Wikipedia</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-07-10}}: Type proposals for accessing Lexemes</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-07-03}}: Quarterly planning</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-06-26}}: Welcome, Daphne!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-06-20}}: New Type: Integers</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-06-13}}: New Type: Igbo calendar months</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-06-06}}: New Type: Sign</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-05-30}}: A single singular or a plurality of plurals?</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-05-22}}: New Type: Gregorian calendar months</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-05-15}}: Call for Functions: Spell out the number!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-05-10}}: Flagship type for enumerations: Months of the Gregorian calendar</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-05-03}}: Team meeting and Quarterly plan</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-04-19}}: Welcome, Sharvani!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-04-11}}: New API for calling Wikifunctions and celebrating 1000 functions</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-04-03}}: Product Update on Diff and Upcoming API Improvements</span>
* {{Status updates|2024-03-28}}: Krei testojn ekde nun pli facilas!
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-03-21}}: On the way to internationalizing numbers</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-03-13}}: On identity</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-03-07}}: Introducing our second new type: Natural numbers</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-02-28}}: Type proposal for natural numbers</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-02-22}}: Updating the function model</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-02-14}}: Fix-it week</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-02-07}}: Quarterly planning. Thank you, Nick! Function of the Week: is permutation</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-02-01}}: The Igbo Imperative!</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Before February 2024 ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
All updates from this period are [[:m:Special:MyLanguage/Abstract Wikipedia/Updates|available on Meta-Wiki]].
</div>
[[Category:Status updates{{#translation:}}| ]]
s5k4kde89784zpox02o6vubc8zhboal
Template:Documentation subpage/de
10
29273
297006
99270
2026-08-06T18:04:29Z
FuzzyBot
207
Updating to match new version of source page
297006
wikitext
text/x-wiki
<noinclude><languages/></noinclude><includeonly>{{#if:{{IsDocSubpage|override={{{override|doc}}}}}
| <!--doc subpage--></includeonly>{{#ifeq:{{{doc-notice|show}}}|show
| {{Ombox|type=notice|image=[[File:OOjs UI icon articles-ltr.svg|35px|link=|class=skin-invert-image]]
|text='''Dies ist eine [[Special:MyLanguage/Help:Template documentation|Dokumentations]][[mw:Special:MyLanguage/Help:Subpages|unterseite]] für {{#if:{{{1|}}}
| {{{1}}}
| [[:{{SUBJECTSPACE}}:{{BASEPAGENAME}}]]
}}.'''<br/> Sie enthält Informationen zur Verwendung, [[Special:MyLanguage/Help:Categorization|Kategorien]] und andere Inhalte, die nicht Teil der<!--
--> {{#if: {{{text2|}}}
| {{{text2|}}}
| {{#if: {{{text1|}}}
| {{{text1|}}}
| {{#ifeq: {{SUBJECTSPACE}} | {{ns:User}}
| {{lc:{{SUBJECTSPACE}}}} Vorlagenseite
| {{#if: {{SUBJECTSPACE}}
| {{lc:{{SUBJECTSPACE}}}} Seite
| Artikels
}}
}}
}}
}} sind.
}}
<!--If not on a doc subpage, do nothing-->}}{{DEFAULTSORT:{{{defaultsort|{{PAGENAME}}}}}}}{{#if: {{{inhibit|}}}
| <!--Skip-->
| <includeonly>{{#ifexist: {{NAMESPACE}}:{{BASEPAGENAME}}
| [[Category:{{#switch: {{SUBJECTSPACE}}
|Template=Template
|Module=Module
|User=User
|#default=Template
}} documentation pages{{#translation:}}]]
| [[Category:Documentation subpages without corresponding pages{{#translation:}}]]
}}</includeonly>
}}<includeonly>
}}</includeonly><noinclude>{{Documentation}}[[Category:Template documentation]]<!--Add categories and interwikis to the /doc subpage, not here!--></noinclude>
ljeq88gc2mtxkov46mntut9wlgf4t83
Template:Documentation subpage/sv
10
29311
297016
99389
2026-08-06T18:04:35Z
FuzzyBot
207
Updating to match new version of source page
297016
wikitext
text/x-wiki
<noinclude><languages/></noinclude><includeonly>{{#if:{{IsDocSubpage|override={{{override|doc}}}}}
| <!--doc subpage--></includeonly>{{#ifeq:{{{doc-notice|show}}}|show
| {{Ombox|type=notice|image=[[File:OOjs UI icon articles-ltr.svg|35px|link=|class=skin-invert-image]]
|text='''Detta är en [[mw:Special:MyLanguage/Help:Subpages|undersida]] för [[Special:MyLanguage/Help:Template documentation|dokumentation]] av {{#if:{{{1|}}}
| {{{1}}}
| [[:{{SUBJECTSPACE}}:{{BASEPAGENAME}}]]
}}.'''<br/> Den innehåller bruksanvisningar, [[Special:MyLanguage/Help:Categorization|kategorier]] och annat material som inte är del av den ursprungliga<!--
--> {{#if: {{{text2|}}}
| {{{text2|}}}
| {{#if: {{{text1|}}}
| {{{text1|}}}
| {{#ifeq: {{SUBJECTSPACE}} | {{ns:User}}
| {{lc:{{SUBJECTSPACE}}}} mallen
| {{#if: {{SUBJECTSPACE}}
| {{lc:{{SUBJECTSPACE}}}} sidan
| artikeln
}}
}}
}}
}}.
}}
<!--If not on a doc subpage, do nothing-->}}{{DEFAULTSORT:{{{defaultsort|{{PAGENAME}}}}}}}{{#if: {{{inhibit|}}}
| <!--Skip-->
| <includeonly>{{#ifexist: {{NAMESPACE}}:{{BASEPAGENAME}}
| [[Category:{{#switch: {{SUBJECTSPACE}}
|Template=Template
|Module=Module
|User=User
|#default=Template
}} documentation pages{{#translation:}}]]
| [[Category:Documentation subpages without corresponding pages{{#translation:}}]]
}}</includeonly>
}}<includeonly>
}}</includeonly><noinclude>{{Documentation}}[[Category:Template documentation]]<!--Add categories and interwikis to the /doc subpage, not here!--></noinclude>
p3dinyfpulrzflcstxrcatc5lbhxcgx
Template:Documentation subpage/id
10
29672
297012
101638
2026-08-06T18:04:32Z
FuzzyBot
207
Updating to match new version of source page
297012
wikitext
text/x-wiki
<noinclude><languages/></noinclude><includeonly>{{#if:{{IsDocSubpage|override={{{override|doc}}}}}
| <!--doc subpage--></includeonly>{{#ifeq:{{{doc-notice|show}}}|show
| {{Ombox|type=notice|image=[[File:OOjs UI icon articles-ltr.svg|35px|link=|class=skin-invert-image]]
|text='''Ini adalah [[mw:Special:MyLanguage/Help:Subpages|subhalaman]] [[Special:MyLanguage/Help:Template documentation|dokumentasi]] untuk {{#if:{{{1|}}}
| {{{1}}}
| [[:{{SUBJECTSPACE}}:{{BASEPAGENAME}}]]
}}.'''<br/> Subhalaman ini berisi informasi cara penggunaan, [[Special:MyLanguage/Help:Categorization|kategori]], dan konten lainnya yang bukan merupakan bagian dari <!--
--> {{#if: {{{text2|}}}
| {{{text2|}}}
| {{#if: {{{text1|}}}
| {{{text1|}}}
| {{#ifeq: {{SUBJECTSPACE}} | {{ns:User}}
| {{lc:{{SUBJECTSPACE}}}}halaman templat asal
| halaman {{#if: {{SUBJECTSPACE}}
| {{lc:{{SUBJECTSPACE}}}} asal
| artikel
}}
}}
}}
}}.
}}
<!--If not on a doc subpage, do nothing-->}}{{DEFAULTSORT:{{{defaultsort|{{PAGENAME}}}}}}}{{#if: {{{inhibit|}}}
| <!--Skip-->
| <includeonly>{{#ifexist: {{NAMESPACE}}:{{BASEPAGENAME}}
| [[Category:{{#switch: {{SUBJECTSPACE}}
|Template=Template
|Module=Module
|User=User
|#default=Template
}} documentation pages{{#translation:}}]]
| [[Category:Documentation subpages without corresponding pages{{#translation:}}]]
}}</includeonly>
}}<includeonly>
}}</includeonly><noinclude>{{Documentation}}[[Category:Template documentation]]<!--Add categories and interwikis to the /doc subpage, not here!--></noinclude>
6xygkir4hsj5vj96wp7zahc9s04klgy
Wikifunctions:FAQ/lb
4
30751
296924
265382
2026-08-06T18:02:01Z
FuzzyBot
207
Updating to match new version of source page
296924
wikitext
text/x-wiki
<languages/>
{{shortcut|[[WF:FAQ]]}}
<div lang="en" dir="ltr" class="mw-content-ltr">
This is a dedicated page for the Frequently Asked Questions about Wikifunctions. Please, feel free to ask your own question on the [[Wikifunctions talk:FAQ|talk page]], if your question is not listed here!
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Also, please consider our [[:m:Special:MyLanguage/Abstract Wikipedia/FAQ|FAQ on Meta]] regarding more general questions about Wikifunctions and Abstract Wikipedia.
</div>
__TOC__
<span id="Introduction"></span>
== Aféierung ==
<span id="What_is_this_project_about?"></span>
=== Wourëms geet et an dësem Projet? ===
<div lang="en" dir="ltr" class="mw-content-ltr">
Wikifunctions is a new Wikimedia project that provides a catalog of all kinds of functions that anyone can call, write, maintain, and use. It also provides the underlying technology that will eventually enable the translation of language-independent articles from Abstract Wikipedia into the language of any Wikipedia. This will allow everyone to contribute and read articles in their preferred languages.
</div>
<span id="What_is_a_function?"></span>
=== Wat ass eng Funktioun? ===
<div lang="en" dir="ltr" class="mw-content-ltr">
Functions are a form of knowledge that can answer questions, such as how many days have passed between two dates or the distance between two cities. More complicated functions can answer more complicated questions, such as the volume of a three-dimensional shape, the distance between Mars and Venus on a certain date, or whether two species were alive at the same time.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
We already use functions in many types of knowledge inquiries, such as asking a question to a search engine. The templates, such as [[:w:en:Template:Convert|Template:Convert]] and [[:w:en:Template:Age|Template:Age]] on English Wikipedia, are also examples of functions that are already used in many Wikipedias, written in wikitext and Lua and manually copied to each wiki where they're wanted.
</div>
<span id="What_is_an_implementation?"></span>
=== Wat ass eng Implementéiereung? ===
<div lang="en" dir="ltr" class="mw-content-ltr">
An implementation is a particular way to execute a function. An implementation is a recipe that lists the steps that are needed to run the function. It may be a piece of code in a programming language or a combination of calls to other functions. A function may have many implementations, which should all be equivalent.
</div>
<span id="What_is_a_test?"></span>
=== Wat ass een Test? ===
<div lang="en" dir="ltr" class="mw-content-ltr">
A test is a way to determine if a given function is doing the right thing. A function will typically have multiple testers, each specifying some input to the function and the conditions the output for the given input must fulfill.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For example, testers for a “title case” function might include: “<span dir="ltr" lang="en">abc</span>” should become “<span dir="ltr" lang="en">Abc</span>”; “<span dir="ltr" lang="en">war and peace</span>” should become “<span dir="ltr" lang="en">War and Peace</span>”; “<span dir="ltr" lang="ru">война и мир</span>” should become “<span dir="ltr" lang="ru">Война и мир</span>”; and “<span dir="ltr" lang="en">123</span>” should remain “<span dir="ltr" lang="en">123</span>”.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Which features are available now, which will be soon available, and which are further away? ===
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">At launch:</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">We have the ability to have functions that work with Strings and Booleans.</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">Wikifunctions will be fully internationalized from the beginning. It can be used in any language.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Wikifunctions:Status|Ongoing development]]:</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">Generic types and generic functions are not fully supported.</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">Adding types will, for now, be something that is limited to the development team. In the future, the community will be able to add more types. There is a lot of work to be done in the future to make types behave much more smoothly.</span>
*** <span lang="en" dir="ltr" class="mw-content-ltr">One particularly interesting type will be binary data, and particularly files.</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">We currently support two programming languages for implementations: JavaScript and Python. In the future, we want to support many more.</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">Currently, it is ''not'' possible to call other functions from implementations written in any programming language. This is currently only possible through composition.</span>
* An Zukunft…
** <span lang="en" dir="ltr" class="mw-content-ltr">It will be possible to call Wikifunctions functions from other Wikimedia projects and integrate their results into the output of the page.</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">It will be possible to use data from Wikidata in functions.</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">It will be possible to call data sets from Commons Data namespace.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== How is Wikifunctions multilingual? ===
</div>
{{main|Special:MyLanguage/Help:Multilingual}}
<div lang="en" dir="ltr" class="mw-content-ltr">
Wikifunctions and Abstract Wikipedia are multilingual in a number of ways that do not impact each other:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Wikifunctions is multilingual in terms of its content and user interface.''' Users can read and call functions on Wikifunctions in any natural language. Here is the “join string” function in [https://www.wikifunctions.org/view/en/Z10000 English], [https://www.wikifunctions.org/view/pl/Z10000 Polish], and [https://www.wikifunctions.org/view/he/Z10000 Hebrew], and it is available in many more languages.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Contributors can edit and improve Wikifunctions using their language.''' Even implementations can be edited in the natural language of the contributor. For example, the composition of the “and” function can be edited in [https://www.wikifunctions.org/wiki/Z11223?action=edit&uselang=de German], [https://www.wikifunctions.org/wiki/Z11223?action=edit&uselang=en English], or any other of about 300 languages.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Wikifunctions functions can be used to create results for any natural language.''' The community is creating a growing number of functions to support the generation of text in many natural languages. We have functions for [[Wikifunctions:Catalogue#Breton|Breton]], [[Wikifunctions:Catalogue#Rohingya|Rohingya]], [[Wikifunctions:Catalogue#English|English]], and many other languages.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Functions in Wikifunctions can be implemented in various different programming languages.''' For example, the [[Z10000|join function]] is implemented in both [[Z10005|JavaScript]] and [[Z10004|Python]].</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Which programming languages does Wikifunctions currently support? Which programming languages will be supported in the future? ===
</div>
{{main|WF:programming languages}}
<div lang="en" dir="ltr" class="mw-content-ltr">
Currently, Wikifunctions supports implementations written in JavaScript and Python. We plan to add support for more programming languages in the future. We hope to add at least one further programming language in 2025 (but have not yet decided which one).
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== How will Wikifunctions be integrated into other projects? ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Wikifunctions is the first step towards building Abstract Wikipedia. Our near-term focus will be on supporting the community and making improvements based on feedback. Concurrently, we will begin the process of integrating it with Wikipedia and Wikidata, which will enable broader real-life applications and get us closer to the vision of Abstract Wikipedia.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Contributors will be able to call functions stored on the Wikifunctions site from within their wikis. The result of the function call will be displayed to readers of the wiki. This can be used, for example, to calculate the age of a person, the population density based on population and area data from Wikidata, or to draw a graph and integrate it into a given article.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Another option to integrate Wikifunctions will be to integrate an interactive function call interface within their wiki. This could be used, for example, in a Wikipedia article to dynamically calculate the result of a physical equation based on reader-provided parameters, draw and interact with mathematical functions, etc.
</div>
<span id="What_Wikifunctions_is_not"></span>
<div class="mw-translate-fuzzy">
=== Wat ass Wikifunctions net? ===
</div>
Kuckt wgl. [[Special:MyLanguage/Wikifunctions:What Wikifunctions is not|Wikifunctions:Wat Wikifunctions net ass]] fir méi Informatiounen dozou.
<div lang="en" dir="ltr" class="mw-content-ltr">
=== What license will the functions and derived content be under? ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Per the discussion happened [[:m:Special:MyLanguage/Abstract Wikipedia/Licensing discussion|on Meta between November and December 2021]], all contributions to Wikifunctions and the wider Abstract Wikipedia projects will be published under free licenses. In particular:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Special:MyLanguage/Wikifunctions:Glossary#Content|Textual content]] on Wikifunctions will be published under [[w:Creative Commons license|CC BY-SA 4.0]].</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Special:MyLanguage/Wikifunctions:Glossary#Function|Function signatures]] and other structured content on Wikifunctions will be published under [[w:CC0|CC 0]].</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Special:MyLanguage/Wikifunctions:Glossary#Implementation|Code implementations]] in Wikifunctions will be published under the [[w:Apache License|Apache 2 license]].</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Special:MyLanguage/Wikifunctions:Glossary#Content|Abstract Content]] for Abstract Wikipedia will be published under CC BY-SA 4.0.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
There are still some points that will need to be addressed in the future, such as the license of the generated content from the abstract content. We plan on drafting a more comprehensive document with the Legal department about how people can re-use code from Wikifunctions as painlessly as possible, while adhering to the license.
</div>
<span id="Contributing"></span>
== Bäidroen ==
<span id="I'm_new_here._What_is_there_for_me_to_do_and_how_can_I_help?"></span>
=== Ech sinn nei hei. Wat kann ech maachen a wéi kann ech hëllefen? ===
<div lang="en" dir="ltr" class="mw-content-ltr">
Welcome! We're very happy to have you here! There are many opportunities for contributing to Wikifunctions, from creating new functions to improving and translating documentation. If you are looking for ways to get involved, we recommend that maybe, depending on your level of comfort, you suggest a new function on a topic you are interested in. Or even create such a function. Provide some tests. Try your hand at an implementation. Help with translations. Read and improve our documentation. Help with organizing the community.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== How do I create a new function, implementation, or test? ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
To see how to create a new function, implementation, or test, see [[Special:MyLanguage/Wikifunctions:Introduction|Wikifunctions:Introduction]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
To see in more detail how to create an implementation, see [[Special:MyLanguage/Wikifunctions:How to create implementations|Wikifunctions:How to create implementations]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== What should I edit first? ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If you can write several languages, find functions that don't have labels and descriptions in your languages yet on the page [[Special:ListMissingLabels]], and help to add them.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If you have some interest in a domain that could feature functions in Wikifunctions, but yet doesn't, or if you have more ideas for functions, go to the page for [[Wikifunctions:Suggest a new function|suggesting new functions]] and present your ideas.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If you are a coder in JavaScript or Python, maybe you want to check for functions that don't yet have implementations in JavaScript or Python, and try to write them.
</div>
<span id="Where_can_I_go_for_help?"></span>
=== Wou fannen ech Hëllef? ===
<div lang="en" dir="ltr" class="mw-content-ltr">
Your first stop should be the [[Special:MyLanguage/Help:Contents|Help portal]], where you'll find all the documentation related to using and editing Wikifunctions. If you're still stuck, post a message on [[Wikifunctions:Project chat|Project chat]], and someone will answer your question.
</div>
<span id="How_do_we_sort_or_categorize_functions?"></span>
=== Wéi sortéieren oder kategoriséiere mir Funkctiounen? ====
{{Tracked|T285424}}
<div lang="en" dir="ltr" class="mw-content-ltr">
For now, the best way to sort or categorize functions is to do it by hand through [[Special:MyLanguage/Wikifunctions:Catalogue|pages in the Wikifunctions namespace]]. Another option would be through the talk page of the given function. We will monitor these efforts and discuss with the community which changes to the system would be helpful for this task.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== How can I setup the software locally to hack on it? ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
See [[Special:MyLanguage/Wikifunctions:Hacking on the evaluator and orchestrator|Hacking on the evaluator and orchestrator]].
</div>
[[Category:FAQ| {{#translation:}}]]
srascqk67eyu0g4ky56sxzq60n43gc6
Wikifunctions:How to create implementations/lb
4
30804
296941
276454
2026-08-06T18:02:34Z
FuzzyBot
207
Updating to match new version of source page
296941
wikitext
text/x-wiki
<languages/>
<div lang="en" dir="ltr" class="mw-content-ltr">
This page provides a more detailed guide to '''creating implementations''', beyond the overview at {{ll|Wikifunctions:Introduction}}.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Types of Implementations ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
In Wikifunctions, an '''implementation''' can take one of two main forms: '''code''' or '''composition'''. A code implementation directly expresses the function’s logic in any of the available programming languages (currently, Python3 or JavaScript). It’s most useful when the function’s behavior can’t easily be built from existing Wikifunctions, or when precise control over data processing is needed.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
A composition implementation, on the other hand, defines the function entirely by combining other existing functions, without writing code. Compositions are easier to understand, reuse, and translate into other languages automatically, but they depend on suitable building blocks already being available and often are less performant. In general, start by checking whether your goal can be achieved through composition; if it can’t, or if performance or fine-grained logic matters, choose a code implementation instead.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
There's a third type of implementation: '''built-ins'''. These are run by system-built code, and are not editable. Most likely all pre-defined functions will have a built-in implementation. In such cases, when opening the implementation page, you will see a message stating ''"{{int|wikilambda-implementation-selector-none}}"''
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Practice Test-Driven Development ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
'''Test-Driven Development''', or '''TDD''', is a way of creating software where you write tests before you write the actual code. Tests are just a way of understanding what your function is supposed to do by listing examples and how they should work.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
In Wikifunctions, writing tests first offers significant benefits. If you are working on an implementation, you can run your code against the existing tests to check that it behaves as expected. This makes it easier to catch errors early before even publishing your implementation. Tests are also a powerful way to describe the function you need. By writing tests, '''you clearly communicate the expected behavior''', and the community can step in and help with the implementation, or create alternative implementations.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Imagine you want to implement a Function that combines two strings with a space in between. A basic test for this might look like:
</div>
<syntaxhighlight lang="prolog">
join_with_space( "Hello", "world" ) => "Hello world"
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
Once you have defined the basic behavior, it's important to '''think about edge cases'''—situations where the inputs are such that you might need some special behavior.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For example, what if your first string ends in a space, or your second string starts with a space? Should the function keep all existing spaces and add another one, or should it return a neatly spaced result with just a single space between the words?
Depending on your requirements, you should build a test for such a case. For example, a test for this edge case could be either one of these — but not both!:
</div>
<syntaxhighlight lang="prolog">
join_with_space( "Hello ", " world") => "Hello world"
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
or ...
</div>
<syntaxhighlight lang="prolog">
join_with_space( "Hello ", " world") => "Hello world"
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
Make sure that all possible special cases are covered by your tests, and once you have them, make sure that they are all connected to the Function by selecting them and clicking "Connect".
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Code implementations ==
</div>
[[File:Code implementation.png|thumb|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Wikifunctions code editor initialized with a function template</span>|<span lang="en" dir="ltr" class="mw-content-ltr">When adding a new code implementation, the function template is initialized with the function and argument names</span>]]
<div lang="en" dir="ltr" class="mw-content-ltr">
When creating an implementation using code, the Wikifunctions UI will set up a code editor with the selected language activated for syntax highlighting and validation. When the function to implement and the programming language are selected, this editor will be set with the correct function template: '''do not remove or edit this'''! Keep your code inside this function signature: if you need auxiliary functions, you can simply declare them inside your top-level function declaration.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Using input types in your code ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Wikifunctions types {{Z|Z6}} and {{Z|Z40}} can be used as if they were native types in both JavaScript and Python3. For example, a String input can be concatenated or a Boolean be directly used in a logical expression. To use other types in your code implementations, you will have to look deeper into the type, figure out if it has a conversion to a native equivalent, and treat it accordingly.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For example, let's say we want to write some Python code that handles an input of type {{Z|Z20420}}. In the page for this type, let's look at its "type converters to code" and search for a Python one. The converter {{Z|Z20424}} will be applied to our date input before our code, so looking at "native type" we know that our input will be a Python ''dict'' and looking at the implementation we can see the keys we can expect:
</div>
<syntaxhighlight lang="python3">
return {
'K1': year,
'K2': month,
'K3': day
}
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
When a type doesn't have a converter, you'll have to access its parts directly using its keys. For example, let's assume that your function <code>Z30000</code> has one input <code>Z30000K1</code> of type {{Z|Z11}}. This type has two keys: <code>Z11K1</code> for the language (itself an object of type {{Z|Z60}}), and <code>Z11K2</code> for the string value. Similarly, the language object has a key <code>Z60K1</code> for the language code. So, to get a string with the language code and the text, you can write:
</div>
<syntaxhighlight lang="javascript">
function Z30000( Z30000K1 ) {
// e.g. "en: some text"
return Z30000K1.Z11K1.Z60K1 + ": " + Z30000K1.Z11K2;
}
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
For a quick reference of the available type conversions visit [[Special:MyLanguage/Wikifunctions:Execution targets#Default type conversion|the default type conversion table]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Returning the right outputs ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Similarly to the way you treat inputs, outputs need to match the type specified in the function definition. Some can be treated as simply as native types, so any string output will be converted into a Wikifunctions {{Z|Z6}} object and any native boolean returned by your implementation will be converted into a Wikifunctions {{Z|Z40}} object.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Those types that have "type converters from code" will apply the appropriate function to the output, in order to build the required type. Following the example of {{Z|Z20420}}, the {{Z|Z20443}} will transform the output from your implementation–a dict with K1, K2 and K3 keys–into its correct ZObject representation.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For types that don't have converters from code, you can carefully build and return the output objects. For example, imagine that our function <code>Z30000</code> takes two string inputs: language code and text, and should return a {{Z|Z11}} object. You can do this in Python by using the <code>ZObject</code> constructor:
</div>
<syntaxhighlight lang="python3">
def Z30000(Z30000K1, Z30000K2):
lang_object = ZObject(
{"Z1K1": "Z9", "Z9K1": "Z60"},
Z60K1 = Z30000K1
)
return ZObject(
{"Z1K1": "Z9", "Z9K1": "Z11"},
Z11K1 = lang_object,
Z11K2 = Z30000K2
)
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
Or in JavaScript:
</div>
<syntaxhighlight lang="javascript">
function Z30000( Z30000K1, Z30000K2 ) {
const langObject = new ZObject(
new Map( [ [ "Z60K1", Z30000K1 ] ] ),
{ "Z1K1": "Z9", "Z9K1": "Z60" }
);
const monolingualKeys = new Map( [
[ "Z11K1", langObject ],
[ "Z11K2", Z30000K2 ]
] );
return new ZObject(
monolingualKeys,
{ "Z1K1": "Z9", "Z9K1": "Z11" }
);
}
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
You can learn more about the <code>ZObject</code> class and other useful constructors in {{ll|Wikifunctions:Execution_targets#Custom_and_non-built-in_type_conversion}}
</div>
{{phab|T392750}}<div lang="en" dir="ltr" class="mw-content-ltr">
As of 2026-05, trying to return a list of lists may fail, so you're not able to implement such functions in code.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Code in Python ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
In this section, we give a concrete example on how to create an implementation in the form of Code in Python. Say we want to create an implementation for a Function which combines two input strings by putting a space between them, returning the result of that. Let’s assume the ZID of that function is Z30000.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The implementation is defined using the ZID of the function. So are the arguments of the function. So in the case of the function Z30000 with its two arguments, the function template should look like this:
</div>
<syntaxhighlight lang="python3">
def Z30000(Z30000K1, Z30000K2):
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
As we described before, we know that the arguments (<code>Z30000K1</code> and <code>Z30000K2</code>) are Strings, so we can treat them as simply as we use native strings in Python. Also, the function should return a String. For our example, we simply return the two arguments concatenated with a space in between:
</div>
<syntaxhighlight lang="python3">
def Z30000(Z30000K1, Z30000K2):
return Z30000K1 + " " + Z30000K2
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
Since this is Python, do not forget to indent this line.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If you have followed our advice to [[#Practice Test-Driven Development|practice TDD]], you will already have a set of tests that you know should work. If that's the case, while building your implementation you can click on the circular arrow in the Tests panel, and see if your implementation passes all of them.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Remember that the runtime has no state. Don’t assume values for global or static variables. If you have further questions about what you can and cannot do in Python, ask on [[Wikifunctions:Python implementations]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Code in JavaScript ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
In this section, we give a concrete example on how to create an implementation in the form of Code in JavaScript. Say we want to create an implementation for a Function which combines two input strings by putting a space between them, returning the result of that. Let’s assume the ZID of that function is <code>Z30000</code>.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The implementation is defined using the ZID of the function. So are the arguments of the function. So in the case of the function <code>Z30000</code> with its two arguments, the function template should look like this:
</div>
<syntaxhighlight lang="javascript">
function Z30000( Z30000K1, Z30000K2 ) {
}
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
We know that the arguments (<code>Z30000K1</code> and <code>Z30000K2</code>) are Strings, so we can treat them as native strings in JavaScript. Also, the function should return a String. To complete our function, you can then add a line concatenating the input strings, like this:
</div>
<syntaxhighlight lang="javascript">
function Z30000( Z30000K1, Z30000K2 ) {
return Z30000K1 + " " + Z30000K2;
}
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
If you have tests as recommended in the [[#Practice Test-Driven Development|TDD]] section above, click on the circular arrow in the Tests panel and see if your implementation passes all of them.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Remember that the runtime has no state. Don’t assume values for global or static variables. If you have further questions about what you can and cannot do in JavaScript, ask on [[Wikifunctions:JavaScript implementations]].
</div>
<span id="Compositions"></span>
<div class="mw-translate-fuzzy">
== Kompositioun ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
In this section, we give a concrete example on how to create an implementation in the form of a composition. Say we want to create an implementation for a Function which combines two input strings by putting a space between them, returning the result of that. Let’s assume the ZID of that function is <code>Z30000</code>.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
It is usually a good idea to first think about how to combine existing functions in order to create the desired output. Sometimes this might be trivial, and you can just go ahead with composing functions, but in many cases it is worthwhile to note the desired composition down.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For example, for the given Function, we could use the existing Function {{Z|Z10000}}. That Function takes two strings and makes one string out of them. But we need to add a space in between. So we first concatenate a space to the end of the first string, and then concatenate the second string to the result of that first concatenation. So our composition could be noted down like this:
</div>
<syntaxhighlight lang="prolog">
join_strings( join_strings( Z30000K1, " " ), Z30000K2 )
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
There are multiple ways to write a composition: notice that the same thing could be accomplished with:
</div>
<syntaxhighlight lang="prolog">
join_strings( Z30000K1, join_strings( " ", Z30000K2 ) )
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
An alternative implementation could also use the existing Function {{Z|Z15175}}, so your composition could be:
</div>
<syntaxhighlight lang="prolog">
join_with_separator( Z30000K1, Z30000K2, " " )
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
As you can see, there are multiple ways to accomplish this, so take your time and explore the existing functions available in the {{ll|Wikifunctions:Catalogue}}.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Let's try to create the second example, <code>join_strings(Z30000K1, join_strings(" ", Z30000K2))</code>.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
In order to create this:
</div>
# <span lang="en" dir="ltr" class="mw-content-ltr">Start adding an implementation by clicking on the "+" button in the "Implementations" table from your Function page.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Make sure that the option "composition" under "Implementation" is selected.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Click on the "›" icon or click the "Select Function" link to expand the function details.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Under "function" search for the name of the outermost function you want to use, which in this example is "join two strings". Then, select the wanted function from the dropdown list.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">You will see two new fields, one for each of the arguments needed for the selected function.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">For the first argument, we want to select the first input to our function:</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "first string", click on the "…" button and select "Argument reference".</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "key id" you can now select the first string of your function from the dropdown, which contains all available inputs.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">For the second argument, we want to use the result of another call to "join two strings":</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "second string", click on the "…" button and select "Function call".</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function", search and select the function you want to call, which is again "join two strings".</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">For this inner function call, configure the "first string" by simply typing a white space in the text field, and configure the "second string" as you did for step 6: change it using the "…" button to "Argument reference", and then select the second argument in the dropdown.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
Your composition is now complete!
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
You can expand and collapse the details using the chevron buttons to see how it looks. If you already have Tests as recommended in the [[#Practice Test-Driven Development|TDD]] section above, click on the circular arrow in the Tests panel and see if your implementation passes the tests. Once your composition passes the tests, go ahead and publish it.
</div>
[[File:Composition implementation expanded.png|frame|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">A Wikifunctions composition implementation in its expanded view</span>|<span lang="en" dir="ltr" class="mw-content-ltr">A Wikifunctions composition implementation in its expanded view</span>]]
[[File:Composition implementation collapsed.png|frame|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">A Wikifunctions composition implementation in its collapsed view</span>|<span lang="en" dir="ltr" class="mw-content-ltr">A Wikifunctions composition implementation in its collapsed view</span>]]
<div lang="en" dir="ltr" class="mw-content-ltr">
== Wikifunctions error handling ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
As a Wikifunctions function creator, you might want to warn the user calling your function when something goes wrong in the code, or when their inputs do not fit a certain criteria. For example, if your Function expects a string input to contain a name, you might want to check that the name is not empty and, if it is, show an error message that the person using your Function can understand.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For this purpose, you can use <code>Wikifunctions.Error()</code> from your code implementations or the function {{Z|Z851}} from your compositions.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
In this section you will learn:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">How to throw errors from both code and composition implementations,</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">how to write tests for error cases, and</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">how to catch and handle errors thrown by functions that you are using in your compositions.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Throwing errors from code implementations ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
When writing code, both from JavaScript and Python, you can use <code>Wikifunctions.Error()</code> to end the execution with a wanted error.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
<code>Wikifunctions.Error()</code> has two parameters:
</div>
# <span lang="en" dir="ltr" class="mw-content-ltr">Error type: a string containing the ZID of the error type you want to return.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Error arguments: a list of string arguments to build the error.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
Let's go one by one:
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Error type ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
An error type is an object that describes a kind of error that could happen in the system. There are a number of built-in error types but you can also build other error types that are more suited to your use case. When using errors, the best idea is to browse through the available error types, which can be explored in [[Special:ListObjectsByType/Z50|this list]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If there are no errors that fit your case, create a new one by going to the create page, and selecting "Error type" in the type selector. Then, set the necessary fields:
</div>
[[File:Error type.png|thumb|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Error type creation in Wikifunctions</span>|<span lang="en" dir="ltr" class="mw-content-ltr">To create new Error type (Z50), edit the label and add the necessary keys.</span>]]
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Label''' – This is the main title of the error, which should contain a short but descriptive message. Set the error label on the right-side box titled "About".</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Keys''' – Keys contain additional information about what caused the error. For example, if an input had the wrong format, you might want to inform the user of what was the input content when raising the error. To use them in your implementations, keys should be strings. To create a key, click on the "[+]" icon below "keys", select "String" under "value type", and add a label that describes it appropriately, for example "current input". Once you have all the necessary keys, you can Publish your error type and keep the ID of the newly created object.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Error arguments ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Error arguments correspond to the keys of the Error type, and they should provide additional information to understand the error. Error arguments should always be Strings.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Using Wikifunctions.Error() ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Say that you want an error to be thrown when either your first or your second input are empty. You have already created the error type, and the assigned ZID was <code>Z30005</code>. Your error type has two string keys:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">Input key: contains the key of the failing input</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Input value: contains the current value of the failing input</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
To raise an error in your JavaScript implementation you should do something like this:
</div>
<syntaxhighlight lang="javascript">
function Z30000( Z30000K1, Z30000K2 ) {
if ( trim( Z30000K1 ) === '' ) {
// If the first input is empty, raise error Z30005
// with two string args: [ first input key, first input value ]
Wikifunctions.Error( 'Z30005', [ "Z30000K1", Z30000K1 ] )
}
if ( trim( Z30000K2 ) === '' ) {
// If the second input is empty, raise error Z30005
// with two string args: [ second input key, second input value ]
Wikifunctions.Error( 'Z30005', [ "Z30000K2", Z30000K2 ] )
}
return Z30000K1 + " " + Z30000K2;
}
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
To raise an error in your Python implementation you should do something like this:
</div>
<syntaxhighlight lang="python3">
def Z30000(Z30000K1, Z30000K2):
if Z30000K1.strip() == "":
# If the first input is empty, raise error Z30005
# with two string args: [ first input key, first input value ]
Wikifunctions.Error("Z30005", ["Z30000K1", Z30000K1])
if Z30000K2.strip() == "":
# If the second input is empty, raise error Z30005
# with two string args: [ first input key, first input value ]
Wikifunctions.Error("Z30005", ["Z30000K2", Z30000K2])
return Z30000K1 + " " + Z30000K2
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
Remember that calling <code>Wikifunctions.Error()</code> ends the execution!
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Throwing errors from compositions ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If you are creating a composition implementation, you can throw an error by calling the special function {{Z|Z851}}.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Throw Error function (Z851) ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The {{Z|Z851}} function is similar to the <code>Wikifunctions.Error()</code> method and takes two arguments:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Error type''' – A reference to the Error type you want to raise</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Error parameters''' – A list with the arguments to create your Error, which should also be Strings.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Using Throw Error ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Say you want to modify your composition so that it first checks that the arguments are not empty, and raises an error when it finds an empty one. Then, if none of them are empty, it runs the original composition, which is:
</div>
<syntaxhighlight lang="prolog">
join_with_separator( Z30000K1, Z30000K2, " " )
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
To do this, you need to create conditional paths, for which you can use the {{Z|Z802}} function. Think of it like this:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">If the first argument is empty, throw an error for the first argument</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Else, proceed to check the second argument</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">If the second argument is empty, throw an error for the second argument</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Else, proceed with the success path and return the joint strings with the space separator</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
Or in functional pseudo code:
</div>
<syntaxhighlight lang="prolog">
if (
is_empty_string( Z30000K1 ),
throw_error( Z30005, [ "Z30000K1", Z30000K1 ] ),
if(
is_empty_string( Z30000K2 ),
throw_error( Z30005, [ "Z30000K2", Z30000K2 ] ),
join_with_separator( Z30000K1, Z30000K2, " " )
)
)
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
Let's create this step by step:
</div>
# <span lang="en" dir="ltr" class="mw-content-ltr">Start adding an implementation by clicking on the "+” button in the "Implementations" table from your Function page.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Make sure that the option "composition" under "Implementation" is selected.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Click on the "›” icon or click the "Select Function" link to expand the function details.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Under "function" search and select the outermost function you want to use, which in this case is "if".</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Check the validity of the first argument:</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "condition", click on the "…" button and select "function call"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function", search and select the function "is empty string"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "input", click on the "…" button and select "argument reference"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "key id", select the first input (e.g. "first string")</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">You can now collapse the "condition" function call if you want, by clicking on the down-chevron next to "condition". You should see something like "f(x) is empty string( → first string )"</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Throw error if the condition is true:</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "then", click on the "…" button and select "function call"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function", search and select the function "Throw Error"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "error type", search and select your error type (you can directly input the error ID if you know it, e.g. Z30005)</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "error parameters", add two items by clicking on the "+" button</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">For "Item 1" (offending argument key), set its type to "String" and write the argument identifier (e.g. "first input", or "Z30000K1")</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">For "Item 2" (offending argument value), click on the "…" next to "Item 2" and select "argument reference"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "key id", select the first input (e.g. "first string")</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">You can now collapse the "then" function call if you want, by clicking on the down-chevron next to "then". You should see something like "f(x) Throw Error( Input was the wrong format, Typed list( Object, "first input", → first string ) )"</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Continue to check the second argument if the first was good:</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "else", click on the "…" button and select "function call"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function", search and select the function "if"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Set up "condition" to check the validity of the second argument by following the same process as described in step 5.</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Set up "then" to throw an error for the second argument by following the same process as described in step 6.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Finally, set up the success path:</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to the nested "else", click on the "…" button and select "function call"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function", search and select the successful function, which in this case can be "join strings with separator"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "first string", click on the "…" button and set it to "argument reference", then select "first string"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "second string", click on the "…" button and set it to "argument reference", then select "second string"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "separator" add a space into the text field</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
The resulting function call should look like this:
</div>
[[File:Throw error expanded.png|frame|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Wikifunctions composition using Throw Error function</span>|<span lang="en" dir="ltr" class="mw-content-ltr">Wikifunctions composition using Throw Error function</span>]]
[[File:Throw error collapsed.png|frame|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Wikifunctions composition using Throw Error function, in its collapsed view</span>|<span lang="en" dir="ltr" class="mw-content-ltr">Wikifunctions composition using Throw Error function, in its collapsed view</span>]]
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Handling errors in compositions ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
While it is useful to allow functions to raise expected errors, it is crucial to be able to handle errors in your compositions in order to safely use these functions.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Say you want to create a new function "full name of a person" – we will refer to it with the ZID <code>Z30010</code>. This function should return the full name of a person given a first and last names, but if any of the two fields are empty, it should return the text "Unknown" instead.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
You could create a composition using our example function "Join two strings with a space" or <code>Z30000</code> to generate the name. If any of the inputs are empty, you know that <code>Z30000</code> will throw an error of type <code>Z30005</code>. Using the function {{Z|Z850}} as a wrapper, you can attempt the join operation and intercept a possible error to simply return "Unknown" whenever it occurs.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Try-Catch function (Z850) ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The {{Z|Z850}} function is built-in with ZID <code>Z850</code> and takes three arguments:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Function call''' – The initial function call to run. If nothing goes wrong, the response will be the result of this function call.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Error type''' – An error type to catch in case it is thrown during the execution of the first function call.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Error handler''' – A function call that will be run in case the error specified above is caught during the execution of the initial function call. If that happens, the result of the error handler will be the value returned.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Using Try-Catch ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Once we have all the functions for our composition, we can craft it like this:
</div>
<syntaxhighlight lang="prolog">
try_catch(
join_with_space( Z30010K1, Z30010K2 ),
Z30005,
echo( "Unknown" )
)
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
This means that:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">The "Join two strings with a space" function will be tried with the two inputs and, if everything goes well, the output of this function will be returned</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">If any of the inputs are blank, "Join two strings with a space" with raise an error of type <code>Z30005</code></span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Our {{Z|Z850}} will then detect this error and run the {{Z|Z801}} function to return "Unknown"</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
Let's create this step by step:
</div>
# <span lang="en" dir="ltr" class="mw-content-ltr">Start adding an implementation by clicking on the "+" button in the "Implementations" table from your Function page.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Make sure that the option "composition" under "Implementation" is selected.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Click on the "›” icon or click the "Select Function" link to expand the function details.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Under "function" search and select the outermost function you want to use, which in this case is "Try-Catch".</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Set the main function call:</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under the field where the "Try-Catch" function is selected, next to the "function call" key, click on the "…" button and select "function call"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function" search and select the function "join two strings with space"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "first string", click on the "…" button and select "argument reference", then select the "first name" argument from the dropdown.</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "second string", click on the "…" button and select "argument reference", then select the "second name" argument from the dropdown.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Select the error to catch:</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "error type", search and select "bad string input" – you can search directly by its ZID <code>Z30005</code></span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Set the error handler function call:</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "error handler", click on the "…" button and select "function call"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function", search and select the function "echo"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "input" and "type", search and select the type "String"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Now, under "input", type "Unknown" in the text field</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
The resulting function should look like this:
</div>
[[File:Try catch expanded.png|frame|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Wikifunctions composition using Try-catch function, in expanded mode</span>|<span lang="en" dir="ltr" class="mw-content-ltr">Wikifunctions composition using Try-catch function, in expanded mode</span>]]
[[File:Try catch collapsed.png|frame|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Wikifunctions composition using Try-catch function, in collapsed mode</span>|<span lang="en" dir="ltr" class="mw-content-ltr">Wikifunctions composition using Try-catch function, in collapsed mode</span>]]
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Testing your failure use cases ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
As we introduced in the above section about [[#Practice Test-Driven Development|practicing TDD]], it's important to test not only the most common paths, but also the possible edge cases. It is equally important to test failure behavior. In this section we will give you the tools necessary to test that your function fails with a given set of inputs, and that the error thrown is the expected one.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
To do that, you will need other two system functions:
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Is error type (Z852) ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The {{Z|Z852}} function is built-in with ZID <code>Z852</code> and takes two arguments:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Error''' – An {{Z|Z5}} object, which can be thrown by a failing call. An error instance has a type and a value.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Error type''' – A reference to an {{Z|Z50}} which will be compared to the type of the Error passed as a first argument. If that's the case, the function will return true.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Get error thrown by function call (Z853) ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The {{Z|Z853}} function is built-in with ZID <code>Z853</code> and takes one argument:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Function call''' – A function call which can either return a successful value of any type, or throw an error.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
This function returns a {{Z|Z882}} with a {{Z|Z40}} in first place and an {{Z|Z1}} in the second:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">If the Function call runs successfully and hence does not throw any error, the returned pair will contain False in the first place, and void in the second.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">If the Function call throws an error, the returned pair will contain True in the first place, and the caught error in the second.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
To use this function in your compositions, you might need to use the additional functions:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z821}}, and</span>
* {{Z|Z822}}
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Testing errors ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Say our target function, "Join two strings with a space" or <code>Z30000</code>, throws an error of type <code>Z30005</code> and we want to test this behavior. To do that we need to:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">Throw a failing function call</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Get the error using the function {{Z|Z853}}</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Check that the error is the right type with {{Z|Z852}}</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
Tests have two fields:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Call''' – A function call that will produce an output with the inputs you want to test. This call will return a value.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Result validation''' – A function call that will validate that the value returned by the call above is the expected one. The first argument of this function call will be automatically assigned to take the return value of the first call.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
For step-by-step instructions on how to create tests, see {{ll|Wikifunctions:Introduction#Create_tests}}.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
In our example, we can structure it like this — but this is not the only way!
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The call, which will return an {{Z|Z5}} object:
</div>
<syntaxhighlight lang="prolog">
error = get_second_element_of_typed_list(
get_error_thrown_by(
join_strings_by_whitespace( "", "not empty" )
)
)
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
And the result validation, which will take the {{Z|Z5}} object as its first argument:
</div>
<syntaxhighlight lang="prolog">
is_error_type( error, Z30005 )
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
Let's do this step by step:
</div>
# <span lang="en" dir="ltr" class="mw-content-ltr">Start adding a test by clicking on the "+" button in the "Tests" table from your Function page. The "call" and "result validation" fields already have some functions pre-set, but to test the errors we will need to change them.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">First, let's set the call:</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "call", click the "›" chevron button to expand the function call.</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function", edit the field and search and select the function "Get second element of a typed pair"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Once selected, next to "Typed pair", click on the "…" button and select "function call"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function", search and select the function "Get error thrown by function call"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "function call", click on the "…" button and select "function call"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function", search and select the function "Join two strings with a space" (or by ZID <code>Z30000</code>)</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Now set the inputs so that they cause a failure: at least one of them should be empty.</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">You can now collapse your "call" by clicking again on the down-chevron button if you want!</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Next, let's set the result validation:</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "result validation", click the "›" chevron button to expand the function call.</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function", edit the field and search and select the function "Is error type"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Now you will only be asked to configure the second argument. Under "error type", search and select your <code>Z30005</code> error type.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">And you are done! You can now click the circular arrow in the "Implementations" box and you should see green checks.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
If everything went right, you can now save your test. It should look like this:
</div>
[[File:Get error expanded.png|frame|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Testing a failure using Get error and Is error type functions, in expanded mode</span>|<span lang="en" dir="ltr" class="mw-content-ltr">Testing a failure using Get error and Is error type functions, in expanded mode</span>]]
[[File:Get error collapsed.png|frame|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Testing a failure using Get error and Is error type functions, in collapsed mode</span>|<span lang="en" dir="ltr" class="mw-content-ltr">Testing a failure using Get error and Is error type functions, in collapsed mode</span>]]
<div lang="en" dir="ltr" class="mw-content-ltr">
== Debugging your implementations ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Sometimes things can go wrong. A function might behave differently than expected or a value might not look quite right. Sometimes implementations are really complex and, because they are run in a sandboxed environment, it can seem really difficult to debug. To help understand what's going on inside a function call, Wikifunctions includes a small set of debugging tools.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
These tools don't change the result of a function, but will add extra information to the returned metadata, which you can observe after running the function. You can use <code>Wikifunctions.Debug()</code> from your code implementations or the function {{Z|Z854}} from your compositions.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
In this section you will learn:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">How to add debug messages from both code and composition implementations,</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">how to inspect the metadata manually or via the UI to inspect these logs.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Debugging your code implementations ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
When writing code, both from JavaScript and Python3, you can use <code>Wikifunctions.Debug()</code> to add a message to your debugging log and continue the execution.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
<code>Wikifunctions.Debug()</code> has one parameter, which is generally expected to be a string. However, any other object passed as parameter will get directly converted into a string.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If we want to add debug logs to our code implementations for our "Join two strings with a space" example function, we can do, in JavaScript:
</div>
<syntaxhighlight lang="JavaScript">
function Z30000( Z30000K1, Z30000K2 ) {
if ( trim( Z30000K1 ) === '' ) {
Wikifunctions.Debug( `first input is empty "${ Z30000K1 }"` );
Wikifunctions.Error( 'Z30005', [ "Z30000K1", Z30000K1 ] )
}
if ( trim( Z30000K2 ) === '' ) {
Wikifunctions.Debug( `second input is empty "${ Z30000K2 }"` );
Wikifunctions.Error( 'Z30005', [ "Z30000K2", Z30000K2 ] )
}
Wikifunctions.Debug( "both inputs are fine" );
return Z30000K1 + " " + Z30000K2;
}
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
And the same in your Python3 implementation will be:
</div>
<syntaxhighlight lang="python3">
def Z30000(Z30000K1, Z30000K2):
if Z30000K1.strip() == "":
Wikifunctions.Debug( 'first input is empty "'+Z30000K1+'"' )
Wikifunctions.Error("Z30005", ["Z30000K1", Z30000K1])
if Z30000K2.strip() == "":
Wikifunctions.Debug( 'second input is empty "'+Z30000K2+'"' )
Wikifunctions.Error("Z30005", ["Z30000K2", Z30000K2])
Wikifunctions.Debug( 'both inputs are fine' )
return Z30000K1 + " " + Z30000K2
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
This way, no matter what happens, we will be adding one message to your debugging logs:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">If the function call fails when checking on the first or second input, the result of the execution will be a failure, but it will contain one informative log about what branch caused the failure.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">If the function call succeeds—because both inputs are valid—the function call will return the joined string, but the returned metadata will also contain a debug log.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Debugging your compositions ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
To support debugging compositions, Wikifunctions provides the built-in function {{Z|Z854}}. This function allows you to attach debug messages to the execution of any function call that generates the final output. The debug logs collected during the evaluation are returned as part of the execution metadata, under the <code>executorDebugLogs</code> key.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Add debug log to function call (Z854) ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The {{Z|Z854}} function is built-in with ZID <code>Z854</code> and takes two arguments:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Function call''' – Any composition you want to execute.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Debug log''' – A string message that will be recorded if the given function call is evaluated.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
When the wrapped function call runs, the provided message is added to the execution logs. If that function call is not executed, or its execution is not part of the final output, its debug log will not appear in the final result metadata.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
You will benefit from this built-in if you want to observe:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">Which branch of a conditional was executed, or</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">the order of evaluation in a composition.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Using Add debug log to function call ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Say that you want to add debug logs to our example function "Join two strings with a space" or <code>Z30000</code>, so that different messages are added to the different possible outcomes. You could use our debugging builtin like this:
</div>
<syntaxhighlight lang="prolog">
if (
is_empty_string( Z30000K1 ),
add_debug_log( throw_error( Z30005, ... ), 'failed on first input' )
if(
is_empty_string( Z30000K2 ),
add_debug_log( throw_error( Z30005, ... ), 'failed on second input' ),
add_debug_log(
join_with_separator( Z30000K1, Z30000K2, " " ),
'both inputs are ok!'
)
)
)
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
This way,
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">when called with an empty first input, the function will return a failed response, and the metadata will contain an <code>executorDebugLogs</code> entry with the "failed on first input" log.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">When called with an empty second input, the call will also fail, but the logged message will be "failed on second input"</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">When called with valid inputs, the function will return a successful response, and additionally the metadata will contain "both inputs are ok" in its <code>executorDebugLogs</code> key.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
This is the way this composition would look:
</div>
[[File:Add debug log expanded.png|frame|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Composition implementation using Add debug logs to log all possible execution paths</span>|<span lang="en" dir="ltr" class="mw-content-ltr">Composition implementation using Add debug logs to log all possible execution paths</span>]]
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Accessing execution debug logs ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Whether your execution logs are added via <code>Wikifunctions.Debug()</code> or via the {{Z|Z854}} built-in function, they are returned as part of the response metadata. To see the logs, once you run your function, click on the "Details" button that appears at the bottom of the "Result" section.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The error and debug information will appear at the top of the "Details" dialog.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
This is what you would see when running the composition from our previous example with valid and invalid inputs:
</div>
{| class="wikitable"
| [[File:Execution logs success.png|frameless|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Function metadata dialog for a successful execution with debug logs</span>]]
| [[File:Execution logs failure.png|frameless|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Function metadata dialog for a failed execution with debug logs</span>]]
|-
| <span lang="en" dir="ltr" class="mw-content-ltr">Function metadata dialog for a successful execution: shows no errors, but displays the successful execution log: ''"both inputs are ok!"''</span>
| <span lang="en" dir="ltr" class="mw-content-ltr">Function metadata dialog for a failed execution: shows the error information, and the additional execution log for the first failure branch: ''"failed on first input"''</span>
|}
[[Category:How to create implementations| {{#translation:}}]]
1voblfqend2yytpgkl7rbs3amoe938c
Wikifunctions:Report a technical problem/lb
4
30820
296966
279546
2026-08-06T18:03:10Z
FuzzyBot
207
Updating to match new version of source page
296966
wikitext
text/x-wiki
<languages/>
{{shortcut|[[WF:BUG]]}}
{{see also
|Special:MyLanguage/WF:Status|l1=WF:Status
|Special:MyLanguage/WF:Feature_petitions|l2=WF:Feature petitions
}}
<div lang="en" dir="ltr" class="mw-content-ltr">
If you have found a bug in Wikifunctions, or you have a feature request for Wikifunctions, please let us know!
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Scope ==
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Bug''' - a problem that is producing incorrect or unexpected results on Wikifunctions. Note that problems within Functions themselves are not considered as a bug in this context.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Feature request''' - an idea that the development team can add to Wikifunctions to make it even more awesome.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
Do you need help with something else?
</div>
: <span lang="en" dir="ltr" class="mw-content-ltr">The following are '''out of scope''' of the work of the Wikifunctions development team:</span>
:* <span lang="en" dir="ltr" class="mw-content-ltr">The '''content of individual Functions''' – Discuss those on the talkpage of the Function itself, or ask for help at [[Wikifunctions:Project chat]] or in the channels listed below; if you think a function is missing, see [[Wikifunctions:Suggest a function]]</span>
:* <span lang="en" dir="ltr" class="mw-content-ltr">The '''Wikifunctions project's policies''' – Ask about those at [[Wikifunctions:Project chat]] or in the channels listed below</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Find existing bugs and feature requests ==
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">See '''[[Wikifunctions:Status]]''' for a quick summary of high-level issues.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">You can '''[[phab:maniphest/query/UzvNRqsdnymk/|search the Phabricator]] listing of open tasks''' to see if your bug or feature idea is already documented.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Discuss with others ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
You can ask questions about possible bugs or feature ideas at a few locations. This may be helpful if you are unsure how to clearly describe the bug or feature idea:
</div>
* <span class="mw-translate-fuzzy">D'Diskussiounssäit ass hei.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">The main chat on [https://t.me/Wikifunctions Telegram] or IRC {{channel|wikipedia-abstract}} (bridged together) ([https://wm-bot.wmcloud.org/logs/%23wikipedia-abstract/ logs], [https://wm-bot.wmflabs.org/logs/%23wikipedia-abstract/ old logs])</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">The developer chat on [https://t.me/abstract_wikipedia_tech Telegram] or IRC {{channel|wikipedia-abstract-tech}} (bridged together) ([https://wm-bot.wmcloud.org/logs/%23wikipedia-abstract-tech/ logs])</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
== File a task in Phabricator ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If you are familiar with Phabricator, you can search and file tasks directly.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If you are not yet familiar: Phabricator is the web-based development collaboration tool mostly used to manage MediaWiki software projects including Wikifunctions. A short summary about Phabricator for newcomers, including tutorial videos, is on MediaWiki's wiki at [[mw:Special:MyLanguage/Phabricator/Help|mw:Phabricator/Help]].
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">You can '''[[phab:maniphest/query/UzvNRqsdnymk/|search]] the listing of open tasks''' to see if your bug or feature idea is already documented.</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">The existing tasks are collected with the '''[[phab:tag/abstract wikipedia team|#abstract wikipedia team]] tag'''.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">You can '''[https://phabricator.wikimedia.org/maniphest/task/edit/form/43/?projects=abstract_wikipedia file a new task]'''. Please always include:</span>
** Beispiller
** <span lang="en" dir="ltr" class="mw-content-ltr">Any relevant links</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">For bugs: The exact steps that produced the bug, so that the team can reproduce and diagnose it.</span>
<span id="Languages"></span>
== Sproochen ==
<div lang="en" dir="ltr" class="mw-content-ltr">
The development team understands a limited number of languages – but you are free to report issues in any language that you're comfortable with.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If possible, please provide a summary in English when creating a phabricator task, or ask someone to help you.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Follow-up ==
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">The locations above are followed by the Wikifunctions development team, as well as community members. The time to get a reply varies depending on the nature or complexity of the topic, etc. However, in general, you can get an answer within 2 workdays. Please let us know if we missed something, as life can get distracting!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Not all problems can be solved immediately: depending on the impact, priority, etc. some bugs can be triaged to low priority. You may follow the status of your report on the relevant linked phabricator task.</span>
[[Category:Report a technical problem{{#translation:}}]]
sm22qthhpn69l3dktp2k9a24tdz0p96
Template:Documentation subpage/lb
10
31046
297014
106240
2026-08-06T18:04:33Z
FuzzyBot
207
Updating to match new version of source page
297014
wikitext
text/x-wiki
<noinclude><languages/></noinclude><includeonly>{{#if:{{IsDocSubpage|override={{{override|doc}}}}}
| <!--doc subpage--></includeonly>{{#ifeq:{{{doc-notice|show}}}|show
| {{Ombox|type=notice|image=[[File:OOjs UI icon articles-ltr.svg|35px|link=|class=skin-invert-image]]
|text='''Dëst ass eng [[Special:MyLanguage/Help:Template documentation|Dokumentatiouns]][[mw:Special:MyLanguage/Help:Subpages|ënnersäit]] fir {{#if:{{{1|}}}
| {{{1}}}
| [[:{{SUBJECTSPACE}}:{{BASEPAGENAME}}]]
}}.'''<br/> <div lang="en" dir="ltr" class="mw-content-ltr">
It contains usage information, [[Special:MyLanguage/Help:Categorization|categories]], and other content that is not part of the original<!--
--> {{#if: {{{text2|}}}
| {{{text2|}}}
| {{#if: {{{text1|}}}
| {{{text1|}}}
| {{#ifeq: {{SUBJECTSPACE}} | {{ns:User}}
| {{lc:{{SUBJECTSPACE}}}} template page
| {{#if: {{SUBJECTSPACE}}
| {{lc:{{SUBJECTSPACE}}}} page
| article
}}
}}
}}
}}.
</div>
}}
<!--If not on a doc subpage, do nothing-->}}{{DEFAULTSORT:{{{defaultsort|{{PAGENAME}}}}}}}{{#if: {{{inhibit|}}}
| <!--Skip-->
| <includeonly>{{#ifexist: {{NAMESPACE}}:{{BASEPAGENAME}}
| [[Category:{{#switch: {{SUBJECTSPACE}}
|Template=Template
|Module=Module
|User=User
|#default=Template
}} documentation pages{{#translation:}}]]
| [[Category:Documentation subpages without corresponding pages{{#translation:}}]]
}}</includeonly>
}}<includeonly>
}}</includeonly><noinclude>{{Documentation}}[[Category:Template documentation]]<!--Add categories and interwikis to the /doc subpage, not here!--></noinclude>
htnwnxwtrd12ubxeollemgc8iiapo1g
Wikifunctions:Report a technical problem/tg
4
31092
296976
279555
2026-08-06T18:03:14Z
FuzzyBot
207
Updating to match new version of source page
296976
wikitext
text/x-wiki
<languages/>
{{shortcut|[[WF:BUG]]}}
{{see also
|Special:MyLanguage/WF:Status|l1=WF:Status
|Special:MyLanguage/WF:Feature_petitions|l2=WF:Feature petitions
}}
<div lang="en" dir="ltr" class="mw-content-ltr">
If you have found a bug in Wikifunctions, or you have a feature request for Wikifunctions, please let us know!
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Scope ==
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Bug''' - a problem that is producing incorrect or unexpected results on Wikifunctions. Note that problems within Functions themselves are not considered as a bug in this context.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Feature request''' - an idea that the development team can add to Wikifunctions to make it even more awesome.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
Do you need help with something else?
</div>
: <span lang="en" dir="ltr" class="mw-content-ltr">The following are '''out of scope''' of the work of the Wikifunctions development team:</span>
:* <span lang="en" dir="ltr" class="mw-content-ltr">The '''content of individual Functions''' – Discuss those on the talkpage of the Function itself, or ask for help at [[Wikifunctions:Project chat]] or in the channels listed below; if you think a function is missing, see [[Wikifunctions:Suggest a function]]</span>
:* <span lang="en" dir="ltr" class="mw-content-ltr">The '''Wikifunctions project's policies''' – Ask about those at [[Wikifunctions:Project chat]] or in the channels listed below</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Find existing bugs and feature requests ==
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">See '''[[Wikifunctions:Status]]''' for a quick summary of high-level issues.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">You can '''[[phab:maniphest/query/UzvNRqsdnymk/|search the Phabricator]] listing of open tasks''' to see if your bug or feature idea is already documented.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Discuss with others ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
You can ask questions about possible bugs or feature ideas at a few locations. This may be helpful if you are unsure how to clearly describe the bug or feature idea:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">The discussion page [[Wikifunctions:Project chat|here]].</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">The main chat on [https://t.me/Wikifunctions Telegram] or IRC {{channel|wikipedia-abstract}} (bridged together) ([https://wm-bot.wmcloud.org/logs/%23wikipedia-abstract/ logs], [https://wm-bot.wmflabs.org/logs/%23wikipedia-abstract/ old logs])</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">The developer chat on [https://t.me/abstract_wikipedia_tech Telegram] or IRC {{channel|wikipedia-abstract-tech}} (bridged together) ([https://wm-bot.wmcloud.org/logs/%23wikipedia-abstract-tech/ logs])</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
== File a task in Phabricator ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If you are familiar with Phabricator, you can search and file tasks directly.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If you are not yet familiar: Phabricator is the web-based development collaboration tool mostly used to manage MediaWiki software projects including Wikifunctions. A short summary about Phabricator for newcomers, including tutorial videos, is on MediaWiki's wiki at [[mw:Special:MyLanguage/Phabricator/Help|mw:Phabricator/Help]].
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">You can '''[[phab:maniphest/query/UzvNRqsdnymk/|search]] the listing of open tasks''' to see if your bug or feature idea is already documented.</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">The existing tasks are collected with the '''[[phab:tag/abstract wikipedia team|#abstract wikipedia team]] tag'''.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">You can '''[https://phabricator.wikimedia.org/maniphest/task/edit/form/43/?projects=abstract_wikipedia file a new task]'''. Please always include:</span>
** Намунаҳо
** <span lang="en" dir="ltr" class="mw-content-ltr">Any relevant links</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">For bugs: The exact steps that produced the bug, so that the team can reproduce and diagnose it.</span>
<span id="Languages"></span>
== Забонҳо ==
<div lang="en" dir="ltr" class="mw-content-ltr">
The development team understands a limited number of languages – but you are free to report issues in any language that you're comfortable with.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If possible, please provide a summary in English when creating a phabricator task, or ask someone to help you.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Follow-up ==
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">The locations above are followed by the Wikifunctions development team, as well as community members. The time to get a reply varies depending on the nature or complexity of the topic, etc. However, in general, you can get an answer within 2 workdays. Please let us know if we missed something, as life can get distracting!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Not all problems can be solved immediately: depending on the impact, priority, etc. some bugs can be triaged to low priority. You may follow the status of your report on the relevant linked phabricator task.</span>
[[Category:Report a technical problem{{#translation:}}]]
s801q7gc264llhlkolb4olkx7v6d821
Wikifunctions:Status updates/lb
4
31803
296993
295120
2026-08-06T18:03:40Z
FuzzyBot
207
Updating to match new version of source page
296993
wikitext
text/x-wiki
<languages/>
{{shortcut|WF:SU}}{{notice|1=<span lang="en" dir="ltr" class="mw-content-ltr">'''[[:m:Global message delivery/Targets/Wikifunctions & Abstract Wikipedia|Subscribe]]''' to receive short on-wiki MassMessage notifications about each new issue</span>}}
{{Wikifunctions updates
| prevlabel = Viregen Update
| prev = 2024-02-01
| nextlabel = Lescht Update
| next = 2026-08-05
}}
<div lang="en" dir="ltr" class="mw-content-ltr">
A lot is happening around Wikifunctions and Abstract Wikipedia. This is the page where our updates are posted, including the [[Special:MyLanguage/WF:function of the Week|function of the Week]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
You can also subscribe to the [[:m:Global message delivery/Targets/Wikifunctions & Abstract Wikipedia|on-wiki newsletter]] to have them delivered to your talk page or to your project's village pump.
</div>
<inputbox>
type=fulltext
prefix={{NAMESPACE}}:{{PAGENAME}}/
break=no
width=30
searchbuttonlabel={{int:Search}}
placeholder=Search all status updates
</inputbox>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Newsletters ==
</div>
<!--<nowiki> Newsletter entry template:
* <translate><tvar name="1">{{Status updates|2026-0?-??}}</tvar>: Title</translate>
NOTE: Remember to also update the "next =" date at the top of this page.
</nowiki>-->
=== 2026 ===
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-08-05}}: An apple is a fruit</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-07-29}}: Abstract Wikipedia at Wikimania</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-07-16}}: Beyond syntactic tables</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-07-08}}: Moving toward our first Abstract Wikipedia integration milestone</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-07-01}}: Integration on test wiki and annual plan</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-06-26}}: Working on Functions, together</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-06-19}}: The or not the, this is (the?) question</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-06-12}}: Improved loading and display of Test results</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-06-05}}: The illustrated encyclopaedia</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-05-30}}: Looking back and forward</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-05-23}}: Annual plan 2026-2027</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-05-15}}: A higher meaning</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-05-08}}: References from Wikidata are now available</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-05-02}}: Request for input: what should we count for Abstract Wikipedia?</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-04-25}}: The Foundation's search for the perfect language</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-04-16}}: Milestones; Some major issues hopefully resolved</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-04-10}}: Community proposals for capturing meaning</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-04-02}}: Request for Discussion: Syntactic tables</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-03-26}}: First few days of Abstract Wikipedia Beta; Status of Composition Language v2</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-03-19}}: Abstract Wikipedia in Beta</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-03-11}}: A new composition language</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-03-06}}: Citations and Copy and Paste</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-02-26}}: Graceful overrides and fallbacks</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-02-20}}: A sneak preview of Abstract Wikipedia</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-02-13}}: Finishing each other sentences: Starting things; Offsite in Istanbul</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-01-29}}: Integrating Abstract Wikipedia</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-01-22}}: Quarterly plan for January–March 2026</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-01-15}}: 25 years of Wikipedia</span>
=== 2025 ===
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-12-18}}: We wish you a happy new Gregorian year!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-12-11}}: How to write better error messages</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-12-04}}: And the name is Abstract Wikipedia</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-11-27}}: Vote on the new wiki name!; Finishing each other’s sentences</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-11-20}}: Second round of voting for naming the wiki with language-independent content; Sharing function calls</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-11-13}}: Getting ready for second round of voting for naming the wiki with abstract content; Rewriting the backend: Why Rust?</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-11-05}}: First round of voting for naming the wiki for abstract content closed; Calling for Wiktionary functions; Embedded Wikifunctions on Bengali Wikipedia and seven more Wiktionaries</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-10-29}}: Round 1 of “abstract content wiki” naming vote ending Monday; An example of short descriptions</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-10-23}}: Welcome Zaree and Laura! Naming contest round 1 kicked off</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-10-15}}: Kicking Off the Naming Contest for Abstract Wikipedia; Visualizing functions</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-10-08}}: Decision on location for abstract content and Quarterly Planning for October–December</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-10-03}}: Rich text now available in embedded function calls on 148 Wiktionaries and Incubator</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-09-26}}: Accessing qualifiers in Wikidata statements</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-09-19}}: Wikifunctions available on 123 Wiktionary languages</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-09-12}}: More than 3,000 functions on Wikifunctions</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-09-07}}: Copying function calls from one Wikipedia to another</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-08-29}}: Accessing Wikidata items now possible from embedded function calls; Wikifunctions available on 65 Wikitionaries</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-08-22}}: Recording of Wikimania session: Wikifunctions is coming soon to a wiki near you!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-08-01}}: Wikimania 2025 is coming soon!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-07-26}}: “Wikipedia is an encyclopedia”; Two years of Wikifunctions</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-07-19}}: Wikidata-based enumerations are here</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-07-10}}: Length limits on labels and descriptions</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-07-04}}: Coverage of 1298</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-06-27}}: How many people are needed to write an encyclopedia?</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-06-21}}: Quarterly Planning for July–September 2025</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-06-15}}: Closing the consultation about the location of Abstract Content</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-06-06}}: Where will Abstract Content go?</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-05-29}}: Rolling out to five Wiktionaries; Calculating with today's date</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-05-23}}: Ongoing consultation about the Location for Abstract Content</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-05-15}}: Location of Abstract Content</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-05-09}}: Abstract Wikipedia and the Wikimedia AI Strategy</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-04-30}}: Abstract Wikipedia is a MacArthur 100&Change finalist</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-04-25}}: Welcome, Gregory!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-04-16}}: Wikifunctions integrated in Dagbani - and Wikifunctions; and the date of Easter</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-04-11}}: Quarter in review</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-04-05}}: Quarterly Planning for April–June 2025; We are looking for a Senior Product Manager</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-03-28}}: It's about time</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-03-20}}: Wikidata-based simple enumerations</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-03-15}}: Upcoming NLG meeting, Recent Changes in the software</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-03-07}}: Recent Changes in the software, Recording of Volunteer’s Corner, and talks in London</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-02-26}}: From things to words</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-02-19}}: A proposal for types per language and part of speech</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-02-13}}: Restricting the World, redux</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-02-06}}: Invitation to the Natural Language Generation Special Interest Group</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-01-29}}: With 2000 Functions into the new year: time for stats</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-01-22}}: Welcome, David! Naming conventions recommendations</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-01-15}}: Happy Wikipedia day! Quarterly planning</span>
=== 2024 ===
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-12-19}}: Function of the Week: age; Intros for year articles; New Type: Floating-point number</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-12-12}}: Sketching a path to Abstract Wikipedia; Team offsite in Lisbon; and much more</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-11-27}}: WordGraph release; New Special page: list functions by tests; new type for day of the year, and much more</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-11-21}}: New special page for missing labels, new type for Gregorian years, and much more</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-11-13}}: New Type: Rational number; Documentation on Wikidata-based types; and more</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-11-07}}: The Dream of a Universal Language</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-11-01}}: Rewriting the backend</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-10-25}}: Our goal for this Quarter: Agreement</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-10-17}}: What could abstract content look like?</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-10-11}}: Wikidata Lexemes in Wikifunctions are coming soon</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-10-02}}: Focus topic: Food</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-09-26}}: Quarterly planning for October–December 2024; Presentation at Celtic Knot tomorrow</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-09-20}}: Introducing focus topic areas</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-09-13}}: Dagbani Wikipedia will be our first wiki for Wikifunctions integration</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-09-06}}: Volunteer's corner and other updates</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-08-29}}: Limits on Name and Description Lengths</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-08-23}}: WasmEdge, Now 300ms Less Edgy</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-08-16}}: Wikimania 2024 edition</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-08-02}}: Revamping our 'About' widget</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-07-26}}: Wikimania 2024 coming soon!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-07-18}}: Research report on integrating Wikifunctions from Wikipedia</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-07-10}}: Type proposals for accessing Lexemes</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-07-03}}: Quarterly planning</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-06-26}}: Welcome, Daphne!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-06-20}}: New Type: Integers</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-06-13}}: New Type: Igbo calendar months</span>
* {{Status updates|2024-06-06}}: Neien Typ: Virzeechen
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-05-30}}: A single singular or a plurality of plurals?</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-05-22}}: New Type: Gregorian calendar months</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-05-15}}: Call for Functions: Spell out the number!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-05-10}}: Flagship type for enumerations: Months of the Gregorian calendar</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-05-03}}: Team meeting and Quarterly plan</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-04-19}}: Welcome, Sharvani!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-04-11}}: New API for calling Wikifunctions and celebrating 1000 functions</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-04-03}}: Product Update on Diff and Upcoming API Improvements</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-03-28}}: Creating tests is now much easier!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-03-21}}: On the way to internationalizing numbers</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-03-13}}: On identity</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-03-07}}: Introducing our second new type: Natural numbers</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-02-28}}: Type proposal for natural numbers</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-02-22}}: Updating the function model</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-02-14}}: Fix-it week</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-02-07}}: Quarterly planning. Thank you, Nick! Function of the Week: is permutation</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-02-01}}: The Igbo Imperative!</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Before February 2024 ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
All updates from this period are [[:m:Special:MyLanguage/Abstract Wikipedia/Updates|available on Meta-Wiki]].
</div>
[[Category:Status updates{{#translation:}}| ]]
ou77xr8xsle3t21xufumkybif4j8fcz
Wikifunctions:Status updates/tr
4
32179
297000
295127
2026-08-06T18:03:45Z
FuzzyBot
207
Updating to match new version of source page
297000
wikitext
text/x-wiki
<languages/>
{{shortcut|WF:SU}}{{notice|1=<span lang="en" dir="ltr" class="mw-content-ltr">'''[[:m:Global message delivery/Targets/Wikifunctions & Abstract Wikipedia|Subscribe]]''' to receive short on-wiki MassMessage notifications about each new issue</span>}}
{{Wikifunctions updates
| prevlabel = Önceki güncelleme
| prev = 2024-02-01
| nextlabel = Son güncelleme
| next = 2026-08-05
}}
<div lang="en" dir="ltr" class="mw-content-ltr">
A lot is happening around Wikifunctions and Abstract Wikipedia. This is the page where our updates are posted, including the [[Special:MyLanguage/WF:function of the Week|function of the Week]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
You can also subscribe to the [[:m:Global message delivery/Targets/Wikifunctions & Abstract Wikipedia|on-wiki newsletter]] to have them delivered to your talk page or to your project's village pump.
</div>
<inputbox>
type=fulltext
prefix={{NAMESPACE}}:{{PAGENAME}}/
break=no
width=30
searchbuttonlabel={{int:Search}}
placeholder=Search all status updates
</inputbox>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Newsletters ==
</div>
<!--<nowiki> Newsletter entry template:
* <translate><tvar name="1">{{Status updates|2026-0?-??}}</tvar>: Title</translate>
NOTE: Remember to also update the "next =" date at the top of this page.
</nowiki>-->
=== 2026 ===
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-08-05}}: An apple is a fruit</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-07-29}}: Abstract Wikipedia at Wikimania</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-07-16}}: Beyond syntactic tables</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-07-08}}: Moving toward our first Abstract Wikipedia integration milestone</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-07-01}}: Integration on test wiki and annual plan</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-06-26}}: Working on Functions, together</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-06-19}}: The or not the, this is (the?) question</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-06-12}}: Improved loading and display of Test results</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-06-05}}: The illustrated encyclopaedia</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-05-30}}: Looking back and forward</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-05-23}}: Annual plan 2026-2027</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-05-15}}: A higher meaning</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-05-08}}: References from Wikidata are now available</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-05-02}}: Request for input: what should we count for Abstract Wikipedia?</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-04-25}}: The Foundation's search for the perfect language</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-04-16}}: Milestones; Some major issues hopefully resolved</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-04-10}}: Community proposals for capturing meaning</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-04-02}}: Request for Discussion: Syntactic tables</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-03-26}}: First few days of Abstract Wikipedia Beta; Status of Composition Language v2</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-03-19}}: Abstract Wikipedia in Beta</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-03-11}}: A new composition language</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-03-06}}: Citations and Copy and Paste</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-02-26}}: Graceful overrides and fallbacks</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-02-20}}: A sneak preview of Abstract Wikipedia</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-02-13}}: Finishing each other sentences: Starting things; Offsite in Istanbul</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-01-29}}: Integrating Abstract Wikipedia</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-01-22}}: Quarterly plan for January–March 2026</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-01-15}}: 25 years of Wikipedia</span>
=== 2025 ===
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-12-18}}: We wish you a happy new Gregorian year!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-12-11}}: How to write better error messages</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-12-04}}: And the name is Abstract Wikipedia</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-11-27}}: Vote on the new wiki name!; Finishing each other’s sentences</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-11-20}}: Second round of voting for naming the wiki with language-independent content; Sharing function calls</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-11-13}}: Getting ready for second round of voting for naming the wiki with abstract content; Rewriting the backend: Why Rust?</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-11-05}}: First round of voting for naming the wiki for abstract content closed; Calling for Wiktionary functions; Embedded Wikifunctions on Bengali Wikipedia and seven more Wiktionaries</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-10-29}}: Round 1 of “abstract content wiki” naming vote ending Monday; An example of short descriptions</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-10-23}}: Welcome Zaree and Laura! Naming contest round 1 kicked off</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-10-15}}: Kicking Off the Naming Contest for Abstract Wikipedia; Visualizing functions</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-10-08}}: Decision on location for abstract content and Quarterly Planning for October–December</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-10-03}}: Rich text now available in embedded function calls on 148 Wiktionaries and Incubator</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-09-26}}: Accessing qualifiers in Wikidata statements</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-09-19}}: Wikifunctions available on 123 Wiktionary languages</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-09-12}}: More than 3,000 functions on Wikifunctions</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-09-07}}: Copying function calls from one Wikipedia to another</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-08-29}}: Accessing Wikidata items now possible from embedded function calls; Wikifunctions available on 65 Wikitionaries</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-08-22}}: Recording of Wikimania session: Wikifunctions is coming soon to a wiki near you!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-08-01}}: Wikimania 2025 is coming soon!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-07-26}}: “Wikipedia is an encyclopedia”; Two years of Wikifunctions</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-07-19}}: Wikidata-based enumerations are here</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-07-10}}: Length limits on labels and descriptions</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-07-04}}: Coverage of 1298</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-06-27}}: How many people are needed to write an encyclopedia?</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-06-21}}: Quarterly Planning for July–September 2025</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-06-15}}: Closing the consultation about the location of Abstract Content</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-06-06}}: Where will Abstract Content go?</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-05-29}}: Rolling out to five Wiktionaries; Calculating with today's date</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-05-23}}: Ongoing consultation about the Location for Abstract Content</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-05-15}}: Location of Abstract Content</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-05-09}}: Abstract Wikipedia and the Wikimedia AI Strategy</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-04-30}}: Abstract Wikipedia is a MacArthur 100&Change finalist</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-04-25}}: Welcome, Gregory!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-04-16}}: Wikifunctions integrated in Dagbani - and Wikifunctions; and the date of Easter</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-04-11}}: Quarter in review</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-04-05}}: Quarterly Planning for April–June 2025; We are looking for a Senior Product Manager</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-03-28}}: It's about time</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-03-20}}: Wikidata-based simple enumerations</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-03-15}}: Upcoming NLG meeting, Recent Changes in the software</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-03-07}}: Recent Changes in the software, Recording of Volunteer’s Corner, and talks in London</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-02-26}}: From things to words</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-02-19}}: A proposal for types per language and part of speech</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-02-13}}: Restricting the World, redux</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-02-06}}: Invitation to the Natural Language Generation Special Interest Group</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-01-29}}: With 2000 Functions into the new year: time for stats</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-01-22}}: Welcome, David! Naming conventions recommendations</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-01-15}}: Happy Wikipedia day! Quarterly planning</span>
=== 2024 ===
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-12-19}}: Function of the Week: age; Intros for year articles; New Type: Floating-point number</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-12-12}}: Sketching a path to Abstract Wikipedia; Team offsite in Lisbon; and much more</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-11-27}}: WordGraph release; New Special page: list functions by tests; new type for day of the year, and much more</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-11-21}}: New special page for missing labels, new type for Gregorian years, and much more</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-11-13}}: New Type: Rational number; Documentation on Wikidata-based types; and more</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-11-07}}: The Dream of a Universal Language</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-11-01}}: Rewriting the backend</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-10-25}}: Our goal for this Quarter: Agreement</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-10-17}}: What could abstract content look like?</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-10-11}}: Wikidata Lexemes in Wikifunctions are coming soon</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-10-02}}: Focus topic: Food</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-09-26}}: Quarterly planning for October–December 2024; Presentation at Celtic Knot tomorrow</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-09-20}}: Introducing focus topic areas</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-09-13}}: Dagbani Wikipedia will be our first wiki for Wikifunctions integration</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-09-06}}: Volunteer's corner and other updates</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-08-29}}: Limits on Name and Description Lengths</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-08-23}}: WasmEdge, Now 300ms Less Edgy</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-08-16}}: Wikimania 2024 edition</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-08-02}}: Revamping our 'About' widget</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-07-26}}: Wikimania 2024 coming soon!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-07-18}}: Research report on integrating Wikifunctions from Wikipedia</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-07-10}}: Type proposals for accessing Lexemes</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-07-03}}: Quarterly planning</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-06-26}}: Welcome, Daphne!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-06-20}}: New Type: Integers</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-06-13}}: New Type: Igbo calendar months</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-06-06}}: New Type: Sign</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-05-30}}: A single singular or a plurality of plurals?</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-05-22}}: New Type: Gregorian calendar months</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-05-15}}: Call for Functions: Spell out the number!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-05-10}}: Flagship type for enumerations: Months of the Gregorian calendar</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-05-03}}: Team meeting and Quarterly plan</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-04-19}}: Welcome, Sharvani!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-04-11}}: New API for calling Wikifunctions and celebrating 1000 functions</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-04-03}}: Product Update on Diff and Upcoming API Improvements</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-03-28}}: Creating tests is now much easier!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-03-21}}: On the way to internationalizing numbers</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-03-13}}: On identity</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-03-07}}: Introducing our second new type: Natural numbers</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-02-28}}: Type proposal for natural numbers</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-02-22}}: Updating the function model</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-02-14}}: Fix-it week</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-02-07}}: Quarterly planning. Thank you, Nick! Function of the Week: is permutation</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-02-01}}: The Igbo Imperative!</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Before February 2024 ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
All updates from this period are [[:m:Special:MyLanguage/Abstract Wikipedia/Updates|available on Meta-Wiki]].
</div>
[[Category:Status updates{{#translation:}}| ]]
oa42tehrw2ymvwwx4ypgbxd6nuxi5ds
Wikifunctions:Design/en
4
33134
296891
209338
2026-08-06T18:00:03Z
FuzzyBot
207
Updating to match new version of source page
296891
wikitext
text/x-wiki
<languages/>
{{see also
|Special:MyLanguage/WF:Status|l1=WF:Status
|Special:MyLanguage/WF:Feature_petitions|l2=WF:Feature petitions
}}
This is a page where we'll list the activities of the team regarding design improvements to the website.
== Current design improvements ==
* [[Wikifunctions:Design/Lexeme Sense Selection UI|Lexeme Sense Selection UI]]
* [[Special:MyLanguage/Wikifunctions:Design/Naming conventions recommendations|Naming conventions recommendations]]
== Implemented design improvements ==
* [[Special:MyLanguage/Wikifunctions:Design/About widget improvements|About widget improvements]]
[[Category:Project concept{{#translation:}}]]
rc32y3aa8mzcb1exkmq3zup1rj2q4fy
Wikifunctions:Cardinal numbers/en
4
33239
296874
261555
2026-08-06T17:59:43Z
FuzzyBot
207
Updating to match new version of source page
296874
wikitext
text/x-wiki
<languages/>
{{Move|Wikifunctions:Catalogue/Natural language operations/Cardinal numbers|reason=This page is a list of functions, but is outside the catalogue}}
We are looking to have functions to create the names of numbers in many different languages. The [[Special:MyLanguage/Wikifunctions:Status updates/2024-05-15|newsletter from 15 May 2024]] made a Call for Functions!
On this page, we collect and list the existing functions and related objects in order to coordinate the work.
The functions take as input a [[Z13518|natural number]] and return a [[Z6|string]]. There can be more than one function per language.
== Languages covered ==
There are {{FORMATNUM:27}} so far.
{| class="wikitable sortable"
|+ functions by [[Special:ListObjectsByType/Z60|language]]
|-
! Language !! Function !! Tested !! Implemented !! Planning
|-
| {{z|Z1002}} || {{z|Z13587}} || ✅ || ✅ || [[WF:human languages/Z1002#natural number|WF:HL]]
|-
| {{z|Z1004}} || {{z|Z16093}} || ✅ || ✅ || [[WF:human languages/Z1004#natural number|WF:HL]]
|-
| {{z|Z1011}} || {{z|Z16150}} || ✅ || ✅ || [[WF:human languages/Z1011#natural number|WF:HL]]
|-
| {{z|Z1014}} || {{z|Z16053}} || ✅ || ✅ || [[WF:human languages/Z1014#natural number|WF:HL]]
|-
| {{z|Z1025}} || {{z|Z15965}} || ✅ || ✅ || [[WF:human languages/Z1025#natural number|WF:HL]]
|-
| {{z|Z1045}} || {{z|Z16172}} || ✅ || ✅ || [[WF:human languages/Z1045#natural number|WF:HL]]
|-
| {{z|Z1062}} || {{z|Z32780}} || ✅ || ⛓️💥 || [[WF:human languages/Z1062#natural number|WF:HL]]
|-
| {{z|Z1146}} || {{z|Z16163}} || ✅ || ✅ || [[WF:human languages/Z1146#natural number|WF:HL]]
|-
| {{z|Z1272}} || {{z|Z16085}} || ✅ || ✅ || [[WF:human languages/Z1272#natural number|WF:HL]]
|-
| {{z|Z1332}} || {{z|Z15953}} || ✅ || ✅ || [[WF:human languages/Z1332#natural number|WF:HL]]
|-
| {{z|Z1430}} || {{z|Z15963}} || ✅ || ✅ || [[WF:human languages/Z1430#natural number|WF:HL]]
|-
| {{z|Z1531}} || {{z|Z15567}} || ✅ || ✅ || [[WF:human languages/Z1531#natural number|WF:HL]]
|-
| {{z|Z1534}} || {{z|Z16185}} || ✅ || ✅ || [[WF:human languages/Z1534#natural number|WF:HL]]
|-
| {{z|Z1592}} || {{z|Z16008}}<br>{{z|Z37749}} || ✅ || ✅ || [[WF:human languages/Z1592#natural number|WF:HL]]
|-
| {{z|Z1624}} || {{z|Z16184}} || ✅ || ✅ || [[WF:human languages/Z1624#natural number|WF:HL]]
|-
| {{z|Z1882}} || {{z|Z16313}} || ✅ || ❌ || [[WF:human languages/Z1882#natural number|WF:HL]]
|-
| {{z|Z1381}} || {{z|Z16398}} || ❌ || ❌ || [[WF:human languages/Z1381#natural number|WF:HL]]
|-
| {{z|Z1003}} || {{z|Z16431}} || ✅ || ✅ || [[WF:human languages/Z1003#natural number|WF:HL]]
|-
| {{z|Z1472}} || {{z|Z16443}} || ✅ || ✅ || [[WF:human languages/Z1003#natural number|WF:HL]]
|-
| {{z|Z1099}} || {{z|Z16409}} || ✅ || ✅ || [[WF:human languages/Z1099#natural number|WF:HL]]
|-
| {{z|Z1282}} || {{z|Z16608}} || ✅ || ✅ || [[WF:human languages/Z1381#natural number|WF:HL]]
|-
| {{Z|Z1820}} || {{Z|Z19334}} || ✅ || ✅ || [[WF:human languages/Z1820#natural number|WF:HL]]
|-
| {{z|Z1012}} || {{z|Z19484}} || ✅ || ✅ || [[WF:human languages/Z1012#natural number|WF:HL]]
|-
| {{Z|Z1787}} || {{Z|Z23003}} || ✅ || ✅ || [[WF:human languages/Z1787#natural number|WF:HL]]
|-
| {{Z|Z1158}} || {{Z|Z24618}} || ✅ || ✅ || [[WF:human languages/Z1158#natural number|WF:HL]]
|-
| {{Z|Z1078}} || {{Z|Z18546}} || ✅ || ✅ || [[WF:human languages/Z1078#natural number|WF:HL]]
|-
| {{Z|Z1762}} || {{Z|Z22455}} || ✅ || ✅ || [[WF:human languages/Z1762#natural number|WF:HL]]
|}
== See also ==
* {{Z|Z16435}}
* {{Z+|Z16437}}
* {{Z|Z14526}}
qbjjpr7aiupftylr32dupgx9momrab2
Wikifunctions:Cardinal numbers/ru
4
34564
296884
261565
2026-08-06T17:59:48Z
FuzzyBot
207
Updating to match new version of source page
296884
wikitext
text/x-wiki
<languages/>
{{Move|Wikifunctions:Catalogue/Natural language operations/Cardinal numbers|reason=This page is a list of functions, but is outside the catalogue}}
<div lang="en" dir="ltr" class="mw-content-ltr">
We are looking to have functions to create the names of numbers in many different languages. The [[Special:MyLanguage/Wikifunctions:Status updates/2024-05-15|newsletter from 15 May 2024]] made a Call for Functions!
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
On this page, we collect and list the existing functions and related objects in order to coordinate the work.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The functions take as input a [[Z13518|natural number]] and return a [[Z6|string]]. There can be more than one function per language.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Languages covered ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
There are {{FORMATNUM:27}} so far.
</div>
{| class="wikitable sortable"
|+ <span lang="en" dir="ltr" class="mw-content-ltr">functions by [[Special:ListObjectsByType/Z60|language]]</span>
|-
! Язык !! Функция !! <span lang="en" dir="ltr" class="mw-content-ltr">Tested</span> !! <span lang="en" dir="ltr" class="mw-content-ltr">Implemented</span> !! <span lang="en" dir="ltr" class="mw-content-ltr">Planning</span>
|-
| {{z|Z1002}} || {{z|Z13587}} || ✅ || ✅ || [[WF:human languages/Z1002#natural number|WF:HL]]
|-
| {{z|Z1004}} || {{z|Z16093}} || ✅ || ✅ || [[WF:human languages/Z1004#natural number|WF:HL]]
|-
| {{z|Z1011}} || {{z|Z16150}} || ✅ || ✅ || [[WF:human languages/Z1011#natural number|WF:HL]]
|-
| {{z|Z1014}} || {{z|Z16053}} || ✅ || ✅ || [[WF:human languages/Z1014#natural number|WF:HL]]
|-
| {{z|Z1025}} || {{z|Z15965}} || ✅ || ✅ || [[WF:human languages/Z1025#natural number|WF:HL]]
|-
| {{z|Z1045}} || {{z|Z16172}} || ✅ || ✅ || [[WF:human languages/Z1045#natural number|WF:HL]]
|-
| {{z|Z1062}} || {{z|Z32780}} || ✅ || ⛓️💥 || [[WF:human languages/Z1062#natural number|WF:HL]]
|-
| {{z|Z1146}} || {{z|Z16163}} || ✅ || ✅ || [[WF:human languages/Z1146#natural number|WF:HL]]
|-
| {{z|Z1272}} || {{z|Z16085}} || ✅ || ✅ || [[WF:human languages/Z1272#natural number|WF:HL]]
|-
| {{z|Z1332}} || {{z|Z15953}} || ✅ || ✅ || [[WF:human languages/Z1332#natural number|WF:HL]]
|-
| {{z|Z1430}} || {{z|Z15963}} || ✅ || ✅ || [[WF:human languages/Z1430#natural number|WF:HL]]
|-
| {{z|Z1531}} || {{z|Z15567}} || ✅ || ✅ || [[WF:human languages/Z1531#natural number|WF:HL]]
|-
| {{z|Z1534}} || {{z|Z16185}} || ✅ || ✅ || [[WF:human languages/Z1534#natural number|WF:HL]]
|-
| {{z|Z1592}} || {{z|Z16008}}<br>{{z|Z37749}} || ✅ || ✅ || [[WF:human languages/Z1592#natural number|WF:HL]]
|-
| {{z|Z1624}} || {{z|Z16184}} || ✅ || ✅ || [[WF:human languages/Z1624#natural number|WF:HL]]
|-
| {{z|Z1882}} || {{z|Z16313}} || ✅ || ❌ || [[WF:human languages/Z1882#natural number|WF:HL]]
|-
| {{z|Z1381}} || {{z|Z16398}} || ❌ || ❌ || [[WF:human languages/Z1381#natural number|WF:HL]]
|-
| {{z|Z1003}} || {{z|Z16431}} || ✅ || ✅ || [[WF:human languages/Z1003#natural number|WF:HL]]
|-
| {{z|Z1472}} || {{z|Z16443}} || ✅ || ✅ || [[WF:human languages/Z1003#natural number|WF:HL]]
|-
| {{z|Z1099}} || {{z|Z16409}} || ✅ || ✅ || [[WF:human languages/Z1099#natural number|WF:HL]]
|-
| {{z|Z1282}} || {{z|Z16608}} || ✅ || ✅ || [[WF:human languages/Z1381#natural number|WF:HL]]
|-
| {{Z|Z1820}} || {{Z|Z19334}} || ✅ || ✅ || [[WF:human languages/Z1820#natural number|WF:HL]]
|-
| {{z|Z1012}} || {{z|Z19484}} || ✅ || ✅ || [[WF:human languages/Z1012#natural number|WF:HL]]
|-
| {{Z|Z1787}} || {{Z|Z23003}} || ✅ || ✅ || [[WF:human languages/Z1787#natural number|WF:HL]]
|-
| {{Z|Z1158}} || {{Z|Z24618}} || ✅ || ✅ || [[WF:human languages/Z1158#natural number|WF:HL]]
|-
| {{Z|Z1078}} || {{Z|Z18546}} || ✅ || ✅ || [[WF:human languages/Z1078#natural number|WF:HL]]
|-
| {{Z|Z1762}} || {{Z|Z22455}} || ✅ || ✅ || [[WF:human languages/Z1762#natural number|WF:HL]]
|}
<span id="See_also"></span>
== См. также ==
* {{Z|Z16435}}
* {{Z+|Z16437}}
* {{Z|Z14526}}
h1a33evycymnmo8uked0fbie2kbl6iq
Wikifunctions:Cardinal numbers/gu
4
34898
296876
261557
2026-08-06T17:59:44Z
FuzzyBot
207
Updating to match new version of source page
296876
wikitext
text/x-wiki
<languages/>
{{Move|Wikifunctions:Catalogue/Natural language operations/Cardinal numbers|reason=This page is a list of functions, but is outside the catalogue}}
<div lang="en" dir="ltr" class="mw-content-ltr">
We are looking to have functions to create the names of numbers in many different languages. The [[Special:MyLanguage/Wikifunctions:Status updates/2024-05-15|newsletter from 15 May 2024]] made a Call for Functions!
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
On this page, we collect and list the existing functions and related objects in order to coordinate the work.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The functions take as input a [[Z13518|natural number]] and return a [[Z6|string]]. There can be more than one function per language.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Languages covered ==
</div>
<div class="mw-translate-fuzzy">
અત્યાર સુધી બાવીસ.
</div>
{| class="wikitable sortable"
|+ [[Special:ListObjectsByType/Z60|ભાષા]] પ્રમાણે વિધેયો
|-
! ભાષા !! વિધેય !! <span lang="en" dir="ltr" class="mw-content-ltr">Tested</span> !! <span lang="en" dir="ltr" class="mw-content-ltr">Implemented</span> !! <span lang="en" dir="ltr" class="mw-content-ltr">Planning</span>
|-
| {{z|Z1002}} || {{z|Z13587}} || ✅ || ✅ || [[WF:human languages/Z1002#natural number|WF:HL]]
|-
| {{z|Z1004}} || {{z|Z16093}} || ✅ || ✅ || [[WF:human languages/Z1004#natural number|WF:HL]]
|-
| {{z|Z1011}} || {{z|Z16150}} || ✅ || ✅ || [[WF:human languages/Z1011#natural number|WF:HL]]
|-
| {{z|Z1014}} || {{z|Z16053}} || ✅ || ✅ || [[WF:human languages/Z1014#natural number|WF:HL]]
|-
| {{z|Z1025}} || {{z|Z15965}} || ✅ || ✅ || [[WF:human languages/Z1025#natural number|WF:HL]]
|-
| {{z|Z1045}} || {{z|Z16172}} || ✅ || ✅ || [[WF:human languages/Z1045#natural number|WF:HL]]
|-
| {{z|Z1062}} || {{z|Z32780}} || ✅ || ⛓️💥 || [[WF:human languages/Z1062#natural number|WF:HL]]
|-
| {{z|Z1146}} || {{z|Z16163}} || ✅ || ✅ || [[WF:human languages/Z1146#natural number|WF:HL]]
|-
| {{z|Z1272}} || {{z|Z16085}} || ✅ || ✅ || [[WF:human languages/Z1272#natural number|WF:HL]]
|-
| {{z|Z1332}} || {{z|Z15953}} || ✅ || ✅ || [[WF:human languages/Z1332#natural number|WF:HL]]
|-
| {{z|Z1430}} || {{z|Z15963}} || ✅ || ✅ || [[WF:human languages/Z1430#natural number|WF:HL]]
|-
| {{z|Z1531}} || {{z|Z15567}} || ✅ || ✅ || [[WF:human languages/Z1531#natural number|WF:HL]]
|-
| {{z|Z1534}} || {{z|Z16185}} || ✅ || ✅ || [[WF:human languages/Z1534#natural number|WF:HL]]
|-
| {{z|Z1592}} || {{z|Z16008}}<br>{{z|Z37749}} || ✅ || ✅ || [[WF:human languages/Z1592#natural number|WF:HL]]
|-
| {{z|Z1624}} || {{z|Z16184}} || ✅ || ✅ || [[WF:human languages/Z1624#natural number|WF:HL]]
|-
| {{z|Z1882}} || {{z|Z16313}} || ✅ || ❌ || [[WF:human languages/Z1882#natural number|WF:HL]]
|-
| {{z|Z1381}} || {{z|Z16398}} || ❌ || ❌ || [[WF:human languages/Z1381#natural number|WF:HL]]
|-
| {{z|Z1003}} || {{z|Z16431}} || ✅ || ✅ || [[WF:human languages/Z1003#natural number|WF:HL]]
|-
| {{z|Z1472}} || {{z|Z16443}} || ✅ || ✅ || [[WF:human languages/Z1003#natural number|WF:HL]]
|-
| {{z|Z1099}} || {{z|Z16409}} || ✅ || ✅ || [[WF:human languages/Z1099#natural number|WF:HL]]
|-
| {{z|Z1282}} || {{z|Z16608}} || ✅ || ✅ || [[WF:human languages/Z1381#natural number|WF:HL]]
|-
| {{Z|Z1820}} || {{Z|Z19334}} || ✅ || ✅ || [[WF:human languages/Z1820#natural number|WF:HL]]
|-
| {{z|Z1012}} || {{z|Z19484}} || ✅ || ✅ || [[WF:human languages/Z1012#natural number|WF:HL]]
|-
| {{Z|Z1787}} || {{Z|Z23003}} || ✅ || ✅ || [[WF:human languages/Z1787#natural number|WF:HL]]
|-
| {{Z|Z1158}} || {{Z|Z24618}} || ✅ || ✅ || [[WF:human languages/Z1158#natural number|WF:HL]]
|-
| {{Z|Z1078}} || {{Z|Z18546}} || ✅ || ✅ || [[WF:human languages/Z1078#natural number|WF:HL]]
|-
| {{Z|Z1762}} || {{Z|Z22455}} || ✅ || ✅ || [[WF:human languages/Z1762#natural number|WF:HL]]
|}
<span id="See_also"></span>
== આ પણ જુઓ ==
* {{Z|Z16435}}
* {{Z+|Z16437}}
* {{Z|Z14526}}
0gq0oxi21aq4pg4ya1fidp2s5tzfnd2
Wikifunctions:Design/de
4
35214
296890
210236
2026-08-06T18:00:03Z
FuzzyBot
207
Updating to match new version of source page
296890
wikitext
text/x-wiki
<languages/>
{{see also
|Special:MyLanguage/WF:Status|l1=WF:Status
|Special:MyLanguage/WF:Feature_petitions|l2=WF:Feature petitions
}}
Auf dieser Seite listen wir die Aktivitäten des Teams bezüglich Designverbesserungen der Website auf.
<span id="Current_design_improvements"></span>
== Aktuelle Designverbesserungen ==
* [[Wikifunctions:Design/Lexeme Sense Selection UI|Benutzeroberfläche für die Auswahl von Lexem-Sinnen]]
* [[Special:MyLanguage/Wikifunctions:Design/Naming conventions recommendations|Empfehlungen zu Namenskonventionen]]
<span id="Implemented_design_improvements"></span>
== Implementierte Designverbesserungen ==
* [[Special:MyLanguage/Wikifunctions:Design/About widget improvements|Verbesserungen des Info-Widgets]]
[[Category:Project concept{{#translation:}}]]
l79dmvarlswpopp5dosbvetr828drvh
Wikifunctions:How to create implementations/sk
4
35417
296945
276458
2026-08-06T18:02:38Z
FuzzyBot
207
Updating to match new version of source page
296945
wikitext
text/x-wiki
<languages/>
Táto stránka poskytuje podrobnejšieho sprievodcu '''vytváraním implementácií''', podrobnej ako v {{ll|Wikifunctions:Introduction}}.
<div lang="en" dir="ltr" class="mw-content-ltr">
== Types of Implementations ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
In Wikifunctions, an '''implementation''' can take one of two main forms: '''code''' or '''composition'''. A code implementation directly expresses the function’s logic in any of the available programming languages (currently, Python3 or JavaScript). It’s most useful when the function’s behavior can’t easily be built from existing Wikifunctions, or when precise control over data processing is needed.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
A composition implementation, on the other hand, defines the function entirely by combining other existing functions, without writing code. Compositions are easier to understand, reuse, and translate into other languages automatically, but they depend on suitable building blocks already being available and often are less performant. In general, start by checking whether your goal can be achieved through composition; if it can’t, or if performance or fine-grained logic matters, choose a code implementation instead.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
There's a third type of implementation: '''built-ins'''. These are run by system-built code, and are not editable. Most likely all pre-defined functions will have a built-in implementation. In such cases, when opening the implementation page, you will see a message stating ''"{{int|wikilambda-implementation-selector-none}}"''
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Practice Test-Driven Development ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
'''Test-Driven Development''', or '''TDD''', is a way of creating software where you write tests before you write the actual code. Tests are just a way of understanding what your function is supposed to do by listing examples and how they should work.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
In Wikifunctions, writing tests first offers significant benefits. If you are working on an implementation, you can run your code against the existing tests to check that it behaves as expected. This makes it easier to catch errors early before even publishing your implementation. Tests are also a powerful way to describe the function you need. By writing tests, '''you clearly communicate the expected behavior''', and the community can step in and help with the implementation, or create alternative implementations.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Imagine you want to implement a Function that combines two strings with a space in between. A basic test for this might look like:
</div>
<syntaxhighlight lang="prolog">
join_with_space( "Hello", "world" ) => "Hello world"
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
Once you have defined the basic behavior, it's important to '''think about edge cases'''—situations where the inputs are such that you might need some special behavior.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For example, what if your first string ends in a space, or your second string starts with a space? Should the function keep all existing spaces and add another one, or should it return a neatly spaced result with just a single space between the words?
Depending on your requirements, you should build a test for such a case. For example, a test for this edge case could be either one of these — but not both!:
</div>
<syntaxhighlight lang="prolog">
join_with_space( "Hello ", " world") => "Hello world"
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
or ...
</div>
<syntaxhighlight lang="prolog">
join_with_space( "Hello ", " world") => "Hello world"
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
Make sure that all possible special cases are covered by your tests, and once you have them, make sure that they are all connected to the Function by selecting them and clicking "Connect".
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Code implementations ==
</div>
[[File:Code implementation.png|thumb|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Wikifunctions code editor initialized with a function template</span>|<span lang="en" dir="ltr" class="mw-content-ltr">When adding a new code implementation, the function template is initialized with the function and argument names</span>]]
<div lang="en" dir="ltr" class="mw-content-ltr">
When creating an implementation using code, the Wikifunctions UI will set up a code editor with the selected language activated for syntax highlighting and validation. When the function to implement and the programming language are selected, this editor will be set with the correct function template: '''do not remove or edit this'''! Keep your code inside this function signature: if you need auxiliary functions, you can simply declare them inside your top-level function declaration.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Using input types in your code ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Wikifunctions types {{Z|Z6}} and {{Z|Z40}} can be used as if they were native types in both JavaScript and Python3. For example, a String input can be concatenated or a Boolean be directly used in a logical expression. To use other types in your code implementations, you will have to look deeper into the type, figure out if it has a conversion to a native equivalent, and treat it accordingly.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For example, let's say we want to write some Python code that handles an input of type {{Z|Z20420}}. In the page for this type, let's look at its "type converters to code" and search for a Python one. The converter {{Z|Z20424}} will be applied to our date input before our code, so looking at "native type" we know that our input will be a Python ''dict'' and looking at the implementation we can see the keys we can expect:
</div>
<syntaxhighlight lang="python3">
return {
'K1': year,
'K2': month,
'K3': day
}
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
When a type doesn't have a converter, you'll have to access its parts directly using its keys. For example, let's assume that your function <code>Z30000</code> has one input <code>Z30000K1</code> of type {{Z|Z11}}. This type has two keys: <code>Z11K1</code> for the language (itself an object of type {{Z|Z60}}), and <code>Z11K2</code> for the string value. Similarly, the language object has a key <code>Z60K1</code> for the language code. So, to get a string with the language code and the text, you can write:
</div>
<syntaxhighlight lang="javascript">
function Z30000( Z30000K1 ) {
// e.g. "en: some text"
return Z30000K1.Z11K1.Z60K1 + ": " + Z30000K1.Z11K2;
}
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
For a quick reference of the available type conversions visit [[Special:MyLanguage/Wikifunctions:Execution targets#Default type conversion|the default type conversion table]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Returning the right outputs ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Similarly to the way you treat inputs, outputs need to match the type specified in the function definition. Some can be treated as simply as native types, so any string output will be converted into a Wikifunctions {{Z|Z6}} object and any native boolean returned by your implementation will be converted into a Wikifunctions {{Z|Z40}} object.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Those types that have "type converters from code" will apply the appropriate function to the output, in order to build the required type. Following the example of {{Z|Z20420}}, the {{Z|Z20443}} will transform the output from your implementation–a dict with K1, K2 and K3 keys–into its correct ZObject representation.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For types that don't have converters from code, you can carefully build and return the output objects. For example, imagine that our function <code>Z30000</code> takes two string inputs: language code and text, and should return a {{Z|Z11}} object. You can do this in Python by using the <code>ZObject</code> constructor:
</div>
<syntaxhighlight lang="python3">
def Z30000(Z30000K1, Z30000K2):
lang_object = ZObject(
{"Z1K1": "Z9", "Z9K1": "Z60"},
Z60K1 = Z30000K1
)
return ZObject(
{"Z1K1": "Z9", "Z9K1": "Z11"},
Z11K1 = lang_object,
Z11K2 = Z30000K2
)
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
Or in JavaScript:
</div>
<syntaxhighlight lang="javascript">
function Z30000( Z30000K1, Z30000K2 ) {
const langObject = new ZObject(
new Map( [ [ "Z60K1", Z30000K1 ] ] ),
{ "Z1K1": "Z9", "Z9K1": "Z60" }
);
const monolingualKeys = new Map( [
[ "Z11K1", langObject ],
[ "Z11K2", Z30000K2 ]
] );
return new ZObject(
monolingualKeys,
{ "Z1K1": "Z9", "Z9K1": "Z11" }
);
}
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
You can learn more about the <code>ZObject</code> class and other useful constructors in {{ll|Wikifunctions:Execution_targets#Custom_and_non-built-in_type_conversion}}
</div>
{{phab|T392750}}<div lang="en" dir="ltr" class="mw-content-ltr">
As of 2026-05, trying to return a list of lists may fail, so you're not able to implement such functions in code.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Code in Python ===
</div>
<div class="mw-translate-fuzzy">
V nasledujúcom texte uvádzame konkrétny príklad, ako vytvoriť Implementáciu vo forme kódu v Pythone. Povedzme, že chceme vytvoriť implementáciu funkcie, ktorá spojí dva vstupné reťazce s medzerou medzi nimi, čím vráti výsledok. Predpokladajme, že ZID tejto funkcie je Z11057.
</div>
<div class="mw-translate-fuzzy">
Implementácia sa definuje pomocou ZID funkcie. Rovnako ako argumenty funkcie. Takže v prípade funkcie Z11057 s jej dvoma argumentmi by mala byť prvý riadok takto:
</div>
<syntaxhighlight lang="python3">
def Z30000(Z30000K1, Z30000K2):
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
As we described before, we know that the arguments (<code>Z30000K1</code> and <code>Z30000K2</code>) are Strings, so we can treat them as simply as we use native strings in Python. Also, the function should return a String. For our example, we simply return the two arguments concatenated with a space in between:
</div>
<syntaxhighlight lang="python3">
def Z30000(Z30000K1, Z30000K2):
return Z30000K1 + " " + Z30000K2
</syntaxhighlight>
Keďže ide o Python, nezabudnite tento riadok odsadiť.
<div lang="en" dir="ltr" class="mw-content-ltr">
If you have followed our advice to [[#Practice Test-Driven Development|practice TDD]], you will already have a set of tests that you know should work. If that's the case, while building your implementation you can click on the circular arrow in the Tests panel, and see if your implementation passes all of them.
</div>
Pamätajte, že vykonávanie funkcie nemá stavový charakter. Nepoužívajte globálne alebo statické premenné. Ak máte ďalšie otázky o tom, čo môžete a nemôžete robiť v Pythone, opýtajte sa na [[Wikifunctions:Python implementations]].
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Code in JavaScript ===
</div>
<div class="mw-translate-fuzzy">
V nasledujúcom texte uvádzame konkrétny príklad, ako vytvoriť Implementáciu vo forme kódu v JavaScripte. Povedzme, že chceme vytvoriť implementáciu funkcie, ktorá spojí dva vstupné reťazce s medzerou medzi nimi, čím vráti výsledok. Predpokladajme, že ZID tejto funkcie je Z11057.
</div>
<div class="mw-translate-fuzzy">
Implementácia sa definuje pomocou ZID funkcie. Rovnako ako argumenty funkcie. Takže v prípade funkcie Z11057 s jej dvoma argumentmi by mala byť prvý riadok takto:
</div>
<syntaxhighlight lang="javascript">
function Z30000( Z30000K1, Z30000K2 ) {
}
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
We know that the arguments (<code>Z30000K1</code> and <code>Z30000K2</code>) are Strings, so we can treat them as native strings in JavaScript. Also, the function should return a String. To complete our function, you can then add a line concatenating the input strings, like this:
</div>
<syntaxhighlight lang="javascript">
function Z30000( Z30000K1, Z30000K2 ) {
return Z30000K1 + " " + Z30000K2;
}
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
If you have tests as recommended in the [[#Practice Test-Driven Development|TDD]] section above, click on the circular arrow in the Tests panel and see if your implementation passes all of them.
</div>
Pamätajte, že vykonávanie funkcie nemá stavový charakter. Nepoužívajte globálne alebo statické premenné. Ak máte ďalšie otázky o tom, čo môžete a nemôžete robiť v JavaScript, opýtajte sa na [[Wikifunctions:JavaScript implementations]].
<span id="Compositions"></span>
<div class="mw-translate-fuzzy">
== Zloženie ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
In this section, we give a concrete example on how to create an implementation in the form of a composition. Say we want to create an implementation for a Function which combines two input strings by putting a space between them, returning the result of that. Let’s assume the ZID of that function is <code>Z30000</code>.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
It is usually a good idea to first think about how to combine existing functions in order to create the desired output. Sometimes this might be trivial, and you can just go ahead with composing functions, but in many cases it is worthwhile to note the desired composition down.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For example, for the given Function, we could use the existing Function {{Z|Z10000}}. That Function takes two strings and makes one string out of them. But we need to add a space in between. So we first concatenate a space to the end of the first string, and then concatenate the second string to the result of that first concatenation. So our composition could be noted down like this:
</div>
<syntaxhighlight lang="prolog">
join_strings( join_strings( Z30000K1, " " ), Z30000K2 )
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
There are multiple ways to write a composition: notice that the same thing could be accomplished with:
</div>
<syntaxhighlight lang="prolog">
join_strings( Z30000K1, join_strings( " ", Z30000K2 ) )
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
An alternative implementation could also use the existing Function {{Z|Z15175}}, so your composition could be:
</div>
<syntaxhighlight lang="prolog">
join_with_separator( Z30000K1, Z30000K2, " " )
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
As you can see, there are multiple ways to accomplish this, so take your time and explore the existing functions available in the {{ll|Wikifunctions:Catalogue}}.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Let's try to create the second example, <code>join_strings(Z30000K1, join_strings(" ", Z30000K2))</code>.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
In order to create this:
</div>
# <span lang="en" dir="ltr" class="mw-content-ltr">Start adding an implementation by clicking on the "+" button in the "Implementations" table from your Function page.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Make sure that the option "composition" under "Implementation" is selected.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Click on the "›" icon or click the "Select Function" link to expand the function details.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Under "function" search for the name of the outermost function you want to use, which in this example is "join two strings". Then, select the wanted function from the dropdown list.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">You will see two new fields, one for each of the arguments needed for the selected function.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">For the first argument, we want to select the first input to our function:</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "first string", click on the "…" button and select "Argument reference".</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "key id" you can now select the first string of your function from the dropdown, which contains all available inputs.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">For the second argument, we want to use the result of another call to "join two strings":</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "second string", click on the "…" button and select "Function call".</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function", search and select the function you want to call, which is again "join two strings".</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">For this inner function call, configure the "first string" by simply typing a white space in the text field, and configure the "second string" as you did for step 6: change it using the "…" button to "Argument reference", and then select the second argument in the dropdown.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
Your composition is now complete!
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
You can expand and collapse the details using the chevron buttons to see how it looks. If you already have Tests as recommended in the [[#Practice Test-Driven Development|TDD]] section above, click on the circular arrow in the Tests panel and see if your implementation passes the tests. Once your composition passes the tests, go ahead and publish it.
</div>
[[File:Composition implementation expanded.png|frame|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">A Wikifunctions composition implementation in its expanded view</span>|<span lang="en" dir="ltr" class="mw-content-ltr">A Wikifunctions composition implementation in its expanded view</span>]]
[[File:Composition implementation collapsed.png|frame|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">A Wikifunctions composition implementation in its collapsed view</span>|<span lang="en" dir="ltr" class="mw-content-ltr">A Wikifunctions composition implementation in its collapsed view</span>]]
<div lang="en" dir="ltr" class="mw-content-ltr">
== Wikifunctions error handling ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
As a Wikifunctions function creator, you might want to warn the user calling your function when something goes wrong in the code, or when their inputs do not fit a certain criteria. For example, if your Function expects a string input to contain a name, you might want to check that the name is not empty and, if it is, show an error message that the person using your Function can understand.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For this purpose, you can use <code>Wikifunctions.Error()</code> from your code implementations or the function {{Z|Z851}} from your compositions.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
In this section you will learn:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">How to throw errors from both code and composition implementations,</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">how to write tests for error cases, and</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">how to catch and handle errors thrown by functions that you are using in your compositions.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Throwing errors from code implementations ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
When writing code, both from JavaScript and Python, you can use <code>Wikifunctions.Error()</code> to end the execution with a wanted error.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
<code>Wikifunctions.Error()</code> has two parameters:
</div>
# <span lang="en" dir="ltr" class="mw-content-ltr">Error type: a string containing the ZID of the error type you want to return.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Error arguments: a list of string arguments to build the error.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
Let's go one by one:
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Error type ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
An error type is an object that describes a kind of error that could happen in the system. There are a number of built-in error types but you can also build other error types that are more suited to your use case. When using errors, the best idea is to browse through the available error types, which can be explored in [[Special:ListObjectsByType/Z50|this list]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If there are no errors that fit your case, create a new one by going to the create page, and selecting "Error type" in the type selector. Then, set the necessary fields:
</div>
[[File:Error type.png|thumb|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Error type creation in Wikifunctions</span>|<span lang="en" dir="ltr" class="mw-content-ltr">To create new Error type (Z50), edit the label and add the necessary keys.</span>]]
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Label''' – This is the main title of the error, which should contain a short but descriptive message. Set the error label on the right-side box titled "About".</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Keys''' – Keys contain additional information about what caused the error. For example, if an input had the wrong format, you might want to inform the user of what was the input content when raising the error. To use them in your implementations, keys should be strings. To create a key, click on the "[+]" icon below "keys", select "String" under "value type", and add a label that describes it appropriately, for example "current input". Once you have all the necessary keys, you can Publish your error type and keep the ID of the newly created object.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Error arguments ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Error arguments correspond to the keys of the Error type, and they should provide additional information to understand the error. Error arguments should always be Strings.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Using Wikifunctions.Error() ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Say that you want an error to be thrown when either your first or your second input are empty. You have already created the error type, and the assigned ZID was <code>Z30005</code>. Your error type has two string keys:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">Input key: contains the key of the failing input</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Input value: contains the current value of the failing input</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
To raise an error in your JavaScript implementation you should do something like this:
</div>
<syntaxhighlight lang="javascript">
function Z30000( Z30000K1, Z30000K2 ) {
if ( trim( Z30000K1 ) === '' ) {
// If the first input is empty, raise error Z30005
// with two string args: [ first input key, first input value ]
Wikifunctions.Error( 'Z30005', [ "Z30000K1", Z30000K1 ] )
}
if ( trim( Z30000K2 ) === '' ) {
// If the second input is empty, raise error Z30005
// with two string args: [ second input key, second input value ]
Wikifunctions.Error( 'Z30005', [ "Z30000K2", Z30000K2 ] )
}
return Z30000K1 + " " + Z30000K2;
}
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
To raise an error in your Python implementation you should do something like this:
</div>
<syntaxhighlight lang="python3">
def Z30000(Z30000K1, Z30000K2):
if Z30000K1.strip() == "":
# If the first input is empty, raise error Z30005
# with two string args: [ first input key, first input value ]
Wikifunctions.Error("Z30005", ["Z30000K1", Z30000K1])
if Z30000K2.strip() == "":
# If the second input is empty, raise error Z30005
# with two string args: [ first input key, first input value ]
Wikifunctions.Error("Z30005", ["Z30000K2", Z30000K2])
return Z30000K1 + " " + Z30000K2
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
Remember that calling <code>Wikifunctions.Error()</code> ends the execution!
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Throwing errors from compositions ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If you are creating a composition implementation, you can throw an error by calling the special function {{Z|Z851}}.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Throw Error function (Z851) ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The {{Z|Z851}} function is similar to the <code>Wikifunctions.Error()</code> method and takes two arguments:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Error type''' – A reference to the Error type you want to raise</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Error parameters''' – A list with the arguments to create your Error, which should also be Strings.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Using Throw Error ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Say you want to modify your composition so that it first checks that the arguments are not empty, and raises an error when it finds an empty one. Then, if none of them are empty, it runs the original composition, which is:
</div>
<syntaxhighlight lang="prolog">
join_with_separator( Z30000K1, Z30000K2, " " )
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
To do this, you need to create conditional paths, for which you can use the {{Z|Z802}} function. Think of it like this:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">If the first argument is empty, throw an error for the first argument</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Else, proceed to check the second argument</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">If the second argument is empty, throw an error for the second argument</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Else, proceed with the success path and return the joint strings with the space separator</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
Or in functional pseudo code:
</div>
<syntaxhighlight lang="prolog">
if (
is_empty_string( Z30000K1 ),
throw_error( Z30005, [ "Z30000K1", Z30000K1 ] ),
if(
is_empty_string( Z30000K2 ),
throw_error( Z30005, [ "Z30000K2", Z30000K2 ] ),
join_with_separator( Z30000K1, Z30000K2, " " )
)
)
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
Let's create this step by step:
</div>
# <span lang="en" dir="ltr" class="mw-content-ltr">Start adding an implementation by clicking on the "+” button in the "Implementations" table from your Function page.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Make sure that the option "composition" under "Implementation" is selected.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Click on the "›” icon or click the "Select Function" link to expand the function details.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Under "function" search and select the outermost function you want to use, which in this case is "if".</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Check the validity of the first argument:</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "condition", click on the "…" button and select "function call"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function", search and select the function "is empty string"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "input", click on the "…" button and select "argument reference"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "key id", select the first input (e.g. "first string")</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">You can now collapse the "condition" function call if you want, by clicking on the down-chevron next to "condition". You should see something like "f(x) is empty string( → first string )"</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Throw error if the condition is true:</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "then", click on the "…" button and select "function call"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function", search and select the function "Throw Error"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "error type", search and select your error type (you can directly input the error ID if you know it, e.g. Z30005)</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "error parameters", add two items by clicking on the "+" button</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">For "Item 1" (offending argument key), set its type to "String" and write the argument identifier (e.g. "first input", or "Z30000K1")</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">For "Item 2" (offending argument value), click on the "…" next to "Item 2" and select "argument reference"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "key id", select the first input (e.g. "first string")</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">You can now collapse the "then" function call if you want, by clicking on the down-chevron next to "then". You should see something like "f(x) Throw Error( Input was the wrong format, Typed list( Object, "first input", → first string ) )"</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Continue to check the second argument if the first was good:</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "else", click on the "…" button and select "function call"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function", search and select the function "if"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Set up "condition" to check the validity of the second argument by following the same process as described in step 5.</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Set up "then" to throw an error for the second argument by following the same process as described in step 6.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Finally, set up the success path:</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to the nested "else", click on the "…" button and select "function call"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function", search and select the successful function, which in this case can be "join strings with separator"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "first string", click on the "…" button and set it to "argument reference", then select "first string"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "second string", click on the "…" button and set it to "argument reference", then select "second string"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "separator" add a space into the text field</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
The resulting function call should look like this:
</div>
[[File:Throw error expanded.png|frame|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Wikifunctions composition using Throw Error function</span>|<span lang="en" dir="ltr" class="mw-content-ltr">Wikifunctions composition using Throw Error function</span>]]
[[File:Throw error collapsed.png|frame|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Wikifunctions composition using Throw Error function, in its collapsed view</span>|<span lang="en" dir="ltr" class="mw-content-ltr">Wikifunctions composition using Throw Error function, in its collapsed view</span>]]
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Handling errors in compositions ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
While it is useful to allow functions to raise expected errors, it is crucial to be able to handle errors in your compositions in order to safely use these functions.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Say you want to create a new function "full name of a person" – we will refer to it with the ZID <code>Z30010</code>. This function should return the full name of a person given a first and last names, but if any of the two fields are empty, it should return the text "Unknown" instead.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
You could create a composition using our example function "Join two strings with a space" or <code>Z30000</code> to generate the name. If any of the inputs are empty, you know that <code>Z30000</code> will throw an error of type <code>Z30005</code>. Using the function {{Z|Z850}} as a wrapper, you can attempt the join operation and intercept a possible error to simply return "Unknown" whenever it occurs.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Try-Catch function (Z850) ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The {{Z|Z850}} function is built-in with ZID <code>Z850</code> and takes three arguments:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Function call''' – The initial function call to run. If nothing goes wrong, the response will be the result of this function call.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Error type''' – An error type to catch in case it is thrown during the execution of the first function call.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Error handler''' – A function call that will be run in case the error specified above is caught during the execution of the initial function call. If that happens, the result of the error handler will be the value returned.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Using Try-Catch ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Once we have all the functions for our composition, we can craft it like this:
</div>
<syntaxhighlight lang="prolog">
try_catch(
join_with_space( Z30010K1, Z30010K2 ),
Z30005,
echo( "Unknown" )
)
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
This means that:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">The "Join two strings with a space" function will be tried with the two inputs and, if everything goes well, the output of this function will be returned</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">If any of the inputs are blank, "Join two strings with a space" with raise an error of type <code>Z30005</code></span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Our {{Z|Z850}} will then detect this error and run the {{Z|Z801}} function to return "Unknown"</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
Let's create this step by step:
</div>
# <span lang="en" dir="ltr" class="mw-content-ltr">Start adding an implementation by clicking on the "+" button in the "Implementations" table from your Function page.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Make sure that the option "composition" under "Implementation" is selected.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Click on the "›” icon or click the "Select Function" link to expand the function details.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Under "function" search and select the outermost function you want to use, which in this case is "Try-Catch".</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Set the main function call:</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under the field where the "Try-Catch" function is selected, next to the "function call" key, click on the "…" button and select "function call"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function" search and select the function "join two strings with space"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "first string", click on the "…" button and select "argument reference", then select the "first name" argument from the dropdown.</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "second string", click on the "…" button and select "argument reference", then select the "second name" argument from the dropdown.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Select the error to catch:</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "error type", search and select "bad string input" – you can search directly by its ZID <code>Z30005</code></span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Set the error handler function call:</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "error handler", click on the "…" button and select "function call"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function", search and select the function "echo"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "input" and "type", search and select the type "String"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Now, under "input", type "Unknown" in the text field</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
The resulting function should look like this:
</div>
[[File:Try catch expanded.png|frame|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Wikifunctions composition using Try-catch function, in expanded mode</span>|<span lang="en" dir="ltr" class="mw-content-ltr">Wikifunctions composition using Try-catch function, in expanded mode</span>]]
[[File:Try catch collapsed.png|frame|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Wikifunctions composition using Try-catch function, in collapsed mode</span>|<span lang="en" dir="ltr" class="mw-content-ltr">Wikifunctions composition using Try-catch function, in collapsed mode</span>]]
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Testing your failure use cases ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
As we introduced in the above section about [[#Practice Test-Driven Development|practicing TDD]], it's important to test not only the most common paths, but also the possible edge cases. It is equally important to test failure behavior. In this section we will give you the tools necessary to test that your function fails with a given set of inputs, and that the error thrown is the expected one.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
To do that, you will need other two system functions:
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Is error type (Z852) ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The {{Z|Z852}} function is built-in with ZID <code>Z852</code> and takes two arguments:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Error''' – An {{Z|Z5}} object, which can be thrown by a failing call. An error instance has a type and a value.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Error type''' – A reference to an {{Z|Z50}} which will be compared to the type of the Error passed as a first argument. If that's the case, the function will return true.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Get error thrown by function call (Z853) ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The {{Z|Z853}} function is built-in with ZID <code>Z853</code> and takes one argument:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Function call''' – A function call which can either return a successful value of any type, or throw an error.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
This function returns a {{Z|Z882}} with a {{Z|Z40}} in first place and an {{Z|Z1}} in the second:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">If the Function call runs successfully and hence does not throw any error, the returned pair will contain False in the first place, and void in the second.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">If the Function call throws an error, the returned pair will contain True in the first place, and the caught error in the second.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
To use this function in your compositions, you might need to use the additional functions:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z821}}, and</span>
* {{Z|Z822}}
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Testing errors ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Say our target function, "Join two strings with a space" or <code>Z30000</code>, throws an error of type <code>Z30005</code> and we want to test this behavior. To do that we need to:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">Throw a failing function call</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Get the error using the function {{Z|Z853}}</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Check that the error is the right type with {{Z|Z852}}</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
Tests have two fields:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Call''' – A function call that will produce an output with the inputs you want to test. This call will return a value.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Result validation''' – A function call that will validate that the value returned by the call above is the expected one. The first argument of this function call will be automatically assigned to take the return value of the first call.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
For step-by-step instructions on how to create tests, see {{ll|Wikifunctions:Introduction#Create_tests}}.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
In our example, we can structure it like this — but this is not the only way!
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The call, which will return an {{Z|Z5}} object:
</div>
<syntaxhighlight lang="prolog">
error = get_second_element_of_typed_list(
get_error_thrown_by(
join_strings_by_whitespace( "", "not empty" )
)
)
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
And the result validation, which will take the {{Z|Z5}} object as its first argument:
</div>
<syntaxhighlight lang="prolog">
is_error_type( error, Z30005 )
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
Let's do this step by step:
</div>
# <span lang="en" dir="ltr" class="mw-content-ltr">Start adding a test by clicking on the "+" button in the "Tests" table from your Function page. The "call" and "result validation" fields already have some functions pre-set, but to test the errors we will need to change them.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">First, let's set the call:</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "call", click the "›" chevron button to expand the function call.</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function", edit the field and search and select the function "Get second element of a typed pair"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Once selected, next to "Typed pair", click on the "…" button and select "function call"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function", search and select the function "Get error thrown by function call"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "function call", click on the "…" button and select "function call"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function", search and select the function "Join two strings with a space" (or by ZID <code>Z30000</code>)</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Now set the inputs so that they cause a failure: at least one of them should be empty.</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">You can now collapse your "call" by clicking again on the down-chevron button if you want!</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Next, let's set the result validation:</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "result validation", click the "›" chevron button to expand the function call.</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function", edit the field and search and select the function "Is error type"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Now you will only be asked to configure the second argument. Under "error type", search and select your <code>Z30005</code> error type.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">And you are done! You can now click the circular arrow in the "Implementations" box and you should see green checks.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
If everything went right, you can now save your test. It should look like this:
</div>
[[File:Get error expanded.png|frame|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Testing a failure using Get error and Is error type functions, in expanded mode</span>|<span lang="en" dir="ltr" class="mw-content-ltr">Testing a failure using Get error and Is error type functions, in expanded mode</span>]]
[[File:Get error collapsed.png|frame|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Testing a failure using Get error and Is error type functions, in collapsed mode</span>|<span lang="en" dir="ltr" class="mw-content-ltr">Testing a failure using Get error and Is error type functions, in collapsed mode</span>]]
<div lang="en" dir="ltr" class="mw-content-ltr">
== Debugging your implementations ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Sometimes things can go wrong. A function might behave differently than expected or a value might not look quite right. Sometimes implementations are really complex and, because they are run in a sandboxed environment, it can seem really difficult to debug. To help understand what's going on inside a function call, Wikifunctions includes a small set of debugging tools.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
These tools don't change the result of a function, but will add extra information to the returned metadata, which you can observe after running the function. You can use <code>Wikifunctions.Debug()</code> from your code implementations or the function {{Z|Z854}} from your compositions.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
In this section you will learn:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">How to add debug messages from both code and composition implementations,</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">how to inspect the metadata manually or via the UI to inspect these logs.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Debugging your code implementations ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
When writing code, both from JavaScript and Python3, you can use <code>Wikifunctions.Debug()</code> to add a message to your debugging log and continue the execution.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
<code>Wikifunctions.Debug()</code> has one parameter, which is generally expected to be a string. However, any other object passed as parameter will get directly converted into a string.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If we want to add debug logs to our code implementations for our "Join two strings with a space" example function, we can do, in JavaScript:
</div>
<syntaxhighlight lang="JavaScript">
function Z30000( Z30000K1, Z30000K2 ) {
if ( trim( Z30000K1 ) === '' ) {
Wikifunctions.Debug( `first input is empty "${ Z30000K1 }"` );
Wikifunctions.Error( 'Z30005', [ "Z30000K1", Z30000K1 ] )
}
if ( trim( Z30000K2 ) === '' ) {
Wikifunctions.Debug( `second input is empty "${ Z30000K2 }"` );
Wikifunctions.Error( 'Z30005', [ "Z30000K2", Z30000K2 ] )
}
Wikifunctions.Debug( "both inputs are fine" );
return Z30000K1 + " " + Z30000K2;
}
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
And the same in your Python3 implementation will be:
</div>
<syntaxhighlight lang="python3">
def Z30000(Z30000K1, Z30000K2):
if Z30000K1.strip() == "":
Wikifunctions.Debug( 'first input is empty "'+Z30000K1+'"' )
Wikifunctions.Error("Z30005", ["Z30000K1", Z30000K1])
if Z30000K2.strip() == "":
Wikifunctions.Debug( 'second input is empty "'+Z30000K2+'"' )
Wikifunctions.Error("Z30005", ["Z30000K2", Z30000K2])
Wikifunctions.Debug( 'both inputs are fine' )
return Z30000K1 + " " + Z30000K2
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
This way, no matter what happens, we will be adding one message to your debugging logs:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">If the function call fails when checking on the first or second input, the result of the execution will be a failure, but it will contain one informative log about what branch caused the failure.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">If the function call succeeds—because both inputs are valid—the function call will return the joined string, but the returned metadata will also contain a debug log.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Debugging your compositions ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
To support debugging compositions, Wikifunctions provides the built-in function {{Z|Z854}}. This function allows you to attach debug messages to the execution of any function call that generates the final output. The debug logs collected during the evaluation are returned as part of the execution metadata, under the <code>executorDebugLogs</code> key.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Add debug log to function call (Z854) ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The {{Z|Z854}} function is built-in with ZID <code>Z854</code> and takes two arguments:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Function call''' – Any composition you want to execute.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Debug log''' – A string message that will be recorded if the given function call is evaluated.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
When the wrapped function call runs, the provided message is added to the execution logs. If that function call is not executed, or its execution is not part of the final output, its debug log will not appear in the final result metadata.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
You will benefit from this built-in if you want to observe:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">Which branch of a conditional was executed, or</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">the order of evaluation in a composition.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Using Add debug log to function call ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Say that you want to add debug logs to our example function "Join two strings with a space" or <code>Z30000</code>, so that different messages are added to the different possible outcomes. You could use our debugging builtin like this:
</div>
<syntaxhighlight lang="prolog">
if (
is_empty_string( Z30000K1 ),
add_debug_log( throw_error( Z30005, ... ), 'failed on first input' )
if(
is_empty_string( Z30000K2 ),
add_debug_log( throw_error( Z30005, ... ), 'failed on second input' ),
add_debug_log(
join_with_separator( Z30000K1, Z30000K2, " " ),
'both inputs are ok!'
)
)
)
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
This way,
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">when called with an empty first input, the function will return a failed response, and the metadata will contain an <code>executorDebugLogs</code> entry with the "failed on first input" log.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">When called with an empty second input, the call will also fail, but the logged message will be "failed on second input"</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">When called with valid inputs, the function will return a successful response, and additionally the metadata will contain "both inputs are ok" in its <code>executorDebugLogs</code> key.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
This is the way this composition would look:
</div>
[[File:Add debug log expanded.png|frame|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Composition implementation using Add debug logs to log all possible execution paths</span>|<span lang="en" dir="ltr" class="mw-content-ltr">Composition implementation using Add debug logs to log all possible execution paths</span>]]
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Accessing execution debug logs ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Whether your execution logs are added via <code>Wikifunctions.Debug()</code> or via the {{Z|Z854}} built-in function, they are returned as part of the response metadata. To see the logs, once you run your function, click on the "Details" button that appears at the bottom of the "Result" section.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The error and debug information will appear at the top of the "Details" dialog.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
This is what you would see when running the composition from our previous example with valid and invalid inputs:
</div>
{| class="wikitable"
| [[File:Execution logs success.png|frameless|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Function metadata dialog for a successful execution with debug logs</span>]]
| [[File:Execution logs failure.png|frameless|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Function metadata dialog for a failed execution with debug logs</span>]]
|-
| <span lang="en" dir="ltr" class="mw-content-ltr">Function metadata dialog for a successful execution: shows no errors, but displays the successful execution log: ''"both inputs are ok!"''</span>
| <span lang="en" dir="ltr" class="mw-content-ltr">Function metadata dialog for a failed execution: shows the error information, and the additional execution log for the first failure branch: ''"failed on first input"''</span>
|}
[[Category:How to create implementations| {{#translation:}}]]
p7uhaiheuoke9nbezr7eug9dkafocjq
Wikifunctions:Cardinal numbers/de
4
35555
296873
261552
2026-08-06T17:59:41Z
FuzzyBot
207
Updating to match new version of source page
296873
wikitext
text/x-wiki
<languages/>
{{Move|Wikifunctions:Catalogue/Natural language operations/Cardinal numbers|reason=This page is a list of functions, but is outside the catalogue}}
Wir möchten Funktionen haben, um die Namen von Zahlen in vielen verschiedenen Sprachen zu erstellen. Der [[Special:MyLanguage/Wikifunctions:Status updates/2024-05-15|Newsletter vom 15. Mai 2024]] hat einen Aufruf zur Erstellung von Funktionen gestartet!
Auf dieser Seite sammeln und listen wir die vorhandenen Funktionen und zugehörigen Objekte auf, um die Arbeiten zu koordinieren.
Die Funktionen nimmt eine [[Z13518|natürliche Zahl]] als Eingabe und gibt eine [[Z6|Zeichenkette]] zurück. Es kann mehr als eine Funktion pro Sprache geben.
<span id="Languages_covered"></span>
== Abgedeckte Sprachen ==
Bisher gibt es {{FORMATNUM:27}}.
{| class="wikitable sortable"
|+ Funktionen nach [[Special:ListObjectsByType/Z60|Sprache]]
|-
! Sprache !! Funktion !! Getestet !! Implementiert !! Planung
|-
| {{z|Z1002}} || {{z|Z13587}} || ✅ || ✅ || [[WF:human languages/Z1002#natural number|WF:HL]]
|-
| {{z|Z1004}} || {{z|Z16093}} || ✅ || ✅ || [[WF:human languages/Z1004#natural number|WF:HL]]
|-
| {{z|Z1011}} || {{z|Z16150}} || ✅ || ✅ || [[WF:human languages/Z1011#natural number|WF:HL]]
|-
| {{z|Z1014}} || {{z|Z16053}} || ✅ || ✅ || [[WF:human languages/Z1014#natural number|WF:HL]]
|-
| {{z|Z1025}} || {{z|Z15965}} || ✅ || ✅ || [[WF:human languages/Z1025#natural number|WF:HL]]
|-
| {{z|Z1045}} || {{z|Z16172}} || ✅ || ✅ || [[WF:human languages/Z1045#natural number|WF:HL]]
|-
| {{z|Z1062}} || {{z|Z32780}} || ✅ || ⛓️💥 || [[WF:human languages/Z1062#natural number|WF:HL]]
|-
| {{z|Z1146}} || {{z|Z16163}} || ✅ || ✅ || [[WF:human languages/Z1146#natural number|WF:HL]]
|-
| {{z|Z1272}} || {{z|Z16085}} || ✅ || ✅ || [[WF:human languages/Z1272#natural number|WF:HL]]
|-
| {{z|Z1332}} || {{z|Z15953}} || ✅ || ✅ || [[WF:human languages/Z1332#natural number|WF:HL]]
|-
| {{z|Z1430}} || {{z|Z15963}} || ✅ || ✅ || [[WF:human languages/Z1430#natural number|WF:HL]]
|-
| {{z|Z1531}} || {{z|Z15567}} || ✅ || ✅ || [[WF:human languages/Z1531#natural number|WF:HL]]
|-
| {{z|Z1534}} || {{z|Z16185}} || ✅ || ✅ || [[WF:human languages/Z1534#natural number|WF:HL]]
|-
| {{z|Z1592}} || {{z|Z16008}}<br>{{z|Z37749}} || ✅ || ✅ || [[WF:human languages/Z1592#natural number|WF:HL]]
|-
| {{z|Z1624}} || {{z|Z16184}} || ✅ || ✅ || [[WF:human languages/Z1624#natural number|WF:HL]]
|-
| {{z|Z1882}} || {{z|Z16313}} || ✅ || ❌ || [[WF:human languages/Z1882#natural number|WF:HL]]
|-
| {{z|Z1381}} || {{z|Z16398}} || ❌ || ❌ || [[WF:human languages/Z1381#natural number|WF:HL]]
|-
| {{z|Z1003}} || {{z|Z16431}} || ✅ || ✅ || [[WF:human languages/Z1003#natural number|WF:HL]]
|-
| {{z|Z1472}} || {{z|Z16443}} || ✅ || ✅ || [[WF:human languages/Z1003#natural number|WF:HL]]
|-
| {{z|Z1099}} || {{z|Z16409}} || ✅ || ✅ || [[WF:human languages/Z1099#natural number|WF:HL]]
|-
| {{z|Z1282}} || {{z|Z16608}} || ✅ || ✅ || [[WF:human languages/Z1381#natural number|WF:HL]]
|-
| {{Z|Z1820}} || {{Z|Z19334}} || ✅ || ✅ || [[WF:human languages/Z1820#natural number|WF:HL]]
|-
| {{z|Z1012}} || {{z|Z19484}} || ✅ || ✅ || [[WF:human languages/Z1012#natural number|WF:HL]]
|-
| {{Z|Z1787}} || {{Z|Z23003}} || ✅ || ✅ || [[WF:human languages/Z1787#natural number|WF:HL]]
|-
| {{Z|Z1158}} || {{Z|Z24618}} || ✅ || ✅ || [[WF:human languages/Z1158#natural number|WF:HL]]
|-
| {{Z|Z1078}} || {{Z|Z18546}} || ✅ || ✅ || [[WF:human languages/Z1078#natural number|WF:HL]]
|-
| {{Z|Z1762}} || {{Z|Z22455}} || ✅ || ✅ || [[WF:human languages/Z1762#natural number|WF:HL]]
|}
<span id="See_also"></span>
== Siehe auch ==
* {{Z|Z16435}}
* {{Z+|Z16437}}
* {{Z|Z14526}}
oiojhrpt4dnhof7e1oolhqqlo061957
Template:Documentation subpage/sd
10
36544
297015
122260
2026-08-06T18:04:33Z
FuzzyBot
207
Updating to match new version of source page
297015
wikitext
text/x-wiki
<noinclude><languages/></noinclude><includeonly>{{#if:{{IsDocSubpage|override={{{override|doc}}}}}
| <!--doc subpage--></includeonly>{{#ifeq:{{{doc-notice|show}}}|show
| {{Ombox|type=notice|image=[[File:OOjs UI icon articles-ltr.svg|35px|link=|class=skin-invert-image]]
|text=<div class="mw-translate-fuzzy">
'''هي هڪ ذيلي صفحو آهي [[Special:MyLanguage/Help:Template documentation|تصديق]] [[mw:Special:MyLanguage/Help:Subpages|{{#if:{{{1|}}}
| {{{1}}}
| [[:{{SUBJECTSPACE}}:{{BASEPAGENAME}}]]
}} لاءِ.'''
</div><br/> استعمال جي معلومات تي مشتمل آهي[[Special:MyLanguage/Help:Categorization|ڪئٽيگريز]] ۽ ٻيو مواد جيڪو اصل صفحي جو حصو ناهي <!--
--> {{#if: {{{text2|}}}
| {{{text2|}}}
| {{#if: {{{text1|}}}
| {{{text1|}}}
| {{#ifeq: {{SUBJECTSPACE}} | {{ns:User}}
| {{lc:{{SUBJECTSPACE}}}} سانچو | صفحو {{#if: {{SUBJECTSPACE}}
| {{lc:{{SUBJECTSPACE}}}} | آرٽيڪل }}
}}
}}
}}.
}}
<!--If not on a doc subpage, do nothing-->}}{{DEFAULTSORT:{{{defaultsort|{{PAGENAME}}}}}}}{{#if: {{{inhibit|}}}
| <!--Skip-->
| <includeonly>{{#ifexist: {{NAMESPACE}}:{{BASEPAGENAME}}
| [[Category:{{#switch: {{SUBJECTSPACE}}
|Template=Template
|Module=Module
|User=User
|#default=Template
}} documentation pages{{#translation:}}]]
| [[Category:Documentation subpages without corresponding pages{{#translation:}}]]
}}</includeonly>
}}<includeonly>
}}</includeonly><noinclude>{{Documentation}}[[Category:Template documentation]]<!--Add categories and interwikis to the /doc subpage, not here!--></noinclude>
a5s0wjnbyx1hu4lnu2v7jprb4o2m5ix
Wikifunctions:Status updates/gu
4
38628
296988
295115
2026-08-06T18:03:36Z
FuzzyBot
207
Updating to match new version of source page
296988
wikitext
text/x-wiki
<languages/>
{{shortcut|WF:SU}}{{notice|1=<span lang="en" dir="ltr" class="mw-content-ltr">'''[[:m:Global message delivery/Targets/Wikifunctions & Abstract Wikipedia|Subscribe]]''' to receive short on-wiki MassMessage notifications about each new issue</span>}}
{{Wikifunctions updates
| prevlabel = <span lang="en" dir="ltr" class="mw-content-ltr">Previous update</span>
| prev = 2024-02-01
| nextlabel = <span lang="en" dir="ltr" class="mw-content-ltr">Last update</span>
| next = 2026-08-05
}}
<div lang="en" dir="ltr" class="mw-content-ltr">
A lot is happening around Wikifunctions and Abstract Wikipedia. This is the page where our updates are posted, including the [[Special:MyLanguage/WF:function of the Week|function of the Week]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
You can also subscribe to the [[:m:Global message delivery/Targets/Wikifunctions & Abstract Wikipedia|on-wiki newsletter]] to have them delivered to your talk page or to your project's village pump.
</div>
<inputbox>
type=fulltext
prefix={{NAMESPACE}}:{{PAGENAME}}/
break=no
width=30
searchbuttonlabel={{int:Search}}
placeholder=Search all status updates
</inputbox>
<span id="Newsletters"></span>
== સમાચારપત્રો ==
<!--<nowiki> Newsletter entry template:
* <translate><tvar name="1">{{Status updates|2026-0?-??}}</tvar>: Title</translate>
NOTE: Remember to also update the "next =" date at the top of this page.
</nowiki>-->
=== 2026 ===
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-08-05}}: An apple is a fruit</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-07-29}}: Abstract Wikipedia at Wikimania</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-07-16}}: Beyond syntactic tables</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-07-08}}: Moving toward our first Abstract Wikipedia integration milestone</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-07-01}}: Integration on test wiki and annual plan</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-06-26}}: Working on Functions, together</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-06-19}}: The or not the, this is (the?) question</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-06-12}}: Improved loading and display of Test results</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-06-05}}: The illustrated encyclopaedia</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-05-30}}: Looking back and forward</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-05-23}}: Annual plan 2026-2027</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-05-15}}: A higher meaning</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-05-08}}: References from Wikidata are now available</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-05-02}}: Request for input: what should we count for Abstract Wikipedia?</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-04-25}}: The Foundation's search for the perfect language</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-04-16}}: Milestones; Some major issues hopefully resolved</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-04-10}}: Community proposals for capturing meaning</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-04-02}}: Request for Discussion: Syntactic tables</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-03-26}}: First few days of Abstract Wikipedia Beta; Status of Composition Language v2</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-03-19}}: Abstract Wikipedia in Beta</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-03-11}}: A new composition language</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-03-06}}: Citations and Copy and Paste</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-02-26}}: Graceful overrides and fallbacks</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-02-20}}: A sneak preview of Abstract Wikipedia</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-02-13}}: Finishing each other sentences: Starting things; Offsite in Istanbul</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-01-29}}: Integrating Abstract Wikipedia</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-01-22}}: Quarterly plan for January–March 2026</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-01-15}}: 25 years of Wikipedia</span>
=== 2025 ===
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-12-18}}: We wish you a happy new Gregorian year!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-12-11}}: How to write better error messages</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-12-04}}: And the name is Abstract Wikipedia</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-11-27}}: Vote on the new wiki name!; Finishing each other’s sentences</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-11-20}}: Second round of voting for naming the wiki with language-independent content; Sharing function calls</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-11-13}}: Getting ready for second round of voting for naming the wiki with abstract content; Rewriting the backend: Why Rust?</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-11-05}}: First round of voting for naming the wiki for abstract content closed; Calling for Wiktionary functions; Embedded Wikifunctions on Bengali Wikipedia and seven more Wiktionaries</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-10-29}}: Round 1 of “abstract content wiki” naming vote ending Monday; An example of short descriptions</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-10-23}}: Welcome Zaree and Laura! Naming contest round 1 kicked off</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-10-15}}: Kicking Off the Naming Contest for Abstract Wikipedia; Visualizing functions</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-10-08}}: Decision on location for abstract content and Quarterly Planning for October–December</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-10-03}}: Rich text now available in embedded function calls on 148 Wiktionaries and Incubator</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-09-26}}: Accessing qualifiers in Wikidata statements</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-09-19}}: Wikifunctions available on 123 Wiktionary languages</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-09-12}}: More than 3,000 functions on Wikifunctions</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-09-07}}: Copying function calls from one Wikipedia to another</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-08-29}}: Accessing Wikidata items now possible from embedded function calls; Wikifunctions available on 65 Wikitionaries</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-08-22}}: Recording of Wikimania session: Wikifunctions is coming soon to a wiki near you!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-08-01}}: Wikimania 2025 is coming soon!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-07-26}}: “Wikipedia is an encyclopedia”; Two years of Wikifunctions</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-07-19}}: Wikidata-based enumerations are here</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-07-10}}: Length limits on labels and descriptions</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-07-04}}: Coverage of 1298</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-06-27}}: How many people are needed to write an encyclopedia?</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-06-21}}: Quarterly Planning for July–September 2025</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-06-15}}: Closing the consultation about the location of Abstract Content</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-06-06}}: Where will Abstract Content go?</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-05-29}}: Rolling out to five Wiktionaries; Calculating with today's date</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-05-23}}: Ongoing consultation about the Location for Abstract Content</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-05-15}}: Location of Abstract Content</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-05-09}}: Abstract Wikipedia and the Wikimedia AI Strategy</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-04-30}}: Abstract Wikipedia is a MacArthur 100&Change finalist</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-04-25}}: Welcome, Gregory!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-04-16}}: Wikifunctions integrated in Dagbani - and Wikifunctions; and the date of Easter</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-04-11}}: Quarter in review</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-04-05}}: Quarterly Planning for April–June 2025; We are looking for a Senior Product Manager</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-03-28}}: It's about time</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-03-20}}: Wikidata-based simple enumerations</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-03-15}}: Upcoming NLG meeting, Recent Changes in the software</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-03-07}}: Recent Changes in the software, Recording of Volunteer’s Corner, and talks in London</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-02-26}}: From things to words</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-02-19}}: A proposal for types per language and part of speech</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-02-13}}: Restricting the World, redux</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-02-06}}: Invitation to the Natural Language Generation Special Interest Group</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-01-29}}: With 2000 Functions into the new year: time for stats</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-01-22}}: Welcome, David! Naming conventions recommendations</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-01-15}}: Happy Wikipedia day! Quarterly planning</span>
=== 2024 ===
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-12-19}}: Function of the Week: age; Intros for year articles; New Type: Floating-point number</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-12-12}}: Sketching a path to Abstract Wikipedia; Team offsite in Lisbon; and much more</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-11-27}}: WordGraph release; New Special page: list functions by tests; new type for day of the year, and much more</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-11-21}}: New special page for missing labels, new type for Gregorian years, and much more</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-11-13}}: New Type: Rational number; Documentation on Wikidata-based types; and more</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-11-07}}: The Dream of a Universal Language</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-11-01}}: Rewriting the backend</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-10-25}}: Our goal for this Quarter: Agreement</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-10-17}}: What could abstract content look like?</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-10-11}}: Wikidata Lexemes in Wikifunctions are coming soon</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-10-02}}: Focus topic: Food</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-09-26}}: Quarterly planning for October–December 2024; Presentation at Celtic Knot tomorrow</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-09-20}}: Introducing focus topic areas</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-09-13}}: Dagbani Wikipedia will be our first wiki for Wikifunctions integration</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-09-06}}: Volunteer's corner and other updates</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-08-29}}: Limits on Name and Description Lengths</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-08-23}}: WasmEdge, Now 300ms Less Edgy</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-08-16}}: Wikimania 2024 edition</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-08-02}}: Revamping our 'About' widget</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-07-26}}: Wikimania 2024 coming soon!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-07-18}}: Research report on integrating Wikifunctions from Wikipedia</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-07-10}}: Type proposals for accessing Lexemes</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-07-03}}: Quarterly planning</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-06-26}}: Welcome, Daphne!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-06-20}}: New Type: Integers</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-06-13}}: New Type: Igbo calendar months</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-06-06}}: New Type: Sign</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-05-30}}: A single singular or a plurality of plurals?</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-05-22}}: New Type: Gregorian calendar months</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-05-15}}: Call for Functions: Spell out the number!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-05-10}}: Flagship type for enumerations: Months of the Gregorian calendar</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-05-03}}: Team meeting and Quarterly plan</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-04-19}}: Welcome, Sharvani!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-04-11}}: New API for calling Wikifunctions and celebrating 1000 functions</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-04-03}}: Product Update on Diff and Upcoming API Improvements</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-03-28}}: Creating tests is now much easier!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-03-21}}: On the way to internationalizing numbers</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-03-13}}: On identity</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-03-07}}: Introducing our second new type: Natural numbers</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-02-28}}: Type proposal for natural numbers</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-02-22}}: Updating the function model</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-02-14}}: Fix-it week</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-02-07}}: Quarterly planning. Thank you, Nick! Function of the Week: is permutation</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-02-01}}: The Igbo Imperative!</span>
<span id="Before_February_2024"></span>
=== ફેબ્રુઆરી ૨૦૨૪ પહેલા ===
<div lang="en" dir="ltr" class="mw-content-ltr">
All updates from this period are [[:m:Special:MyLanguage/Abstract Wikipedia/Updates|available on Meta-Wiki]].
</div>
[[Category:Status updates{{#translation:}}| ]]
43gh3qth93karbc3ugflmizdlyukew8
Wikifunctions:Report a technical problem/ar
4
38977
296955
279534
2026-08-06T18:03:06Z
FuzzyBot
207
Updating to match new version of source page
296955
wikitext
text/x-wiki
<languages/>
{{shortcut|[[WF:BUG]]}}
{{see also
|Special:MyLanguage/WF:Status|l1=WF:Status
|Special:MyLanguage/WF:Feature_petitions|l2=WF:Feature petitions
}}
إذا وجدت خطأ في وظائف ويكي أو كان لديك طلب ميزة لـ وظائف ويكي فيرجى إخبارنا بذلك!
<span id="Scope"></span>
== النطاق ==
*
'''الخطأ''' - مشكلة تنتج نتائج غير صحيحة أو غير متوقعة على وظائف ويكي لاحظ أن المشاكل داخل الوظائف نفسها لا تعتبر خطأً في هذا السياق.
*
'''طلب ميزة''' - فكرة يمكن لفريق التطوير إضافتها إلى وظائف ويكي لجعلها أكثر روعة.
هل تحتاج إلى مساعدة في شيء آخر؟
:
الأمور التالية هي '''خارج نطاق''' عمل فريق تطوير وظائف ويكي:
:* '''محتوى الوظائف الفردية''' - ناقش ذلك على صفحة نقاش الوظيفة نفسها أو اطلب المساعدة على [[Wikifunctions:Project chat]] أو في القنوات المدرجة أدناه؛ إذا كنت تعتقد أن هناك وظيفة مفقودة راجع [[Wikifunctions:Suggest a function]]
:* وظائف ويكي -سياسات مشروع اسأل عن تلك السياسات الموجودة في [[Wikifunctions:Project chat]] أو في القنوات المدرجة أدناه
<span id="Find_existing_bugs_and_feature_requests"></span>
== البحث عن الأخطاء الموجودة وطلبات الميزات ==
* راجع '''[[Wikifunctions:Status]]''' للحصول على ملخص سريع للمشكلات عالية المستوى.
* يمكنك البحث في قائمة المهام المفتوحة في فابريكاتور لمعرفة ما إذا كانت فكرة الخطأ أو الميزة الخاصة بك موثقة بالفعل.
<span id="Discuss_with_others"></span>
== ناقش مع الآخرين ==
يمكنك طرح أسئلة حول الأخطاء المحتملة أو أفكار الميزات في بضعة مواقع قد يكون هذا مفيدًا إذا لم تكن متأكدًا من كيفية وصف الخطأ أو فكرة الميزة بوضوح:
* <span class="mw-translate-fuzzy">صفحة المناقشة هنا.</span>
* الدردشة الرئيسية على [https://t.me/Wikifunctions برقية] أو IRC {{channel|wikipedia-abstract}} (مرتبطة ببعضها البعض) ([https://wm-bot.wmcloud.org/logs/%23wikipedia-abstract/ سجلات] [https://wm-bot.wmflabs.org/logs/%23wikipedia-abstract/ سجلات قديمة])
* محادثة المطور على [https://t.me/abstract_wikipedia_tech برقية] أو IRC {{channel|wikipedia-abstract-tech}} (مرتبطة ببعضها البعض) ([https://wm-bot.wmcloud.org/logs/%23wikipedia-abstract-tech/ سجلات])
<span id="File_a_task_in_Phabricator"></span>
== قم بتقديم مهمة في فابريكاتور ==
إذا كنت على دراية بـ فابريكاتور فيمكنك البحث عن الخيارات وتصنيفها بشكل مباشر.
<div lang="en" dir="ltr" class="mw-content-ltr">
If you are not yet familiar: Phabricator is the web-based development collaboration tool mostly used to manage MediaWiki software projects including Wikifunctions. A short summary about Phabricator for newcomers, including tutorial videos, is on MediaWiki's wiki at [[mw:Special:MyLanguage/Phabricator/Help|mw:Phabricator/Help]].
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">You can '''[[phab:maniphest/query/UzvNRqsdnymk/|search]] the listing of open tasks''' to see if your bug or feature idea is already documented.</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">The existing tasks are collected with the '''[[phab:tag/abstract wikipedia team|#abstract wikipedia team]] tag'''.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">You can '''[https://phabricator.wikimedia.org/maniphest/task/edit/form/43/?projects=abstract_wikipedia file a new task]'''. Please always include:</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">Examples</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">Any relevant links</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">For bugs: The exact steps that produced the bug, so that the team can reproduce and diagnose it.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Languages ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The development team understands a limited number of languages – but you are free to report issues in any language that you're comfortable with.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If possible, please provide a summary in English when creating a phabricator task, or ask someone to help you.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Follow-up ==
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">The locations above are followed by the Wikifunctions development team, as well as community members. The time to get a reply varies depending on the nature or complexity of the topic, etc. However, in general, you can get an answer within 2 workdays. Please let us know if we missed something, as life can get distracting!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Not all problems can be solved immediately: depending on the impact, priority, etc. some bugs can be triaged to low priority. You may follow the status of your report on the relevant linked phabricator task.</span>
[[Category:Report a technical problem{{#translation:}}]]
duuw0fjcoxt0j61lo5pbkuq59381tnx
Wikifunctions:Cardinal numbers/pl
4
41037
296883
261564
2026-08-06T17:59:47Z
FuzzyBot
207
Updating to match new version of source page
296883
wikitext
text/x-wiki
<languages/>
{{Move|Wikifunctions:Catalogue/Natural language operations/Cardinal numbers|reason=This page is a list of functions, but is outside the catalogue}}
<div lang="en" dir="ltr" class="mw-content-ltr">
We are looking to have functions to create the names of numbers in many different languages. The [[Special:MyLanguage/Wikifunctions:Status updates/2024-05-15|newsletter from 15 May 2024]] made a Call for Functions!
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
On this page, we collect and list the existing functions and related objects in order to coordinate the work.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The functions take as input a [[Z13518|natural number]] and return a [[Z6|string]]. There can be more than one function per language.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Languages covered ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
There are {{FORMATNUM:27}} so far.
</div>
{| class="wikitable sortable"
|+ <span lang="en" dir="ltr" class="mw-content-ltr">functions by [[Special:ListObjectsByType/Z60|language]]</span>
|-
! Język !! <span lang="en" dir="ltr" class="mw-content-ltr">Function</span> !! <span lang="en" dir="ltr" class="mw-content-ltr">Tested</span> !! <span lang="en" dir="ltr" class="mw-content-ltr">Implemented</span> !! <span lang="en" dir="ltr" class="mw-content-ltr">Planning</span>
|-
| {{z|Z1002}} || {{z|Z13587}} || ✅ || ✅ || [[WF:human languages/Z1002#natural number|WF:HL]]
|-
| {{z|Z1004}} || {{z|Z16093}} || ✅ || ✅ || [[WF:human languages/Z1004#natural number|WF:HL]]
|-
| {{z|Z1011}} || {{z|Z16150}} || ✅ || ✅ || [[WF:human languages/Z1011#natural number|WF:HL]]
|-
| {{z|Z1014}} || {{z|Z16053}} || ✅ || ✅ || [[WF:human languages/Z1014#natural number|WF:HL]]
|-
| {{z|Z1025}} || {{z|Z15965}} || ✅ || ✅ || [[WF:human languages/Z1025#natural number|WF:HL]]
|-
| {{z|Z1045}} || {{z|Z16172}} || ✅ || ✅ || [[WF:human languages/Z1045#natural number|WF:HL]]
|-
| {{z|Z1062}} || {{z|Z32780}} || ✅ || ⛓️💥 || [[WF:human languages/Z1062#natural number|WF:HL]]
|-
| {{z|Z1146}} || {{z|Z16163}} || ✅ || ✅ || [[WF:human languages/Z1146#natural number|WF:HL]]
|-
| {{z|Z1272}} || {{z|Z16085}} || ✅ || ✅ || [[WF:human languages/Z1272#natural number|WF:HL]]
|-
| {{z|Z1332}} || {{z|Z15953}} || ✅ || ✅ || [[WF:human languages/Z1332#natural number|WF:HL]]
|-
| {{z|Z1430}} || {{z|Z15963}} || ✅ || ✅ || [[WF:human languages/Z1430#natural number|WF:HL]]
|-
| {{z|Z1531}} || {{z|Z15567}} || ✅ || ✅ || [[WF:human languages/Z1531#natural number|WF:HL]]
|-
| {{z|Z1534}} || {{z|Z16185}} || ✅ || ✅ || [[WF:human languages/Z1534#natural number|WF:HL]]
|-
| {{z|Z1592}} || {{z|Z16008}}<br>{{z|Z37749}} || ✅ || ✅ || [[WF:human languages/Z1592#natural number|WF:HL]]
|-
| {{z|Z1624}} || {{z|Z16184}} || ✅ || ✅ || [[WF:human languages/Z1624#natural number|WF:HL]]
|-
| {{z|Z1882}} || {{z|Z16313}} || ✅ || ❌ || [[WF:human languages/Z1882#natural number|WF:HL]]
|-
| {{z|Z1381}} || {{z|Z16398}} || ❌ || ❌ || [[WF:human languages/Z1381#natural number|WF:HL]]
|-
| {{z|Z1003}} || {{z|Z16431}} || ✅ || ✅ || [[WF:human languages/Z1003#natural number|WF:HL]]
|-
| {{z|Z1472}} || {{z|Z16443}} || ✅ || ✅ || [[WF:human languages/Z1003#natural number|WF:HL]]
|-
| {{z|Z1099}} || {{z|Z16409}} || ✅ || ✅ || [[WF:human languages/Z1099#natural number|WF:HL]]
|-
| {{z|Z1282}} || {{z|Z16608}} || ✅ || ✅ || [[WF:human languages/Z1381#natural number|WF:HL]]
|-
| {{Z|Z1820}} || {{Z|Z19334}} || ✅ || ✅ || [[WF:human languages/Z1820#natural number|WF:HL]]
|-
| {{z|Z1012}} || {{z|Z19484}} || ✅ || ✅ || [[WF:human languages/Z1012#natural number|WF:HL]]
|-
| {{Z|Z1787}} || {{Z|Z23003}} || ✅ || ✅ || [[WF:human languages/Z1787#natural number|WF:HL]]
|-
| {{Z|Z1158}} || {{Z|Z24618}} || ✅ || ✅ || [[WF:human languages/Z1158#natural number|WF:HL]]
|-
| {{Z|Z1078}} || {{Z|Z18546}} || ✅ || ✅ || [[WF:human languages/Z1078#natural number|WF:HL]]
|-
| {{Z|Z1762}} || {{Z|Z22455}} || ✅ || ✅ || [[WF:human languages/Z1762#natural number|WF:HL]]
|}
<span id="See_also"></span>
== Zobacz też ==
* {{Z|Z16435}}
* {{Z+|Z16437}}
* {{Z|Z14526}}
afeb56a0pct9qslovrf28uxcoto06be
Template:Documentation subpage/az
10
41446
297004
134158
2026-08-06T18:04:29Z
FuzzyBot
207
Updating to match new version of source page
297004
wikitext
text/x-wiki
<noinclude><languages/></noinclude><includeonly>{{#if:{{IsDocSubpage|override={{{override|doc}}}}}
| <!--doc subpage--></includeonly>{{#ifeq:{{{doc-notice|show}}}|show
| {{Ombox|type=notice|image=[[File:OOjs UI icon articles-ltr.svg|35px|link=|class=skin-invert-image]]
|text='''Bu, {{#if:{{{1|}}}
| {{{1}}}
| [[:{{SUBJECTSPACE}}:{{BASEPAGENAME}}]]
}} üçün nəzərdə tutulmuş [[Special:MyLanguage/Help:Template documentation|dokumentasiya]] [[mw:Special:MyLanguage/Help:Subpages|alt səhifəsidir]].'''<br/> Burada istifadə ilə bağlı məlumat, [[Special:MyLanguage/Help:Categorization|kateqoriyalar]] və orijinal<!--
--> {{#if: {{{text2|}}}
| {{{text2|}}}
| {{#if: {{{text1|}}}
| {{{text1|}}}
| {{#ifeq: {{SUBJECTSPACE}} | {{ns:User}}
| {{lc:{{SUBJECTSPACE}}}} şablon səhifəsi
| {{#if: {{SUBJECTSPACE}}
| {{lc:{{SUBJECTSPACE}}}} səhifəsi
| məqalə
}}
}}
}}
}} ilə əlaqədar olmayan digər kontent mövcuddur.
}}
<!--If not on a doc subpage, do nothing-->}}{{DEFAULTSORT:{{{defaultsort|{{PAGENAME}}}}}}}{{#if: {{{inhibit|}}}
| <!--Skip-->
| <includeonly>{{#ifexist: {{NAMESPACE}}:{{BASEPAGENAME}}
| [[Category:{{#switch: {{SUBJECTSPACE}}
|Template=Template
|Module=Module
|User=User
|#default=Template
}} documentation pages{{#translation:}}]]
| [[Category:Documentation subpages without corresponding pages{{#translation:}}]]
}}</includeonly>
}}<includeonly>
}}</includeonly><noinclude>{{Documentation}}[[Category:Template documentation]]<!--Add categories and interwikis to the /doc subpage, not here!--></noinclude>
43begzko5ivy5zqnvgovct6432i4yan
Wikifunctions:Status updates/az
4
41634
296981
295107
2026-08-06T18:03:30Z
FuzzyBot
207
Updating to match new version of source page
296981
wikitext
text/x-wiki
<languages/>
{{shortcut|WF:SU}}{{notice|1=<span lang="en" dir="ltr" class="mw-content-ltr">'''[[:m:Global message delivery/Targets/Wikifunctions & Abstract Wikipedia|Subscribe]]''' to receive short on-wiki MassMessage notifications about each new issue</span>}}
{{Wikifunctions updates
| prevlabel = <span lang="en" dir="ltr" class="mw-content-ltr">Previous update</span>
| prev = 2024-02-01
| nextlabel = <span lang="en" dir="ltr" class="mw-content-ltr">Last update</span>
| next = 2026-08-05
}}
<div lang="en" dir="ltr" class="mw-content-ltr">
A lot is happening around Wikifunctions and Abstract Wikipedia. This is the page where our updates are posted, including the [[Special:MyLanguage/WF:function of the Week|function of the Week]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
You can also subscribe to the [[:m:Global message delivery/Targets/Wikifunctions & Abstract Wikipedia|on-wiki newsletter]] to have them delivered to your talk page or to your project's village pump.
</div>
<inputbox>
type=fulltext
prefix={{NAMESPACE}}:{{PAGENAME}}/
break=no
width=30
searchbuttonlabel={{int:Search}}
placeholder=Search all status updates
</inputbox>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Newsletters ==
</div>
<!--<nowiki> Newsletter entry template:
* <translate><tvar name="1">{{Status updates|2026-0?-??}}</tvar>: Title</translate>
NOTE: Remember to also update the "next =" date at the top of this page.
</nowiki>-->
=== 2026 ===
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-08-05}}: An apple is a fruit</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-07-29}}: Abstract Wikipedia at Wikimania</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-07-16}}: Beyond syntactic tables</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-07-08}}: Moving toward our first Abstract Wikipedia integration milestone</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-07-01}}: Integration on test wiki and annual plan</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-06-26}}: Working on Functions, together</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-06-19}}: The or not the, this is (the?) question</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-06-12}}: Improved loading and display of Test results</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-06-05}}: The illustrated encyclopaedia</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-05-30}}: Looking back and forward</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-05-23}}: Annual plan 2026-2027</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-05-15}}: A higher meaning</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-05-08}}: References from Wikidata are now available</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-05-02}}: Request for input: what should we count for Abstract Wikipedia?</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-04-25}}: The Foundation's search for the perfect language</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-04-16}}: Milestones; Some major issues hopefully resolved</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-04-10}}: Community proposals for capturing meaning</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-04-02}}: Request for Discussion: Syntactic tables</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-03-26}}: First few days of Abstract Wikipedia Beta; Status of Composition Language v2</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-03-19}}: Abstract Wikipedia in Beta</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-03-11}}: A new composition language</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-03-06}}: Citations and Copy and Paste</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-02-26}}: Graceful overrides and fallbacks</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-02-20}}: A sneak preview of Abstract Wikipedia</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-02-13}}: Finishing each other sentences: Starting things; Offsite in Istanbul</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-01-29}}: Integrating Abstract Wikipedia</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-01-22}}: Quarterly plan for January–March 2026</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-01-15}}: 25 years of Wikipedia</span>
=== 2025 ===
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-12-18}}: We wish you a happy new Gregorian year!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-12-11}}: How to write better error messages</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-12-04}}: And the name is Abstract Wikipedia</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-11-27}}: Vote on the new wiki name!; Finishing each other’s sentences</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-11-20}}: Second round of voting for naming the wiki with language-independent content; Sharing function calls</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-11-13}}: Getting ready for second round of voting for naming the wiki with abstract content; Rewriting the backend: Why Rust?</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-11-05}}: First round of voting for naming the wiki for abstract content closed; Calling for Wiktionary functions; Embedded Wikifunctions on Bengali Wikipedia and seven more Wiktionaries</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-10-29}}: Round 1 of “abstract content wiki” naming vote ending Monday; An example of short descriptions</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-10-23}}: Welcome Zaree and Laura! Naming contest round 1 kicked off</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-10-15}}: Kicking Off the Naming Contest for Abstract Wikipedia; Visualizing functions</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-10-08}}: Decision on location for abstract content and Quarterly Planning for October–December</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-10-03}}: Rich text now available in embedded function calls on 148 Wiktionaries and Incubator</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-09-26}}: Accessing qualifiers in Wikidata statements</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-09-19}}: Wikifunctions available on 123 Wiktionary languages</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-09-12}}: More than 3,000 functions on Wikifunctions</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-09-07}}: Copying function calls from one Wikipedia to another</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-08-29}}: Accessing Wikidata items now possible from embedded function calls; Wikifunctions available on 65 Wikitionaries</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-08-22}}: Recording of Wikimania session: Wikifunctions is coming soon to a wiki near you!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-08-01}}: Wikimania 2025 is coming soon!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-07-26}}: “Wikipedia is an encyclopedia”; Two years of Wikifunctions</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-07-19}}: Wikidata-based enumerations are here</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-07-10}}: Length limits on labels and descriptions</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-07-04}}: Coverage of 1298</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-06-27}}: How many people are needed to write an encyclopedia?</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-06-21}}: Quarterly Planning for July–September 2025</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-06-15}}: Closing the consultation about the location of Abstract Content</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-06-06}}: Where will Abstract Content go?</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-05-29}}: Rolling out to five Wiktionaries; Calculating with today's date</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-05-23}}: Ongoing consultation about the Location for Abstract Content</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-05-15}}: Location of Abstract Content</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-05-09}}: Abstract Wikipedia and the Wikimedia AI Strategy</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-04-30}}: Abstract Wikipedia is a MacArthur 100&Change finalist</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-04-25}}: Welcome, Gregory!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-04-16}}: Wikifunctions integrated in Dagbani - and Wikifunctions; and the date of Easter</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-04-11}}: Quarter in review</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-04-05}}: Quarterly Planning for April–June 2025; We are looking for a Senior Product Manager</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-03-28}}: It's about time</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-03-20}}: Wikidata-based simple enumerations</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-03-15}}: Upcoming NLG meeting, Recent Changes in the software</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-03-07}}: Recent Changes in the software, Recording of Volunteer’s Corner, and talks in London</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-02-26}}: From things to words</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-02-19}}: A proposal for types per language and part of speech</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-02-13}}: Restricting the World, redux</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-02-06}}: Invitation to the Natural Language Generation Special Interest Group</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-01-29}}: With 2000 Functions into the new year: time for stats</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-01-22}}: Welcome, David! Naming conventions recommendations</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-01-15}}: Happy Wikipedia day! Quarterly planning</span>
=== 2024 ===
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-12-19}}: Function of the Week: age; Intros for year articles; New Type: Floating-point number</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-12-12}}: Sketching a path to Abstract Wikipedia; Team offsite in Lisbon; and much more</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-11-27}}: WordGraph release; New Special page: list functions by tests; new type for day of the year, and much more</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-11-21}}: New special page for missing labels, new type for Gregorian years, and much more</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-11-13}}: New Type: Rational number; Documentation on Wikidata-based types; and more</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-11-07}}: The Dream of a Universal Language</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-11-01}}: Rewriting the backend</span>
* {{Status updates|2024-10-25}}: Bu rüb üçün hədəfimiz: Uzlaşma
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-10-17}}: What could abstract content look like?</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-10-11}}: Wikidata Lexemes in Wikifunctions are coming soon</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-10-02}}: Focus topic: Food</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-09-26}}: Quarterly planning for October–December 2024; Presentation at Celtic Knot tomorrow</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-09-20}}: Introducing focus topic areas</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-09-13}}: Dagbani Wikipedia will be our first wiki for Wikifunctions integration</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-09-06}}: Volunteer's corner and other updates</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-08-29}}: Limits on Name and Description Lengths</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-08-23}}: WasmEdge, Now 300ms Less Edgy</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-08-16}}: Wikimania 2024 edition</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-08-02}}: Revamping our 'About' widget</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-07-26}}: Wikimania 2024 coming soon!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-07-18}}: Research report on integrating Wikifunctions from Wikipedia</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-07-10}}: Type proposals for accessing Lexemes</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-07-03}}: Quarterly planning</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-06-26}}: Welcome, Daphne!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-06-20}}: New Type: Integers</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-06-13}}: New Type: Igbo calendar months</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-06-06}}: New Type: Sign</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-05-30}}: A single singular or a plurality of plurals?</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-05-22}}: New Type: Gregorian calendar months</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-05-15}}: Call for Functions: Spell out the number!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-05-10}}: Flagship type for enumerations: Months of the Gregorian calendar</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-05-03}}: Team meeting and Quarterly plan</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-04-19}}: Welcome, Sharvani!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-04-11}}: New API for calling Wikifunctions and celebrating 1000 functions</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-04-03}}: Product Update on Diff and Upcoming API Improvements</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-03-28}}: Creating tests is now much easier!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-03-21}}: On the way to internationalizing numbers</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-03-13}}: On identity</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-03-07}}: Introducing our second new type: Natural numbers</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-02-28}}: Type proposal for natural numbers</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-02-22}}: Updating the function model</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-02-14}}: Fix-it week</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-02-07}}: Quarterly planning. Thank you, Nick! Function of the Week: is permutation</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-02-01}}: The Igbo Imperative!</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Before February 2024 ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
All updates from this period are [[:m:Special:MyLanguage/Abstract Wikipedia/Updates|available on Meta-Wiki]].
</div>
[[Category:Status updates{{#translation:}}| ]]
sto2bqhkxrgf2t92n2od73wn25j173t
Wikifunctions:Cardinal numbers/az
4
41636
296871
261553
2026-08-06T17:59:41Z
FuzzyBot
207
Updating to match new version of source page
296871
wikitext
text/x-wiki
<languages/>
{{Move|Wikifunctions:Catalogue/Natural language operations/Cardinal numbers|reason=This page is a list of functions, but is outside the catalogue}}
<div lang="en" dir="ltr" class="mw-content-ltr">
We are looking to have functions to create the names of numbers in many different languages. The [[Special:MyLanguage/Wikifunctions:Status updates/2024-05-15|newsletter from 15 May 2024]] made a Call for Functions!
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
On this page, we collect and list the existing functions and related objects in order to coordinate the work.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The functions take as input a [[Z13518|natural number]] and return a [[Z6|string]]. There can be more than one function per language.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Languages covered ==
</div>
<div class="mw-translate-fuzzy">
Hələ ki, 21 ədəd.
</div>
{| class="wikitable sortable"
|+ <span lang="en" dir="ltr" class="mw-content-ltr">functions by [[Special:ListObjectsByType/Z60|language]]</span>
|-
! <span lang="en" dir="ltr" class="mw-content-ltr">Language</span> !! <span lang="en" dir="ltr" class="mw-content-ltr">Function</span> !! <span lang="en" dir="ltr" class="mw-content-ltr">Tested</span> !! <span lang="en" dir="ltr" class="mw-content-ltr">Implemented</span> !! <span lang="en" dir="ltr" class="mw-content-ltr">Planning</span>
|-
| {{z|Z1002}} || {{z|Z13587}} || ✅ || ✅ || [[WF:human languages/Z1002#natural number|WF:HL]]
|-
| {{z|Z1004}} || {{z|Z16093}} || ✅ || ✅ || [[WF:human languages/Z1004#natural number|WF:HL]]
|-
| {{z|Z1011}} || {{z|Z16150}} || ✅ || ✅ || [[WF:human languages/Z1011#natural number|WF:HL]]
|-
| {{z|Z1014}} || {{z|Z16053}} || ✅ || ✅ || [[WF:human languages/Z1014#natural number|WF:HL]]
|-
| {{z|Z1025}} || {{z|Z15965}} || ✅ || ✅ || [[WF:human languages/Z1025#natural number|WF:HL]]
|-
| {{z|Z1045}} || {{z|Z16172}} || ✅ || ✅ || [[WF:human languages/Z1045#natural number|WF:HL]]
|-
| {{z|Z1062}} || {{z|Z32780}} || ✅ || ⛓️💥 || [[WF:human languages/Z1062#natural number|WF:HL]]
|-
| {{z|Z1146}} || {{z|Z16163}} || ✅ || ✅ || [[WF:human languages/Z1146#natural number|WF:HL]]
|-
| {{z|Z1272}} || {{z|Z16085}} || ✅ || ✅ || [[WF:human languages/Z1272#natural number|WF:HL]]
|-
| {{z|Z1332}} || {{z|Z15953}} || ✅ || ✅ || [[WF:human languages/Z1332#natural number|WF:HL]]
|-
| {{z|Z1430}} || {{z|Z15963}} || ✅ || ✅ || [[WF:human languages/Z1430#natural number|WF:HL]]
|-
| {{z|Z1531}} || {{z|Z15567}} || ✅ || ✅ || [[WF:human languages/Z1531#natural number|WF:HL]]
|-
| {{z|Z1534}} || {{z|Z16185}} || ✅ || ✅ || [[WF:human languages/Z1534#natural number|WF:HL]]
|-
| {{z|Z1592}} || {{z|Z16008}}<br>{{z|Z37749}} || ✅ || ✅ || [[WF:human languages/Z1592#natural number|WF:HL]]
|-
| {{z|Z1624}} || {{z|Z16184}} || ✅ || ✅ || [[WF:human languages/Z1624#natural number|WF:HL]]
|-
| {{z|Z1882}} || {{z|Z16313}} || ✅ || ❌ || [[WF:human languages/Z1882#natural number|WF:HL]]
|-
| {{z|Z1381}} || {{z|Z16398}} || ❌ || ❌ || [[WF:human languages/Z1381#natural number|WF:HL]]
|-
| {{z|Z1003}} || {{z|Z16431}} || ✅ || ✅ || [[WF:human languages/Z1003#natural number|WF:HL]]
|-
| {{z|Z1472}} || {{z|Z16443}} || ✅ || ✅ || [[WF:human languages/Z1003#natural number|WF:HL]]
|-
| {{z|Z1099}} || {{z|Z16409}} || ✅ || ✅ || [[WF:human languages/Z1099#natural number|WF:HL]]
|-
| {{z|Z1282}} || {{z|Z16608}} || ✅ || ✅ || [[WF:human languages/Z1381#natural number|WF:HL]]
|-
| {{Z|Z1820}} || {{Z|Z19334}} || ✅ || ✅ || [[WF:human languages/Z1820#natural number|WF:HL]]
|-
| {{z|Z1012}} || {{z|Z19484}} || ✅ || ✅ || [[WF:human languages/Z1012#natural number|WF:HL]]
|-
| {{Z|Z1787}} || {{Z|Z23003}} || ✅ || ✅ || [[WF:human languages/Z1787#natural number|WF:HL]]
|-
| {{Z|Z1158}} || {{Z|Z24618}} || ✅ || ✅ || [[WF:human languages/Z1158#natural number|WF:HL]]
|-
| {{Z|Z1078}} || {{Z|Z18546}} || ✅ || ✅ || [[WF:human languages/Z1078#natural number|WF:HL]]
|-
| {{Z|Z1762}} || {{Z|Z22455}} || ✅ || ✅ || [[WF:human languages/Z1762#natural number|WF:HL]]
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
== See also ==
</div>
* {{Z|Z16435}}
* {{Z+|Z16437}}
* {{Z|Z14526}}
8znpih74fqoan5zvxg6ouk5x02w5txl
Z19562
0
41909
297040
135683
2026-08-06T18:21:14Z
Ameisenigel
44
de
297040
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z19562"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z19536",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z19536",
"Z19536K1": [
"Z1",
{
"Z1K1": "Z13518",
"Z13518K1": "2"
},
{
"Z1K1": "Z13518",
"Z13518K1": "4"
},
{
"Z1K1": "Z13518",
"Z13518K1": "6"
},
{
"Z1K1": "Z13518",
"Z13518K1": "8"
}
],
"Z19536K2": "Z13977",
"Z19536K3": {
"Z1K1": "Z13518",
"Z13518K1": "512"
}
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z13522",
"Z13522K2": {
"Z1K1": "Z13518",
"Z13518K1": "4"
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "4th element of [2,4,6,8] has a cube of 512"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "4. Element ergibt n^3 = 512"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
qqa755c2rwbrqyes70261fr7dbvhrgi
Z19563
0
41912
297041
135686
2026-08-06T18:22:47Z
Ameisenigel
44
de
297041
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z19563"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z873",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z873",
"Z873K1": "Z11040",
"Z873K2": [
"Z1",
"hello",
"world"
]
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z889",
"Z889K2": [
"Z1",
{
"Z1K1": "Z13518",
"Z13518K1": "5"
},
{
"Z1K1": "Z13518",
"Z13518K1": "5"
}
],
"Z889K3": "Z13522"
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "string lengths of [\"hello\",\"world\"] = [5,5]"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "Map-Funktion mit Länge einer Zeichenkette"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
gkyinrzdi4a1votmomqc1k338x9o393
Z19564
0
41913
297042
189074
2026-08-06T18:23:07Z
Ameisenigel
44
de
297042
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z19564"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z15256",
"Z14K3": {
"Z1K1": "Z16",
"Z16K1": "Z600",
"Z16K2": "function Z15256( Z15256K1 ) {\n\treturn Math.floor(Number(Z15256K1)**0.5)\n}"
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "natural number square root, JS approximation"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "racine carrée entière, en JavaScript"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "ganzzahlige Quadratwurzel in JavaScript"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
ajjtpsi89ug1ynuil6ftkt4tz7spv1i
Z19565
0
41914
297043
284062
2026-08-06T18:26:24Z
Ameisenigel
44
de
297043
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z19565"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z40",
"Z17K2": "Z19565K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "condition 1"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "condition 1"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "condizione 1"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1157",
"Z11K2": "voorwaarde 1"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1078",
"Z11K2": "kondisi 1"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "Bedingung 1"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z1",
"Z17K2": "Z19565K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "if condition 1 true"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "si la condition 1 est vraie"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "se condizione 1 vera"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1157",
"Z11K2": "als voorwaarde 1 waar is"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1078",
"Z11K2": "kondisi 2"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "wenn Bedingung 1 wahr"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z40",
"Z17K2": "Z19565K3",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Condition 2"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "condition 2"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "condizione 2"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1157",
"Z11K2": "voorwaarde 2"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1078",
"Z11K2": "kondisi 3"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "Bedingung 2"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z1",
"Z17K2": "Z19565K4",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "if condition 2 and not condition 1 true"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "si la condition 2 est vraie mais pas la cond. 1"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "se condizione 2 vera"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1157",
"Z11K2": "als voorwaarde 2 en niet voorwaarde 1 waar is"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1078",
"Z11K2": "jika kondisi 2 dan bukan kondisi 1 benar"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "wenn Bedingung 2 und nicht 1 wahr"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z1",
"Z17K2": "Z19565K5",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "if none true"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "si aucune des deux conditions n'est vraie"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "se entrambe condizioni false"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1157",
"Z11K2": "als geen van beide waar is"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1078",
"Z11K2": "jika tidak ada yang benar"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "wenn keines wahr"
}
]
}
}
],
"Z8K2": "Z1",
"Z8K3": [
"Z20",
"Z19567",
"Z19568",
"Z19569",
"Z19570",
"Z21993",
"Z29101"
],
"Z8K4": [
"Z14",
"Z19566"
],
"Z8K5": "Z19565"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Triple if"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "triple si"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "triplo se"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1157",
"Z11K2": "drievoudig als"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1078",
"Z11K2": "tripel jika"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "dreifaches wenn"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31",
{
"Z1K1": "Z31",
"Z31K1": "Z1002",
"Z31K2": [
"Z6",
"3 ifs",
"if 3 options",
"else if",
"elif"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1004",
"Z31K2": [
"Z6",
"3 si "
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1787",
"Z31K2": [
"Z6",
"3 se",
"se con 3 opzioni"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1157",
"Z31K2": [
"Z6",
"3 als-voorwaarden",
"als 3 opties",
"anders als"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1078",
"Z31K2": [
"Z6",
"3 jika"
]
}
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "2 if statements, designed so that you do not have to nest them in the weird way required with the built-in function. For ifs of greater values, see N-ifs (Z19602)"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "deux instructions « si », conçues pour que vous n'ayez pas à les imbriquer de la manière étrange requise avec la fonction intégrée. Pour les « si » de valeurs supérieures, voir premier vrai (Z19602)"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1157",
"Z11K2": "2 als-verklaringen die zo zijn ontworpen dat onhandig nesten, zoals vereist bij de ingebouwde functie, niet nodig is"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1078",
"Z11K2": "mengevaluasi dua kondisi if equal sekaligus secara bersamaan. Fungsinya menyederhanakan penulisan kode sehingga pengguna tidak perlu menumpuk fungsi bawaan ifeq yang rumit"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "kombiniert zwei Wenn-Aussagen"
}
]
}
}
prl8xf2ahqamod2ib5cg89on7wg73bn
Z19566
0
41915
297044
245069
2026-08-06T18:27:34Z
Ameisenigel
44
de
297044
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z19566"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z19565",
"Z14K2": {
"Z1K1": "Z7",
"Z7K1": "Z802",
"Z802K1": {
"Z1K1": "Z18",
"Z18K1": "Z19565K1"
},
"Z802K2": {
"Z1K1": "Z18",
"Z18K1": "Z19565K2"
},
"Z802K3": {
"Z1K1": "Z7",
"Z7K1": "Z802",
"Z802K1": {
"Z1K1": "Z18",
"Z18K1": "Z19565K3"
},
"Z802K2": {
"Z1K1": "Z18",
"Z18K1": "Z19565K4"
},
"Z802K3": {
"Z1K1": "Z18",
"Z18K1": "Z19565K5"
}
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Triple if, composition"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "triple si, en Composition (1)"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1157",
"Z11K2": "drievoudig als, compositie"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "dreifaches wenn als Komposition"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
lem394cmvtbiow4nzapy6i1k2s5vti8
Z19567
0
41916
297045
245083
2026-08-06T18:28:52Z
Ameisenigel
44
de
297045
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z19567"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z19565",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z19565",
"Z19565K1": {
"Z1K1": "Z40",
"Z40K1": "Z42"
},
"Z19565K2": "a",
"Z19565K3": {
"Z1K1": "Z40",
"Z40K1": "Z42"
},
"Z19565K4": "b",
"Z19565K5": "c"
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z866",
"Z866K2": "c"
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "[F,F,\"a\",\"b\",\"c\"] = \"c\""
},
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "[faux,faux,\"a\",\"b\",\"c\"] = \"c\""
},
{
"Z1K1": "Z11",
"Z11K1": "Z1157",
"Z11K2": "[onwaar, onwaar, \"a\" ,\"b\" ,\"c\"] = \"c\""
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "Bedingung 1 falsch, Bedingung 2 falsch"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
mw4r3c22ugkefywutw3csrmy9eycjx2
Z19568
0
41917
297046
245082
2026-08-06T18:29:22Z
Ameisenigel
44
de
297046
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z19568"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z19565",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z19565",
"Z19565K1": {
"Z1K1": "Z40",
"Z40K1": "Z41"
},
"Z19565K2": "a",
"Z19565K3": {
"Z1K1": "Z40",
"Z40K1": "Z42"
},
"Z19565K4": "b",
"Z19565K5": "c"
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z866",
"Z866K2": "a"
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "[T,F,\"a\",\"b\",\"c\"] = \"a\""
},
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "[vrai,faux,\"a\",\"b\",\"c\"] = \"a\""
},
{
"Z1K1": "Z11",
"Z11K1": "Z1157",
"Z11K2": "[waar, onwaar, \"a\" ,\"b\", \"c\"] = \"a\""
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "Bedingung 1 wahr, Bedingung 2 falsch"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
fwvcrisj0hgijg7tpuov9ogu7r0hkvx
Z19569
0
41918
297047
245087
2026-08-06T18:30:23Z
Ameisenigel
44
de
297047
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z19569"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z19565",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z19565",
"Z19565K1": {
"Z1K1": "Z40",
"Z40K1": "Z42"
},
"Z19565K2": "a",
"Z19565K3": {
"Z1K1": "Z40",
"Z40K1": "Z41"
},
"Z19565K4": "b",
"Z19565K5": "c"
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z866",
"Z866K2": "b"
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "[F,T,\"a\",\"b\",\"c\"] = \"b\""
},
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "[faux,vrai,\"a\",\"b\",\"c\"] = \"b\""
},
{
"Z1K1": "Z11",
"Z11K1": "Z1157",
"Z11K2": "[onwaar, waar, \"a\", \"b\", \"c\"] = \"b\""
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "Bedingung 1 falsch, Bedingung 2 wahr"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
7pcqi1ler4mf9v6nzhmjzuocutjgfad
Wikifunctions:Catalogue/Natural language operations/Igbo
4
41940
296855
289996
2026-08-06T12:18:37Z
99of9
1622
Z38933
296855
wikitext
text/x-wiki
* {{Z+|Z11353}}
* {{Z+|Z11306}}
* {{Z+|Z11248}}
* {{Z+|Z12408}}
* {{Z+|Z12770}}
* {{Z+|Z12806}}
* {{Z+|Z13145}}
* {{Z+|Z13916}}
* {{Z+ |Z13922}}
* {{Z+|Z13927}}
* {{Z+|Z16000}}
* {{Z+|Z16053}}
* {{Z+|Z16074}}
* {{Z+|Z16524}}
* {{Z+|Z35780}}
* {{Z+|Z38933}}
== Function usage on Abstract Wikipedia ==
See function usage on Abstract Wikipedia on this [https://abstract-data.toolforge.org/?lang=ig tool for ig].
==Configurations==
{{LanguageConfigurations|Language=ig}}
[[Category:Lists of functions]]
[[Category:Igbo]]
oql047amb0pq8bgmrquktk4yvr39yk0
Z19570
0
41980
297048
245092
2026-08-06T18:30:47Z
Ameisenigel
44
de
297048
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z19570"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z19565",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z19565",
"Z19565K1": {
"Z1K1": "Z40",
"Z40K1": "Z41"
},
"Z19565K2": "a",
"Z19565K3": {
"Z1K1": "Z40",
"Z40K1": "Z41"
},
"Z19565K4": "b",
"Z19565K5": "c"
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z866",
"Z866K2": "a"
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "[T,T,\"a\",\"b\",\"c\"] = \"a\""
},
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "[vrai,vrai,\"a\",\"b\",\"c\"] = \"a\""
},
{
"Z1K1": "Z11",
"Z11K1": "Z1157",
"Z11K2": "[waar, waar, \"a\" ,\"b\" ,\"c\"] = \"a\""
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "Bedingung 1 wahr, Bedingung 2 wahr"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
syl7b3lbvczpicqavdtzxaag753upqh
Z19679
0
42422
296857
292609
2026-08-06T12:34:32Z
Geno (WMF)
107
Separate comma-separated strings into different aliases in Indonesian
296857
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z19679"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z19677",
"Z17K2": "Z19679K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "1st item"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1011",
"Z11K2": "প্রথম সংখ্যা"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "premier élément"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "primo razionale"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1078",
"Z11K2": "butir pertama "
},
{
"Z1K1": "Z11",
"Z11K1": "Z1592",
"Z11K2": "första talet"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z19677",
"Z17K2": "Z19679K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "2nd item"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1011",
"Z11K2": "দ্বিতীয় সংখ্যা"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "second élément"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "secondo razionale"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1078",
"Z11K2": "butir kedua"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1592",
"Z11K2": "andra talet"
}
]
}
}
],
"Z8K2": "Z19677",
"Z8K3": [
"Z20",
"Z19693",
"Z19705",
"Z19773",
"Z19791",
"Z32019",
"Z32020",
"Z32021"
],
"Z8K4": [
"Z14",
"Z19704",
"Z19680",
"Z32018"
],
"Z8K5": "Z19679"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "add rational numbers"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1011",
"Z11K2": "মূলদ সংখ্যা যোগ"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "additionner deux nombres rationnels"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "somma numeri razionali"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1078",
"Z11K2": "menjumlahkan dua bilangan rasional"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1592",
"Z11K2": "addera två Rationella tal"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31",
{
"Z1K1": "Z31",
"Z31K1": "Z1002",
"Z31K2": [
"Z6",
"add fractions",
"fraction addition",
"+",
"add probabilities of mutually exclusive events",
"probability addition for mutually exclusive events",
"P(A or B) = P(A) + P(B)",
"rational number addition",
"add rationals",
"rational add"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1011",
"Z31K2": [
"Z6",
"যোগ",
"মূলদ সংখ্যার সংযোগ"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1787",
"Z31K2": [
"Z6",
"somma frazioni",
"addizione frazioni",
"addizione numeri razionali"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1078",
"Z31K2": [
"Z6",
"menambahkan pecahan",
"penjumlahan pecahan",
"+",
"menambahkan probabilitas kejadian yang saling lepas",
"penjumlahan probabilitas untuk kejadian yang saling lepas",
"P(A atau B) = P(A) + P(B)",
"penjumlahan bilangan rasional",
"menambahkan bilangan rasional"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1004",
"Z31K2": [
"Z6",
"additionner des nombres rationnels"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1592",
"Z31K2": [
"Z6",
"summera två Rationella tal"
]
}
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "returns the sum of two rational numbers"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1011",
"Z11K2": "দুটি মূলদ সংখ্যার যোগফল গণনা করবে। "
},
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "renvoie la somme de deux nombres rationnels"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1078",
"Z11K2": "menjalankan penjumlahan dari dua bilangan rasional"
}
]
}
}
4i4yvi0qjw5x1teyzik5ldt8r4cjnuj
Wikifunctions:Status updates/ar
4
42956
296982
296764
2026-08-06T18:03:30Z
FuzzyBot
207
Updating to match new version of source page
296982
wikitext
text/x-wiki
<languages/>
{{shortcut|WF:SU}}{{notice|1='''[[:m:Global message delivery/Targets/Wikifunctions & Abstract Wikipedia|الاشتراك]]''' لتلقي إشعارات الرسائل الكمية القصيرة على الويكي حول كل إصدار جديد}}
{{Wikifunctions updates
| prevlabel = تحديثات سابقة
| prev = 2024-02-01
| nextlabel = آخر تحديث
| next = 2026-08-05
}}
هذه الصفحة تُنشر فيها تحديثاتنا حول ما يحدث في ويكي دوال وويكيبيديا المجردة، بما في ذلك [[Special:MyLanguage/WF:function of the Week|دالة الأسبوع]].
يمكنك كذلك الاشتراك في [[:m:Global message delivery/Targets/Wikifunctions & Abstract Wikipedia|النشرة الإخبارية على الويكي]] لتصلك إلى صفحة نقاشك أو إلى ميدان مشروعك.
<inputbox>
type=fulltext
prefix={{NAMESPACE}}:{{PAGENAME}}/
break=no
width=30
searchbuttonlabel={{int:Search}}
placeholder=البحث في كافة تحديثات الحالة
</inputbox>
<span id="Newsletters"></span>
== النشرات الإخبارية ==
<!--<nowiki> Newsletter entry template:
* <translate><tvar name="1">{{Status updates|2026-0?-??}}</tvar>: Title</translate>
NOTE: Remember to also update the "next =" date at the top of this page.
</nowiki>-->
=== 2026 ===
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-08-05}}: An apple is a fruit</span>
* {{Status updates|2026-07-29}}: ويكيبيديا المجردة في ويكيمانيا
* {{Status updates|2026-07-16}}: ما وراء الجداول النحوية
* {{Status updates|2026-07-08}}: المضي قدمًا نحو أول محطة لإدماج ويكيبيديا المجردة
* {{Status updates|2026-07-01}}: الإدماج في ويكي الاختبار والخطة السنوية
* {{Status updates|2026-06-26}}: العمل معًا على الدوال
* {{Status updates|2026-06-19}}: "الـ" أم لا "الـ"، تلك هي (الـ؟) مسألة
* {{Status updates|2026-06-12}}: تحميل وعرض محسّن لنتائج الاختبارات
* {{Status updates|2026-06-05}}: الموسوعة المصوّرة
* {{Status updates|2026-05-30}}: نظرة إلى الماضي والمستقبل
* {{Status updates|2026-05-23}}: الخطة السنوية 2026-2027
* {{Status updates|2026-05-15}}: معنىً أعلى
* {{Status updates|2026-05-08}}: المراجع من ويكي بيانات متاحة الآن
* {{Status updates|2026-05-02}}: طلب رأي: ما الذي ينبغي أن نحصيه في ويكيبيديا المجردة؟
* {{Status updates|2026-04-25}}: بحث المؤسسة عن اللغة المثالية
* {{Status updates|2026-04-16}}: معالم؛ نأمل أن تكون بعض المُشكلات الرئيسية قد حُلت
* {{Status updates|2026-04-10}}: مقترحات المجتمع لالتقاط المعنى
* {{Status updates|2026-04-02}}: طلب مناقشة: الجداول النحوية
* {{Status updates|2026-03-26}}: الأيام الأولى من النسخة التجريبية لويكيبيديا المجردة؛ حالة لغة التركيب v2
* {{Status updates|2026-03-19}}: ويكيبيديا المجردة في نسختها التجريبية
* {{Status updates|2026-03-11}}: لغة تركيب جديدة
* {{Status updates|2026-03-06}}: الاستشهادات والنسخ واللصق
* {{Status updates|2026-02-26}}: تجاوزات مرنة وبدائل احتياطية
* {{Status updates|2026-02-20}}: نظرة أوليّة سريعة على ويكيبيديا المجردة
* {{Status updates|2026-02-13}}: إكمال جمل بعضنا البعض: بدء أشياء؛ اجتماع خارجي في إسطنبول
* {{Status updates|2026-01-29}}: إدماج ويكيبيديا المجردة
* {{Status updates|2026-01-22}}: الخطة الربع سنوية لفترة يناير–مارس 2026
* {{Status updates|2026-01-15}}: 25 عامًا من ويكيبيديا
=== 2025 ===
* {{Status updates|2025-12-18}}: نتمنى لك سنة ميلادية جديدة سعيدة
* {{Status updates|2025-12-11}}: كيف تكتب رسائل الخطأ بشكل أفضل
* {{Status updates|2025-12-04}}: والاسم هو ويكيبيديا المجردة
* {{Status updates|2025-11-27}}: التصويت على اسم الويكي الجديد!؛ إكمال الجمل لبعضنا البعض
* {{Status updates|2025-11-20}}: الجولة الثانية من التصويت على تسمية ويكي المحتوى المستقل عن اللغة؛ مشاركة استدعاءات الدالة
* {{Status updates|2025-11-13}}: الاستعداد للجولة الثانية من التصويت لتسمية الويكي ذات المحتوى المجرد؛ إعادة كتابة الواجهة الخلفية: لماذا Rust؟
* {{Status updates|2025-11-05}}: إغلاق الجولة الأولى من التصويت لتسمية ويكي المحتوى المجرد؛ دعوة لإنشاء دوال ويكاموس؛ تضمين ويكي دوال في ويكيبيديا البنغالية وفي سبعة أخرى من ويكاموس.
* {{Status updates|2025-10-29}}: تنتهي يوم الاثنين الجولة 1 من التصويت على تسمية "ويكي المحتوى المجرّد"؛ مثال على أوصاف قصيرة
* {{Status updates|2025-10-23}}: أهلا Zaree وLaura! انطلقت الجولة 1 من منافسة التسمية
* {{Status updates|2025-10-15}}: انطلاق منافسة تسمية ويكيبيديا المجردة؛ تصوّر للدوال
* {{Status updates|2025-10-08}}: قرار بشأن موقع المحتوى المجرّد والتخطيط الربع سنوي لشهري أكتوبر-ديسمبر
* {{Status updates|2025-10-03}}: النص غني التنسيق متاح الآن في الاستدعاءات المضمّنة للدوال على 148 من مشاريع ويكاموس والحاضنة
* {{Status updates|2025-09-26}}: الوصول إلى تصفيات البيانات في ويكي بيانات
* {{Status updates|2025-09-19}}: ويكي دوال متاحة على 123 لغة من ويكاموس
* {{Status updates|2025-09-12}}: أكثر من 3000 دالة على ويكي دوال
* {{Status updates|2025-09-07}}: نسخ استدعاءات الدوال من ويكيبيديا إلى أخرى
* {{Status updates|2025-08-29}}: أصبح الوصول إلى عناصر ويكي بيانات ممكنًا الآن من خلال استدعاءات مضمنّة للدوال؛ تتوفر ويكي دوال على 65 من مشاريع ويكاموس
* {{Status updates|2025-08-22}}: تسجيل لجلسة ويكيمانيا: ويكي دوال قادمة قريبًا إلى ويكي قريبة منك!
* {{Status updates|2025-08-01}}: ويكيمانيا 2025 قادمة قريبًا
* {{Status updates|2025-07-26}}: «ويكيبيديا موسوعة»؛ سنتين من ويكي دوال
* {{Status updates|2025-07-19}}: هنا التعدادات المستندة على ويكي بيانات
* {{Status updates|2025-07-10}}: حدود الطول للتسميات والأوصاف
* {{Status updates|2025-07-04}}: تغطية لـ 1298م
* {{Status updates|2025-06-27}}: كم عدد الأشخاص اللازمين لكتابة موسوعة؟
* {{Status updates|2025-06-21}}: التخطيط الربعي لشهر يوليو-سبتمبر 2025
* {{Status updates|2025-06-15}}: إنهاء المشاورة حول موقع المحتوى المجرّد
* {{Status updates|2025-06-06}}: أين سيذهب المحتوى المجرّد؟
* {{Status updates|2025-05-29}}: الطرح إلى خمسة من ويكاموس؛ الحساب مع تاريخ اليوم
* {{Status updates|2025-05-23}}: مشاورة جارية حول موقع المحتوى المجرّد
* {{Status updates|2025-05-15}}: موقع المحتوى المجرّد
* {{Status updates|2025-05-09}}: ويكيبيديا المجردة واستراتيجية ويكيميديا للذكاء الاصطناعي
* {{Status updates|2025-04-30}}: ويكيبيديا المجردة منافس نهائي في مسابقة ماكارثر 100وتغيير
* {{Status updates|2025-04-25}}: أهلاً وسهلاً، غريغوري!
* {{Status updates|2025-04-16}}: ويكي الدوال مدمجة في داغباني - وويكي الدوال؛ وتاريخ عيد الفصح
* {{Status updates|2025-04-11}}: مراجعة ربعية
* {{Status updates|2025-04-05}}: التخطيط الربعي لأبريل-يونيو 2025؛ نحن نبحث عن مدير منتج أعلى
* {{Status updates|2025-03-28}}: لقد حان الوقت
* {{Status updates|2025-03-20}}: تعدادات بسيطة قائمة على ويكي بيانات
* {{Status updates|2025-03-15}}: اجتماع قادم بخصوص توليد اللغة الطبيعية، التغييرات الأخيرة في البرمجية
* {{Status updates|2025-03-07}}: التغييرات الأخيرة في البرمجية، مقطع تسجيلي لجلسة ركن المتطوعين وتفاصيل النقاشات في لندن
* {{Status updates|2025-02-26}}: من أشياء إلى كلمات
* {{Status updates|2025-02-19}}: مقترح للأنواع لكل لغة وجزء من الكلام
* {{Status updates|2025-02-13}}: تقييد العالم، إعادة
* {{Status updates|2025-02-06}}: دعوة لمجموعة الاهتمام الخاص بتوليد اللغة الطبيعية
* {{Status updates|2025-01-29}}: مع 2000 دالة في العام الجديد: حان وقت الإحصائيات
* {{Status updates|2025-01-22}}: مرحبًا ديفيد! توصيات أعراف التسميّة
* {{Status updates|2025-01-15}}: يوم ويكيبيديا سعيد! التخطيط ربع السنوي
=== 2024 ===
* {{Status updates|2024-12-19}}: دالة الأسبوع: العمر؛ مقدمات لمقالات السنوات؛ نوع جديد: عدد فاصلة عائمة
* {{Status updates|2024-12-12}}: رسم مسار لويكيبيديا المجردة؛ الفريق خارج الموقع في لشبونة؛ نوع جديد؛ وأكثر من ذلك بكثير
* {{Status updates|2024-11-27}}: إصدار WordGraph؛ صفحة خاصة جديدة: سرد قائمة الدوال بحسب الاختبارات؛ نوع جديد ليوم العام، وأكثر من ذلك بكثير
* {{Status updates|2024-11-21}}: صفحة خاصة جديدة للتسميّات الناقصة، ونوع جديد للسنوات الغريغورية، وأكثر من ذلك بكثير
* {{Status updates|2024-11-13}}: نوع جديد: عدد نسبي «كسري»؛ توثيقات للأنواع المرتكزة على ويكي بيانات؛ وأكثر من ذلك
* {{Status updates|2024-11-07}}: حلم اللغة العالمية
* {{Status updates|2024-11-01}}: إعادة كتابة الخلفية
* {{Status updates|2024-10-25}}: هدفنا لهذا الربع من العام: اتفاق
* {{Status updates|2024-10-17}}: كيف يمكن أن يبدو المحتوى المجرد؟
* {{Status updates|2024-10-11}}: معجمِيات ويكي بيانات في ويكي دوال قادمة قريبًا
* {{Status updates|2024-10-02}}: موضوع التركيز: الطعام
* {{Status updates|2024-09-26}}: التخطيط ربع السنوي للفترة من أكتوبر إلى دجنبر 2024؛ العرض التقديمي في عقدة سلتيك غدا
* {{Status updates|2024-09-20}}: تقديم مجالات الموضوعات التركيزية
* {{Status updates|2024-09-13}}: ويكيبيديا داغباني ستكون أول ويكي لدينا لإدماج ويكي دوال
* {{Status updates|2024-09-06}}: ركن المتطوعين والتحديثات الأخرى
* {{Status updates|2024-08-29}}: حدود على أطوال الأسماء والوصف
* {{Status updates|2024-08-23}}: WasmEdge، الآن الحافة أقل بـ 300مث
* {{Status updates|2024-08-16}}: إصدار ويكيمانيا 2024
* {{Status updates|2024-08-02}}: إعادة تعديل عنصر الواجهة "حول"
* {{Status updates|2024-07-26}}: ويكيمنيا 2024 قادمة قريباً
* {{Status updates|2024-07-18}}: تقرير بحثي عن دمج ويكي دوال من ويكيبيديا
* {{Status updates|2024-07-10}}: كتابة المقترحات للوصول إلى المعجميات
* {{Status updates|2024-07-03}}: تخطيط ربع سنوي
* {{Status updates|2024-06-26}}: مرحباً يا دافني!
* {{Status updates|2024-06-20}}: نوع جديد: الأعداد الصحيحة
* {{Status updates|2024-06-13}}: النوع الجديد: أشهر تقويم إيغبو
* {{Status updates|2024-06-06}}: نوع جديد: الإشارة
* {{Status updates|2024-05-30}}: مفرد واحد أم جمع المجاميع؟
* {{Status updates|2024-05-22}}: نوع جديد: أشهر تقويم غريغوريان
* {{Status updates|2024-05-15}}: دعوة للدوال: تهجئة الرقم!
* {{Status updates|2024-05-10}}: النوع الرئيسي للتعدادات: الأشهر من التقويم الميلادي
* {{Status updates|2024-05-03}}: اجتماع الفريق وخطة ربع سنوية
* {{Status updates|2024-04-19}}: مرحباً يا شارفاني!
* {{Status updates|2024-04-11}}: واجهة برمجة تطبيقات جديدة لاستدعاء ويكي دوال والاحتفال بـ ألف دالة
* {{Status updates|2024-04-03}}: تحديث المنتج على مدونة ديف بشأن التحسينات القادمة لواجهة برمجة التطبيقات
* {{Status updates|2024-03-28}}: أصبح إنشاء الاختبارات الآن أسهل بكثير!
* {{Status updates|2024-03-21}}: في الطريق إلى تدويل الأرقام
* {{Status updates|2024-03-13}}: على الهوية
* {{Status updates|2024-03-07}}: نقدم لكم النوع الثاني الجديد: الأعداد الطبيعية
* {{Status updates|2024-02-28}}: اكتب مقترحًا للأعداد الطبيعية
* {{Status updates|2024-02-22}}: تحديث نموذج الدالة
* {{Status updates|2024-02-14}}: أسبوع الإصلاح
* {{Status updates|2024-02-07}}: التخطيط ربع السنوي. شكرا لك، نيك! دالة الأسبوع: هي التقليب
* {{Status updates|2024-02-01}}: حتمية الإيغبو!
<span id="Before_February_2024"></span>
=== قبل فبراير 2024 ===
جميع التحديثات لهذه الفترة [[:m:Special:MyLanguage/Abstract Wikipedia/Updates|موجودة على ميتا-ويكي]].
[[Category:Status updates{{#translation:}}| ]]
e4olccn59u22nb4ewc25d6ycaaa9nwd
Wikifunctions:FAQ/ar
4
43136
296911
234238
2026-08-06T18:01:54Z
FuzzyBot
207
Updating to match new version of source page
296911
wikitext
text/x-wiki
<languages/>
{{shortcut|[[WF:FAQ]]}}
هذه صفحة مخصصة للأسئلة الشائعة حول وظائف ويكي. من فضلك، لا تتردد في طرح سؤالك الخاص في [[Wikifunctions talk:FAQ|صفحة النقاش]]، إذا لم يكن سؤالك مدرجًا هنا!
يرجى أيضًا الاطلاع على [[:m:Special:MyLanguage/Abstract Wikipedia/FAQ|الأسئلة الشائعة على ميتا]] بخصوص المزيد من الأسئلة العامة حول ويكي دوال وويكيبيديا المجردة.
__TOC__
<span id="Introduction"></span>
== المقدمة ==
<span id="What_is_this_project_about?"></span>
=== ما هو هذا المشروع؟ ===
ويكي دوال هو مشروع ويكيميديا جديد يوفر قائمة بجميع أنواع الدوال التي يمكن لأي شخص الاتصال بها وكتابتها وصيانتها واستخدامها. كما أنها توفر التكنولوجيا الأساسية التي ستمكن في النهاية من ترجمة المقالات المستقلة لغويا من ويكيبيديا المجردة إلى ويكيبيديا بأي لغة. سيسمح هذا للجميع بالمساهمة وقراءة المقالات بلغاتهم المفضلة.
<span id="What_is_a_function?"></span>
== ما هي الدالة؟ ==
الدوال هي شكل من أشكال المعرفة التي يمكنها الإجابة على الأسئلة، مثل عدد الأيام التي مرت بين تاريخين أو المسافة بين مدينتين. يمكن للدوال الأكثر تعقيدًا أن تجيب على أسئلة أكثر تعقيدًا، مثل قيمة حجم شكل ثلاثي الأبعاد، أو المسافة بين المريخ والزهرة في تاريخ معين، أو ما إذا كان هناك نوعان على قيد الحياة في نفس الوقت.
<div class="mw-translate-fuzzy">
نحن نستخدم بالفعل الدوال في العديد من أنواع الاستعلامات المعرفية، مثل طرح سؤال على محرك البحث. القوالب، مثل [[:w:en:Template:Convert|قالب:تحويل]] و [[:w:en:Template:Age|قالب:العمر]] في ويكيبيديا الإنجليزية، هي أيضًا أمثلة على الدوال المستخدمة بالفعل في العديد من الويكيبيديات، المكتوبة في نصوص الويكي و وحدات ''لوا'' ونسخها يدويًا إلى كل ويكي حيثما تم احتياجها.
</div>
<span id="What_is_an_implementation?"></span>
=== ما هو التنفيذ (التطبيق)؟ ===
التنفيذ هو طريقة معينة لتنفيذ دالة. التنفيذ عبارة عن وصفة تسرد الخطوات المطلوبة لتشغيل الدالة. قد يكون جزءًا من التعليمات البرمجية في لغة برمجة أو مجموعة من الاستدعاءات لوظائف أخرى. قد يكون للوظيفة العديد من التطبيقات، والتي يجب أن تكون جميعها متكافئة.
<span id="What_is_a_test?"></span>
=== ما هو الاختبار؟ ===
الاختبار هو وسيلة لتحديد ما إذا كانت دالة معينة تفعل الشيء الصحيح. عادةً ما تحتوي الدالة على عدة اختبارات، يحدد كل منها بعض المدخلات للدالة والشروط التي يجب أن يستوفيها مخرج الإدخال المحدد.
على سبيل المثال، قد يتضمن مختبرو دالة "حالة العنوان" ما يلي: "<span dir="ltr" lang="en">abc</span>" يجب أن يصبح "<span dir="ltr" lang="en">Abc</span>"؛ "<span dir="ltr" lang="en">war and peace</span>" يجب أن يصبح "<span dir="ltr" lang="en">War and Peace</span>"؛ "<span dir="ltr" lang="ru">война и мир</span>" يجب أن يصبح "<span dir="ltr" lang="ru">Война и мир</span>"؛ و"<span dir="ltr" lang="en">123</span>" يجب أن يظل "<span dir="ltr" lang="en">123</span>".
<span id="Which_features_are_available_now,_which_will_be_soon_available,_and_which_are_further_away?"></span>
=== ما هي الميزات المتوفرة الآن، والتي ستكون متاحة قريبًا، وما هي الميزات البعيدة؟ ===
* عند الإطلاق:
** لدينا إمكانية الحصول على دوال تعمل مع السلاسل النصية والبوليانية.
** سيتم تدويل ويكي دوال بالكامل من البداية. ويمكن استخدامها بأي لغة.
* [[Wikifunctions:Status|تطوير مستمر]]:
** الأنواع العامة والدوال العامة غير مدعومة بشكل كامل.
** ستكون إضافة الأنواع، في الوقت الحالي، أمرًا يقتصر على فريق التطوير. وفي المستقبل، سيتمكن المجتمع من إضافة المزيد من الأنواع. هناك الكثير من العمل الذي يتعين القيام به في المستقبل لجعل الأنواع تتصرف بشكل أكثر سلاسة.
*** أحد الأنواع المثيرة للاهتمام بشكل خاص هو البيانات الثنائية، وخاصة الملفات.
** نحن ندعم حاليًا لغتي برمجة لعمليات التنفيذ: جافاسكريبت وبايثون. وفي المستقبل، نريد دعم المزيد.
** حاليًا، ''غير'' ممكن استدعاء دوال أخرى من التنفيذات المكتوبة بأي لغة برمجة. وهذا ممكن حاليًا فقط من خلال التكوين.
* في المستقبل:
** سيكون من الممكن استدعاء دوال ويكي دوال من مشاريع ويكيميديا أخرى ودمج النتائج المحصل عليها في إصدار الصفحة.
** سيكون من الممكن استخدام البيانات من ويكي بيانات في الدوال.
** سيكون من الممكن استدعاء مجموعات البيانات من نطاقات البيانات المعروفة.
<span id="How_is_Wikifunctions_multilingual?"></span>
=== كيف تكون ويكي دوال متعددة اللغات؟ ===
{{main|Special:MyLanguage/Help:Multilingual}}
ويكي دوال وويكيبديا المجردة متعددة اللغات بعدة طرق مختلفة والتي لا تؤثر بعضها ببعض:
* "'ويكي دوال متعدد اللغات من حيث المحتوى وواجهة المستخدم."' يمكن للمستخدمين قراءة و استدعاء وظائف على ويكي دوال بأي لغة طبيعية. هنا مثلا دالة "الإضافة إلى السلسلة" [https://www.wikifunctions.org/view/en/Z10000 بالإنجليزية], [https://www.wikifunctions.org/view/pl/Z10000 بالبولوندية]، و[https://www.wikifunctions.org/view/he/Z10000 بالعبرية], و هذه الدالة متاحة بالعديد من اللغات.
* "'المساهمين يمكنهم تحرير وتحسين ويكي دوال باستخدام لغتهم."' حتى التنفيذات يمكن تحريرها باللغة الطبيعية للمساهمين. على سبيل المثال تركيب دالة "و" يمكن تحريرها باللغات [https://www.wikifunctions.org/wiki/Z11223?action=edit&uselang=de الألمانية], [https://www.wikifunctions.org/wiki/Z11223?action=edit&uselang=en الإنجليزية]، أو أي لغة أخرى يعني حوالي 300 لغة.
* "'دوال ويكي دوال يمكن استخدامها لخلق نتائج لأي لغة طبيعية."' المجتمع ينشأ عدد متزايد من الدوال لدعم توليد النصوص في العديد من اللغات الطبيعية. لدينا دوال [[Wikifunctions:Catalogue#Breton|بريتون]], [[Wikifunctions:Catalogue#Rohingya|الروهنجيا]], [[Wikifunctions:Catalogue#English|الإنجليزية]] و العديد من اللغات الأخرى.
* "الدوال في ويكيدوال يمكن تطبيقها بمختلف لغات البرمجة."' على سبيل المثال، [[Z10000|دالة الضم]] يتم تنفيذها بكل من [[Z10005|جافا سكريبت]] و [[Z10004|بايثون]].
<span id="Which_programming_languages_does_Wikifunctions_currently_support?_Which_programming_languages_will_be_supported_in_the_future?"></span>
=== ما هي لغات البرمجة التي تدعمها ويكيدوال حاليا؟ وما هي لغات البرمجة التي سيتم دعمها في المستقبل؟ ===
{{main|WF:programming languages}}
حاليًا، ويكي دوال تدعم تطبيقات مكتوبة بجافا سكريبت وبايثون. ونحن نخطط لإضافة دعم لغات برمجة أكثر في المستقبل. ونأمل بإضافة لغة برمجة واحدة أخرى في الأقل في 2025 (ولكن لم تقرر بعد أي واحد).
<span id="How_will_Wikifunctions_be_integrated_into_other_projects?"></span>
=== كيف يمكن لويكي دوال تتكامل مع المشاريع الأخرى؟ ===
ويكي_دوال هي الخطوة الأولى نحو بناء ويكيبيديا المجردة. سينصب تركيزنا في المدى القريب على دعم المجتمع وإجراء تحسينات بناءً على الملاحظات. بالتزامن مع ذلك، سنبدأ عملية دمجه مع ويكيبيديا وويكي بيانات، مما سيمكن من تطبيقات واقعية أوسع ويقربنا من رؤية ويكيبيديا المجردة.
سيتمكن المساهمون من استدعاء الدوال المخزنة على موقع ويكي_دوال من داخل مواقع الويكي الخاصة بهم. ستُعرض نتيجة استدعاء الدالة لقراء الويكي. يمكن استخدام ذلك، على سبيل المثال، لحساب عمر شخص ما، أو الكثافة السكانية بناءً على بيانات السكان والمساحة من ويكي بيانات، أو لرسم بياني ودمجه في مقالة معينة.
هناك خيار آخر لدمج ويكي_دوال، وهو تضمين واجهة تفاعلية لاستدعاء الدوال داخل الويكي. يمكن استخدام ذلك، على سبيل المثال، في مقالة ويكيبيديا لحساب نتيجة معادلة فيزيائية بشكل ديناميكي بناءً على متغيرات يقدمها القارئ، أو لرسم الدوال الرياضية والتفاعل معها، وغير ذلك.
<span id="What_Wikifunctions_is_not"></span>
<div class="mw-translate-fuzzy">
=== ما الذي لا تمثله ويكي_دوال؟ ===
</div>
من فضلك، راجع [[Special:MyLanguage/Wikifunctions:What Wikifunctions is not|ويكي_دوال:ويكي دوال ليست]] لمزيد من المعلومات حول ذلك.
<span id="What_license_will_the_functions_and_derived_content_be_under?"></span>
=== تحت أي ترخيص ستكون الدوال والمحتوى المشتق؟ ===
بناءً على النقاش الذي جرى [[:m:Special:MyLanguage/Abstract Wikipedia/Licensing discussion|في ميتا خلال شهري نوفمبر وديسمبر 2021]]، ستكون جميع المساهمات في ويكي_دوال وفي مشاريع ويكيبيديا المجردة عمومًا متاحةً تحت تراخيص حرة. وتحديدًا:
* سيتم نشر [[Special:MyLanguage/Wikifunctions:Glossary#Content|المحتوى النصي]] على ويكي_دوال بموجب ترخيص [[w:Creative Commons license|المشاع الإبداعي المشاركة بالمثل النسخة 4.0]].
* سيتم نشر [[Special:MyLanguage/Wikifunctions:Glossary#Function|توقيعات الدوال]] وغيرها من المحتوى المُهيكل على ويكي دوال بموجب ترخيص [[w:CC0|CC0]].
* سيتم نشر [[Special:MyLanguage/Wikifunctions:Glossary#Implementation|التنفيذات البرمجية]] في ويكي دوال بموجب [[w:Apache License|ترخيص أباتشي 2]].
* [[Special:MyLanguage/Wikifunctions:Glossary#Content|المحتوى المجرد]] لويكبيديا المجردة سيتم نشره تحت رخصة المشاع الإبداعي، المشاركة بالمثل النسخة 4.0
هناك بعض الأمور التي سيتم تناولها مستقبلًا، مثل مسألة ترخيص المحتوى المُوَلَّد من المحتوى المُجَرَّد. ننوي إعداد وثيقة أشمل مع القسم القانوني حول كيفية إعادة استخدام الرموز البرمجية من ويكي دوال بسهولة، مع مراعاة شروط الترخيص.
<span id="Contributing"></span>
== المساهمة ==
<span id="I'm_new_here._What_is_there_for_me_to_do_and_how_can_I_help?"></span>
=== أنا جديد هنا. ما الذي يجب علي فعله وكيف يمكنني المساعدة؟ ===
أهلًا وسهلًا بك! يسعدنا جدًا انضمامك إلينا! هناك العديد من الفرص للمساهمة في ويكي دوال، من إنشاء دوال جديدة إلى تحسين وترجمة التوثيق. إذا كنت تبحث عن طرق للمشاركة، نقترح عليك حسب قدرتك اقتراح دالة جديدة حول موضوع يهمك، أو حتى إنشاء هذه الدالة، أو توفير بعض الاختبارات، أو تجربة كتابة تنفيذ، أو المساعدة في الترجمة، أو قراءة التوثيق وتحسينه، أو المساعدة في تنظيم المجتمع.
<span id="How_do_I_create_a_new_function,_implementation,_or_test?"></span>
=== كيف يمكنني إنشاء دالة أو تنفيذ أو اختبار جديد؟ ===
لمعرفة كيفية إنشاء دالة جديدة أو تنفيذ أو اختبار، راجع [[Special:MyLanguage/Wikifunctions:Introduction|ويكي دوال:تقديم]].
لمعرفة المزيد من التفاصيل حول كيفية إنشاء تنفيذات، راجع [[Special:MyLanguage/Wikifunctions:How to create implementations|ويكي دوال: كيفية إنشاء تنفيذات]].
<span id="What_should_I_edit_first?"></span>
=== ما الذي يجب أن أقوم بتحريره أولاً؟ ===
<div class="mw-translate-fuzzy">
إذا كنت تستطيع الكتابة بعدة لغات، ابحث عن الدوال التي لا تملك تسمياتٍ وأوصافًا بلغتك بعد، وساعد في إضافتها.
</div>
إذا كان لديك اهتمام بمجال يمكن أن يضم دوال في ويكي دوال، ولكنه لا يضمها بعد، أو إذا كانت لديك المزيد من الأفكار للدوال، فانتقل إلى صفحة [[Wikifunctions:Suggest a new function|اقتراح دوال جديدة]]، واعرض أفكارك.
إذا كنتَ مُبرمجًا بلغة جافا سكريبت أو بايثون، فربما ترغب في التحقق من الدوال التي لا تملك تنفيذات بلغة جافا سكريبت أو بايثون حتى الآن، ومُحاولة كتابتها.
<span id="Where_can_I_go_for_help?"></span>
=== أين يمكنني الذهاب للحصول على المساعدة؟ ===
يجب أن تكون محطتك الأولى هي [[ Special:MyLanguage/Help:Contents | بوابة المساعدة ]] حيث ستجد جميع الوثائق المتعلقة باستخدام وتحرير ويكي دوال. إذا كنت لا تزال تواجه مشكلة، فانشر رسالة على [[ Wikifunctions:Project chat | دردشة المشروع ]]، وسيقوم شخص ما بالإجابة على سؤالك.
<span id="How_do_we_sort_or_categorize_functions?"></span>
=== كيف نقوم بفرز أو تصنيف الدوال؟ ===
{{Tracked|T285424}}
<div class="mw-translate-fuzzy">
في الوقت الحالي، أفضل طريقة لفرز أو تصنيف الدوال هي القيام بذلك يدويًا من خلال الصفحات في نطاق ويكي دوال. خيار آخر سيكون من خلال صفحة نقاش الدالة المعنية. سنراقب هذه الجهود، وسنناقش مع المجتمع التغييرات التي ستكون مفيدة لهذه المهمة في النظام.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== How can I setup the software locally to hack on it? ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
See [[Special:MyLanguage/Wikifunctions:Hacking on the evaluator and orchestrator|Hacking on the evaluator and orchestrator]].
</div>
[[Category:FAQ| {{#translation:}}]]
4z7b7704ll98fqc3dw36hcb8cqnwer3
Wikifunctions:Status updates/ru
4
45275
296997
295124
2026-08-06T18:03:43Z
FuzzyBot
207
Updating to match new version of source page
296997
wikitext
text/x-wiki
<languages/>
{{shortcut|WF:SU}}{{notice|1=<span lang="en" dir="ltr" class="mw-content-ltr">'''[[:m:Global message delivery/Targets/Wikifunctions & Abstract Wikipedia|Subscribe]]''' to receive short on-wiki MassMessage notifications about each new issue</span>}}
{{Wikifunctions updates
| prevlabel = <span lang="en" dir="ltr" class="mw-content-ltr">Previous update</span>
| prev = 2024-02-01
| nextlabel = <span lang="en" dir="ltr" class="mw-content-ltr">Last update</span>
| next = 2026-08-05
}}
<div lang="en" dir="ltr" class="mw-content-ltr">
A lot is happening around Wikifunctions and Abstract Wikipedia. This is the page where our updates are posted, including the [[Special:MyLanguage/WF:function of the Week|function of the Week]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
You can also subscribe to the [[:m:Global message delivery/Targets/Wikifunctions & Abstract Wikipedia|on-wiki newsletter]] to have them delivered to your talk page or to your project's village pump.
</div>
<inputbox>
type=fulltext
prefix={{NAMESPACE}}:{{PAGENAME}}/
break=no
width=30
searchbuttonlabel={{int:Search}}
placeholder=Search all status updates
</inputbox>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Newsletters ==
</div>
<!--<nowiki> Newsletter entry template:
* <translate><tvar name="1">{{Status updates|2026-0?-??}}</tvar>: Title</translate>
NOTE: Remember to also update the "next =" date at the top of this page.
</nowiki>-->
=== 2026 ===
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-08-05}}: An apple is a fruit</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-07-29}}: Abstract Wikipedia at Wikimania</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-07-16}}: Beyond syntactic tables</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-07-08}}: Moving toward our first Abstract Wikipedia integration milestone</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-07-01}}: Integration on test wiki and annual plan</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-06-26}}: Working on Functions, together</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-06-19}}: The or not the, this is (the?) question</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-06-12}}: Improved loading and display of Test results</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-06-05}}: The illustrated encyclopaedia</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-05-30}}: Looking back and forward</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-05-23}}: Annual plan 2026-2027</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-05-15}}: A higher meaning</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-05-08}}: References from Wikidata are now available</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-05-02}}: Request for input: what should we count for Abstract Wikipedia?</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-04-25}}: The Foundation's search for the perfect language</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-04-16}}: Milestones; Some major issues hopefully resolved</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-04-10}}: Community proposals for capturing meaning</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-04-02}}: Request for Discussion: Syntactic tables</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-03-26}}: First few days of Abstract Wikipedia Beta; Status of Composition Language v2</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-03-19}}: Abstract Wikipedia in Beta</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-03-11}}: A new composition language</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-03-06}}: Citations and Copy and Paste</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-02-26}}: Graceful overrides and fallbacks</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-02-20}}: A sneak preview of Abstract Wikipedia</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-02-13}}: Finishing each other sentences: Starting things; Offsite in Istanbul</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-01-29}}: Integrating Abstract Wikipedia</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-01-22}}: Quarterly plan for January–March 2026</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-01-15}}: 25 years of Wikipedia</span>
=== 2025 ===
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-12-18}}: We wish you a happy new Gregorian year!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-12-11}}: How to write better error messages</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-12-04}}: And the name is Abstract Wikipedia</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-11-27}}: Vote on the new wiki name!; Finishing each other’s sentences</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-11-20}}: Second round of voting for naming the wiki with language-independent content; Sharing function calls</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-11-13}}: Getting ready for second round of voting for naming the wiki with abstract content; Rewriting the backend: Why Rust?</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-11-05}}: First round of voting for naming the wiki for abstract content closed; Calling for Wiktionary functions; Embedded Wikifunctions on Bengali Wikipedia and seven more Wiktionaries</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-10-29}}: Round 1 of “abstract content wiki” naming vote ending Monday; An example of short descriptions</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-10-23}}: Welcome Zaree and Laura! Naming contest round 1 kicked off</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-10-15}}: Kicking Off the Naming Contest for Abstract Wikipedia; Visualizing functions</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-10-08}}: Decision on location for abstract content and Quarterly Planning for October–December</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-10-03}}: Rich text now available in embedded function calls on 148 Wiktionaries and Incubator</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-09-26}}: Accessing qualifiers in Wikidata statements</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-09-19}}: Wikifunctions available on 123 Wiktionary languages</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-09-12}}: More than 3,000 functions on Wikifunctions</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-09-07}}: Copying function calls from one Wikipedia to another</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-08-29}}: Accessing Wikidata items now possible from embedded function calls; Wikifunctions available on 65 Wikitionaries</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-08-22}}: Recording of Wikimania session: Wikifunctions is coming soon to a wiki near you!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-08-01}}: Wikimania 2025 is coming soon!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-07-26}}: “Wikipedia is an encyclopedia”; Two years of Wikifunctions</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-07-19}}: Wikidata-based enumerations are here</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-07-10}}: Length limits on labels and descriptions</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-07-04}}: Coverage of 1298</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-06-27}}: How many people are needed to write an encyclopedia?</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-06-21}}: Quarterly Planning for July–September 2025</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-06-15}}: Closing the consultation about the location of Abstract Content</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-06-06}}: Where will Abstract Content go?</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-05-29}}: Rolling out to five Wiktionaries; Calculating with today's date</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-05-23}}: Ongoing consultation about the Location for Abstract Content</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-05-15}}: Location of Abstract Content</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-05-09}}: Abstract Wikipedia and the Wikimedia AI Strategy</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-04-30}}: Abstract Wikipedia is a MacArthur 100&Change finalist</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-04-25}}: Welcome, Gregory!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-04-16}}: Wikifunctions integrated in Dagbani - and Wikifunctions; and the date of Easter</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-04-11}}: Quarter in review</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-04-05}}: Quarterly Planning for April–June 2025; We are looking for a Senior Product Manager</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-03-28}}: It's about time</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-03-20}}: Wikidata-based simple enumerations</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-03-15}}: Upcoming NLG meeting, Recent Changes in the software</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-03-07}}: Recent Changes in the software, Recording of Volunteer’s Corner, and talks in London</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-02-26}}: From things to words</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-02-19}}: A proposal for types per language and part of speech</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-02-13}}: Restricting the World, redux</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-02-06}}: Invitation to the Natural Language Generation Special Interest Group</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-01-29}}: With 2000 Functions into the new year: time for stats</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-01-22}}: Welcome, David! Naming conventions recommendations</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-01-15}}: Happy Wikipedia day! Quarterly planning</span>
=== 2024 ===
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-12-19}}: Function of the Week: age; Intros for year articles; New Type: Floating-point number</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-12-12}}: Sketching a path to Abstract Wikipedia; Team offsite in Lisbon; and much more</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-11-27}}: WordGraph release; New Special page: list functions by tests; new type for day of the year, and much more</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-11-21}}: New special page for missing labels, new type for Gregorian years, and much more</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-11-13}}: New Type: Rational number; Documentation on Wikidata-based types; and more</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-11-07}}: The Dream of a Universal Language</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-11-01}}: Rewriting the backend</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-10-25}}: Our goal for this Quarter: Agreement</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-10-17}}: What could abstract content look like?</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-10-11}}: Wikidata Lexemes in Wikifunctions are coming soon</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-10-02}}: Focus topic: Food</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-09-26}}: Quarterly planning for October–December 2024; Presentation at Celtic Knot tomorrow</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-09-20}}: Introducing focus topic areas</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-09-13}}: Dagbani Wikipedia will be our first wiki for Wikifunctions integration</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-09-06}}: Volunteer's corner and other updates</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-08-29}}: Limits on Name and Description Lengths</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-08-23}}: WasmEdge, Now 300ms Less Edgy</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-08-16}}: Wikimania 2024 edition</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-08-02}}: Revamping our 'About' widget</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-07-26}}: Wikimania 2024 coming soon!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-07-18}}: Research report on integrating Wikifunctions from Wikipedia</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-07-10}}: Type proposals for accessing Lexemes</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-07-03}}: Quarterly planning</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-06-26}}: Welcome, Daphne!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-06-20}}: New Type: Integers</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-06-13}}: New Type: Igbo calendar months</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-06-06}}: New Type: Sign</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-05-30}}: A single singular or a plurality of plurals?</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-05-22}}: New Type: Gregorian calendar months</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-05-15}}: Call for Functions: Spell out the number!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-05-10}}: Flagship type for enumerations: Months of the Gregorian calendar</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-05-03}}: Team meeting and Quarterly plan</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-04-19}}: Welcome, Sharvani!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-04-11}}: New API for calling Wikifunctions and celebrating 1000 functions</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-04-03}}: Product Update on Diff and Upcoming API Improvements</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-03-28}}: Creating tests is now much easier!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-03-21}}: On the way to internationalizing numbers</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-03-13}}: On identity</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-03-07}}: Introducing our second new type: Natural numbers</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-02-28}}: Type proposal for natural numbers</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-02-22}}: Updating the function model</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-02-14}}: Fix-it week</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-02-07}}: Quarterly planning. Thank you, Nick! Function of the Week: is permutation</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-02-01}}: The Igbo Imperative!</span>
<span id="Before_February_2024"></span>
=== До февраля 2024 ===
<div lang="en" dir="ltr" class="mw-content-ltr">
All updates from this period are [[:m:Special:MyLanguage/Abstract Wikipedia/Updates|available on Meta-Wiki]].
</div>
[[Category:Status updates{{#translation:}}| ]]
ht4abbff74zzvjhgp4gtqbveibv0lvp
Wikifunctions:Cardinal numbers/fr
4
45887
296875
261556
2026-08-06T17:59:43Z
FuzzyBot
207
Updating to match new version of source page
296875
wikitext
text/x-wiki
<languages/>
{{Move|Wikifunctions:Catalogue/Natural language operations/Cardinal numbers|reason=This page is a list of functions, but is outside the catalogue}}
Nous recherchons des fonctions permettant de créer en toutes lettres des nombres dans de nombreuses langues différentes. La [[Special:MyLanguage/Wikifunctions:Status updates/2024-05-15|newsletter du 15 mai 2024]] a lancé un appel à fonctions !
Sur cette page, nous collectons et listons les fonctions existantes et les objets associés afin de coordonner le travail.
Les fonctions prennent en entrée un [[Z13518|nombre naturel]] et renvoient une [[Z6|chaîne]]. Il peut y avoir plusieurs fonctions par langue.
<span id="Languages_covered"></span>
== Langues couvertes ==
{{FORMATNUM:27}} pour le moment.
{| class="wikitable sortable"
|+ Fonctions par [[Special:ListObjectsByType/Z60|langue]]
|-
! Langue !! Fonction !! Testé !! Implémenté !! Planifié
|-
| {{z|Z1002}} || {{z|Z13587}} || ✅ || ✅ || [[WF:human languages/Z1002#natural number|WF:HL]]
|-
| {{z|Z1004}} || {{z|Z16093}} || ✅ || ✅ || [[WF:human languages/Z1004#natural number|WF:HL]]
|-
| {{z|Z1011}} || {{z|Z16150}} || ✅ || ✅ || [[WF:human languages/Z1011#natural number|WF:HL]]
|-
| {{z|Z1014}} || {{z|Z16053}} || ✅ || ✅ || [[WF:human languages/Z1014#natural number|WF:HL]]
|-
| {{z|Z1025}} || {{z|Z15965}} || ✅ || ✅ || [[WF:human languages/Z1025#natural number|WF:HL]]
|-
| {{z|Z1045}} || {{z|Z16172}} || ✅ || ✅ || [[WF:human languages/Z1045#natural number|WF:HL]]
|-
| {{z|Z1062}} || {{z|Z32780}} || ✅ || ⛓️💥 || [[WF:human languages/Z1062#natural number|WF:HL]]
|-
| {{z|Z1146}} || {{z|Z16163}} || ✅ || ✅ || [[WF:human languages/Z1146#natural number|WF:HL]]
|-
| {{z|Z1272}} || {{z|Z16085}} || ✅ || ✅ || [[WF:human languages/Z1272#natural number|WF:HL]]
|-
| {{z|Z1332}} || {{z|Z15953}} || ✅ || ✅ || [[WF:human languages/Z1332#natural number|WF:HL]]
|-
| {{z|Z1430}} || {{z|Z15963}} || ✅ || ✅ || [[WF:human languages/Z1430#natural number|WF:HL]]
|-
| {{z|Z1531}} || {{z|Z15567}} || ✅ || ✅ || [[WF:human languages/Z1531#natural number|WF:HL]]
|-
| {{z|Z1534}} || {{z|Z16185}} || ✅ || ✅ || [[WF:human languages/Z1534#natural number|WF:HL]]
|-
| {{z|Z1592}} || {{z|Z16008}}<br>{{z|Z37749}} || ✅ || ✅ || [[WF:human languages/Z1592#natural number|WF:HL]]
|-
| {{z|Z1624}} || {{z|Z16184}} || ✅ || ✅ || [[WF:human languages/Z1624#natural number|WF:HL]]
|-
| {{z|Z1882}} || {{z|Z16313}} || ✅ || ❌ || [[WF:human languages/Z1882#natural number|WF:HL]]
|-
| {{z|Z1381}} || {{z|Z16398}} || ❌ || ❌ || [[WF:human languages/Z1381#natural number|WF:HL]]
|-
| {{z|Z1003}} || {{z|Z16431}} || ✅ || ✅ || [[WF:human languages/Z1003#natural number|WF:HL]]
|-
| {{z|Z1472}} || {{z|Z16443}} || ✅ || ✅ || [[WF:human languages/Z1003#natural number|WF:HL]]
|-
| {{z|Z1099}} || {{z|Z16409}} || ✅ || ✅ || [[WF:human languages/Z1099#natural number|WF:HL]]
|-
| {{z|Z1282}} || {{z|Z16608}} || ✅ || ✅ || [[WF:human languages/Z1381#natural number|WF:HL]]
|-
| {{Z|Z1820}} || {{Z|Z19334}} || ✅ || ✅ || [[WF:human languages/Z1820#natural number|WF:HL]]
|-
| {{z|Z1012}} || {{z|Z19484}} || ✅ || ✅ || [[WF:human languages/Z1012#natural number|WF:HL]]
|-
| {{Z|Z1787}} || {{Z|Z23003}} || ✅ || ✅ || [[WF:human languages/Z1787#natural number|WF:HL]]
|-
| {{Z|Z1158}} || {{Z|Z24618}} || ✅ || ✅ || [[WF:human languages/Z1158#natural number|WF:HL]]
|-
| {{Z|Z1078}} || {{Z|Z18546}} || ✅ || ✅ || [[WF:human languages/Z1078#natural number|WF:HL]]
|-
| {{Z|Z1762}} || {{Z|Z22455}} || ✅ || ✅ || [[WF:human languages/Z1762#natural number|WF:HL]]
|}
<span id="See_also"></span>
== Voir aussi ==
* {{Z|Z16435}}
* {{Z+|Z16437}}
* {{Z|Z14526}}
r3mv2yc22zmn2v1qoep7ygjamr1wffg
Wikifunctions:Report a technical problem/pt
4
46175
296973
279552
2026-08-06T18:03:13Z
FuzzyBot
207
Updating to match new version of source page
296973
wikitext
text/x-wiki
<languages/>
{{shortcut|[[WF:BUG]]}}
{{see also
|Special:MyLanguage/WF:Status|l1=WF:Status
|Special:MyLanguage/WF:Feature_petitions|l2=WF:Feature petitions
}}
Se você encontrou um bug na Wikifunctions, ou você tem um pedido de recursos para Wikifunctions, por favor, informe-nos!
<span id="Scope"></span>
== Escopo ==
* '''Bug''' - um problema que está produzindo resultados incorretos ou inesperados na Wikifunctions. Perceba que problemas dentro da Functions em si não são considerados bug nesse contexto.
* '''Pedido de recurso''' - uma ideia que o time de desenvolvimento pode adicionar à Wikifunctions para deixá-la ainda mais maravilhosa.
Você precisa de ajuda com outra coisa?
: Os seguintes itens estão '''fora do escopo''' do trabalho do time de desenvolvimento da Wikifunctions:
:* <span lang="en" dir="ltr" class="mw-content-ltr">The '''content of individual Functions''' – Discuss those on the talkpage of the Function itself, or ask for help at [[Wikifunctions:Project chat]] or in the channels listed below; if you think a function is missing, see [[Wikifunctions:Suggest a function]]</span>
:* As '''políticas do projeto da Wikifunctions''' - Pergunte sobre eles em [[Wikifunctions:Project chat]] ou nos canais listados abaixo
<span id="Find_existing_bugs_and_feature_requests"></span>
== Encontre bugs existentes e pedidos de recursos ==
* Veja '''[[Wikifunctions:Status]]''' para um rápido resumo de questões de alto nível.
* <span lang="en" dir="ltr" class="mw-content-ltr">You can '''[[phab:maniphest/query/UzvNRqsdnymk/|search the Phabricator]] listing of open tasks''' to see if your bug or feature idea is already documented.</span>
<span id="Discuss_with_others"></span>
== Discuta com outros ==
<div lang="en" dir="ltr" class="mw-content-ltr">
You can ask questions about possible bugs or feature ideas at a few locations. This may be helpful if you are unsure how to clearly describe the bug or feature idea:
</div>
* <span class="mw-translate-fuzzy">A página de discussão aqui.</span>
* O chat principal no [https://t.me/Wikifunctions Telegram] ou IRC {{channel|wikipedia-abstract}} (juntamente conectado) ([https://wm-bot.wmcloud.org/logs/%23wikipedia-abstract/ registros], [https://wm-bot.wmflabs.org/logs/%23wikipedia-abstract/ registros antigos])
* <span lang="en" dir="ltr" class="mw-content-ltr">The developer chat on [https://t.me/abstract_wikipedia_tech Telegram] or IRC {{channel|wikipedia-abstract-tech}} (bridged together) ([https://wm-bot.wmcloud.org/logs/%23wikipedia-abstract-tech/ logs])</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
== File a task in Phabricator ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If you are familiar with Phabricator, you can search and file tasks directly.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If you are not yet familiar: Phabricator is the web-based development collaboration tool mostly used to manage MediaWiki software projects including Wikifunctions. A short summary about Phabricator for newcomers, including tutorial videos, is on MediaWiki's wiki at [[mw:Special:MyLanguage/Phabricator/Help|mw:Phabricator/Help]].
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">You can '''[[phab:maniphest/query/UzvNRqsdnymk/|search]] the listing of open tasks''' to see if your bug or feature idea is already documented.</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">The existing tasks are collected with the '''[[phab:tag/abstract wikipedia team|#abstract wikipedia team]] tag'''.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">You can '''[https://phabricator.wikimedia.org/maniphest/task/edit/form/43/?projects=abstract_wikipedia file a new task]'''. Please always include:</span>
** Exemplos
** <span lang="en" dir="ltr" class="mw-content-ltr">Any relevant links</span>
** Para bugs: As etapas exatas que produziram o bug, para que a equipe possa reproduzir e diagnosticar ele.
<span id="Languages"></span>
== Idiomas ==
A equipe de desenvolvimento entende um número limitado de idiomas - mas você é livre para relatar problemas em qualquer idioma que você esteja confortável.
Se possível, forneça um resumo em inglês ao criar uma tarefa do phabricator, ou peça a alguém para ajudá-lo.
<div lang="en" dir="ltr" class="mw-content-ltr">
== Follow-up ==
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">The locations above are followed by the Wikifunctions development team, as well as community members. The time to get a reply varies depending on the nature or complexity of the topic, etc. However, in general, you can get an answer within 2 workdays. Please let us know if we missed something, as life can get distracting!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Not all problems can be solved immediately: depending on the impact, priority, etc. some bugs can be triaged to low priority. You may follow the status of your report on the relevant linked phabricator task.</span>
[[Category:Report a technical problem{{#translation:}}]]
gf7u1zjogdckt9e79awvowlrxi4vu0w
Wikifunctions:How to create implementations/th
4
46527
296947
276462
2026-08-06T18:02:40Z
FuzzyBot
207
Updating to match new version of source page
296947
wikitext
text/x-wiki
<languages/>
<div lang="en" dir="ltr" class="mw-content-ltr">
This page provides a more detailed guide to '''creating implementations''', beyond the overview at {{ll|Wikifunctions:Introduction}}.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Types of Implementations ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
In Wikifunctions, an '''implementation''' can take one of two main forms: '''code''' or '''composition'''. A code implementation directly expresses the function’s logic in any of the available programming languages (currently, Python3 or JavaScript). It’s most useful when the function’s behavior can’t easily be built from existing Wikifunctions, or when precise control over data processing is needed.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
A composition implementation, on the other hand, defines the function entirely by combining other existing functions, without writing code. Compositions are easier to understand, reuse, and translate into other languages automatically, but they depend on suitable building blocks already being available and often are less performant. In general, start by checking whether your goal can be achieved through composition; if it can’t, or if performance or fine-grained logic matters, choose a code implementation instead.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
There's a third type of implementation: '''built-ins'''. These are run by system-built code, and are not editable. Most likely all pre-defined functions will have a built-in implementation. In such cases, when opening the implementation page, you will see a message stating ''"{{int|wikilambda-implementation-selector-none}}"''
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Practice Test-Driven Development ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
'''Test-Driven Development''', or '''TDD''', is a way of creating software where you write tests before you write the actual code. Tests are just a way of understanding what your function is supposed to do by listing examples and how they should work.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
In Wikifunctions, writing tests first offers significant benefits. If you are working on an implementation, you can run your code against the existing tests to check that it behaves as expected. This makes it easier to catch errors early before even publishing your implementation. Tests are also a powerful way to describe the function you need. By writing tests, '''you clearly communicate the expected behavior''', and the community can step in and help with the implementation, or create alternative implementations.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Imagine you want to implement a Function that combines two strings with a space in between. A basic test for this might look like:
</div>
<syntaxhighlight lang="prolog">
join_with_space( "Hello", "world" ) => "Hello world"
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
Once you have defined the basic behavior, it's important to '''think about edge cases'''—situations where the inputs are such that you might need some special behavior.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For example, what if your first string ends in a space, or your second string starts with a space? Should the function keep all existing spaces and add another one, or should it return a neatly spaced result with just a single space between the words?
Depending on your requirements, you should build a test for such a case. For example, a test for this edge case could be either one of these — but not both!:
</div>
<syntaxhighlight lang="prolog">
join_with_space( "Hello ", " world") => "Hello world"
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
or ...
</div>
<syntaxhighlight lang="prolog">
join_with_space( "Hello ", " world") => "Hello world"
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
Make sure that all possible special cases are covered by your tests, and once you have them, make sure that they are all connected to the Function by selecting them and clicking "Connect".
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Code implementations ==
</div>
[[File:Code implementation.png|thumb|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Wikifunctions code editor initialized with a function template</span>|<span lang="en" dir="ltr" class="mw-content-ltr">When adding a new code implementation, the function template is initialized with the function and argument names</span>]]
<div lang="en" dir="ltr" class="mw-content-ltr">
When creating an implementation using code, the Wikifunctions UI will set up a code editor with the selected language activated for syntax highlighting and validation. When the function to implement and the programming language are selected, this editor will be set with the correct function template: '''do not remove or edit this'''! Keep your code inside this function signature: if you need auxiliary functions, you can simply declare them inside your top-level function declaration.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Using input types in your code ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Wikifunctions types {{Z|Z6}} and {{Z|Z40}} can be used as if they were native types in both JavaScript and Python3. For example, a String input can be concatenated or a Boolean be directly used in a logical expression. To use other types in your code implementations, you will have to look deeper into the type, figure out if it has a conversion to a native equivalent, and treat it accordingly.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For example, let's say we want to write some Python code that handles an input of type {{Z|Z20420}}. In the page for this type, let's look at its "type converters to code" and search for a Python one. The converter {{Z|Z20424}} will be applied to our date input before our code, so looking at "native type" we know that our input will be a Python ''dict'' and looking at the implementation we can see the keys we can expect:
</div>
<syntaxhighlight lang="python3">
return {
'K1': year,
'K2': month,
'K3': day
}
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
When a type doesn't have a converter, you'll have to access its parts directly using its keys. For example, let's assume that your function <code>Z30000</code> has one input <code>Z30000K1</code> of type {{Z|Z11}}. This type has two keys: <code>Z11K1</code> for the language (itself an object of type {{Z|Z60}}), and <code>Z11K2</code> for the string value. Similarly, the language object has a key <code>Z60K1</code> for the language code. So, to get a string with the language code and the text, you can write:
</div>
<syntaxhighlight lang="javascript">
function Z30000( Z30000K1 ) {
// e.g. "en: some text"
return Z30000K1.Z11K1.Z60K1 + ": " + Z30000K1.Z11K2;
}
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
For a quick reference of the available type conversions visit [[Special:MyLanguage/Wikifunctions:Execution targets#Default type conversion|the default type conversion table]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Returning the right outputs ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Similarly to the way you treat inputs, outputs need to match the type specified in the function definition. Some can be treated as simply as native types, so any string output will be converted into a Wikifunctions {{Z|Z6}} object and any native boolean returned by your implementation will be converted into a Wikifunctions {{Z|Z40}} object.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Those types that have "type converters from code" will apply the appropriate function to the output, in order to build the required type. Following the example of {{Z|Z20420}}, the {{Z|Z20443}} will transform the output from your implementation–a dict with K1, K2 and K3 keys–into its correct ZObject representation.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For types that don't have converters from code, you can carefully build and return the output objects. For example, imagine that our function <code>Z30000</code> takes two string inputs: language code and text, and should return a {{Z|Z11}} object. You can do this in Python by using the <code>ZObject</code> constructor:
</div>
<syntaxhighlight lang="python3">
def Z30000(Z30000K1, Z30000K2):
lang_object = ZObject(
{"Z1K1": "Z9", "Z9K1": "Z60"},
Z60K1 = Z30000K1
)
return ZObject(
{"Z1K1": "Z9", "Z9K1": "Z11"},
Z11K1 = lang_object,
Z11K2 = Z30000K2
)
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
Or in JavaScript:
</div>
<syntaxhighlight lang="javascript">
function Z30000( Z30000K1, Z30000K2 ) {
const langObject = new ZObject(
new Map( [ [ "Z60K1", Z30000K1 ] ] ),
{ "Z1K1": "Z9", "Z9K1": "Z60" }
);
const monolingualKeys = new Map( [
[ "Z11K1", langObject ],
[ "Z11K2", Z30000K2 ]
] );
return new ZObject(
monolingualKeys,
{ "Z1K1": "Z9", "Z9K1": "Z11" }
);
}
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
You can learn more about the <code>ZObject</code> class and other useful constructors in {{ll|Wikifunctions:Execution_targets#Custom_and_non-built-in_type_conversion}}
</div>
{{phab|T392750}}<div lang="en" dir="ltr" class="mw-content-ltr">
As of 2026-05, trying to return a list of lists may fail, so you're not able to implement such functions in code.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Code in Python ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
In this section, we give a concrete example on how to create an implementation in the form of Code in Python. Say we want to create an implementation for a Function which combines two input strings by putting a space between them, returning the result of that. Let’s assume the ZID of that function is Z30000.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The implementation is defined using the ZID of the function. So are the arguments of the function. So in the case of the function Z30000 with its two arguments, the function template should look like this:
</div>
<syntaxhighlight lang="python3">
def Z30000(Z30000K1, Z30000K2):
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
As we described before, we know that the arguments (<code>Z30000K1</code> and <code>Z30000K2</code>) are Strings, so we can treat them as simply as we use native strings in Python. Also, the function should return a String. For our example, we simply return the two arguments concatenated with a space in between:
</div>
<syntaxhighlight lang="python3">
def Z30000(Z30000K1, Z30000K2):
return Z30000K1 + " " + Z30000K2
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
Since this is Python, do not forget to indent this line.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If you have followed our advice to [[#Practice Test-Driven Development|practice TDD]], you will already have a set of tests that you know should work. If that's the case, while building your implementation you can click on the circular arrow in the Tests panel, and see if your implementation passes all of them.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Remember that the runtime has no state. Don’t assume values for global or static variables. If you have further questions about what you can and cannot do in Python, ask on [[Wikifunctions:Python implementations]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Code in JavaScript ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
In this section, we give a concrete example on how to create an implementation in the form of Code in JavaScript. Say we want to create an implementation for a Function which combines two input strings by putting a space between them, returning the result of that. Let’s assume the ZID of that function is <code>Z30000</code>.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The implementation is defined using the ZID of the function. So are the arguments of the function. So in the case of the function <code>Z30000</code> with its two arguments, the function template should look like this:
</div>
<syntaxhighlight lang="javascript">
function Z30000( Z30000K1, Z30000K2 ) {
}
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
We know that the arguments (<code>Z30000K1</code> and <code>Z30000K2</code>) are Strings, so we can treat them as native strings in JavaScript. Also, the function should return a String. To complete our function, you can then add a line concatenating the input strings, like this:
</div>
<syntaxhighlight lang="javascript">
function Z30000( Z30000K1, Z30000K2 ) {
return Z30000K1 + " " + Z30000K2;
}
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
If you have tests as recommended in the [[#Practice Test-Driven Development|TDD]] section above, click on the circular arrow in the Tests panel and see if your implementation passes all of them.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Remember that the runtime has no state. Don’t assume values for global or static variables. If you have further questions about what you can and cannot do in JavaScript, ask on [[Wikifunctions:JavaScript implementations]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Compositions ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
In this section, we give a concrete example on how to create an implementation in the form of a composition. Say we want to create an implementation for a Function which combines two input strings by putting a space between them, returning the result of that. Let’s assume the ZID of that function is <code>Z30000</code>.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
It is usually a good idea to first think about how to combine existing functions in order to create the desired output. Sometimes this might be trivial, and you can just go ahead with composing functions, but in many cases it is worthwhile to note the desired composition down.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For example, for the given Function, we could use the existing Function {{Z|Z10000}}. That Function takes two strings and makes one string out of them. But we need to add a space in between. So we first concatenate a space to the end of the first string, and then concatenate the second string to the result of that first concatenation. So our composition could be noted down like this:
</div>
<syntaxhighlight lang="prolog">
join_strings( join_strings( Z30000K1, " " ), Z30000K2 )
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
There are multiple ways to write a composition: notice that the same thing could be accomplished with:
</div>
<syntaxhighlight lang="prolog">
join_strings( Z30000K1, join_strings( " ", Z30000K2 ) )
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
An alternative implementation could also use the existing Function {{Z|Z15175}}, so your composition could be:
</div>
<syntaxhighlight lang="prolog">
join_with_separator( Z30000K1, Z30000K2, " " )
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
As you can see, there are multiple ways to accomplish this, so take your time and explore the existing functions available in the {{ll|Wikifunctions:Catalogue}}.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Let's try to create the second example, <code>join_strings(Z30000K1, join_strings(" ", Z30000K2))</code>.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
In order to create this:
</div>
# <span lang="en" dir="ltr" class="mw-content-ltr">Start adding an implementation by clicking on the "+" button in the "Implementations" table from your Function page.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Make sure that the option "composition" under "Implementation" is selected.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Click on the "›" icon or click the "Select Function" link to expand the function details.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Under "function" search for the name of the outermost function you want to use, which in this example is "join two strings". Then, select the wanted function from the dropdown list.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">You will see two new fields, one for each of the arguments needed for the selected function.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">For the first argument, we want to select the first input to our function:</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "first string", click on the "…" button and select "Argument reference".</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "key id" you can now select the first string of your function from the dropdown, which contains all available inputs.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">For the second argument, we want to use the result of another call to "join two strings":</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "second string", click on the "…" button and select "Function call".</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function", search and select the function you want to call, which is again "join two strings".</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">For this inner function call, configure the "first string" by simply typing a white space in the text field, and configure the "second string" as you did for step 6: change it using the "…" button to "Argument reference", and then select the second argument in the dropdown.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
Your composition is now complete!
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
You can expand and collapse the details using the chevron buttons to see how it looks. If you already have Tests as recommended in the [[#Practice Test-Driven Development|TDD]] section above, click on the circular arrow in the Tests panel and see if your implementation passes the tests. Once your composition passes the tests, go ahead and publish it.
</div>
[[File:Composition implementation expanded.png|frame|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">A Wikifunctions composition implementation in its expanded view</span>|<span lang="en" dir="ltr" class="mw-content-ltr">A Wikifunctions composition implementation in its expanded view</span>]]
[[File:Composition implementation collapsed.png|frame|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">A Wikifunctions composition implementation in its collapsed view</span>|<span lang="en" dir="ltr" class="mw-content-ltr">A Wikifunctions composition implementation in its collapsed view</span>]]
<div lang="en" dir="ltr" class="mw-content-ltr">
== Wikifunctions error handling ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
As a Wikifunctions function creator, you might want to warn the user calling your function when something goes wrong in the code, or when their inputs do not fit a certain criteria. For example, if your Function expects a string input to contain a name, you might want to check that the name is not empty and, if it is, show an error message that the person using your Function can understand.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For this purpose, you can use <code>Wikifunctions.Error()</code> from your code implementations or the function {{Z|Z851}} from your compositions.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
In this section you will learn:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">How to throw errors from both code and composition implementations,</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">how to write tests for error cases, and</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">how to catch and handle errors thrown by functions that you are using in your compositions.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Throwing errors from code implementations ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
When writing code, both from JavaScript and Python, you can use <code>Wikifunctions.Error()</code> to end the execution with a wanted error.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
<code>Wikifunctions.Error()</code> has two parameters:
</div>
# <span lang="en" dir="ltr" class="mw-content-ltr">Error type: a string containing the ZID of the error type you want to return.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Error arguments: a list of string arguments to build the error.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
Let's go one by one:
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Error type ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
An error type is an object that describes a kind of error that could happen in the system. There are a number of built-in error types but you can also build other error types that are more suited to your use case. When using errors, the best idea is to browse through the available error types, which can be explored in [[Special:ListObjectsByType/Z50|this list]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If there are no errors that fit your case, create a new one by going to the create page, and selecting "Error type" in the type selector. Then, set the necessary fields:
</div>
[[File:Error type.png|thumb|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Error type creation in Wikifunctions</span>|<span lang="en" dir="ltr" class="mw-content-ltr">To create new Error type (Z50), edit the label and add the necessary keys.</span>]]
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Label''' – This is the main title of the error, which should contain a short but descriptive message. Set the error label on the right-side box titled "About".</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Keys''' – Keys contain additional information about what caused the error. For example, if an input had the wrong format, you might want to inform the user of what was the input content when raising the error. To use them in your implementations, keys should be strings. To create a key, click on the "[+]" icon below "keys", select "String" under "value type", and add a label that describes it appropriately, for example "current input". Once you have all the necessary keys, you can Publish your error type and keep the ID of the newly created object.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Error arguments ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Error arguments correspond to the keys of the Error type, and they should provide additional information to understand the error. Error arguments should always be Strings.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Using Wikifunctions.Error() ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Say that you want an error to be thrown when either your first or your second input are empty. You have already created the error type, and the assigned ZID was <code>Z30005</code>. Your error type has two string keys:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">Input key: contains the key of the failing input</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Input value: contains the current value of the failing input</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
To raise an error in your JavaScript implementation you should do something like this:
</div>
<syntaxhighlight lang="javascript">
function Z30000( Z30000K1, Z30000K2 ) {
if ( trim( Z30000K1 ) === '' ) {
// If the first input is empty, raise error Z30005
// with two string args: [ first input key, first input value ]
Wikifunctions.Error( 'Z30005', [ "Z30000K1", Z30000K1 ] )
}
if ( trim( Z30000K2 ) === '' ) {
// If the second input is empty, raise error Z30005
// with two string args: [ second input key, second input value ]
Wikifunctions.Error( 'Z30005', [ "Z30000K2", Z30000K2 ] )
}
return Z30000K1 + " " + Z30000K2;
}
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
To raise an error in your Python implementation you should do something like this:
</div>
<syntaxhighlight lang="python3">
def Z30000(Z30000K1, Z30000K2):
if Z30000K1.strip() == "":
# If the first input is empty, raise error Z30005
# with two string args: [ first input key, first input value ]
Wikifunctions.Error("Z30005", ["Z30000K1", Z30000K1])
if Z30000K2.strip() == "":
# If the second input is empty, raise error Z30005
# with two string args: [ first input key, first input value ]
Wikifunctions.Error("Z30005", ["Z30000K2", Z30000K2])
return Z30000K1 + " " + Z30000K2
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
Remember that calling <code>Wikifunctions.Error()</code> ends the execution!
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Throwing errors from compositions ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If you are creating a composition implementation, you can throw an error by calling the special function {{Z|Z851}}.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Throw Error function (Z851) ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The {{Z|Z851}} function is similar to the <code>Wikifunctions.Error()</code> method and takes two arguments:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Error type''' – A reference to the Error type you want to raise</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Error parameters''' – A list with the arguments to create your Error, which should also be Strings.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Using Throw Error ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Say you want to modify your composition so that it first checks that the arguments are not empty, and raises an error when it finds an empty one. Then, if none of them are empty, it runs the original composition, which is:
</div>
<syntaxhighlight lang="prolog">
join_with_separator( Z30000K1, Z30000K2, " " )
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
To do this, you need to create conditional paths, for which you can use the {{Z|Z802}} function. Think of it like this:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">If the first argument is empty, throw an error for the first argument</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Else, proceed to check the second argument</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">If the second argument is empty, throw an error for the second argument</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Else, proceed with the success path and return the joint strings with the space separator</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
Or in functional pseudo code:
</div>
<syntaxhighlight lang="prolog">
if (
is_empty_string( Z30000K1 ),
throw_error( Z30005, [ "Z30000K1", Z30000K1 ] ),
if(
is_empty_string( Z30000K2 ),
throw_error( Z30005, [ "Z30000K2", Z30000K2 ] ),
join_with_separator( Z30000K1, Z30000K2, " " )
)
)
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
Let's create this step by step:
</div>
# <span lang="en" dir="ltr" class="mw-content-ltr">Start adding an implementation by clicking on the "+” button in the "Implementations" table from your Function page.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Make sure that the option "composition" under "Implementation" is selected.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Click on the "›” icon or click the "Select Function" link to expand the function details.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Under "function" search and select the outermost function you want to use, which in this case is "if".</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Check the validity of the first argument:</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "condition", click on the "…" button and select "function call"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function", search and select the function "is empty string"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "input", click on the "…" button and select "argument reference"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "key id", select the first input (e.g. "first string")</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">You can now collapse the "condition" function call if you want, by clicking on the down-chevron next to "condition". You should see something like "f(x) is empty string( → first string )"</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Throw error if the condition is true:</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "then", click on the "…" button and select "function call"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function", search and select the function "Throw Error"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "error type", search and select your error type (you can directly input the error ID if you know it, e.g. Z30005)</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "error parameters", add two items by clicking on the "+" button</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">For "Item 1" (offending argument key), set its type to "String" and write the argument identifier (e.g. "first input", or "Z30000K1")</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">For "Item 2" (offending argument value), click on the "…" next to "Item 2" and select "argument reference"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "key id", select the first input (e.g. "first string")</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">You can now collapse the "then" function call if you want, by clicking on the down-chevron next to "then". You should see something like "f(x) Throw Error( Input was the wrong format, Typed list( Object, "first input", → first string ) )"</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Continue to check the second argument if the first was good:</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "else", click on the "…" button and select "function call"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function", search and select the function "if"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Set up "condition" to check the validity of the second argument by following the same process as described in step 5.</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Set up "then" to throw an error for the second argument by following the same process as described in step 6.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Finally, set up the success path:</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to the nested "else", click on the "…" button and select "function call"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function", search and select the successful function, which in this case can be "join strings with separator"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "first string", click on the "…" button and set it to "argument reference", then select "first string"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "second string", click on the "…" button and set it to "argument reference", then select "second string"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "separator" add a space into the text field</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
The resulting function call should look like this:
</div>
[[File:Throw error expanded.png|frame|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Wikifunctions composition using Throw Error function</span>|<span lang="en" dir="ltr" class="mw-content-ltr">Wikifunctions composition using Throw Error function</span>]]
[[File:Throw error collapsed.png|frame|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Wikifunctions composition using Throw Error function, in its collapsed view</span>|<span lang="en" dir="ltr" class="mw-content-ltr">Wikifunctions composition using Throw Error function, in its collapsed view</span>]]
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Handling errors in compositions ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
While it is useful to allow functions to raise expected errors, it is crucial to be able to handle errors in your compositions in order to safely use these functions.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Say you want to create a new function "full name of a person" – we will refer to it with the ZID <code>Z30010</code>. This function should return the full name of a person given a first and last names, but if any of the two fields are empty, it should return the text "Unknown" instead.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
You could create a composition using our example function "Join two strings with a space" or <code>Z30000</code> to generate the name. If any of the inputs are empty, you know that <code>Z30000</code> will throw an error of type <code>Z30005</code>. Using the function {{Z|Z850}} as a wrapper, you can attempt the join operation and intercept a possible error to simply return "Unknown" whenever it occurs.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Try-Catch function (Z850) ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The {{Z|Z850}} function is built-in with ZID <code>Z850</code> and takes three arguments:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Function call''' – The initial function call to run. If nothing goes wrong, the response will be the result of this function call.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Error type''' – An error type to catch in case it is thrown during the execution of the first function call.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Error handler''' – A function call that will be run in case the error specified above is caught during the execution of the initial function call. If that happens, the result of the error handler will be the value returned.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Using Try-Catch ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Once we have all the functions for our composition, we can craft it like this:
</div>
<syntaxhighlight lang="prolog">
try_catch(
join_with_space( Z30010K1, Z30010K2 ),
Z30005,
echo( "Unknown" )
)
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
This means that:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">The "Join two strings with a space" function will be tried with the two inputs and, if everything goes well, the output of this function will be returned</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">If any of the inputs are blank, "Join two strings with a space" with raise an error of type <code>Z30005</code></span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Our {{Z|Z850}} will then detect this error and run the {{Z|Z801}} function to return "Unknown"</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
Let's create this step by step:
</div>
# <span lang="en" dir="ltr" class="mw-content-ltr">Start adding an implementation by clicking on the "+" button in the "Implementations" table from your Function page.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Make sure that the option "composition" under "Implementation" is selected.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Click on the "›” icon or click the "Select Function" link to expand the function details.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Under "function" search and select the outermost function you want to use, which in this case is "Try-Catch".</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Set the main function call:</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under the field where the "Try-Catch" function is selected, next to the "function call" key, click on the "…" button and select "function call"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function" search and select the function "join two strings with space"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "first string", click on the "…" button and select "argument reference", then select the "first name" argument from the dropdown.</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "second string", click on the "…" button and select "argument reference", then select the "second name" argument from the dropdown.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Select the error to catch:</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "error type", search and select "bad string input" – you can search directly by its ZID <code>Z30005</code></span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Set the error handler function call:</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "error handler", click on the "…" button and select "function call"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function", search and select the function "echo"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "input" and "type", search and select the type "String"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Now, under "input", type "Unknown" in the text field</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
The resulting function should look like this:
</div>
[[File:Try catch expanded.png|frame|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Wikifunctions composition using Try-catch function, in expanded mode</span>|<span lang="en" dir="ltr" class="mw-content-ltr">Wikifunctions composition using Try-catch function, in expanded mode</span>]]
[[File:Try catch collapsed.png|frame|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Wikifunctions composition using Try-catch function, in collapsed mode</span>|<span lang="en" dir="ltr" class="mw-content-ltr">Wikifunctions composition using Try-catch function, in collapsed mode</span>]]
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Testing your failure use cases ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
As we introduced in the above section about [[#Practice Test-Driven Development|practicing TDD]], it's important to test not only the most common paths, but also the possible edge cases. It is equally important to test failure behavior. In this section we will give you the tools necessary to test that your function fails with a given set of inputs, and that the error thrown is the expected one.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
To do that, you will need other two system functions:
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Is error type (Z852) ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The {{Z|Z852}} function is built-in with ZID <code>Z852</code> and takes two arguments:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Error''' – An {{Z|Z5}} object, which can be thrown by a failing call. An error instance has a type and a value.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Error type''' – A reference to an {{Z|Z50}} which will be compared to the type of the Error passed as a first argument. If that's the case, the function will return true.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Get error thrown by function call (Z853) ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The {{Z|Z853}} function is built-in with ZID <code>Z853</code> and takes one argument:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Function call''' – A function call which can either return a successful value of any type, or throw an error.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
This function returns a {{Z|Z882}} with a {{Z|Z40}} in first place and an {{Z|Z1}} in the second:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">If the Function call runs successfully and hence does not throw any error, the returned pair will contain False in the first place, and void in the second.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">If the Function call throws an error, the returned pair will contain True in the first place, and the caught error in the second.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
To use this function in your compositions, you might need to use the additional functions:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z821}}, and</span>
* {{Z|Z822}}
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Testing errors ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Say our target function, "Join two strings with a space" or <code>Z30000</code>, throws an error of type <code>Z30005</code> and we want to test this behavior. To do that we need to:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">Throw a failing function call</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Get the error using the function {{Z|Z853}}</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Check that the error is the right type with {{Z|Z852}}</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
Tests have two fields:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Call''' – A function call that will produce an output with the inputs you want to test. This call will return a value.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Result validation''' – A function call that will validate that the value returned by the call above is the expected one. The first argument of this function call will be automatically assigned to take the return value of the first call.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
For step-by-step instructions on how to create tests, see {{ll|Wikifunctions:Introduction#Create_tests}}.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
In our example, we can structure it like this — but this is not the only way!
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The call, which will return an {{Z|Z5}} object:
</div>
<syntaxhighlight lang="prolog">
error = get_second_element_of_typed_list(
get_error_thrown_by(
join_strings_by_whitespace( "", "not empty" )
)
)
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
And the result validation, which will take the {{Z|Z5}} object as its first argument:
</div>
<syntaxhighlight lang="prolog">
is_error_type( error, Z30005 )
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
Let's do this step by step:
</div>
# <span lang="en" dir="ltr" class="mw-content-ltr">Start adding a test by clicking on the "+" button in the "Tests" table from your Function page. The "call" and "result validation" fields already have some functions pre-set, but to test the errors we will need to change them.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">First, let's set the call:</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "call", click the "›" chevron button to expand the function call.</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function", edit the field and search and select the function "Get second element of a typed pair"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Once selected, next to "Typed pair", click on the "…" button and select "function call"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function", search and select the function "Get error thrown by function call"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "function call", click on the "…" button and select "function call"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function", search and select the function "Join two strings with a space" (or by ZID <code>Z30000</code>)</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Now set the inputs so that they cause a failure: at least one of them should be empty.</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">You can now collapse your "call" by clicking again on the down-chevron button if you want!</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Next, let's set the result validation:</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "result validation", click the "›" chevron button to expand the function call.</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function", edit the field and search and select the function "Is error type"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Now you will only be asked to configure the second argument. Under "error type", search and select your <code>Z30005</code> error type.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">And you are done! You can now click the circular arrow in the "Implementations" box and you should see green checks.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
If everything went right, you can now save your test. It should look like this:
</div>
[[File:Get error expanded.png|frame|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Testing a failure using Get error and Is error type functions, in expanded mode</span>|<span lang="en" dir="ltr" class="mw-content-ltr">Testing a failure using Get error and Is error type functions, in expanded mode</span>]]
[[File:Get error collapsed.png|frame|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Testing a failure using Get error and Is error type functions, in collapsed mode</span>|<span lang="en" dir="ltr" class="mw-content-ltr">Testing a failure using Get error and Is error type functions, in collapsed mode</span>]]
<div lang="en" dir="ltr" class="mw-content-ltr">
== Debugging your implementations ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Sometimes things can go wrong. A function might behave differently than expected or a value might not look quite right. Sometimes implementations are really complex and, because they are run in a sandboxed environment, it can seem really difficult to debug. To help understand what's going on inside a function call, Wikifunctions includes a small set of debugging tools.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
These tools don't change the result of a function, but will add extra information to the returned metadata, which you can observe after running the function. You can use <code>Wikifunctions.Debug()</code> from your code implementations or the function {{Z|Z854}} from your compositions.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
In this section you will learn:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">How to add debug messages from both code and composition implementations,</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">how to inspect the metadata manually or via the UI to inspect these logs.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Debugging your code implementations ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
When writing code, both from JavaScript and Python3, you can use <code>Wikifunctions.Debug()</code> to add a message to your debugging log and continue the execution.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
<code>Wikifunctions.Debug()</code> has one parameter, which is generally expected to be a string. However, any other object passed as parameter will get directly converted into a string.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If we want to add debug logs to our code implementations for our "Join two strings with a space" example function, we can do, in JavaScript:
</div>
<syntaxhighlight lang="JavaScript">
function Z30000( Z30000K1, Z30000K2 ) {
if ( trim( Z30000K1 ) === '' ) {
Wikifunctions.Debug( `first input is empty "${ Z30000K1 }"` );
Wikifunctions.Error( 'Z30005', [ "Z30000K1", Z30000K1 ] )
}
if ( trim( Z30000K2 ) === '' ) {
Wikifunctions.Debug( `second input is empty "${ Z30000K2 }"` );
Wikifunctions.Error( 'Z30005', [ "Z30000K2", Z30000K2 ] )
}
Wikifunctions.Debug( "both inputs are fine" );
return Z30000K1 + " " + Z30000K2;
}
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
And the same in your Python3 implementation will be:
</div>
<syntaxhighlight lang="python3">
def Z30000(Z30000K1, Z30000K2):
if Z30000K1.strip() == "":
Wikifunctions.Debug( 'first input is empty "'+Z30000K1+'"' )
Wikifunctions.Error("Z30005", ["Z30000K1", Z30000K1])
if Z30000K2.strip() == "":
Wikifunctions.Debug( 'second input is empty "'+Z30000K2+'"' )
Wikifunctions.Error("Z30005", ["Z30000K2", Z30000K2])
Wikifunctions.Debug( 'both inputs are fine' )
return Z30000K1 + " " + Z30000K2
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
This way, no matter what happens, we will be adding one message to your debugging logs:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">If the function call fails when checking on the first or second input, the result of the execution will be a failure, but it will contain one informative log about what branch caused the failure.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">If the function call succeeds—because both inputs are valid—the function call will return the joined string, but the returned metadata will also contain a debug log.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Debugging your compositions ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
To support debugging compositions, Wikifunctions provides the built-in function {{Z|Z854}}. This function allows you to attach debug messages to the execution of any function call that generates the final output. The debug logs collected during the evaluation are returned as part of the execution metadata, under the <code>executorDebugLogs</code> key.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Add debug log to function call (Z854) ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The {{Z|Z854}} function is built-in with ZID <code>Z854</code> and takes two arguments:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Function call''' – Any composition you want to execute.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Debug log''' – A string message that will be recorded if the given function call is evaluated.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
When the wrapped function call runs, the provided message is added to the execution logs. If that function call is not executed, or its execution is not part of the final output, its debug log will not appear in the final result metadata.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
You will benefit from this built-in if you want to observe:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">Which branch of a conditional was executed, or</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">the order of evaluation in a composition.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Using Add debug log to function call ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Say that you want to add debug logs to our example function "Join two strings with a space" or <code>Z30000</code>, so that different messages are added to the different possible outcomes. You could use our debugging builtin like this:
</div>
<syntaxhighlight lang="prolog">
if (
is_empty_string( Z30000K1 ),
add_debug_log( throw_error( Z30005, ... ), 'failed on first input' )
if(
is_empty_string( Z30000K2 ),
add_debug_log( throw_error( Z30005, ... ), 'failed on second input' ),
add_debug_log(
join_with_separator( Z30000K1, Z30000K2, " " ),
'both inputs are ok!'
)
)
)
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
This way,
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">when called with an empty first input, the function will return a failed response, and the metadata will contain an <code>executorDebugLogs</code> entry with the "failed on first input" log.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">When called with an empty second input, the call will also fail, but the logged message will be "failed on second input"</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">When called with valid inputs, the function will return a successful response, and additionally the metadata will contain "both inputs are ok" in its <code>executorDebugLogs</code> key.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
This is the way this composition would look:
</div>
[[File:Add debug log expanded.png|frame|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Composition implementation using Add debug logs to log all possible execution paths</span>|<span lang="en" dir="ltr" class="mw-content-ltr">Composition implementation using Add debug logs to log all possible execution paths</span>]]
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Accessing execution debug logs ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Whether your execution logs are added via <code>Wikifunctions.Debug()</code> or via the {{Z|Z854}} built-in function, they are returned as part of the response metadata. To see the logs, once you run your function, click on the "Details" button that appears at the bottom of the "Result" section.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The error and debug information will appear at the top of the "Details" dialog.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
This is what you would see when running the composition from our previous example with valid and invalid inputs:
</div>
{| class="wikitable"
| [[File:Execution logs success.png|frameless|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Function metadata dialog for a successful execution with debug logs</span>]]
| [[File:Execution logs failure.png|frameless|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Function metadata dialog for a failed execution with debug logs</span>]]
|-
| <span lang="en" dir="ltr" class="mw-content-ltr">Function metadata dialog for a successful execution: shows no errors, but displays the successful execution log: ''"both inputs are ok!"''</span>
| <span lang="en" dir="ltr" class="mw-content-ltr">Function metadata dialog for a failed execution: shows the error information, and the additional execution log for the first failure branch: ''"failed on first input"''</span>
|}
[[Category:How to create implementations| {{#translation:}}]]
2v139cocj0b6uo7wq0pk7ua9xy8wvqb
Z22425
0
49576
297175
185295
2026-08-07T09:50:47Z
GrounderUK
50
Added Z23326 to the approved list of test cases
297175
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z22425"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z12",
"Z17K2": "Z22425K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "multilingual text"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "testo multilingua"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z11"
},
"Z17K2": "Z22425K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "list of monolingual texts"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "lista di testi monolingua"
}
]
}
}
],
"Z8K2": "Z40",
"Z8K3": [
"Z20",
"Z22426",
"Z22428",
"Z23326"
],
"Z8K4": [
"Z14",
"Z22427"
],
"Z8K5": "Z22425"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "multilingual text includes monolingual text(s)"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "testo multilingue contiene testi monolingua"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31",
{
"Z1K1": "Z31",
"Z31K1": "Z1002",
"Z31K2": [
"Z6",
"Z11s are in Z12",
"contains subset"
]
}
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "returns True if the Z11-list in the Z12/multilingual text is a superset of the list of Z11/monolingual texts"
}
]
}
}
kvwxp88a3009zahn2vlwlpf55512ghm
Wikifunctions:Status updates/ja
4
49834
296991
295117
2026-08-06T18:03:38Z
FuzzyBot
207
Updating to match new version of source page
296991
wikitext
text/x-wiki
<languages/>
{{shortcut|WF:SU}}{{notice|1='''[[:m:Global message delivery/Targets/Wikifunctions & Abstract Wikipedia|購読]]'''すると、新しく発行されるたびにオンウィキで短文の一斉通知が届きます。}}
{{Wikifunctions updates
| prevlabel = 過去の更新
| prev = 2024-02-01
| nextlabel = 最終更新
| next = 2026-08-05
}}
<div lang="en" dir="ltr" class="mw-content-ltr">
A lot is happening around Wikifunctions and Abstract Wikipedia. This is the page where our updates are posted, including the [[Special:MyLanguage/WF:function of the Week|function of the Week]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
You can also subscribe to the [[:m:Global message delivery/Targets/Wikifunctions & Abstract Wikipedia|on-wiki newsletter]] to have them delivered to your talk page or to your project's village pump.
</div>
<inputbox>
type=fulltext
prefix={{NAMESPACE}}:{{PAGENAME}}/
break=no
width=30
searchbuttonlabel={{int:Search}}
placeholder=Search all status updates
</inputbox>
<span id="Newsletters"></span>
== ニュースレター ==
<!--<nowiki> Newsletter entry template:
* <translate><tvar name="1">{{Status updates|2026-0?-??}}</tvar>: Title</translate>
NOTE: Remember to also update the "next =" date at the top of this page.
</nowiki>-->
=== 2026 ===
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-08-05}}: An apple is a fruit</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-07-29}}: Abstract Wikipedia at Wikimania</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-07-16}}: Beyond syntactic tables</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-07-08}}: Moving toward our first Abstract Wikipedia integration milestone</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-07-01}}: Integration on test wiki and annual plan</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-06-26}}: Working on Functions, together</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-06-19}}: The or not the, this is (the?) question</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-06-12}}: Improved loading and display of Test results</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-06-05}}: The illustrated encyclopaedia</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-05-30}}: Looking back and forward</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-05-23}}: Annual plan 2026-2027</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-05-15}}: A higher meaning</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-05-08}}: References from Wikidata are now available</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-05-02}}: Request for input: what should we count for Abstract Wikipedia?</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-04-25}}: The Foundation's search for the perfect language</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-04-16}}: Milestones; Some major issues hopefully resolved</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-04-10}}: Community proposals for capturing meaning</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-04-02}}: Request for Discussion: Syntactic tables</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-03-26}}: First few days of Abstract Wikipedia Beta; Status of Composition Language v2</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-03-19}}: Abstract Wikipedia in Beta</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-03-11}}: A new composition language</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-03-06}}: Citations and Copy and Paste</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-02-26}}: Graceful overrides and fallbacks</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-02-20}}: A sneak preview of Abstract Wikipedia</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-02-13}}: Finishing each other sentences: Starting things; Offsite in Istanbul</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-01-29}}: Integrating Abstract Wikipedia</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-01-22}}: Quarterly plan for January–March 2026</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-01-15}}: 25 years of Wikipedia</span>
=== 2025 ===
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-12-18}}: We wish you a happy new Gregorian year!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-12-11}}: How to write better error messages</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-12-04}}: And the name is Abstract Wikipedia</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-11-27}}: Vote on the new wiki name!; Finishing each other’s sentences</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-11-20}}: Second round of voting for naming the wiki with language-independent content; Sharing function calls</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-11-13}}: Getting ready for second round of voting for naming the wiki with abstract content; Rewriting the backend: Why Rust?</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-11-05}}: First round of voting for naming the wiki for abstract content closed; Calling for Wiktionary functions; Embedded Wikifunctions on Bengali Wikipedia and seven more Wiktionaries</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-10-29}}: Round 1 of “abstract content wiki” naming vote ending Monday; An example of short descriptions</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-10-23}}: Welcome Zaree and Laura! Naming contest round 1 kicked off</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-10-15}}: Kicking Off the Naming Contest for Abstract Wikipedia; Visualizing functions</span>
* {{Status updates|2025-10-08}}:抽象コンテンツの場所決定と10月から12月の季度計画
* {{Status updates|2025-10-03}}: リチテキストは、現在 148 のウィクショナリーやインキュベーターで埋め込み関数で利用可能
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-09-26}}: Accessing qualifiers in Wikidata statements</span>
* {{Status updates|2025-09-19}}: 123 のウィクショナリ言語で利用可能なウィキファンクションズ
* {{Status updates|2025-09-12}}: ウィキファンクションズの 3、000以上の機能
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-09-07}}: Copying function calls from one Wikipedia to another</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-08-29}}: Accessing Wikidata items now possible from embedded function calls; Wikifunctions available on 65 Wikitionaries</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-08-22}}: Recording of Wikimania session: Wikifunctions is coming soon to a wiki near you!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-08-01}}: Wikimania 2025 is coming soon!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-07-26}}: “Wikipedia is an encyclopedia”; Two years of Wikifunctions</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-07-19}}: Wikidata-based enumerations are here</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-07-10}}: Length limits on labels and descriptions</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-07-04}}: Coverage of 1298</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-06-27}}: How many people are needed to write an encyclopedia?</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-06-21}}: Quarterly Planning for July–September 2025</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-06-15}}: Closing the consultation about the location of Abstract Content</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-06-06}}: Where will Abstract Content go?</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-05-29}}: Rolling out to five Wiktionaries; Calculating with today's date</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-05-23}}: Ongoing consultation about the Location for Abstract Content</span>
* {{Status updates|2025-05-15}}: 抽象的な内容の位置
* {{Status updates|2025-05-09}}: 抽象的なウィキペディアとウィキメディアAI戦略
* {{Status updates|2025-04-30}}: 抽象的なウィキペディアはマッカーサー100&チェンジファイナリスト
* {{Status updates|2025-04-25}}: ようこそ, グレゴリー!
* {{Status updates|2025-04-16}}: ウィキファンクションズを統合されましたにダグバニ - とウィキファンクションズ;とイースターの日付
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-04-11}}: Quarter in review</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-04-05}}: Quarterly Planning for April–June 2025; We are looking for a Senior Product Manager</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-03-28}}: It's about time</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-03-20}}: Wikidata-based simple enumerations</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-03-15}}: Upcoming NLG meeting, Recent Changes in the software</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-03-07}}: Recent Changes in the software, Recording of Volunteer’s Corner, and talks in London</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-02-26}}: From things to words</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-02-19}}: A proposal for types per language and part of speech</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-02-13}}: Restricting the World, redux</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-02-06}}: Invitation to the Natural Language Generation Special Interest Group</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-01-29}}: With 2000 Functions into the new year: time for stats</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-01-22}}: Welcome, David! Naming conventions recommendations</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-01-15}}: Happy Wikipedia day! Quarterly planning</span>
=== 2024 ===
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-12-19}}: Function of the Week: age; Intros for year articles; New Type: Floating-point number</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-12-12}}: Sketching a path to Abstract Wikipedia; Team offsite in Lisbon; and much more</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-11-27}}: WordGraph release; New Special page: list functions by tests; new type for day of the year, and much more</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-11-21}}: New special page for missing labels, new type for Gregorian years, and much more</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-11-13}}: New Type: Rational number; Documentation on Wikidata-based types; and more</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-11-07}}: The Dream of a Universal Language</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-11-01}}: Rewriting the backend</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-10-25}}: Our goal for this Quarter: Agreement</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-10-17}}: What could abstract content look like?</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-10-11}}: Wikidata Lexemes in Wikifunctions are coming soon</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-10-02}}: Focus topic: Food</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-09-26}}: Quarterly planning for October–December 2024; Presentation at Celtic Knot tomorrow</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-09-20}}: Introducing focus topic areas</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-09-13}}: Dagbani Wikipedia will be our first wiki for Wikifunctions integration</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-09-06}}: Volunteer's corner and other updates</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-08-29}}: Limits on Name and Description Lengths</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-08-23}}: WasmEdge, Now 300ms Less Edgy</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-08-16}}: Wikimania 2024 edition</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-08-02}}: Revamping our 'About' widget</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-07-26}}: Wikimania 2024 coming soon!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-07-18}}: Research report on integrating Wikifunctions from Wikipedia</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-07-10}}: Type proposals for accessing Lexemes</span>
* {{Status updates|2024-07-03}}: 四半期計画
* {{Status updates|2024-06-26}}: ようこそ、Daphne!
* {{Status updates|2024-06-20}}: 新しいタイプ:整数
* {{Status updates|2024-06-13}}: 新しい型:イグボ暦の月
* {{Status updates|2024-06-06}}: 新しい型:符号
* {{Status updates|2024-05-30}}:単数の単数か複数の複数か?
* {{Status updates|2024-05-22}}: 新しい型:グレゴリオ暦の月
* {{Status updates|2024-05-15}}:関数の要求: 数をスペルアウト!
* {{Status updates|2024-05-10}}: リストの代表型:グレゴリオ暦の月
* {{Status updates|2024-05-03}}: チーム会議と四半期計画
* {{Status updates|2024-04-19}}: ようこそ、Sharvani!
* {{Status updates|2024-04-11}}: ウィキファンクションズのための新しいAPIと1000関数記念
* {{Status updates|2024-04-03}}: Diff に関する製品更新と API の改善について
* {{Status updates|2024-03-28}}:テストの作成がずっと簡単に!
* {{Status updates|2024-03-21}}:数を国際化する道
* {{Status updates|2024-03-13}}: アイデンティティ
* {{Status updates|2024-03-07}}:二番目の新しい型: 自然数
* {{Status updates|2024-02-28}}:自然数型の提案
* {{Status updates|2024-02-22}}: 機能モデルを更新する
* {{Status updates|2024-02-14}}: 修正週間
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-02-07}}: Quarterly planning. Thank you, Nick! Function of the Week: is permutation</span>
* {{Status updates|2024-02-01}}: イグボ語の命令形!
<span id="Before_February_2024"></span>
=== 2024年2月以前 ===
<div lang="en" dir="ltr" class="mw-content-ltr">
All updates from this period are [[:m:Special:MyLanguage/Abstract Wikipedia/Updates|available on Meta-Wiki]].
</div>
[[Category:Status updates{{#translation:}}| ]]
hozflz8ufh1jq6kxjqncy0hqjl8w5xz
Wikifunctions:Cardinal numbers/ja
4
49862
296877
261558
2026-08-06T17:59:44Z
FuzzyBot
207
Updating to match new version of source page
296877
wikitext
text/x-wiki
<languages/>
{{Move|Wikifunctions:Catalogue/Natural language operations/Cardinal numbers|reason=This page is a list of functions, but is outside the catalogue}}
<div lang="en" dir="ltr" class="mw-content-ltr">
We are looking to have functions to create the names of numbers in many different languages. The [[Special:MyLanguage/Wikifunctions:Status updates/2024-05-15|newsletter from 15 May 2024]] made a Call for Functions!
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
On this page, we collect and list the existing functions and related objects in order to coordinate the work.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The functions take as input a [[Z13518|natural number]] and return a [[Z6|string]]. There can be more than one function per language.
</div>
<span id="Languages_covered"></span>
== 使用できる言語 ==
<div class="mw-translate-fuzzy">
現在までに22言語
</div>
{| class="wikitable sortable"
|+ [[Special:ListObjectsByType/Z60|言語]]の関数
|-
! 言語 !! 機能 !! テスト済 !! 実装済 !! 計画
|-
| {{z|Z1002}} || {{z|Z13587}} || ✅ || ✅ || [[WF:human languages/Z1002#natural number|WF:HL]]
|-
| {{z|Z1004}} || {{z|Z16093}} || ✅ || ✅ || [[WF:human languages/Z1004#natural number|WF:HL]]
|-
| {{z|Z1011}} || {{z|Z16150}} || ✅ || ✅ || [[WF:human languages/Z1011#natural number|WF:HL]]
|-
| {{z|Z1014}} || {{z|Z16053}} || ✅ || ✅ || [[WF:human languages/Z1014#natural number|WF:HL]]
|-
| {{z|Z1025}} || {{z|Z15965}} || ✅ || ✅ || [[WF:human languages/Z1025#natural number|WF:HL]]
|-
| {{z|Z1045}} || {{z|Z16172}} || ✅ || ✅ || [[WF:human languages/Z1045#natural number|WF:HL]]
|-
| {{z|Z1062}} || {{z|Z32780}} || ✅ || ⛓️💥 || [[WF:human languages/Z1062#natural number|WF:HL]]
|-
| {{z|Z1146}} || {{z|Z16163}} || ✅ || ✅ || [[WF:human languages/Z1146#natural number|WF:HL]]
|-
| {{z|Z1272}} || {{z|Z16085}} || ✅ || ✅ || [[WF:human languages/Z1272#natural number|WF:HL]]
|-
| {{z|Z1332}} || {{z|Z15953}} || ✅ || ✅ || [[WF:human languages/Z1332#natural number|WF:HL]]
|-
| {{z|Z1430}} || {{z|Z15963}} || ✅ || ✅ || [[WF:human languages/Z1430#natural number|WF:HL]]
|-
| {{z|Z1531}} || {{z|Z15567}} || ✅ || ✅ || [[WF:human languages/Z1531#natural number|WF:HL]]
|-
| {{z|Z1534}} || {{z|Z16185}} || ✅ || ✅ || [[WF:human languages/Z1534#natural number|WF:HL]]
|-
| {{z|Z1592}} || {{z|Z16008}}<br>{{z|Z37749}} || ✅ || ✅ || [[WF:human languages/Z1592#natural number|WF:HL]]
|-
| {{z|Z1624}} || {{z|Z16184}} || ✅ || ✅ || [[WF:human languages/Z1624#natural number|WF:HL]]
|-
| {{z|Z1882}} || {{z|Z16313}} || ✅ || ❌ || [[WF:human languages/Z1882#natural number|WF:HL]]
|-
| {{z|Z1381}} || {{z|Z16398}} || ❌ || ❌ || [[WF:human languages/Z1381#natural number|WF:HL]]
|-
| {{z|Z1003}} || {{z|Z16431}} || ✅ || ✅ || [[WF:human languages/Z1003#natural number|WF:HL]]
|-
| {{z|Z1472}} || {{z|Z16443}} || ✅ || ✅ || [[WF:human languages/Z1003#natural number|WF:HL]]
|-
| {{z|Z1099}} || {{z|Z16409}} || ✅ || ✅ || [[WF:human languages/Z1099#natural number|WF:HL]]
|-
| {{z|Z1282}} || {{z|Z16608}} || ✅ || ✅ || [[WF:human languages/Z1381#natural number|WF:HL]]
|-
| {{Z|Z1820}} || {{Z|Z19334}} || ✅ || ✅ || [[WF:human languages/Z1820#natural number|WF:HL]]
|-
| {{z|Z1012}} || {{z|Z19484}} || ✅ || ✅ || [[WF:human languages/Z1012#natural number|WF:HL]]
|-
| {{Z|Z1787}} || {{Z|Z23003}} || ✅ || ✅ || [[WF:human languages/Z1787#natural number|WF:HL]]
|-
| {{Z|Z1158}} || {{Z|Z24618}} || ✅ || ✅ || [[WF:human languages/Z1158#natural number|WF:HL]]
|-
| {{Z|Z1078}} || {{Z|Z18546}} || ✅ || ✅ || [[WF:human languages/Z1078#natural number|WF:HL]]
|-
| {{Z|Z1762}} || {{Z|Z22455}} || ✅ || ✅ || [[WF:human languages/Z1762#natural number|WF:HL]]
|}
<span id="See_also"></span>
== 関連項目 ==
* {{Z|Z16435}}
* {{Z+|Z16437}}
* {{Z|Z14526}}
mow2atl53f7nxxpnaa5qhf6m1k1x8nw
Help:Using Wikifunctions
12
51398
297019
290593
2026-08-06T18:05:29Z
Ameisenigel
44
297019
wikitext
text/x-wiki
<languages/>
{{about|error messages which can appear when an (embedded) function call fails
|instructions on how to use {{SITENAME}}|Special:MyLanguage/Help:Contents
}}
<translate>
<!--T:1-->
This is a help page to understand what an error means. Do '''not''' change the English titles of the sections, as they are hardcoded as links for errors.
== Unknown object == <!--T:2-->
<!--T:41-->
The function ID or an input reference used in your function call is not a valid ID or it doesn't exist in Wikifunctions.
<!--T:3-->
To fix the function call, edit the page with the visual editor, click on the failing call, and follow the interactive instructions to choose and configure a valid function call.
== Invalid object == <!--T:4-->
<!--T:30-->
The function that your function call is trying to use is currently invalid or corrupted.
<!--T:5-->
If the problem persists, visit the function page and post the details of your issue in the talk page.
== Not a function == <!--T:6-->
<!--T:31-->
The ID used in your function call does not point to a Function, but to an object of some other type.
<!--T:7-->
To fix it, edit the page with the visual editor, click on the failing call, and use the configuration dialog to choose a valid function and set up its input fields.
== Input type not supported == <!--T:8-->
<!--T:32-->
The function in your function call uses one or more input types that are not currently supported, as they cannot be interpreted from strings.
<!--T:9-->
You can search for other supported functions by editing the page with the visual editor and inserting a new function. The initial search dialog will allow you to look through all supported functions.
<!--T:10-->
If you believe this input type should be supported, please inquire about it in the [[<tvar name="1">Wikifunctions:Project chat</tvar>|Wikifunctions Project chat]].
== Output type not supported == <!--T:11-->
<!--T:33-->
The function in your function call returns an output value that is not currently supported, as it cannot be converted to a string.
<!--T:12-->
You can search for other supported functions by editing the page with the visual editor and inserting a new function. The initial search dialog will allow you to look through all supported functions.
<!--T:13-->
If you believe this output type should be supported, please inquire about it in the [[<tvar name="1">Wikifunctions:Project chat</tvar>|Wikifunctions Project chat]].
== Invalid language properties == <!--T:14-->
<!--T:34-->
The function call is using invalid language codes for its parser or renderer language properties.
<!--T:15-->
To fix the issue, edit the page using the source editor and search for the conflicting function call. The language properties will appear as <tvar name="1"><code>parselang</code></tvar> and <tvar name="2"><code>renderlang</code></tvar>, and you must make sure that they are valid BCP 47 language tags. For example:
</translate>
<syntaxhighlight lang="wikitext">
{{#function:Z10000|foo|bar|renderlang=en|parselang=en}}
</syntaxhighlight>
<translate>
== Wrong number of inputs == <!--T:17-->
<!--T:35-->
Your function call wikitext has a different number of input parameters than those expected (either fewer or more).
<!--T:18-->
To fix the issue, edit the page using the visual editor, click on the failing function call, and make sure that all the input fields are set. If the problem still persists, it's likely that your function call has more unnamed inputs than expected, so you should fix it directly with the source editor.
<!--T:19-->
Once you have located your conflicting function, make sure that there are as many inputs separated by <tvar name="1"><code>|</code></tvar> as the function accepts, excluding named parameters such as <tvar name="2"><code>renderlang</code></tvar> or <tvar name="3"><code>parselang</code></tvar>. For example, the following function call has two unnamed inputs, which fits the expectations of the function:
</translate>
<syntaxhighlight lang="wikitext">
{{#function:Z10000|unnamed input 1|unnamed input 2|namedInput=1|foo=bar|parselang=en}}
</syntaxhighlight>
<translate>
== Wrong input type == <!--T:21-->
<!--T:36-->
The function call wikitext contains a referenced value as an input, but this reference does not correspond to the right type of item.
<!--T:22-->
To fix this, edit the page using the visual editor, click on the failing function call, and use the configuration dialog to select a valid value for the failing input.
== Unexpected output == <!--T:23-->
<!--T:37-->
The value returned from running the function call does not correspond to the value type expected for this function. This can be due to some issues in the function implementation.
<!--T:24-->
You can check if the function works as expected in the function page, by testing it with your desired inputs or inquire about it in its talk page.
== Failed evaluation == <!--T:25-->
<!--T:38-->
The function orchestration service failed to evaluate your function call successfully. This can be due to internal orchestrator errors, or due to some issues in the function implementations (e.g. the function has no connected implementations.)
<!--T:26-->
You can check if the function works as expected in the function page, by testing it with your desired inputs or inquire about it in its talk page.
== Wikifunctions is disabled == <!--T:27-->
<!--T:39-->
Wikifunctions features are currently disabled. This can be due to ongoing deployments or technical maintenance and will be resolved in time.
<!--T:28-->
If the error persists, visit the [[<tvar name="1">Wikifunctions:Project chat</tvar>|Wikifunctions Project chat]] and post a message.
== Other system failures == <!--T:29-->
<!--T:40-->
The system encountered an unexpected failure before sending the request for evaluation. If the issue persists, please file a bug in Phabricator.
</translate>
[[Category:Help{{#translation:}}]]
6rk8c5etmxdqkbmt7zclp7wo18x642k
Wikifunctions:Cardinal numbers/da
4
52290
296872
261554
2026-08-06T17:59:41Z
FuzzyBot
207
Updating to match new version of source page
296872
wikitext
text/x-wiki
<languages/>
{{Move|Wikifunctions:Catalogue/Natural language operations/Cardinal numbers|reason=This page is a list of functions, but is outside the catalogue}}
<div lang="en" dir="ltr" class="mw-content-ltr">
We are looking to have functions to create the names of numbers in many different languages. The [[Special:MyLanguage/Wikifunctions:Status updates/2024-05-15|newsletter from 15 May 2024]] made a Call for Functions!
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
On this page, we collect and list the existing functions and related objects in order to coordinate the work.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The functions take as input a [[Z13518|natural number]] and return a [[Z6|string]]. There can be more than one function per language.
</div>
<span id="Languages_covered"></span>
== Dækkede sprog ==
<div class="mw-translate-fuzzy">
21 indtil videre.
</div>
{| class="wikitable sortable"
|+ funktioner efter [[Special:ListObjectsByType/Z60|sprog]]
|-
! Sprog !! Funktion !! Testet !! Implementeret !! Planlægning
|-
| {{z|Z1002}} || {{z|Z13587}} || ✅ || ✅ || [[WF:human languages/Z1002#natural number|WF:HL]]
|-
| {{z|Z1004}} || {{z|Z16093}} || ✅ || ✅ || [[WF:human languages/Z1004#natural number|WF:HL]]
|-
| {{z|Z1011}} || {{z|Z16150}} || ✅ || ✅ || [[WF:human languages/Z1011#natural number|WF:HL]]
|-
| {{z|Z1014}} || {{z|Z16053}} || ✅ || ✅ || [[WF:human languages/Z1014#natural number|WF:HL]]
|-
| {{z|Z1025}} || {{z|Z15965}} || ✅ || ✅ || [[WF:human languages/Z1025#natural number|WF:HL]]
|-
| {{z|Z1045}} || {{z|Z16172}} || ✅ || ✅ || [[WF:human languages/Z1045#natural number|WF:HL]]
|-
| {{z|Z1062}} || {{z|Z32780}} || ✅ || ⛓️💥 || [[WF:human languages/Z1062#natural number|WF:HL]]
|-
| {{z|Z1146}} || {{z|Z16163}} || ✅ || ✅ || [[WF:human languages/Z1146#natural number|WF:HL]]
|-
| {{z|Z1272}} || {{z|Z16085}} || ✅ || ✅ || [[WF:human languages/Z1272#natural number|WF:HL]]
|-
| {{z|Z1332}} || {{z|Z15953}} || ✅ || ✅ || [[WF:human languages/Z1332#natural number|WF:HL]]
|-
| {{z|Z1430}} || {{z|Z15963}} || ✅ || ✅ || [[WF:human languages/Z1430#natural number|WF:HL]]
|-
| {{z|Z1531}} || {{z|Z15567}} || ✅ || ✅ || [[WF:human languages/Z1531#natural number|WF:HL]]
|-
| {{z|Z1534}} || {{z|Z16185}} || ✅ || ✅ || [[WF:human languages/Z1534#natural number|WF:HL]]
|-
| {{z|Z1592}} || {{z|Z16008}}<br>{{z|Z37749}} || ✅ || ✅ || [[WF:human languages/Z1592#natural number|WF:HL]]
|-
| {{z|Z1624}} || {{z|Z16184}} || ✅ || ✅ || [[WF:human languages/Z1624#natural number|WF:HL]]
|-
| {{z|Z1882}} || {{z|Z16313}} || ✅ || ❌ || [[WF:human languages/Z1882#natural number|WF:HL]]
|-
| {{z|Z1381}} || {{z|Z16398}} || ❌ || ❌ || [[WF:human languages/Z1381#natural number|WF:HL]]
|-
| {{z|Z1003}} || {{z|Z16431}} || ✅ || ✅ || [[WF:human languages/Z1003#natural number|WF:HL]]
|-
| {{z|Z1472}} || {{z|Z16443}} || ✅ || ✅ || [[WF:human languages/Z1003#natural number|WF:HL]]
|-
| {{z|Z1099}} || {{z|Z16409}} || ✅ || ✅ || [[WF:human languages/Z1099#natural number|WF:HL]]
|-
| {{z|Z1282}} || {{z|Z16608}} || ✅ || ✅ || [[WF:human languages/Z1381#natural number|WF:HL]]
|-
| {{Z|Z1820}} || {{Z|Z19334}} || ✅ || ✅ || [[WF:human languages/Z1820#natural number|WF:HL]]
|-
| {{z|Z1012}} || {{z|Z19484}} || ✅ || ✅ || [[WF:human languages/Z1012#natural number|WF:HL]]
|-
| {{Z|Z1787}} || {{Z|Z23003}} || ✅ || ✅ || [[WF:human languages/Z1787#natural number|WF:HL]]
|-
| {{Z|Z1158}} || {{Z|Z24618}} || ✅ || ✅ || [[WF:human languages/Z1158#natural number|WF:HL]]
|-
| {{Z|Z1078}} || {{Z|Z18546}} || ✅ || ✅ || [[WF:human languages/Z1078#natural number|WF:HL]]
|-
| {{Z|Z1762}} || {{Z|Z22455}} || ✅ || ✅ || [[WF:human languages/Z1762#natural number|WF:HL]]
|}
<span id="See_also"></span>
== Se også ==
* {{Z|Z16435}}
* {{Z+|Z16437}}
* {{Z|Z14526}}
4gejg47i4itmzx9qr8h3eec4obks5il
Z23323
0
52531
297174
173759
2026-08-07T09:38:17Z
GrounderUK
50
Added Z23325 to the approved list of test cases
297174
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z23323"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z3",
"Z17K2": "Z23323K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "key"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "clé"
}
]
}
}
],
"Z8K2": "Z12",
"Z8K3": [
"Z20",
"Z23325"
],
"Z8K4": [
"Z14",
"Z23324"
],
"Z8K5": "Z23323"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "labels of key"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "libellés de la clé"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31",
{
"Z1K1": "Z31",
"Z31K1": "Z1002",
"Z31K2": [
"Z6",
"key labels",
"label of key",
"key label"
]
}
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "returns the multilingual text labels (key Z3K3) of a key"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "renvoie les libellés des textes multilingues (Z3K3) d'une clé"
}
]
}
}
7hvebqxp7zl03e9z2jcw2ztos9qotd1
Wikifunctions:FAQ/pa
4
53018
296925
265383
2026-08-06T18:02:01Z
FuzzyBot
207
Updating to match new version of source page
296925
wikitext
text/x-wiki
<languages/>
{{shortcut|[[WF:FAQ]]}}
<div lang="en" dir="ltr" class="mw-content-ltr">
This is a dedicated page for the Frequently Asked Questions about Wikifunctions. Please, feel free to ask your own question on the [[Wikifunctions talk:FAQ|talk page]], if your question is not listed here!
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Also, please consider our [[:m:Special:MyLanguage/Abstract Wikipedia/FAQ|FAQ on Meta]] regarding more general questions about Wikifunctions and Abstract Wikipedia.
</div>
__TOC__
<span id="Introduction"></span>
== ਜਾਣ-ਪਛਾਣ ==
<div lang="en" dir="ltr" class="mw-content-ltr">
=== What is this project about? ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Wikifunctions is a new Wikimedia project that provides a catalog of all kinds of functions that anyone can call, write, maintain, and use. It also provides the underlying technology that will eventually enable the translation of language-independent articles from Abstract Wikipedia into the language of any Wikipedia. This will allow everyone to contribute and read articles in their preferred languages.
</div>
<span id="What_is_a_function?"></span>
== ਵਿਕੀਕਾਰਜ਼ ਕੀ ਏ? ==
<div lang="en" dir="ltr" class="mw-content-ltr">
Functions are a form of knowledge that can answer questions, such as how many days have passed between two dates or the distance between two cities. More complicated functions can answer more complicated questions, such as the volume of a three-dimensional shape, the distance between Mars and Venus on a certain date, or whether two species were alive at the same time.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
We already use functions in many types of knowledge inquiries, such as asking a question to a search engine. The templates, such as [[:w:en:Template:Convert|Template:Convert]] and [[:w:en:Template:Age|Template:Age]] on English Wikipedia, are also examples of functions that are already used in many Wikipedias, written in wikitext and Lua and manually copied to each wiki where they're wanted.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== What is an implementation? ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
An implementation is a particular way to execute a function. An implementation is a recipe that lists the steps that are needed to run the function. It may be a piece of code in a programming language or a combination of calls to other functions. A function may have many implementations, which should all be equivalent.
</div>
<span id="What_is_a_test?"></span>
== ਪ੍ਰੀਖਿਆ ਕੀ ਏ? ==
<div lang="en" dir="ltr" class="mw-content-ltr">
A test is a way to determine if a given function is doing the right thing. A function will typically have multiple testers, each specifying some input to the function and the conditions the output for the given input must fulfill.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For example, testers for a “title case” function might include: “<span dir="ltr" lang="en">abc</span>” should become “<span dir="ltr" lang="en">Abc</span>”; “<span dir="ltr" lang="en">war and peace</span>” should become “<span dir="ltr" lang="en">War and Peace</span>”; “<span dir="ltr" lang="ru">война и мир</span>” should become “<span dir="ltr" lang="ru">Война и мир</span>”; and “<span dir="ltr" lang="en">123</span>” should remain “<span dir="ltr" lang="en">123</span>”.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Which features are available now, which will be soon available, and which are further away? ===
</div>
* ਸ਼ੁਰੂ ਹੋਣ ਸਮੇਂ:
** <span lang="en" dir="ltr" class="mw-content-ltr">We have the ability to have functions that work with Strings and Booleans.</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">Wikifunctions will be fully internationalized from the beginning. It can be used in any language.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Wikifunctions:Status|Ongoing development]]:</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">Generic types and generic functions are not fully supported.</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">Adding types will, for now, be something that is limited to the development team. In the future, the community will be able to add more types. There is a lot of work to be done in the future to make types behave much more smoothly.</span>
*** <span lang="en" dir="ltr" class="mw-content-ltr">One particularly interesting type will be binary data, and particularly files.</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">We currently support two programming languages for implementations: JavaScript and Python. In the future, we want to support many more.</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">Currently, it is ''not'' possible to call other functions from implementations written in any programming language. This is currently only possible through composition.</span>
* ਭਵਿੱਖ ਵਿੱਚ:
** <span lang="en" dir="ltr" class="mw-content-ltr">It will be possible to call Wikifunctions functions from other Wikimedia projects and integrate their results into the output of the page.</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">It will be possible to use data from Wikidata in functions.</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">It will be possible to call data sets from Commons Data namespace.</span>
<span id="How_is_Wikifunctions_multilingual?"></span>
=== ਵਿਕੀਕਾਰਜ਼ ਬਹੁਭਾਸ਼ਾਈ ਕਿਵੇਂ ਏ? ===
{{main|Special:MyLanguage/Help:Multilingual}}
<div lang="en" dir="ltr" class="mw-content-ltr">
Wikifunctions and Abstract Wikipedia are multilingual in a number of ways that do not impact each other:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Wikifunctions is multilingual in terms of its content and user interface.''' Users can read and call functions on Wikifunctions in any natural language. Here is the “join string” function in [https://www.wikifunctions.org/view/en/Z10000 English], [https://www.wikifunctions.org/view/pl/Z10000 Polish], and [https://www.wikifunctions.org/view/he/Z10000 Hebrew], and it is available in many more languages.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Contributors can edit and improve Wikifunctions using their language.''' Even implementations can be edited in the natural language of the contributor. For example, the composition of the “and” function can be edited in [https://www.wikifunctions.org/wiki/Z11223?action=edit&uselang=de German], [https://www.wikifunctions.org/wiki/Z11223?action=edit&uselang=en English], or any other of about 300 languages.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Wikifunctions functions can be used to create results for any natural language.''' The community is creating a growing number of functions to support the generation of text in many natural languages. We have functions for [[Wikifunctions:Catalogue#Breton|Breton]], [[Wikifunctions:Catalogue#Rohingya|Rohingya]], [[Wikifunctions:Catalogue#English|English]], and many other languages.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Functions in Wikifunctions can be implemented in various different programming languages.''' For example, the [[Z10000|join function]] is implemented in both [[Z10005|JavaScript]] and [[Z10004|Python]].</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Which programming languages does Wikifunctions currently support? Which programming languages will be supported in the future? ===
</div>
{{main|WF:programming languages}}
<div lang="en" dir="ltr" class="mw-content-ltr">
Currently, Wikifunctions supports implementations written in JavaScript and Python. We plan to add support for more programming languages in the future. We hope to add at least one further programming language in 2025 (but have not yet decided which one).
</div>
<span id="How_will_Wikifunctions_be_integrated_into_other_projects?"></span>
=== ਵਿਕੀਕਾਰਜ਼ ਨੂੰ ਹੋਰ ਪ੍ਰੋਜੈਕਟਾਂ ਵਿੱਚ ਕਿਵੇਂ ਜੋੜਿਆ ਜਾਵੇਗਾ? ===
<div lang="en" dir="ltr" class="mw-content-ltr">
Wikifunctions is the first step towards building Abstract Wikipedia. Our near-term focus will be on supporting the community and making improvements based on feedback. Concurrently, we will begin the process of integrating it with Wikipedia and Wikidata, which will enable broader real-life applications and get us closer to the vision of Abstract Wikipedia.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Contributors will be able to call functions stored on the Wikifunctions site from within their wikis. The result of the function call will be displayed to readers of the wiki. This can be used, for example, to calculate the age of a person, the population density based on population and area data from Wikidata, or to draw a graph and integrate it into a given article.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Another option to integrate Wikifunctions will be to integrate an interactive function call interface within their wiki. This could be used, for example, in a Wikipedia article to dynamically calculate the result of a physical equation based on reader-provided parameters, draw and interact with mathematical functions, etc.
</div>
<span id="What_Wikifunctions_is_not"></span>
<div class="mw-translate-fuzzy">
=== ਵਿਕੀਕਾਰਜ਼ ਕੀ ਨਹੀਂ ਏ? ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Please, see [[Special:MyLanguage/Wikifunctions:What Wikifunctions is not|Wikifunctions:What Wikifunctions is not]] for more information on that.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== What license will the functions and derived content be under? ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Per the discussion happened [[:m:Special:MyLanguage/Abstract Wikipedia/Licensing discussion|on Meta between November and December 2021]], all contributions to Wikifunctions and the wider Abstract Wikipedia projects will be published under free licenses. In particular:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Special:MyLanguage/Wikifunctions:Glossary#Content|Textual content]] on Wikifunctions will be published under [[w:Creative Commons license|CC BY-SA 4.0]].</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Special:MyLanguage/Wikifunctions:Glossary#Function|Function signatures]] and other structured content on Wikifunctions will be published under [[w:CC0|CC 0]].</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Special:MyLanguage/Wikifunctions:Glossary#Implementation|Code implementations]] in Wikifunctions will be published under the [[w:Apache License|Apache 2 license]].</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Special:MyLanguage/Wikifunctions:Glossary#Content|Abstract Content]] for Abstract Wikipedia will be published under CC BY-SA 4.0.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
There are still some points that will need to be addressed in the future, such as the license of the generated content from the abstract content. We plan on drafting a more comprehensive document with the Legal department about how people can re-use code from Wikifunctions as painlessly as possible, while adhering to the license.
</div>
<span id="Contributing"></span>
== ਯੋਗਦਾਨ ਪਾਉਣਾ ==
<span id="I'm_new_here._What_is_there_for_me_to_do_and_how_can_I_help?"></span>
=== ਮੈਂ ਇੱਥੇ ਨਵਾਂ/ਨਵੀਂ ਹਾਂ। ਮੇਰੇ ਲਈ ਇੱਥੇ ਕਰਨ ਲਈ ਕੀ ਹੈ ਅਤੇ ਮੈਂ ਕਿਵੇਂ ਮਦਦ ਕਰ ਸਕਦਾ/ਸਕਦੀ ਹਾਂ? ===
<div lang="en" dir="ltr" class="mw-content-ltr">
Welcome! We're very happy to have you here! There are many opportunities for contributing to Wikifunctions, from creating new functions to improving and translating documentation. If you are looking for ways to get involved, we recommend that maybe, depending on your level of comfort, you suggest a new function on a topic you are interested in. Or even create such a function. Provide some tests. Try your hand at an implementation. Help with translations. Read and improve our documentation. Help with organizing the community.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== How do I create a new function, implementation, or test? ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
To see how to create a new function, implementation, or test, see [[Special:MyLanguage/Wikifunctions:Introduction|Wikifunctions:Introduction]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
To see in more detail how to create an implementation, see [[Special:MyLanguage/Wikifunctions:How to create implementations|Wikifunctions:How to create implementations]].
</div>
<span id="What_should_I_edit_first?"></span>
=== ਮੈਨੂੰ ਪਹਿਲਾਂ ਕੀ ਸੋਧਣਾ ਚਾਹੀਦਾ ਏ?
<div lang="en" dir="ltr" class="mw-content-ltr">
If you can write several languages, find functions that don't have labels and descriptions in your languages yet on the page [[Special:ListMissingLabels]], and help to add them.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If you have some interest in a domain that could feature functions in Wikifunctions, but yet doesn't, or if you have more ideas for functions, go to the page for [[Wikifunctions:Suggest a new function|suggesting new functions]] and present your ideas.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If you are a coder in JavaScript or Python, maybe you want to check for functions that don't yet have implementations in JavaScript or Python, and try to write them.
</div>
<span id="Where_can_I_go_for_help?"></span>
=== ਮਦਦ ਲਈ ਮੈਂ ਕਿੱਥੇ ਜਾ ਸਕਦਾ/ਸਕਦੀ ਹਾਂ? ===
<div lang="en" dir="ltr" class="mw-content-ltr">
Your first stop should be the [[Special:MyLanguage/Help:Contents|Help portal]], where you'll find all the documentation related to using and editing Wikifunctions. If you're still stuck, post a message on [[Wikifunctions:Project chat|Project chat]], and someone will answer your question.
</div>
<span id="How_do_we_sort_or_categorize_functions?"></span>
=== ਅਸੀਂ ਕਾਰਜ਼ਾਂ ਨੂੰ ਕਿਵੇਂ ਛਾਂਟਦੇ ਜਾਂ ਸ਼੍ਰੇਣੀਬੱਧ ਕਰਦੇ ਹਾਂ? ===
{{Tracked|T285424}}
<div lang="en" dir="ltr" class="mw-content-ltr">
For now, the best way to sort or categorize functions is to do it by hand through [[Special:MyLanguage/Wikifunctions:Catalogue|pages in the Wikifunctions namespace]]. Another option would be through the talk page of the given function. We will monitor these efforts and discuss with the community which changes to the system would be helpful for this task.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== How can I setup the software locally to hack on it? ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
See [[Special:MyLanguage/Wikifunctions:Hacking on the evaluator and orchestrator|Hacking on the evaluator and orchestrator]].
</div>
[[Category:FAQ| {{#translation:}}]]
7yfspvyli98jq1myvxevt9ukc6bi98t
Wikifunctions:Report a technical problem/pa
4
53416
296970
279549
2026-08-06T18:03:12Z
FuzzyBot
207
Updating to match new version of source page
296970
wikitext
text/x-wiki
<languages/>
{{shortcut|[[WF:BUG]]}}
{{see also
|Special:MyLanguage/WF:Status|l1=WF:Status
|Special:MyLanguage/WF:Feature_petitions|l2=WF:Feature petitions
}}
ਜੇ ਤੁਹਾਨੂੰ ਵਿਕੀਕਾਰਜ਼ ਵਿੱਚ ਕੋਈ ਮਾਂਙਣੂ(bug) ਮਿਲਿਆ ਏ, ਜਾਂ ਤੁਹਾਡੇ ਕੋਲ ਵਿਕੀਕਾਰਜ਼ਾਂ ਲਈ ਇੱਕ ਗੁਣ ਦੀ ਬੇਨਤੀ ਹੈ, ਤਾਂ ਕਿਰਪਾ ਕਰਕੇ ਸਾਨੂੰ ਦੱਸੋ!
<span id="Scope"></span>
== ਦਾਇਰਾ ==
* '''ਮਾਂਙਣੂ (bug)''' - ਇੱਕ ਸਮੱਸਿਆ ਜੋ ਵਿਕੀਕਾਰਜ਼ 'ਤੇ ਗਲਤ ਜਾਂ ਅਣਜਾਣ ਨਤੀਜੇ ਪੈਦਾ ਕਰਦਾ ਹੈ। ਧਿਆਨ ਦਿਓ ਕਿ ਕਾਰਜ਼ਾ ਦੇ ਅੰਦਰ ਸਮੱਸਿਆਵਾਂ ਨੂੰ ਇਸ ਸੰਦਰਭ ਵਿੱਚ ਮਾਂਙਣੂ (bug) ਨਹੀਂ ਮੰਨਿਆ ਜਾਂਦਾ ਏ।
* '''ਖ਼ਾਸ ਬੇਨਤੀ'''' - ਇੱਕ ਵਿਚਾਰ ਜਿਸਨੂੰ ਤਰੱਕੀ ਟੀਮ ਵਿਕੀਕਾਰਜ਼ ਵਿੱਚ ਜੋੜਦੀ ਏ ਤਾਂ ਜੋ ਇਸਨੂੰ ਹੋਰ ਵੀ ਸ਼ਾਨਦਾਰ ਬਣਾਇਆ ਜਾ ਸਕੇ।
ਕੀ ਤੁਹਾਨੂੰ ਕਿਸੇ ਹੋਰ ਚੀਜ਼ ਵਿੱਚ ਮਦਦ ਦੀ ਲੋੜ ਏ?
: ਹੇਠ ਲਿਖੇ ਵਿਕੀਕਾਰਜ਼ ਵਿਕਾਸਕਾਰ ਟੀਮ ਦੇ ਕੰਮ ਦੇ '''ਦਾਇਰੇ ਤੋਂ ਬਾਹਰ''' ਹਨ:
:* <span lang="en" dir="ltr" class="mw-content-ltr">The '''content of individual Functions''' – Discuss those on the talkpage of the Function itself, or ask for help at [[Wikifunctions:Project chat]] or in the channels listed below; if you think a function is missing, see [[Wikifunctions:Suggest a function]]</span>
:* <span lang="en" dir="ltr" class="mw-content-ltr">The '''Wikifunctions project's policies''' – Ask about those at [[Wikifunctions:Project chat]] or in the channels listed below</span>
<span id="Find_existing_bugs_and_feature_requests"></span>
== ਮੌਜੂਦਾ ਮਾਂਙਣੂ (bug) ਅਤੇ ਗੁਣਾਂ ਦੀ ਬੇਨਤੀਆਂ ਨੂੰ ਲੱਭੋ ==
* ਉੱਚ-ਪੱਧਰੀ ਮੁੱਦਿਆਂ ਦੇ ਛੇਤੀ ਸਾਰ ਲਈ '''[[Wikifunctions:Status]]''' ਵੇਖੋ।
* ਤੁਸੀਂ '''[[phab:maniphest/query/UzvNRqsdnymk/|ਫੈਬਰੀਕੇਟਰ]] ਵਿੱਚ ਖੁੱਲ੍ਹੇ ਕੰਮਾਂ ਦੀ ਸੂਚੀ ਖੋਜ ਸਕਦੇ ਹੋ''' ਇਹ ਦੇਖਣ ਲਈ ਕਿ ਕੀ ਤੁਹਾਡਾ ਮਾਂਙਣੂ (bug) ਜਾਂ ਗੁਣਾਂ ਦੇ ਵਿਚਾਰ ਪਹਿਲਾਂ ਹੀ ਲਿਖਤੀ ਰੂਪ ਵਿੱਚ ਦਰਜ ਨੇ।
<span id="Discuss_with_others"></span>
== ਹੋਰਾਂ ਨਾਲ ਚਰਚਾ ਕਰੋ ==
<div lang="en" dir="ltr" class="mw-content-ltr">
You can ask questions about possible bugs or feature ideas at a few locations. This may be helpful if you are unsure how to clearly describe the bug or feature idea:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">The discussion page [[Wikifunctions:Project chat|here]].</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">The main chat on [https://t.me/Wikifunctions Telegram] or IRC {{channel|wikipedia-abstract}} (bridged together) ([https://wm-bot.wmcloud.org/logs/%23wikipedia-abstract/ logs], [https://wm-bot.wmflabs.org/logs/%23wikipedia-abstract/ old logs])</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">The developer chat on [https://t.me/abstract_wikipedia_tech Telegram] or IRC {{channel|wikipedia-abstract-tech}} (bridged together) ([https://wm-bot.wmcloud.org/logs/%23wikipedia-abstract-tech/ logs])</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
== File a task in Phabricator ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If you are familiar with Phabricator, you can search and file tasks directly.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If you are not yet familiar: Phabricator is the web-based development collaboration tool mostly used to manage MediaWiki software projects including Wikifunctions. A short summary about Phabricator for newcomers, including tutorial videos, is on MediaWiki's wiki at [[mw:Special:MyLanguage/Phabricator/Help|mw:Phabricator/Help]].
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">You can '''[[phab:maniphest/query/UzvNRqsdnymk/|search]] the listing of open tasks''' to see if your bug or feature idea is already documented.</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">The existing tasks are collected with the '''[[phab:tag/abstract wikipedia team|#abstract wikipedia team]] tag'''.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">You can '''[https://phabricator.wikimedia.org/maniphest/task/edit/form/43/?projects=abstract_wikipedia file a new task]'''. Please always include:</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">Examples</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">Any relevant links</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">For bugs: The exact steps that produced the bug, so that the team can reproduce and diagnose it.</span>
<span id="Languages"></span>
== ਬੋਲਿਆਂ ==
<div lang="en" dir="ltr" class="mw-content-ltr">
The development team understands a limited number of languages – but you are free to report issues in any language that you're comfortable with.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If possible, please provide a summary in English when creating a phabricator task, or ask someone to help you.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Follow-up ==
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">The locations above are followed by the Wikifunctions development team, as well as community members. The time to get a reply varies depending on the nature or complexity of the topic, etc. However, in general, you can get an answer within 2 workdays. Please let us know if we missed something, as life can get distracting!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Not all problems can be solved immediately: depending on the impact, priority, etc. some bugs can be triaged to low priority. You may follow the status of your report on the relevant linked phabricator task.</span>
[[Category:Report a technical problem{{#translation:}}]]
ehz3h7nsc6vurz3m0yj88qqy8m5swsh
Wikifunctions:How to create implementations/pa
4
53431
296942
276455
2026-08-06T18:02:35Z
FuzzyBot
207
Updating to match new version of source page
296942
wikitext
text/x-wiki
<languages/>
ਇਹ ਵਰਕਾ {{ll|Wikifunctions:Introduction}} 'ਤੇ ਸੰਖੇਪ ਜਾਣਕਾਰੀ ਤੋਂ ਪਰੇ, '''ਅਮਲ-ਲਿਆਉਣਾ ਬਣਾਉਣ''' ਲਈ ਵਧੇਰੇ ਵੇਰਵੇ ਨਾਲ ਦਸਤੀ ਦੇਂਦਾ ਏ।
<div lang="en" dir="ltr" class="mw-content-ltr">
== Types of Implementations ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
In Wikifunctions, an '''implementation''' can take one of two main forms: '''code''' or '''composition'''. A code implementation directly expresses the function’s logic in any of the available programming languages (currently, Python3 or JavaScript). It’s most useful when the function’s behavior can’t easily be built from existing Wikifunctions, or when precise control over data processing is needed.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
A composition implementation, on the other hand, defines the function entirely by combining other existing functions, without writing code. Compositions are easier to understand, reuse, and translate into other languages automatically, but they depend on suitable building blocks already being available and often are less performant. In general, start by checking whether your goal can be achieved through composition; if it can’t, or if performance or fine-grained logic matters, choose a code implementation instead.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
There's a third type of implementation: '''built-ins'''. These are run by system-built code, and are not editable. Most likely all pre-defined functions will have a built-in implementation. In such cases, when opening the implementation page, you will see a message stating ''"{{int|wikilambda-implementation-selector-none}}"''
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Practice Test-Driven Development ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
'''Test-Driven Development''', or '''TDD''', is a way of creating software where you write tests before you write the actual code. Tests are just a way of understanding what your function is supposed to do by listing examples and how they should work.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
In Wikifunctions, writing tests first offers significant benefits. If you are working on an implementation, you can run your code against the existing tests to check that it behaves as expected. This makes it easier to catch errors early before even publishing your implementation. Tests are also a powerful way to describe the function you need. By writing tests, '''you clearly communicate the expected behavior''', and the community can step in and help with the implementation, or create alternative implementations.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Imagine you want to implement a Function that combines two strings with a space in between. A basic test for this might look like:
</div>
<syntaxhighlight lang="prolog">
join_with_space( "Hello", "world" ) => "Hello world"
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
Once you have defined the basic behavior, it's important to '''think about edge cases'''—situations where the inputs are such that you might need some special behavior.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For example, what if your first string ends in a space, or your second string starts with a space? Should the function keep all existing spaces and add another one, or should it return a neatly spaced result with just a single space between the words?
Depending on your requirements, you should build a test for such a case. For example, a test for this edge case could be either one of these — but not both!:
</div>
<syntaxhighlight lang="prolog">
join_with_space( "Hello ", " world") => "Hello world"
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
or ...
</div>
<syntaxhighlight lang="prolog">
join_with_space( "Hello ", " world") => "Hello world"
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
Make sure that all possible special cases are covered by your tests, and once you have them, make sure that they are all connected to the Function by selecting them and clicking "Connect".
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Code implementations ==
</div>
[[File:Code implementation.png|thumb|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Wikifunctions code editor initialized with a function template</span>|<span lang="en" dir="ltr" class="mw-content-ltr">When adding a new code implementation, the function template is initialized with the function and argument names</span>]]
<div lang="en" dir="ltr" class="mw-content-ltr">
When creating an implementation using code, the Wikifunctions UI will set up a code editor with the selected language activated for syntax highlighting and validation. When the function to implement and the programming language are selected, this editor will be set with the correct function template: '''do not remove or edit this'''! Keep your code inside this function signature: if you need auxiliary functions, you can simply declare them inside your top-level function declaration.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Using input types in your code ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Wikifunctions types {{Z|Z6}} and {{Z|Z40}} can be used as if they were native types in both JavaScript and Python3. For example, a String input can be concatenated or a Boolean be directly used in a logical expression. To use other types in your code implementations, you will have to look deeper into the type, figure out if it has a conversion to a native equivalent, and treat it accordingly.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For example, let's say we want to write some Python code that handles an input of type {{Z|Z20420}}. In the page for this type, let's look at its "type converters to code" and search for a Python one. The converter {{Z|Z20424}} will be applied to our date input before our code, so looking at "native type" we know that our input will be a Python ''dict'' and looking at the implementation we can see the keys we can expect:
</div>
<syntaxhighlight lang="python3">
return {
'K1': year,
'K2': month,
'K3': day
}
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
When a type doesn't have a converter, you'll have to access its parts directly using its keys. For example, let's assume that your function <code>Z30000</code> has one input <code>Z30000K1</code> of type {{Z|Z11}}. This type has two keys: <code>Z11K1</code> for the language (itself an object of type {{Z|Z60}}), and <code>Z11K2</code> for the string value. Similarly, the language object has a key <code>Z60K1</code> for the language code. So, to get a string with the language code and the text, you can write:
</div>
<syntaxhighlight lang="javascript">
function Z30000( Z30000K1 ) {
// e.g. "en: some text"
return Z30000K1.Z11K1.Z60K1 + ": " + Z30000K1.Z11K2;
}
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
For a quick reference of the available type conversions visit [[Special:MyLanguage/Wikifunctions:Execution targets#Default type conversion|the default type conversion table]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Returning the right outputs ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Similarly to the way you treat inputs, outputs need to match the type specified in the function definition. Some can be treated as simply as native types, so any string output will be converted into a Wikifunctions {{Z|Z6}} object and any native boolean returned by your implementation will be converted into a Wikifunctions {{Z|Z40}} object.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Those types that have "type converters from code" will apply the appropriate function to the output, in order to build the required type. Following the example of {{Z|Z20420}}, the {{Z|Z20443}} will transform the output from your implementation–a dict with K1, K2 and K3 keys–into its correct ZObject representation.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For types that don't have converters from code, you can carefully build and return the output objects. For example, imagine that our function <code>Z30000</code> takes two string inputs: language code and text, and should return a {{Z|Z11}} object. You can do this in Python by using the <code>ZObject</code> constructor:
</div>
<syntaxhighlight lang="python3">
def Z30000(Z30000K1, Z30000K2):
lang_object = ZObject(
{"Z1K1": "Z9", "Z9K1": "Z60"},
Z60K1 = Z30000K1
)
return ZObject(
{"Z1K1": "Z9", "Z9K1": "Z11"},
Z11K1 = lang_object,
Z11K2 = Z30000K2
)
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
Or in JavaScript:
</div>
<syntaxhighlight lang="javascript">
function Z30000( Z30000K1, Z30000K2 ) {
const langObject = new ZObject(
new Map( [ [ "Z60K1", Z30000K1 ] ] ),
{ "Z1K1": "Z9", "Z9K1": "Z60" }
);
const monolingualKeys = new Map( [
[ "Z11K1", langObject ],
[ "Z11K2", Z30000K2 ]
] );
return new ZObject(
monolingualKeys,
{ "Z1K1": "Z9", "Z9K1": "Z11" }
);
}
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
You can learn more about the <code>ZObject</code> class and other useful constructors in {{ll|Wikifunctions:Execution_targets#Custom_and_non-built-in_type_conversion}}
</div>
{{phab|T392750}}<div lang="en" dir="ltr" class="mw-content-ltr">
As of 2026-05, trying to return a list of lists may fail, so you're not able to implement such functions in code.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Code in Python ===
</div>
<div class="mw-translate-fuzzy">
ਇਸ ਭਾਗ ਵਿੱਚ, ਅਸੀਂ ਪਾਈਥਨ ਵਿੱਚ ਕੋਡ ਦੇ ਰੂਪ ਵਿੱਚ ਇੱਕ ਅਮਲ-ਲਿਆਉਣਾ ਕਿਵੇਂ ਬਣਾਇਆ ਜਾਵੇ ਇਸ ਬਾਰੇ ਇੱਕ ਠੋਸ ਉਦਾਹਰਣ ਦਿੰਦੇ ਹਾਂ। ਮੰਨ ਲਓ ਕਿ ਅਸੀਂ ਇੱਕ ਕਾਰਜ਼ ਲਈ ਇੱਕ ਅਮਲ-ਲਿਆਉਣਾ ਬਣਾਉਣਾ ਚਾਹੁੰਦੇ ਹਾਂ ਜੋ ਦੋ input ਸਤਰ ਨੂੰ ਉਹਨਾਂ ਵਿਚਕਾਰ ਖਾਲੀ ਥਾਂ ਦੇ ਨਾਲ ਜੋੜਦਾ ਹੈ ਅਤੇ ਉਹਨਾਂ ਦਾ ਨਤੀਜਾ ਵਾਪਸ ਕਰਦਾ ਹੈ। ਮੰਨ ਲਓ ਕਿ Z11057 ਉਸ ਕਾਰਜ਼ ਦਾ ZID ਏ।
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The implementation is defined using the ZID of the function. So are the arguments of the function. So in the case of the function Z30000 with its two arguments, the function template should look like this:
</div>
<syntaxhighlight lang="python3">
def Z30000(Z30000K1, Z30000K2):
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
As we described before, we know that the arguments (<code>Z30000K1</code> and <code>Z30000K2</code>) are Strings, so we can treat them as simply as we use native strings in Python. Also, the function should return a String. For our example, we simply return the two arguments concatenated with a space in between:
</div>
<syntaxhighlight lang="python3">
def Z30000(Z30000K1, Z30000K2):
return Z30000K1 + " " + Z30000K2
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
Since this is Python, do not forget to indent this line.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If you have followed our advice to [[#Practice Test-Driven Development|practice TDD]], you will already have a set of tests that you know should work. If that's the case, while building your implementation you can click on the circular arrow in the Tests panel, and see if your implementation passes all of them.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Remember that the runtime has no state. Don’t assume values for global or static variables. If you have further questions about what you can and cannot do in Python, ask on [[Wikifunctions:Python implementations]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Code in JavaScript ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
In this section, we give a concrete example on how to create an implementation in the form of Code in JavaScript. Say we want to create an implementation for a Function which combines two input strings by putting a space between them, returning the result of that. Let’s assume the ZID of that function is <code>Z30000</code>.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The implementation is defined using the ZID of the function. So are the arguments of the function. So in the case of the function <code>Z30000</code> with its two arguments, the function template should look like this:
</div>
<syntaxhighlight lang="javascript">
function Z30000( Z30000K1, Z30000K2 ) {
}
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
We know that the arguments (<code>Z30000K1</code> and <code>Z30000K2</code>) are Strings, so we can treat them as native strings in JavaScript. Also, the function should return a String. To complete our function, you can then add a line concatenating the input strings, like this:
</div>
<syntaxhighlight lang="javascript">
function Z30000( Z30000K1, Z30000K2 ) {
return Z30000K1 + " " + Z30000K2;
}
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
If you have tests as recommended in the [[#Practice Test-Driven Development|TDD]] section above, click on the circular arrow in the Tests panel and see if your implementation passes all of them.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Remember that the runtime has no state. Don’t assume values for global or static variables. If you have further questions about what you can and cannot do in JavaScript, ask on [[Wikifunctions:JavaScript implementations]].
</div>
<span id="Compositions"></span>
<div class="mw-translate-fuzzy">
== ਬਣਤਰ ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
In this section, we give a concrete example on how to create an implementation in the form of a composition. Say we want to create an implementation for a Function which combines two input strings by putting a space between them, returning the result of that. Let’s assume the ZID of that function is <code>Z30000</code>.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
It is usually a good idea to first think about how to combine existing functions in order to create the desired output. Sometimes this might be trivial, and you can just go ahead with composing functions, but in many cases it is worthwhile to note the desired composition down.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For example, for the given Function, we could use the existing Function {{Z|Z10000}}. That Function takes two strings and makes one string out of them. But we need to add a space in between. So we first concatenate a space to the end of the first string, and then concatenate the second string to the result of that first concatenation. So our composition could be noted down like this:
</div>
<syntaxhighlight lang="prolog">
join_strings( join_strings( Z30000K1, " " ), Z30000K2 )
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
There are multiple ways to write a composition: notice that the same thing could be accomplished with:
</div>
<syntaxhighlight lang="prolog">
join_strings( Z30000K1, join_strings( " ", Z30000K2 ) )
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
An alternative implementation could also use the existing Function {{Z|Z15175}}, so your composition could be:
</div>
<syntaxhighlight lang="prolog">
join_with_separator( Z30000K1, Z30000K2, " " )
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
As you can see, there are multiple ways to accomplish this, so take your time and explore the existing functions available in the {{ll|Wikifunctions:Catalogue}}.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Let's try to create the second example, <code>join_strings(Z30000K1, join_strings(" ", Z30000K2))</code>.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
In order to create this:
</div>
# <span lang="en" dir="ltr" class="mw-content-ltr">Start adding an implementation by clicking on the "+" button in the "Implementations" table from your Function page.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Make sure that the option "composition" under "Implementation" is selected.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Click on the "›" icon or click the "Select Function" link to expand the function details.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Under "function" search for the name of the outermost function you want to use, which in this example is "join two strings". Then, select the wanted function from the dropdown list.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">You will see two new fields, one for each of the arguments needed for the selected function.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">For the first argument, we want to select the first input to our function:</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "first string", click on the "…" button and select "Argument reference".</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "key id" you can now select the first string of your function from the dropdown, which contains all available inputs.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">For the second argument, we want to use the result of another call to "join two strings":</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "second string", click on the "…" button and select "Function call".</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function", search and select the function you want to call, which is again "join two strings".</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">For this inner function call, configure the "first string" by simply typing a white space in the text field, and configure the "second string" as you did for step 6: change it using the "…" button to "Argument reference", and then select the second argument in the dropdown.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
Your composition is now complete!
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
You can expand and collapse the details using the chevron buttons to see how it looks. If you already have Tests as recommended in the [[#Practice Test-Driven Development|TDD]] section above, click on the circular arrow in the Tests panel and see if your implementation passes the tests. Once your composition passes the tests, go ahead and publish it.
</div>
[[File:Composition implementation expanded.png|frame|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">A Wikifunctions composition implementation in its expanded view</span>|<span lang="en" dir="ltr" class="mw-content-ltr">A Wikifunctions composition implementation in its expanded view</span>]]
[[File:Composition implementation collapsed.png|frame|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">A Wikifunctions composition implementation in its collapsed view</span>|<span lang="en" dir="ltr" class="mw-content-ltr">A Wikifunctions composition implementation in its collapsed view</span>]]
<div lang="en" dir="ltr" class="mw-content-ltr">
== Wikifunctions error handling ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
As a Wikifunctions function creator, you might want to warn the user calling your function when something goes wrong in the code, or when their inputs do not fit a certain criteria. For example, if your Function expects a string input to contain a name, you might want to check that the name is not empty and, if it is, show an error message that the person using your Function can understand.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For this purpose, you can use <code>Wikifunctions.Error()</code> from your code implementations or the function {{Z|Z851}} from your compositions.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
In this section you will learn:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">How to throw errors from both code and composition implementations,</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">how to write tests for error cases, and</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">how to catch and handle errors thrown by functions that you are using in your compositions.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Throwing errors from code implementations ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
When writing code, both from JavaScript and Python, you can use <code>Wikifunctions.Error()</code> to end the execution with a wanted error.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
<code>Wikifunctions.Error()</code> has two parameters:
</div>
# <span lang="en" dir="ltr" class="mw-content-ltr">Error type: a string containing the ZID of the error type you want to return.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Error arguments: a list of string arguments to build the error.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
Let's go one by one:
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Error type ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
An error type is an object that describes a kind of error that could happen in the system. There are a number of built-in error types but you can also build other error types that are more suited to your use case. When using errors, the best idea is to browse through the available error types, which can be explored in [[Special:ListObjectsByType/Z50|this list]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If there are no errors that fit your case, create a new one by going to the create page, and selecting "Error type" in the type selector. Then, set the necessary fields:
</div>
[[File:Error type.png|thumb|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Error type creation in Wikifunctions</span>|<span lang="en" dir="ltr" class="mw-content-ltr">To create new Error type (Z50), edit the label and add the necessary keys.</span>]]
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Label''' – This is the main title of the error, which should contain a short but descriptive message. Set the error label on the right-side box titled "About".</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Keys''' – Keys contain additional information about what caused the error. For example, if an input had the wrong format, you might want to inform the user of what was the input content when raising the error. To use them in your implementations, keys should be strings. To create a key, click on the "[+]" icon below "keys", select "String" under "value type", and add a label that describes it appropriately, for example "current input". Once you have all the necessary keys, you can Publish your error type and keep the ID of the newly created object.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Error arguments ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Error arguments correspond to the keys of the Error type, and they should provide additional information to understand the error. Error arguments should always be Strings.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Using Wikifunctions.Error() ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Say that you want an error to be thrown when either your first or your second input are empty. You have already created the error type, and the assigned ZID was <code>Z30005</code>. Your error type has two string keys:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">Input key: contains the key of the failing input</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Input value: contains the current value of the failing input</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
To raise an error in your JavaScript implementation you should do something like this:
</div>
<syntaxhighlight lang="javascript">
function Z30000( Z30000K1, Z30000K2 ) {
if ( trim( Z30000K1 ) === '' ) {
// If the first input is empty, raise error Z30005
// with two string args: [ first input key, first input value ]
Wikifunctions.Error( 'Z30005', [ "Z30000K1", Z30000K1 ] )
}
if ( trim( Z30000K2 ) === '' ) {
// If the second input is empty, raise error Z30005
// with two string args: [ second input key, second input value ]
Wikifunctions.Error( 'Z30005', [ "Z30000K2", Z30000K2 ] )
}
return Z30000K1 + " " + Z30000K2;
}
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
To raise an error in your Python implementation you should do something like this:
</div>
<syntaxhighlight lang="python3">
def Z30000(Z30000K1, Z30000K2):
if Z30000K1.strip() == "":
# If the first input is empty, raise error Z30005
# with two string args: [ first input key, first input value ]
Wikifunctions.Error("Z30005", ["Z30000K1", Z30000K1])
if Z30000K2.strip() == "":
# If the second input is empty, raise error Z30005
# with two string args: [ first input key, first input value ]
Wikifunctions.Error("Z30005", ["Z30000K2", Z30000K2])
return Z30000K1 + " " + Z30000K2
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
Remember that calling <code>Wikifunctions.Error()</code> ends the execution!
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Throwing errors from compositions ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If you are creating a composition implementation, you can throw an error by calling the special function {{Z|Z851}}.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Throw Error function (Z851) ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The {{Z|Z851}} function is similar to the <code>Wikifunctions.Error()</code> method and takes two arguments:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Error type''' – A reference to the Error type you want to raise</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Error parameters''' – A list with the arguments to create your Error, which should also be Strings.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Using Throw Error ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Say you want to modify your composition so that it first checks that the arguments are not empty, and raises an error when it finds an empty one. Then, if none of them are empty, it runs the original composition, which is:
</div>
<syntaxhighlight lang="prolog">
join_with_separator( Z30000K1, Z30000K2, " " )
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
To do this, you need to create conditional paths, for which you can use the {{Z|Z802}} function. Think of it like this:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">If the first argument is empty, throw an error for the first argument</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Else, proceed to check the second argument</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">If the second argument is empty, throw an error for the second argument</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Else, proceed with the success path and return the joint strings with the space separator</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
Or in functional pseudo code:
</div>
<syntaxhighlight lang="prolog">
if (
is_empty_string( Z30000K1 ),
throw_error( Z30005, [ "Z30000K1", Z30000K1 ] ),
if(
is_empty_string( Z30000K2 ),
throw_error( Z30005, [ "Z30000K2", Z30000K2 ] ),
join_with_separator( Z30000K1, Z30000K2, " " )
)
)
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
Let's create this step by step:
</div>
# <span lang="en" dir="ltr" class="mw-content-ltr">Start adding an implementation by clicking on the "+” button in the "Implementations" table from your Function page.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Make sure that the option "composition" under "Implementation" is selected.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Click on the "›” icon or click the "Select Function" link to expand the function details.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Under "function" search and select the outermost function you want to use, which in this case is "if".</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Check the validity of the first argument:</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "condition", click on the "…" button and select "function call"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function", search and select the function "is empty string"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "input", click on the "…" button and select "argument reference"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "key id", select the first input (e.g. "first string")</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">You can now collapse the "condition" function call if you want, by clicking on the down-chevron next to "condition". You should see something like "f(x) is empty string( → first string )"</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Throw error if the condition is true:</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "then", click on the "…" button and select "function call"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function", search and select the function "Throw Error"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "error type", search and select your error type (you can directly input the error ID if you know it, e.g. Z30005)</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "error parameters", add two items by clicking on the "+" button</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">For "Item 1" (offending argument key), set its type to "String" and write the argument identifier (e.g. "first input", or "Z30000K1")</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">For "Item 2" (offending argument value), click on the "…" next to "Item 2" and select "argument reference"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "key id", select the first input (e.g. "first string")</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">You can now collapse the "then" function call if you want, by clicking on the down-chevron next to "then". You should see something like "f(x) Throw Error( Input was the wrong format, Typed list( Object, "first input", → first string ) )"</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Continue to check the second argument if the first was good:</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "else", click on the "…" button and select "function call"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function", search and select the function "if"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Set up "condition" to check the validity of the second argument by following the same process as described in step 5.</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Set up "then" to throw an error for the second argument by following the same process as described in step 6.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Finally, set up the success path:</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to the nested "else", click on the "…" button and select "function call"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function", search and select the successful function, which in this case can be "join strings with separator"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "first string", click on the "…" button and set it to "argument reference", then select "first string"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "second string", click on the "…" button and set it to "argument reference", then select "second string"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "separator" add a space into the text field</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
The resulting function call should look like this:
</div>
[[File:Throw error expanded.png|frame|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Wikifunctions composition using Throw Error function</span>|<span lang="en" dir="ltr" class="mw-content-ltr">Wikifunctions composition using Throw Error function</span>]]
[[File:Throw error collapsed.png|frame|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Wikifunctions composition using Throw Error function, in its collapsed view</span>|<span lang="en" dir="ltr" class="mw-content-ltr">Wikifunctions composition using Throw Error function, in its collapsed view</span>]]
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Handling errors in compositions ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
While it is useful to allow functions to raise expected errors, it is crucial to be able to handle errors in your compositions in order to safely use these functions.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Say you want to create a new function "full name of a person" – we will refer to it with the ZID <code>Z30010</code>. This function should return the full name of a person given a first and last names, but if any of the two fields are empty, it should return the text "Unknown" instead.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
You could create a composition using our example function "Join two strings with a space" or <code>Z30000</code> to generate the name. If any of the inputs are empty, you know that <code>Z30000</code> will throw an error of type <code>Z30005</code>. Using the function {{Z|Z850}} as a wrapper, you can attempt the join operation and intercept a possible error to simply return "Unknown" whenever it occurs.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Try-Catch function (Z850) ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The {{Z|Z850}} function is built-in with ZID <code>Z850</code> and takes three arguments:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Function call''' – The initial function call to run. If nothing goes wrong, the response will be the result of this function call.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Error type''' – An error type to catch in case it is thrown during the execution of the first function call.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Error handler''' – A function call that will be run in case the error specified above is caught during the execution of the initial function call. If that happens, the result of the error handler will be the value returned.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Using Try-Catch ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Once we have all the functions for our composition, we can craft it like this:
</div>
<syntaxhighlight lang="prolog">
try_catch(
join_with_space( Z30010K1, Z30010K2 ),
Z30005,
echo( "Unknown" )
)
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
This means that:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">The "Join two strings with a space" function will be tried with the two inputs and, if everything goes well, the output of this function will be returned</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">If any of the inputs are blank, "Join two strings with a space" with raise an error of type <code>Z30005</code></span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Our {{Z|Z850}} will then detect this error and run the {{Z|Z801}} function to return "Unknown"</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
Let's create this step by step:
</div>
# <span lang="en" dir="ltr" class="mw-content-ltr">Start adding an implementation by clicking on the "+" button in the "Implementations" table from your Function page.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Make sure that the option "composition" under "Implementation" is selected.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Click on the "›” icon or click the "Select Function" link to expand the function details.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Under "function" search and select the outermost function you want to use, which in this case is "Try-Catch".</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Set the main function call:</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under the field where the "Try-Catch" function is selected, next to the "function call" key, click on the "…" button and select "function call"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function" search and select the function "join two strings with space"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "first string", click on the "…" button and select "argument reference", then select the "first name" argument from the dropdown.</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "second string", click on the "…" button and select "argument reference", then select the "second name" argument from the dropdown.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Select the error to catch:</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "error type", search and select "bad string input" – you can search directly by its ZID <code>Z30005</code></span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Set the error handler function call:</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "error handler", click on the "…" button and select "function call"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function", search and select the function "echo"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "input" and "type", search and select the type "String"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Now, under "input", type "Unknown" in the text field</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
The resulting function should look like this:
</div>
[[File:Try catch expanded.png|frame|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Wikifunctions composition using Try-catch function, in expanded mode</span>|<span lang="en" dir="ltr" class="mw-content-ltr">Wikifunctions composition using Try-catch function, in expanded mode</span>]]
[[File:Try catch collapsed.png|frame|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Wikifunctions composition using Try-catch function, in collapsed mode</span>|<span lang="en" dir="ltr" class="mw-content-ltr">Wikifunctions composition using Try-catch function, in collapsed mode</span>]]
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Testing your failure use cases ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
As we introduced in the above section about [[#Practice Test-Driven Development|practicing TDD]], it's important to test not only the most common paths, but also the possible edge cases. It is equally important to test failure behavior. In this section we will give you the tools necessary to test that your function fails with a given set of inputs, and that the error thrown is the expected one.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
To do that, you will need other two system functions:
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Is error type (Z852) ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The {{Z|Z852}} function is built-in with ZID <code>Z852</code> and takes two arguments:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Error''' – An {{Z|Z5}} object, which can be thrown by a failing call. An error instance has a type and a value.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Error type''' – A reference to an {{Z|Z50}} which will be compared to the type of the Error passed as a first argument. If that's the case, the function will return true.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Get error thrown by function call (Z853) ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The {{Z|Z853}} function is built-in with ZID <code>Z853</code> and takes one argument:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Function call''' – A function call which can either return a successful value of any type, or throw an error.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
This function returns a {{Z|Z882}} with a {{Z|Z40}} in first place and an {{Z|Z1}} in the second:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">If the Function call runs successfully and hence does not throw any error, the returned pair will contain False in the first place, and void in the second.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">If the Function call throws an error, the returned pair will contain True in the first place, and the caught error in the second.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
To use this function in your compositions, you might need to use the additional functions:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z821}}, and</span>
* {{Z|Z822}}
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Testing errors ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Say our target function, "Join two strings with a space" or <code>Z30000</code>, throws an error of type <code>Z30005</code> and we want to test this behavior. To do that we need to:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">Throw a failing function call</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Get the error using the function {{Z|Z853}}</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Check that the error is the right type with {{Z|Z852}}</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
Tests have two fields:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Call''' – A function call that will produce an output with the inputs you want to test. This call will return a value.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Result validation''' – A function call that will validate that the value returned by the call above is the expected one. The first argument of this function call will be automatically assigned to take the return value of the first call.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
For step-by-step instructions on how to create tests, see {{ll|Wikifunctions:Introduction#Create_tests}}.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
In our example, we can structure it like this — but this is not the only way!
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The call, which will return an {{Z|Z5}} object:
</div>
<syntaxhighlight lang="prolog">
error = get_second_element_of_typed_list(
get_error_thrown_by(
join_strings_by_whitespace( "", "not empty" )
)
)
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
And the result validation, which will take the {{Z|Z5}} object as its first argument:
</div>
<syntaxhighlight lang="prolog">
is_error_type( error, Z30005 )
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
Let's do this step by step:
</div>
# <span lang="en" dir="ltr" class="mw-content-ltr">Start adding a test by clicking on the "+" button in the "Tests" table from your Function page. The "call" and "result validation" fields already have some functions pre-set, but to test the errors we will need to change them.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">First, let's set the call:</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "call", click the "›" chevron button to expand the function call.</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function", edit the field and search and select the function "Get second element of a typed pair"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Once selected, next to "Typed pair", click on the "…" button and select "function call"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function", search and select the function "Get error thrown by function call"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "function call", click on the "…" button and select "function call"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function", search and select the function "Join two strings with a space" (or by ZID <code>Z30000</code>)</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Now set the inputs so that they cause a failure: at least one of them should be empty.</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">You can now collapse your "call" by clicking again on the down-chevron button if you want!</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Next, let's set the result validation:</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "result validation", click the "›" chevron button to expand the function call.</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function", edit the field and search and select the function "Is error type"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Now you will only be asked to configure the second argument. Under "error type", search and select your <code>Z30005</code> error type.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">And you are done! You can now click the circular arrow in the "Implementations" box and you should see green checks.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
If everything went right, you can now save your test. It should look like this:
</div>
[[File:Get error expanded.png|frame|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Testing a failure using Get error and Is error type functions, in expanded mode</span>|<span lang="en" dir="ltr" class="mw-content-ltr">Testing a failure using Get error and Is error type functions, in expanded mode</span>]]
[[File:Get error collapsed.png|frame|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Testing a failure using Get error and Is error type functions, in collapsed mode</span>|<span lang="en" dir="ltr" class="mw-content-ltr">Testing a failure using Get error and Is error type functions, in collapsed mode</span>]]
<div lang="en" dir="ltr" class="mw-content-ltr">
== Debugging your implementations ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Sometimes things can go wrong. A function might behave differently than expected or a value might not look quite right. Sometimes implementations are really complex and, because they are run in a sandboxed environment, it can seem really difficult to debug. To help understand what's going on inside a function call, Wikifunctions includes a small set of debugging tools.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
These tools don't change the result of a function, but will add extra information to the returned metadata, which you can observe after running the function. You can use <code>Wikifunctions.Debug()</code> from your code implementations or the function {{Z|Z854}} from your compositions.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
In this section you will learn:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">How to add debug messages from both code and composition implementations,</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">how to inspect the metadata manually or via the UI to inspect these logs.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Debugging your code implementations ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
When writing code, both from JavaScript and Python3, you can use <code>Wikifunctions.Debug()</code> to add a message to your debugging log and continue the execution.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
<code>Wikifunctions.Debug()</code> has one parameter, which is generally expected to be a string. However, any other object passed as parameter will get directly converted into a string.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If we want to add debug logs to our code implementations for our "Join two strings with a space" example function, we can do, in JavaScript:
</div>
<syntaxhighlight lang="JavaScript">
function Z30000( Z30000K1, Z30000K2 ) {
if ( trim( Z30000K1 ) === '' ) {
Wikifunctions.Debug( `first input is empty "${ Z30000K1 }"` );
Wikifunctions.Error( 'Z30005', [ "Z30000K1", Z30000K1 ] )
}
if ( trim( Z30000K2 ) === '' ) {
Wikifunctions.Debug( `second input is empty "${ Z30000K2 }"` );
Wikifunctions.Error( 'Z30005', [ "Z30000K2", Z30000K2 ] )
}
Wikifunctions.Debug( "both inputs are fine" );
return Z30000K1 + " " + Z30000K2;
}
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
And the same in your Python3 implementation will be:
</div>
<syntaxhighlight lang="python3">
def Z30000(Z30000K1, Z30000K2):
if Z30000K1.strip() == "":
Wikifunctions.Debug( 'first input is empty "'+Z30000K1+'"' )
Wikifunctions.Error("Z30005", ["Z30000K1", Z30000K1])
if Z30000K2.strip() == "":
Wikifunctions.Debug( 'second input is empty "'+Z30000K2+'"' )
Wikifunctions.Error("Z30005", ["Z30000K2", Z30000K2])
Wikifunctions.Debug( 'both inputs are fine' )
return Z30000K1 + " " + Z30000K2
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
This way, no matter what happens, we will be adding one message to your debugging logs:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">If the function call fails when checking on the first or second input, the result of the execution will be a failure, but it will contain one informative log about what branch caused the failure.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">If the function call succeeds—because both inputs are valid—the function call will return the joined string, but the returned metadata will also contain a debug log.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Debugging your compositions ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
To support debugging compositions, Wikifunctions provides the built-in function {{Z|Z854}}. This function allows you to attach debug messages to the execution of any function call that generates the final output. The debug logs collected during the evaluation are returned as part of the execution metadata, under the <code>executorDebugLogs</code> key.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Add debug log to function call (Z854) ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The {{Z|Z854}} function is built-in with ZID <code>Z854</code> and takes two arguments:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Function call''' – Any composition you want to execute.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Debug log''' – A string message that will be recorded if the given function call is evaluated.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
When the wrapped function call runs, the provided message is added to the execution logs. If that function call is not executed, or its execution is not part of the final output, its debug log will not appear in the final result metadata.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
You will benefit from this built-in if you want to observe:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">Which branch of a conditional was executed, or</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">the order of evaluation in a composition.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Using Add debug log to function call ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Say that you want to add debug logs to our example function "Join two strings with a space" or <code>Z30000</code>, so that different messages are added to the different possible outcomes. You could use our debugging builtin like this:
</div>
<syntaxhighlight lang="prolog">
if (
is_empty_string( Z30000K1 ),
add_debug_log( throw_error( Z30005, ... ), 'failed on first input' )
if(
is_empty_string( Z30000K2 ),
add_debug_log( throw_error( Z30005, ... ), 'failed on second input' ),
add_debug_log(
join_with_separator( Z30000K1, Z30000K2, " " ),
'both inputs are ok!'
)
)
)
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
This way,
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">when called with an empty first input, the function will return a failed response, and the metadata will contain an <code>executorDebugLogs</code> entry with the "failed on first input" log.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">When called with an empty second input, the call will also fail, but the logged message will be "failed on second input"</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">When called with valid inputs, the function will return a successful response, and additionally the metadata will contain "both inputs are ok" in its <code>executorDebugLogs</code> key.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
This is the way this composition would look:
</div>
[[File:Add debug log expanded.png|frame|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Composition implementation using Add debug logs to log all possible execution paths</span>|<span lang="en" dir="ltr" class="mw-content-ltr">Composition implementation using Add debug logs to log all possible execution paths</span>]]
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Accessing execution debug logs ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Whether your execution logs are added via <code>Wikifunctions.Debug()</code> or via the {{Z|Z854}} built-in function, they are returned as part of the response metadata. To see the logs, once you run your function, click on the "Details" button that appears at the bottom of the "Result" section.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The error and debug information will appear at the top of the "Details" dialog.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
This is what you would see when running the composition from our previous example with valid and invalid inputs:
</div>
{| class="wikitable"
| [[File:Execution logs success.png|frameless|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Function metadata dialog for a successful execution with debug logs</span>]]
| [[File:Execution logs failure.png|frameless|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Function metadata dialog for a failed execution with debug logs</span>]]
|-
| <span lang="en" dir="ltr" class="mw-content-ltr">Function metadata dialog for a successful execution: shows no errors, but displays the successful execution log: ''"both inputs are ok!"''</span>
| <span lang="en" dir="ltr" class="mw-content-ltr">Function metadata dialog for a failed execution: shows the error information, and the additional execution log for the first failure branch: ''"failed on first input"''</span>
|}
[[Category:How to create implementations| {{#translation:}}]]
b9fpkcx8n42dkta89o39txw9cewkilj
Help:Using Wikifunctions/en
12
53670
297020
240810
2026-08-06T18:05:54Z
FuzzyBot
207
Updating to match new version of source page
297020
wikitext
text/x-wiki
<languages/>
{{about|error messages which can appear when an (embedded) function call fails
|instructions on how to use {{SITENAME}}|Special:MyLanguage/Help:Contents
}}
This is a help page to understand what an error means. Do '''not''' change the English titles of the sections, as they are hardcoded as links for errors.
== Unknown object ==
The function ID or an input reference used in your function call is not a valid ID or it doesn't exist in Wikifunctions.
To fix the function call, edit the page with the visual editor, click on the failing call, and follow the interactive instructions to choose and configure a valid function call.
== Invalid object ==
The function that your function call is trying to use is currently invalid or corrupted.
If the problem persists, visit the function page and post the details of your issue in the talk page.
== Not a function ==
The ID used in your function call does not point to a Function, but to an object of some other type.
To fix it, edit the page with the visual editor, click on the failing call, and use the configuration dialog to choose a valid function and set up its input fields.
== Input type not supported ==
The function in your function call uses one or more input types that are not currently supported, as they cannot be interpreted from strings.
You can search for other supported functions by editing the page with the visual editor and inserting a new function. The initial search dialog will allow you to look through all supported functions.
If you believe this input type should be supported, please inquire about it in the [[Wikifunctions:Project chat|Wikifunctions Project chat]].
== Output type not supported ==
The function in your function call returns an output value that is not currently supported, as it cannot be converted to a string.
You can search for other supported functions by editing the page with the visual editor and inserting a new function. The initial search dialog will allow you to look through all supported functions.
If you believe this output type should be supported, please inquire about it in the [[Wikifunctions:Project chat|Wikifunctions Project chat]].
== Invalid language properties ==
The function call is using invalid language codes for its parser or renderer language properties.
To fix the issue, edit the page using the source editor and search for the conflicting function call. The language properties will appear as <code>parselang</code> and <code>renderlang</code>, and you must make sure that they are valid BCP 47 language tags. For example:
<syntaxhighlight lang="wikitext">
{{#function:Z10000|foo|bar|renderlang=en|parselang=en}}
</syntaxhighlight>
== Wrong number of inputs ==
Your function call wikitext has a different number of input parameters than those expected (either fewer or more).
To fix the issue, edit the page using the visual editor, click on the failing function call, and make sure that all the input fields are set. If the problem still persists, it's likely that your function call has more unnamed inputs than expected, so you should fix it directly with the source editor.
Once you have located your conflicting function, make sure that there are as many inputs separated by <code>|</code> as the function accepts, excluding named parameters such as <code>renderlang</code> or <code>parselang</code>. For example, the following function call has two unnamed inputs, which fits the expectations of the function:
<syntaxhighlight lang="wikitext">
{{#function:Z10000|unnamed input 1|unnamed input 2|namedInput=1|foo=bar|parselang=en}}
</syntaxhighlight>
== Wrong input type ==
The function call wikitext contains a referenced value as an input, but this reference does not correspond to the right type of item.
To fix this, edit the page using the visual editor, click on the failing function call, and use the configuration dialog to select a valid value for the failing input.
== Unexpected output ==
The value returned from running the function call does not correspond to the value type expected for this function. This can be due to some issues in the function implementation.
You can check if the function works as expected in the function page, by testing it with your desired inputs or inquire about it in its talk page.
== Failed evaluation ==
The function orchestration service failed to evaluate your function call successfully. This can be due to internal orchestrator errors, or due to some issues in the function implementations (e.g. the function has no connected implementations.)
You can check if the function works as expected in the function page, by testing it with your desired inputs or inquire about it in its talk page.
== Wikifunctions is disabled ==
Wikifunctions features are currently disabled. This can be due to ongoing deployments or technical maintenance and will be resolved in time.
If the error persists, visit the [[Wikifunctions:Project chat|Wikifunctions Project chat]] and post a message.
== Other system failures ==
The system encountered an unexpected failure before sending the request for evaluation. If the issue persists, please file a bug in Phabricator.
[[Category:Help{{#translation:}}]]
jcwnoqug93nssaq5rybu696c269nkd1
Help:Using Wikifunctions/de
12
53700
297022
240960
2026-08-06T18:05:55Z
FuzzyBot
207
Updating to match new version of source page
297022
wikitext
text/x-wiki
<languages/>
{{about|error messages which can appear when an (embedded) function call fails
|instructions on how to use {{SITENAME}}|Special:MyLanguage/Help:Contents
}}
Dies ist eine Hilfeseite zum Verständnis der Bedeutung eines Fehlers. Ändere die englischen Abschnittstitel '''nicht''', da diese fest als Links für Fehler codiert sind.
<span id="Unknown_object"></span>
== Unbekanntes Objekt ==
Die Funktions-ID oder eine in deinem Funktionsaufruf verwendete Eingabereferenz ist keine gültige ID oder existiert nicht auf Wikifunctions.
Um den Funktionsaufruf zu reparieren, bearbeite die Seite mit dem Visual Editor, klicke auf den fehlgeschlagenen Aufruf und folge den interaktiven Anweisungen, um einen gültigen Funktionsaufruf auszuwählen und zu konfigurieren.
<span id="Invalid_object"></span>
== Ungültiges Objekt ==
Die Funktion, die dein Funktionsaufruf zu verwenden versucht, ist derzeit ungültig oder beschädigt.
Wenn das Problem weiterhin besteht, besuche die Funktionsseite und veröffentliche die Details deines Problems auf der Diskussionsseite.
<span id="Not_a_function"></span>
== Keine Funktion ==
Die in deinem Funktionsaufruf verwendete ID verweist nicht auf eine Funktion, sondern auf ein Objekt eines anderen Typs.
Um das Problem zu beheben, bearbeite die Seite mit dem Visual Editor, klicke auf den fehlgeschlagenen Aufruf und verwende das Konfigurationsdialogfeld, um eine gültige Funktion auszuwählen und ihre Eingabefelder einzurichten.
<span id="Input_type_not_supported"></span>
== Eingabetyp nicht unterstützt ==
Die Funktion in deinem Funktionsaufruf verwendet einen oder mehrere Eingabetypen, die derzeit nicht unterstützt werden, da sie nicht aus Zeichenketten interpretiert werden können.
Du kannst nach anderen unterstützten Funktionen suchen, indem du die Seite mit dem Visual Editor bearbeitest und eine neue Funktion einfügst. Im Suchdialog kannst du alle unterstützten Funktionen durchsuchen.
Wenn du meinst, dass dieser Eingabetyp unterstützt werden sollte, frage bitte in der [[Wikifunctions:Project chat|Wikifunctions-Projektdiskussion]] danach.
<span id="Output_type_not_supported"></span>
== Ausgabetyp nicht unterstützt ==
Die Funktion in deinem Funktionsaufruf gibt einen Ausgabewert zurück, der derzeit nicht unterstützt wird, da er nicht in eine Zeichenkette konvertiert werden kann.
Du kannst nach anderen unterstützten Funktionen suchen, indem du die Seite mit dem Visual Editor bearbeitest und eine neue Funktion einfügst. Im Suchdialog kannst du alle unterstützten Funktionen durchsuchen.
Wenn du meinst, dass dieser Ausgabetyp unterstützt werden sollte, frage bitte in der [[Wikifunctions:Project chat|Wikifunctions-Projektdiskussion]] danach.
<span id="Invalid_language_properties"></span>
== Ungültige Spracheigenschaften ==
Der Funktionsaufruf verwendet ungültige Sprachcodes für seine Parser- oder Renderer-Spracheigenschaften.
Um das Problem zu beheben, bearbeite die Seite mit dem Quelltext-Editor und suche nach dem konfliktverursachenden Funktionsaufruf. Die Spracheigenschaften werden als <code>parselang</code> und <code>renderlang</code> angezeigt. Stelle sicher, dass es sich um gültige BCP-47-Sprachtags handelt. Zum Beispiel:
<syntaxhighlight lang="wikitext">
{{#function:Z10000|foo|bar|renderlang=en|parselang=en}}
</syntaxhighlight>
<span id="Wrong_number_of_inputs"></span>
== Falsche Anzahl von Eingaben ==
Dein Wikitext für den Funktionsaufruf hat eine andere Anzahl von Eingabeparametern als erwartet (entweder weniger oder mehr).
Um das Problem zu beheben, bearbeite die Seite mit dem Visual Editor, klicke auf den fehlerhaften Funktionsaufruf und stelle sicher, dass alle Eingabefelder ausgefüllt sind. Sollte das Problem weiterhin bestehen, enthält dein Funktionsaufruf wahrscheinlich mehr unbenannte Eingaben als erwartet. Behebe das Problem daher direkt mit dem Quelltext-Editor.
Sobald du die konfliktbehaftete Funktion gefunden hast, stelle sicher, dass so viele durch <code>|</code> getrennte Eingaben vorhanden sind, wie die Funktion akzeptiert, mit Ausnahme benannter Parameter wie <code>renderlang</code> oder <code>parselang</code>. Beispielsweise hat der folgende Funktionsaufruf zwei unbenannte Eingaben, was den Erwartungen der Funktion entspricht:
<syntaxhighlight lang="wikitext">
{{#function:Z10000|unnamed input 1|unnamed input 2|namedInput=1|foo=bar|parselang=en}}
</syntaxhighlight>
<span id="Wrong_input_type"></span>
== Falscher Eingabetyp ==
Der Wikitext für den Funktionsaufruf enthält einen referenzierten Wert als Eingabe, aber diese Referenz entspricht nicht dem richtigen Elementtyp.
Um dies zu beheben, bearbeite die Seite mit dem Visual Editor, klicke auf den fehlgeschlagenen Funktionsaufruf und wähle im Konfigurationsdialog einen gültigen Wert für die fehlgeschlagene Eingabe aus.
<span id="Unexpected_output"></span>
== Unerwartete Ausgabe ==
Der vom Funktionsaufruf zurückgegebene Wert entspricht nicht dem für diese Funktion erwarteten Werttyp. Dies kann auf Probleme bei der Implementierung der Funktion zurückzuführen sein.
Du kannst auf der Funktionsseite überprüfen, ob die Funktion wie erwartet funktioniert, indem du sie mit den gewünschten Eingaben testest oder dich auf der Diskussionsseite erkundigst.
<span id="Failed_evaluation"></span>
== Fehlgeschlagene Auswertung ==
Der Funktionsorchestrierungsdienst konnte deinen Funktionsaufruf nicht erfolgreich auswerten. Dies kann auf interne Orchestriererfehler oder Probleme in den Funktionsimplementierungen zurückzuführen sein (z. B. wenn die Funktion keine verbundenen Implementierungen hat).
Du kannst auf der Funktionsseite überprüfen, ob die Funktion wie erwartet funktioniert, indem du sie mit den gewünschten Eingaben testest oder dich auf der Diskussionsseite erkundigst.
<span id="Wikifunctions_is_disabled"></span>
== Wikifunctions ist deaktiviert ==
Wikifunctions-Funktionen sind derzeit deaktiviert. Dies kann auf laufende Technikeinführungen oder technische Wartungsarbeiten zurückzuführen sein und wird zügig behoben.
Wenn der Fehler weiterhin besteht, besuche die [[Wikifunctions:Project chat|Wikifunctions-Projektdiskussion]] und veröffentliche einen Beitrag.
<span id="Other_system_failures"></span>
== Andere Systemfehler ==
Vor dem Senden der Anfrage zur Auswertung ist ein unerwarteter Fehler aufgetreten. Sollte das Problem weiterhin bestehen, erstelle bitte eine Fehlermeldung im Phabricator.
[[Category:Help{{#translation:}}]]
9dz0yvk3jxsyl8sq0zeexdoxd0xun3a
Help:Using Wikifunctions/fr
12
54210
297023
240814
2026-08-06T18:05:56Z
FuzzyBot
207
Updating to match new version of source page
297023
wikitext
text/x-wiki
<languages/>
{{about|error messages which can appear when an (embedded) function call fails
|instructions on how to use {{SITENAME}}|Special:MyLanguage/Help:Contents
}}
Cette page d'aide vous permet de comprendre la signification des erreurs (mais '''ne modifiez pas''' les titres anglais des sections car ils servent aux liens codés en dur pour les erreurs).
<span id="Unknown_object"></span>
== Objet inconnu ==
L'Id de la fonction ou une référence dans les entrées utilisées dans l'appel de la fonction ne sont pas des Id valides ou n'existent pas dans Wikifunctions.
Pour corriger l'appel de la fonction, modifiez la page avec l'éditeur visuel, cliquez sur l'appel en erreur et suivez les instructions interactives pour choisir et configurer un appel valide à la fonction.
<span id="Invalid_object"></span>
== Objet non valide ==
La fonction que votre appel de fonction essaie d'utiliser est corrompue ou pas valide actuellement.
Si le problème persiste, allez sur la page de discussion de la fonction et décrivez les détails de votre problème.
<span id="Not_a_function"></span>
== N'est pas une fonction ==
L'Id utilisé dans votre appel de fonction ne correspond pas à une fonction, mais à un objet d'un autre type.
Pour corriger cela, éditez la page avec l'éditeur visuel, cliquez sur l'appel en erreur et utilisez le dialogue de configuration pour choisir une fonction valide et configurer ses champs d'entrée.
<span id="Input_type_not_supported"></span>
== Type d'entrée non pris en charge ==
La fonction dans votre appel de fonction utilise un ou plusieurs types d'entrée qui ne sont pas actuellement pris en charge, car ils ne peuvent pas être interprétés à partir des chaînes.
Vous pouvez rechercher d'autres fonctions prises en charge en modifiant la page avec l'éditeur visuel et en insérant une nouvelle fonction. La boîte de dialogue de recherche initiale vous permettra de voir toutes les fonctions prises en charge.
Si vous êtes convaincu que ce type d'entrée doit être pris en charge, veuillez en discuter dans le [[Wikifunctions:Project chat|salon du Projet Wikifunctions]].
<span id="Output_type_not_supported"></span>
== Type de sortie non pris en charge ==
La fonction dans votre appel de fonction renvoie une valeur de sortie qui n'est pas actuellement prise en charge, car elle ne peut pas être convertie en chaîne.
Vous pouvez rechercher d'autres fonctions prises en charge en modifiant la page avec l'éditeur visuel et en insérant une nouvelle fonction. La boîte de dialogue de recherche initiale vous permet de voir toutes les fonctions prises en charge.
Si vous êtes convaincu que ce type d'entrée doit être pris en charge, veuillez en discuter dans le [[Wikifunctions:Project chat|salon du Projet Wikifunctions]].
<span id="Invalid_language_properties"></span>
== Propriétés non valides de langue ==
L'appel de la fonction utilise des codes de langue invalides pour l'analyseur syntaxique ou les propriétés de langue du générateur de rendu.
Pour résoudre le problème, modifiez la page en utilisant l'éditeur de source et recherchez l'appel de fonction qui pose problème. Les propriétés de langue apparaîtront comme <code>parselang</code> et <code>renderlang</code>, et vous devez vous assurer que ce sont des balises de langue BCP 47 valides. Par exemple :
<syntaxhighlight lang="wikitext">
{{#function:Z10000|foo|bar|renderlang=en|parselang=en}}
</syntaxhighlight>
<span id="Wrong_number_of_inputs"></span>
== Mauvais nombre d'entrées ==
Le wikicode de votre appel de fonction a un nombre différent de paramètres d'entrée que ce qui est attendu (pas assez, ou trop).
Pour résoudre le problème, modifiez la page en utilisant l'éditeur visuel, cliquez sur l'appel de fonction qui pose problème et assurez-vous que tous les champs d'entrée ont une valeur. Si le problème persiste, il est probable que votre appel de fonction se fait avec plus d'entrées non nommées que prévu, vous devez donc pouvoir résoudre cela directement avec l'éditeur de source.
Une fois que vous avez identifié la fonction qui pose problème, assurez-vous qu'il y a autant d'entrées séparées par <code>|</code> qu'acceptées par la fonction, à l'exclusion des paramètres nommés tels que <code>renderlang</code> ou <code>parselang</code>. Par exemple, l'appel de la fonction suivante est fait avec deux entrées non nommées, ce qui correspond à ce que la fonction attend :
<syntaxhighlight lang="wikitext">
{{#function:Z10000|unnamed input 1|unnamed input 2|namedInput=1|foo=bar|parselang=en}}
</syntaxhighlight>
<span id="Wrong_input_type"></span>
== Mauvais type d'entrée ==
Le wikicode de l'appel à la fonction contient une valeur référencée en entrée, mais cette référence ne correspond pas au type d'élément attendu.
Pour corriger cela, modifiez la page en utilisant l'éditeur visuel, cliquez sur l'appel de la fonction qui pose problème et utilisez le dialogue de configuration pour sélectionner une valeur valide pour l'entrée en cause.
<span id="Unexpected_output"></span>
== Sortie non attendue ==
La valeur renvoyée à l'exécution de l'appel de fonction ne correspond pas au type de valeur attendu pour cette fonction. Cela peut être dû à des problèmes d'implémentation de la fonction.
Vous pouvez vérifier que la fonction s'exécute comme attendu sur sa page d'article en la testant avec des entrées que vous choisissez, ou en demandant de l'aide sur sa page de discussion.
<span id="Failed_evaluation"></span>
== Echec de l'évaluation ==
Le service d'orchestration des fonctions n'a pas pu évaluer votre appel de fonction avec succès. Cela peut être dû à des erreurs internes de l'orchestrateur ou à certains problèmes dans les implémentations de fonction (par exemple, la fonction n'a pas d'implémentation connectée).
Vous pouvez vérifier que la fonction s'exécute comme attendu sur sa page d'article en la testant avec des entrées que vous choisissez, ou en demandant de l'aide sur sa page de discussion.
<span id="Wikifunctions_is_disabled"></span>
== Wikifunctions est désactivé ==
Les fonctionnalités de Wikifunctions sont actuellement désactivées. Cela peut être dû à des déploiements en cours ou à une maintenance technique et sera résolu en temps voulu.
Si l'erreur persiste, veuillez laisser un message dans le [[Wikifunctions:Project chat|salon du Projet Wikifunctions]].
<span id="Other_system_failures"></span>
== Autres échecs système ==
Le système a rencontré un problème inattendu avant d'envoyer la demande d'évaluation. Si le problème persiste, veuillez créer un ticket pour ce bogue dans Phabricator.
[[Category:Help{{#translation:}}]]
intcds04i33i77xhk6ozcwru3gscbqc
Wikifunctions:Status updates/ko
4
54639
296992
295119
2026-08-06T18:03:39Z
FuzzyBot
207
Updating to match new version of source page
296992
wikitext
text/x-wiki
<languages/>
{{shortcut|WF:SU}}{{notice|1=<span lang="en" dir="ltr" class="mw-content-ltr">'''[[:m:Global message delivery/Targets/Wikifunctions & Abstract Wikipedia|Subscribe]]''' to receive short on-wiki MassMessage notifications about each new issue</span>}}
{{Wikifunctions updates
| prevlabel = 이전 업데이트
| prev = 2024-02-01
| nextlabel = 마지막 업데이트
| next = 2026-08-05
}}
위키함수와 추상 위키백과에서 많은 일이 일어나고 있습니다. 이곳은 [[Special:MyLanguage/WF:function of the Week|이번 주의 함수]]를 포함한 최신 소식을 게시하는 문서입니다.
<div lang="en" dir="ltr" class="mw-content-ltr">
You can also subscribe to the [[:m:Global message delivery/Targets/Wikifunctions & Abstract Wikipedia|on-wiki newsletter]] to have them delivered to your talk page or to your project's village pump.
</div>
<inputbox>
type=fulltext
prefix={{NAMESPACE}}:{{PAGENAME}}/
break=no
width=30
searchbuttonlabel={{int:Search}}
placeholder=모든 상태 업데이트 검색
</inputbox>
<span id="Newsletters"></span>
== 뉴스레터 ==
<!--<nowiki> Newsletter entry template:
* <translate><tvar name="1">{{Status updates|2026-0?-??}}</tvar>: Title</translate>
NOTE: Remember to also update the "next =" date at the top of this page.
</nowiki>-->
=== 2026 ===
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-08-05}}: An apple is a fruit</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-07-29}}: Abstract Wikipedia at Wikimania</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-07-16}}: Beyond syntactic tables</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-07-08}}: Moving toward our first Abstract Wikipedia integration milestone</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-07-01}}: Integration on test wiki and annual plan</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-06-26}}: Working on Functions, together</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-06-19}}: The or not the, this is (the?) question</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-06-12}}: Improved loading and display of Test results</span>
* {{Status updates|2026-06-05}}: 그림으로 보는 백과사전
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-05-30}}: Looking back and forward</span>
* {{Status updates|2026-05-23}}: 2026-2027년 연간 계획
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-05-15}}: A higher meaning</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-05-08}}: References from Wikidata are now available</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-05-02}}: Request for input: what should we count for Abstract Wikipedia?</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-04-25}}: The Foundation's search for the perfect language</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-04-16}}: Milestones; Some major issues hopefully resolved</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-04-10}}: Community proposals for capturing meaning</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-04-02}}: Request for Discussion: Syntactic tables</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-03-26}}: First few days of Abstract Wikipedia Beta; Status of Composition Language v2</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-03-19}}: Abstract Wikipedia in Beta</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-03-11}}: A new composition language</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-03-06}}: Citations and Copy and Paste</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-02-26}}: Graceful overrides and fallbacks</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-02-20}}: A sneak preview of Abstract Wikipedia</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-02-13}}: Finishing each other sentences: Starting things; Offsite in Istanbul</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-01-29}}: Integrating Abstract Wikipedia</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-01-22}}: Quarterly plan for January–March 2026</span>
* {{Status updates|2026-01-15}}: 위키백과 25주년
=== 2025 ===
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-12-18}}: We wish you a happy new Gregorian year!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-12-11}}: How to write better error messages</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-12-04}}: And the name is Abstract Wikipedia</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-11-27}}: Vote on the new wiki name!; Finishing each other’s sentences</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-11-20}}: Second round of voting for naming the wiki with language-independent content; Sharing function calls</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-11-13}}: Getting ready for second round of voting for naming the wiki with abstract content; Rewriting the backend: Why Rust?</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-11-05}}: First round of voting for naming the wiki for abstract content closed; Calling for Wiktionary functions; Embedded Wikifunctions on Bengali Wikipedia and seven more Wiktionaries</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-10-29}}: Round 1 of “abstract content wiki” naming vote ending Monday; An example of short descriptions</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-10-23}}: Welcome Zaree and Laura! Naming contest round 1 kicked off</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-10-15}}: Kicking Off the Naming Contest for Abstract Wikipedia; Visualizing functions</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-10-08}}: Decision on location for abstract content and Quarterly Planning for October–December</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-10-03}}: Rich text now available in embedded function calls on 148 Wiktionaries and Incubator</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-09-26}}: Accessing qualifiers in Wikidata statements</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-09-19}}: Wikifunctions available on 123 Wiktionary languages</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-09-12}}: More than 3,000 functions on Wikifunctions</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-09-07}}: Copying function calls from one Wikipedia to another</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-08-29}}: Accessing Wikidata items now possible from embedded function calls; Wikifunctions available on 65 Wikitionaries</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-08-22}}: Recording of Wikimania session: Wikifunctions is coming soon to a wiki near you!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-08-01}}: Wikimania 2025 is coming soon!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-07-26}}: “Wikipedia is an encyclopedia”; Two years of Wikifunctions</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-07-19}}: Wikidata-based enumerations are here</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-07-10}}: Length limits on labels and descriptions</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-07-04}}: Coverage of 1298</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-06-27}}: How many people are needed to write an encyclopedia?</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-06-21}}: Quarterly Planning for July–September 2025</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-06-15}}: Closing the consultation about the location of Abstract Content</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-06-06}}: Where will Abstract Content go?</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-05-29}}: Rolling out to five Wiktionaries; Calculating with today's date</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-05-23}}: Ongoing consultation about the Location for Abstract Content</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-05-15}}: Location of Abstract Content</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-05-09}}: Abstract Wikipedia and the Wikimedia AI Strategy</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-04-30}}: Abstract Wikipedia is a MacArthur 100&Change finalist</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-04-25}}: Welcome, Gregory!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-04-16}}: Wikifunctions integrated in Dagbani - and Wikifunctions; and the date of Easter</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-04-11}}: Quarter in review</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-04-05}}: Quarterly Planning for April–June 2025; We are looking for a Senior Product Manager</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-03-28}}: It's about time</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-03-20}}: Wikidata-based simple enumerations</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-03-15}}: Upcoming NLG meeting, Recent Changes in the software</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-03-07}}: Recent Changes in the software, Recording of Volunteer’s Corner, and talks in London</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-02-26}}: From things to words</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-02-19}}: A proposal for types per language and part of speech</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-02-13}}: Restricting the World, redux</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-02-06}}: Invitation to the Natural Language Generation Special Interest Group</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-01-29}}: With 2000 Functions into the new year: time for stats</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-01-22}}: Welcome, David! Naming conventions recommendations</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-01-15}}: Happy Wikipedia day! Quarterly planning</span>
=== 2024 ===
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-12-19}}: Function of the Week: age; Intros for year articles; New Type: Floating-point number</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-12-12}}: Sketching a path to Abstract Wikipedia; Team offsite in Lisbon; and much more</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-11-27}}: WordGraph release; New Special page: list functions by tests; new type for day of the year, and much more</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-11-21}}: New special page for missing labels, new type for Gregorian years, and much more</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-11-13}}: New Type: Rational number; Documentation on Wikidata-based types; and more</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-11-07}}: The Dream of a Universal Language</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-11-01}}: Rewriting the backend</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-10-25}}: Our goal for this Quarter: Agreement</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-10-17}}: What could abstract content look like?</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-10-11}}: Wikidata Lexemes in Wikifunctions are coming soon</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-10-02}}: Focus topic: Food</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-09-26}}: Quarterly planning for October–December 2024; Presentation at Celtic Knot tomorrow</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-09-20}}: Introducing focus topic areas</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-09-13}}: Dagbani Wikipedia will be our first wiki for Wikifunctions integration</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-09-06}}: Volunteer's corner and other updates</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-08-29}}: Limits on Name and Description Lengths</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-08-23}}: WasmEdge, Now 300ms Less Edgy</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-08-16}}: Wikimania 2024 edition</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-08-02}}: Revamping our 'About' widget</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-07-26}}: Wikimania 2024 coming soon!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-07-18}}: Research report on integrating Wikifunctions from Wikipedia</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-07-10}}: Type proposals for accessing Lexemes</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-07-03}}: Quarterly planning</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-06-26}}: Welcome, Daphne!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-06-20}}: New Type: Integers</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-06-13}}: New Type: Igbo calendar months</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-06-06}}: New Type: Sign</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-05-30}}: A single singular or a plurality of plurals?</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-05-22}}: New Type: Gregorian calendar months</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-05-15}}: Call for Functions: Spell out the number!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-05-10}}: Flagship type for enumerations: Months of the Gregorian calendar</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-05-03}}: Team meeting and Quarterly plan</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-04-19}}: Welcome, Sharvani!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-04-11}}: New API for calling Wikifunctions and celebrating 1000 functions</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-04-03}}: Product Update on Diff and Upcoming API Improvements</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-03-28}}: Creating tests is now much easier!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-03-21}}: On the way to internationalizing numbers</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-03-13}}: On identity</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-03-07}}: Introducing our second new type: Natural numbers</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-02-28}}: Type proposal for natural numbers</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-02-22}}: Updating the function model</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-02-14}}: Fix-it week</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-02-07}}: Quarterly planning. Thank you, Nick! Function of the Week: is permutation</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-02-01}}: The Igbo Imperative!</span>
<span id="Before_February_2024"></span>
=== 2024년 2월 이전 ===
이 기간의 모든 업데이트는 [[:m:Special:MyLanguage/Abstract Wikipedia/Updates|메타위키에서 열람 가능]]합니다.
[[Category:Status updates{{#translation:}}| ]]
9xrycbvd15yzs2gbm6807rplb27of3w
Template:Documentation subpage/ko
10
55186
297011
190671
2026-08-06T18:04:32Z
FuzzyBot
207
Updating to match new version of source page
297011
wikitext
text/x-wiki
<noinclude><languages/></noinclude><includeonly>{{#if:{{IsDocSubpage|override={{{override|doc}}}}}
| <!--doc subpage--></includeonly>{{#ifeq:{{{doc-notice|show}}}|show
| {{Ombox|type=notice|image=[[File:OOjs UI icon articles-ltr.svg|35px|link=|class=skin-invert-image]]
|text='''이 문서는 해당 틀에 대한 [[mw:Special:MyLanguage/Help:Subpages|하위]] [[Special:MyLanguage/Help:Template documentation|문서]]입니다: {{#if:{{{1|}}}
| {{{1}}}
| [[:{{SUBJECTSPACE}}:{{BASEPAGENAME}}]]
}}'''<br/> 원래의 틀 문서에 포함되지 않은 사용법, [[Special:MyLanguage/Help:Categorization|분류]], 기타 내용이 포함되어 있습니다.
}}
<!--If not on a doc subpage, do nothing-->}}{{DEFAULTSORT:{{{defaultsort|{{PAGENAME}}}}}}}{{#if: {{{inhibit|}}}
| <!--Skip-->
| <includeonly>{{#ifexist: {{NAMESPACE}}:{{BASEPAGENAME}}
| [[Category:{{#switch: {{SUBJECTSPACE}}
|Template=Template
|Module=Module
|User=User
|#default=Template
}} documentation pages{{#translation:}}]]
| [[Category:Documentation subpages without corresponding pages{{#translation:}}]]
}}</includeonly>
}}<includeonly>
}}</includeonly><noinclude>{{Documentation}}[[Category:Template documentation]]<!--Add categories and interwikis to the /doc subpage, not here!--></noinclude>
4hjofy9jut0jer62ggei3ozjt3pngt3
Help:Using Wikifunctions/ko
12
55376
297025
240701
2026-08-06T18:05:56Z
FuzzyBot
207
Updating to match new version of source page
297025
wikitext
text/x-wiki
<languages/>
{{about|error messages which can appear when an (embedded) function call fails
|instructions on how to use {{SITENAME}}|Special:MyLanguage/Help:Contents
}}
<div class="mw-translate-fuzzy">
오류의 의미를 이해하기 위한 도움말 문서입니다. 섹션 제목은 오류 링크로 하드코딩되므로 변경'''하지 마세요'''.
</div>
<span id="Unknown_object"></span>
== 알 수 없는 객체 ==
함수 호출에 사용된 함수 ID 또는 입력 참조는 유효한 ID가 아니며, 위키함수에는 존재하지 않습니다.
함수 호출을 수정하려면 시각적 편집기로 문서를 편집하고, 오류가 발생한 호출을 클릭한 다음 대화형 지침에 따라 올바른 함수 호출을 선택 및 구성하세요.
<span id="Invalid_object"></span>
== 잘못된 객체 ==
함수 호출에 사용하려는 함수가 현재 유효하지 않거나 손상되었습니다.
문제가 지속되면 함수 문서를 방문하여 문제의 세부 정보를 토론 문서에 게시하세요.
<span id="Not_a_function"></span>
== 함수가 아님 ==
함수 호출에 사용된 ID는 함수를 가리키는 것이 아니라 다른 유형의 객체를 가리킵니다.
수정하려면 시각적 편집기로 문서를 편집하고, 오류가 발생한 호출을 클릭한 다음 구성 대화 상자를 사용하여 유효한 함수를 선택하고, 입력 필드를 설정하세요.
<span id="Input_type_not_supported"></span>
== 지원되지 않는 입력 유형 ==
함수 호출의 함수는 문자열에서 해석할 수 없기 때문에 현재 지원되지 않는 하나 이상의 입력 유형을 사용합니다.
시각적 편집기로 문서를 편집하고, 새 함수를 삽입하여 지원되는 다른 함수를 검색할 수 있습니다. 초기 검색 대화 상자를 통해 지원되는 모든 함수를 살펴볼 수 있습니다.
이 입력 유형이 지원되어야 한다고 생각한다면, [[Wikifunctions:Project chat|위키함수 프로젝트 채팅]]에서 문의해 주세요.
<span id="Output_type_not_supported"></span>
== 지원되지 않는 출력 유형 ==
함수 호출의 함수는 문자열로 변환할 수 없기 때문에 현재 지원되지 않는 출력 값을 반환합니다.
시각적 편집기로 문서를 편집하고, 새 함수를 삽입하여 지원되는 다른 함수를 검색할 수 있습니다. 초기 검색 대화 상자를 통해 지원되는 모든 함수를 살펴볼 수 있습니다.
이 출력 유형이 지원되어야 한다고 생각하신다면, [[Wikifunctions:Project chat|위키함수 프로젝트 채팅]]에서 문의해 주세요.
<span id="Invalid_language_properties"></span>
== 잘못된 언어 속성 ==
<div lang="en" dir="ltr" class="mw-content-ltr">
The function call is using invalid language codes for its parser or renderer language properties.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
To fix the issue, edit the page using the source editor and search for the conflicting function call. The language properties will appear as <code>parselang</code> and <code>renderlang</code>, and you must make sure that they are valid BCP 47 language tags. For example:
</div>
<syntaxhighlight lang="wikitext">
{{#function:Z10000|foo|bar|renderlang=en|parselang=en}}
</syntaxhighlight>
<span id="Wrong_number_of_inputs"></span>
== 잘못된 입력 수 ==
함수 호출 위키 문법의 입력 매개변수 수가 예상과 다릅니다 (적거나 많음).
<div lang="en" dir="ltr" class="mw-content-ltr">
To fix the issue, edit the page using the visual editor, click on the failing function call, and make sure that all the input fields are set. If the problem still persists, it's likely that your function call has more unnamed inputs than expected, so you should fix it directly with the source editor.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Once you have located your conflicting function, make sure that there are as many inputs separated by <code>|</code> as the function accepts, excluding named parameters such as <code>renderlang</code> or <code>parselang</code>. For example, the following function call has two unnamed inputs, which fits the expectations of the function:
</div>
<syntaxhighlight lang="wikitext">
{{#function:Z10000|unnamed input 1|unnamed input 2|namedInput=1|foo=bar|parselang=en}}
</syntaxhighlight>
<span id="Wrong_input_type"></span>
== 잘못된 입력 유형 ==
함수 호출 위키 문법에는 참조 값이 입력으로 포함되어 있지만, 이 참조 값은 올바른 유형의 항목에 해당하지 않습니다.
<div lang="en" dir="ltr" class="mw-content-ltr">
To fix this, edit the page using the visual editor, click on the failing function call, and use the configuration dialog to select a valid value for the failing input.
</div>
<span id="Unexpected_output"></span>
== 예상치 못한 출력 ==
함수 호출을 실행한 후 반환된 값이 이 함수에 대해 예상되는 값 유형과 일치하지 않습니다. 이는 함수 구현에 몇 가지 문제가 있을 수 있습니다.
<div lang="en" dir="ltr" class="mw-content-ltr">
You can check if the function works as expected in the function page, by testing it with your desired inputs or inquire about it in its talk page.
</div>
<span id="Failed_evaluation"></span>
== 평가 실패 ==
<div lang="en" dir="ltr" class="mw-content-ltr">
The function orchestration service failed to evaluate your function call successfully. This can be due to internal orchestrator errors, or due to some issues in the function implementations (e.g. the function has no connected implementations.)
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
You can check if the function works as expected in the function page, by testing it with your desired inputs or inquire about it in its talk page.
</div>
<span id="Wikifunctions_is_disabled"></span>
== 비활성된 위키함수 ==
<div lang="en" dir="ltr" class="mw-content-ltr">
Wikifunctions features are currently disabled. This can be due to ongoing deployments or technical maintenance and will be resolved in time.
</div>
오류가 계속되면 [[Wikifunctions:Project chat|위키함수 프로젝트 채팅]]에 문의해 주세요.
<span id="Other_system_failures"></span>
== 기타 시스템 장애 ==
평가 요청을 보내기 전에 시스템에 예기치 않은 오류가 발생했습니다. 문제가 지속되면, 파브리케이터에 버그를 제출해 주세요.
[[Category:Help{{#translation:}}]]
4mbg6ae1kemx8j2pi807aruv299zc6z
Wikifunctions:Status updates/es
4
55532
296985
295113
2026-08-06T18:03:34Z
FuzzyBot
207
Updating to match new version of source page
296985
wikitext
text/x-wiki
<languages/>
{{shortcut|WF:SU}}{{notice|1='''[[:m:Global message delivery/Targets/Wikifunctions & Abstract Wikipedia|Subscribete]]''' para recibir "on-wiki" MassMessage notificaciones sobre cada nueva entrega}}
{{Wikifunctions updates
| prevlabel = Actualización previa
| prev = 2024-02-01
| nextlabel = Última actualización
| next = 2026-08-05
}}
Mucho ha sucedido alrededor de Wikifunctions y Wikipedia Abstracta. Esta es la página donde nuestras actualizaciones son publicacdas, incluyendo la [[Special:MyLanguage/WF:function of the Week|función de la semana]].
<div lang="en" dir="ltr" class="mw-content-ltr">
You can also subscribe to the [[:m:Global message delivery/Targets/Wikifunctions & Abstract Wikipedia|on-wiki newsletter]] to have them delivered to your talk page or to your project's village pump.
</div>
<inputbox>
type=fulltext
prefix={{NAMESPACE}}:{{PAGENAME}}/
break=no
width=30
searchbuttonlabel={{int:Search}}
placeholder=Search all status updates
</inputbox>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Newsletters ==
</div>
<!--<nowiki> Newsletter entry template:
* <translate><tvar name="1">{{Status updates|2026-0?-??}}</tvar>: Title</translate>
NOTE: Remember to also update the "next =" date at the top of this page.
</nowiki>-->
=== 2026 ===
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-08-05}}: An apple is a fruit</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-07-29}}: Abstract Wikipedia at Wikimania</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-07-16}}: Beyond syntactic tables</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-07-08}}: Moving toward our first Abstract Wikipedia integration milestone</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-07-01}}: Integration on test wiki and annual plan</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-06-26}}: Working on Functions, together</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-06-19}}: The or not the, this is (the?) question</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-06-12}}: Improved loading and display of Test results</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-06-05}}: The illustrated encyclopaedia</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-05-30}}: Looking back and forward</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-05-23}}: Annual plan 2026-2027</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-05-15}}: A higher meaning</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-05-08}}: References from Wikidata are now available</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-05-02}}: Request for input: what should we count for Abstract Wikipedia?</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-04-25}}: The Foundation's search for the perfect language</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-04-16}}: Milestones; Some major issues hopefully resolved</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-04-10}}: Community proposals for capturing meaning</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-04-02}}: Request for Discussion: Syntactic tables</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-03-26}}: First few days of Abstract Wikipedia Beta; Status of Composition Language v2</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-03-19}}: Abstract Wikipedia in Beta</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-03-11}}: A new composition language</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-03-06}}: Citations and Copy and Paste</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-02-26}}: Graceful overrides and fallbacks</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-02-20}}: A sneak preview of Abstract Wikipedia</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-02-13}}: Finishing each other sentences: Starting things; Offsite in Istanbul</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-01-29}}: Integrating Abstract Wikipedia</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-01-22}}: Quarterly plan for January–March 2026</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-01-15}}: 25 years of Wikipedia</span>
=== 2025 ===
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-12-18}}: We wish you a happy new Gregorian year!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-12-11}}: How to write better error messages</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-12-04}}: And the name is Abstract Wikipedia</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-11-27}}: Vote on the new wiki name!; Finishing each other’s sentences</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-11-20}}: Second round of voting for naming the wiki with language-independent content; Sharing function calls</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-11-13}}: Getting ready for second round of voting for naming the wiki with abstract content; Rewriting the backend: Why Rust?</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-11-05}}: First round of voting for naming the wiki for abstract content closed; Calling for Wiktionary functions; Embedded Wikifunctions on Bengali Wikipedia and seven more Wiktionaries</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-10-29}}: Round 1 of “abstract content wiki” naming vote ending Monday; An example of short descriptions</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-10-23}}: Welcome Zaree and Laura! Naming contest round 1 kicked off</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-10-15}}: Kicking Off the Naming Contest for Abstract Wikipedia; Visualizing functions</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-10-08}}: Decision on location for abstract content and Quarterly Planning for October–December</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-10-03}}: Rich text now available in embedded function calls on 148 Wiktionaries and Incubator</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-09-26}}: Accessing qualifiers in Wikidata statements</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-09-19}}: Wikifunctions available on 123 Wiktionary languages</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-09-12}}: More than 3,000 functions on Wikifunctions</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-09-07}}: Copying function calls from one Wikipedia to another</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-08-29}}: Accessing Wikidata items now possible from embedded function calls; Wikifunctions available on 65 Wikitionaries</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-08-22}}: Recording of Wikimania session: Wikifunctions is coming soon to a wiki near you!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-08-01}}: Wikimania 2025 is coming soon!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-07-26}}: “Wikipedia is an encyclopedia”; Two years of Wikifunctions</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-07-19}}: Wikidata-based enumerations are here</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-07-10}}: Length limits on labels and descriptions</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-07-04}}: Coverage of 1298</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-06-27}}: How many people are needed to write an encyclopedia?</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-06-21}}: Quarterly Planning for July–September 2025</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-06-15}}: Closing the consultation about the location of Abstract Content</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-06-06}}: Where will Abstract Content go?</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-05-29}}: Rolling out to five Wiktionaries; Calculating with today's date</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-05-23}}: Ongoing consultation about the Location for Abstract Content</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-05-15}}: Location of Abstract Content</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-05-09}}: Abstract Wikipedia and the Wikimedia AI Strategy</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-04-30}}: Abstract Wikipedia is a MacArthur 100&Change finalist</span>
* {{Status updates|2025-04-25}}: ¡Bienvenido, Gregory!
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-04-16}}: Wikifunctions integrated in Dagbani - and Wikifunctions; and the date of Easter</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-04-11}}: Quarter in review</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-04-05}}: Quarterly Planning for April–June 2025; We are looking for a Senior Product Manager</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-03-28}}: It's about time</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-03-20}}: Wikidata-based simple enumerations</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-03-15}}: Upcoming NLG meeting, Recent Changes in the software</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-03-07}}: Recent Changes in the software, Recording of Volunteer’s Corner, and talks in London</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-02-26}}: From things to words</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-02-19}}: A proposal for types per language and part of speech</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-02-13}}: Restricting the World, redux</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-02-06}}: Invitation to the Natural Language Generation Special Interest Group</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-01-29}}: With 2000 Functions into the new year: time for stats</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-01-22}}: Welcome, David! Naming conventions recommendations</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-01-15}}: Happy Wikipedia day! Quarterly planning</span>
=== 2024 ===
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-12-19}}: Function of the Week: age; Intros for year articles; New Type: Floating-point number</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-12-12}}: Sketching a path to Abstract Wikipedia; Team offsite in Lisbon; and much more</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-11-27}}: WordGraph release; New Special page: list functions by tests; new type for day of the year, and much more</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-11-21}}: New special page for missing labels, new type for Gregorian years, and much more</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-11-13}}: New Type: Rational number; Documentation on Wikidata-based types; and more</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-11-07}}: The Dream of a Universal Language</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-11-01}}: Rewriting the backend</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-10-25}}: Our goal for this Quarter: Agreement</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-10-17}}: What could abstract content look like?</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-10-11}}: Wikidata Lexemes in Wikifunctions are coming soon</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-10-02}}: Focus topic: Food</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-09-26}}: Quarterly planning for October–December 2024; Presentation at Celtic Knot tomorrow</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-09-20}}: Introducing focus topic areas</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-09-13}}: Dagbani Wikipedia will be our first wiki for Wikifunctions integration</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-09-06}}: Volunteer's corner and other updates</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-08-29}}: Limits on Name and Description Lengths</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-08-23}}: WasmEdge, Now 300ms Less Edgy</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-08-16}}: Wikimania 2024 edition</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-08-02}}: Revamping our 'About' widget</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-07-26}}: Wikimania 2024 coming soon!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-07-18}}: Research report on integrating Wikifunctions from Wikipedia</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-07-10}}: Type proposals for accessing Lexemes</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-07-03}}: Quarterly planning</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-06-26}}: Welcome, Daphne!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-06-20}}: New Type: Integers</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-06-13}}: New Type: Igbo calendar months</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-06-06}}: New Type: Sign</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-05-30}}: A single singular or a plurality of plurals?</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-05-22}}: New Type: Gregorian calendar months</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-05-15}}: Call for Functions: Spell out the number!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-05-10}}: Flagship type for enumerations: Months of the Gregorian calendar</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-05-03}}: Team meeting and Quarterly plan</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-04-19}}: Welcome, Sharvani!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-04-11}}: New API for calling Wikifunctions and celebrating 1000 functions</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-04-03}}: Product Update on Diff and Upcoming API Improvements</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-03-28}}: Creating tests is now much easier!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-03-21}}: On the way to internationalizing numbers</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-03-13}}: On identity</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-03-07}}: Introducing our second new type: Natural numbers</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-02-28}}: Type proposal for natural numbers</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-02-22}}: Updating the function model</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-02-14}}: Fix-it week</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-02-07}}: Quarterly planning. Thank you, Nick! Function of the Week: is permutation</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-02-01}}: The Igbo Imperative!</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Before February 2024 ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
All updates from this period are [[:m:Special:MyLanguage/Abstract Wikipedia/Updates|available on Meta-Wiki]].
</div>
[[Category:Status updates{{#translation:}}| ]]
mm5u5q5iee22ypayee0j2ljibalp3gb
Wikifunctions:Cardinal numbers/ko
4
55649
296879
261560
2026-08-06T17:59:46Z
FuzzyBot
207
Updating to match new version of source page
296879
wikitext
text/x-wiki
<languages/>
{{Move|Wikifunctions:Catalogue/Natural language operations/Cardinal numbers|reason=This page is a list of functions, but is outside the catalogue}}
<div lang="en" dir="ltr" class="mw-content-ltr">
We are looking to have functions to create the names of numbers in many different languages. The [[Special:MyLanguage/Wikifunctions:Status updates/2024-05-15|newsletter from 15 May 2024]] made a Call for Functions!
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
On this page, we collect and list the existing functions and related objects in order to coordinate the work.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The functions take as input a [[Z13518|natural number]] and return a [[Z6|string]]. There can be more than one function per language.
</div>
<span id="Languages_covered"></span>
== 다루는 언어 ==
<div class="mw-translate-fuzzy">
현재까지 22개 언어가 존재합니다.
</div>
{| class="wikitable sortable"
|+ [[Special:ListObjectsByType/Z60|언어]]의 함수
|-
! 언어 !! 함수 !! 테스트됨 !! 구현됨 !! 계획
|-
| {{z|Z1002}} || {{z|Z13587}} || ✅ || ✅ || [[WF:human languages/Z1002#natural number|WF:HL]]
|-
| {{z|Z1004}} || {{z|Z16093}} || ✅ || ✅ || [[WF:human languages/Z1004#natural number|WF:HL]]
|-
| {{z|Z1011}} || {{z|Z16150}} || ✅ || ✅ || [[WF:human languages/Z1011#natural number|WF:HL]]
|-
| {{z|Z1014}} || {{z|Z16053}} || ✅ || ✅ || [[WF:human languages/Z1014#natural number|WF:HL]]
|-
| {{z|Z1025}} || {{z|Z15965}} || ✅ || ✅ || [[WF:human languages/Z1025#natural number|WF:HL]]
|-
| {{z|Z1045}} || {{z|Z16172}} || ✅ || ✅ || [[WF:human languages/Z1045#natural number|WF:HL]]
|-
| {{z|Z1062}} || {{z|Z32780}} || ✅ || ⛓️💥 || [[WF:human languages/Z1062#natural number|WF:HL]]
|-
| {{z|Z1146}} || {{z|Z16163}} || ✅ || ✅ || [[WF:human languages/Z1146#natural number|WF:HL]]
|-
| {{z|Z1272}} || {{z|Z16085}} || ✅ || ✅ || [[WF:human languages/Z1272#natural number|WF:HL]]
|-
| {{z|Z1332}} || {{z|Z15953}} || ✅ || ✅ || [[WF:human languages/Z1332#natural number|WF:HL]]
|-
| {{z|Z1430}} || {{z|Z15963}} || ✅ || ✅ || [[WF:human languages/Z1430#natural number|WF:HL]]
|-
| {{z|Z1531}} || {{z|Z15567}} || ✅ || ✅ || [[WF:human languages/Z1531#natural number|WF:HL]]
|-
| {{z|Z1534}} || {{z|Z16185}} || ✅ || ✅ || [[WF:human languages/Z1534#natural number|WF:HL]]
|-
| {{z|Z1592}} || {{z|Z16008}}<br>{{z|Z37749}} || ✅ || ✅ || [[WF:human languages/Z1592#natural number|WF:HL]]
|-
| {{z|Z1624}} || {{z|Z16184}} || ✅ || ✅ || [[WF:human languages/Z1624#natural number|WF:HL]]
|-
| {{z|Z1882}} || {{z|Z16313}} || ✅ || ❌ || [[WF:human languages/Z1882#natural number|WF:HL]]
|-
| {{z|Z1381}} || {{z|Z16398}} || ❌ || ❌ || [[WF:human languages/Z1381#natural number|WF:HL]]
|-
| {{z|Z1003}} || {{z|Z16431}} || ✅ || ✅ || [[WF:human languages/Z1003#natural number|WF:HL]]
|-
| {{z|Z1472}} || {{z|Z16443}} || ✅ || ✅ || [[WF:human languages/Z1003#natural number|WF:HL]]
|-
| {{z|Z1099}} || {{z|Z16409}} || ✅ || ✅ || [[WF:human languages/Z1099#natural number|WF:HL]]
|-
| {{z|Z1282}} || {{z|Z16608}} || ✅ || ✅ || [[WF:human languages/Z1381#natural number|WF:HL]]
|-
| {{Z|Z1820}} || {{Z|Z19334}} || ✅ || ✅ || [[WF:human languages/Z1820#natural number|WF:HL]]
|-
| {{z|Z1012}} || {{z|Z19484}} || ✅ || ✅ || [[WF:human languages/Z1012#natural number|WF:HL]]
|-
| {{Z|Z1787}} || {{Z|Z23003}} || ✅ || ✅ || [[WF:human languages/Z1787#natural number|WF:HL]]
|-
| {{Z|Z1158}} || {{Z|Z24618}} || ✅ || ✅ || [[WF:human languages/Z1158#natural number|WF:HL]]
|-
| {{Z|Z1078}} || {{Z|Z18546}} || ✅ || ✅ || [[WF:human languages/Z1078#natural number|WF:HL]]
|-
| {{Z|Z1762}} || {{Z|Z22455}} || ✅ || ✅ || [[WF:human languages/Z1762#natural number|WF:HL]]
|}
<span id="See_also"></span>
== 같이 보기 ==
* {{Z|Z16435}}
* {{Z+|Z16437}}
* {{Z|Z14526}}
8y5aangcbxbp65m5ttt7fh66xx4f6b6
Wikifunctions:Cardinal numbers/sr
4
56444
296885
261566
2026-08-06T17:59:48Z
FuzzyBot
207
Updating to match new version of source page
296885
wikitext
text/x-wiki
<languages/>
{{Move|Wikifunctions:Catalogue/Natural language operations/Cardinal numbers|reason=This page is a list of functions, but is outside the catalogue}}
<div lang="en" dir="ltr" class="mw-content-ltr">
We are looking to have functions to create the names of numbers in many different languages. The [[Special:MyLanguage/Wikifunctions:Status updates/2024-05-15|newsletter from 15 May 2024]] made a Call for Functions!
</div>
На овој страници сакупљамо и приказујемо све постојеће функције и повезане објекте како би се боље координисао рад.
Ове функције прихватају један [[Z13518|природан број]] и враћају [[Z6|ниску]] као резултат. Може да постоји више функција по језику.
<span id="Languages_covered"></span>
== Урађени језици ==
<div class="mw-translate-fuzzy">
Двадесет два до сад.
</div>
{| class="wikitable sortable"
|+ функције по [[Special:ListObjectsByType/Z60|језику]]
|-
! Језик !! Функција !! Тестирана !! Имплементирана !! Планирање
|-
| {{z|Z1002}} || {{z|Z13587}} || ✅ || ✅ || [[WF:human languages/Z1002#natural number|WF:HL]]
|-
| {{z|Z1004}} || {{z|Z16093}} || ✅ || ✅ || [[WF:human languages/Z1004#natural number|WF:HL]]
|-
| {{z|Z1011}} || {{z|Z16150}} || ✅ || ✅ || [[WF:human languages/Z1011#natural number|WF:HL]]
|-
| {{z|Z1014}} || {{z|Z16053}} || ✅ || ✅ || [[WF:human languages/Z1014#natural number|WF:HL]]
|-
| {{z|Z1025}} || {{z|Z15965}} || ✅ || ✅ || [[WF:human languages/Z1025#natural number|WF:HL]]
|-
| {{z|Z1045}} || {{z|Z16172}} || ✅ || ✅ || [[WF:human languages/Z1045#natural number|WF:HL]]
|-
| {{z|Z1062}} || {{z|Z32780}} || ✅ || ⛓️💥 || [[WF:human languages/Z1062#natural number|WF:HL]]
|-
| {{z|Z1146}} || {{z|Z16163}} || ✅ || ✅ || [[WF:human languages/Z1146#natural number|WF:HL]]
|-
| {{z|Z1272}} || {{z|Z16085}} || ✅ || ✅ || [[WF:human languages/Z1272#natural number|WF:HL]]
|-
| {{z|Z1332}} || {{z|Z15953}} || ✅ || ✅ || [[WF:human languages/Z1332#natural number|WF:HL]]
|-
| {{z|Z1430}} || {{z|Z15963}} || ✅ || ✅ || [[WF:human languages/Z1430#natural number|WF:HL]]
|-
| {{z|Z1531}} || {{z|Z15567}} || ✅ || ✅ || [[WF:human languages/Z1531#natural number|WF:HL]]
|-
| {{z|Z1534}} || {{z|Z16185}} || ✅ || ✅ || [[WF:human languages/Z1534#natural number|WF:HL]]
|-
| {{z|Z1592}} || {{z|Z16008}}<br>{{z|Z37749}} || ✅ || ✅ || [[WF:human languages/Z1592#natural number|WF:HL]]
|-
| {{z|Z1624}} || {{z|Z16184}} || ✅ || ✅ || [[WF:human languages/Z1624#natural number|WF:HL]]
|-
| {{z|Z1882}} || {{z|Z16313}} || ✅ || ❌ || [[WF:human languages/Z1882#natural number|WF:HL]]
|-
| {{z|Z1381}} || {{z|Z16398}} || ❌ || ❌ || [[WF:human languages/Z1381#natural number|WF:HL]]
|-
| {{z|Z1003}} || {{z|Z16431}} || ✅ || ✅ || [[WF:human languages/Z1003#natural number|WF:HL]]
|-
| {{z|Z1472}} || {{z|Z16443}} || ✅ || ✅ || [[WF:human languages/Z1003#natural number|WF:HL]]
|-
| {{z|Z1099}} || {{z|Z16409}} || ✅ || ✅ || [[WF:human languages/Z1099#natural number|WF:HL]]
|-
| {{z|Z1282}} || {{z|Z16608}} || ✅ || ✅ || [[WF:human languages/Z1381#natural number|WF:HL]]
|-
| {{Z|Z1820}} || {{Z|Z19334}} || ✅ || ✅ || [[WF:human languages/Z1820#natural number|WF:HL]]
|-
| {{z|Z1012}} || {{z|Z19484}} || ✅ || ✅ || [[WF:human languages/Z1012#natural number|WF:HL]]
|-
| {{Z|Z1787}} || {{Z|Z23003}} || ✅ || ✅ || [[WF:human languages/Z1787#natural number|WF:HL]]
|-
| {{Z|Z1158}} || {{Z|Z24618}} || ✅ || ✅ || [[WF:human languages/Z1158#natural number|WF:HL]]
|-
| {{Z|Z1078}} || {{Z|Z18546}} || ✅ || ✅ || [[WF:human languages/Z1078#natural number|WF:HL]]
|-
| {{Z|Z1762}} || {{Z|Z22455}} || ✅ || ✅ || [[WF:human languages/Z1762#natural number|WF:HL]]
|}
<span id="See_also"></span>
== Види још ==
* {{Z|Z16435}}
* {{Z+|Z16437}}
* {{Z|Z14526}}
aj3y1c6e9oycwxcokskffzpb2b0lllu
Template:Documentation subpage/he
10
56561
297008
186803
2026-08-06T18:04:30Z
FuzzyBot
207
Updating to match new version of source page
297008
wikitext
text/x-wiki
<noinclude><languages/></noinclude><includeonly>{{#if:{{IsDocSubpage|override={{{override|doc}}}}}
| <!--doc subpage--></includeonly>{{#ifeq:{{{doc-notice|show}}}|show
| {{Ombox|type=notice|image=[[File:OOjs UI icon articles-ltr.svg|35px|link=|class=skin-invert-image]]
|text='''זהו [[Special:MyLanguage/Help:Template documentation|תיעוד]] [[mw:Special:MyLanguage/Help:Subpages|דף משנה]] עבור {{#if:{{{1|}}}
| {{{1}}}
| [[:{{SUBJECTSPACE}}:{{BASEPAGENAME}}]]
}}.'''<br/> הוא מכיל מידע על שימוש, [[Special:MyLanguage/Help:Categorization|קטגוריות]], ותוכן אחר שאינו חלק מדף התבנית המקורי <!--
--> {{#if: {{{text2|}}}
| {{{text2|}}}
| {{#if: {{{text1|}}}
| {{{text1|}}}
| {{#ifeq: {{SUBJECTSPACE}} | {{ns:User}}
| {{lc:{{SUBJECTSPACE}}}}
| דף {{#if: {{SUBJECTSPACE}}
| {{lc:{{SUBJECTSPACE}}}}
| מאמר
}}
}}
}}
}}.
}}
<!--If not on a doc subpage, do nothing-->}}{{DEFAULTSORT:{{{defaultsort|{{PAGENAME}}}}}}}{{#if: {{{inhibit|}}}
| <!--Skip-->
| <includeonly>{{#ifexist: {{NAMESPACE}}:{{BASEPAGENAME}}
| [[Category:{{#switch: {{SUBJECTSPACE}}
|Template=Template
|Module=Module
|User=User
|#default=Template
}} documentation pages{{#translation:}}]]
| [[Category:Documentation subpages without corresponding pages{{#translation:}}]]
}}</includeonly>
}}<includeonly>
}}</includeonly><noinclude>{{Documentation}}[[Category:Template documentation]]<!--Add categories and interwikis to the /doc subpage, not here!--></noinclude>
9qqoth4jp73vbfzavvwe6ket4okg9y7
Template:Documentation subpage/it
10
56734
297010
187404
2026-08-06T18:04:32Z
FuzzyBot
207
Updating to match new version of source page
297010
wikitext
text/x-wiki
<noinclude><languages/></noinclude><includeonly>{{#if:{{IsDocSubpage|override={{{override|doc}}}}}
| <!--doc subpage--></includeonly>{{#ifeq:{{{doc-notice|show}}}|show
| {{Ombox|type=notice|image=[[File:OOjs UI icon articles-ltr.svg|35px|link=|class=skin-invert-image]]
|text='''Questa è una [[mw:Special:MyLanguage/Help:Subpages|sottopagina]] di [[Special:MyLanguage/Help:Template documentation|documentazione]] per {{#if:{{{1|}}}
| {{{1}}}
| [[:{{SUBJECTSPACE}}:{{BASEPAGENAME}}]]
}}.'''<br/> Contiene informazioni di utilizzo, [[Special:MyLanguage/Help:Categorization|categorie]], e ulteriori contenuti che non appartengono<!--
--> {{#if: {{{text2|}}}
| {{{text2|}}}
| {{#if: {{{text1|}}}
| {{{text1|}}}
| {{#ifeq: {{SUBJECTSPACE}} | {{ns:User}}
| {{lc:{{SUBJECTSPACE}}}} alla pagina di template originale
| {{#if: {{SUBJECTSPACE}}
| {{lc:{{SUBJECTSPACE}}}} alla pagina originale
| all'articolo originale
}}
}}
}}
}}.
}}
<!--If not on a doc subpage, do nothing-->}}{{DEFAULTSORT:{{{defaultsort|{{PAGENAME}}}}}}}{{#if: {{{inhibit|}}}
| <!--Skip-->
| <includeonly>{{#ifexist: {{NAMESPACE}}:{{BASEPAGENAME}}
| [[Category:{{#switch: {{SUBJECTSPACE}}
|Template=Template
|Module=Module
|User=User
|#default=Template
}} documentation pages{{#translation:}}]]
| [[Category:Documentation subpages without corresponding pages{{#translation:}}]]
}}</includeonly>
}}<includeonly>
}}</includeonly><noinclude>{{Documentation}}[[Category:Template documentation]]<!--Add categories and interwikis to the /doc subpage, not here!--></noinclude>
e1kmixba54qyk20ljccolrcegkspdbz
Wikifunctions:Documentation/en
4
56866
296898
187771
2026-08-06T18:00:31Z
FuzzyBot
207
Updating to match new version of source page
296898
wikitext
text/x-wiki
{{move|Help:Z21121}}
{{about|individual Functions|instructions on how to use {{SITENAME}}|Help:Contents}}
<languages/>
==[[Z21121]]==
===Z21121K1===
A string to represent a number. The number can be an integer, a decimal, or an (im)proper fraction. The value represents the quantity in the from unit. A "." acts as a decimal point, all commas are removed for processing.
====Examples====
* -1
* 5.289
* 5/4
===Z21121K2 and Z21121K3===
A string to represent a unit in a proprietary system. Units with exponents (like meters squared) can be represented by adding the exponent to the end of the unit expression. Division of units (like kilometers per hour) can be represented by adding a "/." Only one division is used per unit, everything to the right of the "/" is considered to be in the denominator. Multiplication is done by just putting units together. Z21121K2 represents the unit of Z21121K1, and Z21121K3 represents the unit of the conversion output. Both should be in the same dimension.
====Examples====
* "m2" -> meters squared
* "cm/s" -> centimeters per second
* "cWhm/b" -> centiwatt hour meters per bit
===Z21121K4===
An integer to represent rounding of the output number. 0 rounds to the whole number, positive numbers round to the number of decimal places, negative numbers round further than whole numbers.
====Examples====
* 0 -> nearest one
* 3 -> nearest thousandth
* 4 -> nearest ten thousand
===Z21121K5-K7===
Do not do anything yet, require greater Wikidata support.
===Output===
A string that includes both quantities and their units.
====Examples====
* 0 C (32 F)
* 10 km (10,000 m)
* 1 m<sup>2</sup> (1,000,000 mm<sup>2</sup>)
===Available units===
* m/Meter*
* mi/Mile
* ft/Foot
* yd/Yard
* in/Inch
* NM/Nautical Mile
* au/Astronomical Unit
* ly/Light Year
* Å/Angstrom
* fur/Furlong
* ftm/Fathom
* cb/Cable
* ch/Chain
* rd/Rod
* li/Link
* s/Second*
* min/Minute
* h/Hour
* d/Day
* wk/Week
* mo/Month
* y/Year
* g/Gram*
* lb/Pound
* oz/Ounce
* b/Bit**
* B/Byte**
* Pa/Pascal*
* bar/Bar*
* atm/Standard Atmosphere
* mHg/Meter of Mercury*
* psi/Pound per Square Inch
* J/Joule*
* cal/Thermochemical Calorie
* eV/Electronvolt
* BTU/British Thermal Unit
* Wh/Watt-Hour*
* K/Kelvin***
* C/Celsius***
* F/Fahrenheit***
<nowiki/>*Supports metric prefixes
<br>**Supports metric prefixes, base 10 instead of standard 2
<br>***Handled separately
[[Category:Help{{#translation:}}]]
04qmsgtwyp3exvmj83ue75ff0cid3bk
Wikifunctions:Documentation/de
4
56868
296900
187863
2026-08-06T18:00:31Z
FuzzyBot
207
Updating to match new version of source page
296900
wikitext
text/x-wiki
{{move|Help:Z21121}}
{{about|individual Functions|instructions on how to use {{SITENAME}}|Help:Contents}}
<languages/>
==[[Z21121]]==
===Z21121K1===
Eine Zeichenkette zur Darstellung einer Zahl. Die Zahl kann eine Ganzzahl, eine Dezimalzahl oder ein (un)echter Bruch sein. Der Wert stellt die Menge in der Ausgangseinheit dar. Ein "." dient als Dezimalpunkt, alle Kommas werden bei der Verarbeitung entfernt.
<span id="Examples"></span>
==== Beispiele ====
* -1
* 5.289
* 5/4
<span id="Z21121K2_and_Z21121K3"></span>
=== Z21121K2 und Z21121K3 ===
Eine Zeichenkette zur Darstellung einer Einheit in einem proprietären System. Einheiten mit Exponenten (wie Quadratmeter) können durch Anhängen des Exponenten an das Ende des Einheitenausdrucks dargestellt werden. Die Division von Einheiten (wie Kilometer pro Stunde) kann durch Anhängen eines "/" dargestellt werden. Pro Einheit wird nur eine Division verwendet; alles rechts vom "/" wird als Nenner betrachtet. Die Multiplikation erfolgt durch einfaches Zusammenzählen der Einheiten. Z21121K2 stellt die Einheit von Z21121K1 dar und Z21121K3 stellt die Einheit der Konvertierungsausgabe dar. Beide sollten die gleiche Dimension haben.
<span id="Examples"></span>
==== Beispiele ====
* "m2" -> Quadratmeter
* "cm/s" -> Zentimeter pro Sekunde
* "cWhm/b" -> Zentiwattstundenmeter pro Bit
===Z21121K4===
Eine Ganzzahl zur Darstellung der Rundung der Ausgabezahl. 0 rundet auf die ganze Zahl, positive Zahlen runden auf die Anzahl der Dezimalstellen, negative Zahlen runden weiter als auf ganze Zahlen.
<span id="Examples"></span>
==== Beispiele ====
* 0 -> nächste Null
* 3 -> nächste Tausendstel
* 4 -> nächste Zehntausendstel
===Z21121K5-K7===
Tut noch nichts, benötigt umfangreichere Wikidata-Unterstützung.
<span id="Output"></span>
=== Ausgabe ===
Eine Zeichenkette, die sowohl Mengen als auch deren Einheiten enthält.
<span id="Examples"></span>
==== Beispiele ====
* 0 °C (32 °F)
* 10 km (10.000 m)
* 1 m<sup>2</sup> (1.000.000 mm<sup>2</sup>)
<span id="Available_units"></span>
=== Verfügbare Einheiten ===
* m/Meter*
* mi/Meile
* ft/Fuß
* yd/Yard
* in/Zoll
* NM/Seemeile
* au/Astronomische Einheit
* ly/Lichtjahr
* Å/Ångström
* fur/Furlong
* ftm/Nautischer Faden
* cb/Kabel
* ch/Chain
* rd/Rute
* li/Link
* s/Sekunde*
* min/Minute
* h/Stunde
* d/Tag
* wk/Woche
* mo/Monat
* y/Jahr
* g/Gramm*
* lb/Pfund
* oz/Unze
* b/Bit**
* B/Byte**
* Pa/Pascal*
* bar/Bar*
* atm/Physikalische Atmosphäre
* mHg/Meter Quecksilbersäule*
* psi/Pfund pro Quadratzoll
* J/Joule*
* cal/Kalorie
* eV/Elektronenvolt
* BTU/British thermal unit
* Wh/Wattstunde*
* K/Kelvin***
* C/Celsius***
* F/Fahrenheit***
<nowiki/>*Unterstützt metrische Präfixe
<br>**Unterstützt metrische Präfixe, Basis 10 statt Standard 2
<br>***Separat behandelt
[[Category:Help{{#translation:}}]]
doa39fykr416m4ihhi65c2jbjxppklq
Wikifunctions:Documentation/pt-br
4
56949
296903
193268
2026-08-06T18:00:32Z
FuzzyBot
207
Updating to match new version of source page
296903
wikitext
text/x-wiki
{{move|Help:Z21121}}
{{about|individual Functions|instructions on how to use {{SITENAME}}|Help:Contents}}
<languages/>
==[[Z21121]]==
===Z21121K1===
Uma cadeia de caracteres que representa um número. O número pode ser inteiro, decimal ou fração (im)própria. O valor representa a quantidade na unidade do campo “De”. Um “.” age como ponto decimal, e todas as vírgulas são removidas durante o processamento.
<span id="Examples"></span>
====Exemplos====
* -1
* 5.289
* 5/4
<span id="Z21121K2_and_Z21121K3"></span>
===Z21121K2 e Z21121K3===
Uma cadeia de caracteres que representa uma unidade em um sistema proprietário. Unidades com expoentes (como metros quadrados) podem ser representadas adicionando-se o expoente ao fim da expressão da unidade. Divisão de unidades (como quilômetros por hora) pode ser representada adicionando-se uma “/”. Apenas uma divisão pode ser utilizada por unidade, pois tudo à direita da “/” será considerado como denominador. Multiplicação é feita através da junção de unidades. Z21121K2 representa a unidade para Z21121K1, e Z21121K3 representa a unidade da saída da conversão. Ambas devem ser da mesma dimensão.
<span id="Examples"></span>
====Exemplos====
* “m2” -> metros quadrados
* “cm/s” -> centímetros por segundo
* “cWhm/b” -> centiwatt hora metro por bit
===Z21121K4===
Um inteiro que representa o arredondamento do número da saída. 0 arredonda ao número inteiro, números positivos arredondam ao número de casas decimais e números negativos arredondam às dezenas inteiras.
<span id="Examples"></span>
====Exemplos====
* 0 -> unidade mais próxima
* 3 -> milhar mais próximo
* 4 -> dezena de milhar mais próxima
===Z21121K5-K7===
Não faz nada ainda, requerer maior compatibilidade com o Wikidata.
<span id="Output"></span>
===Saída===
Uma cadeia de caracteres que inclui as quantidades e suas unidades.
<span id="Examples"></span>
====Exemplos====
* 0 C (32 F)
* 10 km (10.000 m)
* 1 m<sup>2</sup> (1.000.000 mm<sup>2</sup>)
<span id="Available_units"></span>
===Unidades disponíveis===
* m/Metro*
* mi/Milha
* ft/Pé
* yd/Jarda
* in/Polegada
* NM/milha náutica
* au/Unidade astronômica
* ly/Ano-luz
* Å/Angstrom
* <span lang="en" dir="ltr" class="mw-content-ltr">fur/Furlong</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">ftm/Fathom</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">cb/Cable</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">ch/Chain</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">rd/Rod</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">li/Link</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">s/Second*</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">min/Minute</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">h/Hour</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">d/Day</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">wk/Week</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">mo/Month</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">y/Year</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">g/Gram*</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">lb/Pound</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">oz/Ounce</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">b/Bit**</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">B/Byte**</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Pa/Pascal*</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">bar/Bar*</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">atm/Standard Atmosphere</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">mHg/Meter of Mercury*</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">psi/Pound per Square Inch</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">J/Joule*</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">cal/Thermochemical Calorie</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">eV/Electronvolt</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">BTU/British Thermal Unit</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Wh/Watt-Hour*</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">K/Kelvin***</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">C/Celsius***</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">F/Fahrenheit***</span>
<nowiki/>*<span lang="en" dir="ltr" class="mw-content-ltr">Supports metric prefixes</span>
<br>**<span lang="en" dir="ltr" class="mw-content-ltr">Supports metric prefixes, base 10 instead of standard 2</span>
<br>***<span lang="en" dir="ltr" class="mw-content-ltr">Handled separately</span>
[[Category:Help{{#translation:}}]]
4an92k16ggla4jbooix2wbwasp0m9e9
Wikifunctions:Documentation/gu
4
56962
296901
188029
2026-08-06T18:00:31Z
FuzzyBot
207
Updating to match new version of source page
296901
wikitext
text/x-wiki
{{move|Help:Z21121}}
{{about|individual Functions|instructions on how to use {{SITENAME}}|Help:Contents}}
<languages/>
==[[Z21121]]==
===Z21121K1===
<div lang="en" dir="ltr" class="mw-content-ltr">
A string to represent a number. The number can be an integer, a decimal, or an (im)proper fraction. The value represents the quantity in the from unit. A "." acts as a decimal point, all commas are removed for processing.
</div>
<span id="Examples"></span>
==== ઉદાહરણો ====
* -1
* 5.289
* 5/4
<div lang="en" dir="ltr" class="mw-content-ltr">
===Z21121K2 and Z21121K3===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
A string to represent a unit in a proprietary system. Units with exponents (like meters squared) can be represented by adding the exponent to the end of the unit expression. Division of units (like kilometers per hour) can be represented by adding a "/." Only one division is used per unit, everything to the right of the "/" is considered to be in the denominator. Multiplication is done by just putting units together. Z21121K2 represents the unit of Z21121K1, and Z21121K3 represents the unit of the conversion output. Both should be in the same dimension.
</div>
<span id="Examples"></span>
==== ઉદાહરણો ====
* "m2" -> ચોરસ મીટર (મીટર વર્ગ)
* <span lang="en" dir="ltr" class="mw-content-ltr">"cm/s" -> centimeters per second</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">"cWhm/b" -> centiwatt hour meters per bit</span>
===Z21121K4===
<div lang="en" dir="ltr" class="mw-content-ltr">
An integer to represent rounding of the output number. 0 rounds to the whole number, positive numbers round to the number of decimal places, negative numbers round further than whole numbers.
</div>
<span id="Examples"></span>
==== ઉદાહરણો ====
* <span lang="en" dir="ltr" class="mw-content-ltr">0 -> nearest one</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">3 -> nearest thousandth</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">4 -> nearest ten thousand</span>
===Z21121K5-K7===
<div lang="en" dir="ltr" class="mw-content-ltr">
Do not do anything yet, require greater Wikidata support.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
===Output===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
A string that includes both quantities and their units.
</div>
<span id="Examples"></span>
==== ઉદાહરણો ====
* <span lang="en" dir="ltr" class="mw-content-ltr">0 C (32 F)</span>
* 10 કિમી (૧૦,૦૦૦ મીટર)
* <span lang="en" dir="ltr" class="mw-content-ltr">1 m<sup>2</sup> (1,000,000 mm<sup>2</sup>)</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
===Available units===
</div>
* m/મીટર*
* mi/માઇલ
* ft/ફૂટ
* <span lang="en" dir="ltr" class="mw-content-ltr">yd/Yard</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">in/Inch</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">NM/Nautical Mile</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">au/Astronomical Unit</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">ly/Light Year</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Å/Angstrom</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">fur/Furlong</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">ftm/Fathom</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">cb/Cable</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">ch/Chain</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">rd/Rod</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">li/Link</span>
* s/સેકન્ડ*
* min/મિનિટ
* h/કલાક
* d/દિવસ
* wk/અઠવાડિયું
* mo/મહિનો
* y/વર્ષ
* g/ગ્રામ*
* lb/પાઉન્ડ
* <span lang="en" dir="ltr" class="mw-content-ltr">oz/Ounce</span>
* b/બીટ**
* B/બાઇટ**
* Pa/પાસ્કલ*
* bar/બાર*
* <span lang="en" dir="ltr" class="mw-content-ltr">atm/Standard Atmosphere</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">mHg/Meter of Mercury*</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">psi/Pound per Square Inch</span>
* J/જુલ*
* <span lang="en" dir="ltr" class="mw-content-ltr">cal/Thermochemical Calorie</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">eV/Electronvolt</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">BTU/British Thermal Unit</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Wh/Watt-Hour*</span>
* K/કેલ્વિન***
* C/સેલ્સિયસ***
* F/ફેરનહીટ***
<nowiki/>*<span lang="en" dir="ltr" class="mw-content-ltr">Supports metric prefixes</span>
<br>**<span lang="en" dir="ltr" class="mw-content-ltr">Supports metric prefixes, base 10 instead of standard 2</span>
<br>***<span lang="en" dir="ltr" class="mw-content-ltr">Handled separately</span>
[[Category:Help{{#translation:}}]]
34dzbb9wjzjogu15dpvvyi0s12tfe1z
Wikifunctions:Design/ko
4
57181
296896
209337
2026-08-06T18:00:05Z
FuzzyBot
207
Updating to match new version of source page
296896
wikitext
text/x-wiki
<languages/>
{{see also
|Special:MyLanguage/WF:Status|l1=WF:Status
|Special:MyLanguage/WF:Feature_petitions|l2=WF:Feature petitions
}}
이 문서는 웹사이트 디자인 개선과 관련된 팀의 활동을 다룬 문서입니다.
<span id="Current_design_improvements"></span>
== 현재 디자인 개선 사항 ==
* [[Wikifunctions:Design/Lexeme Sense Selection UI|<span lang="en" dir="ltr" class="mw-content-ltr">Lexeme Sense Selection UI</span>]]
* [[Special:MyLanguage/Wikifunctions:Design/Naming conventions recommendations|명명 규칙 권장 사항]]
<span id="Implemented_design_improvements"></span>
== 구현된 디자인 개선 사항 ==
* [[Special:MyLanguage/Wikifunctions:Design/About widget improvements|위젯 개선에 관한 사항]]
[[Category:Project concept{{#translation:}}]]
nleibxkrvmureo5hqtovufqaoo6e3u4
Wikifunctions:Status updates/pt-br
4
57415
296996
295121
2026-08-06T18:03:42Z
FuzzyBot
207
Updating to match new version of source page
296996
wikitext
text/x-wiki
<languages/>
{{shortcut|WF:SU}}{{notice|1='''[[:m:Global message delivery/Targets/Wikifunctions & Abstract Wikipedia|Inscreva-se]]''' para receber notificações curtas via MassMessage na sua wiki preferida para cada nova edição}}
{{Wikifunctions updates
| prevlabel = Atualização anterior
| prev = 2024-02-01
| nextlabel = Última atualização
| next = 2026-08-05
}}
Muita coisa está acontecendo em torno da Wikifunctions e da Wikipédia Abstrata. Esta é a página onde nossas atualizações são postadas, incluindo a “[[Special:MyLanguage/WF:function of the Week|Função da Semana]]”.
Também é possível assinar o [[:m:Global message delivery/Targets/Wikifunctions & Abstract Wikipedia|boletim informativo na wiki]] para que toda edição dele seja enviada para a sua página de discussão ou para a esplanada do seu projeto.
<inputbox>
type=fulltext
prefix={{NAMESPACE}}:{{PAGENAME}}/
break=no
width=30
searchbuttonlabel={{int:Search}}
placeholder=Search all status updates
</inputbox>
<span id="Newsletters"></span>
== Boletins informativos ==
<!--<nowiki> Newsletter entry template:
* <translate><tvar name="1">{{Status updates|2026-0?-??}}</tvar>: Title</translate>
NOTE: Remember to also update the "next =" date at the top of this page.
</nowiki>-->
=== 2026 ===
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-08-05}}: An apple is a fruit</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-07-29}}: Abstract Wikipedia at Wikimania</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-07-16}}: Beyond syntactic tables</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-07-08}}: Moving toward our first Abstract Wikipedia integration milestone</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-07-01}}: Integration on test wiki and annual plan</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-06-26}}: Working on Functions, together</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-06-19}}: The or not the, this is (the?) question</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-06-12}}: Improved loading and display of Test results</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-06-05}}: The illustrated encyclopaedia</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-05-30}}: Looking back and forward</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-05-23}}: Annual plan 2026-2027</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-05-15}}: A higher meaning</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-05-08}}: References from Wikidata are now available</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-05-02}}: Request for input: what should we count for Abstract Wikipedia?</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-04-25}}: The Foundation's search for the perfect language</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-04-16}}: Milestones; Some major issues hopefully resolved</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-04-10}}: Community proposals for capturing meaning</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-04-02}}: Request for Discussion: Syntactic tables</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-03-26}}: First few days of Abstract Wikipedia Beta; Status of Composition Language v2</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-03-19}}: Abstract Wikipedia in Beta</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-03-11}}: A new composition language</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-03-06}}: Citations and Copy and Paste</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-02-26}}: Graceful overrides and fallbacks</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-02-20}}: A sneak preview of Abstract Wikipedia</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-02-13}}: Finishing each other sentences: Starting things; Offsite in Istanbul</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-01-29}}: Integrating Abstract Wikipedia</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-01-22}}: Quarterly plan for January–March 2026</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-01-15}}: 25 years of Wikipedia</span>
=== 2025 ===
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-12-18}}: We wish you a happy new Gregorian year!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-12-11}}: How to write better error messages</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-12-04}}: And the name is Abstract Wikipedia</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-11-27}}: Vote on the new wiki name!; Finishing each other’s sentences</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-11-20}}: Second round of voting for naming the wiki with language-independent content; Sharing function calls</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-11-13}}: Getting ready for second round of voting for naming the wiki with abstract content; Rewriting the backend: Why Rust?</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-11-05}}: First round of voting for naming the wiki for abstract content closed; Calling for Wiktionary functions; Embedded Wikifunctions on Bengali Wikipedia and seven more Wiktionaries</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-10-29}}: Round 1 of “abstract content wiki” naming vote ending Monday; An example of short descriptions</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-10-23}}: Welcome Zaree and Laura! Naming contest round 1 kicked off</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-10-15}}: Kicking Off the Naming Contest for Abstract Wikipedia; Visualizing functions</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-10-08}}: Decision on location for abstract content and Quarterly Planning for October–December</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-10-03}}: Rich text now available in embedded function calls on 148 Wiktionaries and Incubator</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-09-26}}: Accessing qualifiers in Wikidata statements</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-09-19}}: Wikifunctions available on 123 Wiktionary languages</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-09-12}}: More than 3,000 functions on Wikifunctions</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-09-07}}: Copying function calls from one Wikipedia to another</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-08-29}}: Accessing Wikidata items now possible from embedded function calls; Wikifunctions available on 65 Wikitionaries</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-08-22}}: Recording of Wikimania session: Wikifunctions is coming soon to a wiki near you!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-08-01}}: Wikimania 2025 is coming soon!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-07-26}}: “Wikipedia is an encyclopedia”; Two years of Wikifunctions</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-07-19}}: Wikidata-based enumerations are here</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-07-10}}: Length limits on labels and descriptions</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-07-04}}: Coverage of 1298</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-06-27}}: How many people are needed to write an encyclopedia?</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-06-21}}: Quarterly Planning for July–September 2025</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-06-15}}: Closing the consultation about the location of Abstract Content</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-06-06}}: Where will Abstract Content go?</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-05-29}}: Rolling out to five Wiktionaries; Calculating with today's date</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-05-23}}: Ongoing consultation about the Location for Abstract Content</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-05-15}}: Location of Abstract Content</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-05-09}}: Abstract Wikipedia and the Wikimedia AI Strategy</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-04-30}}: Abstract Wikipedia is a MacArthur 100&Change finalist</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-04-25}}: Welcome, Gregory!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-04-16}}: Wikifunctions integrated in Dagbani - and Wikifunctions; and the date of Easter</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-04-11}}: Quarter in review</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-04-05}}: Quarterly Planning for April–June 2025; We are looking for a Senior Product Manager</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-03-28}}: It's about time</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-03-20}}: Wikidata-based simple enumerations</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-03-15}}: Upcoming NLG meeting, Recent Changes in the software</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-03-07}}: Recent Changes in the software, Recording of Volunteer’s Corner, and talks in London</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-02-26}}: From things to words</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-02-19}}: A proposal for types per language and part of speech</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-02-13}}: Restricting the World, redux</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-02-06}}: Invitation to the Natural Language Generation Special Interest Group</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-01-29}}: With 2000 Functions into the new year: time for stats</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-01-22}}: Welcome, David! Naming conventions recommendations</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-01-15}}: Happy Wikipedia day! Quarterly planning</span>
=== 2024 ===
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-12-19}}: Function of the Week: age; Intros for year articles; New Type: Floating-point number</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-12-12}}: Sketching a path to Abstract Wikipedia; Team offsite in Lisbon; and much more</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-11-27}}: WordGraph release; New Special page: list functions by tests; new type for day of the year, and much more</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-11-21}}: New special page for missing labels, new type for Gregorian years, and much more</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-11-13}}: New Type: Rational number; Documentation on Wikidata-based types; and more</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-11-07}}: The Dream of a Universal Language</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-11-01}}: Rewriting the backend</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-10-25}}: Our goal for this Quarter: Agreement</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-10-17}}: What could abstract content look like?</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-10-11}}: Wikidata Lexemes in Wikifunctions are coming soon</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-10-02}}: Focus topic: Food</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-09-26}}: Quarterly planning for October–December 2024; Presentation at Celtic Knot tomorrow</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-09-20}}: Introducing focus topic areas</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2024-09-13}}: Dagbani Wikipedia will be our first wiki for Wikifunctions integration</span>
* {{Status updates|2024-09-06}}: Espaço dos Voluntários e outras atualizações
* {{Status updates|2024-08-29}}: Limites de comprimento em nomes e descrições
* {{Status updates|2024-08-23}}: WasmEdge, agora 300 ms mais rápido
* {{Status updates|2024-08-16}}: Edição Wikimania 2024
* {{Status updates|2024-08-02}}: Renovando nosso ''widget'' “Sobre”
* {{Status updates|2024-07-26}}: Wikimania 2024 em breve!
* {{Status updates|2024-07-18}}: Relatório de pesquisa sobre integrar a Wikifunctions na Wikipédia
* {{Status updates|2024-07-10}}: Propostas de Tipos para acessar Lexemas
* {{Status updates|2024-07-03}}: Planejamento trimestral
* {{Status updates|2024-06-26}}: Bem-vinda, Daphne!
* {{Status updates|2024-06-20}}: Novo Tipo: Inteiros
* {{Status updates|2024-06-13}}: Novo Tipo: Meses do calendário igbo
* {{Status updates|2024-06-06}}: Novo Tipo: Sinal
* {{Status updates|2024-05-30}}: Um singular na singularidade ou uma pluralidade de plurais?
* {{Status updates|2024-05-22}}: Novo Tipo: Meses do calendário gregoriano
* {{Status updates|2024-05-15}}: Chamada para Funções: Soletre o número!
* {{Status updates|2024-05-10}}: Tipo principal para enumerações: Meses do calendário gregoriano
* {{Status updates|2024-05-03}}: Reunião da equipe e plano trimestral
* {{Status updates|2024-04-19}}: Bem-vinda, Sharvani!
* {{Status updates|2024-04-11}}: Nova API para realizar chamadas à Wikifunctions, e celebração das mil funções
* {{Status updates|2024-04-03}}: Atualização de Produto sobre o Dif e Futuras Melhorias na API
* {{Status updates|2024-03-28}}: A criação de testes está muito mais fácil!
* {{Status updates|2024-03-21}}: A caminho da internacionalização dos números
* {{Status updates|2024-03-13}}: Sobre identidade
* {{Status updates|2024-03-07}}: Apresentando nosso segundo novo tipo: Números naturais
* {{Status updates|2024-02-28}}: Proposta de tipo para números naturais
* {{Status updates|2024-02-22}}: Atualizando o modelo de função
* {{Status updates|2024-02-14}}: Semana de consertos
* {{Status updates|2024-02-07}}: Planejamento trimestral. Obrigado, Nick! Função da semana: é permutação
* {{Status updates|2024-02-01}}: O modo imperativo em igbo!
<span id="Before_February_2024"></span>
=== Anteriores a fevereiro de 2024 ===
Todas as atualizações deste período estão [[:m:Special:MyLanguage/Abstract Wikipedia/Updates|disponíveis no Meta-Wiki]].
[[Category:Status updates{{#translation:}}| ]]
64pq4pg8t8t8wue8e8iei3f448sdooa
Help:Using Wikifunctions/it
12
57805
297024
240700
2026-08-06T18:05:56Z
FuzzyBot
207
Updating to match new version of source page
297024
wikitext
text/x-wiki
<languages/>
{{about|error messages which can appear when an (embedded) function call fails
|instructions on how to use {{SITENAME}}|Special:MyLanguage/Help:Contents
}}
<div class="mw-translate-fuzzy">
Questa è una pagina di aiuto per capire cosa significa un errore.
</div>
<span id="Unknown_object"></span>
== Oggetto sconosciuto ==
L'ID della funzione o di un riferimento di input utilizzato nella chiamata di funzione non è un ID valido o non esiste in Wikifunctions.
Per risolvere la chiamata, modificare la pagina con l'editor visuale, fare clic sulla chiamata fallita e seguire le istruzioni interattive per scegliere e configurare una chiamata a funzione valida.
<span id="Invalid_object"></span>
== Oggetto non valido ==
La funzione che la tua chiamata sta cercando di usare è invalida o corrotta.
Se il problema persiste, visita la pagina della funzione e pubblica i dettagli del tuo problema della pagina di discussione.
<span id="Not_a_function"></span>
== Funzione inesistente ==
L'ID utilizzato nella tua chiamata di funzione non indica una funzione, ma un oggetto di qualche altro tipo.
Per risolverlo, modificare la pagina con l'editor visuale, fare clic sulla chiamata fallita e utilizzare la finestra di dialogo di configurazione per scegliere una funzione valida e impostare i suoi campi di ingresso.
<span id="Input_type_not_supported"></span>
== Tipo di ingresso non supportato ==
La funzione nella tua chiamata di funzione utilizza uno o più tipi di input che attualmente non sono supportati, in quanto non possono essere letti da stringhe.
È possibile cercare altre funzioni supportate modificando la pagina con l'editore visivo e inserendo una nuova funzione. La finestra di dialogo iniziale di ricerca ti permetterà di esaminare tutte le funzioni supportate.
Se credi che questo tipo di input dovrebbe essere supportato, discutine nella [[Wikifunctions:Project chat|Chat di progetto di Wikifunctions]].
<span id="Output_type_not_supported"></span>
== Tipo di uscita non supportato ==
La funzione nella chiamata di funzione restituisce un valore di uscita che non è attualmente supportato, in quanto non può essere convertito in una stringa.
È possibile cercare altre funzioni supportate modificando la pagina con l'editor visuale e inserendo una nuova funzione. La finestra di dialogo iniziale di ricerca ti permetterà di esaminare tutte le funzioni supportate.
Se credi che questo tipo di output dovrebbe essere supportato, discutine nella [[Wikifunctions:Project chat|Chat di progetto di Wikifunctions]].
<span id="Invalid_language_properties"></span>
== Proprietà di lingua invalide ==
La chiamata di funzione utilizza codici di lingua non validi come codici di lingua in ingresso o in uscita.
<div class="mw-translate-fuzzy">
Per risolvere il problema, modifica la pagina utilizzando l'editor sorgente e cerca la chiamata di funzione non funzionante. Le proprietà linguistiche appariranno come <code>parselang</code> e <code>renderlang</code>; devi assicurarti che siano codici di lingua BCP-47 validi. Ad esempio:
</div>
<syntaxhighlight lang="wikitext">
{{#function:Z10000|foo|bar|renderlang=en|parselang=en}}
</syntaxhighlight>
<span id="Wrong_number_of_inputs"></span>
== Numero sbagliato di ingressi ==
Il wikitesto della chiamata a funzione ha un numero di parametri in ingresso diverso da quello atteso (sia in meno che in più).
Per risolvere il problema, modifica la pagina tramite l'editor visuale, premi sulla chiamata a funzione non funzionante, e assicurati che tutti i parametri in ingresso siano validi. Se il problema persiste, probabilmente la chiamata ha un numero maggiore di ingressi senza nome rispetto a quanto atteso, quindi dovresti poter risolvere il problema direttamente dall'editor del sorgente.
Quando hai localizzato la chiamata non funzionante, assicurati che ci sia la quantità di ingressi separati da <code>|</code> che la funzione si aspetta, ad eccezione dei parametri con nome come <code>renderlang</code> o <code>parselang</code>. Per esempio, questa funzione ha due ingressi senza nome, soddisfando le aspettative della funzione:
<syntaxhighlight lang="wikitext">
{{#function:Z10000|unnamed input 1|unnamed input 2|namedInput=1|foo=bar|parselang=en}}
</syntaxhighlight>
<span id="Wrong_input_type"></span>
== Tipo in ingresso errato ==
Il wikitesto della chiamata a funzione contiene un riferimento a un valore come ingresso di un tipo diverso da quello atteso dalla funzione.
Per risolvere questo problema, modifica la pagina tramite l'editor visuale, premi sulla chiamata non funzionante, e usa la finestra di dialogo di configurazine per selezionare un valore valido per l'ingresso errato.
<span id="Unexpected_output"></span>
== Output inaspettato ==
Il valore restituito dall'esecuzione della funzione non corrisponde al tipo atteso da questa funzione. Questo protrebbe essere dovuto a qualche problema nell'implementazione della funzione.
Puoi controllare se la funzione funziona come previsto nella rispettiva pagina, testandola con i tuoi ingressi desiderati o chiedendo nella sua pagina di discussione.
<span id="Failed_evaluation"></span>
== Esecuzione fallita ==
Il servizio di orchestrazione della funzione non ha eseguito con successo la chiamata. Questo può essere dovuto ad errori interni dell'orchestratore o ad alcuni problemi nelle implementazioni della funzione (ad esempio la funzione non ha implementazioni connesse).
Puoi controllare se la funzione funziona come previsto nella rispettiva pagina, testandola con i tuoi ingressi desiderati o chiedendo nella sua pagina di discussione.
<span id="Wikifunctions_is_disabled"></span>
== Wikifunctions non funziona ==
I servizi di Wikifunctions sono temporaneamente disabilitati. Potrebbe essere a causa di modifiche in corso o operazioni di mantenimento tecnico che saranno risolte a presto.
Se l'errore persiste, visita la [[Wikifunctions:Project chat|Chat del progetto Wikifunctions]] e pubblica un messaggio.
<span id="Other_system_failures"></span>
== Altri errori ==
Il sistema ha incontrato un problema imprevisto prima di inviare la richiesta per l'esecuzione. Se il problema persiste, segnala il bug su Phabricator.
[[Category:Help{{#translation:}}]]
siajty8qvhy664inpw9wdfv8pchckyb
Wikifunctions:FAQ/ko
4
57912
296922
265381
2026-08-06T18:02:00Z
FuzzyBot
207
Updating to match new version of source page
296922
wikitext
text/x-wiki
<languages/>
{{shortcut|[[WF:FAQ]]}}
이 문서는 위키함수에 관련된 자주 묻는 질문을 다룬 문서입니다. 원하는 답변이 없으시다면 [[Wikifunctions talk:FAQ|토론 문서]]에서 직접 물어보시기 바랍니다!
또한, 위키함수와 추상 위키백과에 대한 보다 구체적인 질문에 대해서는 [[:m:Special:MyLanguage/Abstract Wikipedia/FAQ|메타에 대한 FAQ]]를 고려하시기 바랍니다.
__TOC__
<span id="Introduction"></span>
== 소개 ==
<span id="What_is_this_project_about?"></span>
=== 이 프로젝트는 무엇에 관한 것인가요? ===
<div lang="en" dir="ltr" class="mw-content-ltr">
Wikifunctions is a new Wikimedia project that provides a catalog of all kinds of functions that anyone can call, write, maintain, and use. It also provides the underlying technology that will eventually enable the translation of language-independent articles from Abstract Wikipedia into the language of any Wikipedia. This will allow everyone to contribute and read articles in their preferred languages.
</div>
<span id="What_is_a_function?"></span>
=== 함수가 무엇인가요? ===
<div lang="en" dir="ltr" class="mw-content-ltr">
Functions are a form of knowledge that can answer questions, such as how many days have passed between two dates or the distance between two cities. More complicated functions can answer more complicated questions, such as the volume of a three-dimensional shape, the distance between Mars and Venus on a certain date, or whether two species were alive at the same time.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
We already use functions in many types of knowledge inquiries, such as asking a question to a search engine. The templates, such as [[:w:en:Template:Convert|Template:Convert]] and [[:w:en:Template:Age|Template:Age]] on English Wikipedia, are also examples of functions that are already used in many Wikipedias, written in wikitext and Lua and manually copied to each wiki where they're wanted.
</div>
<span id="What_is_an_implementation?"></span>
=== 구현이 무엇인가요? ===
<div lang="en" dir="ltr" class="mw-content-ltr">
An implementation is a particular way to execute a function. An implementation is a recipe that lists the steps that are needed to run the function. It may be a piece of code in a programming language or a combination of calls to other functions. A function may have many implementations, which should all be equivalent.
</div>
<span id="What_is_a_test?"></span>
=== 테스트가 무엇인가요? ===
<div lang="en" dir="ltr" class="mw-content-ltr">
A test is a way to determine if a given function is doing the right thing. A function will typically have multiple testers, each specifying some input to the function and the conditions the output for the given input must fulfill.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For example, testers for a “title case” function might include: “<span dir="ltr" lang="en">abc</span>” should become “<span dir="ltr" lang="en">Abc</span>”; “<span dir="ltr" lang="en">war and peace</span>” should become “<span dir="ltr" lang="en">War and Peace</span>”; “<span dir="ltr" lang="ru">война и мир</span>” should become “<span dir="ltr" lang="ru">Война и мир</span>”; and “<span dir="ltr" lang="en">123</span>” should remain “<span dir="ltr" lang="en">123</span>”.
</div>
<span id="Which_features_are_available_now,_which_will_be_soon_available,_and_which_are_further_away?"></span>
=== 현재 사용 가능할지, 곧 사용 가능해질지, 언제 사용될지 모르는 함수가 무엇인가요? ===
* <span lang="en" dir="ltr" class="mw-content-ltr">At launch:</span>
** 문자열과 불리언을 다루는 함수를 가질 수 있습니다.
** 위키함수는 처음부터 완전히 국제화되었습니다. 어떤 언어로든 사용할 수 있습니다.
* [[Wikifunctions:Status|진행 중인 개발]]:
** 일반적인 유형과 함수는 완전히 지원되지 않습니다.
** <span lang="en" dir="ltr" class="mw-content-ltr">Adding types will, for now, be something that is limited to the development team. In the future, the community will be able to add more types. There is a lot of work to be done in the future to make types behave much more smoothly.</span>
*** <span lang="en" dir="ltr" class="mw-content-ltr">One particularly interesting type will be binary data, and particularly files.</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">We currently support two programming languages for implementations: JavaScript and Python. In the future, we want to support many more.</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">Currently, it is ''not'' possible to call other functions from implementations written in any programming language. This is currently only possible through composition.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">In the future:</span>
** 다른 위키미디어 프로젝트에서 함수를 호출하여 해당 결과를 문서 출력에 통합할 수 있습니다.
** 함수 내에서 위키데이터의 데이터를 사용할 수 있습니다.
** Commons Data 네임스페이스에서 데이터 세트를 호출할 수 있습니다.
<span id="How_is_Wikifunctions_multilingual?"></span>
=== 위키함수는 어떻게 다국어를 지원하나요? ===
{{main|Special:MyLanguage/Help:Multilingual}}
위키함수와 추상 위키백과는 서로 영향을 미치지 않는 여러 가지 방식으로 다국어를 사용합니다:
* '''위키함수는 콘텐츠와 사용자 인터페이스 모두 다국어를 지원합니다.''' 사용자는 모든 자연어로 위키함수의 함수를 읽고 호출할 수 있습니다. 예를 들어, "문자열 추가" 함수에는 [https://www.wikifunctions.org/view/en/Z10000 영어], [https://www.wikifunctions.org/view/pl/Z10000 폴란드어], [https://www.wikifunctions.org/view/he/Z10000 히브리어] 버전이 있으나, 더 많은 언어로도 제공됩니다.
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Contributors can edit and improve Wikifunctions using their language.''' Even implementations can be edited in the natural language of the contributor. For example, the composition of the “and” function can be edited in [https://www.wikifunctions.org/wiki/Z11223?action=edit&uselang=de German], [https://www.wikifunctions.org/wiki/Z11223?action=edit&uselang=en English], or any other of about 300 languages.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Wikifunctions functions can be used to create results for any natural language.''' The community is creating a growing number of functions to support the generation of text in many natural languages. We have functions for [[Wikifunctions:Catalogue#Breton|Breton]], [[Wikifunctions:Catalogue#Rohingya|Rohingya]], [[Wikifunctions:Catalogue#English|English]], and many other languages.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Functions in Wikifunctions can be implemented in various different programming languages.''' For example, the [[Z10000|join function]] is implemented in both [[Z10005|JavaScript]] and [[Z10004|Python]].</span>
<span id="Which_programming_languages_does_Wikifunctions_currently_support?_Which_programming_languages_will_be_supported_in_the_future?"></span>
=== 현재 위키함수는 어떤 프로그래밍 언어를 지원하나요? 앞으로 어떤 프로그래밍 언어가 지원되나요? ===
{{main|WF:programming languages}}
<div lang="en" dir="ltr" class="mw-content-ltr">
Currently, Wikifunctions supports implementations written in JavaScript and Python. We plan to add support for more programming languages in the future. We hope to add at least one further programming language in 2025 (but have not yet decided which one).
</div>
<span id="How_will_Wikifunctions_be_integrated_into_other_projects?"></span>
=== 위키함수는 다른 프로젝트에 어떻게 통합되나요? ===
<div lang="en" dir="ltr" class="mw-content-ltr">
Wikifunctions is the first step towards building Abstract Wikipedia. Our near-term focus will be on supporting the community and making improvements based on feedback. Concurrently, we will begin the process of integrating it with Wikipedia and Wikidata, which will enable broader real-life applications and get us closer to the vision of Abstract Wikipedia.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Contributors will be able to call functions stored on the Wikifunctions site from within their wikis. The result of the function call will be displayed to readers of the wiki. This can be used, for example, to calculate the age of a person, the population density based on population and area data from Wikidata, or to draw a graph and integrate it into a given article.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Another option to integrate Wikifunctions will be to integrate an interactive function call interface within their wiki. This could be used, for example, in a Wikipedia article to dynamically calculate the result of a physical equation based on reader-provided parameters, draw and interact with mathematical functions, etc.
</div>
<span id="What_Wikifunctions_is_not"></span>
<div class="mw-translate-fuzzy">
=== 위키함수란 무엇인가요? ===
</div>
자세한 내용은 [[Special:MyLanguage/Wikifunctions:What Wikifunctions is not|위키함수:위키함수가 아닌 것]]을 참고하세요.
<span id="What_license_will_the_functions_and_derived_content_be_under?"></span>
=== 함수 및 파생 콘텐츠에는 어떤 라이선스가 적용되나요? ===
<div lang="en" dir="ltr" class="mw-content-ltr">
Per the discussion happened [[:m:Special:MyLanguage/Abstract Wikipedia/Licensing discussion|on Meta between November and December 2021]], all contributions to Wikifunctions and the wider Abstract Wikipedia projects will be published under free licenses. In particular:
</div>
* 위키함수의 [[Special:MyLanguage/Wikifunctions:Glossary#Content|텍스트 내용]]은 [[w:ko:크리에이티브 커먼즈 라이선스|CC BY-SA 4.0]]에 따라 게시됩니다.
* [[Special:MyLanguage/Wikifunctions:Glossary#Function|함수 서명]] 및 위키함수의 기타 구조화된 콘텐츠는 [[w:ko:크리에이티브 커먼즈 라이선스#CC0|CC0]]으로 게시됩니다.
* 위키함수의 [[Special:MyLanguage/Wikifunctions:Glossary#Implementation|코드 구현]]은 [[w:ko:아파치 라이선스|아파치 2 라이선스]]에 따라 게시됩니다.
* 추상 위키백과의 [[Special:MyLanguage/Wikifunctions:Glossary#Content|추상 내용]]은 CC BY-SA 4.0에 따라 게시됩니다.
<div lang="en" dir="ltr" class="mw-content-ltr">
There are still some points that will need to be addressed in the future, such as the license of the generated content from the abstract content. We plan on drafting a more comprehensive document with the Legal department about how people can re-use code from Wikifunctions as painlessly as possible, while adhering to the license.
</div>
<span id="Contributing"></span>
== 기여 ==
<span id="I'm_new_here._What_is_there_for_me_to_do_and_how_can_I_help?"></span>
=== 제가 처음 와 봤는데, 제가 무엇을 해야 하고 어떻게 도와드려야 하나요? ===
<div lang="en" dir="ltr" class="mw-content-ltr">
Welcome! We're very happy to have you here! There are many opportunities for contributing to Wikifunctions, from creating new functions to improving and translating documentation. If you are looking for ways to get involved, we recommend that maybe, depending on your level of comfort, you suggest a new function on a topic you are interested in. Or even create such a function. Provide some tests. Try your hand at an implementation. Help with translations. Read and improve our documentation. Help with organizing the community.
</div>
<span id="How_do_I_create_a_new_function,_implementation,_or_test?"></span>
=== 새 함수, 구현, 테스트는 어떻게 만드나요? ===
새 기능, 구현, 테스트를 만드는 방법에 대해서는 [[Special:MyLanguage/Wikifunctions:Introduction|위키함수:소개]]를 참고하세요.
구현을 만드는 방법에 대해서는 [[Special:MyLanguage/Wikifunctions:How to create implementations|위키함수:구현을 만드는 방법]]을 참고하세요.
<span id="What_should_I_edit_first?"></span>
=== 무엇을 먼저 편집해야 하나요? ===
<div lang="en" dir="ltr" class="mw-content-ltr">
If you can write several languages, find functions that don't have labels and descriptions in your languages yet on the page [[Special:ListMissingLabels]], and help to add them.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If you have some interest in a domain that could feature functions in Wikifunctions, but yet doesn't, or if you have more ideas for functions, go to the page for [[Wikifunctions:Suggest a new function|suggesting new functions]] and present your ideas.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If you are a coder in JavaScript or Python, maybe you want to check for functions that don't yet have implementations in JavaScript or Python, and try to write them.
</div>
<span id="Where_can_I_go_for_help?"></span>
=== 어디에서 도움을 받을 수 있나요? ===
<div lang="en" dir="ltr" class="mw-content-ltr">
Your first stop should be the [[Special:MyLanguage/Help:Contents|Help portal]], where you'll find all the documentation related to using and editing Wikifunctions. If you're still stuck, post a message on [[Wikifunctions:Project chat|Project chat]], and someone will answer your question.
</div>
<span id="How_do_we_sort_or_categorize_functions?"></span>
=== 함수를 어떻게 정렬하거나 분류하나요? ===
{{Tracked|T285424}}
<div lang="en" dir="ltr" class="mw-content-ltr">
For now, the best way to sort or categorize functions is to do it by hand through [[Special:MyLanguage/Wikifunctions:Catalogue|pages in the Wikifunctions namespace]]. Another option would be through the talk page of the given function. We will monitor these efforts and discuss with the community which changes to the system would be helpful for this task.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== How can I setup the software locally to hack on it? ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
See [[Special:MyLanguage/Wikifunctions:Hacking on the evaluator and orchestrator|Hacking on the evaluator and orchestrator]].
</div>
[[Category:FAQ| {{#translation:}}]]
cat8c9dxpi5ola2e4dulek9x6n175fa
Help:Using Wikifunctions/zh-hans
12
58805
297026
240702
2026-08-06T18:05:57Z
FuzzyBot
207
Updating to match new version of source page
297026
wikitext
text/x-wiki
<languages/>
{{about|error messages which can appear when an (embedded) function call fails
|instructions on how to use {{SITENAME}}|Special:MyLanguage/Help:Contents
}}
<div class="mw-translate-fuzzy">
这是帮助您理解一个错误意味着什么的一个帮助页面。请'''勿'''更改各部标题,因其是错误信息中被硬编码的链接。
</div>
<span id="Unknown_object"></span>
== 未知对象 ==
调用函数中使用的函数 ID 或输入引用不是有效 ID 或不存在于 Wikifunctions 中。
要修复调用函数,请使用可视化编辑器编辑页面,点击出现故障的调用,并按照交互式说明选择和配置有效的函数调用。
<span id="Invalid_object"></span>
== 无效对象 ==
您的调用函数试图使用的函数当前无效或已损坏。
如果问题仍然存在,请访问功能页面并在讨论页发布问题详情。
<span id="Not_a_function"></span>
== 并非一个函数 ==
调用函数中使用的 ID 指向的并非函数,而是其他类型的对象。
要解决这个问题,请使用可视化编辑器编辑页面,点击出现故障的调用,然后使用配置对话框选择一个有效的函数并设置其输入字段。
<span id="Input_type_not_supported"></span>
== 不支持的输入类型 ==
调用函数中的函数使用了一个或多个当前不支持的输入类型,这些输入类型无法由字符串解释。
您可通过可视化编辑器编辑页面然后插入新函数来搜索其他支持的功能。初等检索面板允许您遍历全体受支持函数。
如果您认为这种输入类型应被支持,请在[[Wikifunctions:Project chat|Wikifunctions 项目聊天]]中询问。
<span id="Output_type_not_supported"></span>
== 不支持的输出类型 ==
您的调用函数中函数返回的输出值目下不支持,因其无法转为字符串。
您可通过可视化编辑器编辑页面然后插入新函数来搜索其他支持的功能。初等检索面板允许您遍历全体受支持函数。
如果您认为这种输出类型应当受支持,请在[[Wikifunctions:Project chat|Wikifunctions 项目聊天]]中询问。
<span id="Invalid_language_properties"></span>
== 无效的语言属性 ==
调用函数的解析器或呈现器语言属性使用了无效的语言代码。
要解决这个问题,请使用源代码编辑器编辑页面并搜索冲突的调用函数。语言属性将显示为 <code>parselang</code> 和 <code>renderlang</code>,并且您须确保它们是有效的 BCP 47 语言标签。例如:
<syntaxhighlight lang="wikitext">
{{#function:Z10000|foo|bar|renderlang=en|parselang=en}}
</syntaxhighlight>
<span id="Wrong_number_of_inputs"></span>
== 输入参数数量错误 ==
你调用函数 wikitext 的输入参数数与预期不符(少于或多于)。
要解决这个问题,请使用可视化编辑器编辑页面,点击出现问题的函数调用,并确保所有输入字段都已设置。如果问题依旧,很可能是调用函数中有较预期多的未命名输入,因此应直接使用源代码编辑器进行修复。
一旦您定位冲突函数,确保该函数接受的以 <code>|</code> 分隔的输入尽可能多,排除 <code>renderlang</code> 或 <code>parselang</code> 等已命名参数。例如,下面的调用函数有贰个未命名输入,符合函数预期:
<syntaxhighlight lang="wikitext">
{{#function:Z10000|unnamed input 1|unnamed input 2|namedInput=1|foo=bar|parselang=en}}
</syntaxhighlight>
<span id="Wrong_input_type"></span>
== 错误的输入类型 ==
调用函数 wikitext 包含一个引用值作输入,但该引用不对应正确的项类型。
要解决这个问题,请使用可视化编辑器编辑页面,点击出现故障的调用,然后使用配置对话框选择一个有效的函数并设置其输入字段。
<span id="Unexpected_output"></span>
== 意外输出 ==
运行调用函数返回的值与此函数预期的值类型不一致。这可能是函数实现中的某些问题造成的。
您可以在函数页面用您所需的输入进行测试,检查函数是否按预期运行或在其讨论页询问有关情况。
<span id="Failed_evaluation"></span>
== 评估失败 ==
函数协调服务未能成功评估您的函数调用。这可能是由于协调器内部错误,也可能是由于函数实现中的某些问题(例如,函数没有连接实现。)
您可以在函数页面用您所需的输入进行测试,检查函数是否按预期运行或在其讨论页询问有关情况。
<span id="Wikifunctions_is_disabled"></span>
== Wikifunctions 不可用 ==
Wikifunctions 功能目前不可用。这可能是由于正在进行的部署或技术维护并将及时解除。
如果错误仍然存在,请访问[[Wikifunctions:Project chat|Wikifunctions 项目聊天]]并发布消息。
<span id="Other_system_failures"></span>
== 其他系统故障 ==
系统在发送评估请求前遇到意外故障。如果问题仍然存在,请在 Phabricator 中提交错误。
[[Category:Help{{#translation:}}]]
kxzzk4tjyl9sq8x54pf9heq7b50ja06
Help:Using Wikifunctions/zh-hant
12
58807
297027
240812
2026-08-06T18:05:57Z
FuzzyBot
207
Updating to match new version of source page
297027
wikitext
text/x-wiki
<languages/>
{{about|error messages which can appear when an (embedded) function call fails
|instructions on how to use {{SITENAME}}|Special:MyLanguage/Help:Contents
}}
<div lang="en" dir="ltr" class="mw-content-ltr">
This is a help page to understand what an error means. Do '''not''' change the English titles of the sections, as they are hardcoded as links for errors.
</div>
<span id="Unknown_object"></span>
== 未知物件 ==
<div lang="en" dir="ltr" class="mw-content-ltr">
The function ID or an input reference used in your function call is not a valid ID or it doesn't exist in Wikifunctions.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
To fix the function call, edit the page with the visual editor, click on the failing call, and follow the interactive instructions to choose and configure a valid function call.
</div>
<span id="Invalid_object"></span>
== 無效物件 ==
<div lang="en" dir="ltr" class="mw-content-ltr">
The function that your function call is trying to use is currently invalid or corrupted.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If the problem persists, visit the function page and post the details of your issue in the talk page.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Not a function ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The ID used in your function call does not point to a Function, but to an object of some other type.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
To fix it, edit the page with the visual editor, click on the failing call, and use the configuration dialog to choose a valid function and set up its input fields.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Input type not supported ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The function in your function call uses one or more input types that are not currently supported, as they cannot be interpreted from strings.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
You can search for other supported functions by editing the page with the visual editor and inserting a new function. The initial search dialog will allow you to look through all supported functions.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If you believe this input type should be supported, please inquire about it in the [[Wikifunctions:Project chat|Wikifunctions Project chat]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Output type not supported ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The function in your function call returns an output value that is not currently supported, as it cannot be converted to a string.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
You can search for other supported functions by editing the page with the visual editor and inserting a new function. The initial search dialog will allow you to look through all supported functions.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If you believe this output type should be supported, please inquire about it in the [[Wikifunctions:Project chat|Wikifunctions Project chat]].
</div>
<span id="Invalid_language_properties"></span>
== 無效的語言屬性 ==
<div lang="en" dir="ltr" class="mw-content-ltr">
The function call is using invalid language codes for its parser or renderer language properties.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
To fix the issue, edit the page using the source editor and search for the conflicting function call. The language properties will appear as <code>parselang</code> and <code>renderlang</code>, and you must make sure that they are valid BCP 47 language tags. For example:
</div>
<syntaxhighlight lang="wikitext">
{{#function:Z10000|foo|bar|renderlang=en|parselang=en}}
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Wrong number of inputs ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Your function call wikitext has a different number of input parameters than those expected (either fewer or more).
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
To fix the issue, edit the page using the visual editor, click on the failing function call, and make sure that all the input fields are set. If the problem still persists, it's likely that your function call has more unnamed inputs than expected, so you should fix it directly with the source editor.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Once you have located your conflicting function, make sure that there are as many inputs separated by <code>|</code> as the function accepts, excluding named parameters such as <code>renderlang</code> or <code>parselang</code>. For example, the following function call has two unnamed inputs, which fits the expectations of the function:
</div>
<syntaxhighlight lang="wikitext">
{{#function:Z10000|unnamed input 1|unnamed input 2|namedInput=1|foo=bar|parselang=en}}
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Wrong input type ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The function call wikitext contains a referenced value as an input, but this reference does not correspond to the right type of item.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
To fix this, edit the page using the visual editor, click on the failing function call, and use the configuration dialog to select a valid value for the failing input.
</div>
<span id="Unexpected_output"></span>
== 非預期的輸出 ==
<div lang="en" dir="ltr" class="mw-content-ltr">
The value returned from running the function call does not correspond to the value type expected for this function. This can be due to some issues in the function implementation.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
You can check if the function works as expected in the function page, by testing it with your desired inputs or inquire about it in its talk page.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Failed evaluation ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The function orchestration service failed to evaluate your function call successfully. This can be due to internal orchestrator errors, or due to some issues in the function implementations (e.g. the function has no connected implementations.)
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
You can check if the function works as expected in the function page, by testing it with your desired inputs or inquire about it in its talk page.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Wikifunctions is disabled ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Wikifunctions features are currently disabled. This can be due to ongoing deployments or technical maintenance and will be resolved in time.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If the error persists, visit the [[Wikifunctions:Project chat|Wikifunctions Project chat]] and post a message.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Other system failures ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The system encountered an unexpected failure before sending the request for evaluation. If the issue persists, please file a bug in Phabricator.
</div>
[[Category:Help{{#translation:}}]]
qbr4j00pn64939aashvl3ovkvli46wo
Wikifunctions:Status updates/nl
4
59496
296994
295122
2026-08-06T18:03:41Z
FuzzyBot
207
Updating to match new version of source page
296994
wikitext
text/x-wiki
<languages/>
{{shortcut|WF:SU}}{{notice|1='''[[:m:Global message delivery/Targets/Wikifunctions & Abstract Wikipedia|Meld u aan]]''' om korte on-wiki MassMessage-meldingen over elk nieuw onderwerp te ontvangen}}
{{Wikifunctions updates
| prevlabel = Vorige update
| prev = 2024-02-01
| nextlabel = Laatste update
| next = 2026-08-05
}}
Er gebeurt veel rond Wikifunctions en Abstract Wikipedia. Dit is de pagina waar onze updates worden geplaatst, inclusief de [[Special:MyLanguage/WF:function of the Week|functie van de week]].
U kunt u ook aanmelden op de [[:m:Global message delivery/Targets/Wikifunctions & Abstract Wikipedia|on-wiki nieuwsbrief]] om ze op uw overlegpagina of bij de kroeg van uw project te laten bezorgen.
<inputbox>
type=fulltext
prefix={{NAMESPACE}}:{{PAGENAME}}/
break=no
width=30
searchbuttonlabel={{int:Search}}
placeholder=Alle statusupdates zoeken
</inputbox>
<span id="Newsletters"></span>
== Nieuwsbrieven ==
<!--<nowiki> Newsletter entry template:
* <translate><tvar name="1">{{Status updates|2026-0?-??}}</tvar>: Title</translate>
NOTE: Remember to also update the "next =" date at the top of this page.
</nowiki>-->
=== 2026 ===
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-08-05}}: An apple is a fruit</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-07-29}}: Abstract Wikipedia at Wikimania</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-07-16}}: Beyond syntactic tables</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-07-08}}: Moving toward our first Abstract Wikipedia integration milestone</span>
* {{Status updates|2026-07-01}}: Integratie op test-wiki en jaarplan
* {{Status updates|2026-06-26}}: Samen werken aan Functies
* {{Status updates|2026-06-19}}: De of niet de, dit is (de?) vraag
* {{Status updates|2026-06-12}}: Het laden en weergeven van de testresultaten is verbeterd.
* {{Status updates|2026-06-05}}: De geïllustreerde encyclopedie
* {{Status updates|2026-05-30}}: Terugkijken en vooruitkijken
* {{Status updates|2026-05-23}}: Jaarplan 2026-2027
* {{Status updates|2026-05-15}}: Een hogere betekenis
* {{Status updates|2026-05-08}}: Referenties van Wikidata zijn nu beschikbaar
* {{Status updates|2026-05-02}}: Vraag om feedback: wat moeten we tellen voor Abstract Wikipedia?
* {{Status updates|2026-04-25}}: De zoektocht van de Foundation naar de perfecte taal
* {{Status updates|2026-04-16}}: Mijlpalen; er zijn enkele belangrijke problemen hopelijk opgelost
* {{Status updates|2026-04-10}}: Voorstellen van gemeenschap voor het vastleggen van betekenis
* {{Status updates|2026-04-02}}: Verzoek tot overleg: Syntactische tabellen
* {{Status updates|2026-03-26}}: Eerste dagen van de Abstract Wikipedia Beta; Status van de compositie-taal v2
* {{Status updates|2026-03-19}}: Abstract Wikipedia in Beta
* {{Status updates|2026-03-11}}: Een nieuwe compositie-taal
* {{Status updates|2026-03-06}}: Citeren en kopiëren en plakken
* {{Status updates|2026-02-26}}: Gracieuze overrides en fallbacks
* {{Status updates|2026-02-20}}: Een vroeg concept voor het voorvertonen van Abstract Wikipedia
* {{Status updates|2026-02-13}}: Elkaars zinnen afmaken: Dingen beginnen; Buiten locatie in Istanbul
* {{Status updates|2026-01-29}}: Integratie van Abstract Wikipedia
* {{Status updates|2026-01-22}}: Kwartaalplan voor januari-maart 2026
* {{Status updates|2026-01-15}}: 25 jaar Wikipedia
=== 2025 ===
* {{Status updates|2025-12-18}}: We wensen u een gelukkig nieuwjaar!
* {{Status updates|2025-12-11}}: Betere foutberichten schrijven
* {{Status updates|2025-12-04}}: En de naam is Abstract Wikipedia
* {{Status updates|2025-11-27}}: Stem voor de naam van de nieuwe wiki! Het afmaken van elkaars zinnen
* {{Status updates|2025-11-20}}: Tweede ronde van de stemming voor de naam van de wiki met taal-onafhankelijke inhoud; Functie-aanroepen delen
* {{Status updates|2025-11-13}}: Klaarmaken voor de tweede ronde van de stemming voor de naamgeving van de wiki met abstracte inhoud; Het herschrijven van de backend: Waarom Rust?
* {{Status updates|2025-11-05}}: De eerste ronde van de stemming voor de naamgeving van de wiki voor abstracte inhoud is gesloten; Oproep voor Wiktionary-functies; Ingebedde Wikifuncties op Bengalese Wikipedia en nog zeven Wiktionaries meer
* {{Status updates|2025-10-29}}: De eerste ronde van de stemming voor de naamgeving van de "abstract content wiki" eindigt maandag; Een voorbeeld van korte beschrijvingen
* {{Status updates|2025-10-23}}: Welkom Zaree en Laura! De eerste ronde van wedstrijd voor het benoemen is begonnen .
* {{Status updates|2025-10-15}}: Start van de naamgevingswedstijd voor Abstract Wikipedia; Visualisatie van functies
* {{Status updates|2025-10-08}}: Besluit over de locatie voor abstracte content en kwartaalplanning voor oktober-december
* {{Status updates|2025-10-03}}: Rich text nu beschikbaar in embedded functie-aanroepen op 148 Wiktionaries en Incubator
* {{Status updates|2025-09-26}}: Toegang tot kwalificaties in Wikidata-verklaringen
* {{Status updates|2025-09-19}}: Wikifuncties beschikbaar in 123 Wiktionary-talen
* {{Status updates|2025-09-12}}: Meer dan 3.000 functies op Wikifuncties
* {{Status updates|2025-09-07}}: Kopiëren van functie-aanroepen van de ene Wikipedia naar de andere
* {{Status updates|2025-08-29}}: Toegang tot Wikidata-items is nu mogelijk via ingebouwde functie-aanroepen; Wikifuncties beschikbaar op 65 Wiktionaries
* {{Status updates|2025-08-22}}: Opname van Wikimania-sessie: Wikifuncties komt binnenkort naar een wiki in uw buurt!
* {{Status updates|2025-08-01}}: Binnenkort is er Wikimania 2025!
* {{Status updates|2025-07-26}}: "Wikipedia is een encyclopedie"; Twee jaar Wikifuncties
* {{Status updates|2025-07-19}}: Er zijn nu Wikidata-gebaseerde opsommingen
* {{Status updates|2025-07-10}}: Lengtelimieten voor labels en beschrijvingen
* {{Status updates|2025-07-04}}: Dekking van 1298
* {{Status updates|2025-06-27}}: Hoeveel mensen zijn nodig om een encyclopedie te schrijven?
* {{Status updates|2025-06-21}}: Kwartaalplanning juli-september 2025
* {{Status updates|2025-06-15}}: Beëindiging van de raadpleging over de locatie van de abstracte inhoud
* {{Status updates|2025-06-06}}: Waar gaat abstracte inhoud naartoe?
* {{Status updates|2025-05-29}}: Uitrol naar vijf Wiktionaries; Rekenen met de datum van vandaag
* {{Status updates|2025-05-23}}: Lopende raadpleging over de locatie van de abstracte inhoud
* {{Status updates|2025-05-15}}: Locatie van de abstracte inhoud
* {{Status updates|2025-05-09}}: Abstract Wikipedia en de Wikimedia AI Strategie
* {{Status updates|2025-04-30}}: Abstract Wikipedia is een finalist van MacArthur 100 & Change
* {{Status updates|2025-04-25}}: Welkom, Gregory!
* {{Status updates|2025-04-16}}: Wikifuncties geïntegreerd in Dagbani - en Wikifuncties; en de datum van Pasen
* {{Status updates|2025-04-11}}: Kwartaal in terugblik
* {{Status updates|2025-04-05}}: Kwartaalplanning voor april-juni 2025; We zoeken een Senior Product Manager
* {{Status updates|2025-03-28}}: Het is tijd.
* {{Status updates|2025-03-20}}: Wikidata-gebaseerde eenvoudige opsommingen
* {{Status updates|2025-03-15}}: Komende NLG-bijeenkomst, recente softwarewijzigingen
* {{Status updates|2025-03-07}}: Recente wijzigingen in de software, opname van vrijwilligershoek, en gesprekken in Londen
* {{Status updates|2025-02-26}}: Van dingen naar woorden
* {{Status updates|2025-02-19}}: Een voorstel voor typen per taal en woordsoorten
* {{Status updates|2025-02-13}}: Beperking van de wereld, redux
* {{Status updates|2025-02-06}}: Uitnodiging van de Natural Language Generation Special Interest Group
* {{Status updates|2025-01-29}}: Met 2000 functies het nieuwe jaar in: tijd voor statistieken
* {{Status updates|2025-01-22}}: Welkom, David! De aanbevelingen voor naamconventies
* {{Status updates|2025-01-15}}: Gelukkige Wikipedia dag! Kwartaalplanning
=== 2024 ===
* {{Status updates|2024-12-19}}: Functie van de week: leeftijd; Introducties voor jaarartikelen; Nieuw type: Floating-point number
* {{Status updates|2024-12-12}}: Het schetsen van een pad naar Abstract Wikipedia; Team Offsite in Lissabon; en nog veel meer
* {{Status updates|2024-11-27}}: WordGraph release; Nieuwe speciale pagina: lijst van functies per test; nieuw type voor de dag van het jaar, en nog veel meer
* {{Status updates|2024-11-21}}: Nieuwe speciale pagina voor ontbrekende labels, nieuw type voor Gregoriaanse jaren en nog veel meer
* {{Status updates|2024-11-13}}: Nieuw type: Rational number; Documentatie op Wikidata-gebaseerde typen; en meer
* {{Status updates|2024-11-07}}: De droom over een universele taal
* {{Status updates|2024-11-01}}: Het herschrijven van de backend
* {{Status updates|2024-10-25}}: Ons doel voor dit kwartaal: Overeenkomst
* {{Status updates|2024-10-17}}: Hoe zou abstracte inhoud eruit kunnen zien?
* {{Status updates|2024-10-11}}: Binnenkort Wikidata Lexemen in Wikifuncties
* {{Status updates|2024-10-02}}: Focus onderwerp: Voeding
* {{Status updates|2024-09-26}}: Kwartaalplanning voor oktober-december 2024; Morgen presentatie op Celtic Knot
* {{Status updates|2024-09-20}}: Inleiding tot focus aandachtsgebieden
* {{Status updates|2024-09-13}}: Dagbani Wikipedia zal onze eerste wiki zijn voor de Wikifuncties-integratie
* {{Status updates|2024-09-06}}: Vrijwilligershoek en andere updates
* {{Status updates|2024-08-29}}: Limieten van lengte naam en beschrijving
* {{Status updates|2024-08-23}}: WasmEdge, nu 300 ms minder lang wachten
* {{Status updates|2024-08-16}}: Wikimania 2024 editie
* {{Status updates|2024-08-02}}: Vernieuwen widget 'About'
* {{Status updates|2024-07-26}}: Binnenkort is er Wikimania 2024!
* {{Status updates|2024-07-18}}: Onderzoeksrapport over het integreren van Wikifuncties uit Wikipedia
* {{Status updates|2024-07-10}}: Voorstellen types voor toegang tot Lexemen
* {{Status updates|2024-07-03}}: Kwartaalplanning
* {{Status updates|2024-06-26}}: Welkom, Daphne!
* {{Status updates|2024-06-20}}: Nieuw type: Integers
* {{Status updates|2024-06-13}}: Nieuw type: Igbo-kalendermaanden
* {{Status updates|2024-06-06}}: Nieuw type: Sign
* {{Status updates|2024-05-30}}: Een enkelvoud of een meervoud van meervouden?
* {{Status updates|2024-05-22}}: Nieuw type: Gregoriaanse kalendermaanden
* {{Status updates|2024-05-15}}: Oproep voor functies: Spel het nummer!
* {{Status updates|2024-05-10}}: Vlaggenschiptype voor opsommingen: Maanden van de Gregoriaanse kalender
* {{Status updates|2024-05-03}}: Teamvergadering en kwartaalplan
* {{Status updates|2024-04-19}}: Welkom, Sharvani!
* {{Status updates|2024-04-11}}: Nieuwe API voor het aanroepen van Wikifuncties en het vieren van de duizendste functie
* {{Status updates|2024-04-03}}: Product Update op Diff en komende API-verbeteringen
* {{Status updates|2024-03-28}}: Het aanmaken van tests is nu veel makkelijker!
* {{Status updates|2024-03-21}}: Op weg naar internationalisatie van nummers
* {{Status updates|2024-03-13}}: Over identiteit
* {{Status updates|2024-03-07}}: We introduceren ons tweede nieuwe type: natuurlijke getallen
* {{Status updates|2024-02-28}}: Voorstel type voor natuurlijke getallen
* {{Status updates|2024-02-22}}: Update van het functiemodel
* {{Status updates|2024-02-14}}: Week voor fouten herstellen
* {{Status updates|2024-02-07}}: Kwartaalplanning. Bedankt, Nick! Functie van de Week: is permutatie
* {{Status updates|2024-02-01}}: Het Igbo Imperatief!
<span id="Before_February_2024"></span>
=== Voor februari 2024 ===
De updates van voor februari 2024 zijn [[:m:Special:MyLanguage/Abstract Wikipedia/Updates|beschikbaar op Meta-Wiki]].
[[Category:Status updates{{#translation:}}| ]]
rxp3gkpd2cnxrz3ld0rleiwenl1fl0m
Wikifunctions:Design/zh-hans
4
59782
296895
209340
2026-08-06T18:00:04Z
FuzzyBot
207
Updating to match new version of source page
296895
wikitext
text/x-wiki
<languages/>
{{see also
|Special:MyLanguage/WF:Status|l1=WF:Status
|Special:MyLanguage/WF:Feature_petitions|l2=WF:Feature petitions
}}
在此页面我们将列出团队在网站设计改进方面的活动。
<span id="Current_design_improvements"></span>
== 目前的设计改进 ==
* [[Wikifunctions:Design/Lexeme Sense Selection UI|<span lang="en" dir="ltr" class="mw-content-ltr">Lexeme Sense Selection UI</span>]]
* [[Special:MyLanguage/Wikifunctions:Design/Naming conventions recommendations|命名规范建议]]
<span id="Implemented_design_improvements"></span>
== 实施设计改进 ==
* [[Special:MyLanguage/Wikifunctions:Design/About widget improvements|关于微件的改进]]
[[Category:Project concept{{#translation:}}]]
gfowzwafuiqalhok43ybquf5u63kolr
Wikifunctions:Design/zh-hant
4
59784
296897
209341
2026-08-06T18:00:05Z
FuzzyBot
207
Updating to match new version of source page
296897
wikitext
text/x-wiki
<languages/>
{{see also
|Special:MyLanguage/WF:Status|l1=WF:Status
|Special:MyLanguage/WF:Feature_petitions|l2=WF:Feature petitions
}}
<div lang="en" dir="ltr" class="mw-content-ltr">
This is a page where we'll list the activities of the team regarding design improvements to the website.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Current design improvements ==
</div>
* [[Wikifunctions:Design/Lexeme Sense Selection UI|<span lang="en" dir="ltr" class="mw-content-ltr">Lexeme Sense Selection UI</span>]]
* [[Special:MyLanguage/Wikifunctions:Design/Naming conventions recommendations|<span lang="en" dir="ltr" class="mw-content-ltr">Naming conventions recommendations</span>]]
<div lang="en" dir="ltr" class="mw-content-ltr">
== Implemented design improvements ==
</div>
* [[Special:MyLanguage/Wikifunctions:Design/About widget improvements|<span lang="en" dir="ltr" class="mw-content-ltr">About widget improvements</span>]]
[[Category:Project concept{{#translation:}}]]
cgcod5teknqlsijl1foc4ddq00mb0vi
Wikifunctions:Status updates/zh-hans
4
59871
297002
295129
2026-08-06T18:03:47Z
FuzzyBot
207
Updating to match new version of source page
297002
wikitext
text/x-wiki
<languages/>
{{shortcut|WF:SU}}{{notice|1='''[[:m:Global message delivery/Targets/Wikifunctions & Abstract Wikipedia|订阅]]'''以接收有关每个新内容的简短wiki内群发消息提醒}}
{{Wikifunctions updates
| prevlabel = 先前更新
| prev = 2024-02-01
| nextlabel = 最近更新
| next = 2026-08-05
}}
围绕Wikifunctions和抽象维基百科有很多事情发生。本页发布我们的更新,包括[[Special:MyLanguage/WF:function of the Week|每周功能]]。
您也可以订阅[[:m:Global message delivery/Targets/Wikifunctions & Abstract Wikipedia|wiki内新闻通讯]],将它们发送到您的讨论页或您项目的互助客栈。
<inputbox>
type=fulltext
prefix={{NAMESPACE}}:{{PAGENAME}}/
break=no
width=30
searchbuttonlabel={{int:Search}}
placeholder=Search all status updates
</inputbox>
<span id="Newsletters"></span>
=== 电子报 ===
<!--<nowiki> Newsletter entry template:
* <translate><tvar name="1">{{Status updates|2026-0?-??}}</tvar>: Title</translate>
NOTE: Remember to also update the "next =" date at the top of this page.
</nowiki>-->
=== 2026 ===
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-08-05}}: An apple is a fruit</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-07-29}}: Abstract Wikipedia at Wikimania</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-07-16}}: Beyond syntactic tables</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-07-08}}: Moving toward our first Abstract Wikipedia integration milestone</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-07-01}}: Integration on test wiki and annual plan</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-06-26}}: Working on Functions, together</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-06-19}}: The or not the, this is (the?) question</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-06-12}}: Improved loading and display of Test results</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-06-05}}: The illustrated encyclopaedia</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-05-30}}: Looking back and forward</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-05-23}}: Annual plan 2026-2027</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-05-15}}: A higher meaning</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-05-08}}: References from Wikidata are now available</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-05-02}}: Request for input: what should we count for Abstract Wikipedia?</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-04-25}}: The Foundation's search for the perfect language</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-04-16}}: Milestones; Some major issues hopefully resolved</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-04-10}}: Community proposals for capturing meaning</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-04-02}}: Request for Discussion: Syntactic tables</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-03-26}}: First few days of Abstract Wikipedia Beta; Status of Composition Language v2</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-03-19}}: Abstract Wikipedia in Beta</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-03-11}}: A new composition language</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-03-06}}: Citations and Copy and Paste</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-02-26}}: Graceful overrides and fallbacks</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-02-20}}: A sneak preview of Abstract Wikipedia</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-02-13}}: Finishing each other sentences: Starting things; Offsite in Istanbul</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-01-29}}: Integrating Abstract Wikipedia</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-01-22}}: Quarterly plan for January–March 2026</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-01-15}}: 25 years of Wikipedia</span>
=== 2025 ===
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-12-18}}: We wish you a happy new Gregorian year!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-12-11}}: How to write better error messages</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-12-04}}: And the name is Abstract Wikipedia</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-11-27}}: Vote on the new wiki name!; Finishing each other’s sentences</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-11-20}}: Second round of voting for naming the wiki with language-independent content; Sharing function calls</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-11-13}}: Getting ready for second round of voting for naming the wiki with abstract content; Rewriting the backend: Why Rust?</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-11-05}}: First round of voting for naming the wiki for abstract content closed; Calling for Wiktionary functions; Embedded Wikifunctions on Bengali Wikipedia and seven more Wiktionaries</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-10-29}}: Round 1 of “abstract content wiki” naming vote ending Monday; An example of short descriptions</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-10-23}}: Welcome Zaree and Laura! Naming contest round 1 kicked off</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-10-15}}: Kicking Off the Naming Contest for Abstract Wikipedia; Visualizing functions</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-10-08}}: Decision on location for abstract content and Quarterly Planning for October–December</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-10-03}}: Rich text now available in embedded function calls on 148 Wiktionaries and Incubator</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-09-26}}: Accessing qualifiers in Wikidata statements</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-09-19}}: Wikifunctions available on 123 Wiktionary languages</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-09-12}}: More than 3,000 functions on Wikifunctions</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-09-07}}: Copying function calls from one Wikipedia to another</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-08-29}}: Accessing Wikidata items now possible from embedded function calls; Wikifunctions available on 65 Wikitionaries</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-08-22}}: Recording of Wikimania session: Wikifunctions is coming soon to a wiki near you!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-08-01}}: Wikimania 2025 is coming soon!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-07-26}}: “Wikipedia is an encyclopedia”; Two years of Wikifunctions</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-07-19}}: Wikidata-based enumerations are here</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-07-10}}: Length limits on labels and descriptions</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-07-04}}: Coverage of 1298</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-06-27}}: How many people are needed to write an encyclopedia?</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-06-21}}: Quarterly Planning for July–September 2025</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-06-15}}: Closing the consultation about the location of Abstract Content</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-06-06}}: Where will Abstract Content go?</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-05-29}}: Rolling out to five Wiktionaries; Calculating with today's date</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-05-23}}: Ongoing consultation about the Location for Abstract Content</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-05-15}}: Location of Abstract Content</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-05-09}}: Abstract Wikipedia and the Wikimedia AI Strategy</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-04-30}}: Abstract Wikipedia is a MacArthur 100&Change finalist</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-04-25}}: Welcome, Gregory!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-04-16}}: Wikifunctions integrated in Dagbani - and Wikifunctions; and the date of Easter</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-04-11}}: Quarter in review</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-04-05}}: Quarterly Planning for April–June 2025; We are looking for a Senior Product Manager</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-03-28}}: It's about time</span>
* {{Status updates|2025-03-20}}:基于维基数据的简单枚举
* {{Status updates|2025-03-15}}:即将举行的自然语言生成会议,软件的近期更改
* {{Status updates|2025-03-07}}:软件的近期更改,志愿者角记录,以及伦敦谈话
* {{Status updates|2025-02-26}}:从事物到词语
* {{Status updates|2025-02-19}}:一个按语言和语篇划分类型的建议
* {{Status updates|2025-02-13}}:限制世界,再版
* {{Status updates|2025-02-06}}:邀请加入自然语言生成特别兴趣小组
* {{Status updates|2025-01-29}}:伴随2000个功能进入新的一年:统计时间
* {{Status updates|2025-01-22}}:欢迎,大卫!命名规范建议
* {{Status updates|2025-01-15}}:维基百科日快乐!季度规划
=== 2024 ===
* {{Status updates|2024-12-19}}:每周功能:年龄;年份条目的介绍;新类型:浮点数
* {{Status updates|2024-12-12}}:勾画通往抽象維基百科的路径;在里斯本的团队异地工作;新类型:公历日期
* {{Status updates|2024-11-27}}:WordGraph 发布;新的特殊页面:按测试列出功能;新的年月日类型
* {{Status updates|2024-11-21}}:新增遗失标签的特殊页面、新的公元年份类型,以及更多內容
* {{Status updates|2024-11-13}}:新类型:有理数;关于基于维基数据类型的文档;诸此之类
* {{Status updates|2024-11-07}}:通用语言之梦
* {{Status updates|2024-11-01}}:重写后端
* {{Status updates|2024-10-25}}:我们本季度的目标:协议
* {{Status updates|2024-10-17}}:抽象内容可以是什么样子?
* {{Status updates|2024-10-11}}:维基功能中的维基数据词条即将推出
* {{Status updates|2024-10-02}}:重点议题:食物
* {{Status updates|2024-09-26}}:2024年10月-12月的季度规划;明在凯尔特之结发表演讲
* {{Status updates|2024-09-20}}:介绍重点专题领域
* {{Status updates|2024-09-13}}:达格巴尼维基百科将是我们第一个整合维基功能的维基百科
* {{Status updates|2024-09-06}}:志愿者之角及其它最新信息
* {{Status updates|2024-08-29}}:名称和描述长度限制
* {{Status updates|2024-08-23}}: WasmEdge,现减少300毫秒延迟
* {{Status updates|2024-08-16}}:2024年维基媒体国际会议
* {{Status updates|2024-08-02}}:改造我们的“关于 ”小部件
* {{Status updates|2024-07-26}}:2024年维基媒体大会即将召开!
* {{Status updates|2024-07-18}}:关于从维基百科整合维基功能的研究报告
* {{Status updates|2024-07-10}}:访问词库的类型建议
* {{Status updates|2024-07-03}}:季度规划
* {{Status updates|2024-06-26}}:欢迎,达芙妮!
* {{Status updates|2024-06-20}}:新类型:整数
* {{Status updates|2024-06-13}}:新类型:伊格博日历月
* {{Status updates|2024-06-06}}:新类型:带符号
* {{Status updates|2024-05-30}}:单数形式的唯一性还是复数形式的多样性?
* {{Status updates|2024-05-22}}:新类型:公历月份
* {{Status updates|2024-05-15}}:征集功能:拼读数字!
* {{Status updates|2024-05-10}}:枚举的旗舰类型:公历月份
* {{Status updates|2024-05-03}}:团队会议和季度计划
* {{Status updates|2024-04-19}}:欢迎,沙瓦妮!
* {{Status updates|2024-04-11}}:用于调用维基函数和庆祝1000个函数的新API
* {{Status updates|2024-04-03}}:关于差分和即将推出的 API 改进的产品更新
* {{Status updates|2024-03-28}}:创建测试现已更容易!
* {{Status updates|2024-03-21}}:在号码国际化的道路上
* {{Status updates|2024-03-13}}:关于识别对象
* {{Status updates|2024-03-07}}:介绍我们的第二个新类型:自然数
* {{Status updates|2024-02-28}}:自然数类型提案
* {{Status updates|2024-02-22}}:更新功能模型
* {{Status updates|2024-02-14}}:修——缮周
* {{Status updates|2024-02-07}}:季度规划。谢谢你,尼克!本周功能:是置换
* {{Status updates|2024-02-01}}:伊格博人的要务!
<span id="Before_February_2024"></span>
=== 2024年2月之前 ===
这一时期的所有更新都[[:m:Special:MyLanguage/Abstract Wikipedia/Updates|在 Meta-Wiki 上可用]]。
[[Category:Status updates{{#translation:}}| ]]
73ollvwq1d92l3d21xctezwfdrw5se7
Wikifunctions:Status updates/zh-hant
4
59873
297003
295130
2026-08-06T18:03:48Z
FuzzyBot
207
Updating to match new version of source page
297003
wikitext
text/x-wiki
<languages/>
{{shortcut|WF:SU}}{{notice|1='''[[:m:Global message delivery/Targets/Wikifunctions & Abstract Wikipedia|訂閱]]'''以接收有關每個新内容的維基內簡短群發消息通知}}
{{Wikifunctions updates
| prevlabel = 先前的更新
| prev = 2024-02-01
| nextlabel = 最新的更新
| next = 2026-08-05
}}
圍繞維基函數和抽象維基百科有很多事情發生。本頁面發佈了我們的更新,包括[[Special:MyLanguage/WF:function of the Week|每週函數]]。
您也可以訂閱[[:m:Global message delivery/Targets/Wikifunctions & Abstract Wikipedia|維基內新聞通訊]],將它們發送到您的討論頁或您項目的互助客棧。
<inputbox>
type=fulltext
prefix={{NAMESPACE}}:{{PAGENAME}}/
break=no
width=30
searchbuttonlabel={{int:Search}}
placeholder=Search all status updates
</inputbox>
<span id="Newsletters"></span>
== 電子報 ==
<!--<nowiki> Newsletter entry template:
* <translate><tvar name="1">{{Status updates|2026-0?-??}}</tvar>: Title</translate>
NOTE: Remember to also update the "next =" date at the top of this page.
</nowiki>-->
=== 2026 ===
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-08-05}}: An apple is a fruit</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-07-29}}: Abstract Wikipedia at Wikimania</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-07-16}}: Beyond syntactic tables</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-07-08}}: Moving toward our first Abstract Wikipedia integration milestone</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-07-01}}: Integration on test wiki and annual plan</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-06-26}}: Working on Functions, together</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-06-19}}: The or not the, this is (the?) question</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-06-12}}: Improved loading and display of Test results</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-06-05}}: The illustrated encyclopaedia</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-05-30}}: Looking back and forward</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-05-23}}: Annual plan 2026-2027</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-05-15}}: A higher meaning</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-05-08}}: References from Wikidata are now available</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-05-02}}: Request for input: what should we count for Abstract Wikipedia?</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-04-25}}: The Foundation's search for the perfect language</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-04-16}}: Milestones; Some major issues hopefully resolved</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-04-10}}: Community proposals for capturing meaning</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-04-02}}: Request for Discussion: Syntactic tables</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-03-26}}: First few days of Abstract Wikipedia Beta; Status of Composition Language v2</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-03-19}}: Abstract Wikipedia in Beta</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-03-11}}: A new composition language</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-03-06}}: Citations and Copy and Paste</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-02-26}}: Graceful overrides and fallbacks</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-02-20}}: A sneak preview of Abstract Wikipedia</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-02-13}}: Finishing each other sentences: Starting things; Offsite in Istanbul</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-01-29}}: Integrating Abstract Wikipedia</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-01-22}}: Quarterly plan for January–March 2026</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2026-01-15}}: 25 years of Wikipedia</span>
=== 2025 ===
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-12-18}}: We wish you a happy new Gregorian year!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-12-11}}: How to write better error messages</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-12-04}}: And the name is Abstract Wikipedia</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-11-27}}: Vote on the new wiki name!; Finishing each other’s sentences</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-11-20}}: Second round of voting for naming the wiki with language-independent content; Sharing function calls</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-11-13}}: Getting ready for second round of voting for naming the wiki with abstract content; Rewriting the backend: Why Rust?</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-11-05}}: First round of voting for naming the wiki for abstract content closed; Calling for Wiktionary functions; Embedded Wikifunctions on Bengali Wikipedia and seven more Wiktionaries</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-10-29}}: Round 1 of “abstract content wiki” naming vote ending Monday; An example of short descriptions</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-10-23}}: Welcome Zaree and Laura! Naming contest round 1 kicked off</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-10-15}}: Kicking Off the Naming Contest for Abstract Wikipedia; Visualizing functions</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Status updates|2025-10-08}}: Decision on location for abstract content and Quarterly Planning for October–December</span>
* {{Status updates|2025-10-03}}:富文本格式現在可用於148個維基詞典和維基孵化器上的嵌入式功能呼叫
* {{Status updates|2025-09-26}}:存取維基數據陳述中的限定詞
* {{Status updates|2025-09-19}}:在123種不同語言的維基詞典上提供維基函數
* {{Status updates|2025-09-12}}:維基函數上有超過3000個函數
* {{Status updates|2025-09-07}}:將函數呼叫從一個維基百科複製到另一個維基百科
* {{Status updates|2025-08-29}}:現在可以透過嵌入函數呼叫存取維基數據項目;維基函數在65個維基詞典中可用
* {{Status updates|2025-08-22}}:「維基媒體國際會議」的錄影:維基函數即將來到您附近的維基上!
* {{Status updates|2025-08-01}}:2025年「維基媒體國際會議」即將到來!
* {{Status updates|2025-07-26}}:「維基百科是一本百科全書」;兩年過去的維基函式
* {{Status updates|2025-07-19}}:基於維基資料的列舉現在能在這裏用
* {{Status updates|2025-07-10}}:標籤和描述的長度限制
* {{Status updates|2025-07-04}}:1298的覆蓋範圍
* {{Status updates|2025-06-27}}:寫一本百科全書需要多少人?
* {{Status updates|2025-06-21}}:2025年7月至9月的季度計劃
* {{Status updates|2025-06-15}}:結束關於抽象內容位置的諮詢
* {{Status updates|2025-06-06}}:抽象內容會去哪裡?
* {{Status updates|2025-05-29}}:向五個維基詞典推出;用今天的日期計算
* {{Status updates|2025-05-23}}:關於抽象內容位置的持續諮詢
* {{Status updates|2025-05-15}}:抽象內容的位置
* {{Status updates|2025-05-09}}:抽象維基百科和維基媒體人工智慧策略
* {{Status updates|2025-04-30}}:抽象維基百科是「麥克阿瑟基金會100&Change」的決賽入圍者
* {{Status updates|2025-04-25}}:歡迎,格雷戈裡!
* {{Status updates|2025-04-16}}:維基函式整合在達格巴尼-和維基函式中;以及復活節的日期
* {{Status updates|2025-04-11}}:季度回顧
* {{Status updates|2025-04-05}}:2025年4月至6月的季度規劃;我們正在尋找一名高階產品經理
* {{Status updates|2025-03-28}}:是時候了
* {{Status updates|2025-03-20}}:基於維基資料的簡單列舉
* {{Status updates|2025-03-15}}:即將舉行的自然語言生成會議,軟體的最新變化
* {{Status updates|2025-03-07}}:軟體的最新變化、志願者角的錄影以及在倫敦的會談
* {{Status updates|2025-02-26}}:從事物到文字
* {{Status updates|2025-02-19}}:一個按語言和詞性劃分類型的建議
* {{Status updates|2025-02-13}}:限制世界,再版
* {{Status updates|2025-02-06}}:邀請參加自然語言生成特別興趣小組
* {{Status updates|2025-01-29}}:隨著2000個功能進入新的一年:統計數據時間
* {{Status updates|2025-01-22}}:歡迎,大衛! 命名規範建議
* {{Status updates|2025-01-15}}:維基百科日快樂! 季度計劃
=== 2024 ===
* {{Status updates|2024-12-19}}:本週函式:年齡;年份文章簡介;新型別:浮點數
* {{Status updates|2024-12-12}}:繪製抽象維基百科的道路;在里斯本的團隊異地工作;以及更多內容
* {{Status updates|2024-11-27}}:WordGraph發佈;新的特殊頁面:按測試列出函式;年月日的新型別,以及更多內容
* {{Status updates|2024-11-21}}:新增缺失標籤的特殊頁面,新的公曆年型別,以及更多內容
* {{Status updates|2024-11-13}}:新型別:有理數;關於維基資料型別的文件;以及更多內容
* {{Status updates|2024-11-07}}:通用語言的夢想
* {{Status updates|2024-11-01}}:重寫後端
* {{Status updates|2024-10-25}}:我們本季度的目標:協議
* {{Status updates|2024-10-17}}:抽象內容會是什麼樣子?
* {{Status updates|2024-10-11}}:維基函式中的維基數據詞條即將推出
* {{Status updates|2024-10-02}}:焦點主題:食物
* {{Status updates|2024-09-26}}:2024年10月至12月的季度計劃;明天在凱爾特結會議上發表演講
* {{Status updates|2024-09-20}}:介紹重點主題領域
* {{Status updates|2024-09-13}}:達巴尼語維基百科將是我們第一個用於維基函式庫整合的wiki
* {{Status updates|2024-09-06}}:志願者角和其他更新
* {{Status updates|2024-08-29}}:名稱和描述長度的限制
* {{Status updates|2024-08-23}}:WasmEdge,現減少300毫秒延遲
* {{Status updates|2024-08-16}}:2024年維基媒體國際會議
* {{Status updates|2024-08-02}}:改造我們的「關於」小工具
* {{Status updates|2024-07-26}}:2024年「維基媒體國際會議」即將到來!
* {{Status updates|2024-07-18}}:關於維基百科與維基函數整合的研究報告
* {{Status updates|2024-07-10}}:訪問詞彙的型別建議
* {{Status updates|2024-07-03}}:季度計畫
* {{Status updates|2024-06-26}}:歡迎,達芙妮!
* {{Status updates|2024-06-20}}:新型別:整數
* {{Status updates|2024-06-13}}:新型別:伊博語日曆月份
* {{Status updates|2024-06-06}}:新型別:符號
* {{Status updates|2024-05-30}}:單數形式的唯一性還是複數形式的多樣性?
* {{Status updates|2024-05-22}}:新型別:公曆月份
* {{Status updates|2024-05-15}}:徵集函式:拼出數字!
* {{Status updates|2024-05-10}}:列舉的旗艦型別:公曆的月份
* {{Status updates|2024-05-03}}:團隊會議和季度計畫
* {{Status updates|2024-04-19}}:歡迎,沙瓦妮!
* {{Status updates|2024-04-11}}:用於呼叫維基函式庫的新API和慶祝1000個函式
* {{Status updates|2024-04-03}}:在Diff上刊的產品更新和即將推出的 API 改進
* {{Status updates|2024-03-28}}:建立測試現在要容易得多!
* {{Status updates|2024-03-21}}:在數字國際化的路上
* {{Status updates|2024-03-13}}:關於識別物件
* {{Status updates|2024-03-07}}:介紹我們的第二個新型別:自然數
* {{Status updates|2024-02-28}}:自然數型別的提案
* {{Status updates|2024-02-22}}:更新功能模型
* {{Status updates|2024-02-14}}:修復週
* {{Status updates|2024-02-07}}:季度計畫。謝謝你,尼克!本週函式:是排列
* {{Status updates|2024-02-01}}:伊博語的祈使句!
<span id="Before_February_2024"></span>
=== 2024年2月之前 ===
在此期間的所有更新都可以在[[:m:Special:MyLanguage/Abstract Wikipedia/Updates|Meta-Wiki上找到]]。
[[Category:Status updates{{#translation:}}| ]]
glg5rxnmk9kkfchq7q9705hlgue2zxu
Wikifunctions:How to create implementations/zh-hans
4
60327
296950
276463
2026-08-06T18:02:42Z
FuzzyBot
207
Updating to match new version of source page
296950
wikitext
text/x-wiki
<languages/>
本页面,超越了在{{ll|Wikifunctions:Introduction}}中的概述,提供了更加细节性的指导去创建函式的实现。
<div lang="en" dir="ltr" class="mw-content-ltr">
== Types of Implementations ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
In Wikifunctions, an '''implementation''' can take one of two main forms: '''code''' or '''composition'''. A code implementation directly expresses the function’s logic in any of the available programming languages (currently, Python3 or JavaScript). It’s most useful when the function’s behavior can’t easily be built from existing Wikifunctions, or when precise control over data processing is needed.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
A composition implementation, on the other hand, defines the function entirely by combining other existing functions, without writing code. Compositions are easier to understand, reuse, and translate into other languages automatically, but they depend on suitable building blocks already being available and often are less performant. In general, start by checking whether your goal can be achieved through composition; if it can’t, or if performance or fine-grained logic matters, choose a code implementation instead.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
There's a third type of implementation: '''built-ins'''. These are run by system-built code, and are not editable. Most likely all pre-defined functions will have a built-in implementation. In such cases, when opening the implementation page, you will see a message stating ''"{{int|wikilambda-implementation-selector-none}}"''
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Practice Test-Driven Development ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
'''Test-Driven Development''', or '''TDD''', is a way of creating software where you write tests before you write the actual code. Tests are just a way of understanding what your function is supposed to do by listing examples and how they should work.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
In Wikifunctions, writing tests first offers significant benefits. If you are working on an implementation, you can run your code against the existing tests to check that it behaves as expected. This makes it easier to catch errors early before even publishing your implementation. Tests are also a powerful way to describe the function you need. By writing tests, '''you clearly communicate the expected behavior''', and the community can step in and help with the implementation, or create alternative implementations.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Imagine you want to implement a Function that combines two strings with a space in between. A basic test for this might look like:
</div>
<syntaxhighlight lang="prolog">
join_with_space( "Hello", "world" ) => "Hello world"
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
Once you have defined the basic behavior, it's important to '''think about edge cases'''—situations where the inputs are such that you might need some special behavior.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For example, what if your first string ends in a space, or your second string starts with a space? Should the function keep all existing spaces and add another one, or should it return a neatly spaced result with just a single space between the words?
Depending on your requirements, you should build a test for such a case. For example, a test for this edge case could be either one of these — but not both!:
</div>
<syntaxhighlight lang="prolog">
join_with_space( "Hello ", " world") => "Hello world"
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
or ...
</div>
<syntaxhighlight lang="prolog">
join_with_space( "Hello ", " world") => "Hello world"
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
Make sure that all possible special cases are covered by your tests, and once you have them, make sure that they are all connected to the Function by selecting them and clicking "Connect".
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Code implementations ==
</div>
[[File:Code implementation.png|thumb|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Wikifunctions code editor initialized with a function template</span>|<span lang="en" dir="ltr" class="mw-content-ltr">When adding a new code implementation, the function template is initialized with the function and argument names</span>]]
<div lang="en" dir="ltr" class="mw-content-ltr">
When creating an implementation using code, the Wikifunctions UI will set up a code editor with the selected language activated for syntax highlighting and validation. When the function to implement and the programming language are selected, this editor will be set with the correct function template: '''do not remove or edit this'''! Keep your code inside this function signature: if you need auxiliary functions, you can simply declare them inside your top-level function declaration.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Using input types in your code ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Wikifunctions types {{Z|Z6}} and {{Z|Z40}} can be used as if they were native types in both JavaScript and Python3. For example, a String input can be concatenated or a Boolean be directly used in a logical expression. To use other types in your code implementations, you will have to look deeper into the type, figure out if it has a conversion to a native equivalent, and treat it accordingly.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For example, let's say we want to write some Python code that handles an input of type {{Z|Z20420}}. In the page for this type, let's look at its "type converters to code" and search for a Python one. The converter {{Z|Z20424}} will be applied to our date input before our code, so looking at "native type" we know that our input will be a Python ''dict'' and looking at the implementation we can see the keys we can expect:
</div>
<syntaxhighlight lang="python3">
return {
'K1': year,
'K2': month,
'K3': day
}
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
When a type doesn't have a converter, you'll have to access its parts directly using its keys. For example, let's assume that your function <code>Z30000</code> has one input <code>Z30000K1</code> of type {{Z|Z11}}. This type has two keys: <code>Z11K1</code> for the language (itself an object of type {{Z|Z60}}), and <code>Z11K2</code> for the string value. Similarly, the language object has a key <code>Z60K1</code> for the language code. So, to get a string with the language code and the text, you can write:
</div>
<syntaxhighlight lang="javascript">
function Z30000( Z30000K1 ) {
// e.g. "en: some text"
return Z30000K1.Z11K1.Z60K1 + ": " + Z30000K1.Z11K2;
}
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
For a quick reference of the available type conversions visit [[Special:MyLanguage/Wikifunctions:Execution targets#Default type conversion|the default type conversion table]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Returning the right outputs ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Similarly to the way you treat inputs, outputs need to match the type specified in the function definition. Some can be treated as simply as native types, so any string output will be converted into a Wikifunctions {{Z|Z6}} object and any native boolean returned by your implementation will be converted into a Wikifunctions {{Z|Z40}} object.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Those types that have "type converters from code" will apply the appropriate function to the output, in order to build the required type. Following the example of {{Z|Z20420}}, the {{Z|Z20443}} will transform the output from your implementation–a dict with K1, K2 and K3 keys–into its correct ZObject representation.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For types that don't have converters from code, you can carefully build and return the output objects. For example, imagine that our function <code>Z30000</code> takes two string inputs: language code and text, and should return a {{Z|Z11}} object. You can do this in Python by using the <code>ZObject</code> constructor:
</div>
<syntaxhighlight lang="python3">
def Z30000(Z30000K1, Z30000K2):
lang_object = ZObject(
{"Z1K1": "Z9", "Z9K1": "Z60"},
Z60K1 = Z30000K1
)
return ZObject(
{"Z1K1": "Z9", "Z9K1": "Z11"},
Z11K1 = lang_object,
Z11K2 = Z30000K2
)
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
Or in JavaScript:
</div>
<syntaxhighlight lang="javascript">
function Z30000( Z30000K1, Z30000K2 ) {
const langObject = new ZObject(
new Map( [ [ "Z60K1", Z30000K1 ] ] ),
{ "Z1K1": "Z9", "Z9K1": "Z60" }
);
const monolingualKeys = new Map( [
[ "Z11K1", langObject ],
[ "Z11K2", Z30000K2 ]
] );
return new ZObject(
monolingualKeys,
{ "Z1K1": "Z9", "Z9K1": "Z11" }
);
}
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
You can learn more about the <code>ZObject</code> class and other useful constructors in {{ll|Wikifunctions:Execution_targets#Custom_and_non-built-in_type_conversion}}
</div>
{{phab|T392750}}<div lang="en" dir="ltr" class="mw-content-ltr">
As of 2026-05, trying to return a list of lists may fail, so you're not able to implement such functions in code.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Code in Python ===
</div>
<div class="mw-translate-fuzzy">
在本小節中,我们会有一个例子去说明如何用Python代码创建实现。我们要创建的函数的实现,它的输入数据包含两个字符串,返回的结果是将两个字符串中间加入一个空格。我們假設該函式的ZID是Z11057。
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The implementation is defined using the ZID of the function. So are the arguments of the function. So in the case of the function Z30000 with its two arguments, the function template should look like this:
</div>
<syntaxhighlight lang="python3">
def Z30000(Z30000K1, Z30000K2):
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
As we described before, we know that the arguments (<code>Z30000K1</code> and <code>Z30000K2</code>) are Strings, so we can treat them as simply as we use native strings in Python. Also, the function should return a String. For our example, we simply return the two arguments concatenated with a space in between:
</div>
<syntaxhighlight lang="python3">
def Z30000(Z30000K1, Z30000K2):
return Z30000K1 + " " + Z30000K2
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
Since this is Python, do not forget to indent this line.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If you have followed our advice to [[#Practice Test-Driven Development|practice TDD]], you will already have a set of tests that you know should work. If that's the case, while building your implementation you can click on the circular arrow in the Tests panel, and see if your implementation passes all of them.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Remember that the runtime has no state. Don’t assume values for global or static variables. If you have further questions about what you can and cannot do in Python, ask on [[Wikifunctions:Python implementations]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Code in JavaScript ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
In this section, we give a concrete example on how to create an implementation in the form of Code in JavaScript. Say we want to create an implementation for a Function which combines two input strings by putting a space between them, returning the result of that. Let’s assume the ZID of that function is <code>Z30000</code>.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The implementation is defined using the ZID of the function. So are the arguments of the function. So in the case of the function <code>Z30000</code> with its two arguments, the function template should look like this:
</div>
<syntaxhighlight lang="javascript">
function Z30000( Z30000K1, Z30000K2 ) {
}
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
We know that the arguments (<code>Z30000K1</code> and <code>Z30000K2</code>) are Strings, so we can treat them as native strings in JavaScript. Also, the function should return a String. To complete our function, you can then add a line concatenating the input strings, like this:
</div>
<syntaxhighlight lang="javascript">
function Z30000( Z30000K1, Z30000K2 ) {
return Z30000K1 + " " + Z30000K2;
}
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
If you have tests as recommended in the [[#Practice Test-Driven Development|TDD]] section above, click on the circular arrow in the Tests panel and see if your implementation passes all of them.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Remember that the runtime has no state. Don’t assume values for global or static variables. If you have further questions about what you can and cannot do in JavaScript, ask on [[Wikifunctions:JavaScript implementations]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Compositions ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
In this section, we give a concrete example on how to create an implementation in the form of a composition. Say we want to create an implementation for a Function which combines two input strings by putting a space between them, returning the result of that. Let’s assume the ZID of that function is <code>Z30000</code>.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
It is usually a good idea to first think about how to combine existing functions in order to create the desired output. Sometimes this might be trivial, and you can just go ahead with composing functions, but in many cases it is worthwhile to note the desired composition down.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For example, for the given Function, we could use the existing Function {{Z|Z10000}}. That Function takes two strings and makes one string out of them. But we need to add a space in between. So we first concatenate a space to the end of the first string, and then concatenate the second string to the result of that first concatenation. So our composition could be noted down like this:
</div>
<syntaxhighlight lang="prolog">
join_strings( join_strings( Z30000K1, " " ), Z30000K2 )
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
There are multiple ways to write a composition: notice that the same thing could be accomplished with:
</div>
<syntaxhighlight lang="prolog">
join_strings( Z30000K1, join_strings( " ", Z30000K2 ) )
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
An alternative implementation could also use the existing Function {{Z|Z15175}}, so your composition could be:
</div>
<syntaxhighlight lang="prolog">
join_with_separator( Z30000K1, Z30000K2, " " )
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
As you can see, there are multiple ways to accomplish this, so take your time and explore the existing functions available in the {{ll|Wikifunctions:Catalogue}}.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Let's try to create the second example, <code>join_strings(Z30000K1, join_strings(" ", Z30000K2))</code>.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
In order to create this:
</div>
# <span lang="en" dir="ltr" class="mw-content-ltr">Start adding an implementation by clicking on the "+" button in the "Implementations" table from your Function page.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Make sure that the option "composition" under "Implementation" is selected.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Click on the "›" icon or click the "Select Function" link to expand the function details.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Under "function" search for the name of the outermost function you want to use, which in this example is "join two strings". Then, select the wanted function from the dropdown list.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">You will see two new fields, one for each of the arguments needed for the selected function.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">For the first argument, we want to select the first input to our function:</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "first string", click on the "…" button and select "Argument reference".</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "key id" you can now select the first string of your function from the dropdown, which contains all available inputs.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">For the second argument, we want to use the result of another call to "join two strings":</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "second string", click on the "…" button and select "Function call".</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function", search and select the function you want to call, which is again "join two strings".</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">For this inner function call, configure the "first string" by simply typing a white space in the text field, and configure the "second string" as you did for step 6: change it using the "…" button to "Argument reference", and then select the second argument in the dropdown.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
Your composition is now complete!
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
You can expand and collapse the details using the chevron buttons to see how it looks. If you already have Tests as recommended in the [[#Practice Test-Driven Development|TDD]] section above, click on the circular arrow in the Tests panel and see if your implementation passes the tests. Once your composition passes the tests, go ahead and publish it.
</div>
[[File:Composition implementation expanded.png|frame|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">A Wikifunctions composition implementation in its expanded view</span>|<span lang="en" dir="ltr" class="mw-content-ltr">A Wikifunctions composition implementation in its expanded view</span>]]
[[File:Composition implementation collapsed.png|frame|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">A Wikifunctions composition implementation in its collapsed view</span>|<span lang="en" dir="ltr" class="mw-content-ltr">A Wikifunctions composition implementation in its collapsed view</span>]]
<div lang="en" dir="ltr" class="mw-content-ltr">
== Wikifunctions error handling ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
As a Wikifunctions function creator, you might want to warn the user calling your function when something goes wrong in the code, or when their inputs do not fit a certain criteria. For example, if your Function expects a string input to contain a name, you might want to check that the name is not empty and, if it is, show an error message that the person using your Function can understand.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For this purpose, you can use <code>Wikifunctions.Error()</code> from your code implementations or the function {{Z|Z851}} from your compositions.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
In this section you will learn:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">How to throw errors from both code and composition implementations,</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">how to write tests for error cases, and</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">how to catch and handle errors thrown by functions that you are using in your compositions.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Throwing errors from code implementations ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
When writing code, both from JavaScript and Python, you can use <code>Wikifunctions.Error()</code> to end the execution with a wanted error.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
<code>Wikifunctions.Error()</code> has two parameters:
</div>
# <span lang="en" dir="ltr" class="mw-content-ltr">Error type: a string containing the ZID of the error type you want to return.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Error arguments: a list of string arguments to build the error.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
Let's go one by one:
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Error type ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
An error type is an object that describes a kind of error that could happen in the system. There are a number of built-in error types but you can also build other error types that are more suited to your use case. When using errors, the best idea is to browse through the available error types, which can be explored in [[Special:ListObjectsByType/Z50|this list]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If there are no errors that fit your case, create a new one by going to the create page, and selecting "Error type" in the type selector. Then, set the necessary fields:
</div>
[[File:Error type.png|thumb|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Error type creation in Wikifunctions</span>|<span lang="en" dir="ltr" class="mw-content-ltr">To create new Error type (Z50), edit the label and add the necessary keys.</span>]]
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Label''' – This is the main title of the error, which should contain a short but descriptive message. Set the error label on the right-side box titled "About".</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Keys''' – Keys contain additional information about what caused the error. For example, if an input had the wrong format, you might want to inform the user of what was the input content when raising the error. To use them in your implementations, keys should be strings. To create a key, click on the "[+]" icon below "keys", select "String" under "value type", and add a label that describes it appropriately, for example "current input". Once you have all the necessary keys, you can Publish your error type and keep the ID of the newly created object.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Error arguments ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Error arguments correspond to the keys of the Error type, and they should provide additional information to understand the error. Error arguments should always be Strings.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Using Wikifunctions.Error() ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Say that you want an error to be thrown when either your first or your second input are empty. You have already created the error type, and the assigned ZID was <code>Z30005</code>. Your error type has two string keys:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">Input key: contains the key of the failing input</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Input value: contains the current value of the failing input</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
To raise an error in your JavaScript implementation you should do something like this:
</div>
<syntaxhighlight lang="javascript">
function Z30000( Z30000K1, Z30000K2 ) {
if ( trim( Z30000K1 ) === '' ) {
// If the first input is empty, raise error Z30005
// with two string args: [ first input key, first input value ]
Wikifunctions.Error( 'Z30005', [ "Z30000K1", Z30000K1 ] )
}
if ( trim( Z30000K2 ) === '' ) {
// If the second input is empty, raise error Z30005
// with two string args: [ second input key, second input value ]
Wikifunctions.Error( 'Z30005', [ "Z30000K2", Z30000K2 ] )
}
return Z30000K1 + " " + Z30000K2;
}
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
To raise an error in your Python implementation you should do something like this:
</div>
<syntaxhighlight lang="python3">
def Z30000(Z30000K1, Z30000K2):
if Z30000K1.strip() == "":
# If the first input is empty, raise error Z30005
# with two string args: [ first input key, first input value ]
Wikifunctions.Error("Z30005", ["Z30000K1", Z30000K1])
if Z30000K2.strip() == "":
# If the second input is empty, raise error Z30005
# with two string args: [ first input key, first input value ]
Wikifunctions.Error("Z30005", ["Z30000K2", Z30000K2])
return Z30000K1 + " " + Z30000K2
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
Remember that calling <code>Wikifunctions.Error()</code> ends the execution!
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Throwing errors from compositions ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If you are creating a composition implementation, you can throw an error by calling the special function {{Z|Z851}}.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Throw Error function (Z851) ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The {{Z|Z851}} function is similar to the <code>Wikifunctions.Error()</code> method and takes two arguments:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Error type''' – A reference to the Error type you want to raise</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Error parameters''' – A list with the arguments to create your Error, which should also be Strings.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Using Throw Error ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Say you want to modify your composition so that it first checks that the arguments are not empty, and raises an error when it finds an empty one. Then, if none of them are empty, it runs the original composition, which is:
</div>
<syntaxhighlight lang="prolog">
join_with_separator( Z30000K1, Z30000K2, " " )
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
To do this, you need to create conditional paths, for which you can use the {{Z|Z802}} function. Think of it like this:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">If the first argument is empty, throw an error for the first argument</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Else, proceed to check the second argument</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">If the second argument is empty, throw an error for the second argument</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Else, proceed with the success path and return the joint strings with the space separator</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
Or in functional pseudo code:
</div>
<syntaxhighlight lang="prolog">
if (
is_empty_string( Z30000K1 ),
throw_error( Z30005, [ "Z30000K1", Z30000K1 ] ),
if(
is_empty_string( Z30000K2 ),
throw_error( Z30005, [ "Z30000K2", Z30000K2 ] ),
join_with_separator( Z30000K1, Z30000K2, " " )
)
)
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
Let's create this step by step:
</div>
# <span lang="en" dir="ltr" class="mw-content-ltr">Start adding an implementation by clicking on the "+” button in the "Implementations" table from your Function page.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Make sure that the option "composition" under "Implementation" is selected.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Click on the "›” icon or click the "Select Function" link to expand the function details.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Under "function" search and select the outermost function you want to use, which in this case is "if".</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Check the validity of the first argument:</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "condition", click on the "…" button and select "function call"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function", search and select the function "is empty string"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "input", click on the "…" button and select "argument reference"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "key id", select the first input (e.g. "first string")</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">You can now collapse the "condition" function call if you want, by clicking on the down-chevron next to "condition". You should see something like "f(x) is empty string( → first string )"</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Throw error if the condition is true:</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "then", click on the "…" button and select "function call"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function", search and select the function "Throw Error"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "error type", search and select your error type (you can directly input the error ID if you know it, e.g. Z30005)</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "error parameters", add two items by clicking on the "+" button</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">For "Item 1" (offending argument key), set its type to "String" and write the argument identifier (e.g. "first input", or "Z30000K1")</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">For "Item 2" (offending argument value), click on the "…" next to "Item 2" and select "argument reference"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "key id", select the first input (e.g. "first string")</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">You can now collapse the "then" function call if you want, by clicking on the down-chevron next to "then". You should see something like "f(x) Throw Error( Input was the wrong format, Typed list( Object, "first input", → first string ) )"</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Continue to check the second argument if the first was good:</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "else", click on the "…" button and select "function call"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function", search and select the function "if"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Set up "condition" to check the validity of the second argument by following the same process as described in step 5.</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Set up "then" to throw an error for the second argument by following the same process as described in step 6.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Finally, set up the success path:</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to the nested "else", click on the "…" button and select "function call"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function", search and select the successful function, which in this case can be "join strings with separator"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "first string", click on the "…" button and set it to "argument reference", then select "first string"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "second string", click on the "…" button and set it to "argument reference", then select "second string"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "separator" add a space into the text field</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
The resulting function call should look like this:
</div>
[[File:Throw error expanded.png|frame|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Wikifunctions composition using Throw Error function</span>|<span lang="en" dir="ltr" class="mw-content-ltr">Wikifunctions composition using Throw Error function</span>]]
[[File:Throw error collapsed.png|frame|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Wikifunctions composition using Throw Error function, in its collapsed view</span>|<span lang="en" dir="ltr" class="mw-content-ltr">Wikifunctions composition using Throw Error function, in its collapsed view</span>]]
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Handling errors in compositions ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
While it is useful to allow functions to raise expected errors, it is crucial to be able to handle errors in your compositions in order to safely use these functions.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Say you want to create a new function "full name of a person" – we will refer to it with the ZID <code>Z30010</code>. This function should return the full name of a person given a first and last names, but if any of the two fields are empty, it should return the text "Unknown" instead.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
You could create a composition using our example function "Join two strings with a space" or <code>Z30000</code> to generate the name. If any of the inputs are empty, you know that <code>Z30000</code> will throw an error of type <code>Z30005</code>. Using the function {{Z|Z850}} as a wrapper, you can attempt the join operation and intercept a possible error to simply return "Unknown" whenever it occurs.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Try-Catch function (Z850) ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The {{Z|Z850}} function is built-in with ZID <code>Z850</code> and takes three arguments:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Function call''' – The initial function call to run. If nothing goes wrong, the response will be the result of this function call.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Error type''' – An error type to catch in case it is thrown during the execution of the first function call.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Error handler''' – A function call that will be run in case the error specified above is caught during the execution of the initial function call. If that happens, the result of the error handler will be the value returned.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Using Try-Catch ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Once we have all the functions for our composition, we can craft it like this:
</div>
<syntaxhighlight lang="prolog">
try_catch(
join_with_space( Z30010K1, Z30010K2 ),
Z30005,
echo( "Unknown" )
)
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
This means that:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">The "Join two strings with a space" function will be tried with the two inputs and, if everything goes well, the output of this function will be returned</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">If any of the inputs are blank, "Join two strings with a space" with raise an error of type <code>Z30005</code></span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Our {{Z|Z850}} will then detect this error and run the {{Z|Z801}} function to return "Unknown"</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
Let's create this step by step:
</div>
# <span lang="en" dir="ltr" class="mw-content-ltr">Start adding an implementation by clicking on the "+" button in the "Implementations" table from your Function page.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Make sure that the option "composition" under "Implementation" is selected.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Click on the "›” icon or click the "Select Function" link to expand the function details.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Under "function" search and select the outermost function you want to use, which in this case is "Try-Catch".</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Set the main function call:</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under the field where the "Try-Catch" function is selected, next to the "function call" key, click on the "…" button and select "function call"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function" search and select the function "join two strings with space"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "first string", click on the "…" button and select "argument reference", then select the "first name" argument from the dropdown.</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "second string", click on the "…" button and select "argument reference", then select the "second name" argument from the dropdown.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Select the error to catch:</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "error type", search and select "bad string input" – you can search directly by its ZID <code>Z30005</code></span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Set the error handler function call:</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "error handler", click on the "…" button and select "function call"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function", search and select the function "echo"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "input" and "type", search and select the type "String"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Now, under "input", type "Unknown" in the text field</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
The resulting function should look like this:
</div>
[[File:Try catch expanded.png|frame|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Wikifunctions composition using Try-catch function, in expanded mode</span>|<span lang="en" dir="ltr" class="mw-content-ltr">Wikifunctions composition using Try-catch function, in expanded mode</span>]]
[[File:Try catch collapsed.png|frame|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Wikifunctions composition using Try-catch function, in collapsed mode</span>|<span lang="en" dir="ltr" class="mw-content-ltr">Wikifunctions composition using Try-catch function, in collapsed mode</span>]]
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Testing your failure use cases ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
As we introduced in the above section about [[#Practice Test-Driven Development|practicing TDD]], it's important to test not only the most common paths, but also the possible edge cases. It is equally important to test failure behavior. In this section we will give you the tools necessary to test that your function fails with a given set of inputs, and that the error thrown is the expected one.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
To do that, you will need other two system functions:
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Is error type (Z852) ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The {{Z|Z852}} function is built-in with ZID <code>Z852</code> and takes two arguments:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Error''' – An {{Z|Z5}} object, which can be thrown by a failing call. An error instance has a type and a value.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Error type''' – A reference to an {{Z|Z50}} which will be compared to the type of the Error passed as a first argument. If that's the case, the function will return true.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Get error thrown by function call (Z853) ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The {{Z|Z853}} function is built-in with ZID <code>Z853</code> and takes one argument:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Function call''' – A function call which can either return a successful value of any type, or throw an error.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
This function returns a {{Z|Z882}} with a {{Z|Z40}} in first place and an {{Z|Z1}} in the second:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">If the Function call runs successfully and hence does not throw any error, the returned pair will contain False in the first place, and void in the second.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">If the Function call throws an error, the returned pair will contain True in the first place, and the caught error in the second.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
To use this function in your compositions, you might need to use the additional functions:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z821}}, and</span>
* {{Z|Z822}}
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Testing errors ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Say our target function, "Join two strings with a space" or <code>Z30000</code>, throws an error of type <code>Z30005</code> and we want to test this behavior. To do that we need to:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">Throw a failing function call</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Get the error using the function {{Z|Z853}}</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Check that the error is the right type with {{Z|Z852}}</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
Tests have two fields:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Call''' – A function call that will produce an output with the inputs you want to test. This call will return a value.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Result validation''' – A function call that will validate that the value returned by the call above is the expected one. The first argument of this function call will be automatically assigned to take the return value of the first call.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
For step-by-step instructions on how to create tests, see {{ll|Wikifunctions:Introduction#Create_tests}}.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
In our example, we can structure it like this — but this is not the only way!
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The call, which will return an {{Z|Z5}} object:
</div>
<syntaxhighlight lang="prolog">
error = get_second_element_of_typed_list(
get_error_thrown_by(
join_strings_by_whitespace( "", "not empty" )
)
)
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
And the result validation, which will take the {{Z|Z5}} object as its first argument:
</div>
<syntaxhighlight lang="prolog">
is_error_type( error, Z30005 )
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
Let's do this step by step:
</div>
# <span lang="en" dir="ltr" class="mw-content-ltr">Start adding a test by clicking on the "+" button in the "Tests" table from your Function page. The "call" and "result validation" fields already have some functions pre-set, but to test the errors we will need to change them.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">First, let's set the call:</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "call", click the "›" chevron button to expand the function call.</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function", edit the field and search and select the function "Get second element of a typed pair"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Once selected, next to "Typed pair", click on the "…" button and select "function call"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function", search and select the function "Get error thrown by function call"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "function call", click on the "…" button and select "function call"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function", search and select the function "Join two strings with a space" (or by ZID <code>Z30000</code>)</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Now set the inputs so that they cause a failure: at least one of them should be empty.</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">You can now collapse your "call" by clicking again on the down-chevron button if you want!</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Next, let's set the result validation:</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "result validation", click the "›" chevron button to expand the function call.</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function", edit the field and search and select the function "Is error type"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Now you will only be asked to configure the second argument. Under "error type", search and select your <code>Z30005</code> error type.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">And you are done! You can now click the circular arrow in the "Implementations" box and you should see green checks.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
If everything went right, you can now save your test. It should look like this:
</div>
[[File:Get error expanded.png|frame|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Testing a failure using Get error and Is error type functions, in expanded mode</span>|<span lang="en" dir="ltr" class="mw-content-ltr">Testing a failure using Get error and Is error type functions, in expanded mode</span>]]
[[File:Get error collapsed.png|frame|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Testing a failure using Get error and Is error type functions, in collapsed mode</span>|<span lang="en" dir="ltr" class="mw-content-ltr">Testing a failure using Get error and Is error type functions, in collapsed mode</span>]]
<div lang="en" dir="ltr" class="mw-content-ltr">
== Debugging your implementations ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Sometimes things can go wrong. A function might behave differently than expected or a value might not look quite right. Sometimes implementations are really complex and, because they are run in a sandboxed environment, it can seem really difficult to debug. To help understand what's going on inside a function call, Wikifunctions includes a small set of debugging tools.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
These tools don't change the result of a function, but will add extra information to the returned metadata, which you can observe after running the function. You can use <code>Wikifunctions.Debug()</code> from your code implementations or the function {{Z|Z854}} from your compositions.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
In this section you will learn:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">How to add debug messages from both code and composition implementations,</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">how to inspect the metadata manually or via the UI to inspect these logs.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Debugging your code implementations ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
When writing code, both from JavaScript and Python3, you can use <code>Wikifunctions.Debug()</code> to add a message to your debugging log and continue the execution.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
<code>Wikifunctions.Debug()</code> has one parameter, which is generally expected to be a string. However, any other object passed as parameter will get directly converted into a string.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If we want to add debug logs to our code implementations for our "Join two strings with a space" example function, we can do, in JavaScript:
</div>
<syntaxhighlight lang="JavaScript">
function Z30000( Z30000K1, Z30000K2 ) {
if ( trim( Z30000K1 ) === '' ) {
Wikifunctions.Debug( `first input is empty "${ Z30000K1 }"` );
Wikifunctions.Error( 'Z30005', [ "Z30000K1", Z30000K1 ] )
}
if ( trim( Z30000K2 ) === '' ) {
Wikifunctions.Debug( `second input is empty "${ Z30000K2 }"` );
Wikifunctions.Error( 'Z30005', [ "Z30000K2", Z30000K2 ] )
}
Wikifunctions.Debug( "both inputs are fine" );
return Z30000K1 + " " + Z30000K2;
}
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
And the same in your Python3 implementation will be:
</div>
<syntaxhighlight lang="python3">
def Z30000(Z30000K1, Z30000K2):
if Z30000K1.strip() == "":
Wikifunctions.Debug( 'first input is empty "'+Z30000K1+'"' )
Wikifunctions.Error("Z30005", ["Z30000K1", Z30000K1])
if Z30000K2.strip() == "":
Wikifunctions.Debug( 'second input is empty "'+Z30000K2+'"' )
Wikifunctions.Error("Z30005", ["Z30000K2", Z30000K2])
Wikifunctions.Debug( 'both inputs are fine' )
return Z30000K1 + " " + Z30000K2
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
This way, no matter what happens, we will be adding one message to your debugging logs:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">If the function call fails when checking on the first or second input, the result of the execution will be a failure, but it will contain one informative log about what branch caused the failure.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">If the function call succeeds—because both inputs are valid—the function call will return the joined string, but the returned metadata will also contain a debug log.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Debugging your compositions ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
To support debugging compositions, Wikifunctions provides the built-in function {{Z|Z854}}. This function allows you to attach debug messages to the execution of any function call that generates the final output. The debug logs collected during the evaluation are returned as part of the execution metadata, under the <code>executorDebugLogs</code> key.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Add debug log to function call (Z854) ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The {{Z|Z854}} function is built-in with ZID <code>Z854</code> and takes two arguments:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Function call''' – Any composition you want to execute.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Debug log''' – A string message that will be recorded if the given function call is evaluated.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
When the wrapped function call runs, the provided message is added to the execution logs. If that function call is not executed, or its execution is not part of the final output, its debug log will not appear in the final result metadata.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
You will benefit from this built-in if you want to observe:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">Which branch of a conditional was executed, or</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">the order of evaluation in a composition.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Using Add debug log to function call ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Say that you want to add debug logs to our example function "Join two strings with a space" or <code>Z30000</code>, so that different messages are added to the different possible outcomes. You could use our debugging builtin like this:
</div>
<syntaxhighlight lang="prolog">
if (
is_empty_string( Z30000K1 ),
add_debug_log( throw_error( Z30005, ... ), 'failed on first input' )
if(
is_empty_string( Z30000K2 ),
add_debug_log( throw_error( Z30005, ... ), 'failed on second input' ),
add_debug_log(
join_with_separator( Z30000K1, Z30000K2, " " ),
'both inputs are ok!'
)
)
)
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
This way,
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">when called with an empty first input, the function will return a failed response, and the metadata will contain an <code>executorDebugLogs</code> entry with the "failed on first input" log.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">When called with an empty second input, the call will also fail, but the logged message will be "failed on second input"</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">When called with valid inputs, the function will return a successful response, and additionally the metadata will contain "both inputs are ok" in its <code>executorDebugLogs</code> key.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
This is the way this composition would look:
</div>
[[File:Add debug log expanded.png|frame|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Composition implementation using Add debug logs to log all possible execution paths</span>|<span lang="en" dir="ltr" class="mw-content-ltr">Composition implementation using Add debug logs to log all possible execution paths</span>]]
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Accessing execution debug logs ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Whether your execution logs are added via <code>Wikifunctions.Debug()</code> or via the {{Z|Z854}} built-in function, they are returned as part of the response metadata. To see the logs, once you run your function, click on the "Details" button that appears at the bottom of the "Result" section.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The error and debug information will appear at the top of the "Details" dialog.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
This is what you would see when running the composition from our previous example with valid and invalid inputs:
</div>
{| class="wikitable"
| [[File:Execution logs success.png|frameless|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Function metadata dialog for a successful execution with debug logs</span>]]
| [[File:Execution logs failure.png|frameless|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Function metadata dialog for a failed execution with debug logs</span>]]
|-
| <span lang="en" dir="ltr" class="mw-content-ltr">Function metadata dialog for a successful execution: shows no errors, but displays the successful execution log: ''"both inputs are ok!"''</span>
| <span lang="en" dir="ltr" class="mw-content-ltr">Function metadata dialog for a failed execution: shows the error information, and the additional execution log for the first failure branch: ''"failed on first input"''</span>
|}
[[Category:How to create implementations| {{#translation:}}]]
5m7sx8amy8ew0ekgvwg8oti7qocjsmr
Wikifunctions:How to create implementations/zh-hant
4
60330
296949
276464
2026-08-06T18:02:42Z
FuzzyBot
207
Updating to match new version of source page
296949
wikitext
text/x-wiki
<languages/>
<div lang="en" dir="ltr" class="mw-content-ltr">
This page provides a more detailed guide to '''creating implementations''', beyond the overview at {{ll|Wikifunctions:Introduction}}.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Types of Implementations ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
In Wikifunctions, an '''implementation''' can take one of two main forms: '''code''' or '''composition'''. A code implementation directly expresses the function’s logic in any of the available programming languages (currently, Python3 or JavaScript). It’s most useful when the function’s behavior can’t easily be built from existing Wikifunctions, or when precise control over data processing is needed.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
A composition implementation, on the other hand, defines the function entirely by combining other existing functions, without writing code. Compositions are easier to understand, reuse, and translate into other languages automatically, but they depend on suitable building blocks already being available and often are less performant. In general, start by checking whether your goal can be achieved through composition; if it can’t, or if performance or fine-grained logic matters, choose a code implementation instead.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
There's a third type of implementation: '''built-ins'''. These are run by system-built code, and are not editable. Most likely all pre-defined functions will have a built-in implementation. In such cases, when opening the implementation page, you will see a message stating ''"{{int|wikilambda-implementation-selector-none}}"''
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Practice Test-Driven Development ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
'''Test-Driven Development''', or '''TDD''', is a way of creating software where you write tests before you write the actual code. Tests are just a way of understanding what your function is supposed to do by listing examples and how they should work.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
In Wikifunctions, writing tests first offers significant benefits. If you are working on an implementation, you can run your code against the existing tests to check that it behaves as expected. This makes it easier to catch errors early before even publishing your implementation. Tests are also a powerful way to describe the function you need. By writing tests, '''you clearly communicate the expected behavior''', and the community can step in and help with the implementation, or create alternative implementations.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Imagine you want to implement a Function that combines two strings with a space in between. A basic test for this might look like:
</div>
<syntaxhighlight lang="prolog">
join_with_space( "Hello", "world" ) => "Hello world"
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
Once you have defined the basic behavior, it's important to '''think about edge cases'''—situations where the inputs are such that you might need some special behavior.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For example, what if your first string ends in a space, or your second string starts with a space? Should the function keep all existing spaces and add another one, or should it return a neatly spaced result with just a single space between the words?
Depending on your requirements, you should build a test for such a case. For example, a test for this edge case could be either one of these — but not both!:
</div>
<syntaxhighlight lang="prolog">
join_with_space( "Hello ", " world") => "Hello world"
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
or ...
</div>
<syntaxhighlight lang="prolog">
join_with_space( "Hello ", " world") => "Hello world"
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
Make sure that all possible special cases are covered by your tests, and once you have them, make sure that they are all connected to the Function by selecting them and clicking "Connect".
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Code implementations ==
</div>
[[File:Code implementation.png|thumb|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Wikifunctions code editor initialized with a function template</span>|<span lang="en" dir="ltr" class="mw-content-ltr">When adding a new code implementation, the function template is initialized with the function and argument names</span>]]
<div lang="en" dir="ltr" class="mw-content-ltr">
When creating an implementation using code, the Wikifunctions UI will set up a code editor with the selected language activated for syntax highlighting and validation. When the function to implement and the programming language are selected, this editor will be set with the correct function template: '''do not remove or edit this'''! Keep your code inside this function signature: if you need auxiliary functions, you can simply declare them inside your top-level function declaration.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Using input types in your code ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Wikifunctions types {{Z|Z6}} and {{Z|Z40}} can be used as if they were native types in both JavaScript and Python3. For example, a String input can be concatenated or a Boolean be directly used in a logical expression. To use other types in your code implementations, you will have to look deeper into the type, figure out if it has a conversion to a native equivalent, and treat it accordingly.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For example, let's say we want to write some Python code that handles an input of type {{Z|Z20420}}. In the page for this type, let's look at its "type converters to code" and search for a Python one. The converter {{Z|Z20424}} will be applied to our date input before our code, so looking at "native type" we know that our input will be a Python ''dict'' and looking at the implementation we can see the keys we can expect:
</div>
<syntaxhighlight lang="python3">
return {
'K1': year,
'K2': month,
'K3': day
}
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
When a type doesn't have a converter, you'll have to access its parts directly using its keys. For example, let's assume that your function <code>Z30000</code> has one input <code>Z30000K1</code> of type {{Z|Z11}}. This type has two keys: <code>Z11K1</code> for the language (itself an object of type {{Z|Z60}}), and <code>Z11K2</code> for the string value. Similarly, the language object has a key <code>Z60K1</code> for the language code. So, to get a string with the language code and the text, you can write:
</div>
<syntaxhighlight lang="javascript">
function Z30000( Z30000K1 ) {
// e.g. "en: some text"
return Z30000K1.Z11K1.Z60K1 + ": " + Z30000K1.Z11K2;
}
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
For a quick reference of the available type conversions visit [[Special:MyLanguage/Wikifunctions:Execution targets#Default type conversion|the default type conversion table]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Returning the right outputs ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Similarly to the way you treat inputs, outputs need to match the type specified in the function definition. Some can be treated as simply as native types, so any string output will be converted into a Wikifunctions {{Z|Z6}} object and any native boolean returned by your implementation will be converted into a Wikifunctions {{Z|Z40}} object.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Those types that have "type converters from code" will apply the appropriate function to the output, in order to build the required type. Following the example of {{Z|Z20420}}, the {{Z|Z20443}} will transform the output from your implementation–a dict with K1, K2 and K3 keys–into its correct ZObject representation.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For types that don't have converters from code, you can carefully build and return the output objects. For example, imagine that our function <code>Z30000</code> takes two string inputs: language code and text, and should return a {{Z|Z11}} object. You can do this in Python by using the <code>ZObject</code> constructor:
</div>
<syntaxhighlight lang="python3">
def Z30000(Z30000K1, Z30000K2):
lang_object = ZObject(
{"Z1K1": "Z9", "Z9K1": "Z60"},
Z60K1 = Z30000K1
)
return ZObject(
{"Z1K1": "Z9", "Z9K1": "Z11"},
Z11K1 = lang_object,
Z11K2 = Z30000K2
)
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
Or in JavaScript:
</div>
<syntaxhighlight lang="javascript">
function Z30000( Z30000K1, Z30000K2 ) {
const langObject = new ZObject(
new Map( [ [ "Z60K1", Z30000K1 ] ] ),
{ "Z1K1": "Z9", "Z9K1": "Z60" }
);
const monolingualKeys = new Map( [
[ "Z11K1", langObject ],
[ "Z11K2", Z30000K2 ]
] );
return new ZObject(
monolingualKeys,
{ "Z1K1": "Z9", "Z9K1": "Z11" }
);
}
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
You can learn more about the <code>ZObject</code> class and other useful constructors in {{ll|Wikifunctions:Execution_targets#Custom_and_non-built-in_type_conversion}}
</div>
{{phab|T392750}}<div lang="en" dir="ltr" class="mw-content-ltr">
As of 2026-05, trying to return a list of lists may fail, so you're not able to implement such functions in code.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Code in Python ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
In this section, we give a concrete example on how to create an implementation in the form of Code in Python. Say we want to create an implementation for a Function which combines two input strings by putting a space between them, returning the result of that. Let’s assume the ZID of that function is Z30000.
</div>
<div class="mw-translate-fuzzy">
實作是使用函式的ZID來定義的,函式的參數也是如此。因此,下列以包含兩個參數的函數Z11057為例,第一行應該是這樣的:
</div>
<syntaxhighlight lang="python3">
def Z30000(Z30000K1, Z30000K2):
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
As we described before, we know that the arguments (<code>Z30000K1</code> and <code>Z30000K2</code>) are Strings, so we can treat them as simply as we use native strings in Python. Also, the function should return a String. For our example, we simply return the two arguments concatenated with a space in between:
</div>
<syntaxhighlight lang="python3">
def Z30000(Z30000K1, Z30000K2):
return Z30000K1 + " " + Z30000K2
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
Since this is Python, do not forget to indent this line.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If you have followed our advice to [[#Practice Test-Driven Development|practice TDD]], you will already have a set of tests that you know should work. If that's the case, while building your implementation you can click on the circular arrow in the Tests panel, and see if your implementation passes all of them.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Remember that the runtime has no state. Don’t assume values for global or static variables. If you have further questions about what you can and cannot do in Python, ask on [[Wikifunctions:Python implementations]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Code in JavaScript ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
In this section, we give a concrete example on how to create an implementation in the form of Code in JavaScript. Say we want to create an implementation for a Function which combines two input strings by putting a space between them, returning the result of that. Let’s assume the ZID of that function is <code>Z30000</code>.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The implementation is defined using the ZID of the function. So are the arguments of the function. So in the case of the function <code>Z30000</code> with its two arguments, the function template should look like this:
</div>
<syntaxhighlight lang="javascript">
function Z30000( Z30000K1, Z30000K2 ) {
}
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
We know that the arguments (<code>Z30000K1</code> and <code>Z30000K2</code>) are Strings, so we can treat them as native strings in JavaScript. Also, the function should return a String. To complete our function, you can then add a line concatenating the input strings, like this:
</div>
<syntaxhighlight lang="javascript">
function Z30000( Z30000K1, Z30000K2 ) {
return Z30000K1 + " " + Z30000K2;
}
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
If you have tests as recommended in the [[#Practice Test-Driven Development|TDD]] section above, click on the circular arrow in the Tests panel and see if your implementation passes all of them.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Remember that the runtime has no state. Don’t assume values for global or static variables. If you have further questions about what you can and cannot do in JavaScript, ask on [[Wikifunctions:JavaScript implementations]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Compositions ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
In this section, we give a concrete example on how to create an implementation in the form of a composition. Say we want to create an implementation for a Function which combines two input strings by putting a space between them, returning the result of that. Let’s assume the ZID of that function is <code>Z30000</code>.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
It is usually a good idea to first think about how to combine existing functions in order to create the desired output. Sometimes this might be trivial, and you can just go ahead with composing functions, but in many cases it is worthwhile to note the desired composition down.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For example, for the given Function, we could use the existing Function {{Z|Z10000}}. That Function takes two strings and makes one string out of them. But we need to add a space in between. So we first concatenate a space to the end of the first string, and then concatenate the second string to the result of that first concatenation. So our composition could be noted down like this:
</div>
<syntaxhighlight lang="prolog">
join_strings( join_strings( Z30000K1, " " ), Z30000K2 )
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
There are multiple ways to write a composition: notice that the same thing could be accomplished with:
</div>
<syntaxhighlight lang="prolog">
join_strings( Z30000K1, join_strings( " ", Z30000K2 ) )
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
An alternative implementation could also use the existing Function {{Z|Z15175}}, so your composition could be:
</div>
<syntaxhighlight lang="prolog">
join_with_separator( Z30000K1, Z30000K2, " " )
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
As you can see, there are multiple ways to accomplish this, so take your time and explore the existing functions available in the {{ll|Wikifunctions:Catalogue}}.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Let's try to create the second example, <code>join_strings(Z30000K1, join_strings(" ", Z30000K2))</code>.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
In order to create this:
</div>
# <span lang="en" dir="ltr" class="mw-content-ltr">Start adding an implementation by clicking on the "+" button in the "Implementations" table from your Function page.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Make sure that the option "composition" under "Implementation" is selected.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Click on the "›" icon or click the "Select Function" link to expand the function details.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Under "function" search for the name of the outermost function you want to use, which in this example is "join two strings". Then, select the wanted function from the dropdown list.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">You will see two new fields, one for each of the arguments needed for the selected function.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">For the first argument, we want to select the first input to our function:</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "first string", click on the "…" button and select "Argument reference".</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "key id" you can now select the first string of your function from the dropdown, which contains all available inputs.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">For the second argument, we want to use the result of another call to "join two strings":</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "second string", click on the "…" button and select "Function call".</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function", search and select the function you want to call, which is again "join two strings".</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">For this inner function call, configure the "first string" by simply typing a white space in the text field, and configure the "second string" as you did for step 6: change it using the "…" button to "Argument reference", and then select the second argument in the dropdown.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
Your composition is now complete!
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
You can expand and collapse the details using the chevron buttons to see how it looks. If you already have Tests as recommended in the [[#Practice Test-Driven Development|TDD]] section above, click on the circular arrow in the Tests panel and see if your implementation passes the tests. Once your composition passes the tests, go ahead and publish it.
</div>
[[File:Composition implementation expanded.png|frame|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">A Wikifunctions composition implementation in its expanded view</span>|<span lang="en" dir="ltr" class="mw-content-ltr">A Wikifunctions composition implementation in its expanded view</span>]]
[[File:Composition implementation collapsed.png|frame|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">A Wikifunctions composition implementation in its collapsed view</span>|<span lang="en" dir="ltr" class="mw-content-ltr">A Wikifunctions composition implementation in its collapsed view</span>]]
<div lang="en" dir="ltr" class="mw-content-ltr">
== Wikifunctions error handling ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
As a Wikifunctions function creator, you might want to warn the user calling your function when something goes wrong in the code, or when their inputs do not fit a certain criteria. For example, if your Function expects a string input to contain a name, you might want to check that the name is not empty and, if it is, show an error message that the person using your Function can understand.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For this purpose, you can use <code>Wikifunctions.Error()</code> from your code implementations or the function {{Z|Z851}} from your compositions.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
In this section you will learn:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">How to throw errors from both code and composition implementations,</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">how to write tests for error cases, and</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">how to catch and handle errors thrown by functions that you are using in your compositions.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Throwing errors from code implementations ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
When writing code, both from JavaScript and Python, you can use <code>Wikifunctions.Error()</code> to end the execution with a wanted error.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
<code>Wikifunctions.Error()</code> has two parameters:
</div>
# <span lang="en" dir="ltr" class="mw-content-ltr">Error type: a string containing the ZID of the error type you want to return.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Error arguments: a list of string arguments to build the error.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
Let's go one by one:
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Error type ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
An error type is an object that describes a kind of error that could happen in the system. There are a number of built-in error types but you can also build other error types that are more suited to your use case. When using errors, the best idea is to browse through the available error types, which can be explored in [[Special:ListObjectsByType/Z50|this list]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If there are no errors that fit your case, create a new one by going to the create page, and selecting "Error type" in the type selector. Then, set the necessary fields:
</div>
[[File:Error type.png|thumb|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Error type creation in Wikifunctions</span>|<span lang="en" dir="ltr" class="mw-content-ltr">To create new Error type (Z50), edit the label and add the necessary keys.</span>]]
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Label''' – This is the main title of the error, which should contain a short but descriptive message. Set the error label on the right-side box titled "About".</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Keys''' – Keys contain additional information about what caused the error. For example, if an input had the wrong format, you might want to inform the user of what was the input content when raising the error. To use them in your implementations, keys should be strings. To create a key, click on the "[+]" icon below "keys", select "String" under "value type", and add a label that describes it appropriately, for example "current input". Once you have all the necessary keys, you can Publish your error type and keep the ID of the newly created object.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Error arguments ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Error arguments correspond to the keys of the Error type, and they should provide additional information to understand the error. Error arguments should always be Strings.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Using Wikifunctions.Error() ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Say that you want an error to be thrown when either your first or your second input are empty. You have already created the error type, and the assigned ZID was <code>Z30005</code>. Your error type has two string keys:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">Input key: contains the key of the failing input</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Input value: contains the current value of the failing input</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
To raise an error in your JavaScript implementation you should do something like this:
</div>
<syntaxhighlight lang="javascript">
function Z30000( Z30000K1, Z30000K2 ) {
if ( trim( Z30000K1 ) === '' ) {
// If the first input is empty, raise error Z30005
// with two string args: [ first input key, first input value ]
Wikifunctions.Error( 'Z30005', [ "Z30000K1", Z30000K1 ] )
}
if ( trim( Z30000K2 ) === '' ) {
// If the second input is empty, raise error Z30005
// with two string args: [ second input key, second input value ]
Wikifunctions.Error( 'Z30005', [ "Z30000K2", Z30000K2 ] )
}
return Z30000K1 + " " + Z30000K2;
}
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
To raise an error in your Python implementation you should do something like this:
</div>
<syntaxhighlight lang="python3">
def Z30000(Z30000K1, Z30000K2):
if Z30000K1.strip() == "":
# If the first input is empty, raise error Z30005
# with two string args: [ first input key, first input value ]
Wikifunctions.Error("Z30005", ["Z30000K1", Z30000K1])
if Z30000K2.strip() == "":
# If the second input is empty, raise error Z30005
# with two string args: [ first input key, first input value ]
Wikifunctions.Error("Z30005", ["Z30000K2", Z30000K2])
return Z30000K1 + " " + Z30000K2
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
Remember that calling <code>Wikifunctions.Error()</code> ends the execution!
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Throwing errors from compositions ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If you are creating a composition implementation, you can throw an error by calling the special function {{Z|Z851}}.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Throw Error function (Z851) ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The {{Z|Z851}} function is similar to the <code>Wikifunctions.Error()</code> method and takes two arguments:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Error type''' – A reference to the Error type you want to raise</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Error parameters''' – A list with the arguments to create your Error, which should also be Strings.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Using Throw Error ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Say you want to modify your composition so that it first checks that the arguments are not empty, and raises an error when it finds an empty one. Then, if none of them are empty, it runs the original composition, which is:
</div>
<syntaxhighlight lang="prolog">
join_with_separator( Z30000K1, Z30000K2, " " )
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
To do this, you need to create conditional paths, for which you can use the {{Z|Z802}} function. Think of it like this:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">If the first argument is empty, throw an error for the first argument</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Else, proceed to check the second argument</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">If the second argument is empty, throw an error for the second argument</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Else, proceed with the success path and return the joint strings with the space separator</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
Or in functional pseudo code:
</div>
<syntaxhighlight lang="prolog">
if (
is_empty_string( Z30000K1 ),
throw_error( Z30005, [ "Z30000K1", Z30000K1 ] ),
if(
is_empty_string( Z30000K2 ),
throw_error( Z30005, [ "Z30000K2", Z30000K2 ] ),
join_with_separator( Z30000K1, Z30000K2, " " )
)
)
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
Let's create this step by step:
</div>
# <span lang="en" dir="ltr" class="mw-content-ltr">Start adding an implementation by clicking on the "+” button in the "Implementations" table from your Function page.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Make sure that the option "composition" under "Implementation" is selected.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Click on the "›” icon or click the "Select Function" link to expand the function details.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Under "function" search and select the outermost function you want to use, which in this case is "if".</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Check the validity of the first argument:</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "condition", click on the "…" button and select "function call"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function", search and select the function "is empty string"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "input", click on the "…" button and select "argument reference"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "key id", select the first input (e.g. "first string")</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">You can now collapse the "condition" function call if you want, by clicking on the down-chevron next to "condition". You should see something like "f(x) is empty string( → first string )"</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Throw error if the condition is true:</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "then", click on the "…" button and select "function call"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function", search and select the function "Throw Error"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "error type", search and select your error type (you can directly input the error ID if you know it, e.g. Z30005)</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "error parameters", add two items by clicking on the "+" button</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">For "Item 1" (offending argument key), set its type to "String" and write the argument identifier (e.g. "first input", or "Z30000K1")</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">For "Item 2" (offending argument value), click on the "…" next to "Item 2" and select "argument reference"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "key id", select the first input (e.g. "first string")</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">You can now collapse the "then" function call if you want, by clicking on the down-chevron next to "then". You should see something like "f(x) Throw Error( Input was the wrong format, Typed list( Object, "first input", → first string ) )"</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Continue to check the second argument if the first was good:</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "else", click on the "…" button and select "function call"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function", search and select the function "if"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Set up "condition" to check the validity of the second argument by following the same process as described in step 5.</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Set up "then" to throw an error for the second argument by following the same process as described in step 6.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Finally, set up the success path:</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to the nested "else", click on the "…" button and select "function call"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function", search and select the successful function, which in this case can be "join strings with separator"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "first string", click on the "…" button and set it to "argument reference", then select "first string"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "second string", click on the "…" button and set it to "argument reference", then select "second string"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "separator" add a space into the text field</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
The resulting function call should look like this:
</div>
[[File:Throw error expanded.png|frame|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Wikifunctions composition using Throw Error function</span>|<span lang="en" dir="ltr" class="mw-content-ltr">Wikifunctions composition using Throw Error function</span>]]
[[File:Throw error collapsed.png|frame|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Wikifunctions composition using Throw Error function, in its collapsed view</span>|<span lang="en" dir="ltr" class="mw-content-ltr">Wikifunctions composition using Throw Error function, in its collapsed view</span>]]
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Handling errors in compositions ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
While it is useful to allow functions to raise expected errors, it is crucial to be able to handle errors in your compositions in order to safely use these functions.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Say you want to create a new function "full name of a person" – we will refer to it with the ZID <code>Z30010</code>. This function should return the full name of a person given a first and last names, but if any of the two fields are empty, it should return the text "Unknown" instead.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
You could create a composition using our example function "Join two strings with a space" or <code>Z30000</code> to generate the name. If any of the inputs are empty, you know that <code>Z30000</code> will throw an error of type <code>Z30005</code>. Using the function {{Z|Z850}} as a wrapper, you can attempt the join operation and intercept a possible error to simply return "Unknown" whenever it occurs.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Try-Catch function (Z850) ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The {{Z|Z850}} function is built-in with ZID <code>Z850</code> and takes three arguments:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Function call''' – The initial function call to run. If nothing goes wrong, the response will be the result of this function call.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Error type''' – An error type to catch in case it is thrown during the execution of the first function call.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Error handler''' – A function call that will be run in case the error specified above is caught during the execution of the initial function call. If that happens, the result of the error handler will be the value returned.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Using Try-Catch ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Once we have all the functions for our composition, we can craft it like this:
</div>
<syntaxhighlight lang="prolog">
try_catch(
join_with_space( Z30010K1, Z30010K2 ),
Z30005,
echo( "Unknown" )
)
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
This means that:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">The "Join two strings with a space" function will be tried with the two inputs and, if everything goes well, the output of this function will be returned</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">If any of the inputs are blank, "Join two strings with a space" with raise an error of type <code>Z30005</code></span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Our {{Z|Z850}} will then detect this error and run the {{Z|Z801}} function to return "Unknown"</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
Let's create this step by step:
</div>
# <span lang="en" dir="ltr" class="mw-content-ltr">Start adding an implementation by clicking on the "+" button in the "Implementations" table from your Function page.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Make sure that the option "composition" under "Implementation" is selected.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Click on the "›” icon or click the "Select Function" link to expand the function details.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Under "function" search and select the outermost function you want to use, which in this case is "Try-Catch".</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Set the main function call:</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under the field where the "Try-Catch" function is selected, next to the "function call" key, click on the "…" button and select "function call"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function" search and select the function "join two strings with space"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "first string", click on the "…" button and select "argument reference", then select the "first name" argument from the dropdown.</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "second string", click on the "…" button and select "argument reference", then select the "second name" argument from the dropdown.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Select the error to catch:</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "error type", search and select "bad string input" – you can search directly by its ZID <code>Z30005</code></span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Set the error handler function call:</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "error handler", click on the "…" button and select "function call"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function", search and select the function "echo"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "input" and "type", search and select the type "String"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Now, under "input", type "Unknown" in the text field</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
The resulting function should look like this:
</div>
[[File:Try catch expanded.png|frame|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Wikifunctions composition using Try-catch function, in expanded mode</span>|<span lang="en" dir="ltr" class="mw-content-ltr">Wikifunctions composition using Try-catch function, in expanded mode</span>]]
[[File:Try catch collapsed.png|frame|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Wikifunctions composition using Try-catch function, in collapsed mode</span>|<span lang="en" dir="ltr" class="mw-content-ltr">Wikifunctions composition using Try-catch function, in collapsed mode</span>]]
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Testing your failure use cases ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
As we introduced in the above section about [[#Practice Test-Driven Development|practicing TDD]], it's important to test not only the most common paths, but also the possible edge cases. It is equally important to test failure behavior. In this section we will give you the tools necessary to test that your function fails with a given set of inputs, and that the error thrown is the expected one.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
To do that, you will need other two system functions:
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Is error type (Z852) ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The {{Z|Z852}} function is built-in with ZID <code>Z852</code> and takes two arguments:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Error''' – An {{Z|Z5}} object, which can be thrown by a failing call. An error instance has a type and a value.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Error type''' – A reference to an {{Z|Z50}} which will be compared to the type of the Error passed as a first argument. If that's the case, the function will return true.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Get error thrown by function call (Z853) ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The {{Z|Z853}} function is built-in with ZID <code>Z853</code> and takes one argument:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Function call''' – A function call which can either return a successful value of any type, or throw an error.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
This function returns a {{Z|Z882}} with a {{Z|Z40}} in first place and an {{Z|Z1}} in the second:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">If the Function call runs successfully and hence does not throw any error, the returned pair will contain False in the first place, and void in the second.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">If the Function call throws an error, the returned pair will contain True in the first place, and the caught error in the second.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
To use this function in your compositions, you might need to use the additional functions:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z821}}, and</span>
* {{Z|Z822}}
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Testing errors ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Say our target function, "Join two strings with a space" or <code>Z30000</code>, throws an error of type <code>Z30005</code> and we want to test this behavior. To do that we need to:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">Throw a failing function call</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Get the error using the function {{Z|Z853}}</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Check that the error is the right type with {{Z|Z852}}</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
Tests have two fields:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Call''' – A function call that will produce an output with the inputs you want to test. This call will return a value.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Result validation''' – A function call that will validate that the value returned by the call above is the expected one. The first argument of this function call will be automatically assigned to take the return value of the first call.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
For step-by-step instructions on how to create tests, see {{ll|Wikifunctions:Introduction#Create_tests}}.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
In our example, we can structure it like this — but this is not the only way!
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The call, which will return an {{Z|Z5}} object:
</div>
<syntaxhighlight lang="prolog">
error = get_second_element_of_typed_list(
get_error_thrown_by(
join_strings_by_whitespace( "", "not empty" )
)
)
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
And the result validation, which will take the {{Z|Z5}} object as its first argument:
</div>
<syntaxhighlight lang="prolog">
is_error_type( error, Z30005 )
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
Let's do this step by step:
</div>
# <span lang="en" dir="ltr" class="mw-content-ltr">Start adding a test by clicking on the "+" button in the "Tests" table from your Function page. The "call" and "result validation" fields already have some functions pre-set, but to test the errors we will need to change them.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">First, let's set the call:</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "call", click the "›" chevron button to expand the function call.</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function", edit the field and search and select the function "Get second element of a typed pair"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Once selected, next to "Typed pair", click on the "…" button and select "function call"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function", search and select the function "Get error thrown by function call"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "function call", click on the "…" button and select "function call"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function", search and select the function "Join two strings with a space" (or by ZID <code>Z30000</code>)</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Now set the inputs so that they cause a failure: at least one of them should be empty.</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">You can now collapse your "call" by clicking again on the down-chevron button if you want!</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Next, let's set the result validation:</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "result validation", click the "›" chevron button to expand the function call.</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function", edit the field and search and select the function "Is error type"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Now you will only be asked to configure the second argument. Under "error type", search and select your <code>Z30005</code> error type.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">And you are done! You can now click the circular arrow in the "Implementations" box and you should see green checks.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
If everything went right, you can now save your test. It should look like this:
</div>
[[File:Get error expanded.png|frame|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Testing a failure using Get error and Is error type functions, in expanded mode</span>|<span lang="en" dir="ltr" class="mw-content-ltr">Testing a failure using Get error and Is error type functions, in expanded mode</span>]]
[[File:Get error collapsed.png|frame|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Testing a failure using Get error and Is error type functions, in collapsed mode</span>|<span lang="en" dir="ltr" class="mw-content-ltr">Testing a failure using Get error and Is error type functions, in collapsed mode</span>]]
<div lang="en" dir="ltr" class="mw-content-ltr">
== Debugging your implementations ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Sometimes things can go wrong. A function might behave differently than expected or a value might not look quite right. Sometimes implementations are really complex and, because they are run in a sandboxed environment, it can seem really difficult to debug. To help understand what's going on inside a function call, Wikifunctions includes a small set of debugging tools.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
These tools don't change the result of a function, but will add extra information to the returned metadata, which you can observe after running the function. You can use <code>Wikifunctions.Debug()</code> from your code implementations or the function {{Z|Z854}} from your compositions.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
In this section you will learn:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">How to add debug messages from both code and composition implementations,</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">how to inspect the metadata manually or via the UI to inspect these logs.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Debugging your code implementations ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
When writing code, both from JavaScript and Python3, you can use <code>Wikifunctions.Debug()</code> to add a message to your debugging log and continue the execution.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
<code>Wikifunctions.Debug()</code> has one parameter, which is generally expected to be a string. However, any other object passed as parameter will get directly converted into a string.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If we want to add debug logs to our code implementations for our "Join two strings with a space" example function, we can do, in JavaScript:
</div>
<syntaxhighlight lang="JavaScript">
function Z30000( Z30000K1, Z30000K2 ) {
if ( trim( Z30000K1 ) === '' ) {
Wikifunctions.Debug( `first input is empty "${ Z30000K1 }"` );
Wikifunctions.Error( 'Z30005', [ "Z30000K1", Z30000K1 ] )
}
if ( trim( Z30000K2 ) === '' ) {
Wikifunctions.Debug( `second input is empty "${ Z30000K2 }"` );
Wikifunctions.Error( 'Z30005', [ "Z30000K2", Z30000K2 ] )
}
Wikifunctions.Debug( "both inputs are fine" );
return Z30000K1 + " " + Z30000K2;
}
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
And the same in your Python3 implementation will be:
</div>
<syntaxhighlight lang="python3">
def Z30000(Z30000K1, Z30000K2):
if Z30000K1.strip() == "":
Wikifunctions.Debug( 'first input is empty "'+Z30000K1+'"' )
Wikifunctions.Error("Z30005", ["Z30000K1", Z30000K1])
if Z30000K2.strip() == "":
Wikifunctions.Debug( 'second input is empty "'+Z30000K2+'"' )
Wikifunctions.Error("Z30005", ["Z30000K2", Z30000K2])
Wikifunctions.Debug( 'both inputs are fine' )
return Z30000K1 + " " + Z30000K2
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
This way, no matter what happens, we will be adding one message to your debugging logs:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">If the function call fails when checking on the first or second input, the result of the execution will be a failure, but it will contain one informative log about what branch caused the failure.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">If the function call succeeds—because both inputs are valid—the function call will return the joined string, but the returned metadata will also contain a debug log.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Debugging your compositions ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
To support debugging compositions, Wikifunctions provides the built-in function {{Z|Z854}}. This function allows you to attach debug messages to the execution of any function call that generates the final output. The debug logs collected during the evaluation are returned as part of the execution metadata, under the <code>executorDebugLogs</code> key.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Add debug log to function call (Z854) ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The {{Z|Z854}} function is built-in with ZID <code>Z854</code> and takes two arguments:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Function call''' – Any composition you want to execute.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Debug log''' – A string message that will be recorded if the given function call is evaluated.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
When the wrapped function call runs, the provided message is added to the execution logs. If that function call is not executed, or its execution is not part of the final output, its debug log will not appear in the final result metadata.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
You will benefit from this built-in if you want to observe:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">Which branch of a conditional was executed, or</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">the order of evaluation in a composition.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Using Add debug log to function call ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Say that you want to add debug logs to our example function "Join two strings with a space" or <code>Z30000</code>, so that different messages are added to the different possible outcomes. You could use our debugging builtin like this:
</div>
<syntaxhighlight lang="prolog">
if (
is_empty_string( Z30000K1 ),
add_debug_log( throw_error( Z30005, ... ), 'failed on first input' )
if(
is_empty_string( Z30000K2 ),
add_debug_log( throw_error( Z30005, ... ), 'failed on second input' ),
add_debug_log(
join_with_separator( Z30000K1, Z30000K2, " " ),
'both inputs are ok!'
)
)
)
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
This way,
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">when called with an empty first input, the function will return a failed response, and the metadata will contain an <code>executorDebugLogs</code> entry with the "failed on first input" log.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">When called with an empty second input, the call will also fail, but the logged message will be "failed on second input"</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">When called with valid inputs, the function will return a successful response, and additionally the metadata will contain "both inputs are ok" in its <code>executorDebugLogs</code> key.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
This is the way this composition would look:
</div>
[[File:Add debug log expanded.png|frame|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Composition implementation using Add debug logs to log all possible execution paths</span>|<span lang="en" dir="ltr" class="mw-content-ltr">Composition implementation using Add debug logs to log all possible execution paths</span>]]
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Accessing execution debug logs ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Whether your execution logs are added via <code>Wikifunctions.Debug()</code> or via the {{Z|Z854}} built-in function, they are returned as part of the response metadata. To see the logs, once you run your function, click on the "Details" button that appears at the bottom of the "Result" section.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The error and debug information will appear at the top of the "Details" dialog.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
This is what you would see when running the composition from our previous example with valid and invalid inputs:
</div>
{| class="wikitable"
| [[File:Execution logs success.png|frameless|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Function metadata dialog for a successful execution with debug logs</span>]]
| [[File:Execution logs failure.png|frameless|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Function metadata dialog for a failed execution with debug logs</span>]]
|-
| <span lang="en" dir="ltr" class="mw-content-ltr">Function metadata dialog for a successful execution: shows no errors, but displays the successful execution log: ''"both inputs are ok!"''</span>
| <span lang="en" dir="ltr" class="mw-content-ltr">Function metadata dialog for a failed execution: shows the error information, and the additional execution log for the first failure branch: ''"failed on first input"''</span>
|}
[[Category:How to create implementations| {{#translation:}}]]
bhwallglfkokw4z2nr90s5qmrts2tny
Wikifunctions:Cardinal numbers/nan-latn-pehoeji
4
62279
296881
261562
2026-08-06T17:59:47Z
FuzzyBot
207
Updating to match new version of source page
296881
wikitext
text/x-wiki
<languages/>
{{Move|Wikifunctions:Catalogue/Natural language operations/Cardinal numbers|reason=This page is a list of functions, but is outside the catalogue}}
<div lang="en" dir="ltr" class="mw-content-ltr">
We are looking to have functions to create the names of numbers in many different languages. The [[Special:MyLanguage/Wikifunctions:Status updates/2024-05-15|newsletter from 15 May 2024]] made a Call for Functions!
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
On this page, we collect and list the existing functions and related objects in order to coordinate the work.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The functions take as input a [[Z13518|natural number]] and return a [[Z6|string]]. There can be more than one function per language.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Languages covered ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
There are {{FORMATNUM:27}} so far.
</div>
{| class="wikitable sortable"
|+ <span lang="en" dir="ltr" class="mw-content-ltr">functions by [[Special:ListObjectsByType/Z60|language]]</span>
|-
! <span lang="en" dir="ltr" class="mw-content-ltr">Language</span> !! <span lang="en" dir="ltr" class="mw-content-ltr">Function</span> !! <span lang="en" dir="ltr" class="mw-content-ltr">Tested</span> !! <span lang="en" dir="ltr" class="mw-content-ltr">Implemented</span> !! <span lang="en" dir="ltr" class="mw-content-ltr">Planning</span>
|-
| {{z|Z1002}} || {{z|Z13587}} || ✅ || ✅ || [[WF:human languages/Z1002#natural number|WF:HL]]
|-
| {{z|Z1004}} || {{z|Z16093}} || ✅ || ✅ || [[WF:human languages/Z1004#natural number|WF:HL]]
|-
| {{z|Z1011}} || {{z|Z16150}} || ✅ || ✅ || [[WF:human languages/Z1011#natural number|WF:HL]]
|-
| {{z|Z1014}} || {{z|Z16053}} || ✅ || ✅ || [[WF:human languages/Z1014#natural number|WF:HL]]
|-
| {{z|Z1025}} || {{z|Z15965}} || ✅ || ✅ || [[WF:human languages/Z1025#natural number|WF:HL]]
|-
| {{z|Z1045}} || {{z|Z16172}} || ✅ || ✅ || [[WF:human languages/Z1045#natural number|WF:HL]]
|-
| {{z|Z1062}} || {{z|Z32780}} || ✅ || ⛓️💥 || [[WF:human languages/Z1062#natural number|WF:HL]]
|-
| {{z|Z1146}} || {{z|Z16163}} || ✅ || ✅ || [[WF:human languages/Z1146#natural number|WF:HL]]
|-
| {{z|Z1272}} || {{z|Z16085}} || ✅ || ✅ || [[WF:human languages/Z1272#natural number|WF:HL]]
|-
| {{z|Z1332}} || {{z|Z15953}} || ✅ || ✅ || [[WF:human languages/Z1332#natural number|WF:HL]]
|-
| {{z|Z1430}} || {{z|Z15963}} || ✅ || ✅ || [[WF:human languages/Z1430#natural number|WF:HL]]
|-
| {{z|Z1531}} || {{z|Z15567}} || ✅ || ✅ || [[WF:human languages/Z1531#natural number|WF:HL]]
|-
| {{z|Z1534}} || {{z|Z16185}} || ✅ || ✅ || [[WF:human languages/Z1534#natural number|WF:HL]]
|-
| {{z|Z1592}} || {{z|Z16008}}<br>{{z|Z37749}} || ✅ || ✅ || [[WF:human languages/Z1592#natural number|WF:HL]]
|-
| {{z|Z1624}} || {{z|Z16184}} || ✅ || ✅ || [[WF:human languages/Z1624#natural number|WF:HL]]
|-
| {{z|Z1882}} || {{z|Z16313}} || ✅ || ❌ || [[WF:human languages/Z1882#natural number|WF:HL]]
|-
| {{z|Z1381}} || {{z|Z16398}} || ❌ || ❌ || [[WF:human languages/Z1381#natural number|WF:HL]]
|-
| {{z|Z1003}} || {{z|Z16431}} || ✅ || ✅ || [[WF:human languages/Z1003#natural number|WF:HL]]
|-
| {{z|Z1472}} || {{z|Z16443}} || ✅ || ✅ || [[WF:human languages/Z1003#natural number|WF:HL]]
|-
| {{z|Z1099}} || {{z|Z16409}} || ✅ || ✅ || [[WF:human languages/Z1099#natural number|WF:HL]]
|-
| {{z|Z1282}} || {{z|Z16608}} || ✅ || ✅ || [[WF:human languages/Z1381#natural number|WF:HL]]
|-
| {{Z|Z1820}} || {{Z|Z19334}} || ✅ || ✅ || [[WF:human languages/Z1820#natural number|WF:HL]]
|-
| {{z|Z1012}} || {{z|Z19484}} || ✅ || ✅ || [[WF:human languages/Z1012#natural number|WF:HL]]
|-
| {{Z|Z1787}} || {{Z|Z23003}} || ✅ || ✅ || [[WF:human languages/Z1787#natural number|WF:HL]]
|-
| {{Z|Z1158}} || {{Z|Z24618}} || ✅ || ✅ || [[WF:human languages/Z1158#natural number|WF:HL]]
|-
| {{Z|Z1078}} || {{Z|Z18546}} || ✅ || ✅ || [[WF:human languages/Z1078#natural number|WF:HL]]
|-
| {{Z|Z1762}} || {{Z|Z22455}} || ✅ || ✅ || [[WF:human languages/Z1762#natural number|WF:HL]]
|}
<span id="See_also"></span>
== Chham-oa̍t ==
* {{Z|Z16435}}
* {{Z+|Z16437}}
* {{Z|Z14526}}
g0r5541q7wimlooyyej6mejs9acrulm
Wikifunctions:Cardinal numbers/zh-hant
4
62303
296888
261568
2026-08-06T17:59:50Z
FuzzyBot
207
Updating to match new version of source page
296888
wikitext
text/x-wiki
<languages/>
{{Move|Wikifunctions:Catalogue/Natural language operations/Cardinal numbers|reason=This page is a list of functions, but is outside the catalogue}}
<div lang="en" dir="ltr" class="mw-content-ltr">
We are looking to have functions to create the names of numbers in many different languages. The [[Special:MyLanguage/Wikifunctions:Status updates/2024-05-15|newsletter from 15 May 2024]] made a Call for Functions!
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
On this page, we collect and list the existing functions and related objects in order to coordinate the work.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The functions take as input a [[Z13518|natural number]] and return a [[Z6|string]]. There can be more than one function per language.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Languages covered ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
There are {{FORMATNUM:27}} so far.
</div>
{| class="wikitable sortable"
|+ <span lang="en" dir="ltr" class="mw-content-ltr">functions by [[Special:ListObjectsByType/Z60|language]]</span>
|-
! <span lang="en" dir="ltr" class="mw-content-ltr">Language</span> !! <span lang="en" dir="ltr" class="mw-content-ltr">Function</span> !! <span lang="en" dir="ltr" class="mw-content-ltr">Tested</span> !! <span lang="en" dir="ltr" class="mw-content-ltr">Implemented</span> !! <span lang="en" dir="ltr" class="mw-content-ltr">Planning</span>
|-
| {{z|Z1002}} || {{z|Z13587}} || ✅ || ✅ || [[WF:human languages/Z1002#natural number|WF:HL]]
|-
| {{z|Z1004}} || {{z|Z16093}} || ✅ || ✅ || [[WF:human languages/Z1004#natural number|WF:HL]]
|-
| {{z|Z1011}} || {{z|Z16150}} || ✅ || ✅ || [[WF:human languages/Z1011#natural number|WF:HL]]
|-
| {{z|Z1014}} || {{z|Z16053}} || ✅ || ✅ || [[WF:human languages/Z1014#natural number|WF:HL]]
|-
| {{z|Z1025}} || {{z|Z15965}} || ✅ || ✅ || [[WF:human languages/Z1025#natural number|WF:HL]]
|-
| {{z|Z1045}} || {{z|Z16172}} || ✅ || ✅ || [[WF:human languages/Z1045#natural number|WF:HL]]
|-
| {{z|Z1062}} || {{z|Z32780}} || ✅ || ⛓️💥 || [[WF:human languages/Z1062#natural number|WF:HL]]
|-
| {{z|Z1146}} || {{z|Z16163}} || ✅ || ✅ || [[WF:human languages/Z1146#natural number|WF:HL]]
|-
| {{z|Z1272}} || {{z|Z16085}} || ✅ || ✅ || [[WF:human languages/Z1272#natural number|WF:HL]]
|-
| {{z|Z1332}} || {{z|Z15953}} || ✅ || ✅ || [[WF:human languages/Z1332#natural number|WF:HL]]
|-
| {{z|Z1430}} || {{z|Z15963}} || ✅ || ✅ || [[WF:human languages/Z1430#natural number|WF:HL]]
|-
| {{z|Z1531}} || {{z|Z15567}} || ✅ || ✅ || [[WF:human languages/Z1531#natural number|WF:HL]]
|-
| {{z|Z1534}} || {{z|Z16185}} || ✅ || ✅ || [[WF:human languages/Z1534#natural number|WF:HL]]
|-
| {{z|Z1592}} || {{z|Z16008}}<br>{{z|Z37749}} || ✅ || ✅ || [[WF:human languages/Z1592#natural number|WF:HL]]
|-
| {{z|Z1624}} || {{z|Z16184}} || ✅ || ✅ || [[WF:human languages/Z1624#natural number|WF:HL]]
|-
| {{z|Z1882}} || {{z|Z16313}} || ✅ || ❌ || [[WF:human languages/Z1882#natural number|WF:HL]]
|-
| {{z|Z1381}} || {{z|Z16398}} || ❌ || ❌ || [[WF:human languages/Z1381#natural number|WF:HL]]
|-
| {{z|Z1003}} || {{z|Z16431}} || ✅ || ✅ || [[WF:human languages/Z1003#natural number|WF:HL]]
|-
| {{z|Z1472}} || {{z|Z16443}} || ✅ || ✅ || [[WF:human languages/Z1003#natural number|WF:HL]]
|-
| {{z|Z1099}} || {{z|Z16409}} || ✅ || ✅ || [[WF:human languages/Z1099#natural number|WF:HL]]
|-
| {{z|Z1282}} || {{z|Z16608}} || ✅ || ✅ || [[WF:human languages/Z1381#natural number|WF:HL]]
|-
| {{Z|Z1820}} || {{Z|Z19334}} || ✅ || ✅ || [[WF:human languages/Z1820#natural number|WF:HL]]
|-
| {{z|Z1012}} || {{z|Z19484}} || ✅ || ✅ || [[WF:human languages/Z1012#natural number|WF:HL]]
|-
| {{Z|Z1787}} || {{Z|Z23003}} || ✅ || ✅ || [[WF:human languages/Z1787#natural number|WF:HL]]
|-
| {{Z|Z1158}} || {{Z|Z24618}} || ✅ || ✅ || [[WF:human languages/Z1158#natural number|WF:HL]]
|-
| {{Z|Z1078}} || {{Z|Z18546}} || ✅ || ✅ || [[WF:human languages/Z1078#natural number|WF:HL]]
|-
| {{Z|Z1762}} || {{Z|Z22455}} || ✅ || ✅ || [[WF:human languages/Z1762#natural number|WF:HL]]
|}
<span id="See_also"></span>
== 參閱 ==
* {{Z|Z16435}}
* {{Z+|Z16437}}
* {{Z|Z14526}}
ge6aqpehzqs0xuxu8yu3207dp3dj12g
Wikifunctions:Cardinal numbers/zh-hans
4
62328
296887
261567
2026-08-06T17:59:50Z
FuzzyBot
207
Updating to match new version of source page
296887
wikitext
text/x-wiki
<languages/>
{{Move|Wikifunctions:Catalogue/Natural language operations/Cardinal numbers|reason=This page is a list of functions, but is outside the catalogue}}
<div lang="en" dir="ltr" class="mw-content-ltr">
We are looking to have functions to create the names of numbers in many different languages. The [[Special:MyLanguage/Wikifunctions:Status updates/2024-05-15|newsletter from 15 May 2024]] made a Call for Functions!
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
On this page, we collect and list the existing functions and related objects in order to coordinate the work.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The functions take as input a [[Z13518|natural number]] and return a [[Z6|string]]. There can be more than one function per language.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Languages covered ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
There are {{FORMATNUM:27}} so far.
</div>
{| class="wikitable sortable"
|+ <span lang="en" dir="ltr" class="mw-content-ltr">functions by [[Special:ListObjectsByType/Z60|language]]</span>
|-
! <span lang="en" dir="ltr" class="mw-content-ltr">Language</span> !! <span lang="en" dir="ltr" class="mw-content-ltr">Function</span> !! <span lang="en" dir="ltr" class="mw-content-ltr">Tested</span> !! <span lang="en" dir="ltr" class="mw-content-ltr">Implemented</span> !! <span lang="en" dir="ltr" class="mw-content-ltr">Planning</span>
|-
| {{z|Z1002}} || {{z|Z13587}} || ✅ || ✅ || [[WF:human languages/Z1002#natural number|WF:HL]]
|-
| {{z|Z1004}} || {{z|Z16093}} || ✅ || ✅ || [[WF:human languages/Z1004#natural number|WF:HL]]
|-
| {{z|Z1011}} || {{z|Z16150}} || ✅ || ✅ || [[WF:human languages/Z1011#natural number|WF:HL]]
|-
| {{z|Z1014}} || {{z|Z16053}} || ✅ || ✅ || [[WF:human languages/Z1014#natural number|WF:HL]]
|-
| {{z|Z1025}} || {{z|Z15965}} || ✅ || ✅ || [[WF:human languages/Z1025#natural number|WF:HL]]
|-
| {{z|Z1045}} || {{z|Z16172}} || ✅ || ✅ || [[WF:human languages/Z1045#natural number|WF:HL]]
|-
| {{z|Z1062}} || {{z|Z32780}} || ✅ || ⛓️💥 || [[WF:human languages/Z1062#natural number|WF:HL]]
|-
| {{z|Z1146}} || {{z|Z16163}} || ✅ || ✅ || [[WF:human languages/Z1146#natural number|WF:HL]]
|-
| {{z|Z1272}} || {{z|Z16085}} || ✅ || ✅ || [[WF:human languages/Z1272#natural number|WF:HL]]
|-
| {{z|Z1332}} || {{z|Z15953}} || ✅ || ✅ || [[WF:human languages/Z1332#natural number|WF:HL]]
|-
| {{z|Z1430}} || {{z|Z15963}} || ✅ || ✅ || [[WF:human languages/Z1430#natural number|WF:HL]]
|-
| {{z|Z1531}} || {{z|Z15567}} || ✅ || ✅ || [[WF:human languages/Z1531#natural number|WF:HL]]
|-
| {{z|Z1534}} || {{z|Z16185}} || ✅ || ✅ || [[WF:human languages/Z1534#natural number|WF:HL]]
|-
| {{z|Z1592}} || {{z|Z16008}}<br>{{z|Z37749}} || ✅ || ✅ || [[WF:human languages/Z1592#natural number|WF:HL]]
|-
| {{z|Z1624}} || {{z|Z16184}} || ✅ || ✅ || [[WF:human languages/Z1624#natural number|WF:HL]]
|-
| {{z|Z1882}} || {{z|Z16313}} || ✅ || ❌ || [[WF:human languages/Z1882#natural number|WF:HL]]
|-
| {{z|Z1381}} || {{z|Z16398}} || ❌ || ❌ || [[WF:human languages/Z1381#natural number|WF:HL]]
|-
| {{z|Z1003}} || {{z|Z16431}} || ✅ || ✅ || [[WF:human languages/Z1003#natural number|WF:HL]]
|-
| {{z|Z1472}} || {{z|Z16443}} || ✅ || ✅ || [[WF:human languages/Z1003#natural number|WF:HL]]
|-
| {{z|Z1099}} || {{z|Z16409}} || ✅ || ✅ || [[WF:human languages/Z1099#natural number|WF:HL]]
|-
| {{z|Z1282}} || {{z|Z16608}} || ✅ || ✅ || [[WF:human languages/Z1381#natural number|WF:HL]]
|-
| {{Z|Z1820}} || {{Z|Z19334}} || ✅ || ✅ || [[WF:human languages/Z1820#natural number|WF:HL]]
|-
| {{z|Z1012}} || {{z|Z19484}} || ✅ || ✅ || [[WF:human languages/Z1012#natural number|WF:HL]]
|-
| {{Z|Z1787}} || {{Z|Z23003}} || ✅ || ✅ || [[WF:human languages/Z1787#natural number|WF:HL]]
|-
| {{Z|Z1158}} || {{Z|Z24618}} || ✅ || ✅ || [[WF:human languages/Z1158#natural number|WF:HL]]
|-
| {{Z|Z1078}} || {{Z|Z18546}} || ✅ || ✅ || [[WF:human languages/Z1078#natural number|WF:HL]]
|-
| {{Z|Z1762}} || {{Z|Z22455}} || ✅ || ✅ || [[WF:human languages/Z1762#natural number|WF:HL]]
|}
<span id="See_also"></span>
== 参阅 ==
* {{Z|Z16435}}
* {{Z+|Z16437}}
* {{Z|Z14526}}
ojyf2wusdzyrewksbe8oc29y8183m7j
Wikifunctions:Cardinal numbers/nan-hant
4
62366
296880
261561
2026-08-06T17:59:46Z
FuzzyBot
207
Updating to match new version of source page
296880
wikitext
text/x-wiki
<languages/>
{{Move|Wikifunctions:Catalogue/Natural language operations/Cardinal numbers|reason=This page is a list of functions, but is outside the catalogue}}
<div lang="en" dir="ltr" class="mw-content-ltr">
We are looking to have functions to create the names of numbers in many different languages. The [[Special:MyLanguage/Wikifunctions:Status updates/2024-05-15|newsletter from 15 May 2024]] made a Call for Functions!
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
On this page, we collect and list the existing functions and related objects in order to coordinate the work.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The functions take as input a [[Z13518|natural number]] and return a [[Z6|string]]. There can be more than one function per language.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Languages covered ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
There are {{FORMATNUM:27}} so far.
</div>
{| class="wikitable sortable"
|+ <span lang="en" dir="ltr" class="mw-content-ltr">functions by [[Special:ListObjectsByType/Z60|language]]</span>
|-
! <span lang="en" dir="ltr" class="mw-content-ltr">Language</span> !! <span lang="en" dir="ltr" class="mw-content-ltr">Function</span> !! <span lang="en" dir="ltr" class="mw-content-ltr">Tested</span> !! <span lang="en" dir="ltr" class="mw-content-ltr">Implemented</span> !! <span lang="en" dir="ltr" class="mw-content-ltr">Planning</span>
|-
| {{z|Z1002}} || {{z|Z13587}} || ✅ || ✅ || [[WF:human languages/Z1002#natural number|WF:HL]]
|-
| {{z|Z1004}} || {{z|Z16093}} || ✅ || ✅ || [[WF:human languages/Z1004#natural number|WF:HL]]
|-
| {{z|Z1011}} || {{z|Z16150}} || ✅ || ✅ || [[WF:human languages/Z1011#natural number|WF:HL]]
|-
| {{z|Z1014}} || {{z|Z16053}} || ✅ || ✅ || [[WF:human languages/Z1014#natural number|WF:HL]]
|-
| {{z|Z1025}} || {{z|Z15965}} || ✅ || ✅ || [[WF:human languages/Z1025#natural number|WF:HL]]
|-
| {{z|Z1045}} || {{z|Z16172}} || ✅ || ✅ || [[WF:human languages/Z1045#natural number|WF:HL]]
|-
| {{z|Z1062}} || {{z|Z32780}} || ✅ || ⛓️💥 || [[WF:human languages/Z1062#natural number|WF:HL]]
|-
| {{z|Z1146}} || {{z|Z16163}} || ✅ || ✅ || [[WF:human languages/Z1146#natural number|WF:HL]]
|-
| {{z|Z1272}} || {{z|Z16085}} || ✅ || ✅ || [[WF:human languages/Z1272#natural number|WF:HL]]
|-
| {{z|Z1332}} || {{z|Z15953}} || ✅ || ✅ || [[WF:human languages/Z1332#natural number|WF:HL]]
|-
| {{z|Z1430}} || {{z|Z15963}} || ✅ || ✅ || [[WF:human languages/Z1430#natural number|WF:HL]]
|-
| {{z|Z1531}} || {{z|Z15567}} || ✅ || ✅ || [[WF:human languages/Z1531#natural number|WF:HL]]
|-
| {{z|Z1534}} || {{z|Z16185}} || ✅ || ✅ || [[WF:human languages/Z1534#natural number|WF:HL]]
|-
| {{z|Z1592}} || {{z|Z16008}}<br>{{z|Z37749}} || ✅ || ✅ || [[WF:human languages/Z1592#natural number|WF:HL]]
|-
| {{z|Z1624}} || {{z|Z16184}} || ✅ || ✅ || [[WF:human languages/Z1624#natural number|WF:HL]]
|-
| {{z|Z1882}} || {{z|Z16313}} || ✅ || ❌ || [[WF:human languages/Z1882#natural number|WF:HL]]
|-
| {{z|Z1381}} || {{z|Z16398}} || ❌ || ❌ || [[WF:human languages/Z1381#natural number|WF:HL]]
|-
| {{z|Z1003}} || {{z|Z16431}} || ✅ || ✅ || [[WF:human languages/Z1003#natural number|WF:HL]]
|-
| {{z|Z1472}} || {{z|Z16443}} || ✅ || ✅ || [[WF:human languages/Z1003#natural number|WF:HL]]
|-
| {{z|Z1099}} || {{z|Z16409}} || ✅ || ✅ || [[WF:human languages/Z1099#natural number|WF:HL]]
|-
| {{z|Z1282}} || {{z|Z16608}} || ✅ || ✅ || [[WF:human languages/Z1381#natural number|WF:HL]]
|-
| {{Z|Z1820}} || {{Z|Z19334}} || ✅ || ✅ || [[WF:human languages/Z1820#natural number|WF:HL]]
|-
| {{z|Z1012}} || {{z|Z19484}} || ✅ || ✅ || [[WF:human languages/Z1012#natural number|WF:HL]]
|-
| {{Z|Z1787}} || {{Z|Z23003}} || ✅ || ✅ || [[WF:human languages/Z1787#natural number|WF:HL]]
|-
| {{Z|Z1158}} || {{Z|Z24618}} || ✅ || ✅ || [[WF:human languages/Z1158#natural number|WF:HL]]
|-
| {{Z|Z1078}} || {{Z|Z18546}} || ✅ || ✅ || [[WF:human languages/Z1078#natural number|WF:HL]]
|-
| {{Z|Z1762}} || {{Z|Z22455}} || ✅ || ✅ || [[WF:human languages/Z1762#natural number|WF:HL]]
|}
<span id="See_also"></span>
== 參閱 ==
* {{Z|Z16435}}
* {{Z+|Z16437}}
* {{Z|Z14526}}
ge6aqpehzqs0xuxu8yu3207dp3dj12g
Template:Documentation subpage/hi
10
62547
297009
207446
2026-08-06T18:04:31Z
FuzzyBot
207
Updating to match new version of source page
297009
wikitext
text/x-wiki
<noinclude><languages/></noinclude><includeonly>{{#if:{{IsDocSubpage|override={{{override|doc}}}}}
| <!--doc subpage--></includeonly>{{#ifeq:{{{doc-notice|show}}}|show
| {{Ombox|type=notice|image=[[File:OOjs UI icon articles-ltr.svg|35px|link=|class=skin-invert-image]]
|text='''यह {{#if:{{{1|}}}
| {{{1}}}
| [[:{{SUBJECTSPACE}}:{{BASEPAGENAME}}]]
}} के लिए एक [[Special:MyLanguage/Help:Template documentation|प्रलेख]] [[mw:Special:MyLanguage/Help:Subpages|उपपृष्ठ]] है।'''<br/> इसमें प्रयोग की जानकारी, [[Special:MyLanguage/Help:Categorization|श्रेणियाँ]], और दूसरी सामग्री है जो मूल<!--
--> {{#if: {{{text2|}}}
| {{{text2|}}}
| {{#if: {{{text1|}}}
| {{{text1|}}}
| {{#ifeq: {{SUBJECTSPACE}} | {{ns:User}}
| {{lc:{{SUBJECTSPACE}}}} साँचा पृष्ठ
| {{#if: {{SUBJECTSPACE}}
| {{lc:{{SUBJECTSPACE}}}} पृष्ठ
| लेख
}}
}}
}}
}} का हिस्सा नहीं है।
}}
<!--If not on a doc subpage, do nothing-->}}{{DEFAULTSORT:{{{defaultsort|{{PAGENAME}}}}}}}{{#if: {{{inhibit|}}}
| <!--Skip-->
| <includeonly>{{#ifexist: {{NAMESPACE}}:{{BASEPAGENAME}}
| [[Category:{{#switch: {{SUBJECTSPACE}}
|Template=Template
|Module=Module
|User=User
|#default=Template
}} documentation pages{{#translation:}}]]
| [[Category:Documentation subpages without corresponding pages{{#translation:}}]]
}}</includeonly>
}}<includeonly>
}}</includeonly><noinclude>{{Documentation}}[[Category:Template documentation]]<!--Add categories and interwikis to the /doc subpage, not here!--></noinclude>
exw20yu0zo6127dvabiwhf30e2zd9vq
Wikifunctions:Design/it
4
63143
296892
209368
2026-08-06T18:00:04Z
FuzzyBot
207
Updating to match new version of source page
296892
wikitext
text/x-wiki
<languages/>
{{see also
|Special:MyLanguage/WF:Status|l1=WF:Status
|Special:MyLanguage/WF:Feature_petitions|l2=WF:Feature petitions
}}
Questa è una pagina in cui elencheremo le attività del team sul miglioramento del design del sito.
<span id="Current_design_improvements"></span>
== Miglioramenti del design in corso ==
* [[Wikifunctions:Design/Lexeme Sense Selection UI|Interfaccia utente per la selezione del senso di lessema]]
* [[Special:MyLanguage/Wikifunctions:Design/Naming conventions recommendations|Raccomandazioni sulle convenzioni dei nomi]]
<span id="Implemented_design_improvements"></span>
== Miglioramenti del design implementati ==
* [[Special:MyLanguage/Wikifunctions:Design/About widget improvements|Riguardo ai miglioramenti dei widget]]
[[Category:Project concept{{#translation:}}]]
e1p8blwyg1s92wayo41xgdmcpb92ytp
Wikifunctions:Documentation/uk
4
63306
296904
209719
2026-08-06T18:00:32Z
FuzzyBot
207
Updating to match new version of source page
296904
wikitext
text/x-wiki
{{move|Help:Z21121}}
{{about|individual Functions|instructions on how to use {{SITENAME}}|Help:Contents}}
<languages/>
==[[Z21121]]==
===Z21121K1===
<div lang="en" dir="ltr" class="mw-content-ltr">
A string to represent a number. The number can be an integer, a decimal, or an (im)proper fraction. The value represents the quantity in the from unit. A "." acts as a decimal point, all commas are removed for processing.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
====Examples====
</div>
* -1
* 5.289
* 5/4
<div lang="en" dir="ltr" class="mw-content-ltr">
===Z21121K2 and Z21121K3===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
A string to represent a unit in a proprietary system. Units with exponents (like meters squared) can be represented by adding the exponent to the end of the unit expression. Division of units (like kilometers per hour) can be represented by adding a "/." Only one division is used per unit, everything to the right of the "/" is considered to be in the denominator. Multiplication is done by just putting units together. Z21121K2 represents the unit of Z21121K1, and Z21121K3 represents the unit of the conversion output. Both should be in the same dimension.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
====Examples====
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">"m2" -> meters squared</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">"cm/s" -> centimeters per second</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">"cWhm/b" -> centiwatt hour meters per bit</span>
===Z21121K4===
<div lang="en" dir="ltr" class="mw-content-ltr">
An integer to represent rounding of the output number. 0 rounds to the whole number, positive numbers round to the number of decimal places, negative numbers round further than whole numbers.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
====Examples====
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">0 -> nearest one</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">3 -> nearest thousandth</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">4 -> nearest ten thousand</span>
===Z21121K5-K7===
<div lang="en" dir="ltr" class="mw-content-ltr">
Do not do anything yet, require greater Wikidata support.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
===Output===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
A string that includes both quantities and their units.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
====Examples====
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">0 C (32 F)</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">10 km (10,000 m)</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">1 m<sup>2</sup> (1,000,000 mm<sup>2</sup>)</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
===Available units===
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">m/Meter*</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">mi/Mile</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">ft/Foot</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">yd/Yard</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">in/Inch</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">NM/Nautical Mile</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">au/Astronomical Unit</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">ly/Light Year</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Å/Angstrom</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">fur/Furlong</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">ftm/Fathom</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">cb/Cable</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">ch/Chain</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">rd/Rod</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">li/Link</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">s/Second*</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">min/Minute</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">h/Hour</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">d/Day</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">wk/Week</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">mo/Month</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">y/Year</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">g/Gram*</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">lb/Pound</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">oz/Ounce</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">b/Bit**</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">B/Byte**</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Pa/Pascal*</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">bar/Bar*</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">atm/Standard Atmosphere</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">mHg/Meter of Mercury*</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">psi/Pound per Square Inch</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">J/Joule*</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">cal/Thermochemical Calorie</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">eV/Electronvolt</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">BTU/British Thermal Unit</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Wh/Watt-Hour*</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">K/Kelvin***</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">C/Celsius***</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">F/Fahrenheit***</span>
<nowiki/>*<span lang="en" dir="ltr" class="mw-content-ltr">Supports metric prefixes</span>
<br>**<span lang="en" dir="ltr" class="mw-content-ltr">Supports metric prefixes, base 10 instead of standard 2</span>
<br>***<span lang="en" dir="ltr" class="mw-content-ltr">Handled separately</span>
[[Category:Help{{#translation:}}]]
3s9dv0b4cwia60komybkjsh4oxphgmb
Template:Documentation subpage/uk
10
63320
297017
209755
2026-08-06T18:04:35Z
FuzzyBot
207
Updating to match new version of source page
297017
wikitext
text/x-wiki
<noinclude><languages/></noinclude><includeonly>{{#if:{{IsDocSubpage|override={{{override|doc}}}}}
| <!--doc subpage--></includeonly>{{#ifeq:{{{doc-notice|show}}}|show
| {{Ombox|type=notice|image=[[File:OOjs UI icon articles-ltr.svg|35px|link=|class=skin-invert-image]]
|text='''Це [[mw:Special:MyLanguage/Help:Subpages|підсторінка]] [[Special:MyLanguage/Help:Template documentation|документації]] шаблону {{#if:{{{1|}}}
| {{{1}}}
| [[:{{SUBJECTSPACE}}:{{BASEPAGENAME}}]]
}}.'''<br/> Вона містить інформацію про використання, [[Special:MyLanguage/Help:Categorization|категорії]] та інший вміст, що не є частиною оригінальної<!--
--> {{#if: {{{text2|}}}
| {{{text2|}}}
| {{#if: {{{text1|}}}
| {{{text1|}}}
| {{#ifeq: {{SUBJECTSPACE}} | {{ns:User}}
| {{lc:{{SUBJECTSPACE}}}} сторінки шаблону
| сторінки {{#if: {{SUBJECTSPACE}}
| {{lc:{{SUBJECTSPACE}}}}
| статті
}}
}}
}}
}}.
}}
<!--If not on a doc subpage, do nothing-->}}{{DEFAULTSORT:{{{defaultsort|{{PAGENAME}}}}}}}{{#if: {{{inhibit|}}}
| <!--Skip-->
| <includeonly>{{#ifexist: {{NAMESPACE}}:{{BASEPAGENAME}}
| [[Category:{{#switch: {{SUBJECTSPACE}}
|Template=Template
|Module=Module
|User=User
|#default=Template
}} documentation pages{{#translation:}}]]
| [[Category:Documentation subpages without corresponding pages{{#translation:}}]]
}}</includeonly>
}}<includeonly>
}}</includeonly><noinclude>{{Documentation}}[[Category:Template documentation]]<!--Add categories and interwikis to the /doc subpage, not here!--></noinclude>
ps84jns2x9nxpablkpidq7j5dexaeow
Wikifunctions:Design/ar
4
63773
296889
210895
2026-08-06T18:00:03Z
FuzzyBot
207
Updating to match new version of source page
296889
wikitext
text/x-wiki
<languages/>
{{see also
|Special:MyLanguage/WF:Status|l1=WF:Status
|Special:MyLanguage/WF:Feature_petitions|l2=WF:Feature petitions
}}
هذه صفحة سنسرد فيها قائمة لأنشطة الفريق المتعلقة بتحسينات تصميم الموقع.
<span id="Current_design_improvements"></span>
== تحسينات التصميم الحالية ==
* [[Wikifunctions:Design/Lexeme Sense Selection UI|واجهة المستخدم لاختيار معنى معجمية]]
* [[Special:MyLanguage/Wikifunctions:Design/Naming conventions recommendations|توصيات لأعراف التسمية]]
<span id="Implemented_design_improvements"></span>
== تحسينات التصميم المنفذّة ==
* [[Special:MyLanguage/Wikifunctions:Design/About widget improvements|حول تحسينات الويدجت]]
[[Category:Project concept{{#translation:}}]]
s1p6cqqmutx4hl3iy5colvh7exzq308
Help:Using Wikifunctions/ar
12
64179
297021
240698
2026-08-06T18:05:55Z
FuzzyBot
207
Updating to match new version of source page
297021
wikitext
text/x-wiki
<languages/>
{{about|error messages which can appear when an (embedded) function call fails
|instructions on how to use {{SITENAME}}|Special:MyLanguage/Help:Contents
}}
<div class="mw-translate-fuzzy">
هذه صفحة مساعدة لفهم المعنى المقصود من خطأ ما. لا تغيّر عناوين الأقسام، ذلك أنها مثبتة كوصلات للأخطاء.
</div>
<span id="Unknown_object"></span>
== كائن غير معروف ==
معرّف الدالة «أو إحالة لمدخل مستعمل في استدعاء الدالة» ليس معرّفًا صالحًا أو غير موجود في ويكي دوال.
لإصلاح استدعاء الدالة، قم بتحرير الصفحة باستخدام المحرر المرئي، انقر على الاستدعاء الذي يفشل، واتبع التعليمات التفاعلية لاختيار وتهيئة استدعاء دالة صالح.
<span id="Invalid_object"></span>
== كائن غير صالح ==
الدالة التي يحاول استدعاء الدالة استعمالها غير صالحة حاليًا أو تالفة.
إذا استمرت المشكلة، قم بزيارة صفحة الدالة وانشر تفاصيل المسألة في صفحة النقاش.
<div lang="en" dir="ltr" class="mw-content-ltr">
== Not a function ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The ID used in your function call does not point to a Function, but to an object of some other type.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
To fix it, edit the page with the visual editor, click on the failing call, and use the configuration dialog to choose a valid function and set up its input fields.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Input type not supported ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The function in your function call uses one or more input types that are not currently supported, as they cannot be interpreted from strings.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
You can search for other supported functions by editing the page with the visual editor and inserting a new function. The initial search dialog will allow you to look through all supported functions.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If you believe this input type should be supported, please inquire about it in the [[Wikifunctions:Project chat|Wikifunctions Project chat]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Output type not supported ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The function in your function call returns an output value that is not currently supported, as it cannot be converted to a string.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
You can search for other supported functions by editing the page with the visual editor and inserting a new function. The initial search dialog will allow you to look through all supported functions.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If you believe this output type should be supported, please inquire about it in the [[Wikifunctions:Project chat|Wikifunctions Project chat]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Invalid language properties ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The function call is using invalid language codes for its parser or renderer language properties.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
To fix the issue, edit the page using the source editor and search for the conflicting function call. The language properties will appear as <code>parselang</code> and <code>renderlang</code>, and you must make sure that they are valid BCP 47 language tags. For example:
</div>
<syntaxhighlight lang="wikitext">
{{#function:Z10000|foo|bar|renderlang=en|parselang=en}}
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Wrong number of inputs ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Your function call wikitext has a different number of input parameters than those expected (either fewer or more).
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
To fix the issue, edit the page using the visual editor, click on the failing function call, and make sure that all the input fields are set. If the problem still persists, it's likely that your function call has more unnamed inputs than expected, so you should fix it directly with the source editor.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Once you have located your conflicting function, make sure that there are as many inputs separated by <code>|</code> as the function accepts, excluding named parameters such as <code>renderlang</code> or <code>parselang</code>. For example, the following function call has two unnamed inputs, which fits the expectations of the function:
</div>
<syntaxhighlight lang="wikitext">
{{#function:Z10000|unnamed input 1|unnamed input 2|namedInput=1|foo=bar|parselang=en}}
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Wrong input type ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The function call wikitext contains a referenced value as an input, but this reference does not correspond to the right type of item.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
To fix this, edit the page using the visual editor, click on the failing function call, and use the configuration dialog to select a valid value for the failing input.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Unexpected output ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The value returned from running the function call does not correspond to the value type expected for this function. This can be due to some issues in the function implementation.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
You can check if the function works as expected in the function page, by testing it with your desired inputs or inquire about it in its talk page.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Failed evaluation ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The function orchestration service failed to evaluate your function call successfully. This can be due to internal orchestrator errors, or due to some issues in the function implementations (e.g. the function has no connected implementations.)
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
You can check if the function works as expected in the function page, by testing it with your desired inputs or inquire about it in its talk page.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Wikifunctions is disabled ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Wikifunctions features are currently disabled. This can be due to ongoing deployments or technical maintenance and will be resolved in time.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If the error persists, visit the [[Wikifunctions:Project chat|Wikifunctions Project chat]] and post a message.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Other system failures ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The system encountered an unexpected failure before sending the request for evaluation. If the issue persists, please file a bug in Phabricator.
</div>
[[Category:Help{{#translation:}}]]
t52z6yxk5leqvv2u1tzs1hv4loi0tdb
Wikifunctions:Report a technical problem/ps
4
67043
296972
279551
2026-08-06T18:03:12Z
FuzzyBot
207
Updating to match new version of source page
296972
wikitext
text/x-wiki
<languages/>
{{shortcut|[[WF:BUG]]}}
{{see also
|Special:MyLanguage/WF:Status|l1=WF:Status
|Special:MyLanguage/WF:Feature_petitions|l2=WF:Feature petitions
}}
<div lang="en" dir="ltr" class="mw-content-ltr">
If you have found a bug in Wikifunctions, or you have a feature request for Wikifunctions, please let us know!
</div>
<span id="Scope"></span>
== ليدلوری ==
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Bug''' - a problem that is producing incorrect or unexpected results on Wikifunctions. Note that problems within Functions themselves are not considered as a bug in this context.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Feature request''' - an idea that the development team can add to Wikifunctions to make it even more awesome.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
Do you need help with something else?
</div>
: <span lang="en" dir="ltr" class="mw-content-ltr">The following are '''out of scope''' of the work of the Wikifunctions development team:</span>
:* <span lang="en" dir="ltr" class="mw-content-ltr">The '''content of individual Functions''' – Discuss those on the talkpage of the Function itself, or ask for help at [[Wikifunctions:Project chat]] or in the channels listed below; if you think a function is missing, see [[Wikifunctions:Suggest a function]]</span>
:* <span lang="en" dir="ltr" class="mw-content-ltr">The '''Wikifunctions project's policies''' – Ask about those at [[Wikifunctions:Project chat]] or in the channels listed below</span>
<span id="Find_existing_bugs_and_feature_requests"></span>
== شته تېروتنې او او ځانگړتياوې موندل ==
* <span lang="en" dir="ltr" class="mw-content-ltr">See '''[[Wikifunctions:Status]]''' for a quick summary of high-level issues.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">You can '''[[phab:maniphest/query/UzvNRqsdnymk/|search the Phabricator]] listing of open tasks''' to see if your bug or feature idea is already documented.</span>
<span id="Discuss_with_others"></span>
== له نورو سره پرې شننه کول ==
<div lang="en" dir="ltr" class="mw-content-ltr">
You can ask questions about possible bugs or feature ideas at a few locations. This may be helpful if you are unsure how to clearly describe the bug or feature idea:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">The discussion page [[Wikifunctions:Project chat|here]].</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">The main chat on [https://t.me/Wikifunctions Telegram] or IRC {{channel|wikipedia-abstract}} (bridged together) ([https://wm-bot.wmcloud.org/logs/%23wikipedia-abstract/ logs], [https://wm-bot.wmflabs.org/logs/%23wikipedia-abstract/ old logs])</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">The developer chat on [https://t.me/abstract_wikipedia_tech Telegram] or IRC {{channel|wikipedia-abstract-tech}} (bridged together) ([https://wm-bot.wmcloud.org/logs/%23wikipedia-abstract-tech/ logs])</span>
<span id="File_a_task_in_Phabricator"></span>
== په فابريکيټر کې يوه د يوې دندې سپارل ==
<div lang="en" dir="ltr" class="mw-content-ltr">
If you are familiar with Phabricator, you can search and file tasks directly.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If you are not yet familiar: Phabricator is the web-based development collaboration tool mostly used to manage MediaWiki software projects including Wikifunctions. A short summary about Phabricator for newcomers, including tutorial videos, is on MediaWiki's wiki at [[mw:Special:MyLanguage/Phabricator/Help|mw:Phabricator/Help]].
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">You can '''[[phab:maniphest/query/UzvNRqsdnymk/|search]] the listing of open tasks''' to see if your bug or feature idea is already documented.</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">The existing tasks are collected with the '''[[phab:tag/abstract wikipedia team|#abstract wikipedia team]] tag'''.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">You can '''[https://phabricator.wikimedia.org/maniphest/task/edit/form/43/?projects=abstract_wikipedia file a new task]'''. Please always include:</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">Examples</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">Any relevant links</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">For bugs: The exact steps that produced the bug, so that the team can reproduce and diagnose it.</span>
<span id="Languages"></span>
== ژبې ==
<div lang="en" dir="ltr" class="mw-content-ltr">
The development team understands a limited number of languages – but you are free to report issues in any language that you're comfortable with.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If possible, please provide a summary in English when creating a phabricator task, or ask someone to help you.
</div>
<span id="Follow-up"></span>
== څارل ==
* <span lang="en" dir="ltr" class="mw-content-ltr">The locations above are followed by the Wikifunctions development team, as well as community members. The time to get a reply varies depending on the nature or complexity of the topic, etc. However, in general, you can get an answer within 2 workdays. Please let us know if we missed something, as life can get distracting!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Not all problems can be solved immediately: depending on the impact, priority, etc. some bugs can be triaged to low priority. You may follow the status of your report on the relevant linked phabricator task.</span>
[[Category:Report a technical problem{{#translation:}}]]
ijiwfkn1nqco2lan1qd1nlyh2t3t4ly
Wikifunctions:FAQ/zh-hans
4
67651
296933
282993
2026-08-06T18:02:06Z
FuzzyBot
207
Updating to match new version of source page
296933
wikitext
text/x-wiki
<languages/>
{{shortcut|[[WF:FAQ]]}}
本页解答Wikifunctions相关的常见问题。若本页未能解答您的疑惑,欢迎前往[[Wikifunctions talk:FAQ|讨论页]]发问。
此外,关于 Wikifunctions 和抽象维基百科的更多常见问题,请参阅我们在[[:m:Special:MyLanguage/Abstract Wikipedia/FAQ|元维基上的常见问题解答]]。
__TOC__
<span id="Introduction"></span>
== 引言 ==
<span id="What_is_this_project_about?"></span>
=== 这个项目关于什么? ===
Wikifunctions 是一个新兴的维基媒体项目,它提供了一个任何人都可调用、编写、维护和使用的多样化函数目录。该项目还提供了一种底层技术,它最终将能够把抽象维基百科中与语言无关的内容翻译成任何一种维基百科语言版本。这将让每个人都能用自己偏好的语言来贡献和阅读文章。
<span id="What_is_a_function?"></span>
=== 什么是函数? ===
函数是一种知识形态,能够回答问题,比如两个日期之间过去了多少天,或者两个城市之间的距离。更复杂的函数可以解答更复杂的问题,例如三维形状的体积,特定日期火星和金星之间的距离,或者两个物种是否在同一时间存活。
我们已经在许多类型的知识查询中使用了函数,例如向搜索引擎提问。英文维基百科上的模板,例如 [[:w:en:Template:Convert|Template:Convert]] 和 [[:w:en:Template:Age|Template:Age]],也是一些已经在许多维基百科中使用的函数示例,这些功能是用维基文本和 Lua 编写的,且需手动复制到希望使用它们的每一维基。
<span id="What_is_an_implementation?"></span>
=== 什么是实现? ===
实现是一种执行函数的特定方式。实现是一份列出了运行该函数所需步骤的配方。它可能是编程语言中的一段代码或是对其它函数调用的组合。一个函数可能有多个实现,这些实现应当都是等效的。
<span id="What_is_a_test?"></span>
== 什么是测试? ==
测试是一种确定给定函数是否正常工作的方法。一个函数通常会有多个测试,每个测试都会指定一些输入到该函数以及给定输入的输出必须满足的条件。
例如,“首字母大写”功能的测试用例可能包括:“<span dir="ltr" lang="en">abc</span>”应变为“<span dir="ltr" lang="en">Abc</span>”;“<span dir="ltr" lang="en">war and peace</span>”应变为“<span dir="ltr" lang="en">War and Peace</span>”;“<span dir="ltr" lang="ru">война и мир</span>”应变为“<span dir="ltr" lang="ru">Война и мир</span>”;而“<span dir="ltr" lang="en">123</span>”应保持为“<span dir="ltr" lang="en">123</span>”。
<span id="Which_features_are_available_now,_which_will_be_soon_available,_and_which_are_further_away?"></span>
=== 哪些功能现已可用,哪些即将推出,哪些还尚需时日? ===
* 现正发布:
** 我们能够编写处理字符串和布尔值的函数。
** 维基函数从一开始就要全面实现国际化。它可用于任何语言。
* [[Wikifunctions:Status|正处开发]]:
** 泛型类型和泛型函数尚未获全面支持。
** 截至目前,仅限开发团队添加类型。未来,社区也将能够添加更多类型。未来还有大量工作要做以使类型运行得更流畅。
*** 其中一种特别有趣的类型将是二进制数据,尤其是文件。
** 我们目前支持两种编程语言用于实现:JavaScript 和 Python。未来,我们想要支持更多。
** 目前,''无法''从使用任何编程语言编写的实现中调用其他函数。这当下只可经由组合实现。
* 在未来的日子:
** 从其他维基媒体项目调用维基函数的函数并将处理结果合至页面输出将成为可能。
** 在函数中有望使用来自维基数据的数据。
** 可期调用维基共享资源命名空间中的数据集。
<span id="How_is_Wikifunctions_multilingual?"></span>
=== 维基函数是如何实现多语言的? ===
{{main|Special:MyLanguage/Help:Multilingual}}
维基函数和抽象维基百科多方面支持多语言且互不影响:
* '''维基函数的内容和用户界面均支持多语言。'''用户可使用任何自然语言阅读和调用维基函数上的函数。此为“合并字符串”函数的[https://www.wikifunctions.org/view/en/Z10000 英语],[https://www.wikifunctions.org/view/pl/Z10000 波兰语]和[https://www.wikifunctions.org/view/he/Z10000 希伯来语]版本,该函数还支持更多语言。
* '''贡献者可用自己的语言编辑和改进维基函数。'''甚至实现也可用贡献者的自然语言编辑。例如,可以使用[https://www.wikifunctions.org/wiki/Z11223?action=edit&uselang=de 德语],[https://www.wikifunctions.org/wiki/Z11223?action=edit&uselang=en 英语]或约300种其他语言中的任何一种来编辑“与”函数的定义。
* '''维基函数函数可用于生成任何自然语言的内容。'''社区正开发越来越多的函数来支持多种自然语言的文本生成。我们已提供[[Wikifunctions:Catalogue#Breton|布列塔尼语]],[[Wikifunctions:Catalogue#Rohingya|罗兴亚语]],[[Wikifunctions:Catalogue#English|英语]]和许多其他语言的函数。
* '''维基函数中的函数可用多种不同的编程语言实现。'''例如,[[Z10000|join 函数]]既可用 [[Z10005|JavaScript]] 实现,也可用 [[Z10004|Python]] 实现。
<span id="Which_programming_languages_does_Wikifunctions_currently_support?_Which_programming_languages_will_be_supported_in_the_future?"></span>
=== 维基函数目前支持哪些编程语言?未来将支持哪些编程语言? ===
{{main|WF:programming languages}}
目前,维基函数支持使用 JavaScript 和 Python 编写的实现。我们计划在未来增加对更多编程语言的支持。我们希望在2025年至少再增加一种编程语言(但尚未决定具体是哪一种)。
<span id="How_will_Wikifunctions_be_integrated_into_other_projects?"></span>
=== 维基函数将如何与其他项目整合? ===
维基函数是构建抽象维基百科的第一步。我们近期的工作重点将放在支持社区发展并依反馈改进。与此同时,我们将启动将它与维基百科和维基数据整合的流程,这将推动更广泛的实际应用并使我们更接近抽象维基百科的愿景。
贡献者将能够在自己的维基页面中调用存储在维基函数网站上的函数。函数调用的结果将显示给维基的读者。这可以用来,例如,计算某人的年龄,根据维基数据中的人口和面积数据计算人口密度,或者绘制图表并将其嵌入到特定文章中。
整合维基函数的另一种方法是在 wiki 中整合交互式函数调用界面。例如,在维基百科条目中,可以根据读者提供的参数动态计算物理方程式的结果、绘制数学函数并与之互动等。
<span id="What_Wikifunctions_is_not"></span>
=== 维基函数不是什么 ===
具体请见[[Special:MyLanguage/Wikifunctions:What Wikifunctions is not|维基函数:维基函数不是什么]]。
<span id="What_license_will_the_functions_and_derived_content_be_under?"></span>
=== 这些函数将以何许可协议授权? ===
根据[[:m:Special:MyLanguage/Abstract Wikipedia/Licensing discussion|2021年11月至12月期间在元维基上]]发生的讨论,所有对维基函数以及更广泛的抽象维基百科项目的贡献都将采用自由许可协议发布。具体来说:
* 维基函式的[[Special:MyLanguage/Wikifunctions:Glossary#Content|文本内容]]使用[[w:zh:知识共享许可协议|創用CC授權 4.0]]协议。
* [[Special:MyLanguage/Wikifunctions:Glossary#Function|函数签名]]和其它结构化內容採用[[w:zh:知识共享许可协议#授權類型|CC 0]]许可协议发表。
* 维基函数中的[[Special:MyLanguage/Wikifunctions:Glossary#Implementation|代码的实现]]将以[[w:zh:Apache许可证|Apache 2许可证]]的方式发布。
* 于抽象维基百科的[[Special:MyLanguage/Wikifunctions:Glossary#Content|抽象内容]]将根据 CC BY-SA 4.0 协议发布。
未来仍有一些问题需要解决,例如基于抽象内容生成的内容的许可问题。我们计划与法务部门共同起草一份更全面的文件,说明用户如何在遵守许可条款的同时,尽可能便捷地复用维基函数的代码。
<span id="Contributing"></span>
== 作出贡献 ==
<span id="I'm_new_here._What_is_there_for_me_to_do_and_how_can_I_help?"></span>
=== 我是新人。我能做什么,又该怎样帮忙? ===
欢迎!很高兴您来这里!在维基函数上有许多参与的机会,从创建新函数到改进和翻译文档应有尽有。如果您正在寻找参与进来的方式,我们建议您可以根据自己的兴趣和能力,提出一个您感兴趣主题的新函数。甚至亲自创建该函数。提供一些测试用例。尝试一个实现。协助翻译工作。阅读并改进我们的文档。协助社区的组织工作。
<span id="How_do_I_create_a_new_function,_implementation,_or_test?"></span>
=== 如何创建新的函数,实现,或测试? ===
如需了解如何创建新的函数,实现,或测试,参阅[[Special:MyLanguage/Wikifunctions:Introduction|维基函数:简介]]。
如需详细了解如何创建实现,参阅[[Special:MyLanguage/Wikifunctions:How to create implementations|维基函数:如何创建实现]]。
<span id="What_should_I_edit_first?"></span>
=== 我应先编辑什么? ===
如果你精通多种语言,请在页面 [[Special:ListMissingLabels]] 上查找那些尚未提供你所用语言的标签和描述的功能,并协助添加相关内容。
如果您对某个能够包含在维基函数中的函数领域感兴趣,但目前尚未收录,或者您有更多关于函数的创意,请前往[[Wikifunctions:Suggest a new function|提议新函数]]页面提出您的想法。
如果你是 JavaScript 或 Python 开发者,或许你想查找那些在 JavaScript 或 Python 中尚未实现的函数,并尝试编写它们。
<span id="Where_can_I_go_for_help?"></span>
=== 我该去哪寻求帮助? ===
您应首先访问[[Special:MyLanguage/Help:Contents|帮助门户]],在那里您可以找到所有与使用和编辑维基函数相关的文档。如果仍然遇到困难,请在[[Wikifunctions:Project chat|互助客栈]]发帖,有其他人会为您解答。
<span id="How_do_we_sort_or_categorize_functions?"></span>
=== 如何进行分类工作? ===
{{Tracked|T285424}}
目前,对函数进行分类或归类的最佳方式是通过[[Special:MyLanguage/Wikifunctions:Catalogue|维基函数命名空间中的页面]]手动操作。另一种方法是通过相关函数的讨论页进行。我们将持续关注这些工作并与社区共同探讨对系统进行哪些调整将有助于完成这项任务。
<div lang="en" dir="ltr" class="mw-content-ltr">
=== How can I setup the software locally to hack on it? ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
See [[Special:MyLanguage/Wikifunctions:Hacking on the evaluator and orchestrator|Hacking on the evaluator and orchestrator]].
</div>
[[Category:FAQ| {{#translation:}}]]
ozt3oo7kzaspupxtxa6n0pkens9arvw
Wikifunctions:FAQ/zh-hant
4
67652
296934
265388
2026-08-06T18:02:06Z
FuzzyBot
207
Updating to match new version of source page
296934
wikitext
text/x-wiki
<languages/>
{{shortcut|[[WF:FAQ]]}}
<div lang="en" dir="ltr" class="mw-content-ltr">
This is a dedicated page for the Frequently Asked Questions about Wikifunctions. Please, feel free to ask your own question on the [[Wikifunctions talk:FAQ|talk page]], if your question is not listed here!
</div>
另外,有關於Wikifunctions和抽象維基百科之中更一般的問題,是否考慮一下我們的[[:m:Special:MyLanguage/Abstract Wikipedia/FAQ|元維基上的FAQ]]。
__TOC__
<span id="Introduction"></span>
== 簡介 ==
<div lang="en" dir="ltr" class="mw-content-ltr">
=== What is this project about? ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Wikifunctions is a new Wikimedia project that provides a catalog of all kinds of functions that anyone can call, write, maintain, and use. It also provides the underlying technology that will eventually enable the translation of language-independent articles from Abstract Wikipedia into the language of any Wikipedia. This will allow everyone to contribute and read articles in their preferred languages.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== What is a function? ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Functions are a form of knowledge that can answer questions, such as how many days have passed between two dates or the distance between two cities. More complicated functions can answer more complicated questions, such as the volume of a three-dimensional shape, the distance between Mars and Venus on a certain date, or whether two species were alive at the same time.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
We already use functions in many types of knowledge inquiries, such as asking a question to a search engine. The templates, such as [[:w:en:Template:Convert|Template:Convert]] and [[:w:en:Template:Age|Template:Age]] on English Wikipedia, are also examples of functions that are already used in many Wikipedias, written in wikitext and Lua and manually copied to each wiki where they're wanted.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== What is an implementation? ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
An implementation is a particular way to execute a function. An implementation is a recipe that lists the steps that are needed to run the function. It may be a piece of code in a programming language or a combination of calls to other functions. A function may have many implementations, which should all be equivalent.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== What is a test? ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
A test is a way to determine if a given function is doing the right thing. A function will typically have multiple testers, each specifying some input to the function and the conditions the output for the given input must fulfill.
</div>
例如,「標題大小寫」功能的測試器應包括:「<span dir="ltr" lang="en">abc</span>」應該要變成「<span dir="ltr" lang="en">Abc</span>」;「<span dir="ltr" lang="en">war and peace</span>」應該要變成「<span dir="ltr" lang="en">War and Peace</span>」;「<span dir="ltr" lang="ru">война и мир</span>」應該要變成「6」;而「<span dir="ltr" lang="en">123</span>」應該要保持「<span dir="ltr" lang="en">123</span>」。
<span id="Which_features_are_available_now,_which_will_be_soon_available,_and_which_are_further_away?"></span>
===哪些功能現在已經可用,哪些很快就會可用,哪些還需要更長的時間?===
* 發佈時:
** 我們能讓函數處理Strings和Booleans。
** Wikifunctions從一開始就會完全國際化。它可以用於任何一個語言。
* [[Wikifunctions:Status|正在開發中]]:
** 不完全支援泛型的類型和泛型的函式。
** 新增類型在目前僅限於開發團隊。未來,社群將可以新增更多的類型。未來還有許多工作要做,讓類型的行為更順暢。
*** 其中一種特別有趣的類型是二進位的資料,尤其是檔案。
** 我們目前支援兩種程式語言的實作:JavaScript和Python。未來,我們希望支援更多的語言。
** 目前,從以任何程式語言撰寫的實作中呼叫其他函式是'''不'''可能的。目前只能透過組合來實現。
* 在將來:
** 可以從其他維基媒體專案中呼叫Wikifunctions函式,並將其結果整合到頁面的輸出中。
** 可以在函式中使用來自維基數據的資料。
** 可以從維基共享資源的命名空間呼叫資料集。
<span id="How_is_Wikifunctions_multilingual?"></span>
=== Wikifunctions是什麼樣的多語言?===
{{main|Special:MyLanguage/Help:Multilingual}}
Wikifunctions與抽象維基百科在多種語言上彼此互不影響:
* '''Wikifunctions的內容和使用者介面都是多語言的'''。使用者可以用任何的自然語言來讀出和呼叫Wikifunctions上的函式。以下是函式「join string」的[https://www.wikifunctions.org/view/en/Z10000 英語]、[https://www.wikifunctions.org/view/pl/Z10000 波蘭語]和[https://www.wikifunctions.org/view/he/Z10000 希伯來語]版函式,這個函式其他更多語言的版本。
* '''貢獻者可以用他們的語言編輯和改進Wikifunctions'''。甚至是這些實作也都可以用貢獻者本身的自然語言來編輯。例如,合成函式「and」可以用[https://www.wikifunctions.org/wiki/Z11223?action=edit&uselang=de 德文]、[https://www.wikifunctions.org/wiki/Z11223?action=edit&uselang=en 英文]、或其他約有300種語言中的任何一種來編輯。
* '''Wikifunctions的函式可以為任何一種自然語言產出結果'''。社群正在創造越來越多的函式,以支援許多自然語言的文字產生。我們有許多的函式可用在[[Wikifunctions:Catalogue#Breton|布列塔尼語]]、[[Wikifunctions:Catalogue#Rohingya|羅辛亞語]]、[[Wikifunctions:Catalogue#English|英語]]以及許多其他語言。
* '''Wikifunctions中的函式可以用各種不同的程式語言來實作。'''例如,[[Z10000|join函式]]就是用[[Z10005|JavaScript]]和[[Z10004|Python]]這二種語言來實作。
<span id="Which_programming_languages_does_Wikifunctions_currently_support?_Which_programming_languages_will_be_supported_in_the_future?"></span>
=== Wikifunctions目前支援哪些程式語言?未來將支援哪些程式語言?===
{{main|WF:programming languages}}
目前,Wikifunctions支援以JavaScript和Python語言寫成的實作。我們計劃在未來增加對更多程式語言的支援。我們希望在2025年至少再增加一種程式語言(但尚未決定是哪一種)。
<span id="How_will_Wikifunctions_be_integrated_into_other_projects?"></span>
===Wikifunctions將會如何整合到其他專案中?===
Wikifunctions是建立抽象維基百科的第一步。我們近期的重點是支援社群,並根據回饋進行改進。與此同時,我們將開始將其與維基百科和維基數據整合的過程,這將實現更廣泛的現實生活應用,使我們更接近「抽象維基百科」的願景。
貢獻者將能夠在他們的wiki中呼叫儲存在Wikifunctions網站中的函式。函式呼叫的結果將顯示給維基的讀者。例如,這可以用來計算一個人的年齡,根據Wikidata的人口和面積數據計算人口密度,或者繪製圖表並將其整合到指定的條目中。
<div lang="en" dir="ltr" class="mw-content-ltr">
Another option to integrate Wikifunctions will be to integrate an interactive function call interface within their wiki. This could be used, for example, in a Wikipedia article to dynamically calculate the result of a physical equation based on reader-provided parameters, draw and interact with mathematical functions, etc.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== What Wikifunctions is not ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Please, see [[Special:MyLanguage/Wikifunctions:What Wikifunctions is not|Wikifunctions:What Wikifunctions is not]] for more information on that.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== What license will the functions and derived content be under? ===
</div>
根據2021年11月至12月間[[:m:Special:MyLanguage/Abstract Wikipedia/Licensing discussion|在Meta上進行的討論]],所有對Wikifunctions和更廣泛的抽象維基百科專案的貢獻都將以自由授權的方式發表。特別是:
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Special:MyLanguage/Wikifunctions:Glossary#Content|Textual content]] on Wikifunctions will be published under [[w:Creative Commons license|CC BY-SA 4.0]].</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Special:MyLanguage/Wikifunctions:Glossary#Function|Function signatures]] and other structured content on Wikifunctions will be published under [[w:CC0|CC 0]].</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Special:MyLanguage/Wikifunctions:Glossary#Implementation|Code implementations]] in Wikifunctions will be published under the [[w:Apache License|Apache 2 license]].</span>
* 抽象維基百科的[[Special:MyLanguage/Wikifunctions:Glossary#Content|抽象內容]] 將以創用CC授權 4.0發表。
未來仍有一些問題需要解決,例如從抽象內容所產生內容的授權。我們計劃與法律部門一起起草一份更全面的文件,說明人們如何在遵守授權的前提下,盡可能輕鬆地重複使用維基功能中的-{zh-cn:代码;zh-tw:程式碼}-。
<div lang="en" dir="ltr" class="mw-content-ltr">
== Contributing ==
</div>
<span id="I'm_new_here._What_is_there_for_me_to_do_and_how_can_I_help?"></span>
===我是新來的。我可以做些什麼?如何做?===
歡迎您 我們很高興您能來到這裡!您有許多機會為Wikifunctions貢獻心力,從建立新功能到改善和翻譯文件。如果您正在尋找參與的方法,我們建議您,根據您的適應程度,就您感興趣的主題建議一個新功能、或甚至創造一個這樣的函式、提供一些測試、嘗試實作、協助翻譯、閱讀並改進我們的文件、協助組織社群。
<span id="How_do_I_create_a_new_function,_implementation,_or_test?"></span>
=== 新的函式我要如何建立、實作、或測試?===
若要瞭解如何建立新函式、實作、或測試,請參閱[[Special:MyLanguage/Wikifunctions:Introduction|Wikifunctions:介绍]].
要詳細瞭解如何建立實作,請參閱[[Special:MyLanguage/Wikifunctions:How to create implementations|Wikifunctions:如何创建函式的-{zh:实现;zh-hans:实现;zh-hant:實作;}-]]。
<span id="What_should_I_edit_first?"></span>
===我應該先編輯什麼?===
如果您會寫多種程式語言,請在[[Special:ListMissingLabels]]頁面上找找,函式的標籤和說明上面還沒有你所會的程式語言,然後協助加入這些函式。
如果您對某個Wikifunctions可以提供函式的領域有興趣,但該在領域內但卻還沒有;或者如果您對某些函式有更多的想法,你可以到[[Wikifunctions:Suggest a new function|建議新功能]]頁面,並提出您的想法。
如果您是JavaScript或Python的程式設計師,或許您會想要看看尚未以JavaScript或Python實作出來的函式,然後嘗試寫出這些函式。
<span id="Where_can_I_go_for_help?"></span>
=== 我可以去哪裡尋求協助?===
您的第一站應該是[[Special:MyLanguage/Help:Contents|幫助-{zh:门户;zh-hant:入口}-]],在這裡您可以找到所有與使用和編輯維基功能相關的文件。如果你還是卡住了,請在[[Wikifunctions:Project chat|專案聊天]]上發消息,會有人回答你的問題。
<div lang="en" dir="ltr" class="mw-content-ltr">
=== How do we sort or categorize functions? ===
</div>
{{Tracked|T285424}}
<div class="mw-translate-fuzzy">
在現在,對函式進行排序或分類的最佳方法是手動在維基函式命名空間中的頁面中進行。另一個方法是透過該函式的討論頁。我們會監督這些工作,並與社群討論,系統的哪些變更會對這項任務有幫助。
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== How can I setup the software locally to hack on it? ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
See [[Special:MyLanguage/Wikifunctions:Hacking on the evaluator and orchestrator|Hacking on the evaluator and orchestrator]].
</div>
[[Category:FAQ| {{#translation:}}]]
5tpqaj5zc5tq2ex3xa8tmexokiadjql
Wikifunctions:Cardinal numbers/kcg
4
67918
296878
261559
2026-08-06T17:59:44Z
FuzzyBot
207
Updating to match new version of source page
296878
wikitext
text/x-wiki
<languages/>
{{Move|Wikifunctions:Catalogue/Natural language operations/Cardinal numbers|reason=This page is a list of functions, but is outside the catalogue}}
<div lang="en" dir="ltr" class="mw-content-ltr">
We are looking to have functions to create the names of numbers in many different languages. The [[Special:MyLanguage/Wikifunctions:Status updates/2024-05-15|newsletter from 15 May 2024]] made a Call for Functions!
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
On this page, we collect and list the existing functions and related objects in order to coordinate the work.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The functions take as input a [[Z13518|natural number]] and return a [[Z6|string]]. There can be more than one function per language.
</div>
<span id="Languages_covered"></span>
== Lilyem nang á̱ ku nyia̱ a̱ni ==
<div class="mw-translate-fuzzy">
Nswak nfeang ma̱ng a̱feang mi̱ di̱ yong huni.
</div>
{| class="wikitable sortable"
|+ nkyangta̱m di̱n vak [[Special:ListObjectsByType/Z60|a̱lyem]]
|-
! A̱lyem !! Kyangta̱m !! Á̱ ku mak !! <span lang="en" dir="ltr" class="mw-content-ltr">Implemented</span> !! <span lang="en" dir="ltr" class="mw-content-ltr">Planning</span>
|-
| {{z|Z1002}} || {{z|Z13587}} || ✅ || ✅ || [[WF:human languages/Z1002#natural number|WF:HL]]
|-
| {{z|Z1004}} || {{z|Z16093}} || ✅ || ✅ || [[WF:human languages/Z1004#natural number|WF:HL]]
|-
| {{z|Z1011}} || {{z|Z16150}} || ✅ || ✅ || [[WF:human languages/Z1011#natural number|WF:HL]]
|-
| {{z|Z1014}} || {{z|Z16053}} || ✅ || ✅ || [[WF:human languages/Z1014#natural number|WF:HL]]
|-
| {{z|Z1025}} || {{z|Z15965}} || ✅ || ✅ || [[WF:human languages/Z1025#natural number|WF:HL]]
|-
| {{z|Z1045}} || {{z|Z16172}} || ✅ || ✅ || [[WF:human languages/Z1045#natural number|WF:HL]]
|-
| {{z|Z1062}} || {{z|Z32780}} || ✅ || ⛓️💥 || [[WF:human languages/Z1062#natural number|WF:HL]]
|-
| {{z|Z1146}} || {{z|Z16163}} || ✅ || ✅ || [[WF:human languages/Z1146#natural number|WF:HL]]
|-
| {{z|Z1272}} || {{z|Z16085}} || ✅ || ✅ || [[WF:human languages/Z1272#natural number|WF:HL]]
|-
| {{z|Z1332}} || {{z|Z15953}} || ✅ || ✅ || [[WF:human languages/Z1332#natural number|WF:HL]]
|-
| {{z|Z1430}} || {{z|Z15963}} || ✅ || ✅ || [[WF:human languages/Z1430#natural number|WF:HL]]
|-
| {{z|Z1531}} || {{z|Z15567}} || ✅ || ✅ || [[WF:human languages/Z1531#natural number|WF:HL]]
|-
| {{z|Z1534}} || {{z|Z16185}} || ✅ || ✅ || [[WF:human languages/Z1534#natural number|WF:HL]]
|-
| {{z|Z1592}} || {{z|Z16008}}<br>{{z|Z37749}} || ✅ || ✅ || [[WF:human languages/Z1592#natural number|WF:HL]]
|-
| {{z|Z1624}} || {{z|Z16184}} || ✅ || ✅ || [[WF:human languages/Z1624#natural number|WF:HL]]
|-
| {{z|Z1882}} || {{z|Z16313}} || ✅ || ❌ || [[WF:human languages/Z1882#natural number|WF:HL]]
|-
| {{z|Z1381}} || {{z|Z16398}} || ❌ || ❌ || [[WF:human languages/Z1381#natural number|WF:HL]]
|-
| {{z|Z1003}} || {{z|Z16431}} || ✅ || ✅ || [[WF:human languages/Z1003#natural number|WF:HL]]
|-
| {{z|Z1472}} || {{z|Z16443}} || ✅ || ✅ || [[WF:human languages/Z1003#natural number|WF:HL]]
|-
| {{z|Z1099}} || {{z|Z16409}} || ✅ || ✅ || [[WF:human languages/Z1099#natural number|WF:HL]]
|-
| {{z|Z1282}} || {{z|Z16608}} || ✅ || ✅ || [[WF:human languages/Z1381#natural number|WF:HL]]
|-
| {{Z|Z1820}} || {{Z|Z19334}} || ✅ || ✅ || [[WF:human languages/Z1820#natural number|WF:HL]]
|-
| {{z|Z1012}} || {{z|Z19484}} || ✅ || ✅ || [[WF:human languages/Z1012#natural number|WF:HL]]
|-
| {{Z|Z1787}} || {{Z|Z23003}} || ✅ || ✅ || [[WF:human languages/Z1787#natural number|WF:HL]]
|-
| {{Z|Z1158}} || {{Z|Z24618}} || ✅ || ✅ || [[WF:human languages/Z1158#natural number|WF:HL]]
|-
| {{Z|Z1078}} || {{Z|Z18546}} || ✅ || ✅ || [[WF:human languages/Z1078#natural number|WF:HL]]
|-
| {{Z|Z1762}} || {{Z|Z22455}} || ✅ || ✅ || [[WF:human languages/Z1762#natural number|WF:HL]]
|}
<span id="See_also"></span>
== Bu nwuan ==
* {{Z|Z16435}}
* {{Z+|Z16437}}
* {{Z|Z14526}}
ob3bktrw543yj49bwed6lfcc8f2n0ou
Wikifunctions:Report a technical problem/kcg
4
68007
296968
279545
2026-08-06T18:03:10Z
FuzzyBot
207
Updating to match new version of source page
296968
wikitext
text/x-wiki
<languages/>
{{shortcut|[[WF:BUG]]}}
{{see also
|Special:MyLanguage/WF:Status|l1=WF:Status
|Special:MyLanguage/WF:Feature_petitions|l2=WF:Feature petitions
}}
<div lang="en" dir="ltr" class="mw-content-ltr">
If you have found a bug in Wikifunctions, or you have a feature request for Wikifunctions, please let us know!
</div>
<span id="Scope"></span>
== Gak ==
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Bug''' - a problem that is producing incorrect or unexpected results on Wikifunctions. Note that problems within Functions themselves are not considered as a bug in this context.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Feature request''' - an idea that the development team can add to Wikifunctions to make it even more awesome.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
Do you need help with something else?
</div>
: <span lang="en" dir="ltr" class="mw-content-ltr">The following are '''out of scope''' of the work of the Wikifunctions development team:</span>
:* <span lang="en" dir="ltr" class="mw-content-ltr">The '''content of individual Functions''' – Discuss those on the talkpage of the Function itself, or ask for help at [[Wikifunctions:Project chat]] or in the channels listed below; if you think a function is missing, see [[Wikifunctions:Suggest a function]]</span>
:* <span lang="en" dir="ltr" class="mw-content-ltr">The '''Wikifunctions project's policies''' – Ask about those at [[Wikifunctions:Project chat]] or in the channels listed below</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Find existing bugs and feature requests ==
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">See '''[[Wikifunctions:Status]]''' for a quick summary of high-level issues.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">You can '''[[phab:maniphest/query/UzvNRqsdnymk/|search the Phabricator]] listing of open tasks''' to see if your bug or feature idea is already documented.</span>
<span id="Discuss_with_others"></span>
== Bwuo nkhang ma̱ng á̱ghyang á̱niet ==
<div lang="en" dir="ltr" class="mw-content-ltr">
You can ask questions about possible bugs or feature ideas at a few locations. This may be helpful if you are unsure how to clearly describe the bug or feature idea:
</div>
* <span class="mw-translate-fuzzy">Wat bwoi nkhang hu a̱ji.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">The main chat on [https://t.me/Wikifunctions Telegram] or IRC {{channel|wikipedia-abstract}} (bridged together) ([https://wm-bot.wmcloud.org/logs/%23wikipedia-abstract/ logs], [https://wm-bot.wmflabs.org/logs/%23wikipedia-abstract/ old logs])</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">The developer chat on [https://t.me/abstract_wikipedia_tech Telegram] or IRC {{channel|wikipedia-abstract-tech}} (bridged together) ([https://wm-bot.wmcloud.org/logs/%23wikipedia-abstract-tech/ logs])</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
== File a task in Phabricator ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If you are familiar with Phabricator, you can search and file tasks directly.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If you are not yet familiar: Phabricator is the web-based development collaboration tool mostly used to manage MediaWiki software projects including Wikifunctions. A short summary about Phabricator for newcomers, including tutorial videos, is on MediaWiki's wiki at [[mw:Special:MyLanguage/Phabricator/Help|mw:Phabricator/Help]].
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">You can '''[[phab:maniphest/query/UzvNRqsdnymk/|search]] the listing of open tasks''' to see if your bug or feature idea is already documented.</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">The existing tasks are collected with the '''[[phab:tag/abstract wikipedia team|#abstract wikipedia team]] tag'''.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">You can '''[https://phabricator.wikimedia.org/maniphest/task/edit/form/43/?projects=abstract_wikipedia file a new task]'''. Please always include:</span>
** Kídee
** <span lang="en" dir="ltr" class="mw-content-ltr">Any relevant links</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">For bugs: The exact steps that produced the bug, so that the team can reproduce and diagnose it.</span>
<span id="Languages"></span>
== Lilyem ==
<div lang="en" dir="ltr" class="mw-content-ltr">
The development team understands a limited number of languages – but you are free to report issues in any language that you're comfortable with.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If possible, please provide a summary in English when creating a phabricator task, or ask someone to help you.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Follow-up ==
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">The locations above are followed by the Wikifunctions development team, as well as community members. The time to get a reply varies depending on the nature or complexity of the topic, etc. However, in general, you can get an answer within 2 workdays. Please let us know if we missed something, as life can get distracting!</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Not all problems can be solved immediately: depending on the impact, priority, etc. some bugs can be triaged to low priority. You may follow the status of your report on the relevant linked phabricator task.</span>
[[Category:Report a technical problem{{#translation:}}]]
nmtcil2hiromle6zgfw1mna1w4c2k7d
Wikifunctions:How to create implementations/kcg
4
68128
296940
276453
2026-08-06T18:02:34Z
FuzzyBot
207
Updating to match new version of source page
296940
wikitext
text/x-wiki
<languages/>
<div lang="en" dir="ltr" class="mw-content-ltr">
This page provides a more detailed guide to '''creating implementations''', beyond the overview at {{ll|Wikifunctions:Introduction}}.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Types of Implementations ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
In Wikifunctions, an '''implementation''' can take one of two main forms: '''code''' or '''composition'''. A code implementation directly expresses the function’s logic in any of the available programming languages (currently, Python3 or JavaScript). It’s most useful when the function’s behavior can’t easily be built from existing Wikifunctions, or when precise control over data processing is needed.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
A composition implementation, on the other hand, defines the function entirely by combining other existing functions, without writing code. Compositions are easier to understand, reuse, and translate into other languages automatically, but they depend on suitable building blocks already being available and often are less performant. In general, start by checking whether your goal can be achieved through composition; if it can’t, or if performance or fine-grained logic matters, choose a code implementation instead.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
There's a third type of implementation: '''built-ins'''. These are run by system-built code, and are not editable. Most likely all pre-defined functions will have a built-in implementation. In such cases, when opening the implementation page, you will see a message stating ''"{{int|wikilambda-implementation-selector-none}}"''
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Practice Test-Driven Development ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
'''Test-Driven Development''', or '''TDD''', is a way of creating software where you write tests before you write the actual code. Tests are just a way of understanding what your function is supposed to do by listing examples and how they should work.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
In Wikifunctions, writing tests first offers significant benefits. If you are working on an implementation, you can run your code against the existing tests to check that it behaves as expected. This makes it easier to catch errors early before even publishing your implementation. Tests are also a powerful way to describe the function you need. By writing tests, '''you clearly communicate the expected behavior''', and the community can step in and help with the implementation, or create alternative implementations.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Imagine you want to implement a Function that combines two strings with a space in between. A basic test for this might look like:
</div>
<syntaxhighlight lang="prolog">
join_with_space( "Hello", "world" ) => "Hello world"
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
Once you have defined the basic behavior, it's important to '''think about edge cases'''—situations where the inputs are such that you might need some special behavior.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For example, what if your first string ends in a space, or your second string starts with a space? Should the function keep all existing spaces and add another one, or should it return a neatly spaced result with just a single space between the words?
Depending on your requirements, you should build a test for such a case. For example, a test for this edge case could be either one of these — but not both!:
</div>
<syntaxhighlight lang="prolog">
join_with_space( "Hello ", " world") => "Hello world"
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
or ...
</div>
<syntaxhighlight lang="prolog">
join_with_space( "Hello ", " world") => "Hello world"
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
Make sure that all possible special cases are covered by your tests, and once you have them, make sure that they are all connected to the Function by selecting them and clicking "Connect".
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Code implementations ==
</div>
[[File:Code implementation.png|thumb|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Wikifunctions code editor initialized with a function template</span>|<span lang="en" dir="ltr" class="mw-content-ltr">When adding a new code implementation, the function template is initialized with the function and argument names</span>]]
<div lang="en" dir="ltr" class="mw-content-ltr">
When creating an implementation using code, the Wikifunctions UI will set up a code editor with the selected language activated for syntax highlighting and validation. When the function to implement and the programming language are selected, this editor will be set with the correct function template: '''do not remove or edit this'''! Keep your code inside this function signature: if you need auxiliary functions, you can simply declare them inside your top-level function declaration.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Using input types in your code ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Wikifunctions types {{Z|Z6}} and {{Z|Z40}} can be used as if they were native types in both JavaScript and Python3. For example, a String input can be concatenated or a Boolean be directly used in a logical expression. To use other types in your code implementations, you will have to look deeper into the type, figure out if it has a conversion to a native equivalent, and treat it accordingly.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For example, let's say we want to write some Python code that handles an input of type {{Z|Z20420}}. In the page for this type, let's look at its "type converters to code" and search for a Python one. The converter {{Z|Z20424}} will be applied to our date input before our code, so looking at "native type" we know that our input will be a Python ''dict'' and looking at the implementation we can see the keys we can expect:
</div>
<syntaxhighlight lang="python3">
return {
'K1': year,
'K2': month,
'K3': day
}
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
When a type doesn't have a converter, you'll have to access its parts directly using its keys. For example, let's assume that your function <code>Z30000</code> has one input <code>Z30000K1</code> of type {{Z|Z11}}. This type has two keys: <code>Z11K1</code> for the language (itself an object of type {{Z|Z60}}), and <code>Z11K2</code> for the string value. Similarly, the language object has a key <code>Z60K1</code> for the language code. So, to get a string with the language code and the text, you can write:
</div>
<syntaxhighlight lang="javascript">
function Z30000( Z30000K1 ) {
// e.g. "en: some text"
return Z30000K1.Z11K1.Z60K1 + ": " + Z30000K1.Z11K2;
}
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
For a quick reference of the available type conversions visit [[Special:MyLanguage/Wikifunctions:Execution targets#Default type conversion|the default type conversion table]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Returning the right outputs ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Similarly to the way you treat inputs, outputs need to match the type specified in the function definition. Some can be treated as simply as native types, so any string output will be converted into a Wikifunctions {{Z|Z6}} object and any native boolean returned by your implementation will be converted into a Wikifunctions {{Z|Z40}} object.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Those types that have "type converters from code" will apply the appropriate function to the output, in order to build the required type. Following the example of {{Z|Z20420}}, the {{Z|Z20443}} will transform the output from your implementation–a dict with K1, K2 and K3 keys–into its correct ZObject representation.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For types that don't have converters from code, you can carefully build and return the output objects. For example, imagine that our function <code>Z30000</code> takes two string inputs: language code and text, and should return a {{Z|Z11}} object. You can do this in Python by using the <code>ZObject</code> constructor:
</div>
<syntaxhighlight lang="python3">
def Z30000(Z30000K1, Z30000K2):
lang_object = ZObject(
{"Z1K1": "Z9", "Z9K1": "Z60"},
Z60K1 = Z30000K1
)
return ZObject(
{"Z1K1": "Z9", "Z9K1": "Z11"},
Z11K1 = lang_object,
Z11K2 = Z30000K2
)
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
Or in JavaScript:
</div>
<syntaxhighlight lang="javascript">
function Z30000( Z30000K1, Z30000K2 ) {
const langObject = new ZObject(
new Map( [ [ "Z60K1", Z30000K1 ] ] ),
{ "Z1K1": "Z9", "Z9K1": "Z60" }
);
const monolingualKeys = new Map( [
[ "Z11K1", langObject ],
[ "Z11K2", Z30000K2 ]
] );
return new ZObject(
monolingualKeys,
{ "Z1K1": "Z9", "Z9K1": "Z11" }
);
}
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
You can learn more about the <code>ZObject</code> class and other useful constructors in {{ll|Wikifunctions:Execution_targets#Custom_and_non-built-in_type_conversion}}
</div>
{{phab|T392750}}<div lang="en" dir="ltr" class="mw-content-ltr">
As of 2026-05, trying to return a list of lists may fail, so you're not able to implement such functions in code.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Code in Python ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
In this section, we give a concrete example on how to create an implementation in the form of Code in Python. Say we want to create an implementation for a Function which combines two input strings by putting a space between them, returning the result of that. Let’s assume the ZID of that function is Z30000.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The implementation is defined using the ZID of the function. So are the arguments of the function. So in the case of the function Z30000 with its two arguments, the function template should look like this:
</div>
<syntaxhighlight lang="python3">
def Z30000(Z30000K1, Z30000K2):
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
As we described before, we know that the arguments (<code>Z30000K1</code> and <code>Z30000K2</code>) are Strings, so we can treat them as simply as we use native strings in Python. Also, the function should return a String. For our example, we simply return the two arguments concatenated with a space in between:
</div>
<syntaxhighlight lang="python3">
def Z30000(Z30000K1, Z30000K2):
return Z30000K1 + " " + Z30000K2
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
Since this is Python, do not forget to indent this line.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If you have followed our advice to [[#Practice Test-Driven Development|practice TDD]], you will already have a set of tests that you know should work. If that's the case, while building your implementation you can click on the circular arrow in the Tests panel, and see if your implementation passes all of them.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Remember that the runtime has no state. Don’t assume values for global or static variables. If you have further questions about what you can and cannot do in Python, ask on [[Wikifunctions:Python implementations]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Code in JavaScript ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
In this section, we give a concrete example on how to create an implementation in the form of Code in JavaScript. Say we want to create an implementation for a Function which combines two input strings by putting a space between them, returning the result of that. Let’s assume the ZID of that function is <code>Z30000</code>.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The implementation is defined using the ZID of the function. So are the arguments of the function. So in the case of the function <code>Z30000</code> with its two arguments, the function template should look like this:
</div>
<syntaxhighlight lang="javascript">
function Z30000( Z30000K1, Z30000K2 ) {
}
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
We know that the arguments (<code>Z30000K1</code> and <code>Z30000K2</code>) are Strings, so we can treat them as native strings in JavaScript. Also, the function should return a String. To complete our function, you can then add a line concatenating the input strings, like this:
</div>
<syntaxhighlight lang="javascript">
function Z30000( Z30000K1, Z30000K2 ) {
return Z30000K1 + " " + Z30000K2;
}
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
If you have tests as recommended in the [[#Practice Test-Driven Development|TDD]] section above, click on the circular arrow in the Tests panel and see if your implementation passes all of them.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Remember that the runtime has no state. Don’t assume values for global or static variables. If you have further questions about what you can and cannot do in JavaScript, ask on [[Wikifunctions:JavaScript implementations]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Compositions ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
In this section, we give a concrete example on how to create an implementation in the form of a composition. Say we want to create an implementation for a Function which combines two input strings by putting a space between them, returning the result of that. Let’s assume the ZID of that function is <code>Z30000</code>.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
It is usually a good idea to first think about how to combine existing functions in order to create the desired output. Sometimes this might be trivial, and you can just go ahead with composing functions, but in many cases it is worthwhile to note the desired composition down.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For example, for the given Function, we could use the existing Function {{Z|Z10000}}. That Function takes two strings and makes one string out of them. But we need to add a space in between. So we first concatenate a space to the end of the first string, and then concatenate the second string to the result of that first concatenation. So our composition could be noted down like this:
</div>
<syntaxhighlight lang="prolog">
join_strings( join_strings( Z30000K1, " " ), Z30000K2 )
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
There are multiple ways to write a composition: notice that the same thing could be accomplished with:
</div>
<syntaxhighlight lang="prolog">
join_strings( Z30000K1, join_strings( " ", Z30000K2 ) )
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
An alternative implementation could also use the existing Function {{Z|Z15175}}, so your composition could be:
</div>
<syntaxhighlight lang="prolog">
join_with_separator( Z30000K1, Z30000K2, " " )
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
As you can see, there are multiple ways to accomplish this, so take your time and explore the existing functions available in the {{ll|Wikifunctions:Catalogue}}.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Let's try to create the second example, <code>join_strings(Z30000K1, join_strings(" ", Z30000K2))</code>.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
In order to create this:
</div>
# <span lang="en" dir="ltr" class="mw-content-ltr">Start adding an implementation by clicking on the "+" button in the "Implementations" table from your Function page.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Make sure that the option "composition" under "Implementation" is selected.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Click on the "›" icon or click the "Select Function" link to expand the function details.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Under "function" search for the name of the outermost function you want to use, which in this example is "join two strings". Then, select the wanted function from the dropdown list.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">You will see two new fields, one for each of the arguments needed for the selected function.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">For the first argument, we want to select the first input to our function:</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "first string", click on the "…" button and select "Argument reference".</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "key id" you can now select the first string of your function from the dropdown, which contains all available inputs.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">For the second argument, we want to use the result of another call to "join two strings":</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "second string", click on the "…" button and select "Function call".</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function", search and select the function you want to call, which is again "join two strings".</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">For this inner function call, configure the "first string" by simply typing a white space in the text field, and configure the "second string" as you did for step 6: change it using the "…" button to "Argument reference", and then select the second argument in the dropdown.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
Your composition is now complete!
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
You can expand and collapse the details using the chevron buttons to see how it looks. If you already have Tests as recommended in the [[#Practice Test-Driven Development|TDD]] section above, click on the circular arrow in the Tests panel and see if your implementation passes the tests. Once your composition passes the tests, go ahead and publish it.
</div>
[[File:Composition implementation expanded.png|frame|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">A Wikifunctions composition implementation in its expanded view</span>|<span lang="en" dir="ltr" class="mw-content-ltr">A Wikifunctions composition implementation in its expanded view</span>]]
[[File:Composition implementation collapsed.png|frame|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">A Wikifunctions composition implementation in its collapsed view</span>|<span lang="en" dir="ltr" class="mw-content-ltr">A Wikifunctions composition implementation in its collapsed view</span>]]
<div lang="en" dir="ltr" class="mw-content-ltr">
== Wikifunctions error handling ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
As a Wikifunctions function creator, you might want to warn the user calling your function when something goes wrong in the code, or when their inputs do not fit a certain criteria. For example, if your Function expects a string input to contain a name, you might want to check that the name is not empty and, if it is, show an error message that the person using your Function can understand.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For this purpose, you can use <code>Wikifunctions.Error()</code> from your code implementations or the function {{Z|Z851}} from your compositions.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
In this section you will learn:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">How to throw errors from both code and composition implementations,</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">how to write tests for error cases, and</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">how to catch and handle errors thrown by functions that you are using in your compositions.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Throwing errors from code implementations ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
When writing code, both from JavaScript and Python, you can use <code>Wikifunctions.Error()</code> to end the execution with a wanted error.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
<code>Wikifunctions.Error()</code> has two parameters:
</div>
# <span lang="en" dir="ltr" class="mw-content-ltr">Error type: a string containing the ZID of the error type you want to return.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Error arguments: a list of string arguments to build the error.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
Let's go one by one:
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Error type ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
An error type is an object that describes a kind of error that could happen in the system. There are a number of built-in error types but you can also build other error types that are more suited to your use case. When using errors, the best idea is to browse through the available error types, which can be explored in [[Special:ListObjectsByType/Z50|this list]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If there are no errors that fit your case, create a new one by going to the create page, and selecting "Error type" in the type selector. Then, set the necessary fields:
</div>
[[File:Error type.png|thumb|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Error type creation in Wikifunctions</span>|<span lang="en" dir="ltr" class="mw-content-ltr">To create new Error type (Z50), edit the label and add the necessary keys.</span>]]
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Label''' – This is the main title of the error, which should contain a short but descriptive message. Set the error label on the right-side box titled "About".</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Keys''' – Keys contain additional information about what caused the error. For example, if an input had the wrong format, you might want to inform the user of what was the input content when raising the error. To use them in your implementations, keys should be strings. To create a key, click on the "[+]" icon below "keys", select "String" under "value type", and add a label that describes it appropriately, for example "current input". Once you have all the necessary keys, you can Publish your error type and keep the ID of the newly created object.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Error arguments ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Error arguments correspond to the keys of the Error type, and they should provide additional information to understand the error. Error arguments should always be Strings.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Using Wikifunctions.Error() ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Say that you want an error to be thrown when either your first or your second input are empty. You have already created the error type, and the assigned ZID was <code>Z30005</code>. Your error type has two string keys:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">Input key: contains the key of the failing input</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Input value: contains the current value of the failing input</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
To raise an error in your JavaScript implementation you should do something like this:
</div>
<syntaxhighlight lang="javascript">
function Z30000( Z30000K1, Z30000K2 ) {
if ( trim( Z30000K1 ) === '' ) {
// If the first input is empty, raise error Z30005
// with two string args: [ first input key, first input value ]
Wikifunctions.Error( 'Z30005', [ "Z30000K1", Z30000K1 ] )
}
if ( trim( Z30000K2 ) === '' ) {
// If the second input is empty, raise error Z30005
// with two string args: [ second input key, second input value ]
Wikifunctions.Error( 'Z30005', [ "Z30000K2", Z30000K2 ] )
}
return Z30000K1 + " " + Z30000K2;
}
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
To raise an error in your Python implementation you should do something like this:
</div>
<syntaxhighlight lang="python3">
def Z30000(Z30000K1, Z30000K2):
if Z30000K1.strip() == "":
# If the first input is empty, raise error Z30005
# with two string args: [ first input key, first input value ]
Wikifunctions.Error("Z30005", ["Z30000K1", Z30000K1])
if Z30000K2.strip() == "":
# If the second input is empty, raise error Z30005
# with two string args: [ first input key, first input value ]
Wikifunctions.Error("Z30005", ["Z30000K2", Z30000K2])
return Z30000K1 + " " + Z30000K2
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
Remember that calling <code>Wikifunctions.Error()</code> ends the execution!
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Throwing errors from compositions ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If you are creating a composition implementation, you can throw an error by calling the special function {{Z|Z851}}.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Throw Error function (Z851) ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The {{Z|Z851}} function is similar to the <code>Wikifunctions.Error()</code> method and takes two arguments:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Error type''' – A reference to the Error type you want to raise</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Error parameters''' – A list with the arguments to create your Error, which should also be Strings.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Using Throw Error ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Say you want to modify your composition so that it first checks that the arguments are not empty, and raises an error when it finds an empty one. Then, if none of them are empty, it runs the original composition, which is:
</div>
<syntaxhighlight lang="prolog">
join_with_separator( Z30000K1, Z30000K2, " " )
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
To do this, you need to create conditional paths, for which you can use the {{Z|Z802}} function. Think of it like this:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">If the first argument is empty, throw an error for the first argument</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Else, proceed to check the second argument</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">If the second argument is empty, throw an error for the second argument</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Else, proceed with the success path and return the joint strings with the space separator</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
Or in functional pseudo code:
</div>
<syntaxhighlight lang="prolog">
if (
is_empty_string( Z30000K1 ),
throw_error( Z30005, [ "Z30000K1", Z30000K1 ] ),
if(
is_empty_string( Z30000K2 ),
throw_error( Z30005, [ "Z30000K2", Z30000K2 ] ),
join_with_separator( Z30000K1, Z30000K2, " " )
)
)
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
Let's create this step by step:
</div>
# <span lang="en" dir="ltr" class="mw-content-ltr">Start adding an implementation by clicking on the "+” button in the "Implementations" table from your Function page.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Make sure that the option "composition" under "Implementation" is selected.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Click on the "›” icon or click the "Select Function" link to expand the function details.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Under "function" search and select the outermost function you want to use, which in this case is "if".</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Check the validity of the first argument:</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "condition", click on the "…" button and select "function call"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function", search and select the function "is empty string"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "input", click on the "…" button and select "argument reference"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "key id", select the first input (e.g. "first string")</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">You can now collapse the "condition" function call if you want, by clicking on the down-chevron next to "condition". You should see something like "f(x) is empty string( → first string )"</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Throw error if the condition is true:</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "then", click on the "…" button and select "function call"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function", search and select the function "Throw Error"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "error type", search and select your error type (you can directly input the error ID if you know it, e.g. Z30005)</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "error parameters", add two items by clicking on the "+" button</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">For "Item 1" (offending argument key), set its type to "String" and write the argument identifier (e.g. "first input", or "Z30000K1")</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">For "Item 2" (offending argument value), click on the "…" next to "Item 2" and select "argument reference"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "key id", select the first input (e.g. "first string")</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">You can now collapse the "then" function call if you want, by clicking on the down-chevron next to "then". You should see something like "f(x) Throw Error( Input was the wrong format, Typed list( Object, "first input", → first string ) )"</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Continue to check the second argument if the first was good:</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "else", click on the "…" button and select "function call"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function", search and select the function "if"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Set up "condition" to check the validity of the second argument by following the same process as described in step 5.</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Set up "then" to throw an error for the second argument by following the same process as described in step 6.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Finally, set up the success path:</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to the nested "else", click on the "…" button and select "function call"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function", search and select the successful function, which in this case can be "join strings with separator"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "first string", click on the "…" button and set it to "argument reference", then select "first string"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "second string", click on the "…" button and set it to "argument reference", then select "second string"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "separator" add a space into the text field</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
The resulting function call should look like this:
</div>
[[File:Throw error expanded.png|frame|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Wikifunctions composition using Throw Error function</span>|<span lang="en" dir="ltr" class="mw-content-ltr">Wikifunctions composition using Throw Error function</span>]]
[[File:Throw error collapsed.png|frame|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Wikifunctions composition using Throw Error function, in its collapsed view</span>|<span lang="en" dir="ltr" class="mw-content-ltr">Wikifunctions composition using Throw Error function, in its collapsed view</span>]]
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Handling errors in compositions ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
While it is useful to allow functions to raise expected errors, it is crucial to be able to handle errors in your compositions in order to safely use these functions.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Say you want to create a new function "full name of a person" – we will refer to it with the ZID <code>Z30010</code>. This function should return the full name of a person given a first and last names, but if any of the two fields are empty, it should return the text "Unknown" instead.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
You could create a composition using our example function "Join two strings with a space" or <code>Z30000</code> to generate the name. If any of the inputs are empty, you know that <code>Z30000</code> will throw an error of type <code>Z30005</code>. Using the function {{Z|Z850}} as a wrapper, you can attempt the join operation and intercept a possible error to simply return "Unknown" whenever it occurs.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Try-Catch function (Z850) ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The {{Z|Z850}} function is built-in with ZID <code>Z850</code> and takes three arguments:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Function call''' – The initial function call to run. If nothing goes wrong, the response will be the result of this function call.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Error type''' – An error type to catch in case it is thrown during the execution of the first function call.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Error handler''' – A function call that will be run in case the error specified above is caught during the execution of the initial function call. If that happens, the result of the error handler will be the value returned.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Using Try-Catch ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Once we have all the functions for our composition, we can craft it like this:
</div>
<syntaxhighlight lang="prolog">
try_catch(
join_with_space( Z30010K1, Z30010K2 ),
Z30005,
echo( "Unknown" )
)
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
This means that:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">The "Join two strings with a space" function will be tried with the two inputs and, if everything goes well, the output of this function will be returned</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">If any of the inputs are blank, "Join two strings with a space" with raise an error of type <code>Z30005</code></span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Our {{Z|Z850}} will then detect this error and run the {{Z|Z801}} function to return "Unknown"</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
Let's create this step by step:
</div>
# <span lang="en" dir="ltr" class="mw-content-ltr">Start adding an implementation by clicking on the "+" button in the "Implementations" table from your Function page.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Make sure that the option "composition" under "Implementation" is selected.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Click on the "›” icon or click the "Select Function" link to expand the function details.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Under "function" search and select the outermost function you want to use, which in this case is "Try-Catch".</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Set the main function call:</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under the field where the "Try-Catch" function is selected, next to the "function call" key, click on the "…" button and select "function call"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function" search and select the function "join two strings with space"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "first string", click on the "…" button and select "argument reference", then select the "first name" argument from the dropdown.</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "second string", click on the "…" button and select "argument reference", then select the "second name" argument from the dropdown.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Select the error to catch:</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "error type", search and select "bad string input" – you can search directly by its ZID <code>Z30005</code></span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Set the error handler function call:</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "error handler", click on the "…" button and select "function call"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function", search and select the function "echo"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "input" and "type", search and select the type "String"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Now, under "input", type "Unknown" in the text field</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
The resulting function should look like this:
</div>
[[File:Try catch expanded.png|frame|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Wikifunctions composition using Try-catch function, in expanded mode</span>|<span lang="en" dir="ltr" class="mw-content-ltr">Wikifunctions composition using Try-catch function, in expanded mode</span>]]
[[File:Try catch collapsed.png|frame|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Wikifunctions composition using Try-catch function, in collapsed mode</span>|<span lang="en" dir="ltr" class="mw-content-ltr">Wikifunctions composition using Try-catch function, in collapsed mode</span>]]
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Testing your failure use cases ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
As we introduced in the above section about [[#Practice Test-Driven Development|practicing TDD]], it's important to test not only the most common paths, but also the possible edge cases. It is equally important to test failure behavior. In this section we will give you the tools necessary to test that your function fails with a given set of inputs, and that the error thrown is the expected one.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
To do that, you will need other two system functions:
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Is error type (Z852) ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The {{Z|Z852}} function is built-in with ZID <code>Z852</code> and takes two arguments:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Error''' – An {{Z|Z5}} object, which can be thrown by a failing call. An error instance has a type and a value.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Error type''' – A reference to an {{Z|Z50}} which will be compared to the type of the Error passed as a first argument. If that's the case, the function will return true.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Get error thrown by function call (Z853) ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The {{Z|Z853}} function is built-in with ZID <code>Z853</code> and takes one argument:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Function call''' – A function call which can either return a successful value of any type, or throw an error.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
This function returns a {{Z|Z882}} with a {{Z|Z40}} in first place and an {{Z|Z1}} in the second:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">If the Function call runs successfully and hence does not throw any error, the returned pair will contain False in the first place, and void in the second.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">If the Function call throws an error, the returned pair will contain True in the first place, and the caught error in the second.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
To use this function in your compositions, you might need to use the additional functions:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z821}}, and</span>
* {{Z|Z822}}
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Testing errors ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Say our target function, "Join two strings with a space" or <code>Z30000</code>, throws an error of type <code>Z30005</code> and we want to test this behavior. To do that we need to:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">Throw a failing function call</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Get the error using the function {{Z|Z853}}</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Check that the error is the right type with {{Z|Z852}}</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
Tests have two fields:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Call''' – A function call that will produce an output with the inputs you want to test. This call will return a value.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Result validation''' – A function call that will validate that the value returned by the call above is the expected one. The first argument of this function call will be automatically assigned to take the return value of the first call.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
For step-by-step instructions on how to create tests, see {{ll|Wikifunctions:Introduction#Create_tests}}.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
In our example, we can structure it like this — but this is not the only way!
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The call, which will return an {{Z|Z5}} object:
</div>
<syntaxhighlight lang="prolog">
error = get_second_element_of_typed_list(
get_error_thrown_by(
join_strings_by_whitespace( "", "not empty" )
)
)
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
And the result validation, which will take the {{Z|Z5}} object as its first argument:
</div>
<syntaxhighlight lang="prolog">
is_error_type( error, Z30005 )
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
Let's do this step by step:
</div>
# <span lang="en" dir="ltr" class="mw-content-ltr">Start adding a test by clicking on the "+" button in the "Tests" table from your Function page. The "call" and "result validation" fields already have some functions pre-set, but to test the errors we will need to change them.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">First, let's set the call:</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "call", click the "›" chevron button to expand the function call.</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function", edit the field and search and select the function "Get second element of a typed pair"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Once selected, next to "Typed pair", click on the "…" button and select "function call"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function", search and select the function "Get error thrown by function call"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "function call", click on the "…" button and select "function call"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function", search and select the function "Join two strings with a space" (or by ZID <code>Z30000</code>)</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Now set the inputs so that they cause a failure: at least one of them should be empty.</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">You can now collapse your "call" by clicking again on the down-chevron button if you want!</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Next, let's set the result validation:</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "result validation", click the "›" chevron button to expand the function call.</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function", edit the field and search and select the function "Is error type"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Now you will only be asked to configure the second argument. Under "error type", search and select your <code>Z30005</code> error type.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">And you are done! You can now click the circular arrow in the "Implementations" box and you should see green checks.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
If everything went right, you can now save your test. It should look like this:
</div>
[[File:Get error expanded.png|frame|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Testing a failure using Get error and Is error type functions, in expanded mode</span>|<span lang="en" dir="ltr" class="mw-content-ltr">Testing a failure using Get error and Is error type functions, in expanded mode</span>]]
[[File:Get error collapsed.png|frame|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Testing a failure using Get error and Is error type functions, in collapsed mode</span>|<span lang="en" dir="ltr" class="mw-content-ltr">Testing a failure using Get error and Is error type functions, in collapsed mode</span>]]
<div lang="en" dir="ltr" class="mw-content-ltr">
== Debugging your implementations ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Sometimes things can go wrong. A function might behave differently than expected or a value might not look quite right. Sometimes implementations are really complex and, because they are run in a sandboxed environment, it can seem really difficult to debug. To help understand what's going on inside a function call, Wikifunctions includes a small set of debugging tools.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
These tools don't change the result of a function, but will add extra information to the returned metadata, which you can observe after running the function. You can use <code>Wikifunctions.Debug()</code> from your code implementations or the function {{Z|Z854}} from your compositions.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
In this section you will learn:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">How to add debug messages from both code and composition implementations,</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">how to inspect the metadata manually or via the UI to inspect these logs.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Debugging your code implementations ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
When writing code, both from JavaScript and Python3, you can use <code>Wikifunctions.Debug()</code> to add a message to your debugging log and continue the execution.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
<code>Wikifunctions.Debug()</code> has one parameter, which is generally expected to be a string. However, any other object passed as parameter will get directly converted into a string.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If we want to add debug logs to our code implementations for our "Join two strings with a space" example function, we can do, in JavaScript:
</div>
<syntaxhighlight lang="JavaScript">
function Z30000( Z30000K1, Z30000K2 ) {
if ( trim( Z30000K1 ) === '' ) {
Wikifunctions.Debug( `first input is empty "${ Z30000K1 }"` );
Wikifunctions.Error( 'Z30005', [ "Z30000K1", Z30000K1 ] )
}
if ( trim( Z30000K2 ) === '' ) {
Wikifunctions.Debug( `second input is empty "${ Z30000K2 }"` );
Wikifunctions.Error( 'Z30005', [ "Z30000K2", Z30000K2 ] )
}
Wikifunctions.Debug( "both inputs are fine" );
return Z30000K1 + " " + Z30000K2;
}
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
And the same in your Python3 implementation will be:
</div>
<syntaxhighlight lang="python3">
def Z30000(Z30000K1, Z30000K2):
if Z30000K1.strip() == "":
Wikifunctions.Debug( 'first input is empty "'+Z30000K1+'"' )
Wikifunctions.Error("Z30005", ["Z30000K1", Z30000K1])
if Z30000K2.strip() == "":
Wikifunctions.Debug( 'second input is empty "'+Z30000K2+'"' )
Wikifunctions.Error("Z30005", ["Z30000K2", Z30000K2])
Wikifunctions.Debug( 'both inputs are fine' )
return Z30000K1 + " " + Z30000K2
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
This way, no matter what happens, we will be adding one message to your debugging logs:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">If the function call fails when checking on the first or second input, the result of the execution will be a failure, but it will contain one informative log about what branch caused the failure.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">If the function call succeeds—because both inputs are valid—the function call will return the joined string, but the returned metadata will also contain a debug log.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Debugging your compositions ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
To support debugging compositions, Wikifunctions provides the built-in function {{Z|Z854}}. This function allows you to attach debug messages to the execution of any function call that generates the final output. The debug logs collected during the evaluation are returned as part of the execution metadata, under the <code>executorDebugLogs</code> key.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Add debug log to function call (Z854) ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The {{Z|Z854}} function is built-in with ZID <code>Z854</code> and takes two arguments:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Function call''' – Any composition you want to execute.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Debug log''' – A string message that will be recorded if the given function call is evaluated.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
When the wrapped function call runs, the provided message is added to the execution logs. If that function call is not executed, or its execution is not part of the final output, its debug log will not appear in the final result metadata.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
You will benefit from this built-in if you want to observe:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">Which branch of a conditional was executed, or</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">the order of evaluation in a composition.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Using Add debug log to function call ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Say that you want to add debug logs to our example function "Join two strings with a space" or <code>Z30000</code>, so that different messages are added to the different possible outcomes. You could use our debugging builtin like this:
</div>
<syntaxhighlight lang="prolog">
if (
is_empty_string( Z30000K1 ),
add_debug_log( throw_error( Z30005, ... ), 'failed on first input' )
if(
is_empty_string( Z30000K2 ),
add_debug_log( throw_error( Z30005, ... ), 'failed on second input' ),
add_debug_log(
join_with_separator( Z30000K1, Z30000K2, " " ),
'both inputs are ok!'
)
)
)
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
This way,
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">when called with an empty first input, the function will return a failed response, and the metadata will contain an <code>executorDebugLogs</code> entry with the "failed on first input" log.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">When called with an empty second input, the call will also fail, but the logged message will be "failed on second input"</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">When called with valid inputs, the function will return a successful response, and additionally the metadata will contain "both inputs are ok" in its <code>executorDebugLogs</code> key.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
This is the way this composition would look:
</div>
[[File:Add debug log expanded.png|frame|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Composition implementation using Add debug logs to log all possible execution paths</span>|<span lang="en" dir="ltr" class="mw-content-ltr">Composition implementation using Add debug logs to log all possible execution paths</span>]]
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Accessing execution debug logs ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Whether your execution logs are added via <code>Wikifunctions.Debug()</code> or via the {{Z|Z854}} built-in function, they are returned as part of the response metadata. To see the logs, once you run your function, click on the "Details" button that appears at the bottom of the "Result" section.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The error and debug information will appear at the top of the "Details" dialog.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
This is what you would see when running the composition from our previous example with valid and invalid inputs:
</div>
{| class="wikitable"
| [[File:Execution logs success.png|frameless|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Function metadata dialog for a successful execution with debug logs</span>]]
| [[File:Execution logs failure.png|frameless|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Function metadata dialog for a failed execution with debug logs</span>]]
|-
| <span lang="en" dir="ltr" class="mw-content-ltr">Function metadata dialog for a successful execution: shows no errors, but displays the successful execution log: ''"both inputs are ok!"''</span>
| <span lang="en" dir="ltr" class="mw-content-ltr">Function metadata dialog for a failed execution: shows the error information, and the additional execution log for the first failure branch: ''"failed on first input"''</span>
|}
[[Category:How to create implementations| {{#translation:}}]]
2v139cocj0b6uo7wq0pk7ua9xy8wvqb
Wikifunctions:Documentation/kcg
4
68261
296902
227729
2026-08-06T18:00:32Z
FuzzyBot
207
Updating to match new version of source page
296902
wikitext
text/x-wiki
{{move|Help:Z21121}}
{{about|individual Functions|instructions on how to use {{SITENAME}}|Help:Contents}}
<languages/>
==[[Z21121]]==
===Z21121K1===
<div lang="en" dir="ltr" class="mw-content-ltr">
A string to represent a number. The number can be an integer, a decimal, or an (im)proper fraction. The value represents the quantity in the from unit. A "." acts as a decimal point, all commas are removed for processing.
</div>
<span id="Examples"></span>
====Kídee====
* -1
* 5.289
* 5/4
<span id="Z21121K2_and_Z21121K3"></span>
===Z21121K2 ma̱ng Z21121K3===
<div lang="en" dir="ltr" class="mw-content-ltr">
A string to represent a unit in a proprietary system. Units with exponents (like meters squared) can be represented by adding the exponent to the end of the unit expression. Division of units (like kilometers per hour) can be represented by adding a "/." Only one division is used per unit, everything to the right of the "/" is considered to be in the denominator. Multiplication is done by just putting units together. Z21121K2 represents the unit of Z21121K1, and Z21121K3 represents the unit of the conversion output. Both should be in the same dimension.
</div>
<span id="Examples"></span>
====Kídee====
* <span lang="en" dir="ltr" class="mw-content-ltr">"m2" -> meters squared</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">"cm/s" -> centimeters per second</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">"cWhm/b" -> centiwatt hour meters per bit</span>
===Z21121K4===
<div lang="en" dir="ltr" class="mw-content-ltr">
An integer to represent rounding of the output number. 0 rounds to the whole number, positive numbers round to the number of decimal places, negative numbers round further than whole numbers.
</div>
<span id="Examples"></span>
====Kídee====
* 0 -> si̱ ku shyia̱ kpa̱mkpaan a̱ swak a̱ni
* <span lang="en" dir="ltr" class="mw-content-ltr">3 -> nearest thousandth</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">4 -> nearest ten thousand</span>
===Z21121K5-K7===
<div lang="en" dir="ltr" class="mw-content-ltr">
Do not do anything yet, require greater Wikidata support.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
===Output===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
A string that includes both quantities and their units.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
====Examples====
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">0 C (32 F)</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">10 km (10,000 m)</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">1 m<sup>2</sup> (1,000,000 mm<sup>2</sup>)</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
===Available units===
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">m/Meter*</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">mi/Mile</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">ft/Foot</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">yd/Yard</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">in/Inch</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">NM/Nautical Mile</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">au/Astronomical Unit</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">ly/Light Year</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Å/Angstrom</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">fur/Furlong</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">ftm/Fathom</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">cb/Cable</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">ch/Chain</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">rd/Rod</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">li/Link</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">s/Second*</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">min/Minute</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">h/Hour</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">d/Day</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">wk/Week</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">mo/Month</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">y/Year</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">g/Gram*</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">lb/Pound</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">oz/Ounce</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">b/Bit**</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">B/Byte**</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Pa/Pascal*</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">bar/Bar*</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">atm/Standard Atmosphere</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">mHg/Meter of Mercury*</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">psi/Pound per Square Inch</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">J/Joule*</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">cal/Thermochemical Calorie</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">eV/Electronvolt</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">BTU/British Thermal Unit</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Wh/Watt-Hour*</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">K/Kelvin***</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">C/Celsius***</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">F/Fahrenheit***</span>
<nowiki/>*<span lang="en" dir="ltr" class="mw-content-ltr">Supports metric prefixes</span>
<br>**<span lang="en" dir="ltr" class="mw-content-ltr">Supports metric prefixes, base 10 instead of standard 2</span>
<br>***<span lang="en" dir="ltr" class="mw-content-ltr">Handled separately</span>
[[Category:Help{{#translation:}}]]
nn927nrt2v38m2b50g792rbdrtnl7os
Template:Main page/News/de
10
69043
297029
295095
2026-08-06T18:06:31Z
Ameisenigel
44
Created page with "$1: Abstrakte Wikipedia bei der Wikimania"
297029
wikitext
text/x-wiki
<noinclude><languages /></noinclude>
; Freiwilligentreffen
* Das nächste Freiwilligentreffen findet am <bdi lang="en" dir="ltr">[https://zonestamp.toolforge.org/1788802200 17:30 UTC on 2026-09-07]</bdi> auf <bdi lang="en" dir="ltr">Google Meet</bdi> unter <bdi lang="en" dir="ltr">[https://meet.google.com/xuy-njxh-rkw meet.google.com/xuy-njxh-rkw]</bdi> statt.
* Das [[:c:File:Abstract Wikipedia Volunteer Corner 2026-07.webm|letzte Freiwilligentreffen]] ist auf Commons verfügbar
; Aktuelle Neuigkeiten zum Status von Wikifunctions
<!--Keep this to the most recent 5 entries-->
* {{Status updates|2026-07-29}}: Abstrakte Wikipedia bei der Wikimania
* {{Status updates|2026-07-16}}: Über syntaktische Tabellen hinaus
* {{Status updates|2026-07-08}}: Auf dem Weg zu unserem ersten Meilenstein bei der Integration der Abstrakten Wikipedia
* {{Status updates|2026-07-01}}: Integration im Test-Wiki und Jahresplan
* {{Status updates|2026-06-26}}: Arbeit an Funktionen, gemeinsam
[[Special:MyLanguage/Wikifunctions:Status updates|<span class="mw-ui-button mw-ui-constructive mw-ui-small">Weitere Neuigkeiten</span>]]
lkxp57a2e6g064f53k7tjz5eqj7clq8
Z29844
0
69319
297104
292167
2026-08-07T04:24:16Z
99of9
1622
297104
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z29844"
},
"Z2K2": {
"Z1K1": "Z14294",
"Z14294K1": [
"Z14293",
{
"Z1K1": "Z14293",
"Z14293K1": "Z29849",
"Z14293K2": "Z33034"
},
{
"Z1K1": "Z14293",
"Z14293K1": "Z32175",
"Z14293K2": [
"Z60",
"Z1531"
]
}
],
"Z14294K2": "Z38945"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "config for ordinal class location fragment"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
2eapctl9x06bhz9pjrly9vb4uabocyz
Z29845
0
69320
297114
231668
2026-08-07T04:38:54Z
99of9
1622
extend for optional language variant
297114
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z29845"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z27627",
"Z14K2": {
"Z1K1": "Z7",
"Z7K1": "Z38948",
"Z38948K1": {
"Z1K1": "Z7",
"Z7K1": "Z14310",
"Z14310K1": "Z29844",
"Z14310K2": {
"Z1K1": "Z18",
"Z18K1": "Z27627K6"
}
},
"Z38948K2": {
"Z1K1": "Z18",
"Z18K1": "Z27627K1"
},
"Z38948K3": {
"Z1K1": "Z18",
"Z18K1": "Z27627K2"
},
"Z38948K4": {
"Z1K1": "Z18",
"Z18K1": "Z27627K3"
},
"Z38948K5": {
"Z1K1": "Z18",
"Z18K1": "Z27627K4"
},
"Z38948K6": {
"Z1K1": "Z18",
"Z18K1": "Z27627K5"
},
"Z38948K7": {
"Z1K1": "Z18",
"Z18K1": "Z27627K6"
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "ordinal class location fragment, composition"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
flqfwrtwweyyypxnbhxg9vbiwpao4fz
Wikifunctions:How to create implementations/sr-ec
4
71819
296946
276459
2026-08-06T18:02:39Z
FuzzyBot
207
Updating to match new version of source page
296946
wikitext
text/x-wiki
<languages/>
<div lang="en" dir="ltr" class="mw-content-ltr">
This page provides a more detailed guide to '''creating implementations''', beyond the overview at {{ll|Wikifunctions:Introduction}}.
</div>
<span id="Types_of_Implementations"></span>
== Врсте Имплементација ==
<div lang="en" dir="ltr" class="mw-content-ltr">
In Wikifunctions, an '''implementation''' can take one of two main forms: '''code''' or '''composition'''. A code implementation directly expresses the function’s logic in any of the available programming languages (currently, Python3 or JavaScript). It’s most useful when the function’s behavior can’t easily be built from existing Wikifunctions, or when precise control over data processing is needed.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
A composition implementation, on the other hand, defines the function entirely by combining other existing functions, without writing code. Compositions are easier to understand, reuse, and translate into other languages automatically, but they depend on suitable building blocks already being available and often are less performant. In general, start by checking whether your goal can be achieved through composition; if it can’t, or if performance or fine-grained logic matters, choose a code implementation instead.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
There's a third type of implementation: '''built-ins'''. These are run by system-built code, and are not editable. Most likely all pre-defined functions will have a built-in implementation. In such cases, when opening the implementation page, you will see a message stating ''"{{int|wikilambda-implementation-selector-none}}"''
</div>
<span id="Practice_Test-Driven_Development"></span>
== Практикујте Развој Вођен Тестовима ==
<div lang="en" dir="ltr" class="mw-content-ltr">
'''Test-Driven Development''', or '''TDD''', is a way of creating software where you write tests before you write the actual code. Tests are just a way of understanding what your function is supposed to do by listing examples and how they should work.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
In Wikifunctions, writing tests first offers significant benefits. If you are working on an implementation, you can run your code against the existing tests to check that it behaves as expected. This makes it easier to catch errors early before even publishing your implementation. Tests are also a powerful way to describe the function you need. By writing tests, '''you clearly communicate the expected behavior''', and the community can step in and help with the implementation, or create alternative implementations.
</div>
Замислите да желите да имплементирате Функцију која спаја два стринга са размаком између. Основни тест за ову функцију би могао да изгледа овако:
<syntaxhighlight lang="prolog">
join_with_space( "Hello", "world" ) => "Hello world"
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
Once you have defined the basic behavior, it's important to '''think about edge cases'''—situations where the inputs are such that you might need some special behavior.
</div>
На пример, шта ако се први стринг завршава размаком, или други стринг почиње размаком? Да ли би функција требало да задржи постојеће размаке и дода још један, или да врати резултат са само једним размаком између речи?
У зависности од Ваших потреба, требало би написати тест за овај случај. На пример, тест за овај гранични случај би могао да изгледа као један од ова два:
<syntaxhighlight lang="prolog">
join_with_space( "Hello ", " world") => "Hello world"
</syntaxhighlight>
или
<syntaxhighlight lang="prolog">
join_with_space( "Hello ", " world") => "Hello world"
</syntaxhighlight>
Пробајте да покријете све могуће граничне случајеве тестовима. Након што завршите са писањем тестова, повежите их са функцијом кликом на дугме „Повежи”.
<div lang="en" dir="ltr" class="mw-content-ltr">
== Code implementations ==
</div>
[[File:Code implementation.png|thumb|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Wikifunctions code editor initialized with a function template</span>|<span lang="en" dir="ltr" class="mw-content-ltr">When adding a new code implementation, the function template is initialized with the function and argument names</span>]]
<div lang="en" dir="ltr" class="mw-content-ltr">
When creating an implementation using code, the Wikifunctions UI will set up a code editor with the selected language activated for syntax highlighting and validation. When the function to implement and the programming language are selected, this editor will be set with the correct function template: '''do not remove or edit this'''! Keep your code inside this function signature: if you need auxiliary functions, you can simply declare them inside your top-level function declaration.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Using input types in your code ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Wikifunctions types {{Z|Z6}} and {{Z|Z40}} can be used as if they were native types in both JavaScript and Python3. For example, a String input can be concatenated or a Boolean be directly used in a logical expression. To use other types in your code implementations, you will have to look deeper into the type, figure out if it has a conversion to a native equivalent, and treat it accordingly.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For example, let's say we want to write some Python code that handles an input of type {{Z|Z20420}}. In the page for this type, let's look at its "type converters to code" and search for a Python one. The converter {{Z|Z20424}} will be applied to our date input before our code, so looking at "native type" we know that our input will be a Python ''dict'' and looking at the implementation we can see the keys we can expect:
</div>
<syntaxhighlight lang="python3">
return {
'K1': year,
'K2': month,
'K3': day
}
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
When a type doesn't have a converter, you'll have to access its parts directly using its keys. For example, let's assume that your function <code>Z30000</code> has one input <code>Z30000K1</code> of type {{Z|Z11}}. This type has two keys: <code>Z11K1</code> for the language (itself an object of type {{Z|Z60}}), and <code>Z11K2</code> for the string value. Similarly, the language object has a key <code>Z60K1</code> for the language code. So, to get a string with the language code and the text, you can write:
</div>
<syntaxhighlight lang="javascript">
function Z30000( Z30000K1 ) {
// e.g. "en: some text"
return Z30000K1.Z11K1.Z60K1 + ": " + Z30000K1.Z11K2;
}
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
For a quick reference of the available type conversions visit [[Special:MyLanguage/Wikifunctions:Execution targets#Default type conversion|the default type conversion table]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Returning the right outputs ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Similarly to the way you treat inputs, outputs need to match the type specified in the function definition. Some can be treated as simply as native types, so any string output will be converted into a Wikifunctions {{Z|Z6}} object and any native boolean returned by your implementation will be converted into a Wikifunctions {{Z|Z40}} object.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Those types that have "type converters from code" will apply the appropriate function to the output, in order to build the required type. Following the example of {{Z|Z20420}}, the {{Z|Z20443}} will transform the output from your implementation–a dict with K1, K2 and K3 keys–into its correct ZObject representation.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For types that don't have converters from code, you can carefully build and return the output objects. For example, imagine that our function <code>Z30000</code> takes two string inputs: language code and text, and should return a {{Z|Z11}} object. You can do this in Python by using the <code>ZObject</code> constructor:
</div>
<syntaxhighlight lang="python3">
def Z30000(Z30000K1, Z30000K2):
lang_object = ZObject(
{"Z1K1": "Z9", "Z9K1": "Z60"},
Z60K1 = Z30000K1
)
return ZObject(
{"Z1K1": "Z9", "Z9K1": "Z11"},
Z11K1 = lang_object,
Z11K2 = Z30000K2
)
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
Or in JavaScript:
</div>
<syntaxhighlight lang="javascript">
function Z30000( Z30000K1, Z30000K2 ) {
const langObject = new ZObject(
new Map( [ [ "Z60K1", Z30000K1 ] ] ),
{ "Z1K1": "Z9", "Z9K1": "Z60" }
);
const monolingualKeys = new Map( [
[ "Z11K1", langObject ],
[ "Z11K2", Z30000K2 ]
] );
return new ZObject(
monolingualKeys,
{ "Z1K1": "Z9", "Z9K1": "Z11" }
);
}
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
You can learn more about the <code>ZObject</code> class and other useful constructors in {{ll|Wikifunctions:Execution_targets#Custom_and_non-built-in_type_conversion}}
</div>
{{phab|T392750}}<div lang="en" dir="ltr" class="mw-content-ltr">
As of 2026-05, trying to return a list of lists may fail, so you're not able to implement such functions in code.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Code in Python ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
In this section, we give a concrete example on how to create an implementation in the form of Code in Python. Say we want to create an implementation for a Function which combines two input strings by putting a space between them, returning the result of that. Let’s assume the ZID of that function is Z30000.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The implementation is defined using the ZID of the function. So are the arguments of the function. So in the case of the function Z30000 with its two arguments, the function template should look like this:
</div>
<syntaxhighlight lang="python3">
def Z30000(Z30000K1, Z30000K2):
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
As we described before, we know that the arguments (<code>Z30000K1</code> and <code>Z30000K2</code>) are Strings, so we can treat them as simply as we use native strings in Python. Also, the function should return a String. For our example, we simply return the two arguments concatenated with a space in between:
</div>
<syntaxhighlight lang="python3">
def Z30000(Z30000K1, Z30000K2):
return Z30000K1 + " " + Z30000K2
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
Since this is Python, do not forget to indent this line.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If you have followed our advice to [[#Practice Test-Driven Development|practice TDD]], you will already have a set of tests that you know should work. If that's the case, while building your implementation you can click on the circular arrow in the Tests panel, and see if your implementation passes all of them.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Remember that the runtime has no state. Don’t assume values for global or static variables. If you have further questions about what you can and cannot do in Python, ask on [[Wikifunctions:Python implementations]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Code in JavaScript ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
In this section, we give a concrete example on how to create an implementation in the form of Code in JavaScript. Say we want to create an implementation for a Function which combines two input strings by putting a space between them, returning the result of that. Let’s assume the ZID of that function is <code>Z30000</code>.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The implementation is defined using the ZID of the function. So are the arguments of the function. So in the case of the function <code>Z30000</code> with its two arguments, the function template should look like this:
</div>
<syntaxhighlight lang="javascript">
function Z30000( Z30000K1, Z30000K2 ) {
}
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
We know that the arguments (<code>Z30000K1</code> and <code>Z30000K2</code>) are Strings, so we can treat them as native strings in JavaScript. Also, the function should return a String. To complete our function, you can then add a line concatenating the input strings, like this:
</div>
<syntaxhighlight lang="javascript">
function Z30000( Z30000K1, Z30000K2 ) {
return Z30000K1 + " " + Z30000K2;
}
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
If you have tests as recommended in the [[#Practice Test-Driven Development|TDD]] section above, click on the circular arrow in the Tests panel and see if your implementation passes all of them.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Remember that the runtime has no state. Don’t assume values for global or static variables. If you have further questions about what you can and cannot do in JavaScript, ask on [[Wikifunctions:JavaScript implementations]].
</div>
<span id="Compositions"></span>
== Композиције ==
<div lang="en" dir="ltr" class="mw-content-ltr">
In this section, we give a concrete example on how to create an implementation in the form of a composition. Say we want to create an implementation for a Function which combines two input strings by putting a space between them, returning the result of that. Let’s assume the ZID of that function is <code>Z30000</code>.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
It is usually a good idea to first think about how to combine existing functions in order to create the desired output. Sometimes this might be trivial, and you can just go ahead with composing functions, but in many cases it is worthwhile to note the desired composition down.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For example, for the given Function, we could use the existing Function {{Z|Z10000}}. That Function takes two strings and makes one string out of them. But we need to add a space in between. So we first concatenate a space to the end of the first string, and then concatenate the second string to the result of that first concatenation. So our composition could be noted down like this:
</div>
<syntaxhighlight lang="prolog">
join_strings( join_strings( Z30000K1, " " ), Z30000K2 )
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
There are multiple ways to write a composition: notice that the same thing could be accomplished with:
</div>
<syntaxhighlight lang="prolog">
join_strings( Z30000K1, join_strings( " ", Z30000K2 ) )
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
An alternative implementation could also use the existing Function {{Z|Z15175}}, so your composition could be:
</div>
<syntaxhighlight lang="prolog">
join_with_separator( Z30000K1, Z30000K2, " " )
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
As you can see, there are multiple ways to accomplish this, so take your time and explore the existing functions available in the {{ll|Wikifunctions:Catalogue}}.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Let's try to create the second example, <code>join_strings(Z30000K1, join_strings(" ", Z30000K2))</code>.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
In order to create this:
</div>
# <span lang="en" dir="ltr" class="mw-content-ltr">Start adding an implementation by clicking on the "+" button in the "Implementations" table from your Function page.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Make sure that the option "composition" under "Implementation" is selected.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Click on the "›" icon or click the "Select Function" link to expand the function details.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Under "function" search for the name of the outermost function you want to use, which in this example is "join two strings". Then, select the wanted function from the dropdown list.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">You will see two new fields, one for each of the arguments needed for the selected function.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">For the first argument, we want to select the first input to our function:</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "first string", click on the "…" button and select "Argument reference".</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "key id" you can now select the first string of your function from the dropdown, which contains all available inputs.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">For the second argument, we want to use the result of another call to "join two strings":</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "second string", click on the "…" button and select "Function call".</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function", search and select the function you want to call, which is again "join two strings".</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">For this inner function call, configure the "first string" by simply typing a white space in the text field, and configure the "second string" as you did for step 6: change it using the "…" button to "Argument reference", and then select the second argument in the dropdown.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
Your composition is now complete!
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
You can expand and collapse the details using the chevron buttons to see how it looks. If you already have Tests as recommended in the [[#Practice Test-Driven Development|TDD]] section above, click on the circular arrow in the Tests panel and see if your implementation passes the tests. Once your composition passes the tests, go ahead and publish it.
</div>
[[File:Composition implementation expanded.png|frame|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">A Wikifunctions composition implementation in its expanded view</span>|<span lang="en" dir="ltr" class="mw-content-ltr">A Wikifunctions composition implementation in its expanded view</span>]]
[[File:Composition implementation collapsed.png|frame|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">A Wikifunctions composition implementation in its collapsed view</span>|<span lang="en" dir="ltr" class="mw-content-ltr">A Wikifunctions composition implementation in its collapsed view</span>]]
<span id="Wikifunctions_error_handling"></span>
== Обрада грешака на Викифункцијама ==
<div lang="en" dir="ltr" class="mw-content-ltr">
As a Wikifunctions function creator, you might want to warn the user calling your function when something goes wrong in the code, or when their inputs do not fit a certain criteria. For example, if your Function expects a string input to contain a name, you might want to check that the name is not empty and, if it is, show an error message that the person using your Function can understand.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For this purpose, you can use <code>Wikifunctions.Error()</code> from your code implementations or the function {{Z|Z851}} from your compositions.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
In this section you will learn:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">How to throw errors from both code and composition implementations,</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">how to write tests for error cases, and</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">how to catch and handle errors thrown by functions that you are using in your compositions.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Throwing errors from code implementations ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
When writing code, both from JavaScript and Python, you can use <code>Wikifunctions.Error()</code> to end the execution with a wanted error.
</div>
<code>Wikifunctions.Error()</code> има два параметра:
# Тип грешке: стринг који садржи ZID врсте грешке коју желите да вратите.
# <span lang="en" dir="ltr" class="mw-content-ltr">Error arguments: a list of string arguments to build the error.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
Let's go one by one:
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Error type ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
An error type is an object that describes a kind of error that could happen in the system. There are a number of built-in error types but you can also build other error types that are more suited to your use case. When using errors, the best idea is to browse through the available error types, which can be explored in [[Special:ListObjectsByType/Z50|this list]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If there are no errors that fit your case, create a new one by going to the create page, and selecting "Error type" in the type selector. Then, set the necessary fields:
</div>
[[File:Error type.png|thumb|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Error type creation in Wikifunctions</span>|<span lang="en" dir="ltr" class="mw-content-ltr">To create new Error type (Z50), edit the label and add the necessary keys.</span>]]
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Label''' – This is the main title of the error, which should contain a short but descriptive message. Set the error label on the right-side box titled "About".</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Keys''' – Keys contain additional information about what caused the error. For example, if an input had the wrong format, you might want to inform the user of what was the input content when raising the error. To use them in your implementations, keys should be strings. To create a key, click on the "[+]" icon below "keys", select "String" under "value type", and add a label that describes it appropriately, for example "current input". Once you have all the necessary keys, you can Publish your error type and keep the ID of the newly created object.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Error arguments ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Error arguments correspond to the keys of the Error type, and they should provide additional information to understand the error. Error arguments should always be Strings.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Using Wikifunctions.Error() ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Say that you want an error to be thrown when either your first or your second input are empty. You have already created the error type, and the assigned ZID was <code>Z30005</code>. Your error type has two string keys:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">Input key: contains the key of the failing input</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Input value: contains the current value of the failing input</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
To raise an error in your JavaScript implementation you should do something like this:
</div>
<syntaxhighlight lang="javascript">
function Z30000( Z30000K1, Z30000K2 ) {
if ( trim( Z30000K1 ) === '' ) {
// If the first input is empty, raise error Z30005
// with two string args: [ first input key, first input value ]
Wikifunctions.Error( 'Z30005', [ "Z30000K1", Z30000K1 ] )
}
if ( trim( Z30000K2 ) === '' ) {
// If the second input is empty, raise error Z30005
// with two string args: [ second input key, second input value ]
Wikifunctions.Error( 'Z30005', [ "Z30000K2", Z30000K2 ] )
}
return Z30000K1 + " " + Z30000K2;
}
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
To raise an error in your Python implementation you should do something like this:
</div>
<syntaxhighlight lang="python3">
def Z30000(Z30000K1, Z30000K2):
if Z30000K1.strip() == "":
# If the first input is empty, raise error Z30005
# with two string args: [ first input key, first input value ]
Wikifunctions.Error("Z30005", ["Z30000K1", Z30000K1])
if Z30000K2.strip() == "":
# If the second input is empty, raise error Z30005
# with two string args: [ first input key, first input value ]
Wikifunctions.Error("Z30005", ["Z30000K2", Z30000K2])
return Z30000K1 + " " + Z30000K2
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
Remember that calling <code>Wikifunctions.Error()</code> ends the execution!
</div>
<span id="Throwing_errors_from_compositions"></span>
=== Бацање грешака у композицијама ===
Ако правите композицију, можете бацити грешку позивом посебне функције {{Z|Z851}}.
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Throw Error function (Z851) ====
</div>
Функција {{Z|Z851}} је слична методи <code>Wikifunctions.Error()</code> и прима два аргумента:
* '''Врста грешке''' – Референца на Врсту грешке коју желите да баците
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Error parameters''' – A list with the arguments to create your Error, which should also be Strings.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Using Throw Error ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Say you want to modify your composition so that it first checks that the arguments are not empty, and raises an error when it finds an empty one. Then, if none of them are empty, it runs the original composition, which is:
</div>
<syntaxhighlight lang="prolog">
join_with_separator( Z30000K1, Z30000K2, " " )
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
To do this, you need to create conditional paths, for which you can use the {{Z|Z802}} function. Think of it like this:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">If the first argument is empty, throw an error for the first argument</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Else, proceed to check the second argument</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">If the second argument is empty, throw an error for the second argument</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Else, proceed with the success path and return the joint strings with the space separator</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
Or in functional pseudo code:
</div>
<syntaxhighlight lang="prolog">
if (
is_empty_string( Z30000K1 ),
throw_error( Z30005, [ "Z30000K1", Z30000K1 ] ),
if(
is_empty_string( Z30000K2 ),
throw_error( Z30005, [ "Z30000K2", Z30000K2 ] ),
join_with_separator( Z30000K1, Z30000K2, " " )
)
)
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
Let's create this step by step:
</div>
# <span lang="en" dir="ltr" class="mw-content-ltr">Start adding an implementation by clicking on the "+” button in the "Implementations" table from your Function page.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Make sure that the option "composition" under "Implementation" is selected.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Click on the "›” icon or click the "Select Function" link to expand the function details.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Under "function" search and select the outermost function you want to use, which in this case is "if".</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Check the validity of the first argument:</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "condition", click on the "…" button and select "function call"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function", search and select the function "is empty string"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "input", click on the "…" button and select "argument reference"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "key id", select the first input (e.g. "first string")</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">You can now collapse the "condition" function call if you want, by clicking on the down-chevron next to "condition". You should see something like "f(x) is empty string( → first string )"</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Throw error if the condition is true:</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "then", click on the "…" button and select "function call"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function", search and select the function "Throw Error"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "error type", search and select your error type (you can directly input the error ID if you know it, e.g. Z30005)</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "error parameters", add two items by clicking on the "+" button</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">For "Item 1" (offending argument key), set its type to "String" and write the argument identifier (e.g. "first input", or "Z30000K1")</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">For "Item 2" (offending argument value), click on the "…" next to "Item 2" and select "argument reference"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "key id", select the first input (e.g. "first string")</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">You can now collapse the "then" function call if you want, by clicking on the down-chevron next to "then". You should see something like "f(x) Throw Error( Input was the wrong format, Typed list( Object, "first input", → first string ) )"</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Continue to check the second argument if the first was good:</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "else", click on the "…" button and select "function call"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function", search and select the function "if"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Set up "condition" to check the validity of the second argument by following the same process as described in step 5.</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Set up "then" to throw an error for the second argument by following the same process as described in step 6.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Finally, set up the success path:</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to the nested "else", click on the "…" button and select "function call"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function", search and select the successful function, which in this case can be "join strings with separator"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "first string", click on the "…" button and set it to "argument reference", then select "first string"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "second string", click on the "…" button and set it to "argument reference", then select "second string"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "separator" add a space into the text field</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
The resulting function call should look like this:
</div>
[[File:Throw error expanded.png|frame|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Wikifunctions composition using Throw Error function</span>|<span lang="en" dir="ltr" class="mw-content-ltr">Wikifunctions composition using Throw Error function</span>]]
[[File:Throw error collapsed.png|frame|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Wikifunctions composition using Throw Error function, in its collapsed view</span>|<span lang="en" dir="ltr" class="mw-content-ltr">Wikifunctions composition using Throw Error function, in its collapsed view</span>]]
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Handling errors in compositions ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
While it is useful to allow functions to raise expected errors, it is crucial to be able to handle errors in your compositions in order to safely use these functions.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Say you want to create a new function "full name of a person" – we will refer to it with the ZID <code>Z30010</code>. This function should return the full name of a person given a first and last names, but if any of the two fields are empty, it should return the text "Unknown" instead.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
You could create a composition using our example function "Join two strings with a space" or <code>Z30000</code> to generate the name. If any of the inputs are empty, you know that <code>Z30000</code> will throw an error of type <code>Z30005</code>. Using the function {{Z|Z850}} as a wrapper, you can attempt the join operation and intercept a possible error to simply return "Unknown" whenever it occurs.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Try-Catch function (Z850) ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The {{Z|Z850}} function is built-in with ZID <code>Z850</code> and takes three arguments:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Function call''' – The initial function call to run. If nothing goes wrong, the response will be the result of this function call.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Error type''' – An error type to catch in case it is thrown during the execution of the first function call.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Error handler''' – A function call that will be run in case the error specified above is caught during the execution of the initial function call. If that happens, the result of the error handler will be the value returned.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Using Try-Catch ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Once we have all the functions for our composition, we can craft it like this:
</div>
<syntaxhighlight lang="prolog">
try_catch(
join_with_space( Z30010K1, Z30010K2 ),
Z30005,
echo( "Unknown" )
)
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
This means that:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">The "Join two strings with a space" function will be tried with the two inputs and, if everything goes well, the output of this function will be returned</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">If any of the inputs are blank, "Join two strings with a space" with raise an error of type <code>Z30005</code></span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Our {{Z|Z850}} will then detect this error and run the {{Z|Z801}} function to return "Unknown"</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
Let's create this step by step:
</div>
# <span lang="en" dir="ltr" class="mw-content-ltr">Start adding an implementation by clicking on the "+" button in the "Implementations" table from your Function page.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Make sure that the option "composition" under "Implementation" is selected.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Click on the "›” icon or click the "Select Function" link to expand the function details.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Under "function" search and select the outermost function you want to use, which in this case is "Try-Catch".</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Set the main function call:</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under the field where the "Try-Catch" function is selected, next to the "function call" key, click on the "…" button and select "function call"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function" search and select the function "join two strings with space"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "first string", click on the "…" button and select "argument reference", then select the "first name" argument from the dropdown.</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "second string", click on the "…" button and select "argument reference", then select the "second name" argument from the dropdown.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Select the error to catch:</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "error type", search and select "bad string input" – you can search directly by its ZID <code>Z30005</code></span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Set the error handler function call:</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "error handler", click on the "…" button and select "function call"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function", search and select the function "echo"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "input" and "type", search and select the type "String"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Now, under "input", type "Unknown" in the text field</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
The resulting function should look like this:
</div>
[[File:Try catch expanded.png|frame|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Wikifunctions composition using Try-catch function, in expanded mode</span>|<span lang="en" dir="ltr" class="mw-content-ltr">Wikifunctions composition using Try-catch function, in expanded mode</span>]]
[[File:Try catch collapsed.png|frame|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Wikifunctions composition using Try-catch function, in collapsed mode</span>|<span lang="en" dir="ltr" class="mw-content-ltr">Wikifunctions composition using Try-catch function, in collapsed mode</span>]]
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Testing your failure use cases ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
As we introduced in the above section about [[#Practice Test-Driven Development|practicing TDD]], it's important to test not only the most common paths, but also the possible edge cases. It is equally important to test failure behavior. In this section we will give you the tools necessary to test that your function fails with a given set of inputs, and that the error thrown is the expected one.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
To do that, you will need other two system functions:
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Is error type (Z852) ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The {{Z|Z852}} function is built-in with ZID <code>Z852</code> and takes two arguments:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Error''' – An {{Z|Z5}} object, which can be thrown by a failing call. An error instance has a type and a value.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Error type''' – A reference to an {{Z|Z50}} which will be compared to the type of the Error passed as a first argument. If that's the case, the function will return true.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Get error thrown by function call (Z853) ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The {{Z|Z853}} function is built-in with ZID <code>Z853</code> and takes one argument:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Function call''' – A function call which can either return a successful value of any type, or throw an error.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
This function returns a {{Z|Z882}} with a {{Z|Z40}} in first place and an {{Z|Z1}} in the second:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">If the Function call runs successfully and hence does not throw any error, the returned pair will contain False in the first place, and void in the second.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">If the Function call throws an error, the returned pair will contain True in the first place, and the caught error in the second.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
To use this function in your compositions, you might need to use the additional functions:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z821}}, and</span>
* {{Z|Z822}}
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Testing errors ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Say our target function, "Join two strings with a space" or <code>Z30000</code>, throws an error of type <code>Z30005</code> and we want to test this behavior. To do that we need to:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">Throw a failing function call</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Get the error using the function {{Z|Z853}}</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Check that the error is the right type with {{Z|Z852}}</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
Tests have two fields:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Call''' – A function call that will produce an output with the inputs you want to test. This call will return a value.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Result validation''' – A function call that will validate that the value returned by the call above is the expected one. The first argument of this function call will be automatically assigned to take the return value of the first call.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
For step-by-step instructions on how to create tests, see {{ll|Wikifunctions:Introduction#Create_tests}}.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
In our example, we can structure it like this — but this is not the only way!
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The call, which will return an {{Z|Z5}} object:
</div>
<syntaxhighlight lang="prolog">
error = get_second_element_of_typed_list(
get_error_thrown_by(
join_strings_by_whitespace( "", "not empty" )
)
)
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
And the result validation, which will take the {{Z|Z5}} object as its first argument:
</div>
<syntaxhighlight lang="prolog">
is_error_type( error, Z30005 )
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
Let's do this step by step:
</div>
# <span lang="en" dir="ltr" class="mw-content-ltr">Start adding a test by clicking on the "+" button in the "Tests" table from your Function page. The "call" and "result validation" fields already have some functions pre-set, but to test the errors we will need to change them.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">First, let's set the call:</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "call", click the "›" chevron button to expand the function call.</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function", edit the field and search and select the function "Get second element of a typed pair"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Once selected, next to "Typed pair", click on the "…" button and select "function call"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function", search and select the function "Get error thrown by function call"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Next to "function call", click on the "…" button and select "function call"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function", search and select the function "Join two strings with a space" (or by ZID <code>Z30000</code>)</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Now set the inputs so that they cause a failure: at least one of them should be empty.</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">You can now collapse your "call" by clicking again on the down-chevron button if you want!</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Next, let's set the result validation:</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "result validation", click the "›" chevron button to expand the function call.</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Under "function", edit the field and search and select the function "Is error type"</span>
## <span lang="en" dir="ltr" class="mw-content-ltr">Now you will only be asked to configure the second argument. Under "error type", search and select your <code>Z30005</code> error type.</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">And you are done! You can now click the circular arrow in the "Implementations" box and you should see green checks.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
If everything went right, you can now save your test. It should look like this:
</div>
[[File:Get error expanded.png|frame|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Testing a failure using Get error and Is error type functions, in expanded mode</span>|<span lang="en" dir="ltr" class="mw-content-ltr">Testing a failure using Get error and Is error type functions, in expanded mode</span>]]
[[File:Get error collapsed.png|frame|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Testing a failure using Get error and Is error type functions, in collapsed mode</span>|<span lang="en" dir="ltr" class="mw-content-ltr">Testing a failure using Get error and Is error type functions, in collapsed mode</span>]]
<div lang="en" dir="ltr" class="mw-content-ltr">
== Debugging your implementations ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Sometimes things can go wrong. A function might behave differently than expected or a value might not look quite right. Sometimes implementations are really complex and, because they are run in a sandboxed environment, it can seem really difficult to debug. To help understand what's going on inside a function call, Wikifunctions includes a small set of debugging tools.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
These tools don't change the result of a function, but will add extra information to the returned metadata, which you can observe after running the function. You can use <code>Wikifunctions.Debug()</code> from your code implementations or the function {{Z|Z854}} from your compositions.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
In this section you will learn:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">How to add debug messages from both code and composition implementations,</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">how to inspect the metadata manually or via the UI to inspect these logs.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Debugging your code implementations ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
When writing code, both from JavaScript and Python3, you can use <code>Wikifunctions.Debug()</code> to add a message to your debugging log and continue the execution.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
<code>Wikifunctions.Debug()</code> has one parameter, which is generally expected to be a string. However, any other object passed as parameter will get directly converted into a string.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If we want to add debug logs to our code implementations for our "Join two strings with a space" example function, we can do, in JavaScript:
</div>
<syntaxhighlight lang="JavaScript">
function Z30000( Z30000K1, Z30000K2 ) {
if ( trim( Z30000K1 ) === '' ) {
Wikifunctions.Debug( `first input is empty "${ Z30000K1 }"` );
Wikifunctions.Error( 'Z30005', [ "Z30000K1", Z30000K1 ] )
}
if ( trim( Z30000K2 ) === '' ) {
Wikifunctions.Debug( `second input is empty "${ Z30000K2 }"` );
Wikifunctions.Error( 'Z30005', [ "Z30000K2", Z30000K2 ] )
}
Wikifunctions.Debug( "both inputs are fine" );
return Z30000K1 + " " + Z30000K2;
}
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
And the same in your Python3 implementation will be:
</div>
<syntaxhighlight lang="python3">
def Z30000(Z30000K1, Z30000K2):
if Z30000K1.strip() == "":
Wikifunctions.Debug( 'first input is empty "'+Z30000K1+'"' )
Wikifunctions.Error("Z30005", ["Z30000K1", Z30000K1])
if Z30000K2.strip() == "":
Wikifunctions.Debug( 'second input is empty "'+Z30000K2+'"' )
Wikifunctions.Error("Z30005", ["Z30000K2", Z30000K2])
Wikifunctions.Debug( 'both inputs are fine' )
return Z30000K1 + " " + Z30000K2
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
This way, no matter what happens, we will be adding one message to your debugging logs:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">If the function call fails when checking on the first or second input, the result of the execution will be a failure, but it will contain one informative log about what branch caused the failure.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">If the function call succeeds—because both inputs are valid—the function call will return the joined string, but the returned metadata will also contain a debug log.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Debugging your compositions ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
To support debugging compositions, Wikifunctions provides the built-in function {{Z|Z854}}. This function allows you to attach debug messages to the execution of any function call that generates the final output. The debug logs collected during the evaluation are returned as part of the execution metadata, under the <code>executorDebugLogs</code> key.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Add debug log to function call (Z854) ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The {{Z|Z854}} function is built-in with ZID <code>Z854</code> and takes two arguments:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Function call''' – Any composition you want to execute.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">'''Debug log''' – A string message that will be recorded if the given function call is evaluated.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
When the wrapped function call runs, the provided message is added to the execution logs. If that function call is not executed, or its execution is not part of the final output, its debug log will not appear in the final result metadata.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
You will benefit from this built-in if you want to observe:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">Which branch of a conditional was executed, or</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">the order of evaluation in a composition.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Using Add debug log to function call ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Say that you want to add debug logs to our example function "Join two strings with a space" or <code>Z30000</code>, so that different messages are added to the different possible outcomes. You could use our debugging builtin like this:
</div>
<syntaxhighlight lang="prolog">
if (
is_empty_string( Z30000K1 ),
add_debug_log( throw_error( Z30005, ... ), 'failed on first input' )
if(
is_empty_string( Z30000K2 ),
add_debug_log( throw_error( Z30005, ... ), 'failed on second input' ),
add_debug_log(
join_with_separator( Z30000K1, Z30000K2, " " ),
'both inputs are ok!'
)
)
)
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
This way,
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">when called with an empty first input, the function will return a failed response, and the metadata will contain an <code>executorDebugLogs</code> entry with the "failed on first input" log.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">When called with an empty second input, the call will also fail, but the logged message will be "failed on second input"</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">When called with valid inputs, the function will return a successful response, and additionally the metadata will contain "both inputs are ok" in its <code>executorDebugLogs</code> key.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
This is the way this composition would look:
</div>
[[File:Add debug log expanded.png|frame|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Composition implementation using Add debug logs to log all possible execution paths</span>|<span lang="en" dir="ltr" class="mw-content-ltr">Composition implementation using Add debug logs to log all possible execution paths</span>]]
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Accessing execution debug logs ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Whether your execution logs are added via <code>Wikifunctions.Debug()</code> or via the {{Z|Z854}} built-in function, they are returned as part of the response metadata. To see the logs, once you run your function, click on the "Details" button that appears at the bottom of the "Result" section.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The error and debug information will appear at the top of the "Details" dialog.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
This is what you would see when running the composition from our previous example with valid and invalid inputs:
</div>
{| class="wikitable"
| [[File:Execution logs success.png|frameless|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Function metadata dialog for a successful execution with debug logs</span>]]
| [[File:Execution logs failure.png|frameless|center|alt=<span lang="en" dir="ltr" class="mw-content-ltr">Function metadata dialog for a failed execution with debug logs</span>]]
|-
| <span lang="en" dir="ltr" class="mw-content-ltr">Function metadata dialog for a successful execution: shows no errors, but displays the successful execution log: ''"both inputs are ok!"''</span>
| <span lang="en" dir="ltr" class="mw-content-ltr">Function metadata dialog for a failed execution: shows the error information, and the additional execution log for the first failure branch: ''"failed on first input"''</span>
|}
[[Category:How to create implementations| {{#translation:}}]]
sgcgn7qktuq8fpcxqkrb26r2k0t9vc0
Template:Documentation subpage/fr
10
72175
297007
240606
2026-08-06T18:04:30Z
FuzzyBot
207
Updating to match new version of source page
297007
wikitext
text/x-wiki
<noinclude><languages/></noinclude><includeonly>{{#if:{{IsDocSubpage|override={{{override|doc}}}}}
| <!--doc subpage--></includeonly>{{#ifeq:{{{doc-notice|show}}}|show
| {{Ombox|type=notice|image=[[File:OOjs UI icon articles-ltr.svg|35px|link=|class=skin-invert-image]]
|text='''Ceci est une [[mw:Special:MyLanguage/Help:Subpages|sous-page]] de [[Special:MyLanguage/Help:Template documentation|documentation]] pour {{#if:{{{1|}}}
| {{{1}}}
| [[:{{SUBJECTSPACE}}:{{BASEPAGENAME}}]]
}}.'''<br/> Elle contient les informations d'utilisation, les [[Special:MyLanguage/Help:Categorization|catégories]] et autre contenu qui ne fait pas partie de la page du modèle original<!--
--> {{#if: {{{text2|}}}
| {{{text2|}}}
| {{#if: {{{text1|}}}
| {{{text1|}}}
| {{#ifeq: {{SUBJECTSPACE}} | {{ns:User}}
| {{lc:{{SUBJECTSPACE}}}}
| {{#if: {{SUBJECTSPACE}}
| {{lc:{{SUBJECTSPACE}}}} page
| article
}}
}}
}}
}}.
}}
<!--If not on a doc subpage, do nothing-->}}{{DEFAULTSORT:{{{defaultsort|{{PAGENAME}}}}}}}{{#if: {{{inhibit|}}}
| <!--Skip-->
| <includeonly>{{#ifexist: {{NAMESPACE}}:{{BASEPAGENAME}}
| [[Category:{{#switch: {{SUBJECTSPACE}}
|Template=Template
|Module=Module
|User=User
|#default=Template
}} documentation pages{{#translation:}}]]
| [[Category:Documentation subpages without corresponding pages{{#translation:}}]]
}}</includeonly>
}}<includeonly>
}}</includeonly><noinclude>{{Documentation}}[[Category:Template documentation]]<!--Add categories and interwikis to the /doc subpage, not here!--></noinclude>
jqf1hql800cxxz9xfbo5i64jydy4f8k
Wikifunctions:Design/fr
4
74558
296893
247716
2026-08-06T18:00:04Z
FuzzyBot
207
Updating to match new version of source page
296893
wikitext
text/x-wiki
<languages/>
{{see also
|Special:MyLanguage/WF:Status|l1=WF:Status
|Special:MyLanguage/WF:Feature_petitions|l2=WF:Feature petitions
}}
Cette page répertorie les activités de l'équipe concernant les améliorations de la conception du site web.
<span id="Current_design_improvements"></span>
== Améliorations actuelles de l'architecture ==
* [[Wikifunctions:Design/Lexeme Sense Selection UI|Interface utilisateur de la sélection du sens des lexèmes]]
* [[Special:MyLanguage/Wikifunctions:Design/Naming conventions recommendations|Recommandations à propos des conventions de nommage]]
<span id="Implemented_design_improvements"></span>
== Améliorations de l'architecture déjà réalisées ==
* [[Special:MyLanguage/Wikifunctions:Design/About widget improvements|A propos de l'amélioration des ''widgets'']]
[[Category:Project concept{{#translation:}}]]
9iouvzzk0cjqjzjbs3m7jd8bzefqx6k
Wikifunctions:Documentation/fr
4
74789
296899
250241
2026-08-06T18:00:31Z
FuzzyBot
207
Updating to match new version of source page
296899
wikitext
text/x-wiki
{{move|Help:Z21121}}
{{about|individual Functions|instructions on how to use {{SITENAME}}|Help:Contents}}
<languages/>
==[[Z21121]]==
===Z21121K1===
Chaîne pour représenter un nombre. Le nombre peut être un entier, un décimal ou une fraction (im)propre. La valeur représente la quantité dans l'unité. Un "." agit comme un point décimal, toutes les virgules sont retirés pour le traitement.
<span id="Examples"></span>
==== Exemples ====
* -1
* 5.289
* 5/4
<span id="Z21121K2_and_Z21121K3"></span>
=== Z21121K2 et Z21121K3 ===
Chaîne pour représenter une unité dans un système propriétaire. Les unités avec des exposants (comme les mètres carrés) peuvent être représentées en ajoutant l'exposant à la fin de l'expression des unités. La division des unités (comme des kilomètres par heure) peut être représentée en ajoutant un "/. " Une seule division est utilisée par unité, tout à droite du "/" est considéré comme dans le dénominateur. La multiplication se fait en mettant simplement des unités ensemble. Z21121K2 représente l'unité de Z21122K1 et Z21121K3 représente l'unité de la sortie de conversion. Les deux doivent avoir la même dimension.
<span id="Examples"></span>
==== Exemples ====
* "m2" -> mètres carrés
* "cm/s" -> centimètres par seconde
* "cWhm/b" -> centiwatt heure mètres par bit
===Z21121K4===
Un nombre entier pour représenter l'arrondi du nombre de sortie. 0 arrondit au nombre entier, un nombre positif arrondit au nombre de décimales, un nombre négatif arrondit plus au-delà des nombres entiers.
<span id="Examples"></span>
==== Exemples ====
* 0 -> unité la plus proche
* 3 -> millier le plus proche
* 4 -> dizaine de milliers la plus proche
===Z21121K5-K7===
Ne fait rien pour l'instant, nécessite une prise en charge approfondie de Wikidata.
<span id="Output"></span>
=== Sorties ===
Chaîne qui comprend à la fois les quantités et leurs unités.
<span id="Examples"></span>
==== Exemples ====
* 0 C (32 F)
* 10 km (10 000 m)
* 1 m<sup>2</sup> (1 000 000 mm<sup>2</sup>)
<span id="Available_units"></span>
=== Unités disponibles ===
* m/mètre*
* mi/mile
* ft/pied
* yd/yard
* in/pouce
* NM/mile nautique
* au/unité astronomique
* ly/année lumière
* Å/angström
* fur/furlong
* ftm/fathom
* cb/cable
* ch/chaîne
* rd/rod
* li/lien
* s/seconde*
* min/minute
* h/heure
* d/jour
* wk/semaine
* mo/mois
* y/année
* g/gramme*
* lb/livre
* oz/once
* b/bit**
* B/octet**
* Pa/pascal*
* bar/bar*
* atm/atmosphère
* mHg/mètre de mercure*
* psi/livre par pouce carré
* J/joule*
* cal/calorie thermochimique
* eV/électron volt
* BTU/unité thermique britannique
* Wh/watt heure*
* K/kelvin***
* C/celsius***
* F/fahrenheit***
<nowiki/>*Prend en charge les préfixes métriques
<br>**Prend en charge les préfixes métriques, en base 10 (au lieu de la base 2 standard)
<br>***Géré séparément
[[Category:Help{{#translation:}}]]
mttrrkz580y9azvuwrq953qwaqabrnz
Template:Documentation subpage/nl
10
75126
297013
249217
2026-08-06T18:04:33Z
FuzzyBot
207
Updating to match new version of source page
297013
wikitext
text/x-wiki
<noinclude><languages/></noinclude><includeonly>{{#if:{{IsDocSubpage|override={{{override|doc}}}}}
| <!--doc subpage--></includeonly>{{#ifeq:{{{doc-notice|show}}}|show
| {{Ombox|type=notice|image=[[File:OOjs UI icon articles-ltr.svg|35px|link=|class=skin-invert-image]]
|text='''Dit is een [[Special:MyLanguage/Help:Template documentation|documentatie]] [[mw:Special:MyLanguage/Help:Subpages|subpagina]] van {{#if:{{{1|}}}
| {{{1}}}
| [[:{{SUBJECTSPACE}}:{{BASEPAGENAME}}]]
}}.'''<br/> Het bevat informatie over het gebruik van [[Special:MyLanguage/Help:Categorization|categorieën]], en andere inhoud die geen deel is van de originele<!--
--> {{#if: {{{text2|}}}
| {{{text2|}}}
| {{#if: {{{text1|}}}
| {{{text1|}}}
| {{#ifeq: {{SUBJECTSPACE}} | {{ns:User}}
| {{lc:{{SUBJECTSPACE}}}} sjabloonpagina
| {{#if: {{SUBJECTSPACE}}
| {{lc:{{SUBJECTSPACE}}}} pagina
| artikel
}}
}}
}}
}}.
}}
<!--If not on a doc subpage, do nothing-->}}{{DEFAULTSORT:{{{defaultsort|{{PAGENAME}}}}}}}{{#if: {{{inhibit|}}}
| <!--Skip-->
| <includeonly>{{#ifexist: {{NAMESPACE}}:{{BASEPAGENAME}}
| [[Category:{{#switch: {{SUBJECTSPACE}}
|Template=Template
|Module=Module
|User=User
|#default=Template
}} documentation pages{{#translation:}}]]
| [[Category:Documentation subpages without corresponding pages{{#translation:}}]]
}}</includeonly>
}}<includeonly>
}}</includeonly><noinclude>{{Documentation}}[[Category:Template documentation]]<!--Add categories and interwikis to the /doc subpage, not here!--></noinclude>
pkfzq69izlqszgpez464jbobel4y8up
Wikifunctions:Cardinal numbers/nl
4
75592
296882
261563
2026-08-06T17:59:47Z
FuzzyBot
207
Updating to match new version of source page
296882
wikitext
text/x-wiki
<languages/>
{{Move|Wikifunctions:Catalogue/Natural language operations/Cardinal numbers|reason=This page is a list of functions, but is outside the catalogue}}
We zoeken functies om namen van getallen in veel verschillende talen te creëren. In de [[Special:MyLanguage/Wikifunctions:Status updates/2024-05-15|nieuwsbrief van 15 mei 2024]] deden we een oproep om Functies!
Op deze pagina verzamelen en vermelden we de bestaande functies en gerelateerde objecten om het werk te coördineren.
De functies hebben als invoer een [[Z13518|natuurlijk getal]] en geven een [[Z6|string (tekenreeks)]] terug. Er kunnen meer dan één functie per taal zijn.
<span id="Languages_covered"></span>
== Talen met deze functie ==
Er zijn er tot nu toe {{FORMATNUM:27}}.
{| class="wikitable sortable"
|+ functies per [[Special:ListObjectsByType/Z60|taal]]
|-
! Taal !! Functie !! Getest !! Geïmplementeerd !! Planning
|-
| {{z|Z1002}} || {{z|Z13587}} || ✅ || ✅ || [[WF:human languages/Z1002#natural number|WF:HL]]
|-
| {{z|Z1004}} || {{z|Z16093}} || ✅ || ✅ || [[WF:human languages/Z1004#natural number|WF:HL]]
|-
| {{z|Z1011}} || {{z|Z16150}} || ✅ || ✅ || [[WF:human languages/Z1011#natural number|WF:HL]]
|-
| {{z|Z1014}} || {{z|Z16053}} || ✅ || ✅ || [[WF:human languages/Z1014#natural number|WF:HL]]
|-
| {{z|Z1025}} || {{z|Z15965}} || ✅ || ✅ || [[WF:human languages/Z1025#natural number|WF:HL]]
|-
| {{z|Z1045}} || {{z|Z16172}} || ✅ || ✅ || [[WF:human languages/Z1045#natural number|WF:HL]]
|-
| {{z|Z1062}} || {{z|Z32780}} || ✅ || ⛓️💥 || [[WF:human languages/Z1062#natural number|WF:HL]]
|-
| {{z|Z1146}} || {{z|Z16163}} || ✅ || ✅ || [[WF:human languages/Z1146#natural number|WF:HL]]
|-
| {{z|Z1272}} || {{z|Z16085}} || ✅ || ✅ || [[WF:human languages/Z1272#natural number|WF:HL]]
|-
| {{z|Z1332}} || {{z|Z15953}} || ✅ || ✅ || [[WF:human languages/Z1332#natural number|WF:HL]]
|-
| {{z|Z1430}} || {{z|Z15963}} || ✅ || ✅ || [[WF:human languages/Z1430#natural number|WF:HL]]
|-
| {{z|Z1531}} || {{z|Z15567}} || ✅ || ✅ || [[WF:human languages/Z1531#natural number|WF:HL]]
|-
| {{z|Z1534}} || {{z|Z16185}} || ✅ || ✅ || [[WF:human languages/Z1534#natural number|WF:HL]]
|-
| {{z|Z1592}} || {{z|Z16008}}<br>{{z|Z37749}} || ✅ || ✅ || [[WF:human languages/Z1592#natural number|WF:HL]]
|-
| {{z|Z1624}} || {{z|Z16184}} || ✅ || ✅ || [[WF:human languages/Z1624#natural number|WF:HL]]
|-
| {{z|Z1882}} || {{z|Z16313}} || ✅ || ❌ || [[WF:human languages/Z1882#natural number|WF:HL]]
|-
| {{z|Z1381}} || {{z|Z16398}} || ❌ || ❌ || [[WF:human languages/Z1381#natural number|WF:HL]]
|-
| {{z|Z1003}} || {{z|Z16431}} || ✅ || ✅ || [[WF:human languages/Z1003#natural number|WF:HL]]
|-
| {{z|Z1472}} || {{z|Z16443}} || ✅ || ✅ || [[WF:human languages/Z1003#natural number|WF:HL]]
|-
| {{z|Z1099}} || {{z|Z16409}} || ✅ || ✅ || [[WF:human languages/Z1099#natural number|WF:HL]]
|-
| {{z|Z1282}} || {{z|Z16608}} || ✅ || ✅ || [[WF:human languages/Z1381#natural number|WF:HL]]
|-
| {{Z|Z1820}} || {{Z|Z19334}} || ✅ || ✅ || [[WF:human languages/Z1820#natural number|WF:HL]]
|-
| {{z|Z1012}} || {{z|Z19484}} || ✅ || ✅ || [[WF:human languages/Z1012#natural number|WF:HL]]
|-
| {{Z|Z1787}} || {{Z|Z23003}} || ✅ || ✅ || [[WF:human languages/Z1787#natural number|WF:HL]]
|-
| {{Z|Z1158}} || {{Z|Z24618}} || ✅ || ✅ || [[WF:human languages/Z1158#natural number|WF:HL]]
|-
| {{Z|Z1078}} || {{Z|Z18546}} || ✅ || ✅ || [[WF:human languages/Z1078#natural number|WF:HL]]
|-
| {{Z|Z1762}} || {{Z|Z22455}} || ✅ || ✅ || [[WF:human languages/Z1762#natural number|WF:HL]]
|}
<span id="See_also"></span>
== Zie ook ==
* {{Z|Z16435}}
* {{Z+|Z16437}}
* {{Z|Z14526}}
kdamedtb6d87l8ejl70kau20l46z4zc
Wikifunctions:Report a technical problem/nl
4
75935
296969
279548
2026-08-06T18:03:11Z
FuzzyBot
207
Updating to match new version of source page
296969
wikitext
text/x-wiki
<languages/>
{{shortcut|[[WF:BUG]]}}
{{see also
|Special:MyLanguage/WF:Status|l1=WF:Status
|Special:MyLanguage/WF:Feature_petitions|l2=WF:Feature petitions
}}
Als u een bug in Wikifuncties heeft gevonden, of een functieaanvraag heeft voor Wikifunctiens, laat het ons weten!
== Scope ==
* '''Bug''' - een probleem dat onjuiste of onverwachte resultaten oplevert op Wikifuncties. Let op dat problemen binnen Functies zelf in deze context niet als bugs worden beschouwd.
* '''Functieverzoek''' - een idee dat het ontwikkelingsteam kan toevoegen aan Wikifuncties om het nog indrukwekkender te maken.
Heeft u hulp nodig met iets anders?
: De volgende zijn '''buiten de scope''' van het werk van het -ontwikkelingsteam van Wikifunctions:
:* De '''inhoud van individuele Functies''' – Bespreek die op de overlegpagina van de Functie zelf, of vraag om hulp op [[Wikifunctions:Project chat]] of via de onderstaande kanalen; Als u denkt dat er een functie ontbreekt, kijk dan op [[Wikifunctions:Suggest a function]]
:* De '''beleidsregels van het project Wikifuncties''' – Vraag daarnaar op [[Wikifunctions:Project chat]] of bij de onderstaande kanalen
<span id="Find_existing_bugs_and_feature_requests"></span>
== Bekende problemen en functie verzoeken vinden ==
* Zie '''[[Wikifunctions:Status]]''' voor een korte samenvatting van de belangrijkste kwesties.
* U kunt '''[[phab:maniphest/query/UzvNRqsdnymk/|zoeken in de Phabricator-lijst van open taken]] ''' om te zien of uw bug- of functieverzoek al is gedocumenteerd.
<span id="Discuss_with_others"></span>
== Discussie ==
U kunt op een paar locaties vragen stellen over mogelijke bugs of ideeën voor functies. Dit kan nuttig zijn als u niet zeker weet hoe u de fout of het functieverzoek duidelijk kunt beschrijven:
* <span class="mw-translate-fuzzy">De overlegpagina van deze pagina.</span>
* De belangrijkste chat op [https://t.me/Wikifunctions Telegram] of IRC {{channel|wikipedia-abstract}} (bij elkaar gevoegd) ([https://wm-bot.wmcloud.org/logs/%23wikipedia-abstract/ logs], [https://wm-bot.wmflabs.org/logs/%23wikipedia-abstract/ oude logs])
* De ontwikkelaar chat op [https://t.me/abstract_wikipedia_tech Telegram] of IRC {{channel|wikipedia-abstract-tech}} (bij elkaar gevoegd) ([https://wm-bot.wmcloud.org/logs/%23wikipedia-abstract-tech/ logs])
<span id="File_a_task_in_Phabricator"></span>
== Een taak op Phabricator plaatsen ==
Als u bekend bent met Phabricator, kunt u de taken rechtstreeks zoeken en plaatsen.
Als u het nog niet kent: Phabricator is de webgebaseerde hulpmiddel voor ontwikkelingssamenwerking die meestal wordt gebruikt om MediaWiki-softwareprojecten te beheren, waaronder Wikifuncties. Een korte samenvatting over Phabricator voor nieuwkomers, inclusief tutoriaalvideo's, staat op MediaWiki's wiki [[mw:Special:MyLanguage/Phabricator/Help|mw:Phabricator/Help]].
* U kunt '''[[phab:maniphest/query/UzvNRqsdnymk/|zoeken]] in de Phabricator-lijst van open taken''' om te zien of uw bug- of functieverzoek al is gedocumenteerd.
** De bestaande taken worden verzameld met het label (tag) '''[[phab:tag/abstract wikipedia team|#abstract wikipedia team]]'''.
* U kunt '''[https://phabricator.wikimedia.org/maniphest/task/edit/form/43/?projects=abstract_wikipedia een nieuwe taak indienen]'''. Voeg altijd toe:
** Voorbeelden
** Alle relevante links
** Voor bugs: De exacte stappen die de bug hebben veroorzaakt, zodat het team het kan reproduceren en diagnosticeren.
<span id="Languages"></span>
== Talen ==
Het ontwikkelaarsteam begrijpt een beperkt aantal talen - maar u kunt problemen melden in elke taal die u wilt.
Als het mogelijk is, geef dan een samenvatting in het Engels wanneer u een phabricator-taak aanmaakt, of vraag iemand om u te helpen.
<span id="Follow-up"></span>
== Vervolg ==
* De locaties hierboven worden gevolgd door het Wikifuncties ontwikkelingsteam, evenals door gemeenschapsleden. De reactietijd, varieert afhankelijk van de aard of complexiteit van het onderwerp, enz. Laat het ons weten als we iets hebben gemist, want dat natuurlijk best gebeuren!
* Niet alle problemen kunnen onmiddellijk worden opgelost: afhankelijk van de impact, prioriteit, enz. kunnen sommige bugs op een lage prioriteit worden gezet. U kunt de status van uw rapport over de phabricator-taak volgen.
[[Category:Report a technical problem{{#translation:}}]]
1829mahl72bb4rhhsfpysc6gx0byky3
Wikifunctions:Design/nl
4
77779
296894
256432
2026-08-06T18:00:04Z
FuzzyBot
207
Updating to match new version of source page
296894
wikitext
text/x-wiki
<languages/>
{{see also
|Special:MyLanguage/WF:Status|l1=WF:Status
|Special:MyLanguage/WF:Feature_petitions|l2=WF:Feature petitions
}}
Dit is een pagina waarop we de activiteiten van het team met betrekking tot ontwerpverbeteringen aan de website opsommen.
<span id="Current_design_improvements"></span>
== Huidige ontwerpverbeteringen ==
* [[Wikifunctions:Design/Lexeme Sense Selection UI|UI Lexeem betekenis selectie]]
* [[Special:MyLanguage/Wikifunctions:Design/Naming conventions recommendations|Aanbevelingen naamgevingsconventies]]
<span id="Implemented_design_improvements"></span>
== Ingevoerde ontwerpverbeteringen ==
* [[Special:MyLanguage/Wikifunctions:Design/About widget improvements|Widgetverbeteringen]]
[[Category:Project concept{{#translation:}}]]
niezgx5rkzbwa0ksuaw5hhx8lqj7zm7
Z33320
0
80044
297176
264616
2026-08-07T10:25:23Z
HenkvD
1290
all <tr valign="top">
297176
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z33320"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z33319",
"Z14K2": {
"Z1K1": "Z7",
"Z7K1": "Z27873",
"Z27873K1": {
"Z1K1": "Z7",
"Z7K1": "Z27926",
"Z27926K1": {
"Z1K1": "Z18",
"Z18K1": "Z33319K1"
}
},
"Z27873K2": "tr",
"Z27873K3": [
"Z6",
"valign"
],
"Z27873K4": [
"Z6",
"top"
]
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "create HTML tr fragment, composition"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
3l49ot04va8bjpzos60ehvqge98nv4u
Z36137
0
85212
296869
281080
2026-08-06T17:37:11Z
Jsamwrites
938
296869
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36137"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z6091",
"Z17K2": "Z36137K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "entity"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z60",
"Z17K2": "Z36137K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "language"
}
]
}
}
],
"Z8K2": "Z89",
"Z8K3": [
"Z20"
],
"Z8K4": [
"Z14",
"Z36138"
],
"Z8K5": "Z36137"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "infobox for literary work"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31",
{
"Z1K1": "Z31",
"Z31K1": "Z1002",
"Z31K2": [
"Z6",
"infobox for book",
"infobox for novel"
]
}
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
sqv1eloqjnafj1d3a65nax2hgi435vf
Z36198
0
85313
297094
287498
2026-08-07T03:46:47Z
99of9
1622
297094
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36198"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z36197",
"Z14K2": {
"Z1K1": "Z7",
"Z7K1": "Z802",
"Z802K1": {
"Z1K1": "Z7",
"Z7K1": "Z25054",
"Z25054K1": {
"Z1K1": "Z18",
"Z18K1": "Z36197K2"
},
"Z25054K2": "Z28435"
},
"Z802K2": {
"Z1K1": "Z7",
"Z7K1": "Z27868",
"Z27868K1": {
"Z1K1": "Z7",
"Z7K1": "Z28445",
"Z28445K1": {
"Z1K1": "Z7",
"Z7K1": "Z30120",
"Z30120K1": {
"Z1K1": "Z18",
"Z18K1": "Z36197K1"
},
"Z30120K2": [
"Z6030",
"Z6036"
],
"Z30120K3": [
"Z60",
"Z1360"
],
"Z30120K4": [
"Z6092",
{
"Z1K1": "Z6092",
"Z6092K1": "P1082"
}
]
},
"Z28445K2": {
"Z1K1": "Z6092",
"Z6092K1": "P1082"
},
"Z28445K3": {
"Z1K1": "Z18",
"Z18K1": "Z36197K2"
}
}
},
"Z802K3": {
"Z1K1": "Z7",
"Z7K1": "Z38942",
"Z38942K1": {
"Z1K1": "Z7",
"Z7K1": "Z32234",
"Z32234K1": [
"Z1",
{
"Z1K1": "Z7",
"Z7K1": "Z35105",
"Z35105K1": {
"Z1K1": "Z7",
"Z7K1": "Z30120",
"Z30120K1": {
"Z1K1": "Z6091",
"Z6091K1": "Q2625603"
},
"Z30120K2": [
"Z6030",
"Z6033"
],
"Z30120K3": [
"Z60"
],
"Z30120K4": [
"Z6092"
]
},
"Z35105K2": {
"Z1K1": "Z18",
"Z18K1": "Z36197K2"
}
},
"(",
{
"Z1K1": "Z7",
"Z7K1": "Z35105",
"Z35105K1": {
"Z1K1": "Z7",
"Z7K1": "Z30120",
"Z30120K1": {
"Z1K1": "Z18",
"Z18K1": "Z36197K1"
},
"Z30120K2": [
"Z6030",
"Z6033"
],
"Z30120K3": [
"Z60"
],
"Z30120K4": [
"Z6092"
]
},
"Z35105K2": {
"Z1K1": "Z18",
"Z18K1": "Z36197K2"
}
},
") = ",
{
"Z1K1": "Z7",
"Z7K1": "Z25356",
"Z25356K1": {
"Z1K1": "Z7",
"Z7K1": "Z21449",
"Z21449K1": {
"Z1K1": "Z6092",
"Z6092K1": "P1082"
},
"Z21449K2": {
"Z1K1": "Z7",
"Z7K1": "Z30120",
"Z30120K1": {
"Z1K1": "Z18",
"Z18K1": "Z36197K1"
},
"Z30120K2": [
"Z6030",
"Z6036"
],
"Z30120K3": [
"Z60"
],
"Z30120K4": [
"Z6092",
{
"Z1K1": "Z6092",
"Z6092K1": "P1082"
}
]
}
},
"Z25356K2": {
"Z1K1": "Z18",
"Z18K1": "Z36197K2"
}
},
"."
]
}
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "population sentence, default first population"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
0nus8oplgwiy73kt9xczoima8bwlki1
Z36199
0
85314
297095
287500
2026-08-07T03:47:24Z
99of9
1622
span indicating mul default
297095
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36199"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z36197",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z36197",
"Z36197K1": {
"Z1K1": "Z6091",
"Z6091K1": "Q3224"
},
"Z36197K2": "Z1787"
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z877",
"Z877K2": {
"Z1K1": "Z89",
"Z89K1": "\u003Cspan lang=\"mul\" style=\"color: #FF00FF;\"\u003E\u003Cspan lang=\"it\"\u003Epopolazione\u003C/span\u003E(\u003Cspan lang=\"it\"\u003ENuovo Galles del Sud\u003C/span\u003E) = 7 500 600.\u003C/span\u003E"
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "[it] population(NSW) = 7,500,600."
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Update expected output whenever improved."
}
]
}
}
avg95jhatnlhbcr89vzjwkwa9n3g9u1
Z36218
0
85333
297124
293167
2026-08-07T05:37:48Z
99of9
1622
Added Z38358 to the approved list of test cases
297124
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36218"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z6091",
"Z17K2": "Z36218K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "subject reference"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1592",
"Z11K2": "ämne"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z6092",
"Z17K2": "Z36218K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "property reference"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1592",
"Z11K2": "egenskap"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z60",
"Z17K2": "Z36218K3",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "language"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1592",
"Z11K2": "språk"
}
]
}
}
],
"Z8K2": "Z89",
"Z8K3": [
"Z20",
"Z36221",
"Z36223",
"Z36222",
"Z36440",
"Z38110",
"Z38358"
],
"Z8K4": [
"Z14",
"Z36220"
],
"Z8K5": "Z36218"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "specific property of subject is value from WD"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1532",
"Z11K2": "spesifieke eienskap van onderwerp is waarde van WD"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1576",
"Z11K2": "specifa eco de subjekto estas valoro de WD"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1402",
"Z11K2": "специфично својство на субјектот е вредност од WD"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1137",
"Z11K2": "propiedat spesífiko di sujeto ta balor for di WD"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1157",
"Z11K2": "eigenschap van onderwerp is waarde uit WD."
},
{
"Z1K1": "Z11",
"Z11K1": "Z1592",
"Z11K2": "en av ämnets egenskaper från Wikidata"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1830",
"Z11K2": "specific property of subject is value from WD"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31",
{
"Z1K1": "Z31",
"Z31K1": "Z1002",
"Z31K2": [
"Z6",
"sentence for triple with specified property",
"the X of Y is Z",
"Wikidata value sentence",
"specific property of subject is value",
"value from Wikidata",
"value of a property from Wikidata"
]
}
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "HTML sentence for \"The \u003Cproperty\u003E of \u003Csubject\u003E is \u003Cvalue\u003E.\" Attempt for any specific (single-best?-valued) property triple. Use for triples in present tense."
},
{
"Z1K1": "Z11",
"Z11K1": "Z1592",
"Z11K2": "skapar en mening på formen \"\u003CÄmne\u003Es \u003Cegenskap\u003E är \u003Cvärde från Wikidata\u003E.\" som ett HTML-fragment"
}
]
}
}
ib7pkz3lbmcqczdr7mjn308s9sa8qcx
Z36222
0
85337
297122
281922
2026-08-07T05:36:16Z
99of9
1622
updated referencing
297122
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36222"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z36218",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z36218",
"Z36218K1": {
"Z1K1": "Z6091",
"Z6091K1": "Q408"
},
"Z36218K2": {
"Z1K1": "Z6092",
"Z6092K1": "P1448"
},
"Z36218K3": "Z1002"
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z877",
"Z877K2": {
"Z1K1": "Z89",
"Z89K1": "The official name of Australia is \u003Cspan lang=\"en-au\"\u003ECommonwealth of Australia\u003C/span\u003E.\u003Csup class=\"ext-wikilambda-reference\"\u003ECommonwealth of Australia Constitution Act (1900)\u003C/sup\u003E\u003Csup class=\"ext-wikilambda-reference\"\u003EOfficial Names of the United Nations Membership\u003C/sup\u003E"
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "The official name of Australia is The Commonw..."
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
spkmr082bh5ijye8iz54jvzi27rlupz
Z36243
0
85362
297117
281928
2026-08-07T05:30:59Z
99of9
1622
Added Z38952 to the approved list of test cases
297117
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36243"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z6091",
"Z17K2": "Z36243K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "subject reference"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z6092",
"Z17K2": "Z36243K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "property reference"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z1",
"Z17K2": "Z36243K3",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "value (string, quantity, monolingual text, QID...)"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z60",
"Z17K2": "Z36243K4",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "language"
}
]
}
}
],
"Z8K2": "Z89",
"Z8K3": [
"Z20",
"Z36245",
"Z38952"
],
"Z8K4": [
"Z14",
"Z36244"
],
"Z8K5": "Z36243"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "specific property of subject is value, default"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "HTML default sentence for \"The \u003Cproperty\u003E of \u003Csubject\u003E is \u003Cvalue\u003E.\" Attempt for any specific property triple. Use Z36218 to draw from WD."
}
]
}
}
14whltdrtn4pas4e71wrxbmehks832b
Z36244
0
85363
297116
291226
2026-08-07T05:30:11Z
99of9
1622
more fallbacks for properties not connected to an item
297116
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36244"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z36243",
"Z14K2": {
"Z1K1": "Z7",
"Z7K1": "Z27849",
"Z27849K1": {
"Z1K1": "Z7",
"Z7K1": "Z36909",
"Z36909K1": {
"Z1K1": "Z7",
"Z7K1": "Z32234",
"Z32234K1": [
"Z1",
{
"Z1K1": "Z7",
"Z7K1": "Z37367",
"Z37367K1": {
"Z1K1": "Z99",
"Z99K1": {
"Z1K1": "Z7",
"Z7K1": "Z36517",
"Z36517K1": {
"Z1K1": "Z7",
"Z7K1": "Z35364",
"Z35364K1": {
"Z1K1": "Z7",
"Z7K1": "Z35036",
"Z35036K1": {
"Z1K1": "Z18",
"Z18K1": "Z36243K2"
},
"Z35036K2": [
"Z6030",
"Z6036"
],
"Z35036K3": [
"Z60"
],
"Z35036K4": [
"Z6092",
{
"Z1K1": "Z6092",
"Z6092K1": "P1629"
}
]
}
},
"Z36517K2": {
"Z1K1": "Z18",
"Z18K1": "Z36243K4"
}
}
},
"Z37367K2": {
"Z1K1": "Z7",
"Z7K1": "Z32556",
"Z32556K1": {
"Z1K1": "Z7",
"Z7K1": "Z29825",
"Z29825K1": {
"Z1K1": "Z18",
"Z18K1": "Z36243K4"
},
"Z29825K2": {
"Z1K1": "Z18",
"Z18K1": "Z36243K2"
}
},
"Z32556K2": {
"Z1K1": "Z7",
"Z7K1": "Z20046",
"Z20046K1": {
"Z1K1": "Z18",
"Z18K1": "Z36243K2"
}
}
}
},
"(",
{
"Z1K1": "Z7",
"Z7K1": "Z36270",
"Z36270K1": {
"Z1K1": "Z18",
"Z18K1": "Z36243K1"
},
"Z36270K2": {
"Z1K1": "Z18",
"Z18K1": "Z36243K4"
}
},
") = ",
{
"Z1K1": "Z7",
"Z7K1": "Z36209",
"Z36209K1": {
"Z1K1": "Z18",
"Z18K1": "Z36243K3"
},
"Z36209K2": {
"Z1K1": "Z18",
"Z18K1": "Z36243K4"
}
},
"."
]
}
},
"Z27849K2": {
"Z1K1": "Z7",
"Z7K1": "Z37465",
"Z37465K1": {
"Z1K1": "Z6",
"Z6K1": "Z36219"
},
"Z37465K2": "🔧"
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "specific property of subject is value, compose"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
ddgrg741a2usypyfh40bge5b6y1dit4
297118
297116
2026-08-07T05:32:53Z
99of9
1622
string of mono
297118
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36244"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z36243",
"Z14K2": {
"Z1K1": "Z7",
"Z7K1": "Z27849",
"Z27849K1": {
"Z1K1": "Z7",
"Z7K1": "Z36909",
"Z36909K1": {
"Z1K1": "Z7",
"Z7K1": "Z32234",
"Z32234K1": [
"Z1",
{
"Z1K1": "Z7",
"Z7K1": "Z37367",
"Z37367K1": {
"Z1K1": "Z99",
"Z99K1": {
"Z1K1": "Z7",
"Z7K1": "Z36517",
"Z36517K1": {
"Z1K1": "Z7",
"Z7K1": "Z35364",
"Z35364K1": {
"Z1K1": "Z7",
"Z7K1": "Z35036",
"Z35036K1": {
"Z1K1": "Z18",
"Z18K1": "Z36243K2"
},
"Z35036K2": [
"Z6030",
"Z6036"
],
"Z35036K3": [
"Z60"
],
"Z35036K4": [
"Z6092",
{
"Z1K1": "Z6092",
"Z6092K1": "P1629"
}
]
}
},
"Z36517K2": {
"Z1K1": "Z18",
"Z18K1": "Z36243K4"
}
}
},
"Z37367K2": {
"Z1K1": "Z7",
"Z7K1": "Z32556",
"Z32556K1": {
"Z1K1": "Z7",
"Z7K1": "Z14396",
"Z14396K1": {
"Z1K1": "Z7",
"Z7K1": "Z29825",
"Z29825K1": {
"Z1K1": "Z18",
"Z18K1": "Z36243K4"
},
"Z29825K2": {
"Z1K1": "Z18",
"Z18K1": "Z36243K2"
}
}
},
"Z32556K2": {
"Z1K1": "Z7",
"Z7K1": "Z20046",
"Z20046K1": {
"Z1K1": "Z18",
"Z18K1": "Z36243K2"
}
}
}
},
"(",
{
"Z1K1": "Z7",
"Z7K1": "Z36270",
"Z36270K1": {
"Z1K1": "Z18",
"Z18K1": "Z36243K1"
},
"Z36270K2": {
"Z1K1": "Z18",
"Z18K1": "Z36243K4"
}
},
") = ",
{
"Z1K1": "Z7",
"Z7K1": "Z36209",
"Z36209K1": {
"Z1K1": "Z18",
"Z18K1": "Z36243K3"
},
"Z36209K2": {
"Z1K1": "Z18",
"Z18K1": "Z36243K4"
}
},
"."
]
}
},
"Z27849K2": {
"Z1K1": "Z7",
"Z7K1": "Z37465",
"Z37465K1": {
"Z1K1": "Z6",
"Z6K1": "Z36219"
},
"Z37465K2": "🔧"
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "specific property of subject is value, compose"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
09ahn0go2yrbgupixdsn65u0f1lrohk
Z36278
0
85455
297087
288965
2026-08-07T03:31:41Z
99of9
1622
mul is enough to make magenta now
297087
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36278"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z29596",
"Z14K2": {
"Z1K1": "Z7",
"Z7K1": "Z26107",
"Z26107K1": "Z1360",
"Z26107K2": {
"Z1K1": "Z7",
"Z7K1": "Z22504",
"Z22504K1": [
"Z6",
{
"Z1K1": "Z7",
"Z7K1": "Z36270",
"Z36270K1": {
"Z1K1": "Z18",
"Z18K1": "Z29596K1"
},
"Z36270K2": {
"Z1K1": "Z18",
"Z18K1": "Z29596K4"
}
},
"∈ {",
{
"Z1K1": "Z7",
"Z7K1": "Z36270",
"Z36270K1": {
"Z1K1": "Z18",
"Z18K1": "Z29596K2"
},
"Z36270K2": {
"Z1K1": "Z18",
"Z18K1": "Z29596K4"
}
},
"∩",
{
"Z1K1": "Z7",
"Z7K1": "Z36270",
"Z36270K1": {
"Z1K1": "Z18",
"Z18K1": "Z29596K3"
},
"Z36270K2": {
"Z1K1": "Z18",
"Z18K1": "Z29596K4"
}
},
"}."
]
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "default entity P31 with adjective, compose"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
6z5ienrohsfrkruhy5f45trxs8a4lvg
Z36279
0
85456
297088
282202
2026-08-07T03:32:08Z
99of9
1622
return mul
297088
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36279"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z29596",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z29596",
"Z29596K1": {
"Z1K1": "Z6091",
"Z6091K1": "Q3960"
},
"Z29596K2": {
"Z1K1": "Z6091",
"Z6091K1": "Q18389975"
},
"Z29596K3": {
"Z1K1": "Z6091",
"Z6091K1": "Q5107"
},
"Z29596K4": "Z1002"
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z14392",
"Z14392K2": {
"Z1K1": "Z11",
"Z11K1": "Z1360",
"Z11K2": "Australian continent ∈ { flat ∩ continent }."
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Australian continent ∈ { flat ∩ continent }."
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
0nvjijh5gu5aydlhb4movdcy9vujuyo
User:Jsamwrites/Infoboxes
2
85638
297132
294601
2026-08-07T05:50:15Z
Jsamwrites
938
/* Informatics */
297132
wikitext
text/x-wiki
== Infoboxes ==
=== Astronomy ===
* {{Z|Z38364}}
* {{Z|Z38373}}
* {{Z|Z38376}}
* {{Z|Z38379}}
==== Chemistry ====
* {{Z|Z38355}}
==== Community ====
* {{Z|Z36288}}
* {{Z|Z36285}}
* {{Z|Z37424}}
* {{Z|Z36897}}
* {{Z|Z36916}}
==== Culture and Media ====
* {{Z|Z38329}}
* {{Z|Z35993}}
* {{Z|Z36290}}
* {{Z|Z36333}}
* {{Z|Z36137}}
* {{Z|Z35968}}
* {{Z|Z37403}}
* {{Z|Z37422}}
==== History and GLAM ====
* {{Z|Z36327}}
* {{Z|Z36325}}
* {{Z|Z36323}}
* {{Z|Z36296}}
* {{Z|Z36990}}
* {{Z|Z36117}}
==== Informatics ====
* {{Z|Z35982}}
* {{Z|Z35976}}
* {{Z|Z35974}}
* {{Z|Z35972}}
* {{Z|Z38953}}
==== LGBT ====
* {{Z|Z35970}}
* {{Z|Z36881}}
==== Sports ====
* {{Z|Z36282}}
==== Wikimedia ====
* {{Z|Z38317}}
* {{Z|Z38350}}
huq8n5d5q9nxbqhayjserje4obj9bl7
297141
297132
2026-08-07T06:03:38Z
Jsamwrites
938
Add place related infoboxes
297141
wikitext
text/x-wiki
== Infoboxes ==
=== Astronomy ===
* {{Z|Z38364}}
* {{Z|Z38373}}
* {{Z|Z38376}}
* {{Z|Z38379}}
==== Chemistry ====
* {{Z|Z38355}}
==== Places ====
* {{Z|Z38956}}
* {{Z|Z36678}}
==== Community ====
* {{Z|Z36288}}
* {{Z|Z36285}}
* {{Z|Z37424}}
* {{Z|Z36897}}
* {{Z|Z36916}}
==== Culture and Media ====
* {{Z|Z38329}}
* {{Z|Z35993}}
* {{Z|Z36290}}
* {{Z|Z36333}}
* {{Z|Z36137}}
* {{Z|Z35968}}
* {{Z|Z37403}}
* {{Z|Z37422}}
==== History and GLAM ====
* {{Z|Z36327}}
* {{Z|Z36325}}
* {{Z|Z36323}}
* {{Z|Z36296}}
* {{Z|Z36990}}
* {{Z|Z36117}}
==== Informatics ====
* {{Z|Z35982}}
* {{Z|Z35976}}
* {{Z|Z35974}}
* {{Z|Z35972}}
* {{Z|Z38953}}
==== LGBT ====
* {{Z|Z35970}}
* {{Z|Z36881}}
==== Sports ====
* {{Z|Z36282}}
==== Wikimedia ====
* {{Z|Z38317}}
* {{Z|Z38350}}
0tzr3vyqehxzmtdpq97yuwrgr5hg795
297161
297141
2026-08-07T06:40:56Z
Jsamwrites
938
297161
wikitext
text/x-wiki
== Infoboxes ==
=== Astronomy ===
* {{Z|Z38364}}
* {{Z|Z38373}}
* {{Z|Z38376}}
* {{Z|Z38379}}
==== Chemistry ====
* {{Z|Z38355}}
==== Geography ====
* {{Z|Z38956}}
* {{Z|Z36678}}
* {{Z|Z38959}}
* {{Z|Z38964}}
==== Community ====
* {{Z|Z36288}}
* {{Z|Z36285}}
* {{Z|Z37424}}
* {{Z|Z36897}}
* {{Z|Z36916}}
==== Culture and Media ====
* {{Z|Z38329}}
* {{Z|Z35993}}
* {{Z|Z36290}}
* {{Z|Z36333}}
* {{Z|Z36137}}
* {{Z|Z35968}}
* {{Z|Z37403}}
* {{Z|Z37422}}
==== History and GLAM ====
* {{Z|Z36327}}
* {{Z|Z36325}}
* {{Z|Z36323}}
* {{Z|Z36296}}
* {{Z|Z36990}}
* {{Z|Z36117}}
==== Informatics ====
* {{Z|Z35982}}
* {{Z|Z35976}}
* {{Z|Z35974}}
* {{Z|Z35972}}
* {{Z|Z38953}}
==== LGBT ====
* {{Z|Z35970}}
* {{Z|Z36881}}
==== Sports ====
* {{Z|Z36282}}
==== Wikimedia ====
* {{Z|Z38317}}
* {{Z|Z38350}}
5tc2ui0t34gisbyan4km1vh2pmmbwx4
Z36440
0
85902
297121
283679
2026-08-07T05:35:39Z
99of9
1622
updated referencing
297121
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36440"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z36218",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z36218",
"Z36218K1": {
"Z1K1": "Z6091",
"Z6091K1": "Q408"
},
"Z36218K2": {
"Z1K1": "Z6092",
"Z6092K1": "P2573"
},
"Z36218K3": "Z1002"
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z877",
"Z877K2": {
"Z1K1": "Z89",
"Z89K1": "The number of out-of-school children of Australia is 107,065.\u003Csup class=\"ext-wikilambda-reference\"\u003E\u003Ca href=\"http://data.uis.unesco.org/index.aspx?queryid=3372\"\u003Ehttp://data.uis.unesco.org/index.aspx?queryid=3372\u003C/a\u003E\u003C/sup\u003E"
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "[en] out-of-school children in Australia"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "draft - include ref too"
}
]
}
}
2ox23teae4z7xgdolx77ojhewhz1p14
Z36679
0
86220
297134
293176
2026-08-07T05:55:25Z
Jsamwrites
938
Add alias
297134
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36679"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z36678",
"Z14K2": {
"Z1K1": "Z7",
"Z7K1": "Z33328",
"Z33328K1": {
"Z1K1": "Z89",
"Z89K1": ""
},
"Z33328K2": {
"Z1K1": "Z89",
"Z89K1": ""
},
"Z33328K3": [
"Z89",
{
"Z1K1": "Z7",
"Z7K1": "Z37644",
"Z37644K1": {
"Z1K1": "Z18",
"Z18K1": "Z36678K1"
},
"Z37644K2": "city",
"Z37644K3": {
"Z1K1": "Z18",
"Z18K1": "Z36678K2"
}
},
{
"Z1K1": "Z7",
"Z7K1": "Z37623",
"Z37623K1": {
"Z1K1": "Z18",
"Z18K1": "Z36678K1"
},
"Z37623K2": {
"Z1K1": "Z6092",
"Z6092K1": "P17"
},
"Z37623K3": {
"Z1K1": "Z18",
"Z18K1": "Z36678K2"
}
},
{
"Z1K1": "Z7",
"Z7K1": "Z37623",
"Z37623K1": {
"Z1K1": "Z18",
"Z18K1": "Z36678K1"
},
"Z37623K2": {
"Z1K1": "Z6092",
"Z6092K1": "P421"
},
"Z37623K3": {
"Z1K1": "Z18",
"Z18K1": "Z36678K2"
}
},
{
"Z1K1": "Z7",
"Z7K1": "Z38086",
"Z38086K1": {
"Z1K1": "Z18",
"Z18K1": "Z36678K1"
},
"Z38086K2": {
"Z1K1": "Z18",
"Z18K1": "Z36678K2"
}
}
]
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "infobox for city, comp"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31",
{
"Z1K1": "Z31",
"Z31K1": "Z1002",
"Z31K2": [
"Z6",
"infobox for populated place, comp"
]
}
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
iqwcfakocrnbb4ramgurp6ii6rrrn1h
297151
297134
2026-08-07T06:28:07Z
EatingCarBatteries
61191
adding population as a test
297151
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36679"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z36678",
"Z14K2": {
"Z1K1": "Z7",
"Z7K1": "Z33328",
"Z33328K1": {
"Z1K1": "Z89",
"Z89K1": ""
},
"Z33328K2": {
"Z1K1": "Z89",
"Z89K1": ""
},
"Z33328K3": [
"Z89",
{
"Z1K1": "Z7",
"Z7K1": "Z37644",
"Z37644K1": {
"Z1K1": "Z18",
"Z18K1": "Z36678K1"
},
"Z37644K2": "city",
"Z37644K3": {
"Z1K1": "Z18",
"Z18K1": "Z36678K2"
}
},
{
"Z1K1": "Z7",
"Z7K1": "Z37623",
"Z37623K1": {
"Z1K1": "Z18",
"Z18K1": "Z36678K1"
},
"Z37623K2": {
"Z1K1": "Z6092",
"Z6092K1": "P17"
},
"Z37623K3": {
"Z1K1": "Z18",
"Z18K1": "Z36678K2"
}
},
{
"Z1K1": "Z7",
"Z7K1": "Z37623",
"Z37623K1": {
"Z1K1": "Z18",
"Z18K1": "Z36678K1"
},
"Z37623K2": {
"Z1K1": "Z6092",
"Z6092K1": "P421"
},
"Z37623K3": {
"Z1K1": "Z18",
"Z18K1": "Z36678K2"
}
},
{
"Z1K1": "Z7",
"Z7K1": "Z37623",
"Z37623K1": {
"Z1K1": "Z18",
"Z18K1": "Z36678K1"
},
"Z37623K2": {
"Z1K1": "Z6092",
"Z6092K1": "P1082"
},
"Z37623K3": {
"Z1K1": "Z18",
"Z18K1": "Z36678K2"
}
},
{
"Z1K1": "Z7",
"Z7K1": "Z38086",
"Z38086K1": {
"Z1K1": "Z18",
"Z18K1": "Z36678K1"
},
"Z38086K2": {
"Z1K1": "Z18",
"Z18K1": "Z36678K2"
}
}
]
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "infobox for city, comp"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31",
{
"Z1K1": "Z31",
"Z31K1": "Z1002",
"Z31K2": [
"Z6",
"infobox for populated place, comp"
]
}
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
ftuehfrcsgx52klbu2iphvz95p36qrz
297152
297151
2026-08-07T06:29:16Z
EatingCarBatteries
61191
not yet
297152
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36679"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z36678",
"Z14K2": {
"Z1K1": "Z7",
"Z7K1": "Z33328",
"Z33328K1": {
"Z1K1": "Z89",
"Z89K1": ""
},
"Z33328K2": {
"Z1K1": "Z89",
"Z89K1": ""
},
"Z33328K3": [
"Z89",
{
"Z1K1": "Z7",
"Z7K1": "Z37644",
"Z37644K1": {
"Z1K1": "Z18",
"Z18K1": "Z36678K1"
},
"Z37644K2": "city",
"Z37644K3": {
"Z1K1": "Z18",
"Z18K1": "Z36678K2"
}
},
{
"Z1K1": "Z7",
"Z7K1": "Z37623",
"Z37623K1": {
"Z1K1": "Z18",
"Z18K1": "Z36678K1"
},
"Z37623K2": {
"Z1K1": "Z6092",
"Z6092K1": "P17"
},
"Z37623K3": {
"Z1K1": "Z18",
"Z18K1": "Z36678K2"
}
},
{
"Z1K1": "Z7",
"Z7K1": "Z37623",
"Z37623K1": {
"Z1K1": "Z18",
"Z18K1": "Z36678K1"
},
"Z37623K2": {
"Z1K1": "Z6092",
"Z6092K1": "P421"
},
"Z37623K3": {
"Z1K1": "Z18",
"Z18K1": "Z36678K2"
}
},
{
"Z1K1": "Z7",
"Z7K1": "Z38086",
"Z38086K1": {
"Z1K1": "Z18",
"Z18K1": "Z36678K1"
},
"Z38086K2": {
"Z1K1": "Z18",
"Z18K1": "Z36678K2"
}
}
]
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "infobox for city, comp"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31",
{
"Z1K1": "Z31",
"Z31K1": "Z1002",
"Z31K2": [
"Z6",
"infobox for populated place, comp"
]
}
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
iqwcfakocrnbb4ramgurp6ii6rrrn1h
Z37069
0
86764
297083
287133
2026-08-07T03:22:20Z
99of9
1622
improve wrapper
297083
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z37069"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z37068",
"Z14K2": {
"Z1K1": "Z7",
"Z7K1": "Z37464",
"Z37464K1": {
"Z1K1": "Z7",
"Z7K1": "Z29591",
"Z29591K1": {
"Z1K1": "Z18",
"Z18K1": "Z37068K1"
},
"Z29591K2": {
"Z1K1": "Z18",
"Z18K1": "Z37068K2"
},
"Z29591K3": {
"Z1K1": "Z18",
"Z18K1": "Z37068K3"
},
"Z29591K4": {
"Z1K1": "Z18",
"Z18K1": "Z37068K4"
}
},
"Z37464K2": {
"Z1K1": "Z6",
"Z6K1": "Z29597"
},
"Z37464K3": [
"Z6091",
{
"Z1K1": "Z18",
"Z18K1": "Z37068K1"
},
{
"Z1K1": "Z18",
"Z18K1": "Z37068K3"
}
],
"Z37464K4": [
"Z6091",
{
"Z1K1": "Z18",
"Z18K1": "Z37068K1"
},
{
"Z1K1": "Z18",
"Z18K1": "Z37068K3"
}
],
"Z37464K5": {
"Z1K1": "Z18",
"Z18K1": "Z37068K4"
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "describing entity with adjective/class, wrap mono"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
o3r1efviz609zag44s8x85hsxmfwdcx
297085
297083
2026-08-07T03:24:08Z
99of9
1622
if unknown adjective add pencil
297085
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z37069"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z37068",
"Z14K2": {
"Z1K1": "Z7",
"Z7K1": "Z37464",
"Z37464K1": {
"Z1K1": "Z7",
"Z7K1": "Z29591",
"Z29591K1": {
"Z1K1": "Z18",
"Z18K1": "Z37068K1"
},
"Z29591K2": {
"Z1K1": "Z18",
"Z18K1": "Z37068K2"
},
"Z29591K3": {
"Z1K1": "Z18",
"Z18K1": "Z37068K3"
},
"Z29591K4": {
"Z1K1": "Z18",
"Z18K1": "Z37068K4"
}
},
"Z37464K2": {
"Z1K1": "Z6",
"Z6K1": "Z29597"
},
"Z37464K3": [
"Z6091",
{
"Z1K1": "Z18",
"Z18K1": "Z37068K1"
},
{
"Z1K1": "Z18",
"Z18K1": "Z37068K3"
}
],
"Z37464K4": [
"Z6091",
{
"Z1K1": "Z18",
"Z18K1": "Z37068K1"
},
{
"Z1K1": "Z18",
"Z18K1": "Z37068K2"
},
{
"Z1K1": "Z18",
"Z18K1": "Z37068K3"
}
],
"Z37464K5": {
"Z1K1": "Z18",
"Z18K1": "Z37068K4"
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "describing entity with adjective/class, wrap mono"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
6ythub6rqn6hfdbs6a6qp8hm8vynhc6
Z37070
0
86765
297084
287135
2026-08-07T03:23:12Z
99of9
1622
297084
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z37070"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z37068",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z37068",
"Z37068K1": {
"Z1K1": "Z6091",
"Z6091K1": "Q408"
},
"Z37068K2": {
"Z1K1": "Z6091",
"Z6091K1": "Q1970348"
},
"Z37068K3": {
"Z1K1": "Z6091",
"Z6091K1": "Q6256"
},
"Z37068K4": "Z1002"
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z877",
"Z877K2": {
"Z1K1": "Z89",
"Z89K1": "\u003Ca href=\"https://abstract.wikipedia.org/wiki/Q408\"\u003EAustralia\u003C/a\u003E is a lucky \u003Ca href=\"https://abstract.wikipedia.org/wiki/Q6256\"\u003Ecountry\u003C/a\u003E."
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "[[Australia]] is a lucky [[country]]."
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
7tgijsgg3vs8xc08k6k60blg8ksl8ak
Z37072
0
86767
297096
292669
2026-08-07T03:56:36Z
99of9
1622
better wrapper
297096
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z37072"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z37071",
"Z14K2": {
"Z1K1": "Z7",
"Z7K1": "Z37464",
"Z37464K1": {
"Z1K1": "Z7",
"Z7K1": "Z27627",
"Z27627K1": {
"Z1K1": "Z18",
"Z18K1": "Z37071K1"
},
"Z27627K2": {
"Z1K1": "Z18",
"Z18K1": "Z37071K2"
},
"Z27627K3": {
"Z1K1": "Z18",
"Z18K1": "Z37071K3"
},
"Z27627K4": {
"Z1K1": "Z18",
"Z18K1": "Z37071K4"
},
"Z27627K5": {
"Z1K1": "Z18",
"Z18K1": "Z37071K5"
},
"Z27627K6": {
"Z1K1": "Z18",
"Z18K1": "Z37071K6"
}
},
"Z37464K2": {
"Z1K1": "Z6",
"Z6K1": "Z29844"
},
"Z37464K3": [
"Z6091",
{
"Z1K1": "Z18",
"Z18K1": "Z37071K1"
},
{
"Z1K1": "Z18",
"Z18K1": "Z37071K4"
},
{
"Z1K1": "Z18",
"Z18K1": "Z37071K5"
}
],
"Z37464K4": [
"Z6091",
{
"Z1K1": "Z18",
"Z18K1": "Z37071K1"
},
{
"Z1K1": "Z18",
"Z18K1": "Z37071K3"
},
{
"Z1K1": "Z18",
"Z18K1": "Z37071K4"
},
{
"Z1K1": "Z18",
"Z18K1": "Z37071K5"
}
],
"Z37464K5": {
"Z1K1": "Z18",
"Z18K1": "Z37071K6"
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "ordinal class location fragment, wrap monolingual"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
4k5fk94ly6y1y7kdaqiubfr56uv7f9l
Wikifunctions:Cardinal numbers/sv
4
87105
296886
288282
2026-08-06T17:59:49Z
FuzzyBot
207
Updating to match new version of source page
296886
wikitext
text/x-wiki
<languages/>
{{Move|Wikifunctions:Catalogue/Natural language operations/Cardinal numbers|reason=This page is a list of functions, but is outside the catalogue}}
<div lang="en" dir="ltr" class="mw-content-ltr">
We are looking to have functions to create the names of numbers in many different languages. The [[Special:MyLanguage/Wikifunctions:Status updates/2024-05-15|newsletter from 15 May 2024]] made a Call for Functions!
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
On this page, we collect and list the existing functions and related objects in order to coordinate the work.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The functions take as input a [[Z13518|natural number]] and return a [[Z6|string]]. There can be more than one function per language.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Languages covered ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
There are {{FORMATNUM:27}} so far.
</div>
{| class="wikitable sortable"
|+ <span lang="en" dir="ltr" class="mw-content-ltr">functions by [[Special:ListObjectsByType/Z60|language]]</span>
|-
! Språk !! Funktion !! Testad !! Implementerad !! Planering
|-
| {{z|Z1002}} || {{z|Z13587}} || ✅ || ✅ || [[WF:human languages/Z1002#natural number|WF:HL]]
|-
| {{z|Z1004}} || {{z|Z16093}} || ✅ || ✅ || [[WF:human languages/Z1004#natural number|WF:HL]]
|-
| {{z|Z1011}} || {{z|Z16150}} || ✅ || ✅ || [[WF:human languages/Z1011#natural number|WF:HL]]
|-
| {{z|Z1014}} || {{z|Z16053}} || ✅ || ✅ || [[WF:human languages/Z1014#natural number|WF:HL]]
|-
| {{z|Z1025}} || {{z|Z15965}} || ✅ || ✅ || [[WF:human languages/Z1025#natural number|WF:HL]]
|-
| {{z|Z1045}} || {{z|Z16172}} || ✅ || ✅ || [[WF:human languages/Z1045#natural number|WF:HL]]
|-
| {{z|Z1062}} || {{z|Z32780}} || ✅ || ⛓️💥 || [[WF:human languages/Z1062#natural number|WF:HL]]
|-
| {{z|Z1146}} || {{z|Z16163}} || ✅ || ✅ || [[WF:human languages/Z1146#natural number|WF:HL]]
|-
| {{z|Z1272}} || {{z|Z16085}} || ✅ || ✅ || [[WF:human languages/Z1272#natural number|WF:HL]]
|-
| {{z|Z1332}} || {{z|Z15953}} || ✅ || ✅ || [[WF:human languages/Z1332#natural number|WF:HL]]
|-
| {{z|Z1430}} || {{z|Z15963}} || ✅ || ✅ || [[WF:human languages/Z1430#natural number|WF:HL]]
|-
| {{z|Z1531}} || {{z|Z15567}} || ✅ || ✅ || [[WF:human languages/Z1531#natural number|WF:HL]]
|-
| {{z|Z1534}} || {{z|Z16185}} || ✅ || ✅ || [[WF:human languages/Z1534#natural number|WF:HL]]
|-
| {{z|Z1592}} || {{z|Z16008}}<br>{{z|Z37749}} || ✅ || ✅ || [[WF:human languages/Z1592#natural number|WF:HL]]
|-
| {{z|Z1624}} || {{z|Z16184}} || ✅ || ✅ || [[WF:human languages/Z1624#natural number|WF:HL]]
|-
| {{z|Z1882}} || {{z|Z16313}} || ✅ || ❌ || [[WF:human languages/Z1882#natural number|WF:HL]]
|-
| {{z|Z1381}} || {{z|Z16398}} || ❌ || ❌ || [[WF:human languages/Z1381#natural number|WF:HL]]
|-
| {{z|Z1003}} || {{z|Z16431}} || ✅ || ✅ || [[WF:human languages/Z1003#natural number|WF:HL]]
|-
| {{z|Z1472}} || {{z|Z16443}} || ✅ || ✅ || [[WF:human languages/Z1003#natural number|WF:HL]]
|-
| {{z|Z1099}} || {{z|Z16409}} || ✅ || ✅ || [[WF:human languages/Z1099#natural number|WF:HL]]
|-
| {{z|Z1282}} || {{z|Z16608}} || ✅ || ✅ || [[WF:human languages/Z1381#natural number|WF:HL]]
|-
| {{Z|Z1820}} || {{Z|Z19334}} || ✅ || ✅ || [[WF:human languages/Z1820#natural number|WF:HL]]
|-
| {{z|Z1012}} || {{z|Z19484}} || ✅ || ✅ || [[WF:human languages/Z1012#natural number|WF:HL]]
|-
| {{Z|Z1787}} || {{Z|Z23003}} || ✅ || ✅ || [[WF:human languages/Z1787#natural number|WF:HL]]
|-
| {{Z|Z1158}} || {{Z|Z24618}} || ✅ || ✅ || [[WF:human languages/Z1158#natural number|WF:HL]]
|-
| {{Z|Z1078}} || {{Z|Z18546}} || ✅ || ✅ || [[WF:human languages/Z1078#natural number|WF:HL]]
|-
| {{Z|Z1762}} || {{Z|Z22455}} || ✅ || ✅ || [[WF:human languages/Z1762#natural number|WF:HL]]
|}
<span id="See_also"></span>
== Se även ==
* {{Z|Z16435}}
* {{Z+|Z16437}}
* {{Z|Z14526}}
q1vjpuqdsyj3s8215y6wxshndqnx12l
Template:LanguageConfigurations
10
87156
297064
296149
2026-08-06T21:49:51Z
HenkvD
1290
Z37975 Do not use, replace by Z37923
297064
wikitext
text/x-wiki
Shows whether each configuration has a {{{Language}}}-connected option. In some cases no language option is necessary for this language, because the default function is already the most appropriate function. This can be noted after the relevant item.
<blockquote>
This list shows every active {{Z|14294}}. For a list of those '''used on Abstract Wikipedia''', see [[toolforge:abstract-data/languages/{{{Language}}}#sec-2]].
The list of all configurations is from [https://www.wikifunctions.org/wiki/Special:ListObjectsByType/Z14294?type=Z14294&orderby=oldest here].
</blockquote>
{{LanguageConfigurationsHeader|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}} }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z14302|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z14303|Remark=default works for English }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z14401|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z16435|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z18930|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z20240|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z20779|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z20896|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z21733|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z21795|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z21999|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z22940|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z23981|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z25030|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z25116|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z25440|Remark=default works for English }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z25634|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z25662|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z25737|Remark=default works for English }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z26009|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z26043|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z26096|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z27126|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z27129|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z27952|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z28020|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z28435|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z28806|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z29317|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z29597|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z29628|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z29813|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z29841|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z29843|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z29844|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z30442|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z30790|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z31407|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z32207|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z32255|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z32279|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z32298|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z32323|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z32402|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z32467|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z32530|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z32534|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z32629|Remark=default works for English }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z32660|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z32823|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z32826|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z32842|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z32896|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z32981|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z33184|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z33441|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z33464|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z33855|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z33981|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z34134|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z34225|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z34255|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z34281|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z34682|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z34818|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z35026|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z35336|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z35676|Remark=default works for all other languages }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z36148|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z36155|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z36194|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z36219|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z36394|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z36633|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z37017|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z37091|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z37106|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z37118|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z37122|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z37148|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z37152|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z37273|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z37308|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z37684|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z37760|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z37776|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z37869|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z37874|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z37889|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z37923|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z37950|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z37962|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z37975|Remark=Do not use, replace by Z37923 }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z38314|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z38392|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z38414|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z38415|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z38416|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z38417|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z38418|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z38419|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z38420|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z38421|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z38422|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z38423|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z38424|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z38505|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z38523|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z38755|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z38781|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z38786|Remark= }}
|}
bn7cfdmdjf54ip1zre2t7ph7lorc50h
297065
297064
2026-08-06T22:01:21Z
HenkvD
1290
Z32279 =default (comma) probably works OK for all languages not explicitly mentioned
297065
wikitext
text/x-wiki
Shows whether each configuration has a {{{Language}}}-connected option. In some cases no language option is necessary for this language, because the default function is already the most appropriate function. This can be noted after the relevant item.
<blockquote>
This list shows every active {{Z|14294}}. For a list of those '''used on Abstract Wikipedia''', see [[toolforge:abstract-data/languages/{{{Language}}}#sec-2]].
The list of all configurations is from [https://www.wikifunctions.org/wiki/Special:ListObjectsByType/Z14294?type=Z14294&orderby=oldest here].
</blockquote>
{{LanguageConfigurationsHeader|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}} }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z14302|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z14303|Remark=default works for English }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z14401|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z16435|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z18930|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z20240|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z20779|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z20896|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z21733|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z21795|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z21999|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z22940|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z23981|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z25030|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z25116|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z25440|Remark=default works for English }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z25634|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z25662|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z25737|Remark=default works for English }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z26009|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z26043|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z26096|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z27126|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z27129|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z27952|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z28020|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z28435|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z28806|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z29317|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z29597|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z29628|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z29813|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z29841|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z29843|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z29844|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z30442|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z30790|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z31407|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z32207|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z32255|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z32279|Remark=default (comma) probably works OK for all languages not explicitly mentioned }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z32298|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z32323|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z32402|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z32467|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z32530|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z32534|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z32629|Remark=default works for English }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z32660|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z32823|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z32826|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z32842|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z32896|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z32981|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z33184|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z33441|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z33464|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z33855|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z33981|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z34134|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z34225|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z34255|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z34281|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z34682|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z34818|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z35026|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z35336|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z35676|Remark=default works for all other languages }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z36148|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z36155|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z36194|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z36219|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z36394|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z36633|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z37017|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z37091|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z37106|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z37118|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z37122|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z37148|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z37152|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z37273|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z37308|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z37684|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z37760|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z37776|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z37869|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z37874|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z37889|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z37923|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z37950|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z37962|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z37975|Remark=Do not use, replace by Z37923 }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z38314|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z38392|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z38414|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z38415|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z38416|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z38417|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z38418|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z38419|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z38420|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z38421|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z38422|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z38423|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z38424|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z38505|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z38523|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z38755|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z38781|Remark= }}
{{LanguageConfigurationsRow|Language={{{Language}}}|Language2={{{Language2|}}}|Language3={{{Language3|}}}|Language4={{{Language4|}}}|ZID=Z38786|Remark= }}
|}
e93kitnzjolvfxbh4xgxux64p2f6tz5
Z37654
0
87714
297126
294100
2026-08-07T05:43:51Z
Jsamwrites
938
Update CSS
297126
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z37654"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z35976",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z35976",
"Z35976K1": {
"Z1K1": "Z6091",
"Z6091K1": "Q698"
},
"Z35976K2": "Z1002"
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z877",
"Z877K2": {
"Z1K1": "Z89",
"Z89K1": "\u003Ctable style=\"background-color:var(--background-color-interactive-subtle,#F8F9FA);border:1px solid var(--border-color-base,#A2A9B1);border-spacing:3px;clear:inline-end;float: inline-end;margin:0.5em 0 0.5em 1em;padding:0.2em;width:250px;\"\u003E\u003Ctr\u003E\u003Ctd colspan=\"2\" align=\"center\" style=\"--infobox-accent-hue:264deg;background-color:oklch(from var(--background-color-success-subtle,#DFF2EB) calc(0.8*l + 0.15) calc(c + 0.05) var(--infobox-accent-hue,264deg));\"\u003EMozilla Firefox\u003C/td\u003E\u003C/tr\u003E\u003Ctr\u003E\u003Ctd\u003EProgramming language\u003C/td\u003E\u003Ctd\u003EC\u003C/td\u003E\u003C/tr\u003E\u003Ctr\u003E\u003Ctd\u003EPublication date\u003C/td\u003E\u003Ctd\u003E1 January 2002\u003C/td\u003E\u003C/tr\u003E\u003C/table\u003E"
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "infobox Mozilla Firefox"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
jh62pwg2vxiixmffal1w6pew7xwonvt
Z37830
0
87973
297170
294381
2026-08-07T09:29:20Z
HenkvD
1290
string or quantity
297170
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z37830"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z6091",
"Z17K2": "Z37830K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "entity"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z6092",
"Z17K2": "Z37830K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "property"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z60",
"Z17K2": "Z37830K3",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "language"
}
]
}
}
],
"Z8K2": "Z89",
"Z8K3": [
"Z20",
"Z37831"
],
"Z8K4": [
"Z14",
"Z37832"
],
"Z8K5": "Z37830"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "infobox row, string or quantity"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "a table row with two columns: Property and string from Wikidata"
}
]
}
}
t5nefisrbijjcqhvayyjbmsfmhufo97
297173
297170
2026-08-07T09:32:58Z
HenkvD
1290
Added Z38967 to the approved list of test cases
297173
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z37830"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z6091",
"Z17K2": "Z37830K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "entity"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z6092",
"Z17K2": "Z37830K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "property"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z60",
"Z17K2": "Z37830K3",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "language"
}
]
}
}
],
"Z8K2": "Z89",
"Z8K3": [
"Z20",
"Z37831",
"Z38967"
],
"Z8K4": [
"Z14",
"Z37832"
],
"Z8K5": "Z37830"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "infobox row, string or quantity"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "a table row with two columns: Property and string from Wikidata"
}
]
}
}
2lyt4mhjitcklkr4218617r3owz6682
Z38110
0
88357
297123
293168
2026-08-07T05:37:16Z
99of9
1622
updated referencing
297123
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z38110"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z36218",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z36218",
"Z36218K1": {
"Z1K1": "Z6091",
"Z6091K1": "Q243"
},
"Z36218K2": {
"Z1K1": "Z6092",
"Z6092K1": "P2048"
},
"Z36218K3": "Z1004"
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z877",
"Z877K2": {
"Z1K1": "Z89",
"Z89K1": "La hauteur de la \u003Ca href=\"https://abstract.wikipedia.org/wiki/Q243\"\u003Etour Eiffel\u003C/a\u003E est de 330 m.\u003Csup class=\"ext-wikilambda-reference\"\u003E\u003Ca href=\"https://twitter.com/LaTourEiffel/status/1503693805761015814\"\u003Ehttps://twitter.com/LaTourEiffel/status/1503693805761015814\u003C/a\u003E\u003C/sup\u003E\u003Csup class=\"ext-wikilambda-reference\"\u003E\u003Ca href=\"https://www.toureiffel.paris/fr/actualites/evenements/la-tour-eiffel-grandit-encore-pour-atteindre-330-metres\"\u003Ehttps://www.toureiffel.paris/fr/actualites/evenements/la-tour-eiffel-grandit-encore-pour-atteindre-330-metres\u003C/a\u003E\u003C/sup\u003E"
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "French: The height of the Eiffel Tower is 330 m."
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
9dbyou4p1jlg18gy41tke51a1aequeo
Wikifunctions:Wikimania 2026 survey
4
88878
296862
296794
2026-08-06T13:28:11Z
Strobilomyces
193
/* Allow choice of implementation to be forced */
296862
wikitext
text/x-wiki
{{seealso|WF:Feature petitions}}
Thank you to so many of you who came in-person and online to the workshop at Wikimania last week around creating Abstract Wikipedia articles.
__NEWSECTIONLINK__
Based on your comments there and things you ran into or mentioned, we've pulled together a quick ideas list of possible improvements (alongside our work on faster and better NLG support, working with communities to consider piloting Abstract Wikipedia on their wiki, and other major parts of the annual plan).
Please indicate which items you think we should work on soonest by signing your name (<nowiki>~~~~</nowiki>) below them. We'll probably work on many of these, but the count of "votes" and arguments will help guide us in which ones we prioritise.
== Individual fragment editing ==
These are some ideas about how we might make adding and editing individual fragments easier.
=== Only auto-match the Wikidata item to the subject of the article on the first item in a Function call, not all of them ===
: This should avoid the confusing step of suggested items saying "Cairo is the Cairo of Cairo", but instead would need you to specify the item references for the others. The heuristic of only matching the first item might be enough as a starting point for many calls. We probably still want to match all dates and languages, though.
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 07:50, 31 July 2026 (UTC)
* ''Sign here''
=== Split out some of the '…' menu on each item so you can quickly switch to a manual item reference ===
: A big stumbling block for folks was switching from an auto-matched (argument key) item or a function call to a specific item reference. This would allow you to quickly switch to that, without having to notice and go through the menu of all the other options.
* ''Sign here''
=== Re-word the labels for the abstract argument keys to be more clear about what they are ===
: We label the keys as 'wikidata item reference', 'language', and 'date'; we should make it clearer that these are 'this article's subject', 'view language', and 'view date' respectively. This would help avoid confusion about what these keys are for, and when you don't want to use them.
* [[User:Waldyrious|Waldyrious]] ([[User talk:Waldyrious|talk]]) 08:48, 1 August 2026 (UTC)
*:{{Done}} As a first step; how does that work for you? [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 15:45, 5 August 2026 (UTC)
=== Add short description fields to Functions' arguments, to help people can understand what the inputs mean when they use them ===
: For Functions, we have labels, aliases, and short descriptions, but Functions' inputs just have a single label each, which can make it hard for people to know what to put where, especially if they have unusual or unfamiliar words. Add a short description field, maybe shown via a secondary accessor like a "[[File:Codex icon info color-notice.svg|20x20px]]" rather than all the time.
* ''Sign here''
* [[User:Nux|Nux]] ([[User talk:Nux|talk]]) 11:38, 1 August 2026 (UTC) (i) icons with more info might help, like e.g. what the author means by "Hypernym" [https://abstract.wikipedia.org/w/index.php?title=Abstract_Wikipedia:Useful_functions_for_article_composition&oldid=13847].
*:@[[User:Nux|Nux]]: Can you give some more detail for where that kind of interface shows up for you? Do you mean giving more context for labels of functions' inputs? [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 15:46, 5 August 2026 (UTC)
*::@[[User:Jdforrester (WMF)|Jdforrester (WMF)]] Yes, argument description. Like a description for function [https://www.wikifunctions.org/w/index.php?title=Z37921&action=edit&uselang=en]. Like in JavaDoc. [[User:Nux|Nux]] ([[User talk:Nux|talk]]) 19:58, 5 August 2026 (UTC)
*:::Aha, right. Is it OK if I split this out into its own section? That's a very different change from what this section was written up as, based on what I heard in Paris, and should have its own discussion. [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 20:06, 5 August 2026 (UTC)
*::::Sure. [[User:Nux|Nux]] ([[User talk:Nux|talk]]) 20:12, 5 August 2026 (UTC)
* ''Sign here''
=== Example: Thing to fix (copy me!) ===
: What it would involve, and why it would be valuable.
* ''Sign here''
== New/better kinds of fragment ==
Here are some ideas for different kinds of fragments that you could use in abstract articles.
=== Add support for pulling structured data from Commons files ''e.g.'' captions ===
: Right now you can put in image files themselves, but you can't fetch any data about them. This is particularly unhelpful as the Wikidata items still use the File: name rather than the MID; we'd need to add the ability to fetch meta-data from Commons to the back-end services, like we do from Wikidata.
* ''Sign here''
=== Add support for video/audio file inclusions ===
: You can only specify image files, not audio or video files which are more complex. If demand is high we could add this sooner rather than later, though it may be complex to align with the existing workflows.
* ''Sign here''
=== Add support for galleries of media file inclusions ===
: You can create multiple media file transclusions, but it's limited to a small number and you have to do all the work of creating the styles around it. We could give a first-level media file output, if this is strongly wanted.
* ''Sign here''
=== Add support for map inclusions ===
: We don't yet support maps, which might be wanted if folks are making articles about places a lot. Full support would be quite complicated.
* [[User:EatingCarBatteries|EatingCarBatteries]] ([[User talk:EatingCarBatteries|talk]]) 03:24, 31 July 2026 (UTC)
=== Add support for chart inclusions ===
: We don't yet support charts, which might be wanted if folks are making articles about numerical things a lot. Full support would be very complicated.
* ''Sign here''
=== Abstract source mock-ups and multilingual reviews ===
:We are approaching Abstract Wikipedia from the bottom up, with very simple examples. This may be the "Wiki Way", but for software it is very unconventional, and I think it is uncertain whether it can eventually work for more advanced text. The project will have failed unless natural text similar in complexity to current Wikipedia articles can be generated. I think nobody (except possibly [[user:mahir256|Mahir Morshed]]) understands what the abstract source for more complicated sentences would look like.
:Mahir Morshed has created a multilingual text generation system called Elemwala at https://elemwala.toolforge.org/ (see his introduction at https://www.wikifunctions.org/wiki/Wikifunctions:Status_updates/2024-10-17 and his session at Wikimania). This is linked to Abstract Wikipedia, and extremely relevant to it (since it is the only real current proposal for the abstract souce that I know), but it should be noted that Elemwala is only a proposal, not Abstract Wikipedia policy. The list of constructors defines the abstract source as it is at present. Also more information on how this abstract content can be constructed can be found at https://www.wikidata.org/wiki/User:Mahir256/language-generation, with various links and references.
:It is not clear to me whether the abstract source, consisting of functions of Wikidata items backed up by lexemes, can even work at all for a wide variety of languages. Rendering a text needs much information which is special to the target language, for instance there can be genders, grammatical cases, polite forms of address, etc. Example: The Eiffel Tower (Q243) usually needs a definite article when used in English, whereas Blackpool Tower (Q880905) does not. Where should this information for the English renderer be held? It cannot be in the abstract source, since the answer is special for English; some editors of the abstract source will speak languages which do not use articles. Well, I think that this type of item needs an English lexeme with a flag to indicate the article usage, and that would be a solution. Another example relates to the grammatical tenses, voices and moods of verbs. How will that be managed? I suppose that a verb tense indication must be given as a parameter in the abstract source, but how will the values of this parameter be related to all the possible tense/voice/mood verb forms in all the languages? There are an enormous number of such diverse features; how can we be sure that there is enough information in the abstract source to do the rendering in all cases?
:I think that there is an urgent need to create examples of complex text (such as real Wikipedia articles) in the proposed abstract source. Then testers who comprehend the abstract source format and also know a relevant language should interpret the source text and confirm whether they understand it and whether they have enough information to reconstruct the text in their own language (not by software but with their own mental processes). If so, that would give much-needed confidence that the Abstract Wikipedia scheme can actually work, and I think it would advance the project by making clearer the next needed steps.
* [[User:Strobilomyces|Strobilomyces]] ([[User talk:Strobilomyces|talk]]) 20:41, 5 August 2026 (UTC)
* ''Sign here''
=== Example: Thing to fix (copy me!) ===
: What it would involve, and why it would be valuable.
* ''Sign here''
== Article editing ==
Here are some quick ideas about overall article editing, not specific to a given
=== Drag-and-drop moving of fragments, instead of having to click on the menu and the "move up/down" multiple times ===
: Drag-and-drop is a relatively familiar UX feature, and we could add an affordance for it to make it more discoverable at the same time as more usable.
* [[User:EatingCarBatteries|EatingCarBatteries]] ([[User talk:EatingCarBatteries|talk]]) 03:22, 31 July 2026 (UTC)
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 07:52, 31 July 2026 (UTC)
* [[User:Waldyrious|Waldyrious]] ([[User talk:Waldyrious|talk]]) 08:49, 1 August 2026 (UTC)
* [[User:Nux|Nux]] ([[User talk:Nux|talk]]) 11:42, 1 August 2026 (UTC) and also selecting and copying with ctrl+c/ctrl+v like in OOo/LibreOffice Calc
* [[User:Dungodung|Dungodung]] ([[User talk:Dungodung|talk]]) 15:30, 5 August 2026 (UTC)
* It's a very minor issue in the grand scheme of things, but would be nice. --[[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 16:04, 5 August 2026 (UTC)
* ''Sign here''
=== Fix the long article dual-column scroll problem where you can't see what you're editing ===
: This is particularly an issue on longer articles and smaller screens, but was mentioned as very irritating by some of you!
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 07:49, 31 July 2026 (UTC)
* It's a very minor issue in the grand scheme of things, but would be nice. --[[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 16:04, 5 August 2026 (UTC)
* ''Sign here''
=== Support multiple sections, rather than just the lede ===
: Right now (despite some functions outputting <nowiki><h2></nowiki>s and the like), all articles are limited to just editing the lede section. We have mostly-built support for thematic sections, but this needs some polish. This would let you 'chunk up' articles, potentially editing only a section at a time for ease of use and / or collapsing those sections away to focus. We could also use this to allow external links limited to only the "external links" section (and references).
* [[User:EatingCarBatteries|EatingCarBatteries]] ([[User talk:EatingCarBatteries|talk]]) 07:12, 3 August 2026 (UTC)
=== Prompt editors with function calls based on statements in the Wikidata item ===
: Add a feature that checks the subject's Wikidata item for statements of the kind it knows about (e.g. "born 1850-01-20 in France") and match them to fragments, prompting you to add this. We'd need to work out how to link between fragment functions and Wikidata claims, and how to know whether the claims were already in the article, so this is quite complex to design and build, but would probably help a great deal.
* ''Sign here''
=== Prompt editors with media used on Wikipedia articles for the subject ===
: A more specialised option compared to fetching media suggestions alongside everything else from the Wikidata item would be to check for the main/first image on any existing Wikipedia articles and suggesting that if it's not already set.
* ''Sign here''
=== Fill in the parameters at copy/paste ===
: Fill in the parameters at copy/paste if the number and types of parameters match. That is especialy usefull when copying a new function from one language to an other. Currenltly every parameter has to be filled manually.
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 22:25, 5 August 2026 (UTC) (as proposer) I just created {{Z|Z38911}} and it took me very long to fill all 30! parameters correctly~
* ''Sign here''
=== Example: Thing to fix (copy me!) ===
: What it would involve, and why it would be valuable.
* ''Sign here''
== Any other ideas you might have ==
The sections above aren't everything. What else is something you'd like fixed?
=== Make it more obvious in the search whether there's an existing abstract article or not ===
: Right now we just add "– AW" to the end of search results when there's an existing article; if we make it clearer whether the link is a "read this" or "create this" link, folks won't be surprised when they click it.
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 15:58, 1 August 2026 (UTC)
* ''Sign here''
=== Auto-linking new Abstract Wikipedia articles to their Wikidata counterparts ===
: Right now people need to manually say that ''e.g.'' Q90 is the same as Q90, which takes time and isn't obvious. If we did this automatically as articles were created, the workflow would be easier to understand.
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 15:56, 1 August 2026 (UTC)
* It's a very minor issue in the grand scheme of things, but would be nice. --[[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 16:03, 5 August 2026 (UTC)
* ''Sign here''
=== Show labels of talk pages ===
: Show labels of Zid's talk pages on recent changes, watchlist and also on Categories like [[:Category:English natural language generation functions|this one]]. Idem for Qid's talk pages on Abstract Wikipedia
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 17:22, 1 August 2026 (UTC) (as proposer)
* It's a very minor issue in the grand scheme of things, but would be nice. --[[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 16:03, 5 August 2026 (UTC)
* ''Sign here''
=== Enlarge the field for labels ===
: Currently the field for labels can hold a maximum of 50 characters. See for example {{Z|Z32398}}. Frequently this is not enough and abbreviation have to be made. That makes the function names confusing and not consistent.
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 17:37, 1 August 2026 (UTC) (as proposer)
* [[User:EatingCarBatteries|EatingCarBatteries]] ([[User talk:EatingCarBatteries|talk]]) 20:59, 3 August 2026 (UTC)
* [[User:Strobilomyces|Strobilomyces]] ([[User talk:Strobilomyces|talk]]) 16:09, 5 August 2026 (UTC)
* ''Sign here''
=== Support wikitext in functions output ===
: Wikifunctions don't support wikitext. They can only output unparseable plain text or HTML. I know that the page [[:f:Wikifunctions:Embedded function calls]] says very clearly that wikitext will never be supported. But this is the number one thing that causes me not to be motivated to use functions, and I suspect that I'm not alone. So perhaps you could reconsider it.
* [[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 16:01, 5 August 2026 (UTC)
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 22:11, 5 August 2026 (UTC) Without wikitext the Abstract Wikipedia is not a real Wikipedia. Using wikitext code for bold, italic etc. Maybe also for Wikilinks.
* ''Sign here''
=== Completely change the UI of compositions ===
: I don't get compositions. A few people get them, but a lot of people don't. I mostly don't. When I try to read existing compositions, their deeply-nested hierarchy immediately confuses me, and I'm almost always afraid of editing anything. And I barely know how to start a new composition. The "clipboard" feature, which was added a few months ago, makes it a little bit less frustrating. But only a little bit; it doesn't solve the big issue. Creating and editing compositions is the only way to edit abstract articles, and it's very commonly needed on Wikifunctions, too, so if a lot of people have a hard time understanding how to do it, neither project will acquire a lot of editors. If you ask me, I'd do away with them completely and just use Python or JavaScript (or Lua!) code.
* [[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 16:01, 5 August 2026 (UTC)
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 22:18, 5 August 2026 (UTC) I don't propose to get rid of compositions, but make the default output more readable by automatically start a new function on a new line, and indent automatically. Also in read mode.
* Same. It's frustrating to have to click my mouse 10 times through a bunch of functions just to change an input value [[User:EatingCarBatteries|EatingCarBatteries]] ([[User talk:EatingCarBatteries|talk]]) 03:38, 6 August 2026 (UTC)
* ''Sign here''
=== Allow choice of implementation to be forced ===
: Where a function has multiple implementations, it would be helpful to be able to force the orchestrator to select a particular implementation for a particular run (or a particular session or a particular user). This would often be very helpful for debugging, or when an implementation appears to have a bug. I am not too sure how that could work - I propose that each user should be able to mark any implementation as always to be selected in their case (or perhaps as never to be selected). Perhaps only in the current session.
:It would even be useful to have a mode in a given session where the orchestrator always selects the first (or last) implementation for all functions - then one would at least know which implementation was going to be called!
* [[User:Strobilomyces|Strobilomyces]] ([[User talk:Strobilomyces|talk]]) 16:35, 5 August 2026 (UTC)
*:@[[User:Strobilomyces|Strobilomyces]]: The orchestrator will (currently) only ever chose the first connected implementation (for a language we support). Maybe we could make it clearer? For debugging, the idea is that you can do that from the implementation page whether or not it's connected, such as on [[Z15788]]. We could highlight that, perhaps? Can you give an example outside of debugging where you might want to allow multiple implementations to be connected but choose different implementations at run-time? I cannot suggest what we could do without understanding better the need, sorry! [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 17:30, 5 August 2026 (UTC)
*::Clarification: "First connected implementation" means the first one listed in the JSON version of the function (which is sometimes promoted or demoted by Wikilambda bot), rather than the first one displayed in the UI list, or the first one that was ever connected. Highlighting this implementation in the UI would be nice. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 04:15, 6 August 2026 (UTC)
*::@[[User:Jdforrester (WMF)|Jdforrester (WMF)]] The ability to test a given implementation directly is very useful. But functions often call other functions and it makes debugging difficult if it is not possible to tell which implementation will be executed or has been executed at the lower level. If it currently always the same version, then that is good. I would like to know how to tell which version will be or has been executed. How do I see the JSON version of the subfunction? Do I have to use the API? [[User:Strobilomyces|Strobilomyces]] ([[User talk:Strobilomyces|talk]]) 13:27, 6 August 2026 (UTC)
* ''Sign here''
=== Allow Wikifunctions functions to be called from Python and Javascript ===
: As indicated in an earlier suggestion, it is not convenient to write complicated code in the form of compositions. I think far more code would be contributed if it could be done in Python or Javascript.
* [[User:Strobilomyces|Strobilomyces]] ([[User talk:Strobilomyces|talk]]) 16:44, 5 August 2026 (UTC)
* ''Sign here''
=== Example: Thing to fix (copy me!) ===
: What it would involve, and why it would be valuable.
* ''Sign here''
== Thank you! ==
It was great to speak to and hear from so many of you.
4j7p5rd6tj9qec8nzelidxzptncds3k
296863
296862
2026-08-06T13:46:48Z
99of9
1622
/* Allow choice of implementation to be forced */ Reply
296863
wikitext
text/x-wiki
{{seealso|WF:Feature petitions}}
Thank you to so many of you who came in-person and online to the workshop at Wikimania last week around creating Abstract Wikipedia articles.
__NEWSECTIONLINK__
Based on your comments there and things you ran into or mentioned, we've pulled together a quick ideas list of possible improvements (alongside our work on faster and better NLG support, working with communities to consider piloting Abstract Wikipedia on their wiki, and other major parts of the annual plan).
Please indicate which items you think we should work on soonest by signing your name (<nowiki>~~~~</nowiki>) below them. We'll probably work on many of these, but the count of "votes" and arguments will help guide us in which ones we prioritise.
== Individual fragment editing ==
These are some ideas about how we might make adding and editing individual fragments easier.
=== Only auto-match the Wikidata item to the subject of the article on the first item in a Function call, not all of them ===
: This should avoid the confusing step of suggested items saying "Cairo is the Cairo of Cairo", but instead would need you to specify the item references for the others. The heuristic of only matching the first item might be enough as a starting point for many calls. We probably still want to match all dates and languages, though.
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 07:50, 31 July 2026 (UTC)
* ''Sign here''
=== Split out some of the '…' menu on each item so you can quickly switch to a manual item reference ===
: A big stumbling block for folks was switching from an auto-matched (argument key) item or a function call to a specific item reference. This would allow you to quickly switch to that, without having to notice and go through the menu of all the other options.
* ''Sign here''
=== Re-word the labels for the abstract argument keys to be more clear about what they are ===
: We label the keys as 'wikidata item reference', 'language', and 'date'; we should make it clearer that these are 'this article's subject', 'view language', and 'view date' respectively. This would help avoid confusion about what these keys are for, and when you don't want to use them.
* [[User:Waldyrious|Waldyrious]] ([[User talk:Waldyrious|talk]]) 08:48, 1 August 2026 (UTC)
*:{{Done}} As a first step; how does that work for you? [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 15:45, 5 August 2026 (UTC)
=== Add short description fields to Functions' arguments, to help people can understand what the inputs mean when they use them ===
: For Functions, we have labels, aliases, and short descriptions, but Functions' inputs just have a single label each, which can make it hard for people to know what to put where, especially if they have unusual or unfamiliar words. Add a short description field, maybe shown via a secondary accessor like a "[[File:Codex icon info color-notice.svg|20x20px]]" rather than all the time.
* ''Sign here''
* [[User:Nux|Nux]] ([[User talk:Nux|talk]]) 11:38, 1 August 2026 (UTC) (i) icons with more info might help, like e.g. what the author means by "Hypernym" [https://abstract.wikipedia.org/w/index.php?title=Abstract_Wikipedia:Useful_functions_for_article_composition&oldid=13847].
*:@[[User:Nux|Nux]]: Can you give some more detail for where that kind of interface shows up for you? Do you mean giving more context for labels of functions' inputs? [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 15:46, 5 August 2026 (UTC)
*::@[[User:Jdforrester (WMF)|Jdforrester (WMF)]] Yes, argument description. Like a description for function [https://www.wikifunctions.org/w/index.php?title=Z37921&action=edit&uselang=en]. Like in JavaDoc. [[User:Nux|Nux]] ([[User talk:Nux|talk]]) 19:58, 5 August 2026 (UTC)
*:::Aha, right. Is it OK if I split this out into its own section? That's a very different change from what this section was written up as, based on what I heard in Paris, and should have its own discussion. [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 20:06, 5 August 2026 (UTC)
*::::Sure. [[User:Nux|Nux]] ([[User talk:Nux|talk]]) 20:12, 5 August 2026 (UTC)
* ''Sign here''
=== Example: Thing to fix (copy me!) ===
: What it would involve, and why it would be valuable.
* ''Sign here''
== New/better kinds of fragment ==
Here are some ideas for different kinds of fragments that you could use in abstract articles.
=== Add support for pulling structured data from Commons files ''e.g.'' captions ===
: Right now you can put in image files themselves, but you can't fetch any data about them. This is particularly unhelpful as the Wikidata items still use the File: name rather than the MID; we'd need to add the ability to fetch meta-data from Commons to the back-end services, like we do from Wikidata.
* ''Sign here''
=== Add support for video/audio file inclusions ===
: You can only specify image files, not audio or video files which are more complex. If demand is high we could add this sooner rather than later, though it may be complex to align with the existing workflows.
* ''Sign here''
=== Add support for galleries of media file inclusions ===
: You can create multiple media file transclusions, but it's limited to a small number and you have to do all the work of creating the styles around it. We could give a first-level media file output, if this is strongly wanted.
* ''Sign here''
=== Add support for map inclusions ===
: We don't yet support maps, which might be wanted if folks are making articles about places a lot. Full support would be quite complicated.
* [[User:EatingCarBatteries|EatingCarBatteries]] ([[User talk:EatingCarBatteries|talk]]) 03:24, 31 July 2026 (UTC)
=== Add support for chart inclusions ===
: We don't yet support charts, which might be wanted if folks are making articles about numerical things a lot. Full support would be very complicated.
* ''Sign here''
=== Abstract source mock-ups and multilingual reviews ===
:We are approaching Abstract Wikipedia from the bottom up, with very simple examples. This may be the "Wiki Way", but for software it is very unconventional, and I think it is uncertain whether it can eventually work for more advanced text. The project will have failed unless natural text similar in complexity to current Wikipedia articles can be generated. I think nobody (except possibly [[user:mahir256|Mahir Morshed]]) understands what the abstract source for more complicated sentences would look like.
:Mahir Morshed has created a multilingual text generation system called Elemwala at https://elemwala.toolforge.org/ (see his introduction at https://www.wikifunctions.org/wiki/Wikifunctions:Status_updates/2024-10-17 and his session at Wikimania). This is linked to Abstract Wikipedia, and extremely relevant to it (since it is the only real current proposal for the abstract souce that I know), but it should be noted that Elemwala is only a proposal, not Abstract Wikipedia policy. The list of constructors defines the abstract source as it is at present. Also more information on how this abstract content can be constructed can be found at https://www.wikidata.org/wiki/User:Mahir256/language-generation, with various links and references.
:It is not clear to me whether the abstract source, consisting of functions of Wikidata items backed up by lexemes, can even work at all for a wide variety of languages. Rendering a text needs much information which is special to the target language, for instance there can be genders, grammatical cases, polite forms of address, etc. Example: The Eiffel Tower (Q243) usually needs a definite article when used in English, whereas Blackpool Tower (Q880905) does not. Where should this information for the English renderer be held? It cannot be in the abstract source, since the answer is special for English; some editors of the abstract source will speak languages which do not use articles. Well, I think that this type of item needs an English lexeme with a flag to indicate the article usage, and that would be a solution. Another example relates to the grammatical tenses, voices and moods of verbs. How will that be managed? I suppose that a verb tense indication must be given as a parameter in the abstract source, but how will the values of this parameter be related to all the possible tense/voice/mood verb forms in all the languages? There are an enormous number of such diverse features; how can we be sure that there is enough information in the abstract source to do the rendering in all cases?
:I think that there is an urgent need to create examples of complex text (such as real Wikipedia articles) in the proposed abstract source. Then testers who comprehend the abstract source format and also know a relevant language should interpret the source text and confirm whether they understand it and whether they have enough information to reconstruct the text in their own language (not by software but with their own mental processes). If so, that would give much-needed confidence that the Abstract Wikipedia scheme can actually work, and I think it would advance the project by making clearer the next needed steps.
* [[User:Strobilomyces|Strobilomyces]] ([[User talk:Strobilomyces|talk]]) 20:41, 5 August 2026 (UTC)
* ''Sign here''
=== Example: Thing to fix (copy me!) ===
: What it would involve, and why it would be valuable.
* ''Sign here''
== Article editing ==
Here are some quick ideas about overall article editing, not specific to a given
=== Drag-and-drop moving of fragments, instead of having to click on the menu and the "move up/down" multiple times ===
: Drag-and-drop is a relatively familiar UX feature, and we could add an affordance for it to make it more discoverable at the same time as more usable.
* [[User:EatingCarBatteries|EatingCarBatteries]] ([[User talk:EatingCarBatteries|talk]]) 03:22, 31 July 2026 (UTC)
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 07:52, 31 July 2026 (UTC)
* [[User:Waldyrious|Waldyrious]] ([[User talk:Waldyrious|talk]]) 08:49, 1 August 2026 (UTC)
* [[User:Nux|Nux]] ([[User talk:Nux|talk]]) 11:42, 1 August 2026 (UTC) and also selecting and copying with ctrl+c/ctrl+v like in OOo/LibreOffice Calc
* [[User:Dungodung|Dungodung]] ([[User talk:Dungodung|talk]]) 15:30, 5 August 2026 (UTC)
* It's a very minor issue in the grand scheme of things, but would be nice. --[[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 16:04, 5 August 2026 (UTC)
* ''Sign here''
=== Fix the long article dual-column scroll problem where you can't see what you're editing ===
: This is particularly an issue on longer articles and smaller screens, but was mentioned as very irritating by some of you!
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 07:49, 31 July 2026 (UTC)
* It's a very minor issue in the grand scheme of things, but would be nice. --[[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 16:04, 5 August 2026 (UTC)
* ''Sign here''
=== Support multiple sections, rather than just the lede ===
: Right now (despite some functions outputting <nowiki><h2></nowiki>s and the like), all articles are limited to just editing the lede section. We have mostly-built support for thematic sections, but this needs some polish. This would let you 'chunk up' articles, potentially editing only a section at a time for ease of use and / or collapsing those sections away to focus. We could also use this to allow external links limited to only the "external links" section (and references).
* [[User:EatingCarBatteries|EatingCarBatteries]] ([[User talk:EatingCarBatteries|talk]]) 07:12, 3 August 2026 (UTC)
=== Prompt editors with function calls based on statements in the Wikidata item ===
: Add a feature that checks the subject's Wikidata item for statements of the kind it knows about (e.g. "born 1850-01-20 in France") and match them to fragments, prompting you to add this. We'd need to work out how to link between fragment functions and Wikidata claims, and how to know whether the claims were already in the article, so this is quite complex to design and build, but would probably help a great deal.
* ''Sign here''
=== Prompt editors with media used on Wikipedia articles for the subject ===
: A more specialised option compared to fetching media suggestions alongside everything else from the Wikidata item would be to check for the main/first image on any existing Wikipedia articles and suggesting that if it's not already set.
* ''Sign here''
=== Fill in the parameters at copy/paste ===
: Fill in the parameters at copy/paste if the number and types of parameters match. That is especialy usefull when copying a new function from one language to an other. Currenltly every parameter has to be filled manually.
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 22:25, 5 August 2026 (UTC) (as proposer) I just created {{Z|Z38911}} and it took me very long to fill all 30! parameters correctly~
* ''Sign here''
=== Example: Thing to fix (copy me!) ===
: What it would involve, and why it would be valuable.
* ''Sign here''
== Any other ideas you might have ==
The sections above aren't everything. What else is something you'd like fixed?
=== Make it more obvious in the search whether there's an existing abstract article or not ===
: Right now we just add "– AW" to the end of search results when there's an existing article; if we make it clearer whether the link is a "read this" or "create this" link, folks won't be surprised when they click it.
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 15:58, 1 August 2026 (UTC)
* ''Sign here''
=== Auto-linking new Abstract Wikipedia articles to their Wikidata counterparts ===
: Right now people need to manually say that ''e.g.'' Q90 is the same as Q90, which takes time and isn't obvious. If we did this automatically as articles were created, the workflow would be easier to understand.
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 15:56, 1 August 2026 (UTC)
* It's a very minor issue in the grand scheme of things, but would be nice. --[[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 16:03, 5 August 2026 (UTC)
* ''Sign here''
=== Show labels of talk pages ===
: Show labels of Zid's talk pages on recent changes, watchlist and also on Categories like [[:Category:English natural language generation functions|this one]]. Idem for Qid's talk pages on Abstract Wikipedia
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 17:22, 1 August 2026 (UTC) (as proposer)
* It's a very minor issue in the grand scheme of things, but would be nice. --[[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 16:03, 5 August 2026 (UTC)
* ''Sign here''
=== Enlarge the field for labels ===
: Currently the field for labels can hold a maximum of 50 characters. See for example {{Z|Z32398}}. Frequently this is not enough and abbreviation have to be made. That makes the function names confusing and not consistent.
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 17:37, 1 August 2026 (UTC) (as proposer)
* [[User:EatingCarBatteries|EatingCarBatteries]] ([[User talk:EatingCarBatteries|talk]]) 20:59, 3 August 2026 (UTC)
* [[User:Strobilomyces|Strobilomyces]] ([[User talk:Strobilomyces|talk]]) 16:09, 5 August 2026 (UTC)
* ''Sign here''
=== Support wikitext in functions output ===
: Wikifunctions don't support wikitext. They can only output unparseable plain text or HTML. I know that the page [[:f:Wikifunctions:Embedded function calls]] says very clearly that wikitext will never be supported. But this is the number one thing that causes me not to be motivated to use functions, and I suspect that I'm not alone. So perhaps you could reconsider it.
* [[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 16:01, 5 August 2026 (UTC)
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 22:11, 5 August 2026 (UTC) Without wikitext the Abstract Wikipedia is not a real Wikipedia. Using wikitext code for bold, italic etc. Maybe also for Wikilinks.
* ''Sign here''
=== Completely change the UI of compositions ===
: I don't get compositions. A few people get them, but a lot of people don't. I mostly don't. When I try to read existing compositions, their deeply-nested hierarchy immediately confuses me, and I'm almost always afraid of editing anything. And I barely know how to start a new composition. The "clipboard" feature, which was added a few months ago, makes it a little bit less frustrating. But only a little bit; it doesn't solve the big issue. Creating and editing compositions is the only way to edit abstract articles, and it's very commonly needed on Wikifunctions, too, so if a lot of people have a hard time understanding how to do it, neither project will acquire a lot of editors. If you ask me, I'd do away with them completely and just use Python or JavaScript (or Lua!) code.
* [[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 16:01, 5 August 2026 (UTC)
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 22:18, 5 August 2026 (UTC) I don't propose to get rid of compositions, but make the default output more readable by automatically start a new function on a new line, and indent automatically. Also in read mode.
* Same. It's frustrating to have to click my mouse 10 times through a bunch of functions just to change an input value [[User:EatingCarBatteries|EatingCarBatteries]] ([[User talk:EatingCarBatteries|talk]]) 03:38, 6 August 2026 (UTC)
* ''Sign here''
=== Allow choice of implementation to be forced ===
: Where a function has multiple implementations, it would be helpful to be able to force the orchestrator to select a particular implementation for a particular run (or a particular session or a particular user). This would often be very helpful for debugging, or when an implementation appears to have a bug. I am not too sure how that could work - I propose that each user should be able to mark any implementation as always to be selected in their case (or perhaps as never to be selected). Perhaps only in the current session.
:It would even be useful to have a mode in a given session where the orchestrator always selects the first (or last) implementation for all functions - then one would at least know which implementation was going to be called!
* [[User:Strobilomyces|Strobilomyces]] ([[User talk:Strobilomyces|talk]]) 16:35, 5 August 2026 (UTC)
*:@[[User:Strobilomyces|Strobilomyces]]: The orchestrator will (currently) only ever chose the first connected implementation (for a language we support). Maybe we could make it clearer? For debugging, the idea is that you can do that from the implementation page whether or not it's connected, such as on [[Z15788]]. We could highlight that, perhaps? Can you give an example outside of debugging where you might want to allow multiple implementations to be connected but choose different implementations at run-time? I cannot suggest what we could do without understanding better the need, sorry! [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 17:30, 5 August 2026 (UTC)
*::Clarification: "First connected implementation" means the first one listed in the JSON version of the function (which is sometimes promoted or demoted by Wikilambda bot), rather than the first one displayed in the UI list, or the first one that was ever connected. Highlighting this implementation in the UI would be nice. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 04:15, 6 August 2026 (UTC)
*::@[[User:Jdforrester (WMF)|Jdforrester (WMF)]] The ability to test a given implementation directly is very useful. But functions often call other functions and it makes debugging difficult if it is not possible to tell which implementation will be executed or has been executed at the lower level. If it currently always the same version, then that is good. I would like to know how to tell which version will be or has been executed. How do I see the JSON version of the subfunction? Do I have to use the API? [[User:Strobilomyces|Strobilomyces]] ([[User talk:Strobilomyces|talk]]) 13:27, 6 August 2026 (UTC)
*:::I find it by looking at the history and comparing diffs. Here's a diff showing that Wikilambda bot promoted the JS implementation to the top: https://www.wikifunctions.org/w/index.php?title=Z13521&diff=289160&oldid=232341 . --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 13:46, 6 August 2026 (UTC)
* ''Sign here''
=== Allow Wikifunctions functions to be called from Python and Javascript ===
: As indicated in an earlier suggestion, it is not convenient to write complicated code in the form of compositions. I think far more code would be contributed if it could be done in Python or Javascript.
* [[User:Strobilomyces|Strobilomyces]] ([[User talk:Strobilomyces|talk]]) 16:44, 5 August 2026 (UTC)
* ''Sign here''
=== Example: Thing to fix (copy me!) ===
: What it would involve, and why it would be valuable.
* ''Sign here''
== Thank you! ==
It was great to speak to and hear from so many of you.
d2hrdp2f52dwa7hpdv9o08f6nrftnac
296867
296863
2026-08-06T14:34:58Z
Jdforrester (WMF)
4
/* Allow choice of implementation to be forced */ Reply
296867
wikitext
text/x-wiki
{{seealso|WF:Feature petitions}}
Thank you to so many of you who came in-person and online to the workshop at Wikimania last week around creating Abstract Wikipedia articles.
__NEWSECTIONLINK__
Based on your comments there and things you ran into or mentioned, we've pulled together a quick ideas list of possible improvements (alongside our work on faster and better NLG support, working with communities to consider piloting Abstract Wikipedia on their wiki, and other major parts of the annual plan).
Please indicate which items you think we should work on soonest by signing your name (<nowiki>~~~~</nowiki>) below them. We'll probably work on many of these, but the count of "votes" and arguments will help guide us in which ones we prioritise.
== Individual fragment editing ==
These are some ideas about how we might make adding and editing individual fragments easier.
=== Only auto-match the Wikidata item to the subject of the article on the first item in a Function call, not all of them ===
: This should avoid the confusing step of suggested items saying "Cairo is the Cairo of Cairo", but instead would need you to specify the item references for the others. The heuristic of only matching the first item might be enough as a starting point for many calls. We probably still want to match all dates and languages, though.
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 07:50, 31 July 2026 (UTC)
* ''Sign here''
=== Split out some of the '…' menu on each item so you can quickly switch to a manual item reference ===
: A big stumbling block for folks was switching from an auto-matched (argument key) item or a function call to a specific item reference. This would allow you to quickly switch to that, without having to notice and go through the menu of all the other options.
* ''Sign here''
=== Re-word the labels for the abstract argument keys to be more clear about what they are ===
: We label the keys as 'wikidata item reference', 'language', and 'date'; we should make it clearer that these are 'this article's subject', 'view language', and 'view date' respectively. This would help avoid confusion about what these keys are for, and when you don't want to use them.
* [[User:Waldyrious|Waldyrious]] ([[User talk:Waldyrious|talk]]) 08:48, 1 August 2026 (UTC)
*:{{Done}} As a first step; how does that work for you? [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 15:45, 5 August 2026 (UTC)
=== Add short description fields to Functions' arguments, to help people can understand what the inputs mean when they use them ===
: For Functions, we have labels, aliases, and short descriptions, but Functions' inputs just have a single label each, which can make it hard for people to know what to put where, especially if they have unusual or unfamiliar words. Add a short description field, maybe shown via a secondary accessor like a "[[File:Codex icon info color-notice.svg|20x20px]]" rather than all the time.
* ''Sign here''
* [[User:Nux|Nux]] ([[User talk:Nux|talk]]) 11:38, 1 August 2026 (UTC) (i) icons with more info might help, like e.g. what the author means by "Hypernym" [https://abstract.wikipedia.org/w/index.php?title=Abstract_Wikipedia:Useful_functions_for_article_composition&oldid=13847].
*:@[[User:Nux|Nux]]: Can you give some more detail for where that kind of interface shows up for you? Do you mean giving more context for labels of functions' inputs? [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 15:46, 5 August 2026 (UTC)
*::@[[User:Jdforrester (WMF)|Jdforrester (WMF)]] Yes, argument description. Like a description for function [https://www.wikifunctions.org/w/index.php?title=Z37921&action=edit&uselang=en]. Like in JavaDoc. [[User:Nux|Nux]] ([[User talk:Nux|talk]]) 19:58, 5 August 2026 (UTC)
*:::Aha, right. Is it OK if I split this out into its own section? That's a very different change from what this section was written up as, based on what I heard in Paris, and should have its own discussion. [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 20:06, 5 August 2026 (UTC)
*::::Sure. [[User:Nux|Nux]] ([[User talk:Nux|talk]]) 20:12, 5 August 2026 (UTC)
* ''Sign here''
=== Example: Thing to fix (copy me!) ===
: What it would involve, and why it would be valuable.
* ''Sign here''
== New/better kinds of fragment ==
Here are some ideas for different kinds of fragments that you could use in abstract articles.
=== Add support for pulling structured data from Commons files ''e.g.'' captions ===
: Right now you can put in image files themselves, but you can't fetch any data about them. This is particularly unhelpful as the Wikidata items still use the File: name rather than the MID; we'd need to add the ability to fetch meta-data from Commons to the back-end services, like we do from Wikidata.
* ''Sign here''
=== Add support for video/audio file inclusions ===
: You can only specify image files, not audio or video files which are more complex. If demand is high we could add this sooner rather than later, though it may be complex to align with the existing workflows.
* ''Sign here''
=== Add support for galleries of media file inclusions ===
: You can create multiple media file transclusions, but it's limited to a small number and you have to do all the work of creating the styles around it. We could give a first-level media file output, if this is strongly wanted.
* ''Sign here''
=== Add support for map inclusions ===
: We don't yet support maps, which might be wanted if folks are making articles about places a lot. Full support would be quite complicated.
* [[User:EatingCarBatteries|EatingCarBatteries]] ([[User talk:EatingCarBatteries|talk]]) 03:24, 31 July 2026 (UTC)
=== Add support for chart inclusions ===
: We don't yet support charts, which might be wanted if folks are making articles about numerical things a lot. Full support would be very complicated.
* ''Sign here''
=== Abstract source mock-ups and multilingual reviews ===
:We are approaching Abstract Wikipedia from the bottom up, with very simple examples. This may be the "Wiki Way", but for software it is very unconventional, and I think it is uncertain whether it can eventually work for more advanced text. The project will have failed unless natural text similar in complexity to current Wikipedia articles can be generated. I think nobody (except possibly [[user:mahir256|Mahir Morshed]]) understands what the abstract source for more complicated sentences would look like.
:Mahir Morshed has created a multilingual text generation system called Elemwala at https://elemwala.toolforge.org/ (see his introduction at https://www.wikifunctions.org/wiki/Wikifunctions:Status_updates/2024-10-17 and his session at Wikimania). This is linked to Abstract Wikipedia, and extremely relevant to it (since it is the only real current proposal for the abstract souce that I know), but it should be noted that Elemwala is only a proposal, not Abstract Wikipedia policy. The list of constructors defines the abstract source as it is at present. Also more information on how this abstract content can be constructed can be found at https://www.wikidata.org/wiki/User:Mahir256/language-generation, with various links and references.
:It is not clear to me whether the abstract source, consisting of functions of Wikidata items backed up by lexemes, can even work at all for a wide variety of languages. Rendering a text needs much information which is special to the target language, for instance there can be genders, grammatical cases, polite forms of address, etc. Example: The Eiffel Tower (Q243) usually needs a definite article when used in English, whereas Blackpool Tower (Q880905) does not. Where should this information for the English renderer be held? It cannot be in the abstract source, since the answer is special for English; some editors of the abstract source will speak languages which do not use articles. Well, I think that this type of item needs an English lexeme with a flag to indicate the article usage, and that would be a solution. Another example relates to the grammatical tenses, voices and moods of verbs. How will that be managed? I suppose that a verb tense indication must be given as a parameter in the abstract source, but how will the values of this parameter be related to all the possible tense/voice/mood verb forms in all the languages? There are an enormous number of such diverse features; how can we be sure that there is enough information in the abstract source to do the rendering in all cases?
:I think that there is an urgent need to create examples of complex text (such as real Wikipedia articles) in the proposed abstract source. Then testers who comprehend the abstract source format and also know a relevant language should interpret the source text and confirm whether they understand it and whether they have enough information to reconstruct the text in their own language (not by software but with their own mental processes). If so, that would give much-needed confidence that the Abstract Wikipedia scheme can actually work, and I think it would advance the project by making clearer the next needed steps.
* [[User:Strobilomyces|Strobilomyces]] ([[User talk:Strobilomyces|talk]]) 20:41, 5 August 2026 (UTC)
* ''Sign here''
=== Example: Thing to fix (copy me!) ===
: What it would involve, and why it would be valuable.
* ''Sign here''
== Article editing ==
Here are some quick ideas about overall article editing, not specific to a given
=== Drag-and-drop moving of fragments, instead of having to click on the menu and the "move up/down" multiple times ===
: Drag-and-drop is a relatively familiar UX feature, and we could add an affordance for it to make it more discoverable at the same time as more usable.
* [[User:EatingCarBatteries|EatingCarBatteries]] ([[User talk:EatingCarBatteries|talk]]) 03:22, 31 July 2026 (UTC)
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 07:52, 31 July 2026 (UTC)
* [[User:Waldyrious|Waldyrious]] ([[User talk:Waldyrious|talk]]) 08:49, 1 August 2026 (UTC)
* [[User:Nux|Nux]] ([[User talk:Nux|talk]]) 11:42, 1 August 2026 (UTC) and also selecting and copying with ctrl+c/ctrl+v like in OOo/LibreOffice Calc
* [[User:Dungodung|Dungodung]] ([[User talk:Dungodung|talk]]) 15:30, 5 August 2026 (UTC)
* It's a very minor issue in the grand scheme of things, but would be nice. --[[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 16:04, 5 August 2026 (UTC)
* ''Sign here''
=== Fix the long article dual-column scroll problem where you can't see what you're editing ===
: This is particularly an issue on longer articles and smaller screens, but was mentioned as very irritating by some of you!
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 07:49, 31 July 2026 (UTC)
* It's a very minor issue in the grand scheme of things, but would be nice. --[[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 16:04, 5 August 2026 (UTC)
* ''Sign here''
=== Support multiple sections, rather than just the lede ===
: Right now (despite some functions outputting <nowiki><h2></nowiki>s and the like), all articles are limited to just editing the lede section. We have mostly-built support for thematic sections, but this needs some polish. This would let you 'chunk up' articles, potentially editing only a section at a time for ease of use and / or collapsing those sections away to focus. We could also use this to allow external links limited to only the "external links" section (and references).
* [[User:EatingCarBatteries|EatingCarBatteries]] ([[User talk:EatingCarBatteries|talk]]) 07:12, 3 August 2026 (UTC)
=== Prompt editors with function calls based on statements in the Wikidata item ===
: Add a feature that checks the subject's Wikidata item for statements of the kind it knows about (e.g. "born 1850-01-20 in France") and match them to fragments, prompting you to add this. We'd need to work out how to link between fragment functions and Wikidata claims, and how to know whether the claims were already in the article, so this is quite complex to design and build, but would probably help a great deal.
* ''Sign here''
=== Prompt editors with media used on Wikipedia articles for the subject ===
: A more specialised option compared to fetching media suggestions alongside everything else from the Wikidata item would be to check for the main/first image on any existing Wikipedia articles and suggesting that if it's not already set.
* ''Sign here''
=== Fill in the parameters at copy/paste ===
: Fill in the parameters at copy/paste if the number and types of parameters match. That is especialy usefull when copying a new function from one language to an other. Currenltly every parameter has to be filled manually.
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 22:25, 5 August 2026 (UTC) (as proposer) I just created {{Z|Z38911}} and it took me very long to fill all 30! parameters correctly~
* ''Sign here''
=== Example: Thing to fix (copy me!) ===
: What it would involve, and why it would be valuable.
* ''Sign here''
== Any other ideas you might have ==
The sections above aren't everything. What else is something you'd like fixed?
=== Make it more obvious in the search whether there's an existing abstract article or not ===
: Right now we just add "– AW" to the end of search results when there's an existing article; if we make it clearer whether the link is a "read this" or "create this" link, folks won't be surprised when they click it.
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 15:58, 1 August 2026 (UTC)
* ''Sign here''
=== Auto-linking new Abstract Wikipedia articles to their Wikidata counterparts ===
: Right now people need to manually say that ''e.g.'' Q90 is the same as Q90, which takes time and isn't obvious. If we did this automatically as articles were created, the workflow would be easier to understand.
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 15:56, 1 August 2026 (UTC)
* It's a very minor issue in the grand scheme of things, but would be nice. --[[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 16:03, 5 August 2026 (UTC)
* ''Sign here''
=== Show labels of talk pages ===
: Show labels of Zid's talk pages on recent changes, watchlist and also on Categories like [[:Category:English natural language generation functions|this one]]. Idem for Qid's talk pages on Abstract Wikipedia
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 17:22, 1 August 2026 (UTC) (as proposer)
* It's a very minor issue in the grand scheme of things, but would be nice. --[[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 16:03, 5 August 2026 (UTC)
* ''Sign here''
=== Enlarge the field for labels ===
: Currently the field for labels can hold a maximum of 50 characters. See for example {{Z|Z32398}}. Frequently this is not enough and abbreviation have to be made. That makes the function names confusing and not consistent.
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 17:37, 1 August 2026 (UTC) (as proposer)
* [[User:EatingCarBatteries|EatingCarBatteries]] ([[User talk:EatingCarBatteries|talk]]) 20:59, 3 August 2026 (UTC)
* [[User:Strobilomyces|Strobilomyces]] ([[User talk:Strobilomyces|talk]]) 16:09, 5 August 2026 (UTC)
* ''Sign here''
=== Support wikitext in functions output ===
: Wikifunctions don't support wikitext. They can only output unparseable plain text or HTML. I know that the page [[:f:Wikifunctions:Embedded function calls]] says very clearly that wikitext will never be supported. But this is the number one thing that causes me not to be motivated to use functions, and I suspect that I'm not alone. So perhaps you could reconsider it.
* [[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 16:01, 5 August 2026 (UTC)
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 22:11, 5 August 2026 (UTC) Without wikitext the Abstract Wikipedia is not a real Wikipedia. Using wikitext code for bold, italic etc. Maybe also for Wikilinks.
* ''Sign here''
=== Completely change the UI of compositions ===
: I don't get compositions. A few people get them, but a lot of people don't. I mostly don't. When I try to read existing compositions, their deeply-nested hierarchy immediately confuses me, and I'm almost always afraid of editing anything. And I barely know how to start a new composition. The "clipboard" feature, which was added a few months ago, makes it a little bit less frustrating. But only a little bit; it doesn't solve the big issue. Creating and editing compositions is the only way to edit abstract articles, and it's very commonly needed on Wikifunctions, too, so if a lot of people have a hard time understanding how to do it, neither project will acquire a lot of editors. If you ask me, I'd do away with them completely and just use Python or JavaScript (or Lua!) code.
* [[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 16:01, 5 August 2026 (UTC)
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 22:18, 5 August 2026 (UTC) I don't propose to get rid of compositions, but make the default output more readable by automatically start a new function on a new line, and indent automatically. Also in read mode.
* Same. It's frustrating to have to click my mouse 10 times through a bunch of functions just to change an input value [[User:EatingCarBatteries|EatingCarBatteries]] ([[User talk:EatingCarBatteries|talk]]) 03:38, 6 August 2026 (UTC)
* ''Sign here''
=== Allow choice of implementation to be forced ===
: Where a function has multiple implementations, it would be helpful to be able to force the orchestrator to select a particular implementation for a particular run (or a particular session or a particular user). This would often be very helpful for debugging, or when an implementation appears to have a bug. I am not too sure how that could work - I propose that each user should be able to mark any implementation as always to be selected in their case (or perhaps as never to be selected). Perhaps only in the current session.
:It would even be useful to have a mode in a given session where the orchestrator always selects the first (or last) implementation for all functions - then one would at least know which implementation was going to be called!
* [[User:Strobilomyces|Strobilomyces]] ([[User talk:Strobilomyces|talk]]) 16:35, 5 August 2026 (UTC)
*:@[[User:Strobilomyces|Strobilomyces]]: The orchestrator will (currently) only ever chose the first connected implementation (for a language we support). Maybe we could make it clearer? For debugging, the idea is that you can do that from the implementation page whether or not it's connected, such as on [[Z15788]]. We could highlight that, perhaps? Can you give an example outside of debugging where you might want to allow multiple implementations to be connected but choose different implementations at run-time? I cannot suggest what we could do without understanding better the need, sorry! [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 17:30, 5 August 2026 (UTC)
*::Clarification: "First connected implementation" means the first one listed in the JSON version of the function (which is sometimes promoted or demoted by Wikilambda bot), rather than the first one displayed in the UI list, or the first one that was ever connected. Highlighting this implementation in the UI would be nice. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 04:15, 6 August 2026 (UTC)
*:::Yup, good point; we could definitely improve the UX here to indicate which is the "winning" implementation. [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 14:34, 6 August 2026 (UTC)
*::@[[User:Jdforrester (WMF)|Jdforrester (WMF)]] The ability to test a given implementation directly is very useful. But functions often call other functions and it makes debugging difficult if it is not possible to tell which implementation will be executed or has been executed at the lower level. If it currently always the same version, then that is good. I would like to know how to tell which version will be or has been executed. How do I see the JSON version of the subfunction? Do I have to use the API? [[User:Strobilomyces|Strobilomyces]] ([[User talk:Strobilomyces|talk]]) 13:27, 6 August 2026 (UTC)
*:::I find it by looking at the history and comparing diffs. Here's a diff showing that Wikilambda bot promoted the JS implementation to the top: https://www.wikifunctions.org/w/index.php?title=Z13521&diff=289160&oldid=232341 . --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 13:46, 6 August 2026 (UTC)
* ''Sign here''
=== Allow Wikifunctions functions to be called from Python and Javascript ===
: As indicated in an earlier suggestion, it is not convenient to write complicated code in the form of compositions. I think far more code would be contributed if it could be done in Python or Javascript.
* [[User:Strobilomyces|Strobilomyces]] ([[User talk:Strobilomyces|talk]]) 16:44, 5 August 2026 (UTC)
* ''Sign here''
=== Example: Thing to fix (copy me!) ===
: What it would involve, and why it would be valuable.
* ''Sign here''
== Thank you! ==
It was great to speak to and hear from so many of you.
da6n9dex0336tsk4gws26cykl4js9ne
296870
296867
2026-08-06T17:51:29Z
GrounderUK
50
/* Allow choice of implementation to be forced */ Reply
296870
wikitext
text/x-wiki
{{seealso|WF:Feature petitions}}
Thank you to so many of you who came in-person and online to the workshop at Wikimania last week around creating Abstract Wikipedia articles.
__NEWSECTIONLINK__
Based on your comments there and things you ran into or mentioned, we've pulled together a quick ideas list of possible improvements (alongside our work on faster and better NLG support, working with communities to consider piloting Abstract Wikipedia on their wiki, and other major parts of the annual plan).
Please indicate which items you think we should work on soonest by signing your name (<nowiki>~~~~</nowiki>) below them. We'll probably work on many of these, but the count of "votes" and arguments will help guide us in which ones we prioritise.
== Individual fragment editing ==
These are some ideas about how we might make adding and editing individual fragments easier.
=== Only auto-match the Wikidata item to the subject of the article on the first item in a Function call, not all of them ===
: This should avoid the confusing step of suggested items saying "Cairo is the Cairo of Cairo", but instead would need you to specify the item references for the others. The heuristic of only matching the first item might be enough as a starting point for many calls. We probably still want to match all dates and languages, though.
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 07:50, 31 July 2026 (UTC)
* ''Sign here''
=== Split out some of the '…' menu on each item so you can quickly switch to a manual item reference ===
: A big stumbling block for folks was switching from an auto-matched (argument key) item or a function call to a specific item reference. This would allow you to quickly switch to that, without having to notice and go through the menu of all the other options.
* ''Sign here''
=== Re-word the labels for the abstract argument keys to be more clear about what they are ===
: We label the keys as 'wikidata item reference', 'language', and 'date'; we should make it clearer that these are 'this article's subject', 'view language', and 'view date' respectively. This would help avoid confusion about what these keys are for, and when you don't want to use them.
* [[User:Waldyrious|Waldyrious]] ([[User talk:Waldyrious|talk]]) 08:48, 1 August 2026 (UTC)
*:{{Done}} As a first step; how does that work for you? [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 15:45, 5 August 2026 (UTC)
=== Add short description fields to Functions' arguments, to help people can understand what the inputs mean when they use them ===
: For Functions, we have labels, aliases, and short descriptions, but Functions' inputs just have a single label each, which can make it hard for people to know what to put where, especially if they have unusual or unfamiliar words. Add a short description field, maybe shown via a secondary accessor like a "[[File:Codex icon info color-notice.svg|20x20px]]" rather than all the time.
* ''Sign here''
* [[User:Nux|Nux]] ([[User talk:Nux|talk]]) 11:38, 1 August 2026 (UTC) (i) icons with more info might help, like e.g. what the author means by "Hypernym" [https://abstract.wikipedia.org/w/index.php?title=Abstract_Wikipedia:Useful_functions_for_article_composition&oldid=13847].
*:@[[User:Nux|Nux]]: Can you give some more detail for where that kind of interface shows up for you? Do you mean giving more context for labels of functions' inputs? [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 15:46, 5 August 2026 (UTC)
*::@[[User:Jdforrester (WMF)|Jdforrester (WMF)]] Yes, argument description. Like a description for function [https://www.wikifunctions.org/w/index.php?title=Z37921&action=edit&uselang=en]. Like in JavaDoc. [[User:Nux|Nux]] ([[User talk:Nux|talk]]) 19:58, 5 August 2026 (UTC)
*:::Aha, right. Is it OK if I split this out into its own section? That's a very different change from what this section was written up as, based on what I heard in Paris, and should have its own discussion. [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 20:06, 5 August 2026 (UTC)
*::::Sure. [[User:Nux|Nux]] ([[User talk:Nux|talk]]) 20:12, 5 August 2026 (UTC)
* ''Sign here''
=== Example: Thing to fix (copy me!) ===
: What it would involve, and why it would be valuable.
* ''Sign here''
== New/better kinds of fragment ==
Here are some ideas for different kinds of fragments that you could use in abstract articles.
=== Add support for pulling structured data from Commons files ''e.g.'' captions ===
: Right now you can put in image files themselves, but you can't fetch any data about them. This is particularly unhelpful as the Wikidata items still use the File: name rather than the MID; we'd need to add the ability to fetch meta-data from Commons to the back-end services, like we do from Wikidata.
* ''Sign here''
=== Add support for video/audio file inclusions ===
: You can only specify image files, not audio or video files which are more complex. If demand is high we could add this sooner rather than later, though it may be complex to align with the existing workflows.
* ''Sign here''
=== Add support for galleries of media file inclusions ===
: You can create multiple media file transclusions, but it's limited to a small number and you have to do all the work of creating the styles around it. We could give a first-level media file output, if this is strongly wanted.
* ''Sign here''
=== Add support for map inclusions ===
: We don't yet support maps, which might be wanted if folks are making articles about places a lot. Full support would be quite complicated.
* [[User:EatingCarBatteries|EatingCarBatteries]] ([[User talk:EatingCarBatteries|talk]]) 03:24, 31 July 2026 (UTC)
=== Add support for chart inclusions ===
: We don't yet support charts, which might be wanted if folks are making articles about numerical things a lot. Full support would be very complicated.
* ''Sign here''
=== Abstract source mock-ups and multilingual reviews ===
:We are approaching Abstract Wikipedia from the bottom up, with very simple examples. This may be the "Wiki Way", but for software it is very unconventional, and I think it is uncertain whether it can eventually work for more advanced text. The project will have failed unless natural text similar in complexity to current Wikipedia articles can be generated. I think nobody (except possibly [[user:mahir256|Mahir Morshed]]) understands what the abstract source for more complicated sentences would look like.
:Mahir Morshed has created a multilingual text generation system called Elemwala at https://elemwala.toolforge.org/ (see his introduction at https://www.wikifunctions.org/wiki/Wikifunctions:Status_updates/2024-10-17 and his session at Wikimania). This is linked to Abstract Wikipedia, and extremely relevant to it (since it is the only real current proposal for the abstract souce that I know), but it should be noted that Elemwala is only a proposal, not Abstract Wikipedia policy. The list of constructors defines the abstract source as it is at present. Also more information on how this abstract content can be constructed can be found at https://www.wikidata.org/wiki/User:Mahir256/language-generation, with various links and references.
:It is not clear to me whether the abstract source, consisting of functions of Wikidata items backed up by lexemes, can even work at all for a wide variety of languages. Rendering a text needs much information which is special to the target language, for instance there can be genders, grammatical cases, polite forms of address, etc. Example: The Eiffel Tower (Q243) usually needs a definite article when used in English, whereas Blackpool Tower (Q880905) does not. Where should this information for the English renderer be held? It cannot be in the abstract source, since the answer is special for English; some editors of the abstract source will speak languages which do not use articles. Well, I think that this type of item needs an English lexeme with a flag to indicate the article usage, and that would be a solution. Another example relates to the grammatical tenses, voices and moods of verbs. How will that be managed? I suppose that a verb tense indication must be given as a parameter in the abstract source, but how will the values of this parameter be related to all the possible tense/voice/mood verb forms in all the languages? There are an enormous number of such diverse features; how can we be sure that there is enough information in the abstract source to do the rendering in all cases?
:I think that there is an urgent need to create examples of complex text (such as real Wikipedia articles) in the proposed abstract source. Then testers who comprehend the abstract source format and also know a relevant language should interpret the source text and confirm whether they understand it and whether they have enough information to reconstruct the text in their own language (not by software but with their own mental processes). If so, that would give much-needed confidence that the Abstract Wikipedia scheme can actually work, and I think it would advance the project by making clearer the next needed steps.
* [[User:Strobilomyces|Strobilomyces]] ([[User talk:Strobilomyces|talk]]) 20:41, 5 August 2026 (UTC)
* ''Sign here''
=== Example: Thing to fix (copy me!) ===
: What it would involve, and why it would be valuable.
* ''Sign here''
== Article editing ==
Here are some quick ideas about overall article editing, not specific to a given
=== Drag-and-drop moving of fragments, instead of having to click on the menu and the "move up/down" multiple times ===
: Drag-and-drop is a relatively familiar UX feature, and we could add an affordance for it to make it more discoverable at the same time as more usable.
* [[User:EatingCarBatteries|EatingCarBatteries]] ([[User talk:EatingCarBatteries|talk]]) 03:22, 31 July 2026 (UTC)
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 07:52, 31 July 2026 (UTC)
* [[User:Waldyrious|Waldyrious]] ([[User talk:Waldyrious|talk]]) 08:49, 1 August 2026 (UTC)
* [[User:Nux|Nux]] ([[User talk:Nux|talk]]) 11:42, 1 August 2026 (UTC) and also selecting and copying with ctrl+c/ctrl+v like in OOo/LibreOffice Calc
* [[User:Dungodung|Dungodung]] ([[User talk:Dungodung|talk]]) 15:30, 5 August 2026 (UTC)
* It's a very minor issue in the grand scheme of things, but would be nice. --[[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 16:04, 5 August 2026 (UTC)
* ''Sign here''
=== Fix the long article dual-column scroll problem where you can't see what you're editing ===
: This is particularly an issue on longer articles and smaller screens, but was mentioned as very irritating by some of you!
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 07:49, 31 July 2026 (UTC)
* It's a very minor issue in the grand scheme of things, but would be nice. --[[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 16:04, 5 August 2026 (UTC)
* ''Sign here''
=== Support multiple sections, rather than just the lede ===
: Right now (despite some functions outputting <nowiki><h2></nowiki>s and the like), all articles are limited to just editing the lede section. We have mostly-built support for thematic sections, but this needs some polish. This would let you 'chunk up' articles, potentially editing only a section at a time for ease of use and / or collapsing those sections away to focus. We could also use this to allow external links limited to only the "external links" section (and references).
* [[User:EatingCarBatteries|EatingCarBatteries]] ([[User talk:EatingCarBatteries|talk]]) 07:12, 3 August 2026 (UTC)
=== Prompt editors with function calls based on statements in the Wikidata item ===
: Add a feature that checks the subject's Wikidata item for statements of the kind it knows about (e.g. "born 1850-01-20 in France") and match them to fragments, prompting you to add this. We'd need to work out how to link between fragment functions and Wikidata claims, and how to know whether the claims were already in the article, so this is quite complex to design and build, but would probably help a great deal.
* ''Sign here''
=== Prompt editors with media used on Wikipedia articles for the subject ===
: A more specialised option compared to fetching media suggestions alongside everything else from the Wikidata item would be to check for the main/first image on any existing Wikipedia articles and suggesting that if it's not already set.
* ''Sign here''
=== Fill in the parameters at copy/paste ===
: Fill in the parameters at copy/paste if the number and types of parameters match. That is especialy usefull when copying a new function from one language to an other. Currenltly every parameter has to be filled manually.
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 22:25, 5 August 2026 (UTC) (as proposer) I just created {{Z|Z38911}} and it took me very long to fill all 30! parameters correctly~
* ''Sign here''
=== Example: Thing to fix (copy me!) ===
: What it would involve, and why it would be valuable.
* ''Sign here''
== Any other ideas you might have ==
The sections above aren't everything. What else is something you'd like fixed?
=== Make it more obvious in the search whether there's an existing abstract article or not ===
: Right now we just add "– AW" to the end of search results when there's an existing article; if we make it clearer whether the link is a "read this" or "create this" link, folks won't be surprised when they click it.
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 15:58, 1 August 2026 (UTC)
* ''Sign here''
=== Auto-linking new Abstract Wikipedia articles to their Wikidata counterparts ===
: Right now people need to manually say that ''e.g.'' Q90 is the same as Q90, which takes time and isn't obvious. If we did this automatically as articles were created, the workflow would be easier to understand.
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 15:56, 1 August 2026 (UTC)
* It's a very minor issue in the grand scheme of things, but would be nice. --[[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 16:03, 5 August 2026 (UTC)
* ''Sign here''
=== Show labels of talk pages ===
: Show labels of Zid's talk pages on recent changes, watchlist and also on Categories like [[:Category:English natural language generation functions|this one]]. Idem for Qid's talk pages on Abstract Wikipedia
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 17:22, 1 August 2026 (UTC) (as proposer)
* It's a very minor issue in the grand scheme of things, but would be nice. --[[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 16:03, 5 August 2026 (UTC)
* ''Sign here''
=== Enlarge the field for labels ===
: Currently the field for labels can hold a maximum of 50 characters. See for example {{Z|Z32398}}. Frequently this is not enough and abbreviation have to be made. That makes the function names confusing and not consistent.
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 17:37, 1 August 2026 (UTC) (as proposer)
* [[User:EatingCarBatteries|EatingCarBatteries]] ([[User talk:EatingCarBatteries|talk]]) 20:59, 3 August 2026 (UTC)
* [[User:Strobilomyces|Strobilomyces]] ([[User talk:Strobilomyces|talk]]) 16:09, 5 August 2026 (UTC)
* ''Sign here''
=== Support wikitext in functions output ===
: Wikifunctions don't support wikitext. They can only output unparseable plain text or HTML. I know that the page [[:f:Wikifunctions:Embedded function calls]] says very clearly that wikitext will never be supported. But this is the number one thing that causes me not to be motivated to use functions, and I suspect that I'm not alone. So perhaps you could reconsider it.
* [[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 16:01, 5 August 2026 (UTC)
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 22:11, 5 August 2026 (UTC) Without wikitext the Abstract Wikipedia is not a real Wikipedia. Using wikitext code for bold, italic etc. Maybe also for Wikilinks.
* ''Sign here''
=== Completely change the UI of compositions ===
: I don't get compositions. A few people get them, but a lot of people don't. I mostly don't. When I try to read existing compositions, their deeply-nested hierarchy immediately confuses me, and I'm almost always afraid of editing anything. And I barely know how to start a new composition. The "clipboard" feature, which was added a few months ago, makes it a little bit less frustrating. But only a little bit; it doesn't solve the big issue. Creating and editing compositions is the only way to edit abstract articles, and it's very commonly needed on Wikifunctions, too, so if a lot of people have a hard time understanding how to do it, neither project will acquire a lot of editors. If you ask me, I'd do away with them completely and just use Python or JavaScript (or Lua!) code.
* [[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 16:01, 5 August 2026 (UTC)
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 22:18, 5 August 2026 (UTC) I don't propose to get rid of compositions, but make the default output more readable by automatically start a new function on a new line, and indent automatically. Also in read mode.
* Same. It's frustrating to have to click my mouse 10 times through a bunch of functions just to change an input value [[User:EatingCarBatteries|EatingCarBatteries]] ([[User talk:EatingCarBatteries|talk]]) 03:38, 6 August 2026 (UTC)
* ''Sign here''
=== Allow choice of implementation to be forced ===
: Where a function has multiple implementations, it would be helpful to be able to force the orchestrator to select a particular implementation for a particular run (or a particular session or a particular user). This would often be very helpful for debugging, or when an implementation appears to have a bug. I am not too sure how that could work - I propose that each user should be able to mark any implementation as always to be selected in their case (or perhaps as never to be selected). Perhaps only in the current session.
:It would even be useful to have a mode in a given session where the orchestrator always selects the first (or last) implementation for all functions - then one would at least know which implementation was going to be called!
* [[User:Strobilomyces|Strobilomyces]] ([[User talk:Strobilomyces|talk]]) 16:35, 5 August 2026 (UTC)
*:@[[User:Strobilomyces|Strobilomyces]]: The orchestrator will (currently) only ever chose the first connected implementation (for a language we support). Maybe we could make it clearer? For debugging, the idea is that you can do that from the implementation page whether or not it's connected, such as on [[Z15788]]. We could highlight that, perhaps? Can you give an example outside of debugging where you might want to allow multiple implementations to be connected but choose different implementations at run-time? I cannot suggest what we could do without understanding better the need, sorry! [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 17:30, 5 August 2026 (UTC)
*::Clarification: "First connected implementation" means the first one listed in the JSON version of the function (which is sometimes promoted or demoted by Wikilambda bot), rather than the first one displayed in the UI list, or the first one that was ever connected. Highlighting this implementation in the UI would be nice. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 04:15, 6 August 2026 (UTC)
*:::Yup, good point; we could definitely improve the UX here to indicate which is the "winning" implementation. [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 14:34, 6 August 2026 (UTC)
*::@[[User:Jdforrester (WMF)|Jdforrester (WMF)]] The ability to test a given implementation directly is very useful. But functions often call other functions and it makes debugging difficult if it is not possible to tell which implementation will be executed or has been executed at the lower level. If it currently always the same version, then that is good. I would like to know how to tell which version will be or has been executed. How do I see the JSON version of the subfunction? Do I have to use the API? [[User:Strobilomyces|Strobilomyces]] ([[User talk:Strobilomyces|talk]]) 13:27, 6 August 2026 (UTC)
*:::I find it by looking at the history and comparing diffs. Here's a diff showing that Wikilambda bot promoted the JS implementation to the top: https://www.wikifunctions.org/w/index.php?title=Z13521&diff=289160&oldid=232341 . --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 13:46, 6 August 2026 (UTC)
*:You can run {{Z|Z35874}} to get the identifier of the currently preferred implementation for a specified function. You could also have [https://www.wikifunctions.org/view/en/Z37465?call=%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z37465%22%2C%22Z37465K1%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z35874%22%2C%22Z35874K1%22%3A%22Z10000%22%7D%2C%22Z37465K2%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z35874%22%2C%22Z35874K1%22%3A%22Z10000%22%7D%7D a hyperlink to the implementation].
*:When browsing, if you click on any of a function’s test cases, the implementations that are connected to the function are listed in the correct order in the Implementations box. This is also true when adding a new test case to a function.
*:Or we could [https://www.wikifunctions.org/view/en/Z801?call=%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z801%22%2C%22Z801K1%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z33470%22%2C%22Z33470K1%22%3A%22view+function%E2%80%99s+JSON%22%2C%22Z33470K2%22%3A%22a%22%2C%22Z33470K3%22%3A%7B%22Z1K1%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z883%22%2C%22Z883K1%22%3A%22Z6%22%2C%22Z883K2%22%3A%22Z1%22%7D%2C%22K1%22%3A%5B%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z882%22%2C%22Z882K1%22%3A%22Z6%22%2C%22Z882K2%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z881%22%2C%22Z881K1%22%3A%22Z6%22%7D%7D%2C%7B%22Z1K1%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z882%22%2C%22Z882K1%22%3A%22Z6%22%2C%22Z882K2%22%3A%22Z1%22%7D%2C%22K1%22%3A%22href%22%2C%22K2%22%3A%5B%22Z6%22%2C%22https%3A%2F%2Fwww.wikifunctions.org%2Fwiki%2F%22%2C%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z28231%22%2C%22Z28231K1%22%3A%22Z801%22%7D%2C%22%3Faction%3Draw%22%5D%7D%5D%7D%7D%7D turn this into a function], I suppose, or [https://www.wikifunctions.org/view/en/Z801?call=%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z801%22%2C%22Z801K1%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z811%22%2C%22Z811K1%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z803%22%2C%22Z803K1%22%3A%7B%22Z1K1%22%3A%22Z39%22%2C%22Z39K1%22%3A%22K1%22%7D%2C%22Z803K2%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z804%22%2C%22Z804K1%22%3A%5B%22Z39%22%2C%7B%22Z1K1%22%3A%22Z39%22%2C%22Z39K1%22%3A%22Z8K4%22%7D%5D%2C%22Z804K2%22%3A%22Z10000%22%7D%7D%7D%7D just this]. [[User:GrounderUK|GrounderUK]] ([[User talk:GrounderUK|talk]]) 17:51, 6 August 2026 (UTC)
* ''Sign here''
=== Allow Wikifunctions functions to be called from Python and Javascript ===
: As indicated in an earlier suggestion, it is not convenient to write complicated code in the form of compositions. I think far more code would be contributed if it could be done in Python or Javascript.
* [[User:Strobilomyces|Strobilomyces]] ([[User talk:Strobilomyces|talk]]) 16:44, 5 August 2026 (UTC)
* ''Sign here''
=== Example: Thing to fix (copy me!) ===
: What it would involve, and why it would be valuable.
* ''Sign here''
== Thank you! ==
It was great to speak to and hear from so many of you.
n250mcqevmn796i2f7xuq8k2c72m253
297018
296870
2026-08-06T18:04:42Z
GrounderUK
50
/* Allow choice of implementation to be forced */ Reply
297018
wikitext
text/x-wiki
{{seealso|WF:Feature petitions}}
Thank you to so many of you who came in-person and online to the workshop at Wikimania last week around creating Abstract Wikipedia articles.
__NEWSECTIONLINK__
Based on your comments there and things you ran into or mentioned, we've pulled together a quick ideas list of possible improvements (alongside our work on faster and better NLG support, working with communities to consider piloting Abstract Wikipedia on their wiki, and other major parts of the annual plan).
Please indicate which items you think we should work on soonest by signing your name (<nowiki>~~~~</nowiki>) below them. We'll probably work on many of these, but the count of "votes" and arguments will help guide us in which ones we prioritise.
== Individual fragment editing ==
These are some ideas about how we might make adding and editing individual fragments easier.
=== Only auto-match the Wikidata item to the subject of the article on the first item in a Function call, not all of them ===
: This should avoid the confusing step of suggested items saying "Cairo is the Cairo of Cairo", but instead would need you to specify the item references for the others. The heuristic of only matching the first item might be enough as a starting point for many calls. We probably still want to match all dates and languages, though.
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 07:50, 31 July 2026 (UTC)
* ''Sign here''
=== Split out some of the '…' menu on each item so you can quickly switch to a manual item reference ===
: A big stumbling block for folks was switching from an auto-matched (argument key) item or a function call to a specific item reference. This would allow you to quickly switch to that, without having to notice and go through the menu of all the other options.
* ''Sign here''
=== Re-word the labels for the abstract argument keys to be more clear about what they are ===
: We label the keys as 'wikidata item reference', 'language', and 'date'; we should make it clearer that these are 'this article's subject', 'view language', and 'view date' respectively. This would help avoid confusion about what these keys are for, and when you don't want to use them.
* [[User:Waldyrious|Waldyrious]] ([[User talk:Waldyrious|talk]]) 08:48, 1 August 2026 (UTC)
*:{{Done}} As a first step; how does that work for you? [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 15:45, 5 August 2026 (UTC)
=== Add short description fields to Functions' arguments, to help people can understand what the inputs mean when they use them ===
: For Functions, we have labels, aliases, and short descriptions, but Functions' inputs just have a single label each, which can make it hard for people to know what to put where, especially if they have unusual or unfamiliar words. Add a short description field, maybe shown via a secondary accessor like a "[[File:Codex icon info color-notice.svg|20x20px]]" rather than all the time.
* ''Sign here''
* [[User:Nux|Nux]] ([[User talk:Nux|talk]]) 11:38, 1 August 2026 (UTC) (i) icons with more info might help, like e.g. what the author means by "Hypernym" [https://abstract.wikipedia.org/w/index.php?title=Abstract_Wikipedia:Useful_functions_for_article_composition&oldid=13847].
*:@[[User:Nux|Nux]]: Can you give some more detail for where that kind of interface shows up for you? Do you mean giving more context for labels of functions' inputs? [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 15:46, 5 August 2026 (UTC)
*::@[[User:Jdforrester (WMF)|Jdforrester (WMF)]] Yes, argument description. Like a description for function [https://www.wikifunctions.org/w/index.php?title=Z37921&action=edit&uselang=en]. Like in JavaDoc. [[User:Nux|Nux]] ([[User talk:Nux|talk]]) 19:58, 5 August 2026 (UTC)
*:::Aha, right. Is it OK if I split this out into its own section? That's a very different change from what this section was written up as, based on what I heard in Paris, and should have its own discussion. [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 20:06, 5 August 2026 (UTC)
*::::Sure. [[User:Nux|Nux]] ([[User talk:Nux|talk]]) 20:12, 5 August 2026 (UTC)
* ''Sign here''
=== Example: Thing to fix (copy me!) ===
: What it would involve, and why it would be valuable.
* ''Sign here''
== New/better kinds of fragment ==
Here are some ideas for different kinds of fragments that you could use in abstract articles.
=== Add support for pulling structured data from Commons files ''e.g.'' captions ===
: Right now you can put in image files themselves, but you can't fetch any data about them. This is particularly unhelpful as the Wikidata items still use the File: name rather than the MID; we'd need to add the ability to fetch meta-data from Commons to the back-end services, like we do from Wikidata.
* ''Sign here''
=== Add support for video/audio file inclusions ===
: You can only specify image files, not audio or video files which are more complex. If demand is high we could add this sooner rather than later, though it may be complex to align with the existing workflows.
* ''Sign here''
=== Add support for galleries of media file inclusions ===
: You can create multiple media file transclusions, but it's limited to a small number and you have to do all the work of creating the styles around it. We could give a first-level media file output, if this is strongly wanted.
* ''Sign here''
=== Add support for map inclusions ===
: We don't yet support maps, which might be wanted if folks are making articles about places a lot. Full support would be quite complicated.
* [[User:EatingCarBatteries|EatingCarBatteries]] ([[User talk:EatingCarBatteries|talk]]) 03:24, 31 July 2026 (UTC)
=== Add support for chart inclusions ===
: We don't yet support charts, which might be wanted if folks are making articles about numerical things a lot. Full support would be very complicated.
* ''Sign here''
=== Abstract source mock-ups and multilingual reviews ===
:We are approaching Abstract Wikipedia from the bottom up, with very simple examples. This may be the "Wiki Way", but for software it is very unconventional, and I think it is uncertain whether it can eventually work for more advanced text. The project will have failed unless natural text similar in complexity to current Wikipedia articles can be generated. I think nobody (except possibly [[user:mahir256|Mahir Morshed]]) understands what the abstract source for more complicated sentences would look like.
:Mahir Morshed has created a multilingual text generation system called Elemwala at https://elemwala.toolforge.org/ (see his introduction at https://www.wikifunctions.org/wiki/Wikifunctions:Status_updates/2024-10-17 and his session at Wikimania). This is linked to Abstract Wikipedia, and extremely relevant to it (since it is the only real current proposal for the abstract souce that I know), but it should be noted that Elemwala is only a proposal, not Abstract Wikipedia policy. The list of constructors defines the abstract source as it is at present. Also more information on how this abstract content can be constructed can be found at https://www.wikidata.org/wiki/User:Mahir256/language-generation, with various links and references.
:It is not clear to me whether the abstract source, consisting of functions of Wikidata items backed up by lexemes, can even work at all for a wide variety of languages. Rendering a text needs much information which is special to the target language, for instance there can be genders, grammatical cases, polite forms of address, etc. Example: The Eiffel Tower (Q243) usually needs a definite article when used in English, whereas Blackpool Tower (Q880905) does not. Where should this information for the English renderer be held? It cannot be in the abstract source, since the answer is special for English; some editors of the abstract source will speak languages which do not use articles. Well, I think that this type of item needs an English lexeme with a flag to indicate the article usage, and that would be a solution. Another example relates to the grammatical tenses, voices and moods of verbs. How will that be managed? I suppose that a verb tense indication must be given as a parameter in the abstract source, but how will the values of this parameter be related to all the possible tense/voice/mood verb forms in all the languages? There are an enormous number of such diverse features; how can we be sure that there is enough information in the abstract source to do the rendering in all cases?
:I think that there is an urgent need to create examples of complex text (such as real Wikipedia articles) in the proposed abstract source. Then testers who comprehend the abstract source format and also know a relevant language should interpret the source text and confirm whether they understand it and whether they have enough information to reconstruct the text in their own language (not by software but with their own mental processes). If so, that would give much-needed confidence that the Abstract Wikipedia scheme can actually work, and I think it would advance the project by making clearer the next needed steps.
* [[User:Strobilomyces|Strobilomyces]] ([[User talk:Strobilomyces|talk]]) 20:41, 5 August 2026 (UTC)
* ''Sign here''
=== Example: Thing to fix (copy me!) ===
: What it would involve, and why it would be valuable.
* ''Sign here''
== Article editing ==
Here are some quick ideas about overall article editing, not specific to a given
=== Drag-and-drop moving of fragments, instead of having to click on the menu and the "move up/down" multiple times ===
: Drag-and-drop is a relatively familiar UX feature, and we could add an affordance for it to make it more discoverable at the same time as more usable.
* [[User:EatingCarBatteries|EatingCarBatteries]] ([[User talk:EatingCarBatteries|talk]]) 03:22, 31 July 2026 (UTC)
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 07:52, 31 July 2026 (UTC)
* [[User:Waldyrious|Waldyrious]] ([[User talk:Waldyrious|talk]]) 08:49, 1 August 2026 (UTC)
* [[User:Nux|Nux]] ([[User talk:Nux|talk]]) 11:42, 1 August 2026 (UTC) and also selecting and copying with ctrl+c/ctrl+v like in OOo/LibreOffice Calc
* [[User:Dungodung|Dungodung]] ([[User talk:Dungodung|talk]]) 15:30, 5 August 2026 (UTC)
* It's a very minor issue in the grand scheme of things, but would be nice. --[[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 16:04, 5 August 2026 (UTC)
* ''Sign here''
=== Fix the long article dual-column scroll problem where you can't see what you're editing ===
: This is particularly an issue on longer articles and smaller screens, but was mentioned as very irritating by some of you!
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 07:49, 31 July 2026 (UTC)
* It's a very minor issue in the grand scheme of things, but would be nice. --[[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 16:04, 5 August 2026 (UTC)
* ''Sign here''
=== Support multiple sections, rather than just the lede ===
: Right now (despite some functions outputting <nowiki><h2></nowiki>s and the like), all articles are limited to just editing the lede section. We have mostly-built support for thematic sections, but this needs some polish. This would let you 'chunk up' articles, potentially editing only a section at a time for ease of use and / or collapsing those sections away to focus. We could also use this to allow external links limited to only the "external links" section (and references).
* [[User:EatingCarBatteries|EatingCarBatteries]] ([[User talk:EatingCarBatteries|talk]]) 07:12, 3 August 2026 (UTC)
=== Prompt editors with function calls based on statements in the Wikidata item ===
: Add a feature that checks the subject's Wikidata item for statements of the kind it knows about (e.g. "born 1850-01-20 in France") and match them to fragments, prompting you to add this. We'd need to work out how to link between fragment functions and Wikidata claims, and how to know whether the claims were already in the article, so this is quite complex to design and build, but would probably help a great deal.
* ''Sign here''
=== Prompt editors with media used on Wikipedia articles for the subject ===
: A more specialised option compared to fetching media suggestions alongside everything else from the Wikidata item would be to check for the main/first image on any existing Wikipedia articles and suggesting that if it's not already set.
* ''Sign here''
=== Fill in the parameters at copy/paste ===
: Fill in the parameters at copy/paste if the number and types of parameters match. That is especialy usefull when copying a new function from one language to an other. Currenltly every parameter has to be filled manually.
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 22:25, 5 August 2026 (UTC) (as proposer) I just created {{Z|Z38911}} and it took me very long to fill all 30! parameters correctly~
* ''Sign here''
=== Example: Thing to fix (copy me!) ===
: What it would involve, and why it would be valuable.
* ''Sign here''
== Any other ideas you might have ==
The sections above aren't everything. What else is something you'd like fixed?
=== Make it more obvious in the search whether there's an existing abstract article or not ===
: Right now we just add "– AW" to the end of search results when there's an existing article; if we make it clearer whether the link is a "read this" or "create this" link, folks won't be surprised when they click it.
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 15:58, 1 August 2026 (UTC)
* ''Sign here''
=== Auto-linking new Abstract Wikipedia articles to their Wikidata counterparts ===
: Right now people need to manually say that ''e.g.'' Q90 is the same as Q90, which takes time and isn't obvious. If we did this automatically as articles were created, the workflow would be easier to understand.
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 15:56, 1 August 2026 (UTC)
* It's a very minor issue in the grand scheme of things, but would be nice. --[[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 16:03, 5 August 2026 (UTC)
* ''Sign here''
=== Show labels of talk pages ===
: Show labels of Zid's talk pages on recent changes, watchlist and also on Categories like [[:Category:English natural language generation functions|this one]]. Idem for Qid's talk pages on Abstract Wikipedia
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 17:22, 1 August 2026 (UTC) (as proposer)
* It's a very minor issue in the grand scheme of things, but would be nice. --[[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 16:03, 5 August 2026 (UTC)
* ''Sign here''
=== Enlarge the field for labels ===
: Currently the field for labels can hold a maximum of 50 characters. See for example {{Z|Z32398}}. Frequently this is not enough and abbreviation have to be made. That makes the function names confusing and not consistent.
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 17:37, 1 August 2026 (UTC) (as proposer)
* [[User:EatingCarBatteries|EatingCarBatteries]] ([[User talk:EatingCarBatteries|talk]]) 20:59, 3 August 2026 (UTC)
* [[User:Strobilomyces|Strobilomyces]] ([[User talk:Strobilomyces|talk]]) 16:09, 5 August 2026 (UTC)
* ''Sign here''
=== Support wikitext in functions output ===
: Wikifunctions don't support wikitext. They can only output unparseable plain text or HTML. I know that the page [[:f:Wikifunctions:Embedded function calls]] says very clearly that wikitext will never be supported. But this is the number one thing that causes me not to be motivated to use functions, and I suspect that I'm not alone. So perhaps you could reconsider it.
* [[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 16:01, 5 August 2026 (UTC)
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 22:11, 5 August 2026 (UTC) Without wikitext the Abstract Wikipedia is not a real Wikipedia. Using wikitext code for bold, italic etc. Maybe also for Wikilinks.
* ''Sign here''
=== Completely change the UI of compositions ===
: I don't get compositions. A few people get them, but a lot of people don't. I mostly don't. When I try to read existing compositions, their deeply-nested hierarchy immediately confuses me, and I'm almost always afraid of editing anything. And I barely know how to start a new composition. The "clipboard" feature, which was added a few months ago, makes it a little bit less frustrating. But only a little bit; it doesn't solve the big issue. Creating and editing compositions is the only way to edit abstract articles, and it's very commonly needed on Wikifunctions, too, so if a lot of people have a hard time understanding how to do it, neither project will acquire a lot of editors. If you ask me, I'd do away with them completely and just use Python or JavaScript (or Lua!) code.
* [[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 16:01, 5 August 2026 (UTC)
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 22:18, 5 August 2026 (UTC) I don't propose to get rid of compositions, but make the default output more readable by automatically start a new function on a new line, and indent automatically. Also in read mode.
* Same. It's frustrating to have to click my mouse 10 times through a bunch of functions just to change an input value [[User:EatingCarBatteries|EatingCarBatteries]] ([[User talk:EatingCarBatteries|talk]]) 03:38, 6 August 2026 (UTC)
* ''Sign here''
=== Allow choice of implementation to be forced ===
: Where a function has multiple implementations, it would be helpful to be able to force the orchestrator to select a particular implementation for a particular run (or a particular session or a particular user). This would often be very helpful for debugging, or when an implementation appears to have a bug. I am not too sure how that could work - I propose that each user should be able to mark any implementation as always to be selected in their case (or perhaps as never to be selected). Perhaps only in the current session.
:It would even be useful to have a mode in a given session where the orchestrator always selects the first (or last) implementation for all functions - then one would at least know which implementation was going to be called!
* [[User:Strobilomyces|Strobilomyces]] ([[User talk:Strobilomyces|talk]]) 16:35, 5 August 2026 (UTC)
*:@[[User:Strobilomyces|Strobilomyces]]: The orchestrator will (currently) only ever chose the first connected implementation (for a language we support). Maybe we could make it clearer? For debugging, the idea is that you can do that from the implementation page whether or not it's connected, such as on [[Z15788]]. We could highlight that, perhaps? Can you give an example outside of debugging where you might want to allow multiple implementations to be connected but choose different implementations at run-time? I cannot suggest what we could do without understanding better the need, sorry! [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 17:30, 5 August 2026 (UTC)
*::Clarification: "First connected implementation" means the first one listed in the JSON version of the function (which is sometimes promoted or demoted by Wikilambda bot), rather than the first one displayed in the UI list, or the first one that was ever connected. Highlighting this implementation in the UI would be nice. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 04:15, 6 August 2026 (UTC)
*:::Yup, good point; we could definitely improve the UX here to indicate which is the "winning" implementation. [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 14:34, 6 August 2026 (UTC)
*::@[[User:Jdforrester (WMF)|Jdforrester (WMF)]] The ability to test a given implementation directly is very useful. But functions often call other functions and it makes debugging difficult if it is not possible to tell which implementation will be executed or has been executed at the lower level. If it currently always the same version, then that is good. I would like to know how to tell which version will be or has been executed. How do I see the JSON version of the subfunction? Do I have to use the API? [[User:Strobilomyces|Strobilomyces]] ([[User talk:Strobilomyces|talk]]) 13:27, 6 August 2026 (UTC)
*:::I find it by looking at the history and comparing diffs. Here's a diff showing that Wikilambda bot promoted the JS implementation to the top: https://www.wikifunctions.org/w/index.php?title=Z13521&diff=289160&oldid=232341 . --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 13:46, 6 August 2026 (UTC)
*::A particular case where the preferred implementation should not be used is when testing a recursive implementation. [[User:GrounderUK|GrounderUK]] ([[User talk:GrounderUK|talk]]) 18:04, 6 August 2026 (UTC)
*:You can run {{Z|Z35874}} to get the identifier of the currently preferred implementation for a specified function. You could also have [https://www.wikifunctions.org/view/en/Z37465?call=%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z37465%22%2C%22Z37465K1%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z35874%22%2C%22Z35874K1%22%3A%22Z10000%22%7D%2C%22Z37465K2%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z35874%22%2C%22Z35874K1%22%3A%22Z10000%22%7D%7D a hyperlink to the implementation].
*:When browsing, if you click on any of a function’s test cases, the implementations that are connected to the function are listed in the correct order in the Implementations box. This is also true when adding a new test case to a function.
*:Or we could [https://www.wikifunctions.org/view/en/Z801?call=%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z801%22%2C%22Z801K1%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z33470%22%2C%22Z33470K1%22%3A%22view+function%E2%80%99s+JSON%22%2C%22Z33470K2%22%3A%22a%22%2C%22Z33470K3%22%3A%7B%22Z1K1%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z883%22%2C%22Z883K1%22%3A%22Z6%22%2C%22Z883K2%22%3A%22Z1%22%7D%2C%22K1%22%3A%5B%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z882%22%2C%22Z882K1%22%3A%22Z6%22%2C%22Z882K2%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z881%22%2C%22Z881K1%22%3A%22Z6%22%7D%7D%2C%7B%22Z1K1%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z882%22%2C%22Z882K1%22%3A%22Z6%22%2C%22Z882K2%22%3A%22Z1%22%7D%2C%22K1%22%3A%22href%22%2C%22K2%22%3A%5B%22Z6%22%2C%22https%3A%2F%2Fwww.wikifunctions.org%2Fwiki%2F%22%2C%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z28231%22%2C%22Z28231K1%22%3A%22Z801%22%7D%2C%22%3Faction%3Draw%22%5D%7D%5D%7D%7D%7D turn this into a function], I suppose, or [https://www.wikifunctions.org/view/en/Z801?call=%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z801%22%2C%22Z801K1%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z811%22%2C%22Z811K1%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z803%22%2C%22Z803K1%22%3A%7B%22Z1K1%22%3A%22Z39%22%2C%22Z39K1%22%3A%22K1%22%7D%2C%22Z803K2%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z804%22%2C%22Z804K1%22%3A%5B%22Z39%22%2C%7B%22Z1K1%22%3A%22Z39%22%2C%22Z39K1%22%3A%22Z8K4%22%7D%5D%2C%22Z804K2%22%3A%22Z10000%22%7D%7D%7D%7D just this]. [[User:GrounderUK|GrounderUK]] ([[User talk:GrounderUK|talk]]) 17:51, 6 August 2026 (UTC)
* ''Sign here''
=== Allow Wikifunctions functions to be called from Python and Javascript ===
: As indicated in an earlier suggestion, it is not convenient to write complicated code in the form of compositions. I think far more code would be contributed if it could be done in Python or Javascript.
* [[User:Strobilomyces|Strobilomyces]] ([[User talk:Strobilomyces|talk]]) 16:44, 5 August 2026 (UTC)
* ''Sign here''
=== Example: Thing to fix (copy me!) ===
: What it would involve, and why it would be valuable.
* ''Sign here''
== Thank you! ==
It was great to speak to and hear from so many of you.
jc73b20a68x03xqrgpuve36h35h4h6w
297069
297018
2026-08-07T00:56:33Z
Kambai Akau
2092
/* Only auto-match the Wikidata item to the subject of the article on the first item in a Function call, not all of them */
297069
wikitext
text/x-wiki
{{seealso|WF:Feature petitions}}
Thank you to so many of you who came in-person and online to the workshop at Wikimania last week around creating Abstract Wikipedia articles.
__NEWSECTIONLINK__
Based on your comments there and things you ran into or mentioned, we've pulled together a quick ideas list of possible improvements (alongside our work on faster and better NLG support, working with communities to consider piloting Abstract Wikipedia on their wiki, and other major parts of the annual plan).
Please indicate which items you think we should work on soonest by signing your name (<nowiki>~~~~</nowiki>) below them. We'll probably work on many of these, but the count of "votes" and arguments will help guide us in which ones we prioritise.
== Individual fragment editing ==
These are some ideas about how we might make adding and editing individual fragments easier.
=== Only auto-match the Wikidata item to the subject of the article on the first item in a Function call, not all of them ===
: This should avoid the confusing step of suggested items saying "Cairo is the Cairo of Cairo", but instead would need you to specify the item references for the others. The heuristic of only matching the first item might be enough as a starting point for many calls. We probably still want to match all dates and languages, though.
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 07:50, 31 July 2026 (UTC)
* [[User:Kambai Akau|Kambai Akau]] ([[User talk:Kambai Akau|talk]]) 00:56, 7 August 2026 (UTC)
* ''Sign here''
=== Split out some of the '…' menu on each item so you can quickly switch to a manual item reference ===
: A big stumbling block for folks was switching from an auto-matched (argument key) item or a function call to a specific item reference. This would allow you to quickly switch to that, without having to notice and go through the menu of all the other options.
* ''Sign here''
=== Re-word the labels for the abstract argument keys to be more clear about what they are ===
: We label the keys as 'wikidata item reference', 'language', and 'date'; we should make it clearer that these are 'this article's subject', 'view language', and 'view date' respectively. This would help avoid confusion about what these keys are for, and when you don't want to use them.
* [[User:Waldyrious|Waldyrious]] ([[User talk:Waldyrious|talk]]) 08:48, 1 August 2026 (UTC)
*:{{Done}} As a first step; how does that work for you? [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 15:45, 5 August 2026 (UTC)
=== Add short description fields to Functions' arguments, to help people can understand what the inputs mean when they use them ===
: For Functions, we have labels, aliases, and short descriptions, but Functions' inputs just have a single label each, which can make it hard for people to know what to put where, especially if they have unusual or unfamiliar words. Add a short description field, maybe shown via a secondary accessor like a "[[File:Codex icon info color-notice.svg|20x20px]]" rather than all the time.
* ''Sign here''
* [[User:Nux|Nux]] ([[User talk:Nux|talk]]) 11:38, 1 August 2026 (UTC) (i) icons with more info might help, like e.g. what the author means by "Hypernym" [https://abstract.wikipedia.org/w/index.php?title=Abstract_Wikipedia:Useful_functions_for_article_composition&oldid=13847].
*:@[[User:Nux|Nux]]: Can you give some more detail for where that kind of interface shows up for you? Do you mean giving more context for labels of functions' inputs? [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 15:46, 5 August 2026 (UTC)
*::@[[User:Jdforrester (WMF)|Jdforrester (WMF)]] Yes, argument description. Like a description for function [https://www.wikifunctions.org/w/index.php?title=Z37921&action=edit&uselang=en]. Like in JavaDoc. [[User:Nux|Nux]] ([[User talk:Nux|talk]]) 19:58, 5 August 2026 (UTC)
*:::Aha, right. Is it OK if I split this out into its own section? That's a very different change from what this section was written up as, based on what I heard in Paris, and should have its own discussion. [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 20:06, 5 August 2026 (UTC)
*::::Sure. [[User:Nux|Nux]] ([[User talk:Nux|talk]]) 20:12, 5 August 2026 (UTC)
* ''Sign here''
=== Example: Thing to fix (copy me!) ===
: What it would involve, and why it would be valuable.
* ''Sign here''
== New/better kinds of fragment ==
Here are some ideas for different kinds of fragments that you could use in abstract articles.
=== Add support for pulling structured data from Commons files ''e.g.'' captions ===
: Right now you can put in image files themselves, but you can't fetch any data about them. This is particularly unhelpful as the Wikidata items still use the File: name rather than the MID; we'd need to add the ability to fetch meta-data from Commons to the back-end services, like we do from Wikidata.
* ''Sign here''
=== Add support for video/audio file inclusions ===
: You can only specify image files, not audio or video files which are more complex. If demand is high we could add this sooner rather than later, though it may be complex to align with the existing workflows.
* ''Sign here''
=== Add support for galleries of media file inclusions ===
: You can create multiple media file transclusions, but it's limited to a small number and you have to do all the work of creating the styles around it. We could give a first-level media file output, if this is strongly wanted.
* ''Sign here''
=== Add support for map inclusions ===
: We don't yet support maps, which might be wanted if folks are making articles about places a lot. Full support would be quite complicated.
* [[User:EatingCarBatteries|EatingCarBatteries]] ([[User talk:EatingCarBatteries|talk]]) 03:24, 31 July 2026 (UTC)
=== Add support for chart inclusions ===
: We don't yet support charts, which might be wanted if folks are making articles about numerical things a lot. Full support would be very complicated.
* ''Sign here''
=== Abstract source mock-ups and multilingual reviews ===
:We are approaching Abstract Wikipedia from the bottom up, with very simple examples. This may be the "Wiki Way", but for software it is very unconventional, and I think it is uncertain whether it can eventually work for more advanced text. The project will have failed unless natural text similar in complexity to current Wikipedia articles can be generated. I think nobody (except possibly [[user:mahir256|Mahir Morshed]]) understands what the abstract source for more complicated sentences would look like.
:Mahir Morshed has created a multilingual text generation system called Elemwala at https://elemwala.toolforge.org/ (see his introduction at https://www.wikifunctions.org/wiki/Wikifunctions:Status_updates/2024-10-17 and his session at Wikimania). This is linked to Abstract Wikipedia, and extremely relevant to it (since it is the only real current proposal for the abstract souce that I know), but it should be noted that Elemwala is only a proposal, not Abstract Wikipedia policy. The list of constructors defines the abstract source as it is at present. Also more information on how this abstract content can be constructed can be found at https://www.wikidata.org/wiki/User:Mahir256/language-generation, with various links and references.
:It is not clear to me whether the abstract source, consisting of functions of Wikidata items backed up by lexemes, can even work at all for a wide variety of languages. Rendering a text needs much information which is special to the target language, for instance there can be genders, grammatical cases, polite forms of address, etc. Example: The Eiffel Tower (Q243) usually needs a definite article when used in English, whereas Blackpool Tower (Q880905) does not. Where should this information for the English renderer be held? It cannot be in the abstract source, since the answer is special for English; some editors of the abstract source will speak languages which do not use articles. Well, I think that this type of item needs an English lexeme with a flag to indicate the article usage, and that would be a solution. Another example relates to the grammatical tenses, voices and moods of verbs. How will that be managed? I suppose that a verb tense indication must be given as a parameter in the abstract source, but how will the values of this parameter be related to all the possible tense/voice/mood verb forms in all the languages? There are an enormous number of such diverse features; how can we be sure that there is enough information in the abstract source to do the rendering in all cases?
:I think that there is an urgent need to create examples of complex text (such as real Wikipedia articles) in the proposed abstract source. Then testers who comprehend the abstract source format and also know a relevant language should interpret the source text and confirm whether they understand it and whether they have enough information to reconstruct the text in their own language (not by software but with their own mental processes). If so, that would give much-needed confidence that the Abstract Wikipedia scheme can actually work, and I think it would advance the project by making clearer the next needed steps.
* [[User:Strobilomyces|Strobilomyces]] ([[User talk:Strobilomyces|talk]]) 20:41, 5 August 2026 (UTC)
* ''Sign here''
=== Example: Thing to fix (copy me!) ===
: What it would involve, and why it would be valuable.
* ''Sign here''
== Article editing ==
Here are some quick ideas about overall article editing, not specific to a given
=== Drag-and-drop moving of fragments, instead of having to click on the menu and the "move up/down" multiple times ===
: Drag-and-drop is a relatively familiar UX feature, and we could add an affordance for it to make it more discoverable at the same time as more usable.
* [[User:EatingCarBatteries|EatingCarBatteries]] ([[User talk:EatingCarBatteries|talk]]) 03:22, 31 July 2026 (UTC)
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 07:52, 31 July 2026 (UTC)
* [[User:Waldyrious|Waldyrious]] ([[User talk:Waldyrious|talk]]) 08:49, 1 August 2026 (UTC)
* [[User:Nux|Nux]] ([[User talk:Nux|talk]]) 11:42, 1 August 2026 (UTC) and also selecting and copying with ctrl+c/ctrl+v like in OOo/LibreOffice Calc
* [[User:Dungodung|Dungodung]] ([[User talk:Dungodung|talk]]) 15:30, 5 August 2026 (UTC)
* It's a very minor issue in the grand scheme of things, but would be nice. --[[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 16:04, 5 August 2026 (UTC)
* ''Sign here''
=== Fix the long article dual-column scroll problem where you can't see what you're editing ===
: This is particularly an issue on longer articles and smaller screens, but was mentioned as very irritating by some of you!
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 07:49, 31 July 2026 (UTC)
* It's a very minor issue in the grand scheme of things, but would be nice. --[[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 16:04, 5 August 2026 (UTC)
* ''Sign here''
=== Support multiple sections, rather than just the lede ===
: Right now (despite some functions outputting <nowiki><h2></nowiki>s and the like), all articles are limited to just editing the lede section. We have mostly-built support for thematic sections, but this needs some polish. This would let you 'chunk up' articles, potentially editing only a section at a time for ease of use and / or collapsing those sections away to focus. We could also use this to allow external links limited to only the "external links" section (and references).
* [[User:EatingCarBatteries|EatingCarBatteries]] ([[User talk:EatingCarBatteries|talk]]) 07:12, 3 August 2026 (UTC)
=== Prompt editors with function calls based on statements in the Wikidata item ===
: Add a feature that checks the subject's Wikidata item for statements of the kind it knows about (e.g. "born 1850-01-20 in France") and match them to fragments, prompting you to add this. We'd need to work out how to link between fragment functions and Wikidata claims, and how to know whether the claims were already in the article, so this is quite complex to design and build, but would probably help a great deal.
* ''Sign here''
=== Prompt editors with media used on Wikipedia articles for the subject ===
: A more specialised option compared to fetching media suggestions alongside everything else from the Wikidata item would be to check for the main/first image on any existing Wikipedia articles and suggesting that if it's not already set.
* ''Sign here''
=== Fill in the parameters at copy/paste ===
: Fill in the parameters at copy/paste if the number and types of parameters match. That is especialy usefull when copying a new function from one language to an other. Currenltly every parameter has to be filled manually.
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 22:25, 5 August 2026 (UTC) (as proposer) I just created {{Z|Z38911}} and it took me very long to fill all 30! parameters correctly~
* ''Sign here''
=== Example: Thing to fix (copy me!) ===
: What it would involve, and why it would be valuable.
* ''Sign here''
== Any other ideas you might have ==
The sections above aren't everything. What else is something you'd like fixed?
=== Make it more obvious in the search whether there's an existing abstract article or not ===
: Right now we just add "– AW" to the end of search results when there's an existing article; if we make it clearer whether the link is a "read this" or "create this" link, folks won't be surprised when they click it.
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 15:58, 1 August 2026 (UTC)
* ''Sign here''
=== Auto-linking new Abstract Wikipedia articles to their Wikidata counterparts ===
: Right now people need to manually say that ''e.g.'' Q90 is the same as Q90, which takes time and isn't obvious. If we did this automatically as articles were created, the workflow would be easier to understand.
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 15:56, 1 August 2026 (UTC)
* It's a very minor issue in the grand scheme of things, but would be nice. --[[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 16:03, 5 August 2026 (UTC)
* ''Sign here''
=== Show labels of talk pages ===
: Show labels of Zid's talk pages on recent changes, watchlist and also on Categories like [[:Category:English natural language generation functions|this one]]. Idem for Qid's talk pages on Abstract Wikipedia
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 17:22, 1 August 2026 (UTC) (as proposer)
* It's a very minor issue in the grand scheme of things, but would be nice. --[[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 16:03, 5 August 2026 (UTC)
* ''Sign here''
=== Enlarge the field for labels ===
: Currently the field for labels can hold a maximum of 50 characters. See for example {{Z|Z32398}}. Frequently this is not enough and abbreviation have to be made. That makes the function names confusing and not consistent.
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 17:37, 1 August 2026 (UTC) (as proposer)
* [[User:EatingCarBatteries|EatingCarBatteries]] ([[User talk:EatingCarBatteries|talk]]) 20:59, 3 August 2026 (UTC)
* [[User:Strobilomyces|Strobilomyces]] ([[User talk:Strobilomyces|talk]]) 16:09, 5 August 2026 (UTC)
* ''Sign here''
=== Support wikitext in functions output ===
: Wikifunctions don't support wikitext. They can only output unparseable plain text or HTML. I know that the page [[:f:Wikifunctions:Embedded function calls]] says very clearly that wikitext will never be supported. But this is the number one thing that causes me not to be motivated to use functions, and I suspect that I'm not alone. So perhaps you could reconsider it.
* [[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 16:01, 5 August 2026 (UTC)
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 22:11, 5 August 2026 (UTC) Without wikitext the Abstract Wikipedia is not a real Wikipedia. Using wikitext code for bold, italic etc. Maybe also for Wikilinks.
* ''Sign here''
=== Completely change the UI of compositions ===
: I don't get compositions. A few people get them, but a lot of people don't. I mostly don't. When I try to read existing compositions, their deeply-nested hierarchy immediately confuses me, and I'm almost always afraid of editing anything. And I barely know how to start a new composition. The "clipboard" feature, which was added a few months ago, makes it a little bit less frustrating. But only a little bit; it doesn't solve the big issue. Creating and editing compositions is the only way to edit abstract articles, and it's very commonly needed on Wikifunctions, too, so if a lot of people have a hard time understanding how to do it, neither project will acquire a lot of editors. If you ask me, I'd do away with them completely and just use Python or JavaScript (or Lua!) code.
* [[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 16:01, 5 August 2026 (UTC)
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 22:18, 5 August 2026 (UTC) I don't propose to get rid of compositions, but make the default output more readable by automatically start a new function on a new line, and indent automatically. Also in read mode.
* Same. It's frustrating to have to click my mouse 10 times through a bunch of functions just to change an input value [[User:EatingCarBatteries|EatingCarBatteries]] ([[User talk:EatingCarBatteries|talk]]) 03:38, 6 August 2026 (UTC)
* ''Sign here''
=== Allow choice of implementation to be forced ===
: Where a function has multiple implementations, it would be helpful to be able to force the orchestrator to select a particular implementation for a particular run (or a particular session or a particular user). This would often be very helpful for debugging, or when an implementation appears to have a bug. I am not too sure how that could work - I propose that each user should be able to mark any implementation as always to be selected in their case (or perhaps as never to be selected). Perhaps only in the current session.
:It would even be useful to have a mode in a given session where the orchestrator always selects the first (or last) implementation for all functions - then one would at least know which implementation was going to be called!
* [[User:Strobilomyces|Strobilomyces]] ([[User talk:Strobilomyces|talk]]) 16:35, 5 August 2026 (UTC)
*:@[[User:Strobilomyces|Strobilomyces]]: The orchestrator will (currently) only ever chose the first connected implementation (for a language we support). Maybe we could make it clearer? For debugging, the idea is that you can do that from the implementation page whether or not it's connected, such as on [[Z15788]]. We could highlight that, perhaps? Can you give an example outside of debugging where you might want to allow multiple implementations to be connected but choose different implementations at run-time? I cannot suggest what we could do without understanding better the need, sorry! [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 17:30, 5 August 2026 (UTC)
*::Clarification: "First connected implementation" means the first one listed in the JSON version of the function (which is sometimes promoted or demoted by Wikilambda bot), rather than the first one displayed in the UI list, or the first one that was ever connected. Highlighting this implementation in the UI would be nice. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 04:15, 6 August 2026 (UTC)
*:::Yup, good point; we could definitely improve the UX here to indicate which is the "winning" implementation. [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 14:34, 6 August 2026 (UTC)
*::@[[User:Jdforrester (WMF)|Jdforrester (WMF)]] The ability to test a given implementation directly is very useful. But functions often call other functions and it makes debugging difficult if it is not possible to tell which implementation will be executed or has been executed at the lower level. If it currently always the same version, then that is good. I would like to know how to tell which version will be or has been executed. How do I see the JSON version of the subfunction? Do I have to use the API? [[User:Strobilomyces|Strobilomyces]] ([[User talk:Strobilomyces|talk]]) 13:27, 6 August 2026 (UTC)
*:::I find it by looking at the history and comparing diffs. Here's a diff showing that Wikilambda bot promoted the JS implementation to the top: https://www.wikifunctions.org/w/index.php?title=Z13521&diff=289160&oldid=232341 . --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 13:46, 6 August 2026 (UTC)
*::A particular case where the preferred implementation should not be used is when testing a recursive implementation. [[User:GrounderUK|GrounderUK]] ([[User talk:GrounderUK|talk]]) 18:04, 6 August 2026 (UTC)
*:You can run {{Z|Z35874}} to get the identifier of the currently preferred implementation for a specified function. You could also have [https://www.wikifunctions.org/view/en/Z37465?call=%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z37465%22%2C%22Z37465K1%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z35874%22%2C%22Z35874K1%22%3A%22Z10000%22%7D%2C%22Z37465K2%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z35874%22%2C%22Z35874K1%22%3A%22Z10000%22%7D%7D a hyperlink to the implementation].
*:When browsing, if you click on any of a function’s test cases, the implementations that are connected to the function are listed in the correct order in the Implementations box. This is also true when adding a new test case to a function.
*:Or we could [https://www.wikifunctions.org/view/en/Z801?call=%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z801%22%2C%22Z801K1%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z33470%22%2C%22Z33470K1%22%3A%22view+function%E2%80%99s+JSON%22%2C%22Z33470K2%22%3A%22a%22%2C%22Z33470K3%22%3A%7B%22Z1K1%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z883%22%2C%22Z883K1%22%3A%22Z6%22%2C%22Z883K2%22%3A%22Z1%22%7D%2C%22K1%22%3A%5B%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z882%22%2C%22Z882K1%22%3A%22Z6%22%2C%22Z882K2%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z881%22%2C%22Z881K1%22%3A%22Z6%22%7D%7D%2C%7B%22Z1K1%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z882%22%2C%22Z882K1%22%3A%22Z6%22%2C%22Z882K2%22%3A%22Z1%22%7D%2C%22K1%22%3A%22href%22%2C%22K2%22%3A%5B%22Z6%22%2C%22https%3A%2F%2Fwww.wikifunctions.org%2Fwiki%2F%22%2C%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z28231%22%2C%22Z28231K1%22%3A%22Z801%22%7D%2C%22%3Faction%3Draw%22%5D%7D%5D%7D%7D%7D turn this into a function], I suppose, or [https://www.wikifunctions.org/view/en/Z801?call=%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z801%22%2C%22Z801K1%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z811%22%2C%22Z811K1%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z803%22%2C%22Z803K1%22%3A%7B%22Z1K1%22%3A%22Z39%22%2C%22Z39K1%22%3A%22K1%22%7D%2C%22Z803K2%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z804%22%2C%22Z804K1%22%3A%5B%22Z39%22%2C%7B%22Z1K1%22%3A%22Z39%22%2C%22Z39K1%22%3A%22Z8K4%22%7D%5D%2C%22Z804K2%22%3A%22Z10000%22%7D%7D%7D%7D just this]. [[User:GrounderUK|GrounderUK]] ([[User talk:GrounderUK|talk]]) 17:51, 6 August 2026 (UTC)
* ''Sign here''
=== Allow Wikifunctions functions to be called from Python and Javascript ===
: As indicated in an earlier suggestion, it is not convenient to write complicated code in the form of compositions. I think far more code would be contributed if it could be done in Python or Javascript.
* [[User:Strobilomyces|Strobilomyces]] ([[User talk:Strobilomyces|talk]]) 16:44, 5 August 2026 (UTC)
* ''Sign here''
=== Example: Thing to fix (copy me!) ===
: What it would involve, and why it would be valuable.
* ''Sign here''
== Thank you! ==
It was great to speak to and hear from so many of you.
383w2w8yd2iyzqnnrh6e61o3e590yqj
297070
297069
2026-08-07T00:57:08Z
YoshiRulz
10156
/* Prompt editors with function calls based on statements in the Wikidata item */ Comment on how to store in Wikidata
297070
wikitext
text/x-wiki
{{seealso|WF:Feature petitions}}
Thank you to so many of you who came in-person and online to the workshop at Wikimania last week around creating Abstract Wikipedia articles.
__NEWSECTIONLINK__
Based on your comments there and things you ran into or mentioned, we've pulled together a quick ideas list of possible improvements (alongside our work on faster and better NLG support, working with communities to consider piloting Abstract Wikipedia on their wiki, and other major parts of the annual plan).
Please indicate which items you think we should work on soonest by signing your name (<nowiki>~~~~</nowiki>) below them. We'll probably work on many of these, but the count of "votes" and arguments will help guide us in which ones we prioritise.
== Individual fragment editing ==
These are some ideas about how we might make adding and editing individual fragments easier.
=== Only auto-match the Wikidata item to the subject of the article on the first item in a Function call, not all of them ===
: This should avoid the confusing step of suggested items saying "Cairo is the Cairo of Cairo", but instead would need you to specify the item references for the others. The heuristic of only matching the first item might be enough as a starting point for many calls. We probably still want to match all dates and languages, though.
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 07:50, 31 July 2026 (UTC)
* [[User:Kambai Akau|Kambai Akau]] ([[User talk:Kambai Akau|talk]]) 00:56, 7 August 2026 (UTC)
* ''Sign here''
=== Split out some of the '…' menu on each item so you can quickly switch to a manual item reference ===
: A big stumbling block for folks was switching from an auto-matched (argument key) item or a function call to a specific item reference. This would allow you to quickly switch to that, without having to notice and go through the menu of all the other options.
* ''Sign here''
=== Re-word the labels for the abstract argument keys to be more clear about what they are ===
: We label the keys as 'wikidata item reference', 'language', and 'date'; we should make it clearer that these are 'this article's subject', 'view language', and 'view date' respectively. This would help avoid confusion about what these keys are for, and when you don't want to use them.
* [[User:Waldyrious|Waldyrious]] ([[User talk:Waldyrious|talk]]) 08:48, 1 August 2026 (UTC)
*:{{Done}} As a first step; how does that work for you? [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 15:45, 5 August 2026 (UTC)
=== Add short description fields to Functions' arguments, to help people can understand what the inputs mean when they use them ===
: For Functions, we have labels, aliases, and short descriptions, but Functions' inputs just have a single label each, which can make it hard for people to know what to put where, especially if they have unusual or unfamiliar words. Add a short description field, maybe shown via a secondary accessor like a "[[File:Codex icon info color-notice.svg|20x20px]]" rather than all the time.
* ''Sign here''
* [[User:Nux|Nux]] ([[User talk:Nux|talk]]) 11:38, 1 August 2026 (UTC) (i) icons with more info might help, like e.g. what the author means by "Hypernym" [https://abstract.wikipedia.org/w/index.php?title=Abstract_Wikipedia:Useful_functions_for_article_composition&oldid=13847].
*:@[[User:Nux|Nux]]: Can you give some more detail for where that kind of interface shows up for you? Do you mean giving more context for labels of functions' inputs? [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 15:46, 5 August 2026 (UTC)
*::@[[User:Jdforrester (WMF)|Jdforrester (WMF)]] Yes, argument description. Like a description for function [https://www.wikifunctions.org/w/index.php?title=Z37921&action=edit&uselang=en]. Like in JavaDoc. [[User:Nux|Nux]] ([[User talk:Nux|talk]]) 19:58, 5 August 2026 (UTC)
*:::Aha, right. Is it OK if I split this out into its own section? That's a very different change from what this section was written up as, based on what I heard in Paris, and should have its own discussion. [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 20:06, 5 August 2026 (UTC)
*::::Sure. [[User:Nux|Nux]] ([[User talk:Nux|talk]]) 20:12, 5 August 2026 (UTC)
* ''Sign here''
=== Example: Thing to fix (copy me!) ===
: What it would involve, and why it would be valuable.
* ''Sign here''
== New/better kinds of fragment ==
Here are some ideas for different kinds of fragments that you could use in abstract articles.
=== Add support for pulling structured data from Commons files ''e.g.'' captions ===
: Right now you can put in image files themselves, but you can't fetch any data about them. This is particularly unhelpful as the Wikidata items still use the File: name rather than the MID; we'd need to add the ability to fetch meta-data from Commons to the back-end services, like we do from Wikidata.
* ''Sign here''
=== Add support for video/audio file inclusions ===
: You can only specify image files, not audio or video files which are more complex. If demand is high we could add this sooner rather than later, though it may be complex to align with the existing workflows.
* ''Sign here''
=== Add support for galleries of media file inclusions ===
: You can create multiple media file transclusions, but it's limited to a small number and you have to do all the work of creating the styles around it. We could give a first-level media file output, if this is strongly wanted.
* ''Sign here''
=== Add support for map inclusions ===
: We don't yet support maps, which might be wanted if folks are making articles about places a lot. Full support would be quite complicated.
* [[User:EatingCarBatteries|EatingCarBatteries]] ([[User talk:EatingCarBatteries|talk]]) 03:24, 31 July 2026 (UTC)
=== Add support for chart inclusions ===
: We don't yet support charts, which might be wanted if folks are making articles about numerical things a lot. Full support would be very complicated.
* ''Sign here''
=== Abstract source mock-ups and multilingual reviews ===
:We are approaching Abstract Wikipedia from the bottom up, with very simple examples. This may be the "Wiki Way", but for software it is very unconventional, and I think it is uncertain whether it can eventually work for more advanced text. The project will have failed unless natural text similar in complexity to current Wikipedia articles can be generated. I think nobody (except possibly [[user:mahir256|Mahir Morshed]]) understands what the abstract source for more complicated sentences would look like.
:Mahir Morshed has created a multilingual text generation system called Elemwala at https://elemwala.toolforge.org/ (see his introduction at https://www.wikifunctions.org/wiki/Wikifunctions:Status_updates/2024-10-17 and his session at Wikimania). This is linked to Abstract Wikipedia, and extremely relevant to it (since it is the only real current proposal for the abstract souce that I know), but it should be noted that Elemwala is only a proposal, not Abstract Wikipedia policy. The list of constructors defines the abstract source as it is at present. Also more information on how this abstract content can be constructed can be found at https://www.wikidata.org/wiki/User:Mahir256/language-generation, with various links and references.
:It is not clear to me whether the abstract source, consisting of functions of Wikidata items backed up by lexemes, can even work at all for a wide variety of languages. Rendering a text needs much information which is special to the target language, for instance there can be genders, grammatical cases, polite forms of address, etc. Example: The Eiffel Tower (Q243) usually needs a definite article when used in English, whereas Blackpool Tower (Q880905) does not. Where should this information for the English renderer be held? It cannot be in the abstract source, since the answer is special for English; some editors of the abstract source will speak languages which do not use articles. Well, I think that this type of item needs an English lexeme with a flag to indicate the article usage, and that would be a solution. Another example relates to the grammatical tenses, voices and moods of verbs. How will that be managed? I suppose that a verb tense indication must be given as a parameter in the abstract source, but how will the values of this parameter be related to all the possible tense/voice/mood verb forms in all the languages? There are an enormous number of such diverse features; how can we be sure that there is enough information in the abstract source to do the rendering in all cases?
:I think that there is an urgent need to create examples of complex text (such as real Wikipedia articles) in the proposed abstract source. Then testers who comprehend the abstract source format and also know a relevant language should interpret the source text and confirm whether they understand it and whether they have enough information to reconstruct the text in their own language (not by software but with their own mental processes). If so, that would give much-needed confidence that the Abstract Wikipedia scheme can actually work, and I think it would advance the project by making clearer the next needed steps.
* [[User:Strobilomyces|Strobilomyces]] ([[User talk:Strobilomyces|talk]]) 20:41, 5 August 2026 (UTC)
* ''Sign here''
=== Example: Thing to fix (copy me!) ===
: What it would involve, and why it would be valuable.
* ''Sign here''
== Article editing ==
Here are some quick ideas about overall article editing, not specific to a given
=== Drag-and-drop moving of fragments, instead of having to click on the menu and the "move up/down" multiple times ===
: Drag-and-drop is a relatively familiar UX feature, and we could add an affordance for it to make it more discoverable at the same time as more usable.
* [[User:EatingCarBatteries|EatingCarBatteries]] ([[User talk:EatingCarBatteries|talk]]) 03:22, 31 July 2026 (UTC)
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 07:52, 31 July 2026 (UTC)
* [[User:Waldyrious|Waldyrious]] ([[User talk:Waldyrious|talk]]) 08:49, 1 August 2026 (UTC)
* [[User:Nux|Nux]] ([[User talk:Nux|talk]]) 11:42, 1 August 2026 (UTC) and also selecting and copying with ctrl+c/ctrl+v like in OOo/LibreOffice Calc
* [[User:Dungodung|Dungodung]] ([[User talk:Dungodung|talk]]) 15:30, 5 August 2026 (UTC)
* It's a very minor issue in the grand scheme of things, but would be nice. --[[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 16:04, 5 August 2026 (UTC)
* ''Sign here''
=== Fix the long article dual-column scroll problem where you can't see what you're editing ===
: This is particularly an issue on longer articles and smaller screens, but was mentioned as very irritating by some of you!
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 07:49, 31 July 2026 (UTC)
* It's a very minor issue in the grand scheme of things, but would be nice. --[[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 16:04, 5 August 2026 (UTC)
* ''Sign here''
=== Support multiple sections, rather than just the lede ===
: Right now (despite some functions outputting <nowiki><h2></nowiki>s and the like), all articles are limited to just editing the lede section. We have mostly-built support for thematic sections, but this needs some polish. This would let you 'chunk up' articles, potentially editing only a section at a time for ease of use and / or collapsing those sections away to focus. We could also use this to allow external links limited to only the "external links" section (and references).
* [[User:EatingCarBatteries|EatingCarBatteries]] ([[User talk:EatingCarBatteries|talk]]) 07:12, 3 August 2026 (UTC)
=== Prompt editors with function calls based on statements in the Wikidata item ===
: Add a feature that checks the subject's Wikidata item for statements of the kind it knows about (e.g. "born 1850-01-20 in France") and match them to fragments, prompting you to add this. We'd need to work out how to link between fragment functions and Wikidata claims, and how to know whether the claims were already in the article, so this is quite complex to design and build, but would probably help a great deal.
* {{neutral|Comment}} e.g. {{P|569}}:{{P|1535}}={{Q|138748413}} w/ qual. {{P|528}}=[[Z37683]] [[User:YoshiRulz|YoshiRulz]] ([[User talk:YoshiRulz|talk]]) 00:57, 7 August 2026 (UTC)
* ''Sign here''
=== Prompt editors with media used on Wikipedia articles for the subject ===
: A more specialised option compared to fetching media suggestions alongside everything else from the Wikidata item would be to check for the main/first image on any existing Wikipedia articles and suggesting that if it's not already set.
* ''Sign here''
=== Fill in the parameters at copy/paste ===
: Fill in the parameters at copy/paste if the number and types of parameters match. That is especialy usefull when copying a new function from one language to an other. Currenltly every parameter has to be filled manually.
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 22:25, 5 August 2026 (UTC) (as proposer) I just created {{Z|Z38911}} and it took me very long to fill all 30! parameters correctly~
* ''Sign here''
=== Example: Thing to fix (copy me!) ===
: What it would involve, and why it would be valuable.
* ''Sign here''
== Any other ideas you might have ==
The sections above aren't everything. What else is something you'd like fixed?
=== Make it more obvious in the search whether there's an existing abstract article or not ===
: Right now we just add "– AW" to the end of search results when there's an existing article; if we make it clearer whether the link is a "read this" or "create this" link, folks won't be surprised when they click it.
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 15:58, 1 August 2026 (UTC)
* ''Sign here''
=== Auto-linking new Abstract Wikipedia articles to their Wikidata counterparts ===
: Right now people need to manually say that ''e.g.'' Q90 is the same as Q90, which takes time and isn't obvious. If we did this automatically as articles were created, the workflow would be easier to understand.
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 15:56, 1 August 2026 (UTC)
* It's a very minor issue in the grand scheme of things, but would be nice. --[[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 16:03, 5 August 2026 (UTC)
* ''Sign here''
=== Show labels of talk pages ===
: Show labels of Zid's talk pages on recent changes, watchlist and also on Categories like [[:Category:English natural language generation functions|this one]]. Idem for Qid's talk pages on Abstract Wikipedia
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 17:22, 1 August 2026 (UTC) (as proposer)
* It's a very minor issue in the grand scheme of things, but would be nice. --[[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 16:03, 5 August 2026 (UTC)
* ''Sign here''
=== Enlarge the field for labels ===
: Currently the field for labels can hold a maximum of 50 characters. See for example {{Z|Z32398}}. Frequently this is not enough and abbreviation have to be made. That makes the function names confusing and not consistent.
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 17:37, 1 August 2026 (UTC) (as proposer)
* [[User:EatingCarBatteries|EatingCarBatteries]] ([[User talk:EatingCarBatteries|talk]]) 20:59, 3 August 2026 (UTC)
* [[User:Strobilomyces|Strobilomyces]] ([[User talk:Strobilomyces|talk]]) 16:09, 5 August 2026 (UTC)
* ''Sign here''
=== Support wikitext in functions output ===
: Wikifunctions don't support wikitext. They can only output unparseable plain text or HTML. I know that the page [[:f:Wikifunctions:Embedded function calls]] says very clearly that wikitext will never be supported. But this is the number one thing that causes me not to be motivated to use functions, and I suspect that I'm not alone. So perhaps you could reconsider it.
* [[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 16:01, 5 August 2026 (UTC)
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 22:11, 5 August 2026 (UTC) Without wikitext the Abstract Wikipedia is not a real Wikipedia. Using wikitext code for bold, italic etc. Maybe also for Wikilinks.
* ''Sign here''
=== Completely change the UI of compositions ===
: I don't get compositions. A few people get them, but a lot of people don't. I mostly don't. When I try to read existing compositions, their deeply-nested hierarchy immediately confuses me, and I'm almost always afraid of editing anything. And I barely know how to start a new composition. The "clipboard" feature, which was added a few months ago, makes it a little bit less frustrating. But only a little bit; it doesn't solve the big issue. Creating and editing compositions is the only way to edit abstract articles, and it's very commonly needed on Wikifunctions, too, so if a lot of people have a hard time understanding how to do it, neither project will acquire a lot of editors. If you ask me, I'd do away with them completely and just use Python or JavaScript (or Lua!) code.
* [[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 16:01, 5 August 2026 (UTC)
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 22:18, 5 August 2026 (UTC) I don't propose to get rid of compositions, but make the default output more readable by automatically start a new function on a new line, and indent automatically. Also in read mode.
* Same. It's frustrating to have to click my mouse 10 times through a bunch of functions just to change an input value [[User:EatingCarBatteries|EatingCarBatteries]] ([[User talk:EatingCarBatteries|talk]]) 03:38, 6 August 2026 (UTC)
* ''Sign here''
=== Allow choice of implementation to be forced ===
: Where a function has multiple implementations, it would be helpful to be able to force the orchestrator to select a particular implementation for a particular run (or a particular session or a particular user). This would often be very helpful for debugging, or when an implementation appears to have a bug. I am not too sure how that could work - I propose that each user should be able to mark any implementation as always to be selected in their case (or perhaps as never to be selected). Perhaps only in the current session.
:It would even be useful to have a mode in a given session where the orchestrator always selects the first (or last) implementation for all functions - then one would at least know which implementation was going to be called!
* [[User:Strobilomyces|Strobilomyces]] ([[User talk:Strobilomyces|talk]]) 16:35, 5 August 2026 (UTC)
*:@[[User:Strobilomyces|Strobilomyces]]: The orchestrator will (currently) only ever chose the first connected implementation (for a language we support). Maybe we could make it clearer? For debugging, the idea is that you can do that from the implementation page whether or not it's connected, such as on [[Z15788]]. We could highlight that, perhaps? Can you give an example outside of debugging where you might want to allow multiple implementations to be connected but choose different implementations at run-time? I cannot suggest what we could do without understanding better the need, sorry! [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 17:30, 5 August 2026 (UTC)
*::Clarification: "First connected implementation" means the first one listed in the JSON version of the function (which is sometimes promoted or demoted by Wikilambda bot), rather than the first one displayed in the UI list, or the first one that was ever connected. Highlighting this implementation in the UI would be nice. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 04:15, 6 August 2026 (UTC)
*:::Yup, good point; we could definitely improve the UX here to indicate which is the "winning" implementation. [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 14:34, 6 August 2026 (UTC)
*::@[[User:Jdforrester (WMF)|Jdforrester (WMF)]] The ability to test a given implementation directly is very useful. But functions often call other functions and it makes debugging difficult if it is not possible to tell which implementation will be executed or has been executed at the lower level. If it currently always the same version, then that is good. I would like to know how to tell which version will be or has been executed. How do I see the JSON version of the subfunction? Do I have to use the API? [[User:Strobilomyces|Strobilomyces]] ([[User talk:Strobilomyces|talk]]) 13:27, 6 August 2026 (UTC)
*:::I find it by looking at the history and comparing diffs. Here's a diff showing that Wikilambda bot promoted the JS implementation to the top: https://www.wikifunctions.org/w/index.php?title=Z13521&diff=289160&oldid=232341 . --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 13:46, 6 August 2026 (UTC)
*::A particular case where the preferred implementation should not be used is when testing a recursive implementation. [[User:GrounderUK|GrounderUK]] ([[User talk:GrounderUK|talk]]) 18:04, 6 August 2026 (UTC)
*:You can run {{Z|Z35874}} to get the identifier of the currently preferred implementation for a specified function. You could also have [https://www.wikifunctions.org/view/en/Z37465?call=%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z37465%22%2C%22Z37465K1%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z35874%22%2C%22Z35874K1%22%3A%22Z10000%22%7D%2C%22Z37465K2%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z35874%22%2C%22Z35874K1%22%3A%22Z10000%22%7D%7D a hyperlink to the implementation].
*:When browsing, if you click on any of a function’s test cases, the implementations that are connected to the function are listed in the correct order in the Implementations box. This is also true when adding a new test case to a function.
*:Or we could [https://www.wikifunctions.org/view/en/Z801?call=%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z801%22%2C%22Z801K1%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z33470%22%2C%22Z33470K1%22%3A%22view+function%E2%80%99s+JSON%22%2C%22Z33470K2%22%3A%22a%22%2C%22Z33470K3%22%3A%7B%22Z1K1%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z883%22%2C%22Z883K1%22%3A%22Z6%22%2C%22Z883K2%22%3A%22Z1%22%7D%2C%22K1%22%3A%5B%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z882%22%2C%22Z882K1%22%3A%22Z6%22%2C%22Z882K2%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z881%22%2C%22Z881K1%22%3A%22Z6%22%7D%7D%2C%7B%22Z1K1%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z882%22%2C%22Z882K1%22%3A%22Z6%22%2C%22Z882K2%22%3A%22Z1%22%7D%2C%22K1%22%3A%22href%22%2C%22K2%22%3A%5B%22Z6%22%2C%22https%3A%2F%2Fwww.wikifunctions.org%2Fwiki%2F%22%2C%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z28231%22%2C%22Z28231K1%22%3A%22Z801%22%7D%2C%22%3Faction%3Draw%22%5D%7D%5D%7D%7D%7D turn this into a function], I suppose, or [https://www.wikifunctions.org/view/en/Z801?call=%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z801%22%2C%22Z801K1%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z811%22%2C%22Z811K1%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z803%22%2C%22Z803K1%22%3A%7B%22Z1K1%22%3A%22Z39%22%2C%22Z39K1%22%3A%22K1%22%7D%2C%22Z803K2%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z804%22%2C%22Z804K1%22%3A%5B%22Z39%22%2C%7B%22Z1K1%22%3A%22Z39%22%2C%22Z39K1%22%3A%22Z8K4%22%7D%5D%2C%22Z804K2%22%3A%22Z10000%22%7D%7D%7D%7D just this]. [[User:GrounderUK|GrounderUK]] ([[User talk:GrounderUK|talk]]) 17:51, 6 August 2026 (UTC)
* ''Sign here''
=== Allow Wikifunctions functions to be called from Python and Javascript ===
: As indicated in an earlier suggestion, it is not convenient to write complicated code in the form of compositions. I think far more code would be contributed if it could be done in Python or Javascript.
* [[User:Strobilomyces|Strobilomyces]] ([[User talk:Strobilomyces|talk]]) 16:44, 5 August 2026 (UTC)
* ''Sign here''
=== Example: Thing to fix (copy me!) ===
: What it would involve, and why it would be valuable.
* ''Sign here''
== Thank you! ==
It was great to speak to and hear from so many of you.
3q494jy9wlkwj4qo5m45nrhmsvkkb26
297071
297070
2026-08-07T01:01:53Z
YoshiRulz
10156
/* Support wikitext in functions output */ Comment
297071
wikitext
text/x-wiki
{{seealso|WF:Feature petitions}}
Thank you to so many of you who came in-person and online to the workshop at Wikimania last week around creating Abstract Wikipedia articles.
__NEWSECTIONLINK__
Based on your comments there and things you ran into or mentioned, we've pulled together a quick ideas list of possible improvements (alongside our work on faster and better NLG support, working with communities to consider piloting Abstract Wikipedia on their wiki, and other major parts of the annual plan).
Please indicate which items you think we should work on soonest by signing your name (<nowiki>~~~~</nowiki>) below them. We'll probably work on many of these, but the count of "votes" and arguments will help guide us in which ones we prioritise.
== Individual fragment editing ==
These are some ideas about how we might make adding and editing individual fragments easier.
=== Only auto-match the Wikidata item to the subject of the article on the first item in a Function call, not all of them ===
: This should avoid the confusing step of suggested items saying "Cairo is the Cairo of Cairo", but instead would need you to specify the item references for the others. The heuristic of only matching the first item might be enough as a starting point for many calls. We probably still want to match all dates and languages, though.
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 07:50, 31 July 2026 (UTC)
* [[User:Kambai Akau|Kambai Akau]] ([[User talk:Kambai Akau|talk]]) 00:56, 7 August 2026 (UTC)
* ''Sign here''
=== Split out some of the '…' menu on each item so you can quickly switch to a manual item reference ===
: A big stumbling block for folks was switching from an auto-matched (argument key) item or a function call to a specific item reference. This would allow you to quickly switch to that, without having to notice and go through the menu of all the other options.
* ''Sign here''
=== Re-word the labels for the abstract argument keys to be more clear about what they are ===
: We label the keys as 'wikidata item reference', 'language', and 'date'; we should make it clearer that these are 'this article's subject', 'view language', and 'view date' respectively. This would help avoid confusion about what these keys are for, and when you don't want to use them.
* [[User:Waldyrious|Waldyrious]] ([[User talk:Waldyrious|talk]]) 08:48, 1 August 2026 (UTC)
*:{{Done}} As a first step; how does that work for you? [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 15:45, 5 August 2026 (UTC)
=== Add short description fields to Functions' arguments, to help people can understand what the inputs mean when they use them ===
: For Functions, we have labels, aliases, and short descriptions, but Functions' inputs just have a single label each, which can make it hard for people to know what to put where, especially if they have unusual or unfamiliar words. Add a short description field, maybe shown via a secondary accessor like a "[[File:Codex icon info color-notice.svg|20x20px]]" rather than all the time.
* ''Sign here''
* [[User:Nux|Nux]] ([[User talk:Nux|talk]]) 11:38, 1 August 2026 (UTC) (i) icons with more info might help, like e.g. what the author means by "Hypernym" [https://abstract.wikipedia.org/w/index.php?title=Abstract_Wikipedia:Useful_functions_for_article_composition&oldid=13847].
*:@[[User:Nux|Nux]]: Can you give some more detail for where that kind of interface shows up for you? Do you mean giving more context for labels of functions' inputs? [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 15:46, 5 August 2026 (UTC)
*::@[[User:Jdforrester (WMF)|Jdforrester (WMF)]] Yes, argument description. Like a description for function [https://www.wikifunctions.org/w/index.php?title=Z37921&action=edit&uselang=en]. Like in JavaDoc. [[User:Nux|Nux]] ([[User talk:Nux|talk]]) 19:58, 5 August 2026 (UTC)
*:::Aha, right. Is it OK if I split this out into its own section? That's a very different change from what this section was written up as, based on what I heard in Paris, and should have its own discussion. [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 20:06, 5 August 2026 (UTC)
*::::Sure. [[User:Nux|Nux]] ([[User talk:Nux|talk]]) 20:12, 5 August 2026 (UTC)
* ''Sign here''
=== Example: Thing to fix (copy me!) ===
: What it would involve, and why it would be valuable.
* ''Sign here''
== New/better kinds of fragment ==
Here are some ideas for different kinds of fragments that you could use in abstract articles.
=== Add support for pulling structured data from Commons files ''e.g.'' captions ===
: Right now you can put in image files themselves, but you can't fetch any data about them. This is particularly unhelpful as the Wikidata items still use the File: name rather than the MID; we'd need to add the ability to fetch meta-data from Commons to the back-end services, like we do from Wikidata.
* ''Sign here''
=== Add support for video/audio file inclusions ===
: You can only specify image files, not audio or video files which are more complex. If demand is high we could add this sooner rather than later, though it may be complex to align with the existing workflows.
* ''Sign here''
=== Add support for galleries of media file inclusions ===
: You can create multiple media file transclusions, but it's limited to a small number and you have to do all the work of creating the styles around it. We could give a first-level media file output, if this is strongly wanted.
* ''Sign here''
=== Add support for map inclusions ===
: We don't yet support maps, which might be wanted if folks are making articles about places a lot. Full support would be quite complicated.
* [[User:EatingCarBatteries|EatingCarBatteries]] ([[User talk:EatingCarBatteries|talk]]) 03:24, 31 July 2026 (UTC)
=== Add support for chart inclusions ===
: We don't yet support charts, which might be wanted if folks are making articles about numerical things a lot. Full support would be very complicated.
* ''Sign here''
=== Abstract source mock-ups and multilingual reviews ===
:We are approaching Abstract Wikipedia from the bottom up, with very simple examples. This may be the "Wiki Way", but for software it is very unconventional, and I think it is uncertain whether it can eventually work for more advanced text. The project will have failed unless natural text similar in complexity to current Wikipedia articles can be generated. I think nobody (except possibly [[user:mahir256|Mahir Morshed]]) understands what the abstract source for more complicated sentences would look like.
:Mahir Morshed has created a multilingual text generation system called Elemwala at https://elemwala.toolforge.org/ (see his introduction at https://www.wikifunctions.org/wiki/Wikifunctions:Status_updates/2024-10-17 and his session at Wikimania). This is linked to Abstract Wikipedia, and extremely relevant to it (since it is the only real current proposal for the abstract souce that I know), but it should be noted that Elemwala is only a proposal, not Abstract Wikipedia policy. The list of constructors defines the abstract source as it is at present. Also more information on how this abstract content can be constructed can be found at https://www.wikidata.org/wiki/User:Mahir256/language-generation, with various links and references.
:It is not clear to me whether the abstract source, consisting of functions of Wikidata items backed up by lexemes, can even work at all for a wide variety of languages. Rendering a text needs much information which is special to the target language, for instance there can be genders, grammatical cases, polite forms of address, etc. Example: The Eiffel Tower (Q243) usually needs a definite article when used in English, whereas Blackpool Tower (Q880905) does not. Where should this information for the English renderer be held? It cannot be in the abstract source, since the answer is special for English; some editors of the abstract source will speak languages which do not use articles. Well, I think that this type of item needs an English lexeme with a flag to indicate the article usage, and that would be a solution. Another example relates to the grammatical tenses, voices and moods of verbs. How will that be managed? I suppose that a verb tense indication must be given as a parameter in the abstract source, but how will the values of this parameter be related to all the possible tense/voice/mood verb forms in all the languages? There are an enormous number of such diverse features; how can we be sure that there is enough information in the abstract source to do the rendering in all cases?
:I think that there is an urgent need to create examples of complex text (such as real Wikipedia articles) in the proposed abstract source. Then testers who comprehend the abstract source format and also know a relevant language should interpret the source text and confirm whether they understand it and whether they have enough information to reconstruct the text in their own language (not by software but with their own mental processes). If so, that would give much-needed confidence that the Abstract Wikipedia scheme can actually work, and I think it would advance the project by making clearer the next needed steps.
* [[User:Strobilomyces|Strobilomyces]] ([[User talk:Strobilomyces|talk]]) 20:41, 5 August 2026 (UTC)
* ''Sign here''
=== Example: Thing to fix (copy me!) ===
: What it would involve, and why it would be valuable.
* ''Sign here''
== Article editing ==
Here are some quick ideas about overall article editing, not specific to a given
=== Drag-and-drop moving of fragments, instead of having to click on the menu and the "move up/down" multiple times ===
: Drag-and-drop is a relatively familiar UX feature, and we could add an affordance for it to make it more discoverable at the same time as more usable.
* [[User:EatingCarBatteries|EatingCarBatteries]] ([[User talk:EatingCarBatteries|talk]]) 03:22, 31 July 2026 (UTC)
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 07:52, 31 July 2026 (UTC)
* [[User:Waldyrious|Waldyrious]] ([[User talk:Waldyrious|talk]]) 08:49, 1 August 2026 (UTC)
* [[User:Nux|Nux]] ([[User talk:Nux|talk]]) 11:42, 1 August 2026 (UTC) and also selecting and copying with ctrl+c/ctrl+v like in OOo/LibreOffice Calc
* [[User:Dungodung|Dungodung]] ([[User talk:Dungodung|talk]]) 15:30, 5 August 2026 (UTC)
* It's a very minor issue in the grand scheme of things, but would be nice. --[[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 16:04, 5 August 2026 (UTC)
* ''Sign here''
=== Fix the long article dual-column scroll problem where you can't see what you're editing ===
: This is particularly an issue on longer articles and smaller screens, but was mentioned as very irritating by some of you!
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 07:49, 31 July 2026 (UTC)
* It's a very minor issue in the grand scheme of things, but would be nice. --[[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 16:04, 5 August 2026 (UTC)
* ''Sign here''
=== Support multiple sections, rather than just the lede ===
: Right now (despite some functions outputting <nowiki><h2></nowiki>s and the like), all articles are limited to just editing the lede section. We have mostly-built support for thematic sections, but this needs some polish. This would let you 'chunk up' articles, potentially editing only a section at a time for ease of use and / or collapsing those sections away to focus. We could also use this to allow external links limited to only the "external links" section (and references).
* [[User:EatingCarBatteries|EatingCarBatteries]] ([[User talk:EatingCarBatteries|talk]]) 07:12, 3 August 2026 (UTC)
=== Prompt editors with function calls based on statements in the Wikidata item ===
: Add a feature that checks the subject's Wikidata item for statements of the kind it knows about (e.g. "born 1850-01-20 in France") and match them to fragments, prompting you to add this. We'd need to work out how to link between fragment functions and Wikidata claims, and how to know whether the claims were already in the article, so this is quite complex to design and build, but would probably help a great deal.
* {{neutral|Comment}} e.g. {{P|569}}:{{P|1535}}={{Q|138748413}} w/ qual. {{P|528}}=[[Z37683]] [[User:YoshiRulz|YoshiRulz]] ([[User talk:YoshiRulz|talk]]) 00:57, 7 August 2026 (UTC)
* ''Sign here''
=== Prompt editors with media used on Wikipedia articles for the subject ===
: A more specialised option compared to fetching media suggestions alongside everything else from the Wikidata item would be to check for the main/first image on any existing Wikipedia articles and suggesting that if it's not already set.
* ''Sign here''
=== Fill in the parameters at copy/paste ===
: Fill in the parameters at copy/paste if the number and types of parameters match. That is especialy usefull when copying a new function from one language to an other. Currenltly every parameter has to be filled manually.
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 22:25, 5 August 2026 (UTC) (as proposer) I just created {{Z|Z38911}} and it took me very long to fill all 30! parameters correctly~
* ''Sign here''
=== Example: Thing to fix (copy me!) ===
: What it would involve, and why it would be valuable.
* ''Sign here''
== Any other ideas you might have ==
The sections above aren't everything. What else is something you'd like fixed?
=== Make it more obvious in the search whether there's an existing abstract article or not ===
: Right now we just add "– AW" to the end of search results when there's an existing article; if we make it clearer whether the link is a "read this" or "create this" link, folks won't be surprised when they click it.
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 15:58, 1 August 2026 (UTC)
* ''Sign here''
=== Auto-linking new Abstract Wikipedia articles to their Wikidata counterparts ===
: Right now people need to manually say that ''e.g.'' Q90 is the same as Q90, which takes time and isn't obvious. If we did this automatically as articles were created, the workflow would be easier to understand.
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 15:56, 1 August 2026 (UTC)
* It's a very minor issue in the grand scheme of things, but would be nice. --[[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 16:03, 5 August 2026 (UTC)
* ''Sign here''
=== Show labels of talk pages ===
: Show labels of Zid's talk pages on recent changes, watchlist and also on Categories like [[:Category:English natural language generation functions|this one]]. Idem for Qid's talk pages on Abstract Wikipedia
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 17:22, 1 August 2026 (UTC) (as proposer)
* It's a very minor issue in the grand scheme of things, but would be nice. --[[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 16:03, 5 August 2026 (UTC)
* ''Sign here''
=== Enlarge the field for labels ===
: Currently the field for labels can hold a maximum of 50 characters. See for example {{Z|Z32398}}. Frequently this is not enough and abbreviation have to be made. That makes the function names confusing and not consistent.
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 17:37, 1 August 2026 (UTC) (as proposer)
* [[User:EatingCarBatteries|EatingCarBatteries]] ([[User talk:EatingCarBatteries|talk]]) 20:59, 3 August 2026 (UTC)
* [[User:Strobilomyces|Strobilomyces]] ([[User talk:Strobilomyces|talk]]) 16:09, 5 August 2026 (UTC)
* ''Sign here''
=== Support wikitext in functions output ===
: Wikifunctions don't support wikitext. They can only output unparseable plain text or HTML. I know that the page [[:f:Wikifunctions:Embedded function calls]] says very clearly that wikitext will never be supported. But this is the number one thing that causes me not to be motivated to use functions, and I suspect that I'm not alone. So perhaps you could reconsider it.
* [[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 16:01, 5 August 2026 (UTC)
** {{ping|Amire80|p=,}} {{ping|HenkvD}} What would you do with the produced Wikitext? Copy it into an existing page on one of the sister projects? [[User:YoshiRulz|YoshiRulz]] ([[User talk:YoshiRulz|talk]]) 01:01, 7 August 2026 (UTC)
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 22:11, 5 August 2026 (UTC) Without wikitext the Abstract Wikipedia is not a real Wikipedia. Using wikitext code for bold, italic etc. Maybe also for Wikilinks.
* ''Sign here''
=== Completely change the UI of compositions ===
: I don't get compositions. A few people get them, but a lot of people don't. I mostly don't. When I try to read existing compositions, their deeply-nested hierarchy immediately confuses me, and I'm almost always afraid of editing anything. And I barely know how to start a new composition. The "clipboard" feature, which was added a few months ago, makes it a little bit less frustrating. But only a little bit; it doesn't solve the big issue. Creating and editing compositions is the only way to edit abstract articles, and it's very commonly needed on Wikifunctions, too, so if a lot of people have a hard time understanding how to do it, neither project will acquire a lot of editors. If you ask me, I'd do away with them completely and just use Python or JavaScript (or Lua!) code.
* [[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 16:01, 5 August 2026 (UTC)
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 22:18, 5 August 2026 (UTC) I don't propose to get rid of compositions, but make the default output more readable by automatically start a new function on a new line, and indent automatically. Also in read mode.
* Same. It's frustrating to have to click my mouse 10 times through a bunch of functions just to change an input value [[User:EatingCarBatteries|EatingCarBatteries]] ([[User talk:EatingCarBatteries|talk]]) 03:38, 6 August 2026 (UTC)
* ''Sign here''
=== Allow choice of implementation to be forced ===
: Where a function has multiple implementations, it would be helpful to be able to force the orchestrator to select a particular implementation for a particular run (or a particular session or a particular user). This would often be very helpful for debugging, or when an implementation appears to have a bug. I am not too sure how that could work - I propose that each user should be able to mark any implementation as always to be selected in their case (or perhaps as never to be selected). Perhaps only in the current session.
:It would even be useful to have a mode in a given session where the orchestrator always selects the first (or last) implementation for all functions - then one would at least know which implementation was going to be called!
* [[User:Strobilomyces|Strobilomyces]] ([[User talk:Strobilomyces|talk]]) 16:35, 5 August 2026 (UTC)
*:@[[User:Strobilomyces|Strobilomyces]]: The orchestrator will (currently) only ever chose the first connected implementation (for a language we support). Maybe we could make it clearer? For debugging, the idea is that you can do that from the implementation page whether or not it's connected, such as on [[Z15788]]. We could highlight that, perhaps? Can you give an example outside of debugging where you might want to allow multiple implementations to be connected but choose different implementations at run-time? I cannot suggest what we could do without understanding better the need, sorry! [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 17:30, 5 August 2026 (UTC)
*::Clarification: "First connected implementation" means the first one listed in the JSON version of the function (which is sometimes promoted or demoted by Wikilambda bot), rather than the first one displayed in the UI list, or the first one that was ever connected. Highlighting this implementation in the UI would be nice. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 04:15, 6 August 2026 (UTC)
*:::Yup, good point; we could definitely improve the UX here to indicate which is the "winning" implementation. [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 14:34, 6 August 2026 (UTC)
*::@[[User:Jdforrester (WMF)|Jdforrester (WMF)]] The ability to test a given implementation directly is very useful. But functions often call other functions and it makes debugging difficult if it is not possible to tell which implementation will be executed or has been executed at the lower level. If it currently always the same version, then that is good. I would like to know how to tell which version will be or has been executed. How do I see the JSON version of the subfunction? Do I have to use the API? [[User:Strobilomyces|Strobilomyces]] ([[User talk:Strobilomyces|talk]]) 13:27, 6 August 2026 (UTC)
*:::I find it by looking at the history and comparing diffs. Here's a diff showing that Wikilambda bot promoted the JS implementation to the top: https://www.wikifunctions.org/w/index.php?title=Z13521&diff=289160&oldid=232341 . --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 13:46, 6 August 2026 (UTC)
*::A particular case where the preferred implementation should not be used is when testing a recursive implementation. [[User:GrounderUK|GrounderUK]] ([[User talk:GrounderUK|talk]]) 18:04, 6 August 2026 (UTC)
*:You can run {{Z|Z35874}} to get the identifier of the currently preferred implementation for a specified function. You could also have [https://www.wikifunctions.org/view/en/Z37465?call=%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z37465%22%2C%22Z37465K1%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z35874%22%2C%22Z35874K1%22%3A%22Z10000%22%7D%2C%22Z37465K2%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z35874%22%2C%22Z35874K1%22%3A%22Z10000%22%7D%7D a hyperlink to the implementation].
*:When browsing, if you click on any of a function’s test cases, the implementations that are connected to the function are listed in the correct order in the Implementations box. This is also true when adding a new test case to a function.
*:Or we could [https://www.wikifunctions.org/view/en/Z801?call=%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z801%22%2C%22Z801K1%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z33470%22%2C%22Z33470K1%22%3A%22view+function%E2%80%99s+JSON%22%2C%22Z33470K2%22%3A%22a%22%2C%22Z33470K3%22%3A%7B%22Z1K1%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z883%22%2C%22Z883K1%22%3A%22Z6%22%2C%22Z883K2%22%3A%22Z1%22%7D%2C%22K1%22%3A%5B%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z882%22%2C%22Z882K1%22%3A%22Z6%22%2C%22Z882K2%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z881%22%2C%22Z881K1%22%3A%22Z6%22%7D%7D%2C%7B%22Z1K1%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z882%22%2C%22Z882K1%22%3A%22Z6%22%2C%22Z882K2%22%3A%22Z1%22%7D%2C%22K1%22%3A%22href%22%2C%22K2%22%3A%5B%22Z6%22%2C%22https%3A%2F%2Fwww.wikifunctions.org%2Fwiki%2F%22%2C%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z28231%22%2C%22Z28231K1%22%3A%22Z801%22%7D%2C%22%3Faction%3Draw%22%5D%7D%5D%7D%7D%7D turn this into a function], I suppose, or [https://www.wikifunctions.org/view/en/Z801?call=%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z801%22%2C%22Z801K1%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z811%22%2C%22Z811K1%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z803%22%2C%22Z803K1%22%3A%7B%22Z1K1%22%3A%22Z39%22%2C%22Z39K1%22%3A%22K1%22%7D%2C%22Z803K2%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z804%22%2C%22Z804K1%22%3A%5B%22Z39%22%2C%7B%22Z1K1%22%3A%22Z39%22%2C%22Z39K1%22%3A%22Z8K4%22%7D%5D%2C%22Z804K2%22%3A%22Z10000%22%7D%7D%7D%7D just this]. [[User:GrounderUK|GrounderUK]] ([[User talk:GrounderUK|talk]]) 17:51, 6 August 2026 (UTC)
* ''Sign here''
=== Allow Wikifunctions functions to be called from Python and Javascript ===
: As indicated in an earlier suggestion, it is not convenient to write complicated code in the form of compositions. I think far more code would be contributed if it could be done in Python or Javascript.
* [[User:Strobilomyces|Strobilomyces]] ([[User talk:Strobilomyces|talk]]) 16:44, 5 August 2026 (UTC)
* ''Sign here''
=== Example: Thing to fix (copy me!) ===
: What it would involve, and why it would be valuable.
* ''Sign here''
== Thank you! ==
It was great to speak to and hear from so many of you.
in8anleytetm8zzx5qqjd6uhyx5bvwk
297072
297071
2026-08-07T01:02:05Z
Kambai Akau
2092
/* Prompt editors with function calls based on statements in the Wikidata item */
297072
wikitext
text/x-wiki
{{seealso|WF:Feature petitions}}
Thank you to so many of you who came in-person and online to the workshop at Wikimania last week around creating Abstract Wikipedia articles.
__NEWSECTIONLINK__
Based on your comments there and things you ran into or mentioned, we've pulled together a quick ideas list of possible improvements (alongside our work on faster and better NLG support, working with communities to consider piloting Abstract Wikipedia on their wiki, and other major parts of the annual plan).
Please indicate which items you think we should work on soonest by signing your name (<nowiki>~~~~</nowiki>) below them. We'll probably work on many of these, but the count of "votes" and arguments will help guide us in which ones we prioritise.
== Individual fragment editing ==
These are some ideas about how we might make adding and editing individual fragments easier.
=== Only auto-match the Wikidata item to the subject of the article on the first item in a Function call, not all of them ===
: This should avoid the confusing step of suggested items saying "Cairo is the Cairo of Cairo", but instead would need you to specify the item references for the others. The heuristic of only matching the first item might be enough as a starting point for many calls. We probably still want to match all dates and languages, though.
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 07:50, 31 July 2026 (UTC)
* [[User:Kambai Akau|Kambai Akau]] ([[User talk:Kambai Akau|talk]]) 00:56, 7 August 2026 (UTC)
* ''Sign here''
=== Split out some of the '…' menu on each item so you can quickly switch to a manual item reference ===
: A big stumbling block for folks was switching from an auto-matched (argument key) item or a function call to a specific item reference. This would allow you to quickly switch to that, without having to notice and go through the menu of all the other options.
* ''Sign here''
=== Re-word the labels for the abstract argument keys to be more clear about what they are ===
: We label the keys as 'wikidata item reference', 'language', and 'date'; we should make it clearer that these are 'this article's subject', 'view language', and 'view date' respectively. This would help avoid confusion about what these keys are for, and when you don't want to use them.
* [[User:Waldyrious|Waldyrious]] ([[User talk:Waldyrious|talk]]) 08:48, 1 August 2026 (UTC)
*:{{Done}} As a first step; how does that work for you? [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 15:45, 5 August 2026 (UTC)
=== Add short description fields to Functions' arguments, to help people can understand what the inputs mean when they use them ===
: For Functions, we have labels, aliases, and short descriptions, but Functions' inputs just have a single label each, which can make it hard for people to know what to put where, especially if they have unusual or unfamiliar words. Add a short description field, maybe shown via a secondary accessor like a "[[File:Codex icon info color-notice.svg|20x20px]]" rather than all the time.
* ''Sign here''
* [[User:Nux|Nux]] ([[User talk:Nux|talk]]) 11:38, 1 August 2026 (UTC) (i) icons with more info might help, like e.g. what the author means by "Hypernym" [https://abstract.wikipedia.org/w/index.php?title=Abstract_Wikipedia:Useful_functions_for_article_composition&oldid=13847].
*:@[[User:Nux|Nux]]: Can you give some more detail for where that kind of interface shows up for you? Do you mean giving more context for labels of functions' inputs? [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 15:46, 5 August 2026 (UTC)
*::@[[User:Jdforrester (WMF)|Jdforrester (WMF)]] Yes, argument description. Like a description for function [https://www.wikifunctions.org/w/index.php?title=Z37921&action=edit&uselang=en]. Like in JavaDoc. [[User:Nux|Nux]] ([[User talk:Nux|talk]]) 19:58, 5 August 2026 (UTC)
*:::Aha, right. Is it OK if I split this out into its own section? That's a very different change from what this section was written up as, based on what I heard in Paris, and should have its own discussion. [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 20:06, 5 August 2026 (UTC)
*::::Sure. [[User:Nux|Nux]] ([[User talk:Nux|talk]]) 20:12, 5 August 2026 (UTC)
* ''Sign here''
=== Example: Thing to fix (copy me!) ===
: What it would involve, and why it would be valuable.
* ''Sign here''
== New/better kinds of fragment ==
Here are some ideas for different kinds of fragments that you could use in abstract articles.
=== Add support for pulling structured data from Commons files ''e.g.'' captions ===
: Right now you can put in image files themselves, but you can't fetch any data about them. This is particularly unhelpful as the Wikidata items still use the File: name rather than the MID; we'd need to add the ability to fetch meta-data from Commons to the back-end services, like we do from Wikidata.
* ''Sign here''
=== Add support for video/audio file inclusions ===
: You can only specify image files, not audio or video files which are more complex. If demand is high we could add this sooner rather than later, though it may be complex to align with the existing workflows.
* ''Sign here''
=== Add support for galleries of media file inclusions ===
: You can create multiple media file transclusions, but it's limited to a small number and you have to do all the work of creating the styles around it. We could give a first-level media file output, if this is strongly wanted.
* ''Sign here''
=== Add support for map inclusions ===
: We don't yet support maps, which might be wanted if folks are making articles about places a lot. Full support would be quite complicated.
* [[User:EatingCarBatteries|EatingCarBatteries]] ([[User talk:EatingCarBatteries|talk]]) 03:24, 31 July 2026 (UTC)
=== Add support for chart inclusions ===
: We don't yet support charts, which might be wanted if folks are making articles about numerical things a lot. Full support would be very complicated.
* ''Sign here''
=== Abstract source mock-ups and multilingual reviews ===
:We are approaching Abstract Wikipedia from the bottom up, with very simple examples. This may be the "Wiki Way", but for software it is very unconventional, and I think it is uncertain whether it can eventually work for more advanced text. The project will have failed unless natural text similar in complexity to current Wikipedia articles can be generated. I think nobody (except possibly [[user:mahir256|Mahir Morshed]]) understands what the abstract source for more complicated sentences would look like.
:Mahir Morshed has created a multilingual text generation system called Elemwala at https://elemwala.toolforge.org/ (see his introduction at https://www.wikifunctions.org/wiki/Wikifunctions:Status_updates/2024-10-17 and his session at Wikimania). This is linked to Abstract Wikipedia, and extremely relevant to it (since it is the only real current proposal for the abstract souce that I know), but it should be noted that Elemwala is only a proposal, not Abstract Wikipedia policy. The list of constructors defines the abstract source as it is at present. Also more information on how this abstract content can be constructed can be found at https://www.wikidata.org/wiki/User:Mahir256/language-generation, with various links and references.
:It is not clear to me whether the abstract source, consisting of functions of Wikidata items backed up by lexemes, can even work at all for a wide variety of languages. Rendering a text needs much information which is special to the target language, for instance there can be genders, grammatical cases, polite forms of address, etc. Example: The Eiffel Tower (Q243) usually needs a definite article when used in English, whereas Blackpool Tower (Q880905) does not. Where should this information for the English renderer be held? It cannot be in the abstract source, since the answer is special for English; some editors of the abstract source will speak languages which do not use articles. Well, I think that this type of item needs an English lexeme with a flag to indicate the article usage, and that would be a solution. Another example relates to the grammatical tenses, voices and moods of verbs. How will that be managed? I suppose that a verb tense indication must be given as a parameter in the abstract source, but how will the values of this parameter be related to all the possible tense/voice/mood verb forms in all the languages? There are an enormous number of such diverse features; how can we be sure that there is enough information in the abstract source to do the rendering in all cases?
:I think that there is an urgent need to create examples of complex text (such as real Wikipedia articles) in the proposed abstract source. Then testers who comprehend the abstract source format and also know a relevant language should interpret the source text and confirm whether they understand it and whether they have enough information to reconstruct the text in their own language (not by software but with their own mental processes). If so, that would give much-needed confidence that the Abstract Wikipedia scheme can actually work, and I think it would advance the project by making clearer the next needed steps.
* [[User:Strobilomyces|Strobilomyces]] ([[User talk:Strobilomyces|talk]]) 20:41, 5 August 2026 (UTC)
* ''Sign here''
=== Example: Thing to fix (copy me!) ===
: What it would involve, and why it would be valuable.
* ''Sign here''
== Article editing ==
Here are some quick ideas about overall article editing, not specific to a given
=== Drag-and-drop moving of fragments, instead of having to click on the menu and the "move up/down" multiple times ===
: Drag-and-drop is a relatively familiar UX feature, and we could add an affordance for it to make it more discoverable at the same time as more usable.
* [[User:EatingCarBatteries|EatingCarBatteries]] ([[User talk:EatingCarBatteries|talk]]) 03:22, 31 July 2026 (UTC)
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 07:52, 31 July 2026 (UTC)
* [[User:Waldyrious|Waldyrious]] ([[User talk:Waldyrious|talk]]) 08:49, 1 August 2026 (UTC)
* [[User:Nux|Nux]] ([[User talk:Nux|talk]]) 11:42, 1 August 2026 (UTC) and also selecting and copying with ctrl+c/ctrl+v like in OOo/LibreOffice Calc
* [[User:Dungodung|Dungodung]] ([[User talk:Dungodung|talk]]) 15:30, 5 August 2026 (UTC)
* It's a very minor issue in the grand scheme of things, but would be nice. --[[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 16:04, 5 August 2026 (UTC)
* ''Sign here''
=== Fix the long article dual-column scroll problem where you can't see what you're editing ===
: This is particularly an issue on longer articles and smaller screens, but was mentioned as very irritating by some of you!
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 07:49, 31 July 2026 (UTC)
* It's a very minor issue in the grand scheme of things, but would be nice. --[[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 16:04, 5 August 2026 (UTC)
* ''Sign here''
=== Support multiple sections, rather than just the lede ===
: Right now (despite some functions outputting <nowiki><h2></nowiki>s and the like), all articles are limited to just editing the lede section. We have mostly-built support for thematic sections, but this needs some polish. This would let you 'chunk up' articles, potentially editing only a section at a time for ease of use and / or collapsing those sections away to focus. We could also use this to allow external links limited to only the "external links" section (and references).
* [[User:EatingCarBatteries|EatingCarBatteries]] ([[User talk:EatingCarBatteries|talk]]) 07:12, 3 August 2026 (UTC)
=== Prompt editors with function calls based on statements in the Wikidata item ===
: Add a feature that checks the subject's Wikidata item for statements of the kind it knows about (e.g. "born 1850-01-20 in France") and match them to fragments, prompting you to add this. We'd need to work out how to link between fragment functions and Wikidata claims, and how to know whether the claims were already in the article, so this is quite complex to design and build, but would probably help a great deal.
* {{neutral|Comment}} e.g. {{P|569}}:{{P|1535}}={{Q|138748413}} w/ qual. {{P|528}}=[[Z37683]] [[User:YoshiRulz|YoshiRulz]] ([[User talk:YoshiRulz|talk]]) 00:57, 7 August 2026 (UTC)
* [[User:Kambai Akau|Kambai Akau]] ([[User talk:Kambai Akau|talk]]) 01:02, 7 August 2026 (UTC)
* ''Sign here''
=== Prompt editors with media used on Wikipedia articles for the subject ===
: A more specialised option compared to fetching media suggestions alongside everything else from the Wikidata item would be to check for the main/first image on any existing Wikipedia articles and suggesting that if it's not already set.
* ''Sign here''
=== Fill in the parameters at copy/paste ===
: Fill in the parameters at copy/paste if the number and types of parameters match. That is especialy usefull when copying a new function from one language to an other. Currenltly every parameter has to be filled manually.
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 22:25, 5 August 2026 (UTC) (as proposer) I just created {{Z|Z38911}} and it took me very long to fill all 30! parameters correctly~
* ''Sign here''
=== Example: Thing to fix (copy me!) ===
: What it would involve, and why it would be valuable.
* ''Sign here''
== Any other ideas you might have ==
The sections above aren't everything. What else is something you'd like fixed?
=== Make it more obvious in the search whether there's an existing abstract article or not ===
: Right now we just add "– AW" to the end of search results when there's an existing article; if we make it clearer whether the link is a "read this" or "create this" link, folks won't be surprised when they click it.
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 15:58, 1 August 2026 (UTC)
* ''Sign here''
=== Auto-linking new Abstract Wikipedia articles to their Wikidata counterparts ===
: Right now people need to manually say that ''e.g.'' Q90 is the same as Q90, which takes time and isn't obvious. If we did this automatically as articles were created, the workflow would be easier to understand.
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 15:56, 1 August 2026 (UTC)
* It's a very minor issue in the grand scheme of things, but would be nice. --[[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 16:03, 5 August 2026 (UTC)
* ''Sign here''
=== Show labels of talk pages ===
: Show labels of Zid's talk pages on recent changes, watchlist and also on Categories like [[:Category:English natural language generation functions|this one]]. Idem for Qid's talk pages on Abstract Wikipedia
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 17:22, 1 August 2026 (UTC) (as proposer)
* It's a very minor issue in the grand scheme of things, but would be nice. --[[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 16:03, 5 August 2026 (UTC)
* ''Sign here''
=== Enlarge the field for labels ===
: Currently the field for labels can hold a maximum of 50 characters. See for example {{Z|Z32398}}. Frequently this is not enough and abbreviation have to be made. That makes the function names confusing and not consistent.
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 17:37, 1 August 2026 (UTC) (as proposer)
* [[User:EatingCarBatteries|EatingCarBatteries]] ([[User talk:EatingCarBatteries|talk]]) 20:59, 3 August 2026 (UTC)
* [[User:Strobilomyces|Strobilomyces]] ([[User talk:Strobilomyces|talk]]) 16:09, 5 August 2026 (UTC)
* ''Sign here''
=== Support wikitext in functions output ===
: Wikifunctions don't support wikitext. They can only output unparseable plain text or HTML. I know that the page [[:f:Wikifunctions:Embedded function calls]] says very clearly that wikitext will never be supported. But this is the number one thing that causes me not to be motivated to use functions, and I suspect that I'm not alone. So perhaps you could reconsider it.
* [[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 16:01, 5 August 2026 (UTC)
** {{ping|Amire80|p=,}} {{ping|HenkvD}} What would you do with the produced Wikitext? Copy it into an existing page on one of the sister projects? [[User:YoshiRulz|YoshiRulz]] ([[User talk:YoshiRulz|talk]]) 01:01, 7 August 2026 (UTC)
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 22:11, 5 August 2026 (UTC) Without wikitext the Abstract Wikipedia is not a real Wikipedia. Using wikitext code for bold, italic etc. Maybe also for Wikilinks.
* ''Sign here''
=== Completely change the UI of compositions ===
: I don't get compositions. A few people get them, but a lot of people don't. I mostly don't. When I try to read existing compositions, their deeply-nested hierarchy immediately confuses me, and I'm almost always afraid of editing anything. And I barely know how to start a new composition. The "clipboard" feature, which was added a few months ago, makes it a little bit less frustrating. But only a little bit; it doesn't solve the big issue. Creating and editing compositions is the only way to edit abstract articles, and it's very commonly needed on Wikifunctions, too, so if a lot of people have a hard time understanding how to do it, neither project will acquire a lot of editors. If you ask me, I'd do away with them completely and just use Python or JavaScript (or Lua!) code.
* [[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 16:01, 5 August 2026 (UTC)
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 22:18, 5 August 2026 (UTC) I don't propose to get rid of compositions, but make the default output more readable by automatically start a new function on a new line, and indent automatically. Also in read mode.
* Same. It's frustrating to have to click my mouse 10 times through a bunch of functions just to change an input value [[User:EatingCarBatteries|EatingCarBatteries]] ([[User talk:EatingCarBatteries|talk]]) 03:38, 6 August 2026 (UTC)
* ''Sign here''
=== Allow choice of implementation to be forced ===
: Where a function has multiple implementations, it would be helpful to be able to force the orchestrator to select a particular implementation for a particular run (or a particular session or a particular user). This would often be very helpful for debugging, or when an implementation appears to have a bug. I am not too sure how that could work - I propose that each user should be able to mark any implementation as always to be selected in their case (or perhaps as never to be selected). Perhaps only in the current session.
:It would even be useful to have a mode in a given session where the orchestrator always selects the first (or last) implementation for all functions - then one would at least know which implementation was going to be called!
* [[User:Strobilomyces|Strobilomyces]] ([[User talk:Strobilomyces|talk]]) 16:35, 5 August 2026 (UTC)
*:@[[User:Strobilomyces|Strobilomyces]]: The orchestrator will (currently) only ever chose the first connected implementation (for a language we support). Maybe we could make it clearer? For debugging, the idea is that you can do that from the implementation page whether or not it's connected, such as on [[Z15788]]. We could highlight that, perhaps? Can you give an example outside of debugging where you might want to allow multiple implementations to be connected but choose different implementations at run-time? I cannot suggest what we could do without understanding better the need, sorry! [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 17:30, 5 August 2026 (UTC)
*::Clarification: "First connected implementation" means the first one listed in the JSON version of the function (which is sometimes promoted or demoted by Wikilambda bot), rather than the first one displayed in the UI list, or the first one that was ever connected. Highlighting this implementation in the UI would be nice. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 04:15, 6 August 2026 (UTC)
*:::Yup, good point; we could definitely improve the UX here to indicate which is the "winning" implementation. [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 14:34, 6 August 2026 (UTC)
*::@[[User:Jdforrester (WMF)|Jdforrester (WMF)]] The ability to test a given implementation directly is very useful. But functions often call other functions and it makes debugging difficult if it is not possible to tell which implementation will be executed or has been executed at the lower level. If it currently always the same version, then that is good. I would like to know how to tell which version will be or has been executed. How do I see the JSON version of the subfunction? Do I have to use the API? [[User:Strobilomyces|Strobilomyces]] ([[User talk:Strobilomyces|talk]]) 13:27, 6 August 2026 (UTC)
*:::I find it by looking at the history and comparing diffs. Here's a diff showing that Wikilambda bot promoted the JS implementation to the top: https://www.wikifunctions.org/w/index.php?title=Z13521&diff=289160&oldid=232341 . --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 13:46, 6 August 2026 (UTC)
*::A particular case where the preferred implementation should not be used is when testing a recursive implementation. [[User:GrounderUK|GrounderUK]] ([[User talk:GrounderUK|talk]]) 18:04, 6 August 2026 (UTC)
*:You can run {{Z|Z35874}} to get the identifier of the currently preferred implementation for a specified function. You could also have [https://www.wikifunctions.org/view/en/Z37465?call=%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z37465%22%2C%22Z37465K1%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z35874%22%2C%22Z35874K1%22%3A%22Z10000%22%7D%2C%22Z37465K2%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z35874%22%2C%22Z35874K1%22%3A%22Z10000%22%7D%7D a hyperlink to the implementation].
*:When browsing, if you click on any of a function’s test cases, the implementations that are connected to the function are listed in the correct order in the Implementations box. This is also true when adding a new test case to a function.
*:Or we could [https://www.wikifunctions.org/view/en/Z801?call=%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z801%22%2C%22Z801K1%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z33470%22%2C%22Z33470K1%22%3A%22view+function%E2%80%99s+JSON%22%2C%22Z33470K2%22%3A%22a%22%2C%22Z33470K3%22%3A%7B%22Z1K1%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z883%22%2C%22Z883K1%22%3A%22Z6%22%2C%22Z883K2%22%3A%22Z1%22%7D%2C%22K1%22%3A%5B%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z882%22%2C%22Z882K1%22%3A%22Z6%22%2C%22Z882K2%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z881%22%2C%22Z881K1%22%3A%22Z6%22%7D%7D%2C%7B%22Z1K1%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z882%22%2C%22Z882K1%22%3A%22Z6%22%2C%22Z882K2%22%3A%22Z1%22%7D%2C%22K1%22%3A%22href%22%2C%22K2%22%3A%5B%22Z6%22%2C%22https%3A%2F%2Fwww.wikifunctions.org%2Fwiki%2F%22%2C%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z28231%22%2C%22Z28231K1%22%3A%22Z801%22%7D%2C%22%3Faction%3Draw%22%5D%7D%5D%7D%7D%7D turn this into a function], I suppose, or [https://www.wikifunctions.org/view/en/Z801?call=%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z801%22%2C%22Z801K1%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z811%22%2C%22Z811K1%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z803%22%2C%22Z803K1%22%3A%7B%22Z1K1%22%3A%22Z39%22%2C%22Z39K1%22%3A%22K1%22%7D%2C%22Z803K2%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z804%22%2C%22Z804K1%22%3A%5B%22Z39%22%2C%7B%22Z1K1%22%3A%22Z39%22%2C%22Z39K1%22%3A%22Z8K4%22%7D%5D%2C%22Z804K2%22%3A%22Z10000%22%7D%7D%7D%7D just this]. [[User:GrounderUK|GrounderUK]] ([[User talk:GrounderUK|talk]]) 17:51, 6 August 2026 (UTC)
* ''Sign here''
=== Allow Wikifunctions functions to be called from Python and Javascript ===
: As indicated in an earlier suggestion, it is not convenient to write complicated code in the form of compositions. I think far more code would be contributed if it could be done in Python or Javascript.
* [[User:Strobilomyces|Strobilomyces]] ([[User talk:Strobilomyces|talk]]) 16:44, 5 August 2026 (UTC)
* ''Sign here''
=== Example: Thing to fix (copy me!) ===
: What it would involve, and why it would be valuable.
* ''Sign here''
== Thank you! ==
It was great to speak to and hear from so many of you.
rkhih67kle20hzdlqllztg8zntrcgv7
297073
297072
2026-08-07T01:03:06Z
Kambai Akau
2092
/* Fix the long article dual-column scroll problem where you can't see what you're editing */
297073
wikitext
text/x-wiki
{{seealso|WF:Feature petitions}}
Thank you to so many of you who came in-person and online to the workshop at Wikimania last week around creating Abstract Wikipedia articles.
__NEWSECTIONLINK__
Based on your comments there and things you ran into or mentioned, we've pulled together a quick ideas list of possible improvements (alongside our work on faster and better NLG support, working with communities to consider piloting Abstract Wikipedia on their wiki, and other major parts of the annual plan).
Please indicate which items you think we should work on soonest by signing your name (<nowiki>~~~~</nowiki>) below them. We'll probably work on many of these, but the count of "votes" and arguments will help guide us in which ones we prioritise.
== Individual fragment editing ==
These are some ideas about how we might make adding and editing individual fragments easier.
=== Only auto-match the Wikidata item to the subject of the article on the first item in a Function call, not all of them ===
: This should avoid the confusing step of suggested items saying "Cairo is the Cairo of Cairo", but instead would need you to specify the item references for the others. The heuristic of only matching the first item might be enough as a starting point for many calls. We probably still want to match all dates and languages, though.
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 07:50, 31 July 2026 (UTC)
* [[User:Kambai Akau|Kambai Akau]] ([[User talk:Kambai Akau|talk]]) 00:56, 7 August 2026 (UTC)
* ''Sign here''
=== Split out some of the '…' menu on each item so you can quickly switch to a manual item reference ===
: A big stumbling block for folks was switching from an auto-matched (argument key) item or a function call to a specific item reference. This would allow you to quickly switch to that, without having to notice and go through the menu of all the other options.
* ''Sign here''
=== Re-word the labels for the abstract argument keys to be more clear about what they are ===
: We label the keys as 'wikidata item reference', 'language', and 'date'; we should make it clearer that these are 'this article's subject', 'view language', and 'view date' respectively. This would help avoid confusion about what these keys are for, and when you don't want to use them.
* [[User:Waldyrious|Waldyrious]] ([[User talk:Waldyrious|talk]]) 08:48, 1 August 2026 (UTC)
*:{{Done}} As a first step; how does that work for you? [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 15:45, 5 August 2026 (UTC)
=== Add short description fields to Functions' arguments, to help people can understand what the inputs mean when they use them ===
: For Functions, we have labels, aliases, and short descriptions, but Functions' inputs just have a single label each, which can make it hard for people to know what to put where, especially if they have unusual or unfamiliar words. Add a short description field, maybe shown via a secondary accessor like a "[[File:Codex icon info color-notice.svg|20x20px]]" rather than all the time.
* ''Sign here''
* [[User:Nux|Nux]] ([[User talk:Nux|talk]]) 11:38, 1 August 2026 (UTC) (i) icons with more info might help, like e.g. what the author means by "Hypernym" [https://abstract.wikipedia.org/w/index.php?title=Abstract_Wikipedia:Useful_functions_for_article_composition&oldid=13847].
*:@[[User:Nux|Nux]]: Can you give some more detail for where that kind of interface shows up for you? Do you mean giving more context for labels of functions' inputs? [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 15:46, 5 August 2026 (UTC)
*::@[[User:Jdforrester (WMF)|Jdforrester (WMF)]] Yes, argument description. Like a description for function [https://www.wikifunctions.org/w/index.php?title=Z37921&action=edit&uselang=en]. Like in JavaDoc. [[User:Nux|Nux]] ([[User talk:Nux|talk]]) 19:58, 5 August 2026 (UTC)
*:::Aha, right. Is it OK if I split this out into its own section? That's a very different change from what this section was written up as, based on what I heard in Paris, and should have its own discussion. [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 20:06, 5 August 2026 (UTC)
*::::Sure. [[User:Nux|Nux]] ([[User talk:Nux|talk]]) 20:12, 5 August 2026 (UTC)
* ''Sign here''
=== Example: Thing to fix (copy me!) ===
: What it would involve, and why it would be valuable.
* ''Sign here''
== New/better kinds of fragment ==
Here are some ideas for different kinds of fragments that you could use in abstract articles.
=== Add support for pulling structured data from Commons files ''e.g.'' captions ===
: Right now you can put in image files themselves, but you can't fetch any data about them. This is particularly unhelpful as the Wikidata items still use the File: name rather than the MID; we'd need to add the ability to fetch meta-data from Commons to the back-end services, like we do from Wikidata.
* ''Sign here''
=== Add support for video/audio file inclusions ===
: You can only specify image files, not audio or video files which are more complex. If demand is high we could add this sooner rather than later, though it may be complex to align with the existing workflows.
* ''Sign here''
=== Add support for galleries of media file inclusions ===
: You can create multiple media file transclusions, but it's limited to a small number and you have to do all the work of creating the styles around it. We could give a first-level media file output, if this is strongly wanted.
* ''Sign here''
=== Add support for map inclusions ===
: We don't yet support maps, which might be wanted if folks are making articles about places a lot. Full support would be quite complicated.
* [[User:EatingCarBatteries|EatingCarBatteries]] ([[User talk:EatingCarBatteries|talk]]) 03:24, 31 July 2026 (UTC)
=== Add support for chart inclusions ===
: We don't yet support charts, which might be wanted if folks are making articles about numerical things a lot. Full support would be very complicated.
* ''Sign here''
=== Abstract source mock-ups and multilingual reviews ===
:We are approaching Abstract Wikipedia from the bottom up, with very simple examples. This may be the "Wiki Way", but for software it is very unconventional, and I think it is uncertain whether it can eventually work for more advanced text. The project will have failed unless natural text similar in complexity to current Wikipedia articles can be generated. I think nobody (except possibly [[user:mahir256|Mahir Morshed]]) understands what the abstract source for more complicated sentences would look like.
:Mahir Morshed has created a multilingual text generation system called Elemwala at https://elemwala.toolforge.org/ (see his introduction at https://www.wikifunctions.org/wiki/Wikifunctions:Status_updates/2024-10-17 and his session at Wikimania). This is linked to Abstract Wikipedia, and extremely relevant to it (since it is the only real current proposal for the abstract souce that I know), but it should be noted that Elemwala is only a proposal, not Abstract Wikipedia policy. The list of constructors defines the abstract source as it is at present. Also more information on how this abstract content can be constructed can be found at https://www.wikidata.org/wiki/User:Mahir256/language-generation, with various links and references.
:It is not clear to me whether the abstract source, consisting of functions of Wikidata items backed up by lexemes, can even work at all for a wide variety of languages. Rendering a text needs much information which is special to the target language, for instance there can be genders, grammatical cases, polite forms of address, etc. Example: The Eiffel Tower (Q243) usually needs a definite article when used in English, whereas Blackpool Tower (Q880905) does not. Where should this information for the English renderer be held? It cannot be in the abstract source, since the answer is special for English; some editors of the abstract source will speak languages which do not use articles. Well, I think that this type of item needs an English lexeme with a flag to indicate the article usage, and that would be a solution. Another example relates to the grammatical tenses, voices and moods of verbs. How will that be managed? I suppose that a verb tense indication must be given as a parameter in the abstract source, but how will the values of this parameter be related to all the possible tense/voice/mood verb forms in all the languages? There are an enormous number of such diverse features; how can we be sure that there is enough information in the abstract source to do the rendering in all cases?
:I think that there is an urgent need to create examples of complex text (such as real Wikipedia articles) in the proposed abstract source. Then testers who comprehend the abstract source format and also know a relevant language should interpret the source text and confirm whether they understand it and whether they have enough information to reconstruct the text in their own language (not by software but with their own mental processes). If so, that would give much-needed confidence that the Abstract Wikipedia scheme can actually work, and I think it would advance the project by making clearer the next needed steps.
* [[User:Strobilomyces|Strobilomyces]] ([[User talk:Strobilomyces|talk]]) 20:41, 5 August 2026 (UTC)
* ''Sign here''
=== Example: Thing to fix (copy me!) ===
: What it would involve, and why it would be valuable.
* ''Sign here''
== Article editing ==
Here are some quick ideas about overall article editing, not specific to a given
=== Drag-and-drop moving of fragments, instead of having to click on the menu and the "move up/down" multiple times ===
: Drag-and-drop is a relatively familiar UX feature, and we could add an affordance for it to make it more discoverable at the same time as more usable.
* [[User:EatingCarBatteries|EatingCarBatteries]] ([[User talk:EatingCarBatteries|talk]]) 03:22, 31 July 2026 (UTC)
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 07:52, 31 July 2026 (UTC)
* [[User:Waldyrious|Waldyrious]] ([[User talk:Waldyrious|talk]]) 08:49, 1 August 2026 (UTC)
* [[User:Nux|Nux]] ([[User talk:Nux|talk]]) 11:42, 1 August 2026 (UTC) and also selecting and copying with ctrl+c/ctrl+v like in OOo/LibreOffice Calc
* [[User:Dungodung|Dungodung]] ([[User talk:Dungodung|talk]]) 15:30, 5 August 2026 (UTC)
* It's a very minor issue in the grand scheme of things, but would be nice. --[[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 16:04, 5 August 2026 (UTC)
* ''Sign here''
=== Fix the long article dual-column scroll problem where you can't see what you're editing ===
: This is particularly an issue on longer articles and smaller screens, but was mentioned as very irritating by some of you!
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 07:49, 31 July 2026 (UTC)
* It's a very minor issue in the grand scheme of things, but would be nice. --[[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 16:04, 5 August 2026 (UTC)
* [[User:Kambai Akau|Kambai Akau]] ([[User talk:Kambai Akau|talk]]) 01:03, 7 August 2026 (UTC)
* ''Sign here''
=== Support multiple sections, rather than just the lede ===
: Right now (despite some functions outputting <nowiki><h2></nowiki>s and the like), all articles are limited to just editing the lede section. We have mostly-built support for thematic sections, but this needs some polish. This would let you 'chunk up' articles, potentially editing only a section at a time for ease of use and / or collapsing those sections away to focus. We could also use this to allow external links limited to only the "external links" section (and references).
* [[User:EatingCarBatteries|EatingCarBatteries]] ([[User talk:EatingCarBatteries|talk]]) 07:12, 3 August 2026 (UTC)
=== Prompt editors with function calls based on statements in the Wikidata item ===
: Add a feature that checks the subject's Wikidata item for statements of the kind it knows about (e.g. "born 1850-01-20 in France") and match them to fragments, prompting you to add this. We'd need to work out how to link between fragment functions and Wikidata claims, and how to know whether the claims were already in the article, so this is quite complex to design and build, but would probably help a great deal.
* {{neutral|Comment}} e.g. {{P|569}}:{{P|1535}}={{Q|138748413}} w/ qual. {{P|528}}=[[Z37683]] [[User:YoshiRulz|YoshiRulz]] ([[User talk:YoshiRulz|talk]]) 00:57, 7 August 2026 (UTC)
* [[User:Kambai Akau|Kambai Akau]] ([[User talk:Kambai Akau|talk]]) 01:02, 7 August 2026 (UTC)
* ''Sign here''
=== Prompt editors with media used on Wikipedia articles for the subject ===
: A more specialised option compared to fetching media suggestions alongside everything else from the Wikidata item would be to check for the main/first image on any existing Wikipedia articles and suggesting that if it's not already set.
* ''Sign here''
=== Fill in the parameters at copy/paste ===
: Fill in the parameters at copy/paste if the number and types of parameters match. That is especialy usefull when copying a new function from one language to an other. Currenltly every parameter has to be filled manually.
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 22:25, 5 August 2026 (UTC) (as proposer) I just created {{Z|Z38911}} and it took me very long to fill all 30! parameters correctly~
* ''Sign here''
=== Example: Thing to fix (copy me!) ===
: What it would involve, and why it would be valuable.
* ''Sign here''
== Any other ideas you might have ==
The sections above aren't everything. What else is something you'd like fixed?
=== Make it more obvious in the search whether there's an existing abstract article or not ===
: Right now we just add "– AW" to the end of search results when there's an existing article; if we make it clearer whether the link is a "read this" or "create this" link, folks won't be surprised when they click it.
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 15:58, 1 August 2026 (UTC)
* ''Sign here''
=== Auto-linking new Abstract Wikipedia articles to their Wikidata counterparts ===
: Right now people need to manually say that ''e.g.'' Q90 is the same as Q90, which takes time and isn't obvious. If we did this automatically as articles were created, the workflow would be easier to understand.
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 15:56, 1 August 2026 (UTC)
* It's a very minor issue in the grand scheme of things, but would be nice. --[[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 16:03, 5 August 2026 (UTC)
* ''Sign here''
=== Show labels of talk pages ===
: Show labels of Zid's talk pages on recent changes, watchlist and also on Categories like [[:Category:English natural language generation functions|this one]]. Idem for Qid's talk pages on Abstract Wikipedia
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 17:22, 1 August 2026 (UTC) (as proposer)
* It's a very minor issue in the grand scheme of things, but would be nice. --[[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 16:03, 5 August 2026 (UTC)
* ''Sign here''
=== Enlarge the field for labels ===
: Currently the field for labels can hold a maximum of 50 characters. See for example {{Z|Z32398}}. Frequently this is not enough and abbreviation have to be made. That makes the function names confusing and not consistent.
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 17:37, 1 August 2026 (UTC) (as proposer)
* [[User:EatingCarBatteries|EatingCarBatteries]] ([[User talk:EatingCarBatteries|talk]]) 20:59, 3 August 2026 (UTC)
* [[User:Strobilomyces|Strobilomyces]] ([[User talk:Strobilomyces|talk]]) 16:09, 5 August 2026 (UTC)
* ''Sign here''
=== Support wikitext in functions output ===
: Wikifunctions don't support wikitext. They can only output unparseable plain text or HTML. I know that the page [[:f:Wikifunctions:Embedded function calls]] says very clearly that wikitext will never be supported. But this is the number one thing that causes me not to be motivated to use functions, and I suspect that I'm not alone. So perhaps you could reconsider it.
* [[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 16:01, 5 August 2026 (UTC)
** {{ping|Amire80|p=,}} {{ping|HenkvD}} What would you do with the produced Wikitext? Copy it into an existing page on one of the sister projects? [[User:YoshiRulz|YoshiRulz]] ([[User talk:YoshiRulz|talk]]) 01:01, 7 August 2026 (UTC)
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 22:11, 5 August 2026 (UTC) Without wikitext the Abstract Wikipedia is not a real Wikipedia. Using wikitext code for bold, italic etc. Maybe also for Wikilinks.
* ''Sign here''
=== Completely change the UI of compositions ===
: I don't get compositions. A few people get them, but a lot of people don't. I mostly don't. When I try to read existing compositions, their deeply-nested hierarchy immediately confuses me, and I'm almost always afraid of editing anything. And I barely know how to start a new composition. The "clipboard" feature, which was added a few months ago, makes it a little bit less frustrating. But only a little bit; it doesn't solve the big issue. Creating and editing compositions is the only way to edit abstract articles, and it's very commonly needed on Wikifunctions, too, so if a lot of people have a hard time understanding how to do it, neither project will acquire a lot of editors. If you ask me, I'd do away with them completely and just use Python or JavaScript (or Lua!) code.
* [[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 16:01, 5 August 2026 (UTC)
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 22:18, 5 August 2026 (UTC) I don't propose to get rid of compositions, but make the default output more readable by automatically start a new function on a new line, and indent automatically. Also in read mode.
* Same. It's frustrating to have to click my mouse 10 times through a bunch of functions just to change an input value [[User:EatingCarBatteries|EatingCarBatteries]] ([[User talk:EatingCarBatteries|talk]]) 03:38, 6 August 2026 (UTC)
* ''Sign here''
=== Allow choice of implementation to be forced ===
: Where a function has multiple implementations, it would be helpful to be able to force the orchestrator to select a particular implementation for a particular run (or a particular session or a particular user). This would often be very helpful for debugging, or when an implementation appears to have a bug. I am not too sure how that could work - I propose that each user should be able to mark any implementation as always to be selected in their case (or perhaps as never to be selected). Perhaps only in the current session.
:It would even be useful to have a mode in a given session where the orchestrator always selects the first (or last) implementation for all functions - then one would at least know which implementation was going to be called!
* [[User:Strobilomyces|Strobilomyces]] ([[User talk:Strobilomyces|talk]]) 16:35, 5 August 2026 (UTC)
*:@[[User:Strobilomyces|Strobilomyces]]: The orchestrator will (currently) only ever chose the first connected implementation (for a language we support). Maybe we could make it clearer? For debugging, the idea is that you can do that from the implementation page whether or not it's connected, such as on [[Z15788]]. We could highlight that, perhaps? Can you give an example outside of debugging where you might want to allow multiple implementations to be connected but choose different implementations at run-time? I cannot suggest what we could do without understanding better the need, sorry! [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 17:30, 5 August 2026 (UTC)
*::Clarification: "First connected implementation" means the first one listed in the JSON version of the function (which is sometimes promoted or demoted by Wikilambda bot), rather than the first one displayed in the UI list, or the first one that was ever connected. Highlighting this implementation in the UI would be nice. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 04:15, 6 August 2026 (UTC)
*:::Yup, good point; we could definitely improve the UX here to indicate which is the "winning" implementation. [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 14:34, 6 August 2026 (UTC)
*::@[[User:Jdforrester (WMF)|Jdforrester (WMF)]] The ability to test a given implementation directly is very useful. But functions often call other functions and it makes debugging difficult if it is not possible to tell which implementation will be executed or has been executed at the lower level. If it currently always the same version, then that is good. I would like to know how to tell which version will be or has been executed. How do I see the JSON version of the subfunction? Do I have to use the API? [[User:Strobilomyces|Strobilomyces]] ([[User talk:Strobilomyces|talk]]) 13:27, 6 August 2026 (UTC)
*:::I find it by looking at the history and comparing diffs. Here's a diff showing that Wikilambda bot promoted the JS implementation to the top: https://www.wikifunctions.org/w/index.php?title=Z13521&diff=289160&oldid=232341 . --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 13:46, 6 August 2026 (UTC)
*::A particular case where the preferred implementation should not be used is when testing a recursive implementation. [[User:GrounderUK|GrounderUK]] ([[User talk:GrounderUK|talk]]) 18:04, 6 August 2026 (UTC)
*:You can run {{Z|Z35874}} to get the identifier of the currently preferred implementation for a specified function. You could also have [https://www.wikifunctions.org/view/en/Z37465?call=%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z37465%22%2C%22Z37465K1%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z35874%22%2C%22Z35874K1%22%3A%22Z10000%22%7D%2C%22Z37465K2%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z35874%22%2C%22Z35874K1%22%3A%22Z10000%22%7D%7D a hyperlink to the implementation].
*:When browsing, if you click on any of a function’s test cases, the implementations that are connected to the function are listed in the correct order in the Implementations box. This is also true when adding a new test case to a function.
*:Or we could [https://www.wikifunctions.org/view/en/Z801?call=%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z801%22%2C%22Z801K1%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z33470%22%2C%22Z33470K1%22%3A%22view+function%E2%80%99s+JSON%22%2C%22Z33470K2%22%3A%22a%22%2C%22Z33470K3%22%3A%7B%22Z1K1%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z883%22%2C%22Z883K1%22%3A%22Z6%22%2C%22Z883K2%22%3A%22Z1%22%7D%2C%22K1%22%3A%5B%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z882%22%2C%22Z882K1%22%3A%22Z6%22%2C%22Z882K2%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z881%22%2C%22Z881K1%22%3A%22Z6%22%7D%7D%2C%7B%22Z1K1%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z882%22%2C%22Z882K1%22%3A%22Z6%22%2C%22Z882K2%22%3A%22Z1%22%7D%2C%22K1%22%3A%22href%22%2C%22K2%22%3A%5B%22Z6%22%2C%22https%3A%2F%2Fwww.wikifunctions.org%2Fwiki%2F%22%2C%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z28231%22%2C%22Z28231K1%22%3A%22Z801%22%7D%2C%22%3Faction%3Draw%22%5D%7D%5D%7D%7D%7D turn this into a function], I suppose, or [https://www.wikifunctions.org/view/en/Z801?call=%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z801%22%2C%22Z801K1%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z811%22%2C%22Z811K1%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z803%22%2C%22Z803K1%22%3A%7B%22Z1K1%22%3A%22Z39%22%2C%22Z39K1%22%3A%22K1%22%7D%2C%22Z803K2%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z804%22%2C%22Z804K1%22%3A%5B%22Z39%22%2C%7B%22Z1K1%22%3A%22Z39%22%2C%22Z39K1%22%3A%22Z8K4%22%7D%5D%2C%22Z804K2%22%3A%22Z10000%22%7D%7D%7D%7D just this]. [[User:GrounderUK|GrounderUK]] ([[User talk:GrounderUK|talk]]) 17:51, 6 August 2026 (UTC)
* ''Sign here''
=== Allow Wikifunctions functions to be called from Python and Javascript ===
: As indicated in an earlier suggestion, it is not convenient to write complicated code in the form of compositions. I think far more code would be contributed if it could be done in Python or Javascript.
* [[User:Strobilomyces|Strobilomyces]] ([[User talk:Strobilomyces|talk]]) 16:44, 5 August 2026 (UTC)
* ''Sign here''
=== Example: Thing to fix (copy me!) ===
: What it would involve, and why it would be valuable.
* ''Sign here''
== Thank you! ==
It was great to speak to and hear from so many of you.
63n6d81709jbk70d03q7m7381540f36
297074
297073
2026-08-07T01:08:50Z
Kambai Akau
2092
/* Prompt editors with function calls based on statements in the Wikidata item */
297074
wikitext
text/x-wiki
{{seealso|WF:Feature petitions}}
Thank you to so many of you who came in-person and online to the workshop at Wikimania last week around creating Abstract Wikipedia articles.
__NEWSECTIONLINK__
Based on your comments there and things you ran into or mentioned, we've pulled together a quick ideas list of possible improvements (alongside our work on faster and better NLG support, working with communities to consider piloting Abstract Wikipedia on their wiki, and other major parts of the annual plan).
Please indicate which items you think we should work on soonest by signing your name (<nowiki>~~~~</nowiki>) below them. We'll probably work on many of these, but the count of "votes" and arguments will help guide us in which ones we prioritise.
== Individual fragment editing ==
These are some ideas about how we might make adding and editing individual fragments easier.
=== Only auto-match the Wikidata item to the subject of the article on the first item in a Function call, not all of them ===
: This should avoid the confusing step of suggested items saying "Cairo is the Cairo of Cairo", but instead would need you to specify the item references for the others. The heuristic of only matching the first item might be enough as a starting point for many calls. We probably still want to match all dates and languages, though.
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 07:50, 31 July 2026 (UTC)
* [[User:Kambai Akau|Kambai Akau]] ([[User talk:Kambai Akau|talk]]) 00:56, 7 August 2026 (UTC)
* ''Sign here''
=== Split out some of the '…' menu on each item so you can quickly switch to a manual item reference ===
: A big stumbling block for folks was switching from an auto-matched (argument key) item or a function call to a specific item reference. This would allow you to quickly switch to that, without having to notice and go through the menu of all the other options.
* ''Sign here''
=== Re-word the labels for the abstract argument keys to be more clear about what they are ===
: We label the keys as 'wikidata item reference', 'language', and 'date'; we should make it clearer that these are 'this article's subject', 'view language', and 'view date' respectively. This would help avoid confusion about what these keys are for, and when you don't want to use them.
* [[User:Waldyrious|Waldyrious]] ([[User talk:Waldyrious|talk]]) 08:48, 1 August 2026 (UTC)
*:{{Done}} As a first step; how does that work for you? [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 15:45, 5 August 2026 (UTC)
=== Add short description fields to Functions' arguments, to help people can understand what the inputs mean when they use them ===
: For Functions, we have labels, aliases, and short descriptions, but Functions' inputs just have a single label each, which can make it hard for people to know what to put where, especially if they have unusual or unfamiliar words. Add a short description field, maybe shown via a secondary accessor like a "[[File:Codex icon info color-notice.svg|20x20px]]" rather than all the time.
* ''Sign here''
* [[User:Nux|Nux]] ([[User talk:Nux|talk]]) 11:38, 1 August 2026 (UTC) (i) icons with more info might help, like e.g. what the author means by "Hypernym" [https://abstract.wikipedia.org/w/index.php?title=Abstract_Wikipedia:Useful_functions_for_article_composition&oldid=13847].
*:@[[User:Nux|Nux]]: Can you give some more detail for where that kind of interface shows up for you? Do you mean giving more context for labels of functions' inputs? [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 15:46, 5 August 2026 (UTC)
*::@[[User:Jdforrester (WMF)|Jdforrester (WMF)]] Yes, argument description. Like a description for function [https://www.wikifunctions.org/w/index.php?title=Z37921&action=edit&uselang=en]. Like in JavaDoc. [[User:Nux|Nux]] ([[User talk:Nux|talk]]) 19:58, 5 August 2026 (UTC)
*:::Aha, right. Is it OK if I split this out into its own section? That's a very different change from what this section was written up as, based on what I heard in Paris, and should have its own discussion. [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 20:06, 5 August 2026 (UTC)
*::::Sure. [[User:Nux|Nux]] ([[User talk:Nux|talk]]) 20:12, 5 August 2026 (UTC)
* ''Sign here''
=== Example: Thing to fix (copy me!) ===
: What it would involve, and why it would be valuable.
* ''Sign here''
== New/better kinds of fragment ==
Here are some ideas for different kinds of fragments that you could use in abstract articles.
=== Add support for pulling structured data from Commons files ''e.g.'' captions ===
: Right now you can put in image files themselves, but you can't fetch any data about them. This is particularly unhelpful as the Wikidata items still use the File: name rather than the MID; we'd need to add the ability to fetch meta-data from Commons to the back-end services, like we do from Wikidata.
* ''Sign here''
=== Add support for video/audio file inclusions ===
: You can only specify image files, not audio or video files which are more complex. If demand is high we could add this sooner rather than later, though it may be complex to align with the existing workflows.
* ''Sign here''
=== Add support for galleries of media file inclusions ===
: You can create multiple media file transclusions, but it's limited to a small number and you have to do all the work of creating the styles around it. We could give a first-level media file output, if this is strongly wanted.
* ''Sign here''
=== Add support for map inclusions ===
: We don't yet support maps, which might be wanted if folks are making articles about places a lot. Full support would be quite complicated.
* [[User:EatingCarBatteries|EatingCarBatteries]] ([[User talk:EatingCarBatteries|talk]]) 03:24, 31 July 2026 (UTC)
=== Add support for chart inclusions ===
: We don't yet support charts, which might be wanted if folks are making articles about numerical things a lot. Full support would be very complicated.
* ''Sign here''
=== Abstract source mock-ups and multilingual reviews ===
:We are approaching Abstract Wikipedia from the bottom up, with very simple examples. This may be the "Wiki Way", but for software it is very unconventional, and I think it is uncertain whether it can eventually work for more advanced text. The project will have failed unless natural text similar in complexity to current Wikipedia articles can be generated. I think nobody (except possibly [[user:mahir256|Mahir Morshed]]) understands what the abstract source for more complicated sentences would look like.
:Mahir Morshed has created a multilingual text generation system called Elemwala at https://elemwala.toolforge.org/ (see his introduction at https://www.wikifunctions.org/wiki/Wikifunctions:Status_updates/2024-10-17 and his session at Wikimania). This is linked to Abstract Wikipedia, and extremely relevant to it (since it is the only real current proposal for the abstract souce that I know), but it should be noted that Elemwala is only a proposal, not Abstract Wikipedia policy. The list of constructors defines the abstract source as it is at present. Also more information on how this abstract content can be constructed can be found at https://www.wikidata.org/wiki/User:Mahir256/language-generation, with various links and references.
:It is not clear to me whether the abstract source, consisting of functions of Wikidata items backed up by lexemes, can even work at all for a wide variety of languages. Rendering a text needs much information which is special to the target language, for instance there can be genders, grammatical cases, polite forms of address, etc. Example: The Eiffel Tower (Q243) usually needs a definite article when used in English, whereas Blackpool Tower (Q880905) does not. Where should this information for the English renderer be held? It cannot be in the abstract source, since the answer is special for English; some editors of the abstract source will speak languages which do not use articles. Well, I think that this type of item needs an English lexeme with a flag to indicate the article usage, and that would be a solution. Another example relates to the grammatical tenses, voices and moods of verbs. How will that be managed? I suppose that a verb tense indication must be given as a parameter in the abstract source, but how will the values of this parameter be related to all the possible tense/voice/mood verb forms in all the languages? There are an enormous number of such diverse features; how can we be sure that there is enough information in the abstract source to do the rendering in all cases?
:I think that there is an urgent need to create examples of complex text (such as real Wikipedia articles) in the proposed abstract source. Then testers who comprehend the abstract source format and also know a relevant language should interpret the source text and confirm whether they understand it and whether they have enough information to reconstruct the text in their own language (not by software but with their own mental processes). If so, that would give much-needed confidence that the Abstract Wikipedia scheme can actually work, and I think it would advance the project by making clearer the next needed steps.
* [[User:Strobilomyces|Strobilomyces]] ([[User talk:Strobilomyces|talk]]) 20:41, 5 August 2026 (UTC)
* ''Sign here''
=== Example: Thing to fix (copy me!) ===
: What it would involve, and why it would be valuable.
* ''Sign here''
== Article editing ==
Here are some quick ideas about overall article editing, not specific to a given
=== Drag-and-drop moving of fragments, instead of having to click on the menu and the "move up/down" multiple times ===
: Drag-and-drop is a relatively familiar UX feature, and we could add an affordance for it to make it more discoverable at the same time as more usable.
* [[User:EatingCarBatteries|EatingCarBatteries]] ([[User talk:EatingCarBatteries|talk]]) 03:22, 31 July 2026 (UTC)
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 07:52, 31 July 2026 (UTC)
* [[User:Waldyrious|Waldyrious]] ([[User talk:Waldyrious|talk]]) 08:49, 1 August 2026 (UTC)
* [[User:Nux|Nux]] ([[User talk:Nux|talk]]) 11:42, 1 August 2026 (UTC) and also selecting and copying with ctrl+c/ctrl+v like in OOo/LibreOffice Calc
* [[User:Dungodung|Dungodung]] ([[User talk:Dungodung|talk]]) 15:30, 5 August 2026 (UTC)
* It's a very minor issue in the grand scheme of things, but would be nice. --[[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 16:04, 5 August 2026 (UTC)
* ''Sign here''
=== Fix the long article dual-column scroll problem where you can't see what you're editing ===
: This is particularly an issue on longer articles and smaller screens, but was mentioned as very irritating by some of you!
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 07:49, 31 July 2026 (UTC)
* It's a very minor issue in the grand scheme of things, but would be nice. --[[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 16:04, 5 August 2026 (UTC)
* [[User:Kambai Akau|Kambai Akau]] ([[User talk:Kambai Akau|talk]]) 01:03, 7 August 2026 (UTC)
* ''Sign here''
=== Support multiple sections, rather than just the lede ===
: Right now (despite some functions outputting <nowiki><h2></nowiki>s and the like), all articles are limited to just editing the lede section. We have mostly-built support for thematic sections, but this needs some polish. This would let you 'chunk up' articles, potentially editing only a section at a time for ease of use and / or collapsing those sections away to focus. We could also use this to allow external links limited to only the "external links" section (and references).
* [[User:EatingCarBatteries|EatingCarBatteries]] ([[User talk:EatingCarBatteries|talk]]) 07:12, 3 August 2026 (UTC)
=== Prompt editors with function calls based on statements in the Wikidata item ===
: Add a feature that checks the subject's Wikidata item for statements of the kind it knows about (e.g. "born 1850-01-20 in France") and match them to fragments, prompting you to add this. We'd need to work out how to link between fragment functions and Wikidata claims, and how to know whether the claims were already in the article, so this is quite complex to design and build, but would probably help a great deal.
* {{neutral|Comment}} e.g. {{P|569}}:{{P|1535}}={{Q|138748413}} w/ qual. {{P|528}}=[[Z37683]] [[User:YoshiRulz|YoshiRulz]] ([[User talk:YoshiRulz|talk]]) 00:57, 7 August 2026 (UTC)
* It would be nice for statements already present in Wikidata to be converted to form the sentences in the Abstract Wikipedia, instead of adding statements already present in Wikidata again in the A.W., as in [[abstract:Alan Turing|Alang Turing]]. [[User:Kambai Akau|Kambai Akau]] ([[User talk:Kambai Akau|talk]]) 01:02, 7 August 2026 (UTC)
* ''Sign here''
=== Prompt editors with media used on Wikipedia articles for the subject ===
: A more specialised option compared to fetching media suggestions alongside everything else from the Wikidata item would be to check for the main/first image on any existing Wikipedia articles and suggesting that if it's not already set.
* ''Sign here''
=== Fill in the parameters at copy/paste ===
: Fill in the parameters at copy/paste if the number and types of parameters match. That is especialy usefull when copying a new function from one language to an other. Currenltly every parameter has to be filled manually.
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 22:25, 5 August 2026 (UTC) (as proposer) I just created {{Z|Z38911}} and it took me very long to fill all 30! parameters correctly~
* ''Sign here''
=== Example: Thing to fix (copy me!) ===
: What it would involve, and why it would be valuable.
* ''Sign here''
== Any other ideas you might have ==
The sections above aren't everything. What else is something you'd like fixed?
=== Make it more obvious in the search whether there's an existing abstract article or not ===
: Right now we just add "– AW" to the end of search results when there's an existing article; if we make it clearer whether the link is a "read this" or "create this" link, folks won't be surprised when they click it.
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 15:58, 1 August 2026 (UTC)
* ''Sign here''
=== Auto-linking new Abstract Wikipedia articles to their Wikidata counterparts ===
: Right now people need to manually say that ''e.g.'' Q90 is the same as Q90, which takes time and isn't obvious. If we did this automatically as articles were created, the workflow would be easier to understand.
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 15:56, 1 August 2026 (UTC)
* It's a very minor issue in the grand scheme of things, but would be nice. --[[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 16:03, 5 August 2026 (UTC)
* ''Sign here''
=== Show labels of talk pages ===
: Show labels of Zid's talk pages on recent changes, watchlist and also on Categories like [[:Category:English natural language generation functions|this one]]. Idem for Qid's talk pages on Abstract Wikipedia
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 17:22, 1 August 2026 (UTC) (as proposer)
* It's a very minor issue in the grand scheme of things, but would be nice. --[[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 16:03, 5 August 2026 (UTC)
* ''Sign here''
=== Enlarge the field for labels ===
: Currently the field for labels can hold a maximum of 50 characters. See for example {{Z|Z32398}}. Frequently this is not enough and abbreviation have to be made. That makes the function names confusing and not consistent.
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 17:37, 1 August 2026 (UTC) (as proposer)
* [[User:EatingCarBatteries|EatingCarBatteries]] ([[User talk:EatingCarBatteries|talk]]) 20:59, 3 August 2026 (UTC)
* [[User:Strobilomyces|Strobilomyces]] ([[User talk:Strobilomyces|talk]]) 16:09, 5 August 2026 (UTC)
* ''Sign here''
=== Support wikitext in functions output ===
: Wikifunctions don't support wikitext. They can only output unparseable plain text or HTML. I know that the page [[:f:Wikifunctions:Embedded function calls]] says very clearly that wikitext will never be supported. But this is the number one thing that causes me not to be motivated to use functions, and I suspect that I'm not alone. So perhaps you could reconsider it.
* [[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 16:01, 5 August 2026 (UTC)
** {{ping|Amire80|p=,}} {{ping|HenkvD}} What would you do with the produced Wikitext? Copy it into an existing page on one of the sister projects? [[User:YoshiRulz|YoshiRulz]] ([[User talk:YoshiRulz|talk]]) 01:01, 7 August 2026 (UTC)
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 22:11, 5 August 2026 (UTC) Without wikitext the Abstract Wikipedia is not a real Wikipedia. Using wikitext code for bold, italic etc. Maybe also for Wikilinks.
* ''Sign here''
=== Completely change the UI of compositions ===
: I don't get compositions. A few people get them, but a lot of people don't. I mostly don't. When I try to read existing compositions, their deeply-nested hierarchy immediately confuses me, and I'm almost always afraid of editing anything. And I barely know how to start a new composition. The "clipboard" feature, which was added a few months ago, makes it a little bit less frustrating. But only a little bit; it doesn't solve the big issue. Creating and editing compositions is the only way to edit abstract articles, and it's very commonly needed on Wikifunctions, too, so if a lot of people have a hard time understanding how to do it, neither project will acquire a lot of editors. If you ask me, I'd do away with them completely and just use Python or JavaScript (or Lua!) code.
* [[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 16:01, 5 August 2026 (UTC)
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 22:18, 5 August 2026 (UTC) I don't propose to get rid of compositions, but make the default output more readable by automatically start a new function on a new line, and indent automatically. Also in read mode.
* Same. It's frustrating to have to click my mouse 10 times through a bunch of functions just to change an input value [[User:EatingCarBatteries|EatingCarBatteries]] ([[User talk:EatingCarBatteries|talk]]) 03:38, 6 August 2026 (UTC)
* ''Sign here''
=== Allow choice of implementation to be forced ===
: Where a function has multiple implementations, it would be helpful to be able to force the orchestrator to select a particular implementation for a particular run (or a particular session or a particular user). This would often be very helpful for debugging, or when an implementation appears to have a bug. I am not too sure how that could work - I propose that each user should be able to mark any implementation as always to be selected in their case (or perhaps as never to be selected). Perhaps only in the current session.
:It would even be useful to have a mode in a given session where the orchestrator always selects the first (or last) implementation for all functions - then one would at least know which implementation was going to be called!
* [[User:Strobilomyces|Strobilomyces]] ([[User talk:Strobilomyces|talk]]) 16:35, 5 August 2026 (UTC)
*:@[[User:Strobilomyces|Strobilomyces]]: The orchestrator will (currently) only ever chose the first connected implementation (for a language we support). Maybe we could make it clearer? For debugging, the idea is that you can do that from the implementation page whether or not it's connected, such as on [[Z15788]]. We could highlight that, perhaps? Can you give an example outside of debugging where you might want to allow multiple implementations to be connected but choose different implementations at run-time? I cannot suggest what we could do without understanding better the need, sorry! [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 17:30, 5 August 2026 (UTC)
*::Clarification: "First connected implementation" means the first one listed in the JSON version of the function (which is sometimes promoted or demoted by Wikilambda bot), rather than the first one displayed in the UI list, or the first one that was ever connected. Highlighting this implementation in the UI would be nice. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 04:15, 6 August 2026 (UTC)
*:::Yup, good point; we could definitely improve the UX here to indicate which is the "winning" implementation. [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 14:34, 6 August 2026 (UTC)
*::@[[User:Jdforrester (WMF)|Jdforrester (WMF)]] The ability to test a given implementation directly is very useful. But functions often call other functions and it makes debugging difficult if it is not possible to tell which implementation will be executed or has been executed at the lower level. If it currently always the same version, then that is good. I would like to know how to tell which version will be or has been executed. How do I see the JSON version of the subfunction? Do I have to use the API? [[User:Strobilomyces|Strobilomyces]] ([[User talk:Strobilomyces|talk]]) 13:27, 6 August 2026 (UTC)
*:::I find it by looking at the history and comparing diffs. Here's a diff showing that Wikilambda bot promoted the JS implementation to the top: https://www.wikifunctions.org/w/index.php?title=Z13521&diff=289160&oldid=232341 . --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 13:46, 6 August 2026 (UTC)
*::A particular case where the preferred implementation should not be used is when testing a recursive implementation. [[User:GrounderUK|GrounderUK]] ([[User talk:GrounderUK|talk]]) 18:04, 6 August 2026 (UTC)
*:You can run {{Z|Z35874}} to get the identifier of the currently preferred implementation for a specified function. You could also have [https://www.wikifunctions.org/view/en/Z37465?call=%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z37465%22%2C%22Z37465K1%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z35874%22%2C%22Z35874K1%22%3A%22Z10000%22%7D%2C%22Z37465K2%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z35874%22%2C%22Z35874K1%22%3A%22Z10000%22%7D%7D a hyperlink to the implementation].
*:When browsing, if you click on any of a function’s test cases, the implementations that are connected to the function are listed in the correct order in the Implementations box. This is also true when adding a new test case to a function.
*:Or we could [https://www.wikifunctions.org/view/en/Z801?call=%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z801%22%2C%22Z801K1%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z33470%22%2C%22Z33470K1%22%3A%22view+function%E2%80%99s+JSON%22%2C%22Z33470K2%22%3A%22a%22%2C%22Z33470K3%22%3A%7B%22Z1K1%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z883%22%2C%22Z883K1%22%3A%22Z6%22%2C%22Z883K2%22%3A%22Z1%22%7D%2C%22K1%22%3A%5B%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z882%22%2C%22Z882K1%22%3A%22Z6%22%2C%22Z882K2%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z881%22%2C%22Z881K1%22%3A%22Z6%22%7D%7D%2C%7B%22Z1K1%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z882%22%2C%22Z882K1%22%3A%22Z6%22%2C%22Z882K2%22%3A%22Z1%22%7D%2C%22K1%22%3A%22href%22%2C%22K2%22%3A%5B%22Z6%22%2C%22https%3A%2F%2Fwww.wikifunctions.org%2Fwiki%2F%22%2C%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z28231%22%2C%22Z28231K1%22%3A%22Z801%22%7D%2C%22%3Faction%3Draw%22%5D%7D%5D%7D%7D%7D turn this into a function], I suppose, or [https://www.wikifunctions.org/view/en/Z801?call=%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z801%22%2C%22Z801K1%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z811%22%2C%22Z811K1%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z803%22%2C%22Z803K1%22%3A%7B%22Z1K1%22%3A%22Z39%22%2C%22Z39K1%22%3A%22K1%22%7D%2C%22Z803K2%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z804%22%2C%22Z804K1%22%3A%5B%22Z39%22%2C%7B%22Z1K1%22%3A%22Z39%22%2C%22Z39K1%22%3A%22Z8K4%22%7D%5D%2C%22Z804K2%22%3A%22Z10000%22%7D%7D%7D%7D just this]. [[User:GrounderUK|GrounderUK]] ([[User talk:GrounderUK|talk]]) 17:51, 6 August 2026 (UTC)
* ''Sign here''
=== Allow Wikifunctions functions to be called from Python and Javascript ===
: As indicated in an earlier suggestion, it is not convenient to write complicated code in the form of compositions. I think far more code would be contributed if it could be done in Python or Javascript.
* [[User:Strobilomyces|Strobilomyces]] ([[User talk:Strobilomyces|talk]]) 16:44, 5 August 2026 (UTC)
* ''Sign here''
=== Example: Thing to fix (copy me!) ===
: What it would involve, and why it would be valuable.
* ''Sign here''
== Thank you! ==
It was great to speak to and hear from so many of you.
3vkenyo28ti9whu4kt3m4w7gb328z8l
297075
297074
2026-08-07T01:10:30Z
Kambai Akau
2092
/* Prompt editors with function calls based on statements in the Wikidata item */
297075
wikitext
text/x-wiki
{{seealso|WF:Feature petitions}}
Thank you to so many of you who came in-person and online to the workshop at Wikimania last week around creating Abstract Wikipedia articles.
__NEWSECTIONLINK__
Based on your comments there and things you ran into or mentioned, we've pulled together a quick ideas list of possible improvements (alongside our work on faster and better NLG support, working with communities to consider piloting Abstract Wikipedia on their wiki, and other major parts of the annual plan).
Please indicate which items you think we should work on soonest by signing your name (<nowiki>~~~~</nowiki>) below them. We'll probably work on many of these, but the count of "votes" and arguments will help guide us in which ones we prioritise.
== Individual fragment editing ==
These are some ideas about how we might make adding and editing individual fragments easier.
=== Only auto-match the Wikidata item to the subject of the article on the first item in a Function call, not all of them ===
: This should avoid the confusing step of suggested items saying "Cairo is the Cairo of Cairo", but instead would need you to specify the item references for the others. The heuristic of only matching the first item might be enough as a starting point for many calls. We probably still want to match all dates and languages, though.
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 07:50, 31 July 2026 (UTC)
* [[User:Kambai Akau|Kambai Akau]] ([[User talk:Kambai Akau|talk]]) 00:56, 7 August 2026 (UTC)
* ''Sign here''
=== Split out some of the '…' menu on each item so you can quickly switch to a manual item reference ===
: A big stumbling block for folks was switching from an auto-matched (argument key) item or a function call to a specific item reference. This would allow you to quickly switch to that, without having to notice and go through the menu of all the other options.
* ''Sign here''
=== Re-word the labels for the abstract argument keys to be more clear about what they are ===
: We label the keys as 'wikidata item reference', 'language', and 'date'; we should make it clearer that these are 'this article's subject', 'view language', and 'view date' respectively. This would help avoid confusion about what these keys are for, and when you don't want to use them.
* [[User:Waldyrious|Waldyrious]] ([[User talk:Waldyrious|talk]]) 08:48, 1 August 2026 (UTC)
*:{{Done}} As a first step; how does that work for you? [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 15:45, 5 August 2026 (UTC)
=== Add short description fields to Functions' arguments, to help people can understand what the inputs mean when they use them ===
: For Functions, we have labels, aliases, and short descriptions, but Functions' inputs just have a single label each, which can make it hard for people to know what to put where, especially if they have unusual or unfamiliar words. Add a short description field, maybe shown via a secondary accessor like a "[[File:Codex icon info color-notice.svg|20x20px]]" rather than all the time.
* ''Sign here''
* [[User:Nux|Nux]] ([[User talk:Nux|talk]]) 11:38, 1 August 2026 (UTC) (i) icons with more info might help, like e.g. what the author means by "Hypernym" [https://abstract.wikipedia.org/w/index.php?title=Abstract_Wikipedia:Useful_functions_for_article_composition&oldid=13847].
*:@[[User:Nux|Nux]]: Can you give some more detail for where that kind of interface shows up for you? Do you mean giving more context for labels of functions' inputs? [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 15:46, 5 August 2026 (UTC)
*::@[[User:Jdforrester (WMF)|Jdforrester (WMF)]] Yes, argument description. Like a description for function [https://www.wikifunctions.org/w/index.php?title=Z37921&action=edit&uselang=en]. Like in JavaDoc. [[User:Nux|Nux]] ([[User talk:Nux|talk]]) 19:58, 5 August 2026 (UTC)
*:::Aha, right. Is it OK if I split this out into its own section? That's a very different change from what this section was written up as, based on what I heard in Paris, and should have its own discussion. [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 20:06, 5 August 2026 (UTC)
*::::Sure. [[User:Nux|Nux]] ([[User talk:Nux|talk]]) 20:12, 5 August 2026 (UTC)
* ''Sign here''
=== Example: Thing to fix (copy me!) ===
: What it would involve, and why it would be valuable.
* ''Sign here''
== New/better kinds of fragment ==
Here are some ideas for different kinds of fragments that you could use in abstract articles.
=== Add support for pulling structured data from Commons files ''e.g.'' captions ===
: Right now you can put in image files themselves, but you can't fetch any data about them. This is particularly unhelpful as the Wikidata items still use the File: name rather than the MID; we'd need to add the ability to fetch meta-data from Commons to the back-end services, like we do from Wikidata.
* ''Sign here''
=== Add support for video/audio file inclusions ===
: You can only specify image files, not audio or video files which are more complex. If demand is high we could add this sooner rather than later, though it may be complex to align with the existing workflows.
* ''Sign here''
=== Add support for galleries of media file inclusions ===
: You can create multiple media file transclusions, but it's limited to a small number and you have to do all the work of creating the styles around it. We could give a first-level media file output, if this is strongly wanted.
* ''Sign here''
=== Add support for map inclusions ===
: We don't yet support maps, which might be wanted if folks are making articles about places a lot. Full support would be quite complicated.
* [[User:EatingCarBatteries|EatingCarBatteries]] ([[User talk:EatingCarBatteries|talk]]) 03:24, 31 July 2026 (UTC)
=== Add support for chart inclusions ===
: We don't yet support charts, which might be wanted if folks are making articles about numerical things a lot. Full support would be very complicated.
* ''Sign here''
=== Abstract source mock-ups and multilingual reviews ===
:We are approaching Abstract Wikipedia from the bottom up, with very simple examples. This may be the "Wiki Way", but for software it is very unconventional, and I think it is uncertain whether it can eventually work for more advanced text. The project will have failed unless natural text similar in complexity to current Wikipedia articles can be generated. I think nobody (except possibly [[user:mahir256|Mahir Morshed]]) understands what the abstract source for more complicated sentences would look like.
:Mahir Morshed has created a multilingual text generation system called Elemwala at https://elemwala.toolforge.org/ (see his introduction at https://www.wikifunctions.org/wiki/Wikifunctions:Status_updates/2024-10-17 and his session at Wikimania). This is linked to Abstract Wikipedia, and extremely relevant to it (since it is the only real current proposal for the abstract souce that I know), but it should be noted that Elemwala is only a proposal, not Abstract Wikipedia policy. The list of constructors defines the abstract source as it is at present. Also more information on how this abstract content can be constructed can be found at https://www.wikidata.org/wiki/User:Mahir256/language-generation, with various links and references.
:It is not clear to me whether the abstract source, consisting of functions of Wikidata items backed up by lexemes, can even work at all for a wide variety of languages. Rendering a text needs much information which is special to the target language, for instance there can be genders, grammatical cases, polite forms of address, etc. Example: The Eiffel Tower (Q243) usually needs a definite article when used in English, whereas Blackpool Tower (Q880905) does not. Where should this information for the English renderer be held? It cannot be in the abstract source, since the answer is special for English; some editors of the abstract source will speak languages which do not use articles. Well, I think that this type of item needs an English lexeme with a flag to indicate the article usage, and that would be a solution. Another example relates to the grammatical tenses, voices and moods of verbs. How will that be managed? I suppose that a verb tense indication must be given as a parameter in the abstract source, but how will the values of this parameter be related to all the possible tense/voice/mood verb forms in all the languages? There are an enormous number of such diverse features; how can we be sure that there is enough information in the abstract source to do the rendering in all cases?
:I think that there is an urgent need to create examples of complex text (such as real Wikipedia articles) in the proposed abstract source. Then testers who comprehend the abstract source format and also know a relevant language should interpret the source text and confirm whether they understand it and whether they have enough information to reconstruct the text in their own language (not by software but with their own mental processes). If so, that would give much-needed confidence that the Abstract Wikipedia scheme can actually work, and I think it would advance the project by making clearer the next needed steps.
* [[User:Strobilomyces|Strobilomyces]] ([[User talk:Strobilomyces|talk]]) 20:41, 5 August 2026 (UTC)
* ''Sign here''
=== Example: Thing to fix (copy me!) ===
: What it would involve, and why it would be valuable.
* ''Sign here''
== Article editing ==
Here are some quick ideas about overall article editing, not specific to a given
=== Drag-and-drop moving of fragments, instead of having to click on the menu and the "move up/down" multiple times ===
: Drag-and-drop is a relatively familiar UX feature, and we could add an affordance for it to make it more discoverable at the same time as more usable.
* [[User:EatingCarBatteries|EatingCarBatteries]] ([[User talk:EatingCarBatteries|talk]]) 03:22, 31 July 2026 (UTC)
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 07:52, 31 July 2026 (UTC)
* [[User:Waldyrious|Waldyrious]] ([[User talk:Waldyrious|talk]]) 08:49, 1 August 2026 (UTC)
* [[User:Nux|Nux]] ([[User talk:Nux|talk]]) 11:42, 1 August 2026 (UTC) and also selecting and copying with ctrl+c/ctrl+v like in OOo/LibreOffice Calc
* [[User:Dungodung|Dungodung]] ([[User talk:Dungodung|talk]]) 15:30, 5 August 2026 (UTC)
* It's a very minor issue in the grand scheme of things, but would be nice. --[[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 16:04, 5 August 2026 (UTC)
* ''Sign here''
=== Fix the long article dual-column scroll problem where you can't see what you're editing ===
: This is particularly an issue on longer articles and smaller screens, but was mentioned as very irritating by some of you!
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 07:49, 31 July 2026 (UTC)
* It's a very minor issue in the grand scheme of things, but would be nice. --[[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 16:04, 5 August 2026 (UTC)
* [[User:Kambai Akau|Kambai Akau]] ([[User talk:Kambai Akau|talk]]) 01:03, 7 August 2026 (UTC)
* ''Sign here''
=== Support multiple sections, rather than just the lede ===
: Right now (despite some functions outputting <nowiki><h2></nowiki>s and the like), all articles are limited to just editing the lede section. We have mostly-built support for thematic sections, but this needs some polish. This would let you 'chunk up' articles, potentially editing only a section at a time for ease of use and / or collapsing those sections away to focus. We could also use this to allow external links limited to only the "external links" section (and references).
* [[User:EatingCarBatteries|EatingCarBatteries]] ([[User talk:EatingCarBatteries|talk]]) 07:12, 3 August 2026 (UTC)
=== Prompt editors with function calls based on statements in the Wikidata item ===
: Add a feature that checks the subject's Wikidata item for statements of the kind it knows about (e.g. "born 1850-01-20 in France") and match them to fragments, prompting you to add this. We'd need to work out how to link between fragment functions and Wikidata claims, and how to know whether the claims were already in the article, so this is quite complex to design and build, but would probably help a great deal.
* {{neutral|Comment}} e.g. {{P|569}}:{{P|1535}}={{Q|138748413}} w/ qual. {{P|528}}=[[Z37683]] [[User:YoshiRulz|YoshiRulz]] ([[User talk:YoshiRulz|talk]]) 00:57, 7 August 2026 (UTC)
* It would be nice for statements already present in Wikidata to be converted to form the sentences in the Abstract Wikipedia, instead of adding statements already present in Wikidata again in the A.W., as in [[abstract:Alan Turing (Q7251)|Alan Turing]]. [[User:Kambai Akau|Kambai Akau]] ([[User talk:Kambai Akau|talk]]) 01:02, 7 August 2026 (UTC)
* ''Sign here''
=== Prompt editors with media used on Wikipedia articles for the subject ===
: A more specialised option compared to fetching media suggestions alongside everything else from the Wikidata item would be to check for the main/first image on any existing Wikipedia articles and suggesting that if it's not already set.
* ''Sign here''
=== Fill in the parameters at copy/paste ===
: Fill in the parameters at copy/paste if the number and types of parameters match. That is especialy usefull when copying a new function from one language to an other. Currenltly every parameter has to be filled manually.
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 22:25, 5 August 2026 (UTC) (as proposer) I just created {{Z|Z38911}} and it took me very long to fill all 30! parameters correctly~
* ''Sign here''
=== Example: Thing to fix (copy me!) ===
: What it would involve, and why it would be valuable.
* ''Sign here''
== Any other ideas you might have ==
The sections above aren't everything. What else is something you'd like fixed?
=== Make it more obvious in the search whether there's an existing abstract article or not ===
: Right now we just add "– AW" to the end of search results when there's an existing article; if we make it clearer whether the link is a "read this" or "create this" link, folks won't be surprised when they click it.
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 15:58, 1 August 2026 (UTC)
* ''Sign here''
=== Auto-linking new Abstract Wikipedia articles to their Wikidata counterparts ===
: Right now people need to manually say that ''e.g.'' Q90 is the same as Q90, which takes time and isn't obvious. If we did this automatically as articles were created, the workflow would be easier to understand.
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 15:56, 1 August 2026 (UTC)
* It's a very minor issue in the grand scheme of things, but would be nice. --[[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 16:03, 5 August 2026 (UTC)
* ''Sign here''
=== Show labels of talk pages ===
: Show labels of Zid's talk pages on recent changes, watchlist and also on Categories like [[:Category:English natural language generation functions|this one]]. Idem for Qid's talk pages on Abstract Wikipedia
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 17:22, 1 August 2026 (UTC) (as proposer)
* It's a very minor issue in the grand scheme of things, but would be nice. --[[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 16:03, 5 August 2026 (UTC)
* ''Sign here''
=== Enlarge the field for labels ===
: Currently the field for labels can hold a maximum of 50 characters. See for example {{Z|Z32398}}. Frequently this is not enough and abbreviation have to be made. That makes the function names confusing and not consistent.
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 17:37, 1 August 2026 (UTC) (as proposer)
* [[User:EatingCarBatteries|EatingCarBatteries]] ([[User talk:EatingCarBatteries|talk]]) 20:59, 3 August 2026 (UTC)
* [[User:Strobilomyces|Strobilomyces]] ([[User talk:Strobilomyces|talk]]) 16:09, 5 August 2026 (UTC)
* ''Sign here''
=== Support wikitext in functions output ===
: Wikifunctions don't support wikitext. They can only output unparseable plain text or HTML. I know that the page [[:f:Wikifunctions:Embedded function calls]] says very clearly that wikitext will never be supported. But this is the number one thing that causes me not to be motivated to use functions, and I suspect that I'm not alone. So perhaps you could reconsider it.
* [[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 16:01, 5 August 2026 (UTC)
** {{ping|Amire80|p=,}} {{ping|HenkvD}} What would you do with the produced Wikitext? Copy it into an existing page on one of the sister projects? [[User:YoshiRulz|YoshiRulz]] ([[User talk:YoshiRulz|talk]]) 01:01, 7 August 2026 (UTC)
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 22:11, 5 August 2026 (UTC) Without wikitext the Abstract Wikipedia is not a real Wikipedia. Using wikitext code for bold, italic etc. Maybe also for Wikilinks.
* ''Sign here''
=== Completely change the UI of compositions ===
: I don't get compositions. A few people get them, but a lot of people don't. I mostly don't. When I try to read existing compositions, their deeply-nested hierarchy immediately confuses me, and I'm almost always afraid of editing anything. And I barely know how to start a new composition. The "clipboard" feature, which was added a few months ago, makes it a little bit less frustrating. But only a little bit; it doesn't solve the big issue. Creating and editing compositions is the only way to edit abstract articles, and it's very commonly needed on Wikifunctions, too, so if a lot of people have a hard time understanding how to do it, neither project will acquire a lot of editors. If you ask me, I'd do away with them completely and just use Python or JavaScript (or Lua!) code.
* [[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 16:01, 5 August 2026 (UTC)
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 22:18, 5 August 2026 (UTC) I don't propose to get rid of compositions, but make the default output more readable by automatically start a new function on a new line, and indent automatically. Also in read mode.
* Same. It's frustrating to have to click my mouse 10 times through a bunch of functions just to change an input value [[User:EatingCarBatteries|EatingCarBatteries]] ([[User talk:EatingCarBatteries|talk]]) 03:38, 6 August 2026 (UTC)
* ''Sign here''
=== Allow choice of implementation to be forced ===
: Where a function has multiple implementations, it would be helpful to be able to force the orchestrator to select a particular implementation for a particular run (or a particular session or a particular user). This would often be very helpful for debugging, or when an implementation appears to have a bug. I am not too sure how that could work - I propose that each user should be able to mark any implementation as always to be selected in their case (or perhaps as never to be selected). Perhaps only in the current session.
:It would even be useful to have a mode in a given session where the orchestrator always selects the first (or last) implementation for all functions - then one would at least know which implementation was going to be called!
* [[User:Strobilomyces|Strobilomyces]] ([[User talk:Strobilomyces|talk]]) 16:35, 5 August 2026 (UTC)
*:@[[User:Strobilomyces|Strobilomyces]]: The orchestrator will (currently) only ever chose the first connected implementation (for a language we support). Maybe we could make it clearer? For debugging, the idea is that you can do that from the implementation page whether or not it's connected, such as on [[Z15788]]. We could highlight that, perhaps? Can you give an example outside of debugging where you might want to allow multiple implementations to be connected but choose different implementations at run-time? I cannot suggest what we could do without understanding better the need, sorry! [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 17:30, 5 August 2026 (UTC)
*::Clarification: "First connected implementation" means the first one listed in the JSON version of the function (which is sometimes promoted or demoted by Wikilambda bot), rather than the first one displayed in the UI list, or the first one that was ever connected. Highlighting this implementation in the UI would be nice. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 04:15, 6 August 2026 (UTC)
*:::Yup, good point; we could definitely improve the UX here to indicate which is the "winning" implementation. [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 14:34, 6 August 2026 (UTC)
*::@[[User:Jdforrester (WMF)|Jdforrester (WMF)]] The ability to test a given implementation directly is very useful. But functions often call other functions and it makes debugging difficult if it is not possible to tell which implementation will be executed or has been executed at the lower level. If it currently always the same version, then that is good. I would like to know how to tell which version will be or has been executed. How do I see the JSON version of the subfunction? Do I have to use the API? [[User:Strobilomyces|Strobilomyces]] ([[User talk:Strobilomyces|talk]]) 13:27, 6 August 2026 (UTC)
*:::I find it by looking at the history and comparing diffs. Here's a diff showing that Wikilambda bot promoted the JS implementation to the top: https://www.wikifunctions.org/w/index.php?title=Z13521&diff=289160&oldid=232341 . --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 13:46, 6 August 2026 (UTC)
*::A particular case where the preferred implementation should not be used is when testing a recursive implementation. [[User:GrounderUK|GrounderUK]] ([[User talk:GrounderUK|talk]]) 18:04, 6 August 2026 (UTC)
*:You can run {{Z|Z35874}} to get the identifier of the currently preferred implementation for a specified function. You could also have [https://www.wikifunctions.org/view/en/Z37465?call=%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z37465%22%2C%22Z37465K1%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z35874%22%2C%22Z35874K1%22%3A%22Z10000%22%7D%2C%22Z37465K2%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z35874%22%2C%22Z35874K1%22%3A%22Z10000%22%7D%7D a hyperlink to the implementation].
*:When browsing, if you click on any of a function’s test cases, the implementations that are connected to the function are listed in the correct order in the Implementations box. This is also true when adding a new test case to a function.
*:Or we could [https://www.wikifunctions.org/view/en/Z801?call=%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z801%22%2C%22Z801K1%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z33470%22%2C%22Z33470K1%22%3A%22view+function%E2%80%99s+JSON%22%2C%22Z33470K2%22%3A%22a%22%2C%22Z33470K3%22%3A%7B%22Z1K1%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z883%22%2C%22Z883K1%22%3A%22Z6%22%2C%22Z883K2%22%3A%22Z1%22%7D%2C%22K1%22%3A%5B%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z882%22%2C%22Z882K1%22%3A%22Z6%22%2C%22Z882K2%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z881%22%2C%22Z881K1%22%3A%22Z6%22%7D%7D%2C%7B%22Z1K1%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z882%22%2C%22Z882K1%22%3A%22Z6%22%2C%22Z882K2%22%3A%22Z1%22%7D%2C%22K1%22%3A%22href%22%2C%22K2%22%3A%5B%22Z6%22%2C%22https%3A%2F%2Fwww.wikifunctions.org%2Fwiki%2F%22%2C%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z28231%22%2C%22Z28231K1%22%3A%22Z801%22%7D%2C%22%3Faction%3Draw%22%5D%7D%5D%7D%7D%7D turn this into a function], I suppose, or [https://www.wikifunctions.org/view/en/Z801?call=%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z801%22%2C%22Z801K1%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z811%22%2C%22Z811K1%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z803%22%2C%22Z803K1%22%3A%7B%22Z1K1%22%3A%22Z39%22%2C%22Z39K1%22%3A%22K1%22%7D%2C%22Z803K2%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z804%22%2C%22Z804K1%22%3A%5B%22Z39%22%2C%7B%22Z1K1%22%3A%22Z39%22%2C%22Z39K1%22%3A%22Z8K4%22%7D%5D%2C%22Z804K2%22%3A%22Z10000%22%7D%7D%7D%7D just this]. [[User:GrounderUK|GrounderUK]] ([[User talk:GrounderUK|talk]]) 17:51, 6 August 2026 (UTC)
* ''Sign here''
=== Allow Wikifunctions functions to be called from Python and Javascript ===
: As indicated in an earlier suggestion, it is not convenient to write complicated code in the form of compositions. I think far more code would be contributed if it could be done in Python or Javascript.
* [[User:Strobilomyces|Strobilomyces]] ([[User talk:Strobilomyces|talk]]) 16:44, 5 August 2026 (UTC)
* ''Sign here''
=== Example: Thing to fix (copy me!) ===
: What it would involve, and why it would be valuable.
* ''Sign here''
== Thank you! ==
It was great to speak to and hear from so many of you.
mnp3rvf9cqim6i3sjrsmmli4kdi7tuf
297076
297075
2026-08-07T01:11:50Z
Kambai Akau
2092
/* Prompt editors with function calls based on statements in the Wikidata item */
297076
wikitext
text/x-wiki
{{seealso|WF:Feature petitions}}
Thank you to so many of you who came in-person and online to the workshop at Wikimania last week around creating Abstract Wikipedia articles.
__NEWSECTIONLINK__
Based on your comments there and things you ran into or mentioned, we've pulled together a quick ideas list of possible improvements (alongside our work on faster and better NLG support, working with communities to consider piloting Abstract Wikipedia on their wiki, and other major parts of the annual plan).
Please indicate which items you think we should work on soonest by signing your name (<nowiki>~~~~</nowiki>) below them. We'll probably work on many of these, but the count of "votes" and arguments will help guide us in which ones we prioritise.
== Individual fragment editing ==
These are some ideas about how we might make adding and editing individual fragments easier.
=== Only auto-match the Wikidata item to the subject of the article on the first item in a Function call, not all of them ===
: This should avoid the confusing step of suggested items saying "Cairo is the Cairo of Cairo", but instead would need you to specify the item references for the others. The heuristic of only matching the first item might be enough as a starting point for many calls. We probably still want to match all dates and languages, though.
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 07:50, 31 July 2026 (UTC)
* [[User:Kambai Akau|Kambai Akau]] ([[User talk:Kambai Akau|talk]]) 00:56, 7 August 2026 (UTC)
* ''Sign here''
=== Split out some of the '…' menu on each item so you can quickly switch to a manual item reference ===
: A big stumbling block for folks was switching from an auto-matched (argument key) item or a function call to a specific item reference. This would allow you to quickly switch to that, without having to notice and go through the menu of all the other options.
* ''Sign here''
=== Re-word the labels for the abstract argument keys to be more clear about what they are ===
: We label the keys as 'wikidata item reference', 'language', and 'date'; we should make it clearer that these are 'this article's subject', 'view language', and 'view date' respectively. This would help avoid confusion about what these keys are for, and when you don't want to use them.
* [[User:Waldyrious|Waldyrious]] ([[User talk:Waldyrious|talk]]) 08:48, 1 August 2026 (UTC)
*:{{Done}} As a first step; how does that work for you? [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 15:45, 5 August 2026 (UTC)
=== Add short description fields to Functions' arguments, to help people can understand what the inputs mean when they use them ===
: For Functions, we have labels, aliases, and short descriptions, but Functions' inputs just have a single label each, which can make it hard for people to know what to put where, especially if they have unusual or unfamiliar words. Add a short description field, maybe shown via a secondary accessor like a "[[File:Codex icon info color-notice.svg|20x20px]]" rather than all the time.
* ''Sign here''
* [[User:Nux|Nux]] ([[User talk:Nux|talk]]) 11:38, 1 August 2026 (UTC) (i) icons with more info might help, like e.g. what the author means by "Hypernym" [https://abstract.wikipedia.org/w/index.php?title=Abstract_Wikipedia:Useful_functions_for_article_composition&oldid=13847].
*:@[[User:Nux|Nux]]: Can you give some more detail for where that kind of interface shows up for you? Do you mean giving more context for labels of functions' inputs? [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 15:46, 5 August 2026 (UTC)
*::@[[User:Jdforrester (WMF)|Jdforrester (WMF)]] Yes, argument description. Like a description for function [https://www.wikifunctions.org/w/index.php?title=Z37921&action=edit&uselang=en]. Like in JavaDoc. [[User:Nux|Nux]] ([[User talk:Nux|talk]]) 19:58, 5 August 2026 (UTC)
*:::Aha, right. Is it OK if I split this out into its own section? That's a very different change from what this section was written up as, based on what I heard in Paris, and should have its own discussion. [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 20:06, 5 August 2026 (UTC)
*::::Sure. [[User:Nux|Nux]] ([[User talk:Nux|talk]]) 20:12, 5 August 2026 (UTC)
* ''Sign here''
=== Example: Thing to fix (copy me!) ===
: What it would involve, and why it would be valuable.
* ''Sign here''
== New/better kinds of fragment ==
Here are some ideas for different kinds of fragments that you could use in abstract articles.
=== Add support for pulling structured data from Commons files ''e.g.'' captions ===
: Right now you can put in image files themselves, but you can't fetch any data about them. This is particularly unhelpful as the Wikidata items still use the File: name rather than the MID; we'd need to add the ability to fetch meta-data from Commons to the back-end services, like we do from Wikidata.
* ''Sign here''
=== Add support for video/audio file inclusions ===
: You can only specify image files, not audio or video files which are more complex. If demand is high we could add this sooner rather than later, though it may be complex to align with the existing workflows.
* ''Sign here''
=== Add support for galleries of media file inclusions ===
: You can create multiple media file transclusions, but it's limited to a small number and you have to do all the work of creating the styles around it. We could give a first-level media file output, if this is strongly wanted.
* ''Sign here''
=== Add support for map inclusions ===
: We don't yet support maps, which might be wanted if folks are making articles about places a lot. Full support would be quite complicated.
* [[User:EatingCarBatteries|EatingCarBatteries]] ([[User talk:EatingCarBatteries|talk]]) 03:24, 31 July 2026 (UTC)
=== Add support for chart inclusions ===
: We don't yet support charts, which might be wanted if folks are making articles about numerical things a lot. Full support would be very complicated.
* ''Sign here''
=== Abstract source mock-ups and multilingual reviews ===
:We are approaching Abstract Wikipedia from the bottom up, with very simple examples. This may be the "Wiki Way", but for software it is very unconventional, and I think it is uncertain whether it can eventually work for more advanced text. The project will have failed unless natural text similar in complexity to current Wikipedia articles can be generated. I think nobody (except possibly [[user:mahir256|Mahir Morshed]]) understands what the abstract source for more complicated sentences would look like.
:Mahir Morshed has created a multilingual text generation system called Elemwala at https://elemwala.toolforge.org/ (see his introduction at https://www.wikifunctions.org/wiki/Wikifunctions:Status_updates/2024-10-17 and his session at Wikimania). This is linked to Abstract Wikipedia, and extremely relevant to it (since it is the only real current proposal for the abstract souce that I know), but it should be noted that Elemwala is only a proposal, not Abstract Wikipedia policy. The list of constructors defines the abstract source as it is at present. Also more information on how this abstract content can be constructed can be found at https://www.wikidata.org/wiki/User:Mahir256/language-generation, with various links and references.
:It is not clear to me whether the abstract source, consisting of functions of Wikidata items backed up by lexemes, can even work at all for a wide variety of languages. Rendering a text needs much information which is special to the target language, for instance there can be genders, grammatical cases, polite forms of address, etc. Example: The Eiffel Tower (Q243) usually needs a definite article when used in English, whereas Blackpool Tower (Q880905) does not. Where should this information for the English renderer be held? It cannot be in the abstract source, since the answer is special for English; some editors of the abstract source will speak languages which do not use articles. Well, I think that this type of item needs an English lexeme with a flag to indicate the article usage, and that would be a solution. Another example relates to the grammatical tenses, voices and moods of verbs. How will that be managed? I suppose that a verb tense indication must be given as a parameter in the abstract source, but how will the values of this parameter be related to all the possible tense/voice/mood verb forms in all the languages? There are an enormous number of such diverse features; how can we be sure that there is enough information in the abstract source to do the rendering in all cases?
:I think that there is an urgent need to create examples of complex text (such as real Wikipedia articles) in the proposed abstract source. Then testers who comprehend the abstract source format and also know a relevant language should interpret the source text and confirm whether they understand it and whether they have enough information to reconstruct the text in their own language (not by software but with their own mental processes). If so, that would give much-needed confidence that the Abstract Wikipedia scheme can actually work, and I think it would advance the project by making clearer the next needed steps.
* [[User:Strobilomyces|Strobilomyces]] ([[User talk:Strobilomyces|talk]]) 20:41, 5 August 2026 (UTC)
* ''Sign here''
=== Example: Thing to fix (copy me!) ===
: What it would involve, and why it would be valuable.
* ''Sign here''
== Article editing ==
Here are some quick ideas about overall article editing, not specific to a given
=== Drag-and-drop moving of fragments, instead of having to click on the menu and the "move up/down" multiple times ===
: Drag-and-drop is a relatively familiar UX feature, and we could add an affordance for it to make it more discoverable at the same time as more usable.
* [[User:EatingCarBatteries|EatingCarBatteries]] ([[User talk:EatingCarBatteries|talk]]) 03:22, 31 July 2026 (UTC)
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 07:52, 31 July 2026 (UTC)
* [[User:Waldyrious|Waldyrious]] ([[User talk:Waldyrious|talk]]) 08:49, 1 August 2026 (UTC)
* [[User:Nux|Nux]] ([[User talk:Nux|talk]]) 11:42, 1 August 2026 (UTC) and also selecting and copying with ctrl+c/ctrl+v like in OOo/LibreOffice Calc
* [[User:Dungodung|Dungodung]] ([[User talk:Dungodung|talk]]) 15:30, 5 August 2026 (UTC)
* It's a very minor issue in the grand scheme of things, but would be nice. --[[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 16:04, 5 August 2026 (UTC)
* ''Sign here''
=== Fix the long article dual-column scroll problem where you can't see what you're editing ===
: This is particularly an issue on longer articles and smaller screens, but was mentioned as very irritating by some of you!
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 07:49, 31 July 2026 (UTC)
* It's a very minor issue in the grand scheme of things, but would be nice. --[[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 16:04, 5 August 2026 (UTC)
* [[User:Kambai Akau|Kambai Akau]] ([[User talk:Kambai Akau|talk]]) 01:03, 7 August 2026 (UTC)
* ''Sign here''
=== Support multiple sections, rather than just the lede ===
: Right now (despite some functions outputting <nowiki><h2></nowiki>s and the like), all articles are limited to just editing the lede section. We have mostly-built support for thematic sections, but this needs some polish. This would let you 'chunk up' articles, potentially editing only a section at a time for ease of use and / or collapsing those sections away to focus. We could also use this to allow external links limited to only the "external links" section (and references).
* [[User:EatingCarBatteries|EatingCarBatteries]] ([[User talk:EatingCarBatteries|talk]]) 07:12, 3 August 2026 (UTC)
=== Prompt editors with function calls based on statements in the Wikidata item ===
: Add a feature that checks the subject's Wikidata item for statements of the kind it knows about (e.g. "born 1850-01-20 in France") and match them to fragments, prompting you to add this. We'd need to work out how to link between fragment functions and Wikidata claims, and how to know whether the claims were already in the article, so this is quite complex to design and build, but would probably help a great deal.
* {{neutral|Comment}} e.g. {{P|569}}:{{P|1535}}={{Q|138748413}} w/ qual. {{P|528}}=[[Z37683]] [[User:YoshiRulz|YoshiRulz]] ([[User talk:YoshiRulz|talk]]) 00:57, 7 August 2026 (UTC)
* It would be nice for statements already present in Wikidata to be converted to form the sentences in the Abstract Wikipedia, instead of adding statements already present in Wikidata again in the A.W., as in [https://abstract.wikipedia.org/view/kcg/Q7251 Alan Turing]. [[User:Kambai Akau|Kambai Akau]] ([[User talk:Kambai Akau|talk]]) 01:02, 7 August 2026 (UTC)
* ''Sign here''
=== Prompt editors with media used on Wikipedia articles for the subject ===
: A more specialised option compared to fetching media suggestions alongside everything else from the Wikidata item would be to check for the main/first image on any existing Wikipedia articles and suggesting that if it's not already set.
* ''Sign here''
=== Fill in the parameters at copy/paste ===
: Fill in the parameters at copy/paste if the number and types of parameters match. That is especialy usefull when copying a new function from one language to an other. Currenltly every parameter has to be filled manually.
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 22:25, 5 August 2026 (UTC) (as proposer) I just created {{Z|Z38911}} and it took me very long to fill all 30! parameters correctly~
* ''Sign here''
=== Example: Thing to fix (copy me!) ===
: What it would involve, and why it would be valuable.
* ''Sign here''
== Any other ideas you might have ==
The sections above aren't everything. What else is something you'd like fixed?
=== Make it more obvious in the search whether there's an existing abstract article or not ===
: Right now we just add "– AW" to the end of search results when there's an existing article; if we make it clearer whether the link is a "read this" or "create this" link, folks won't be surprised when they click it.
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 15:58, 1 August 2026 (UTC)
* ''Sign here''
=== Auto-linking new Abstract Wikipedia articles to their Wikidata counterparts ===
: Right now people need to manually say that ''e.g.'' Q90 is the same as Q90, which takes time and isn't obvious. If we did this automatically as articles were created, the workflow would be easier to understand.
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 15:56, 1 August 2026 (UTC)
* It's a very minor issue in the grand scheme of things, but would be nice. --[[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 16:03, 5 August 2026 (UTC)
* ''Sign here''
=== Show labels of talk pages ===
: Show labels of Zid's talk pages on recent changes, watchlist and also on Categories like [[:Category:English natural language generation functions|this one]]. Idem for Qid's talk pages on Abstract Wikipedia
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 17:22, 1 August 2026 (UTC) (as proposer)
* It's a very minor issue in the grand scheme of things, but would be nice. --[[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 16:03, 5 August 2026 (UTC)
* ''Sign here''
=== Enlarge the field for labels ===
: Currently the field for labels can hold a maximum of 50 characters. See for example {{Z|Z32398}}. Frequently this is not enough and abbreviation have to be made. That makes the function names confusing and not consistent.
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 17:37, 1 August 2026 (UTC) (as proposer)
* [[User:EatingCarBatteries|EatingCarBatteries]] ([[User talk:EatingCarBatteries|talk]]) 20:59, 3 August 2026 (UTC)
* [[User:Strobilomyces|Strobilomyces]] ([[User talk:Strobilomyces|talk]]) 16:09, 5 August 2026 (UTC)
* ''Sign here''
=== Support wikitext in functions output ===
: Wikifunctions don't support wikitext. They can only output unparseable plain text or HTML. I know that the page [[:f:Wikifunctions:Embedded function calls]] says very clearly that wikitext will never be supported. But this is the number one thing that causes me not to be motivated to use functions, and I suspect that I'm not alone. So perhaps you could reconsider it.
* [[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 16:01, 5 August 2026 (UTC)
** {{ping|Amire80|p=,}} {{ping|HenkvD}} What would you do with the produced Wikitext? Copy it into an existing page on one of the sister projects? [[User:YoshiRulz|YoshiRulz]] ([[User talk:YoshiRulz|talk]]) 01:01, 7 August 2026 (UTC)
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 22:11, 5 August 2026 (UTC) Without wikitext the Abstract Wikipedia is not a real Wikipedia. Using wikitext code for bold, italic etc. Maybe also for Wikilinks.
* ''Sign here''
=== Completely change the UI of compositions ===
: I don't get compositions. A few people get them, but a lot of people don't. I mostly don't. When I try to read existing compositions, their deeply-nested hierarchy immediately confuses me, and I'm almost always afraid of editing anything. And I barely know how to start a new composition. The "clipboard" feature, which was added a few months ago, makes it a little bit less frustrating. But only a little bit; it doesn't solve the big issue. Creating and editing compositions is the only way to edit abstract articles, and it's very commonly needed on Wikifunctions, too, so if a lot of people have a hard time understanding how to do it, neither project will acquire a lot of editors. If you ask me, I'd do away with them completely and just use Python or JavaScript (or Lua!) code.
* [[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 16:01, 5 August 2026 (UTC)
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 22:18, 5 August 2026 (UTC) I don't propose to get rid of compositions, but make the default output more readable by automatically start a new function on a new line, and indent automatically. Also in read mode.
* Same. It's frustrating to have to click my mouse 10 times through a bunch of functions just to change an input value [[User:EatingCarBatteries|EatingCarBatteries]] ([[User talk:EatingCarBatteries|talk]]) 03:38, 6 August 2026 (UTC)
* ''Sign here''
=== Allow choice of implementation to be forced ===
: Where a function has multiple implementations, it would be helpful to be able to force the orchestrator to select a particular implementation for a particular run (or a particular session or a particular user). This would often be very helpful for debugging, or when an implementation appears to have a bug. I am not too sure how that could work - I propose that each user should be able to mark any implementation as always to be selected in their case (or perhaps as never to be selected). Perhaps only in the current session.
:It would even be useful to have a mode in a given session where the orchestrator always selects the first (or last) implementation for all functions - then one would at least know which implementation was going to be called!
* [[User:Strobilomyces|Strobilomyces]] ([[User talk:Strobilomyces|talk]]) 16:35, 5 August 2026 (UTC)
*:@[[User:Strobilomyces|Strobilomyces]]: The orchestrator will (currently) only ever chose the first connected implementation (for a language we support). Maybe we could make it clearer? For debugging, the idea is that you can do that from the implementation page whether or not it's connected, such as on [[Z15788]]. We could highlight that, perhaps? Can you give an example outside of debugging where you might want to allow multiple implementations to be connected but choose different implementations at run-time? I cannot suggest what we could do without understanding better the need, sorry! [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 17:30, 5 August 2026 (UTC)
*::Clarification: "First connected implementation" means the first one listed in the JSON version of the function (which is sometimes promoted or demoted by Wikilambda bot), rather than the first one displayed in the UI list, or the first one that was ever connected. Highlighting this implementation in the UI would be nice. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 04:15, 6 August 2026 (UTC)
*:::Yup, good point; we could definitely improve the UX here to indicate which is the "winning" implementation. [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 14:34, 6 August 2026 (UTC)
*::@[[User:Jdforrester (WMF)|Jdforrester (WMF)]] The ability to test a given implementation directly is very useful. But functions often call other functions and it makes debugging difficult if it is not possible to tell which implementation will be executed or has been executed at the lower level. If it currently always the same version, then that is good. I would like to know how to tell which version will be or has been executed. How do I see the JSON version of the subfunction? Do I have to use the API? [[User:Strobilomyces|Strobilomyces]] ([[User talk:Strobilomyces|talk]]) 13:27, 6 August 2026 (UTC)
*:::I find it by looking at the history and comparing diffs. Here's a diff showing that Wikilambda bot promoted the JS implementation to the top: https://www.wikifunctions.org/w/index.php?title=Z13521&diff=289160&oldid=232341 . --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 13:46, 6 August 2026 (UTC)
*::A particular case where the preferred implementation should not be used is when testing a recursive implementation. [[User:GrounderUK|GrounderUK]] ([[User talk:GrounderUK|talk]]) 18:04, 6 August 2026 (UTC)
*:You can run {{Z|Z35874}} to get the identifier of the currently preferred implementation for a specified function. You could also have [https://www.wikifunctions.org/view/en/Z37465?call=%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z37465%22%2C%22Z37465K1%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z35874%22%2C%22Z35874K1%22%3A%22Z10000%22%7D%2C%22Z37465K2%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z35874%22%2C%22Z35874K1%22%3A%22Z10000%22%7D%7D a hyperlink to the implementation].
*:When browsing, if you click on any of a function’s test cases, the implementations that are connected to the function are listed in the correct order in the Implementations box. This is also true when adding a new test case to a function.
*:Or we could [https://www.wikifunctions.org/view/en/Z801?call=%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z801%22%2C%22Z801K1%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z33470%22%2C%22Z33470K1%22%3A%22view+function%E2%80%99s+JSON%22%2C%22Z33470K2%22%3A%22a%22%2C%22Z33470K3%22%3A%7B%22Z1K1%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z883%22%2C%22Z883K1%22%3A%22Z6%22%2C%22Z883K2%22%3A%22Z1%22%7D%2C%22K1%22%3A%5B%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z882%22%2C%22Z882K1%22%3A%22Z6%22%2C%22Z882K2%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z881%22%2C%22Z881K1%22%3A%22Z6%22%7D%7D%2C%7B%22Z1K1%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z882%22%2C%22Z882K1%22%3A%22Z6%22%2C%22Z882K2%22%3A%22Z1%22%7D%2C%22K1%22%3A%22href%22%2C%22K2%22%3A%5B%22Z6%22%2C%22https%3A%2F%2Fwww.wikifunctions.org%2Fwiki%2F%22%2C%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z28231%22%2C%22Z28231K1%22%3A%22Z801%22%7D%2C%22%3Faction%3Draw%22%5D%7D%5D%7D%7D%7D turn this into a function], I suppose, or [https://www.wikifunctions.org/view/en/Z801?call=%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z801%22%2C%22Z801K1%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z811%22%2C%22Z811K1%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z803%22%2C%22Z803K1%22%3A%7B%22Z1K1%22%3A%22Z39%22%2C%22Z39K1%22%3A%22K1%22%7D%2C%22Z803K2%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z804%22%2C%22Z804K1%22%3A%5B%22Z39%22%2C%7B%22Z1K1%22%3A%22Z39%22%2C%22Z39K1%22%3A%22Z8K4%22%7D%5D%2C%22Z804K2%22%3A%22Z10000%22%7D%7D%7D%7D just this]. [[User:GrounderUK|GrounderUK]] ([[User talk:GrounderUK|talk]]) 17:51, 6 August 2026 (UTC)
* ''Sign here''
=== Allow Wikifunctions functions to be called from Python and Javascript ===
: As indicated in an earlier suggestion, it is not convenient to write complicated code in the form of compositions. I think far more code would be contributed if it could be done in Python or Javascript.
* [[User:Strobilomyces|Strobilomyces]] ([[User talk:Strobilomyces|talk]]) 16:44, 5 August 2026 (UTC)
* ''Sign here''
=== Example: Thing to fix (copy me!) ===
: What it would involve, and why it would be valuable.
* ''Sign here''
== Thank you! ==
It was great to speak to and hear from so many of you.
2ke0vtbg39okm1d6t5qd6owd7n7qb2n
297077
297076
2026-08-07T01:14:51Z
Kambai Akau
2092
/* Auto-linking new Abstract Wikipedia articles to their Wikidata counterparts */
297077
wikitext
text/x-wiki
{{seealso|WF:Feature petitions}}
Thank you to so many of you who came in-person and online to the workshop at Wikimania last week around creating Abstract Wikipedia articles.
__NEWSECTIONLINK__
Based on your comments there and things you ran into or mentioned, we've pulled together a quick ideas list of possible improvements (alongside our work on faster and better NLG support, working with communities to consider piloting Abstract Wikipedia on their wiki, and other major parts of the annual plan).
Please indicate which items you think we should work on soonest by signing your name (<nowiki>~~~~</nowiki>) below them. We'll probably work on many of these, but the count of "votes" and arguments will help guide us in which ones we prioritise.
== Individual fragment editing ==
These are some ideas about how we might make adding and editing individual fragments easier.
=== Only auto-match the Wikidata item to the subject of the article on the first item in a Function call, not all of them ===
: This should avoid the confusing step of suggested items saying "Cairo is the Cairo of Cairo", but instead would need you to specify the item references for the others. The heuristic of only matching the first item might be enough as a starting point for many calls. We probably still want to match all dates and languages, though.
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 07:50, 31 July 2026 (UTC)
* [[User:Kambai Akau|Kambai Akau]] ([[User talk:Kambai Akau|talk]]) 00:56, 7 August 2026 (UTC)
* ''Sign here''
=== Split out some of the '…' menu on each item so you can quickly switch to a manual item reference ===
: A big stumbling block for folks was switching from an auto-matched (argument key) item or a function call to a specific item reference. This would allow you to quickly switch to that, without having to notice and go through the menu of all the other options.
* ''Sign here''
=== Re-word the labels for the abstract argument keys to be more clear about what they are ===
: We label the keys as 'wikidata item reference', 'language', and 'date'; we should make it clearer that these are 'this article's subject', 'view language', and 'view date' respectively. This would help avoid confusion about what these keys are for, and when you don't want to use them.
* [[User:Waldyrious|Waldyrious]] ([[User talk:Waldyrious|talk]]) 08:48, 1 August 2026 (UTC)
*:{{Done}} As a first step; how does that work for you? [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 15:45, 5 August 2026 (UTC)
=== Add short description fields to Functions' arguments, to help people can understand what the inputs mean when they use them ===
: For Functions, we have labels, aliases, and short descriptions, but Functions' inputs just have a single label each, which can make it hard for people to know what to put where, especially if they have unusual or unfamiliar words. Add a short description field, maybe shown via a secondary accessor like a "[[File:Codex icon info color-notice.svg|20x20px]]" rather than all the time.
* ''Sign here''
* [[User:Nux|Nux]] ([[User talk:Nux|talk]]) 11:38, 1 August 2026 (UTC) (i) icons with more info might help, like e.g. what the author means by "Hypernym" [https://abstract.wikipedia.org/w/index.php?title=Abstract_Wikipedia:Useful_functions_for_article_composition&oldid=13847].
*:@[[User:Nux|Nux]]: Can you give some more detail for where that kind of interface shows up for you? Do you mean giving more context for labels of functions' inputs? [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 15:46, 5 August 2026 (UTC)
*::@[[User:Jdforrester (WMF)|Jdforrester (WMF)]] Yes, argument description. Like a description for function [https://www.wikifunctions.org/w/index.php?title=Z37921&action=edit&uselang=en]. Like in JavaDoc. [[User:Nux|Nux]] ([[User talk:Nux|talk]]) 19:58, 5 August 2026 (UTC)
*:::Aha, right. Is it OK if I split this out into its own section? That's a very different change from what this section was written up as, based on what I heard in Paris, and should have its own discussion. [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 20:06, 5 August 2026 (UTC)
*::::Sure. [[User:Nux|Nux]] ([[User talk:Nux|talk]]) 20:12, 5 August 2026 (UTC)
* ''Sign here''
=== Example: Thing to fix (copy me!) ===
: What it would involve, and why it would be valuable.
* ''Sign here''
== New/better kinds of fragment ==
Here are some ideas for different kinds of fragments that you could use in abstract articles.
=== Add support for pulling structured data from Commons files ''e.g.'' captions ===
: Right now you can put in image files themselves, but you can't fetch any data about them. This is particularly unhelpful as the Wikidata items still use the File: name rather than the MID; we'd need to add the ability to fetch meta-data from Commons to the back-end services, like we do from Wikidata.
* ''Sign here''
=== Add support for video/audio file inclusions ===
: You can only specify image files, not audio or video files which are more complex. If demand is high we could add this sooner rather than later, though it may be complex to align with the existing workflows.
* ''Sign here''
=== Add support for galleries of media file inclusions ===
: You can create multiple media file transclusions, but it's limited to a small number and you have to do all the work of creating the styles around it. We could give a first-level media file output, if this is strongly wanted.
* ''Sign here''
=== Add support for map inclusions ===
: We don't yet support maps, which might be wanted if folks are making articles about places a lot. Full support would be quite complicated.
* [[User:EatingCarBatteries|EatingCarBatteries]] ([[User talk:EatingCarBatteries|talk]]) 03:24, 31 July 2026 (UTC)
=== Add support for chart inclusions ===
: We don't yet support charts, which might be wanted if folks are making articles about numerical things a lot. Full support would be very complicated.
* ''Sign here''
=== Abstract source mock-ups and multilingual reviews ===
:We are approaching Abstract Wikipedia from the bottom up, with very simple examples. This may be the "Wiki Way", but for software it is very unconventional, and I think it is uncertain whether it can eventually work for more advanced text. The project will have failed unless natural text similar in complexity to current Wikipedia articles can be generated. I think nobody (except possibly [[user:mahir256|Mahir Morshed]]) understands what the abstract source for more complicated sentences would look like.
:Mahir Morshed has created a multilingual text generation system called Elemwala at https://elemwala.toolforge.org/ (see his introduction at https://www.wikifunctions.org/wiki/Wikifunctions:Status_updates/2024-10-17 and his session at Wikimania). This is linked to Abstract Wikipedia, and extremely relevant to it (since it is the only real current proposal for the abstract souce that I know), but it should be noted that Elemwala is only a proposal, not Abstract Wikipedia policy. The list of constructors defines the abstract source as it is at present. Also more information on how this abstract content can be constructed can be found at https://www.wikidata.org/wiki/User:Mahir256/language-generation, with various links and references.
:It is not clear to me whether the abstract source, consisting of functions of Wikidata items backed up by lexemes, can even work at all for a wide variety of languages. Rendering a text needs much information which is special to the target language, for instance there can be genders, grammatical cases, polite forms of address, etc. Example: The Eiffel Tower (Q243) usually needs a definite article when used in English, whereas Blackpool Tower (Q880905) does not. Where should this information for the English renderer be held? It cannot be in the abstract source, since the answer is special for English; some editors of the abstract source will speak languages which do not use articles. Well, I think that this type of item needs an English lexeme with a flag to indicate the article usage, and that would be a solution. Another example relates to the grammatical tenses, voices and moods of verbs. How will that be managed? I suppose that a verb tense indication must be given as a parameter in the abstract source, but how will the values of this parameter be related to all the possible tense/voice/mood verb forms in all the languages? There are an enormous number of such diverse features; how can we be sure that there is enough information in the abstract source to do the rendering in all cases?
:I think that there is an urgent need to create examples of complex text (such as real Wikipedia articles) in the proposed abstract source. Then testers who comprehend the abstract source format and also know a relevant language should interpret the source text and confirm whether they understand it and whether they have enough information to reconstruct the text in their own language (not by software but with their own mental processes). If so, that would give much-needed confidence that the Abstract Wikipedia scheme can actually work, and I think it would advance the project by making clearer the next needed steps.
* [[User:Strobilomyces|Strobilomyces]] ([[User talk:Strobilomyces|talk]]) 20:41, 5 August 2026 (UTC)
* ''Sign here''
=== Example: Thing to fix (copy me!) ===
: What it would involve, and why it would be valuable.
* ''Sign here''
== Article editing ==
Here are some quick ideas about overall article editing, not specific to a given
=== Drag-and-drop moving of fragments, instead of having to click on the menu and the "move up/down" multiple times ===
: Drag-and-drop is a relatively familiar UX feature, and we could add an affordance for it to make it more discoverable at the same time as more usable.
* [[User:EatingCarBatteries|EatingCarBatteries]] ([[User talk:EatingCarBatteries|talk]]) 03:22, 31 July 2026 (UTC)
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 07:52, 31 July 2026 (UTC)
* [[User:Waldyrious|Waldyrious]] ([[User talk:Waldyrious|talk]]) 08:49, 1 August 2026 (UTC)
* [[User:Nux|Nux]] ([[User talk:Nux|talk]]) 11:42, 1 August 2026 (UTC) and also selecting and copying with ctrl+c/ctrl+v like in OOo/LibreOffice Calc
* [[User:Dungodung|Dungodung]] ([[User talk:Dungodung|talk]]) 15:30, 5 August 2026 (UTC)
* It's a very minor issue in the grand scheme of things, but would be nice. --[[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 16:04, 5 August 2026 (UTC)
* ''Sign here''
=== Fix the long article dual-column scroll problem where you can't see what you're editing ===
: This is particularly an issue on longer articles and smaller screens, but was mentioned as very irritating by some of you!
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 07:49, 31 July 2026 (UTC)
* It's a very minor issue in the grand scheme of things, but would be nice. --[[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 16:04, 5 August 2026 (UTC)
* [[User:Kambai Akau|Kambai Akau]] ([[User talk:Kambai Akau|talk]]) 01:03, 7 August 2026 (UTC)
* ''Sign here''
=== Support multiple sections, rather than just the lede ===
: Right now (despite some functions outputting <nowiki><h2></nowiki>s and the like), all articles are limited to just editing the lede section. We have mostly-built support for thematic sections, but this needs some polish. This would let you 'chunk up' articles, potentially editing only a section at a time for ease of use and / or collapsing those sections away to focus. We could also use this to allow external links limited to only the "external links" section (and references).
* [[User:EatingCarBatteries|EatingCarBatteries]] ([[User talk:EatingCarBatteries|talk]]) 07:12, 3 August 2026 (UTC)
=== Prompt editors with function calls based on statements in the Wikidata item ===
: Add a feature that checks the subject's Wikidata item for statements of the kind it knows about (e.g. "born 1850-01-20 in France") and match them to fragments, prompting you to add this. We'd need to work out how to link between fragment functions and Wikidata claims, and how to know whether the claims were already in the article, so this is quite complex to design and build, but would probably help a great deal.
* {{neutral|Comment}} e.g. {{P|569}}:{{P|1535}}={{Q|138748413}} w/ qual. {{P|528}}=[[Z37683]] [[User:YoshiRulz|YoshiRulz]] ([[User talk:YoshiRulz|talk]]) 00:57, 7 August 2026 (UTC)
* It would be nice for statements already present in Wikidata to be converted to form the sentences in the Abstract Wikipedia, instead of adding statements already present in Wikidata again in the A.W., as in [https://abstract.wikipedia.org/view/kcg/Q7251 Alan Turing]. [[User:Kambai Akau|Kambai Akau]] ([[User talk:Kambai Akau|talk]]) 01:02, 7 August 2026 (UTC)
* ''Sign here''
=== Prompt editors with media used on Wikipedia articles for the subject ===
: A more specialised option compared to fetching media suggestions alongside everything else from the Wikidata item would be to check for the main/first image on any existing Wikipedia articles and suggesting that if it's not already set.
* ''Sign here''
=== Fill in the parameters at copy/paste ===
: Fill in the parameters at copy/paste if the number and types of parameters match. That is especialy usefull when copying a new function from one language to an other. Currenltly every parameter has to be filled manually.
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 22:25, 5 August 2026 (UTC) (as proposer) I just created {{Z|Z38911}} and it took me very long to fill all 30! parameters correctly~
* ''Sign here''
=== Example: Thing to fix (copy me!) ===
: What it would involve, and why it would be valuable.
* ''Sign here''
== Any other ideas you might have ==
The sections above aren't everything. What else is something you'd like fixed?
=== Make it more obvious in the search whether there's an existing abstract article or not ===
: Right now we just add "– AW" to the end of search results when there's an existing article; if we make it clearer whether the link is a "read this" or "create this" link, folks won't be surprised when they click it.
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 15:58, 1 August 2026 (UTC)
* ''Sign here''
=== Auto-linking new Abstract Wikipedia articles to their Wikidata counterparts ===
: Right now people need to manually say that ''e.g.'' Q90 is the same as Q90, which takes time and isn't obvious. If we did this automatically as articles were created, the workflow would be easier to understand.
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 15:56, 1 August 2026 (UTC)
* It's a very minor issue in the grand scheme of things, but would be nice. --[[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 16:03, 5 August 2026 (UTC)
* [[User:Kambai Akau|Kambai Akau]] ([[User talk:Kambai Akau|talk]]) 01:14, 7 August 2026 (UTC)
* ''Sign here''
=== Show labels of talk pages ===
: Show labels of Zid's talk pages on recent changes, watchlist and also on Categories like [[:Category:English natural language generation functions|this one]]. Idem for Qid's talk pages on Abstract Wikipedia
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 17:22, 1 August 2026 (UTC) (as proposer)
* It's a very minor issue in the grand scheme of things, but would be nice. --[[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 16:03, 5 August 2026 (UTC)
* ''Sign here''
=== Enlarge the field for labels ===
: Currently the field for labels can hold a maximum of 50 characters. See for example {{Z|Z32398}}. Frequently this is not enough and abbreviation have to be made. That makes the function names confusing and not consistent.
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 17:37, 1 August 2026 (UTC) (as proposer)
* [[User:EatingCarBatteries|EatingCarBatteries]] ([[User talk:EatingCarBatteries|talk]]) 20:59, 3 August 2026 (UTC)
* [[User:Strobilomyces|Strobilomyces]] ([[User talk:Strobilomyces|talk]]) 16:09, 5 August 2026 (UTC)
* ''Sign here''
=== Support wikitext in functions output ===
: Wikifunctions don't support wikitext. They can only output unparseable plain text or HTML. I know that the page [[:f:Wikifunctions:Embedded function calls]] says very clearly that wikitext will never be supported. But this is the number one thing that causes me not to be motivated to use functions, and I suspect that I'm not alone. So perhaps you could reconsider it.
* [[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 16:01, 5 August 2026 (UTC)
** {{ping|Amire80|p=,}} {{ping|HenkvD}} What would you do with the produced Wikitext? Copy it into an existing page on one of the sister projects? [[User:YoshiRulz|YoshiRulz]] ([[User talk:YoshiRulz|talk]]) 01:01, 7 August 2026 (UTC)
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 22:11, 5 August 2026 (UTC) Without wikitext the Abstract Wikipedia is not a real Wikipedia. Using wikitext code for bold, italic etc. Maybe also for Wikilinks.
* ''Sign here''
=== Completely change the UI of compositions ===
: I don't get compositions. A few people get them, but a lot of people don't. I mostly don't. When I try to read existing compositions, their deeply-nested hierarchy immediately confuses me, and I'm almost always afraid of editing anything. And I barely know how to start a new composition. The "clipboard" feature, which was added a few months ago, makes it a little bit less frustrating. But only a little bit; it doesn't solve the big issue. Creating and editing compositions is the only way to edit abstract articles, and it's very commonly needed on Wikifunctions, too, so if a lot of people have a hard time understanding how to do it, neither project will acquire a lot of editors. If you ask me, I'd do away with them completely and just use Python or JavaScript (or Lua!) code.
* [[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 16:01, 5 August 2026 (UTC)
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 22:18, 5 August 2026 (UTC) I don't propose to get rid of compositions, but make the default output more readable by automatically start a new function on a new line, and indent automatically. Also in read mode.
* Same. It's frustrating to have to click my mouse 10 times through a bunch of functions just to change an input value [[User:EatingCarBatteries|EatingCarBatteries]] ([[User talk:EatingCarBatteries|talk]]) 03:38, 6 August 2026 (UTC)
* ''Sign here''
=== Allow choice of implementation to be forced ===
: Where a function has multiple implementations, it would be helpful to be able to force the orchestrator to select a particular implementation for a particular run (or a particular session or a particular user). This would often be very helpful for debugging, or when an implementation appears to have a bug. I am not too sure how that could work - I propose that each user should be able to mark any implementation as always to be selected in their case (or perhaps as never to be selected). Perhaps only in the current session.
:It would even be useful to have a mode in a given session where the orchestrator always selects the first (or last) implementation for all functions - then one would at least know which implementation was going to be called!
* [[User:Strobilomyces|Strobilomyces]] ([[User talk:Strobilomyces|talk]]) 16:35, 5 August 2026 (UTC)
*:@[[User:Strobilomyces|Strobilomyces]]: The orchestrator will (currently) only ever chose the first connected implementation (for a language we support). Maybe we could make it clearer? For debugging, the idea is that you can do that from the implementation page whether or not it's connected, such as on [[Z15788]]. We could highlight that, perhaps? Can you give an example outside of debugging where you might want to allow multiple implementations to be connected but choose different implementations at run-time? I cannot suggest what we could do without understanding better the need, sorry! [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 17:30, 5 August 2026 (UTC)
*::Clarification: "First connected implementation" means the first one listed in the JSON version of the function (which is sometimes promoted or demoted by Wikilambda bot), rather than the first one displayed in the UI list, or the first one that was ever connected. Highlighting this implementation in the UI would be nice. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 04:15, 6 August 2026 (UTC)
*:::Yup, good point; we could definitely improve the UX here to indicate which is the "winning" implementation. [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 14:34, 6 August 2026 (UTC)
*::@[[User:Jdforrester (WMF)|Jdforrester (WMF)]] The ability to test a given implementation directly is very useful. But functions often call other functions and it makes debugging difficult if it is not possible to tell which implementation will be executed or has been executed at the lower level. If it currently always the same version, then that is good. I would like to know how to tell which version will be or has been executed. How do I see the JSON version of the subfunction? Do I have to use the API? [[User:Strobilomyces|Strobilomyces]] ([[User talk:Strobilomyces|talk]]) 13:27, 6 August 2026 (UTC)
*:::I find it by looking at the history and comparing diffs. Here's a diff showing that Wikilambda bot promoted the JS implementation to the top: https://www.wikifunctions.org/w/index.php?title=Z13521&diff=289160&oldid=232341 . --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 13:46, 6 August 2026 (UTC)
*::A particular case where the preferred implementation should not be used is when testing a recursive implementation. [[User:GrounderUK|GrounderUK]] ([[User talk:GrounderUK|talk]]) 18:04, 6 August 2026 (UTC)
*:You can run {{Z|Z35874}} to get the identifier of the currently preferred implementation for a specified function. You could also have [https://www.wikifunctions.org/view/en/Z37465?call=%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z37465%22%2C%22Z37465K1%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z35874%22%2C%22Z35874K1%22%3A%22Z10000%22%7D%2C%22Z37465K2%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z35874%22%2C%22Z35874K1%22%3A%22Z10000%22%7D%7D a hyperlink to the implementation].
*:When browsing, if you click on any of a function’s test cases, the implementations that are connected to the function are listed in the correct order in the Implementations box. This is also true when adding a new test case to a function.
*:Or we could [https://www.wikifunctions.org/view/en/Z801?call=%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z801%22%2C%22Z801K1%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z33470%22%2C%22Z33470K1%22%3A%22view+function%E2%80%99s+JSON%22%2C%22Z33470K2%22%3A%22a%22%2C%22Z33470K3%22%3A%7B%22Z1K1%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z883%22%2C%22Z883K1%22%3A%22Z6%22%2C%22Z883K2%22%3A%22Z1%22%7D%2C%22K1%22%3A%5B%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z882%22%2C%22Z882K1%22%3A%22Z6%22%2C%22Z882K2%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z881%22%2C%22Z881K1%22%3A%22Z6%22%7D%7D%2C%7B%22Z1K1%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z882%22%2C%22Z882K1%22%3A%22Z6%22%2C%22Z882K2%22%3A%22Z1%22%7D%2C%22K1%22%3A%22href%22%2C%22K2%22%3A%5B%22Z6%22%2C%22https%3A%2F%2Fwww.wikifunctions.org%2Fwiki%2F%22%2C%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z28231%22%2C%22Z28231K1%22%3A%22Z801%22%7D%2C%22%3Faction%3Draw%22%5D%7D%5D%7D%7D%7D turn this into a function], I suppose, or [https://www.wikifunctions.org/view/en/Z801?call=%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z801%22%2C%22Z801K1%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z811%22%2C%22Z811K1%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z803%22%2C%22Z803K1%22%3A%7B%22Z1K1%22%3A%22Z39%22%2C%22Z39K1%22%3A%22K1%22%7D%2C%22Z803K2%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z804%22%2C%22Z804K1%22%3A%5B%22Z39%22%2C%7B%22Z1K1%22%3A%22Z39%22%2C%22Z39K1%22%3A%22Z8K4%22%7D%5D%2C%22Z804K2%22%3A%22Z10000%22%7D%7D%7D%7D just this]. [[User:GrounderUK|GrounderUK]] ([[User talk:GrounderUK|talk]]) 17:51, 6 August 2026 (UTC)
* ''Sign here''
=== Allow Wikifunctions functions to be called from Python and Javascript ===
: As indicated in an earlier suggestion, it is not convenient to write complicated code in the form of compositions. I think far more code would be contributed if it could be done in Python or Javascript.
* [[User:Strobilomyces|Strobilomyces]] ([[User talk:Strobilomyces|talk]]) 16:44, 5 August 2026 (UTC)
* ''Sign here''
=== Example: Thing to fix (copy me!) ===
: What it would involve, and why it would be valuable.
* ''Sign here''
== Thank you! ==
It was great to speak to and hear from so many of you.
ssab65n5mfi6r0neciw54phtjk28pdb
297078
297077
2026-08-07T01:15:25Z
Kambai Akau
2092
/* Make it more obvious in the search whether there's an existing abstract article or not */
297078
wikitext
text/x-wiki
{{seealso|WF:Feature petitions}}
Thank you to so many of you who came in-person and online to the workshop at Wikimania last week around creating Abstract Wikipedia articles.
__NEWSECTIONLINK__
Based on your comments there and things you ran into or mentioned, we've pulled together a quick ideas list of possible improvements (alongside our work on faster and better NLG support, working with communities to consider piloting Abstract Wikipedia on their wiki, and other major parts of the annual plan).
Please indicate which items you think we should work on soonest by signing your name (<nowiki>~~~~</nowiki>) below them. We'll probably work on many of these, but the count of "votes" and arguments will help guide us in which ones we prioritise.
== Individual fragment editing ==
These are some ideas about how we might make adding and editing individual fragments easier.
=== Only auto-match the Wikidata item to the subject of the article on the first item in a Function call, not all of them ===
: This should avoid the confusing step of suggested items saying "Cairo is the Cairo of Cairo", but instead would need you to specify the item references for the others. The heuristic of only matching the first item might be enough as a starting point for many calls. We probably still want to match all dates and languages, though.
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 07:50, 31 July 2026 (UTC)
* [[User:Kambai Akau|Kambai Akau]] ([[User talk:Kambai Akau|talk]]) 00:56, 7 August 2026 (UTC)
* ''Sign here''
=== Split out some of the '…' menu on each item so you can quickly switch to a manual item reference ===
: A big stumbling block for folks was switching from an auto-matched (argument key) item or a function call to a specific item reference. This would allow you to quickly switch to that, without having to notice and go through the menu of all the other options.
* ''Sign here''
=== Re-word the labels for the abstract argument keys to be more clear about what they are ===
: We label the keys as 'wikidata item reference', 'language', and 'date'; we should make it clearer that these are 'this article's subject', 'view language', and 'view date' respectively. This would help avoid confusion about what these keys are for, and when you don't want to use them.
* [[User:Waldyrious|Waldyrious]] ([[User talk:Waldyrious|talk]]) 08:48, 1 August 2026 (UTC)
*:{{Done}} As a first step; how does that work for you? [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 15:45, 5 August 2026 (UTC)
=== Add short description fields to Functions' arguments, to help people can understand what the inputs mean when they use them ===
: For Functions, we have labels, aliases, and short descriptions, but Functions' inputs just have a single label each, which can make it hard for people to know what to put where, especially if they have unusual or unfamiliar words. Add a short description field, maybe shown via a secondary accessor like a "[[File:Codex icon info color-notice.svg|20x20px]]" rather than all the time.
* ''Sign here''
* [[User:Nux|Nux]] ([[User talk:Nux|talk]]) 11:38, 1 August 2026 (UTC) (i) icons with more info might help, like e.g. what the author means by "Hypernym" [https://abstract.wikipedia.org/w/index.php?title=Abstract_Wikipedia:Useful_functions_for_article_composition&oldid=13847].
*:@[[User:Nux|Nux]]: Can you give some more detail for where that kind of interface shows up for you? Do you mean giving more context for labels of functions' inputs? [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 15:46, 5 August 2026 (UTC)
*::@[[User:Jdforrester (WMF)|Jdforrester (WMF)]] Yes, argument description. Like a description for function [https://www.wikifunctions.org/w/index.php?title=Z37921&action=edit&uselang=en]. Like in JavaDoc. [[User:Nux|Nux]] ([[User talk:Nux|talk]]) 19:58, 5 August 2026 (UTC)
*:::Aha, right. Is it OK if I split this out into its own section? That's a very different change from what this section was written up as, based on what I heard in Paris, and should have its own discussion. [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 20:06, 5 August 2026 (UTC)
*::::Sure. [[User:Nux|Nux]] ([[User talk:Nux|talk]]) 20:12, 5 August 2026 (UTC)
* ''Sign here''
=== Example: Thing to fix (copy me!) ===
: What it would involve, and why it would be valuable.
* ''Sign here''
== New/better kinds of fragment ==
Here are some ideas for different kinds of fragments that you could use in abstract articles.
=== Add support for pulling structured data from Commons files ''e.g.'' captions ===
: Right now you can put in image files themselves, but you can't fetch any data about them. This is particularly unhelpful as the Wikidata items still use the File: name rather than the MID; we'd need to add the ability to fetch meta-data from Commons to the back-end services, like we do from Wikidata.
* ''Sign here''
=== Add support for video/audio file inclusions ===
: You can only specify image files, not audio or video files which are more complex. If demand is high we could add this sooner rather than later, though it may be complex to align with the existing workflows.
* ''Sign here''
=== Add support for galleries of media file inclusions ===
: You can create multiple media file transclusions, but it's limited to a small number and you have to do all the work of creating the styles around it. We could give a first-level media file output, if this is strongly wanted.
* ''Sign here''
=== Add support for map inclusions ===
: We don't yet support maps, which might be wanted if folks are making articles about places a lot. Full support would be quite complicated.
* [[User:EatingCarBatteries|EatingCarBatteries]] ([[User talk:EatingCarBatteries|talk]]) 03:24, 31 July 2026 (UTC)
=== Add support for chart inclusions ===
: We don't yet support charts, which might be wanted if folks are making articles about numerical things a lot. Full support would be very complicated.
* ''Sign here''
=== Abstract source mock-ups and multilingual reviews ===
:We are approaching Abstract Wikipedia from the bottom up, with very simple examples. This may be the "Wiki Way", but for software it is very unconventional, and I think it is uncertain whether it can eventually work for more advanced text. The project will have failed unless natural text similar in complexity to current Wikipedia articles can be generated. I think nobody (except possibly [[user:mahir256|Mahir Morshed]]) understands what the abstract source for more complicated sentences would look like.
:Mahir Morshed has created a multilingual text generation system called Elemwala at https://elemwala.toolforge.org/ (see his introduction at https://www.wikifunctions.org/wiki/Wikifunctions:Status_updates/2024-10-17 and his session at Wikimania). This is linked to Abstract Wikipedia, and extremely relevant to it (since it is the only real current proposal for the abstract souce that I know), but it should be noted that Elemwala is only a proposal, not Abstract Wikipedia policy. The list of constructors defines the abstract source as it is at present. Also more information on how this abstract content can be constructed can be found at https://www.wikidata.org/wiki/User:Mahir256/language-generation, with various links and references.
:It is not clear to me whether the abstract source, consisting of functions of Wikidata items backed up by lexemes, can even work at all for a wide variety of languages. Rendering a text needs much information which is special to the target language, for instance there can be genders, grammatical cases, polite forms of address, etc. Example: The Eiffel Tower (Q243) usually needs a definite article when used in English, whereas Blackpool Tower (Q880905) does not. Where should this information for the English renderer be held? It cannot be in the abstract source, since the answer is special for English; some editors of the abstract source will speak languages which do not use articles. Well, I think that this type of item needs an English lexeme with a flag to indicate the article usage, and that would be a solution. Another example relates to the grammatical tenses, voices and moods of verbs. How will that be managed? I suppose that a verb tense indication must be given as a parameter in the abstract source, but how will the values of this parameter be related to all the possible tense/voice/mood verb forms in all the languages? There are an enormous number of such diverse features; how can we be sure that there is enough information in the abstract source to do the rendering in all cases?
:I think that there is an urgent need to create examples of complex text (such as real Wikipedia articles) in the proposed abstract source. Then testers who comprehend the abstract source format and also know a relevant language should interpret the source text and confirm whether they understand it and whether they have enough information to reconstruct the text in their own language (not by software but with their own mental processes). If so, that would give much-needed confidence that the Abstract Wikipedia scheme can actually work, and I think it would advance the project by making clearer the next needed steps.
* [[User:Strobilomyces|Strobilomyces]] ([[User talk:Strobilomyces|talk]]) 20:41, 5 August 2026 (UTC)
* ''Sign here''
=== Example: Thing to fix (copy me!) ===
: What it would involve, and why it would be valuable.
* ''Sign here''
== Article editing ==
Here are some quick ideas about overall article editing, not specific to a given
=== Drag-and-drop moving of fragments, instead of having to click on the menu and the "move up/down" multiple times ===
: Drag-and-drop is a relatively familiar UX feature, and we could add an affordance for it to make it more discoverable at the same time as more usable.
* [[User:EatingCarBatteries|EatingCarBatteries]] ([[User talk:EatingCarBatteries|talk]]) 03:22, 31 July 2026 (UTC)
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 07:52, 31 July 2026 (UTC)
* [[User:Waldyrious|Waldyrious]] ([[User talk:Waldyrious|talk]]) 08:49, 1 August 2026 (UTC)
* [[User:Nux|Nux]] ([[User talk:Nux|talk]]) 11:42, 1 August 2026 (UTC) and also selecting and copying with ctrl+c/ctrl+v like in OOo/LibreOffice Calc
* [[User:Dungodung|Dungodung]] ([[User talk:Dungodung|talk]]) 15:30, 5 August 2026 (UTC)
* It's a very minor issue in the grand scheme of things, but would be nice. --[[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 16:04, 5 August 2026 (UTC)
* ''Sign here''
=== Fix the long article dual-column scroll problem where you can't see what you're editing ===
: This is particularly an issue on longer articles and smaller screens, but was mentioned as very irritating by some of you!
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 07:49, 31 July 2026 (UTC)
* It's a very minor issue in the grand scheme of things, but would be nice. --[[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 16:04, 5 August 2026 (UTC)
* [[User:Kambai Akau|Kambai Akau]] ([[User talk:Kambai Akau|talk]]) 01:03, 7 August 2026 (UTC)
* ''Sign here''
=== Support multiple sections, rather than just the lede ===
: Right now (despite some functions outputting <nowiki><h2></nowiki>s and the like), all articles are limited to just editing the lede section. We have mostly-built support for thematic sections, but this needs some polish. This would let you 'chunk up' articles, potentially editing only a section at a time for ease of use and / or collapsing those sections away to focus. We could also use this to allow external links limited to only the "external links" section (and references).
* [[User:EatingCarBatteries|EatingCarBatteries]] ([[User talk:EatingCarBatteries|talk]]) 07:12, 3 August 2026 (UTC)
=== Prompt editors with function calls based on statements in the Wikidata item ===
: Add a feature that checks the subject's Wikidata item for statements of the kind it knows about (e.g. "born 1850-01-20 in France") and match them to fragments, prompting you to add this. We'd need to work out how to link between fragment functions and Wikidata claims, and how to know whether the claims were already in the article, so this is quite complex to design and build, but would probably help a great deal.
* {{neutral|Comment}} e.g. {{P|569}}:{{P|1535}}={{Q|138748413}} w/ qual. {{P|528}}=[[Z37683]] [[User:YoshiRulz|YoshiRulz]] ([[User talk:YoshiRulz|talk]]) 00:57, 7 August 2026 (UTC)
* It would be nice for statements already present in Wikidata to be converted to form the sentences in the Abstract Wikipedia, instead of adding statements already present in Wikidata again in the A.W., as in [https://abstract.wikipedia.org/view/kcg/Q7251 Alan Turing]. [[User:Kambai Akau|Kambai Akau]] ([[User talk:Kambai Akau|talk]]) 01:02, 7 August 2026 (UTC)
* ''Sign here''
=== Prompt editors with media used on Wikipedia articles for the subject ===
: A more specialised option compared to fetching media suggestions alongside everything else from the Wikidata item would be to check for the main/first image on any existing Wikipedia articles and suggesting that if it's not already set.
* ''Sign here''
=== Fill in the parameters at copy/paste ===
: Fill in the parameters at copy/paste if the number and types of parameters match. That is especialy usefull when copying a new function from one language to an other. Currenltly every parameter has to be filled manually.
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 22:25, 5 August 2026 (UTC) (as proposer) I just created {{Z|Z38911}} and it took me very long to fill all 30! parameters correctly~
* ''Sign here''
=== Example: Thing to fix (copy me!) ===
: What it would involve, and why it would be valuable.
* ''Sign here''
== Any other ideas you might have ==
The sections above aren't everything. What else is something you'd like fixed?
=== Make it more obvious in the search whether there's an existing abstract article or not ===
: Right now we just add "– AW" to the end of search results when there's an existing article; if we make it clearer whether the link is a "read this" or "create this" link, folks won't be surprised when they click it.
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 15:58, 1 August 2026 (UTC)
* [[User:Kambai Akau|Kambai Akau]] ([[User talk:Kambai Akau|talk]]) 01:15, 7 August 2026 (UTC)
* ''Sign here''
=== Auto-linking new Abstract Wikipedia articles to their Wikidata counterparts ===
: Right now people need to manually say that ''e.g.'' Q90 is the same as Q90, which takes time and isn't obvious. If we did this automatically as articles were created, the workflow would be easier to understand.
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 15:56, 1 August 2026 (UTC)
* It's a very minor issue in the grand scheme of things, but would be nice. --[[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 16:03, 5 August 2026 (UTC)
* [[User:Kambai Akau|Kambai Akau]] ([[User talk:Kambai Akau|talk]]) 01:14, 7 August 2026 (UTC)
* ''Sign here''
=== Show labels of talk pages ===
: Show labels of Zid's talk pages on recent changes, watchlist and also on Categories like [[:Category:English natural language generation functions|this one]]. Idem for Qid's talk pages on Abstract Wikipedia
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 17:22, 1 August 2026 (UTC) (as proposer)
* It's a very minor issue in the grand scheme of things, but would be nice. --[[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 16:03, 5 August 2026 (UTC)
* ''Sign here''
=== Enlarge the field for labels ===
: Currently the field for labels can hold a maximum of 50 characters. See for example {{Z|Z32398}}. Frequently this is not enough and abbreviation have to be made. That makes the function names confusing and not consistent.
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 17:37, 1 August 2026 (UTC) (as proposer)
* [[User:EatingCarBatteries|EatingCarBatteries]] ([[User talk:EatingCarBatteries|talk]]) 20:59, 3 August 2026 (UTC)
* [[User:Strobilomyces|Strobilomyces]] ([[User talk:Strobilomyces|talk]]) 16:09, 5 August 2026 (UTC)
* ''Sign here''
=== Support wikitext in functions output ===
: Wikifunctions don't support wikitext. They can only output unparseable plain text or HTML. I know that the page [[:f:Wikifunctions:Embedded function calls]] says very clearly that wikitext will never be supported. But this is the number one thing that causes me not to be motivated to use functions, and I suspect that I'm not alone. So perhaps you could reconsider it.
* [[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 16:01, 5 August 2026 (UTC)
** {{ping|Amire80|p=,}} {{ping|HenkvD}} What would you do with the produced Wikitext? Copy it into an existing page on one of the sister projects? [[User:YoshiRulz|YoshiRulz]] ([[User talk:YoshiRulz|talk]]) 01:01, 7 August 2026 (UTC)
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 22:11, 5 August 2026 (UTC) Without wikitext the Abstract Wikipedia is not a real Wikipedia. Using wikitext code for bold, italic etc. Maybe also for Wikilinks.
* ''Sign here''
=== Completely change the UI of compositions ===
: I don't get compositions. A few people get them, but a lot of people don't. I mostly don't. When I try to read existing compositions, their deeply-nested hierarchy immediately confuses me, and I'm almost always afraid of editing anything. And I barely know how to start a new composition. The "clipboard" feature, which was added a few months ago, makes it a little bit less frustrating. But only a little bit; it doesn't solve the big issue. Creating and editing compositions is the only way to edit abstract articles, and it's very commonly needed on Wikifunctions, too, so if a lot of people have a hard time understanding how to do it, neither project will acquire a lot of editors. If you ask me, I'd do away with them completely and just use Python or JavaScript (or Lua!) code.
* [[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 16:01, 5 August 2026 (UTC)
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 22:18, 5 August 2026 (UTC) I don't propose to get rid of compositions, but make the default output more readable by automatically start a new function on a new line, and indent automatically. Also in read mode.
* Same. It's frustrating to have to click my mouse 10 times through a bunch of functions just to change an input value [[User:EatingCarBatteries|EatingCarBatteries]] ([[User talk:EatingCarBatteries|talk]]) 03:38, 6 August 2026 (UTC)
* ''Sign here''
=== Allow choice of implementation to be forced ===
: Where a function has multiple implementations, it would be helpful to be able to force the orchestrator to select a particular implementation for a particular run (or a particular session or a particular user). This would often be very helpful for debugging, or when an implementation appears to have a bug. I am not too sure how that could work - I propose that each user should be able to mark any implementation as always to be selected in their case (or perhaps as never to be selected). Perhaps only in the current session.
:It would even be useful to have a mode in a given session where the orchestrator always selects the first (or last) implementation for all functions - then one would at least know which implementation was going to be called!
* [[User:Strobilomyces|Strobilomyces]] ([[User talk:Strobilomyces|talk]]) 16:35, 5 August 2026 (UTC)
*:@[[User:Strobilomyces|Strobilomyces]]: The orchestrator will (currently) only ever chose the first connected implementation (for a language we support). Maybe we could make it clearer? For debugging, the idea is that you can do that from the implementation page whether or not it's connected, such as on [[Z15788]]. We could highlight that, perhaps? Can you give an example outside of debugging where you might want to allow multiple implementations to be connected but choose different implementations at run-time? I cannot suggest what we could do without understanding better the need, sorry! [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 17:30, 5 August 2026 (UTC)
*::Clarification: "First connected implementation" means the first one listed in the JSON version of the function (which is sometimes promoted or demoted by Wikilambda bot), rather than the first one displayed in the UI list, or the first one that was ever connected. Highlighting this implementation in the UI would be nice. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 04:15, 6 August 2026 (UTC)
*:::Yup, good point; we could definitely improve the UX here to indicate which is the "winning" implementation. [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 14:34, 6 August 2026 (UTC)
*::@[[User:Jdforrester (WMF)|Jdforrester (WMF)]] The ability to test a given implementation directly is very useful. But functions often call other functions and it makes debugging difficult if it is not possible to tell which implementation will be executed or has been executed at the lower level. If it currently always the same version, then that is good. I would like to know how to tell which version will be or has been executed. How do I see the JSON version of the subfunction? Do I have to use the API? [[User:Strobilomyces|Strobilomyces]] ([[User talk:Strobilomyces|talk]]) 13:27, 6 August 2026 (UTC)
*:::I find it by looking at the history and comparing diffs. Here's a diff showing that Wikilambda bot promoted the JS implementation to the top: https://www.wikifunctions.org/w/index.php?title=Z13521&diff=289160&oldid=232341 . --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 13:46, 6 August 2026 (UTC)
*::A particular case where the preferred implementation should not be used is when testing a recursive implementation. [[User:GrounderUK|GrounderUK]] ([[User talk:GrounderUK|talk]]) 18:04, 6 August 2026 (UTC)
*:You can run {{Z|Z35874}} to get the identifier of the currently preferred implementation for a specified function. You could also have [https://www.wikifunctions.org/view/en/Z37465?call=%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z37465%22%2C%22Z37465K1%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z35874%22%2C%22Z35874K1%22%3A%22Z10000%22%7D%2C%22Z37465K2%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z35874%22%2C%22Z35874K1%22%3A%22Z10000%22%7D%7D a hyperlink to the implementation].
*:When browsing, if you click on any of a function’s test cases, the implementations that are connected to the function are listed in the correct order in the Implementations box. This is also true when adding a new test case to a function.
*:Or we could [https://www.wikifunctions.org/view/en/Z801?call=%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z801%22%2C%22Z801K1%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z33470%22%2C%22Z33470K1%22%3A%22view+function%E2%80%99s+JSON%22%2C%22Z33470K2%22%3A%22a%22%2C%22Z33470K3%22%3A%7B%22Z1K1%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z883%22%2C%22Z883K1%22%3A%22Z6%22%2C%22Z883K2%22%3A%22Z1%22%7D%2C%22K1%22%3A%5B%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z882%22%2C%22Z882K1%22%3A%22Z6%22%2C%22Z882K2%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z881%22%2C%22Z881K1%22%3A%22Z6%22%7D%7D%2C%7B%22Z1K1%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z882%22%2C%22Z882K1%22%3A%22Z6%22%2C%22Z882K2%22%3A%22Z1%22%7D%2C%22K1%22%3A%22href%22%2C%22K2%22%3A%5B%22Z6%22%2C%22https%3A%2F%2Fwww.wikifunctions.org%2Fwiki%2F%22%2C%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z28231%22%2C%22Z28231K1%22%3A%22Z801%22%7D%2C%22%3Faction%3Draw%22%5D%7D%5D%7D%7D%7D turn this into a function], I suppose, or [https://www.wikifunctions.org/view/en/Z801?call=%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z801%22%2C%22Z801K1%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z811%22%2C%22Z811K1%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z803%22%2C%22Z803K1%22%3A%7B%22Z1K1%22%3A%22Z39%22%2C%22Z39K1%22%3A%22K1%22%7D%2C%22Z803K2%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z804%22%2C%22Z804K1%22%3A%5B%22Z39%22%2C%7B%22Z1K1%22%3A%22Z39%22%2C%22Z39K1%22%3A%22Z8K4%22%7D%5D%2C%22Z804K2%22%3A%22Z10000%22%7D%7D%7D%7D just this]. [[User:GrounderUK|GrounderUK]] ([[User talk:GrounderUK|talk]]) 17:51, 6 August 2026 (UTC)
* ''Sign here''
=== Allow Wikifunctions functions to be called from Python and Javascript ===
: As indicated in an earlier suggestion, it is not convenient to write complicated code in the form of compositions. I think far more code would be contributed if it could be done in Python or Javascript.
* [[User:Strobilomyces|Strobilomyces]] ([[User talk:Strobilomyces|talk]]) 16:44, 5 August 2026 (UTC)
* ''Sign here''
=== Example: Thing to fix (copy me!) ===
: What it would involve, and why it would be valuable.
* ''Sign here''
== Thank you! ==
It was great to speak to and hear from so many of you.
rz0nz4exdpyl3fxjjor8psatuqku7c1
297079
297078
2026-08-07T01:20:44Z
Kambai Akau
2092
/* Example: Thing to fix (copy me!) */
297079
wikitext
text/x-wiki
{{seealso|WF:Feature petitions}}
Thank you to so many of you who came in-person and online to the workshop at Wikimania last week around creating Abstract Wikipedia articles.
__NEWSECTIONLINK__
Based on your comments there and things you ran into or mentioned, we've pulled together a quick ideas list of possible improvements (alongside our work on faster and better NLG support, working with communities to consider piloting Abstract Wikipedia on their wiki, and other major parts of the annual plan).
Please indicate which items you think we should work on soonest by signing your name (<nowiki>~~~~</nowiki>) below them. We'll probably work on many of these, but the count of "votes" and arguments will help guide us in which ones we prioritise.
== Individual fragment editing ==
These are some ideas about how we might make adding and editing individual fragments easier.
=== Only auto-match the Wikidata item to the subject of the article on the first item in a Function call, not all of them ===
: This should avoid the confusing step of suggested items saying "Cairo is the Cairo of Cairo", but instead would need you to specify the item references for the others. The heuristic of only matching the first item might be enough as a starting point for many calls. We probably still want to match all dates and languages, though.
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 07:50, 31 July 2026 (UTC)
* [[User:Kambai Akau|Kambai Akau]] ([[User talk:Kambai Akau|talk]]) 00:56, 7 August 2026 (UTC)
* ''Sign here''
=== Split out some of the '…' menu on each item so you can quickly switch to a manual item reference ===
: A big stumbling block for folks was switching from an auto-matched (argument key) item or a function call to a specific item reference. This would allow you to quickly switch to that, without having to notice and go through the menu of all the other options.
* ''Sign here''
=== Re-word the labels for the abstract argument keys to be more clear about what they are ===
: We label the keys as 'wikidata item reference', 'language', and 'date'; we should make it clearer that these are 'this article's subject', 'view language', and 'view date' respectively. This would help avoid confusion about what these keys are for, and when you don't want to use them.
* [[User:Waldyrious|Waldyrious]] ([[User talk:Waldyrious|talk]]) 08:48, 1 August 2026 (UTC)
*:{{Done}} As a first step; how does that work for you? [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 15:45, 5 August 2026 (UTC)
=== Add short description fields to Functions' arguments, to help people can understand what the inputs mean when they use them ===
: For Functions, we have labels, aliases, and short descriptions, but Functions' inputs just have a single label each, which can make it hard for people to know what to put where, especially if they have unusual or unfamiliar words. Add a short description field, maybe shown via a secondary accessor like a "[[File:Codex icon info color-notice.svg|20x20px]]" rather than all the time.
* ''Sign here''
* [[User:Nux|Nux]] ([[User talk:Nux|talk]]) 11:38, 1 August 2026 (UTC) (i) icons with more info might help, like e.g. what the author means by "Hypernym" [https://abstract.wikipedia.org/w/index.php?title=Abstract_Wikipedia:Useful_functions_for_article_composition&oldid=13847].
*:@[[User:Nux|Nux]]: Can you give some more detail for where that kind of interface shows up for you? Do you mean giving more context for labels of functions' inputs? [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 15:46, 5 August 2026 (UTC)
*::@[[User:Jdforrester (WMF)|Jdforrester (WMF)]] Yes, argument description. Like a description for function [https://www.wikifunctions.org/w/index.php?title=Z37921&action=edit&uselang=en]. Like in JavaDoc. [[User:Nux|Nux]] ([[User talk:Nux|talk]]) 19:58, 5 August 2026 (UTC)
*:::Aha, right. Is it OK if I split this out into its own section? That's a very different change from what this section was written up as, based on what I heard in Paris, and should have its own discussion. [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 20:06, 5 August 2026 (UTC)
*::::Sure. [[User:Nux|Nux]] ([[User talk:Nux|talk]]) 20:12, 5 August 2026 (UTC)
* ''Sign here''
=== Example: Thing to fix (copy me!) ===
: What it would involve, and why it would be valuable.
* ''Sign here''
== New/better kinds of fragment ==
Here are some ideas for different kinds of fragments that you could use in abstract articles.
=== Add support for pulling structured data from Commons files ''e.g.'' captions ===
: Right now you can put in image files themselves, but you can't fetch any data about them. This is particularly unhelpful as the Wikidata items still use the File: name rather than the MID; we'd need to add the ability to fetch meta-data from Commons to the back-end services, like we do from Wikidata.
* ''Sign here''
=== Add support for video/audio file inclusions ===
: You can only specify image files, not audio or video files which are more complex. If demand is high we could add this sooner rather than later, though it may be complex to align with the existing workflows.
* ''Sign here''
=== Add support for galleries of media file inclusions ===
: You can create multiple media file transclusions, but it's limited to a small number and you have to do all the work of creating the styles around it. We could give a first-level media file output, if this is strongly wanted.
* ''Sign here''
=== Add support for map inclusions ===
: We don't yet support maps, which might be wanted if folks are making articles about places a lot. Full support would be quite complicated.
* [[User:EatingCarBatteries|EatingCarBatteries]] ([[User talk:EatingCarBatteries|talk]]) 03:24, 31 July 2026 (UTC)
=== Add support for chart inclusions ===
: We don't yet support charts, which might be wanted if folks are making articles about numerical things a lot. Full support would be very complicated.
* ''Sign here''
=== Abstract source mock-ups and multilingual reviews ===
:We are approaching Abstract Wikipedia from the bottom up, with very simple examples. This may be the "Wiki Way", but for software it is very unconventional, and I think it is uncertain whether it can eventually work for more advanced text. The project will have failed unless natural text similar in complexity to current Wikipedia articles can be generated. I think nobody (except possibly [[user:mahir256|Mahir Morshed]]) understands what the abstract source for more complicated sentences would look like.
:Mahir Morshed has created a multilingual text generation system called Elemwala at https://elemwala.toolforge.org/ (see his introduction at https://www.wikifunctions.org/wiki/Wikifunctions:Status_updates/2024-10-17 and his session at Wikimania). This is linked to Abstract Wikipedia, and extremely relevant to it (since it is the only real current proposal for the abstract souce that I know), but it should be noted that Elemwala is only a proposal, not Abstract Wikipedia policy. The list of constructors defines the abstract source as it is at present. Also more information on how this abstract content can be constructed can be found at https://www.wikidata.org/wiki/User:Mahir256/language-generation, with various links and references.
:It is not clear to me whether the abstract source, consisting of functions of Wikidata items backed up by lexemes, can even work at all for a wide variety of languages. Rendering a text needs much information which is special to the target language, for instance there can be genders, grammatical cases, polite forms of address, etc. Example: The Eiffel Tower (Q243) usually needs a definite article when used in English, whereas Blackpool Tower (Q880905) does not. Where should this information for the English renderer be held? It cannot be in the abstract source, since the answer is special for English; some editors of the abstract source will speak languages which do not use articles. Well, I think that this type of item needs an English lexeme with a flag to indicate the article usage, and that would be a solution. Another example relates to the grammatical tenses, voices and moods of verbs. How will that be managed? I suppose that a verb tense indication must be given as a parameter in the abstract source, but how will the values of this parameter be related to all the possible tense/voice/mood verb forms in all the languages? There are an enormous number of such diverse features; how can we be sure that there is enough information in the abstract source to do the rendering in all cases?
:I think that there is an urgent need to create examples of complex text (such as real Wikipedia articles) in the proposed abstract source. Then testers who comprehend the abstract source format and also know a relevant language should interpret the source text and confirm whether they understand it and whether they have enough information to reconstruct the text in their own language (not by software but with their own mental processes). If so, that would give much-needed confidence that the Abstract Wikipedia scheme can actually work, and I think it would advance the project by making clearer the next needed steps.
* [[User:Strobilomyces|Strobilomyces]] ([[User talk:Strobilomyces|talk]]) 20:41, 5 August 2026 (UTC)
* ''Sign here''
=== Example: Thing to fix (copy me!) ===
: What it would involve, and why it would be valuable.
* ''Sign here''
== Article editing ==
Here are some quick ideas about overall article editing, not specific to a given
=== Drag-and-drop moving of fragments, instead of having to click on the menu and the "move up/down" multiple times ===
: Drag-and-drop is a relatively familiar UX feature, and we could add an affordance for it to make it more discoverable at the same time as more usable.
* [[User:EatingCarBatteries|EatingCarBatteries]] ([[User talk:EatingCarBatteries|talk]]) 03:22, 31 July 2026 (UTC)
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 07:52, 31 July 2026 (UTC)
* [[User:Waldyrious|Waldyrious]] ([[User talk:Waldyrious|talk]]) 08:49, 1 August 2026 (UTC)
* [[User:Nux|Nux]] ([[User talk:Nux|talk]]) 11:42, 1 August 2026 (UTC) and also selecting and copying with ctrl+c/ctrl+v like in OOo/LibreOffice Calc
* [[User:Dungodung|Dungodung]] ([[User talk:Dungodung|talk]]) 15:30, 5 August 2026 (UTC)
* It's a very minor issue in the grand scheme of things, but would be nice. --[[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 16:04, 5 August 2026 (UTC)
* ''Sign here''
=== Fix the long article dual-column scroll problem where you can't see what you're editing ===
: This is particularly an issue on longer articles and smaller screens, but was mentioned as very irritating by some of you!
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 07:49, 31 July 2026 (UTC)
* It's a very minor issue in the grand scheme of things, but would be nice. --[[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 16:04, 5 August 2026 (UTC)
* [[User:Kambai Akau|Kambai Akau]] ([[User talk:Kambai Akau|talk]]) 01:03, 7 August 2026 (UTC)
* ''Sign here''
=== Support multiple sections, rather than just the lede ===
: Right now (despite some functions outputting <nowiki><h2></nowiki>s and the like), all articles are limited to just editing the lede section. We have mostly-built support for thematic sections, but this needs some polish. This would let you 'chunk up' articles, potentially editing only a section at a time for ease of use and / or collapsing those sections away to focus. We could also use this to allow external links limited to only the "external links" section (and references).
* [[User:EatingCarBatteries|EatingCarBatteries]] ([[User talk:EatingCarBatteries|talk]]) 07:12, 3 August 2026 (UTC)
=== Prompt editors with function calls based on statements in the Wikidata item ===
: Add a feature that checks the subject's Wikidata item for statements of the kind it knows about (e.g. "born 1850-01-20 in France") and match them to fragments, prompting you to add this. We'd need to work out how to link between fragment functions and Wikidata claims, and how to know whether the claims were already in the article, so this is quite complex to design and build, but would probably help a great deal.
* {{neutral|Comment}} e.g. {{P|569}}:{{P|1535}}={{Q|138748413}} w/ qual. {{P|528}}=[[Z37683]] [[User:YoshiRulz|YoshiRulz]] ([[User talk:YoshiRulz|talk]]) 00:57, 7 August 2026 (UTC)
* It would be nice for statements already present in Wikidata to be converted to form the sentences in the Abstract Wikipedia, instead of adding statements already present in Wikidata again in the A.W., as in [https://abstract.wikipedia.org/view/kcg/Q7251 Alan Turing]. [[User:Kambai Akau|Kambai Akau]] ([[User talk:Kambai Akau|talk]]) 01:02, 7 August 2026 (UTC)
* ''Sign here''
=== Prompt editors with media used on Wikipedia articles for the subject ===
: A more specialised option compared to fetching media suggestions alongside everything else from the Wikidata item would be to check for the main/first image on any existing Wikipedia articles and suggesting that if it's not already set.
* ''Sign here''
=== Fill in the parameters at copy/paste ===
: Fill in the parameters at copy/paste if the number and types of parameters match. That is especialy usefull when copying a new function from one language to an other. Currenltly every parameter has to be filled manually.
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 22:25, 5 August 2026 (UTC) (as proposer) I just created {{Z|Z38911}} and it took me very long to fill all 30! parameters correctly~
* ''Sign here''
=== Example: Thing to fix (copy me!) ===
: What it would involve, and why it would be valuable.
* This could be a useful shortcut if the Wikidata statements don't get called automatically. [[User:Kambai Akau|Kambai Akau]] ([[User talk:Kambai Akau|talk]]) 01:20, 7 August 2026 (UTC)
* ''Sign here''
== Any other ideas you might have ==
The sections above aren't everything. What else is something you'd like fixed?
=== Make it more obvious in the search whether there's an existing abstract article or not ===
: Right now we just add "– AW" to the end of search results when there's an existing article; if we make it clearer whether the link is a "read this" or "create this" link, folks won't be surprised when they click it.
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 15:58, 1 August 2026 (UTC)
* [[User:Kambai Akau|Kambai Akau]] ([[User talk:Kambai Akau|talk]]) 01:15, 7 August 2026 (UTC)
* ''Sign here''
=== Auto-linking new Abstract Wikipedia articles to their Wikidata counterparts ===
: Right now people need to manually say that ''e.g.'' Q90 is the same as Q90, which takes time and isn't obvious. If we did this automatically as articles were created, the workflow would be easier to understand.
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 15:56, 1 August 2026 (UTC)
* It's a very minor issue in the grand scheme of things, but would be nice. --[[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 16:03, 5 August 2026 (UTC)
* [[User:Kambai Akau|Kambai Akau]] ([[User talk:Kambai Akau|talk]]) 01:14, 7 August 2026 (UTC)
* ''Sign here''
=== Show labels of talk pages ===
: Show labels of Zid's talk pages on recent changes, watchlist and also on Categories like [[:Category:English natural language generation functions|this one]]. Idem for Qid's talk pages on Abstract Wikipedia
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 17:22, 1 August 2026 (UTC) (as proposer)
* It's a very minor issue in the grand scheme of things, but would be nice. --[[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 16:03, 5 August 2026 (UTC)
* ''Sign here''
=== Enlarge the field for labels ===
: Currently the field for labels can hold a maximum of 50 characters. See for example {{Z|Z32398}}. Frequently this is not enough and abbreviation have to be made. That makes the function names confusing and not consistent.
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 17:37, 1 August 2026 (UTC) (as proposer)
* [[User:EatingCarBatteries|EatingCarBatteries]] ([[User talk:EatingCarBatteries|talk]]) 20:59, 3 August 2026 (UTC)
* [[User:Strobilomyces|Strobilomyces]] ([[User talk:Strobilomyces|talk]]) 16:09, 5 August 2026 (UTC)
* ''Sign here''
=== Support wikitext in functions output ===
: Wikifunctions don't support wikitext. They can only output unparseable plain text or HTML. I know that the page [[:f:Wikifunctions:Embedded function calls]] says very clearly that wikitext will never be supported. But this is the number one thing that causes me not to be motivated to use functions, and I suspect that I'm not alone. So perhaps you could reconsider it.
* [[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 16:01, 5 August 2026 (UTC)
** {{ping|Amire80|p=,}} {{ping|HenkvD}} What would you do with the produced Wikitext? Copy it into an existing page on one of the sister projects? [[User:YoshiRulz|YoshiRulz]] ([[User talk:YoshiRulz|talk]]) 01:01, 7 August 2026 (UTC)
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 22:11, 5 August 2026 (UTC) Without wikitext the Abstract Wikipedia is not a real Wikipedia. Using wikitext code for bold, italic etc. Maybe also for Wikilinks.
* ''Sign here''
=== Completely change the UI of compositions ===
: I don't get compositions. A few people get them, but a lot of people don't. I mostly don't. When I try to read existing compositions, their deeply-nested hierarchy immediately confuses me, and I'm almost always afraid of editing anything. And I barely know how to start a new composition. The "clipboard" feature, which was added a few months ago, makes it a little bit less frustrating. But only a little bit; it doesn't solve the big issue. Creating and editing compositions is the only way to edit abstract articles, and it's very commonly needed on Wikifunctions, too, so if a lot of people have a hard time understanding how to do it, neither project will acquire a lot of editors. If you ask me, I'd do away with them completely and just use Python or JavaScript (or Lua!) code.
* [[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 16:01, 5 August 2026 (UTC)
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 22:18, 5 August 2026 (UTC) I don't propose to get rid of compositions, but make the default output more readable by automatically start a new function on a new line, and indent automatically. Also in read mode.
* Same. It's frustrating to have to click my mouse 10 times through a bunch of functions just to change an input value [[User:EatingCarBatteries|EatingCarBatteries]] ([[User talk:EatingCarBatteries|talk]]) 03:38, 6 August 2026 (UTC)
* ''Sign here''
=== Allow choice of implementation to be forced ===
: Where a function has multiple implementations, it would be helpful to be able to force the orchestrator to select a particular implementation for a particular run (or a particular session or a particular user). This would often be very helpful for debugging, or when an implementation appears to have a bug. I am not too sure how that could work - I propose that each user should be able to mark any implementation as always to be selected in their case (or perhaps as never to be selected). Perhaps only in the current session.
:It would even be useful to have a mode in a given session where the orchestrator always selects the first (or last) implementation for all functions - then one would at least know which implementation was going to be called!
* [[User:Strobilomyces|Strobilomyces]] ([[User talk:Strobilomyces|talk]]) 16:35, 5 August 2026 (UTC)
*:@[[User:Strobilomyces|Strobilomyces]]: The orchestrator will (currently) only ever chose the first connected implementation (for a language we support). Maybe we could make it clearer? For debugging, the idea is that you can do that from the implementation page whether or not it's connected, such as on [[Z15788]]. We could highlight that, perhaps? Can you give an example outside of debugging where you might want to allow multiple implementations to be connected but choose different implementations at run-time? I cannot suggest what we could do without understanding better the need, sorry! [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 17:30, 5 August 2026 (UTC)
*::Clarification: "First connected implementation" means the first one listed in the JSON version of the function (which is sometimes promoted or demoted by Wikilambda bot), rather than the first one displayed in the UI list, or the first one that was ever connected. Highlighting this implementation in the UI would be nice. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 04:15, 6 August 2026 (UTC)
*:::Yup, good point; we could definitely improve the UX here to indicate which is the "winning" implementation. [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 14:34, 6 August 2026 (UTC)
*::@[[User:Jdforrester (WMF)|Jdforrester (WMF)]] The ability to test a given implementation directly is very useful. But functions often call other functions and it makes debugging difficult if it is not possible to tell which implementation will be executed or has been executed at the lower level. If it currently always the same version, then that is good. I would like to know how to tell which version will be or has been executed. How do I see the JSON version of the subfunction? Do I have to use the API? [[User:Strobilomyces|Strobilomyces]] ([[User talk:Strobilomyces|talk]]) 13:27, 6 August 2026 (UTC)
*:::I find it by looking at the history and comparing diffs. Here's a diff showing that Wikilambda bot promoted the JS implementation to the top: https://www.wikifunctions.org/w/index.php?title=Z13521&diff=289160&oldid=232341 . --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 13:46, 6 August 2026 (UTC)
*::A particular case where the preferred implementation should not be used is when testing a recursive implementation. [[User:GrounderUK|GrounderUK]] ([[User talk:GrounderUK|talk]]) 18:04, 6 August 2026 (UTC)
*:You can run {{Z|Z35874}} to get the identifier of the currently preferred implementation for a specified function. You could also have [https://www.wikifunctions.org/view/en/Z37465?call=%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z37465%22%2C%22Z37465K1%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z35874%22%2C%22Z35874K1%22%3A%22Z10000%22%7D%2C%22Z37465K2%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z35874%22%2C%22Z35874K1%22%3A%22Z10000%22%7D%7D a hyperlink to the implementation].
*:When browsing, if you click on any of a function’s test cases, the implementations that are connected to the function are listed in the correct order in the Implementations box. This is also true when adding a new test case to a function.
*:Or we could [https://www.wikifunctions.org/view/en/Z801?call=%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z801%22%2C%22Z801K1%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z33470%22%2C%22Z33470K1%22%3A%22view+function%E2%80%99s+JSON%22%2C%22Z33470K2%22%3A%22a%22%2C%22Z33470K3%22%3A%7B%22Z1K1%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z883%22%2C%22Z883K1%22%3A%22Z6%22%2C%22Z883K2%22%3A%22Z1%22%7D%2C%22K1%22%3A%5B%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z882%22%2C%22Z882K1%22%3A%22Z6%22%2C%22Z882K2%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z881%22%2C%22Z881K1%22%3A%22Z6%22%7D%7D%2C%7B%22Z1K1%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z882%22%2C%22Z882K1%22%3A%22Z6%22%2C%22Z882K2%22%3A%22Z1%22%7D%2C%22K1%22%3A%22href%22%2C%22K2%22%3A%5B%22Z6%22%2C%22https%3A%2F%2Fwww.wikifunctions.org%2Fwiki%2F%22%2C%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z28231%22%2C%22Z28231K1%22%3A%22Z801%22%7D%2C%22%3Faction%3Draw%22%5D%7D%5D%7D%7D%7D turn this into a function], I suppose, or [https://www.wikifunctions.org/view/en/Z801?call=%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z801%22%2C%22Z801K1%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z811%22%2C%22Z811K1%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z803%22%2C%22Z803K1%22%3A%7B%22Z1K1%22%3A%22Z39%22%2C%22Z39K1%22%3A%22K1%22%7D%2C%22Z803K2%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z804%22%2C%22Z804K1%22%3A%5B%22Z39%22%2C%7B%22Z1K1%22%3A%22Z39%22%2C%22Z39K1%22%3A%22Z8K4%22%7D%5D%2C%22Z804K2%22%3A%22Z10000%22%7D%7D%7D%7D just this]. [[User:GrounderUK|GrounderUK]] ([[User talk:GrounderUK|talk]]) 17:51, 6 August 2026 (UTC)
* ''Sign here''
=== Allow Wikifunctions functions to be called from Python and Javascript ===
: As indicated in an earlier suggestion, it is not convenient to write complicated code in the form of compositions. I think far more code would be contributed if it could be done in Python or Javascript.
* [[User:Strobilomyces|Strobilomyces]] ([[User talk:Strobilomyces|talk]]) 16:44, 5 August 2026 (UTC)
* ''Sign here''
=== Example: Thing to fix (copy me!) ===
: What it would involve, and why it would be valuable.
* ''Sign here''
== Thank you! ==
It was great to speak to and hear from so many of you.
j7i71dgt9p5uw8lcsn8k6gmab8ab9pl
297080
297079
2026-08-07T01:21:59Z
Kambai Akau
2092
/* Fill in the parameters at copy/paste */
297080
wikitext
text/x-wiki
{{seealso|WF:Feature petitions}}
Thank you to so many of you who came in-person and online to the workshop at Wikimania last week around creating Abstract Wikipedia articles.
__NEWSECTIONLINK__
Based on your comments there and things you ran into or mentioned, we've pulled together a quick ideas list of possible improvements (alongside our work on faster and better NLG support, working with communities to consider piloting Abstract Wikipedia on their wiki, and other major parts of the annual plan).
Please indicate which items you think we should work on soonest by signing your name (<nowiki>~~~~</nowiki>) below them. We'll probably work on many of these, but the count of "votes" and arguments will help guide us in which ones we prioritise.
== Individual fragment editing ==
These are some ideas about how we might make adding and editing individual fragments easier.
=== Only auto-match the Wikidata item to the subject of the article on the first item in a Function call, not all of them ===
: This should avoid the confusing step of suggested items saying "Cairo is the Cairo of Cairo", but instead would need you to specify the item references for the others. The heuristic of only matching the first item might be enough as a starting point for many calls. We probably still want to match all dates and languages, though.
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 07:50, 31 July 2026 (UTC)
* [[User:Kambai Akau|Kambai Akau]] ([[User talk:Kambai Akau|talk]]) 00:56, 7 August 2026 (UTC)
* ''Sign here''
=== Split out some of the '…' menu on each item so you can quickly switch to a manual item reference ===
: A big stumbling block for folks was switching from an auto-matched (argument key) item or a function call to a specific item reference. This would allow you to quickly switch to that, without having to notice and go through the menu of all the other options.
* ''Sign here''
=== Re-word the labels for the abstract argument keys to be more clear about what they are ===
: We label the keys as 'wikidata item reference', 'language', and 'date'; we should make it clearer that these are 'this article's subject', 'view language', and 'view date' respectively. This would help avoid confusion about what these keys are for, and when you don't want to use them.
* [[User:Waldyrious|Waldyrious]] ([[User talk:Waldyrious|talk]]) 08:48, 1 August 2026 (UTC)
*:{{Done}} As a first step; how does that work for you? [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 15:45, 5 August 2026 (UTC)
=== Add short description fields to Functions' arguments, to help people can understand what the inputs mean when they use them ===
: For Functions, we have labels, aliases, and short descriptions, but Functions' inputs just have a single label each, which can make it hard for people to know what to put where, especially if they have unusual or unfamiliar words. Add a short description field, maybe shown via a secondary accessor like a "[[File:Codex icon info color-notice.svg|20x20px]]" rather than all the time.
* ''Sign here''
* [[User:Nux|Nux]] ([[User talk:Nux|talk]]) 11:38, 1 August 2026 (UTC) (i) icons with more info might help, like e.g. what the author means by "Hypernym" [https://abstract.wikipedia.org/w/index.php?title=Abstract_Wikipedia:Useful_functions_for_article_composition&oldid=13847].
*:@[[User:Nux|Nux]]: Can you give some more detail for where that kind of interface shows up for you? Do you mean giving more context for labels of functions' inputs? [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 15:46, 5 August 2026 (UTC)
*::@[[User:Jdforrester (WMF)|Jdforrester (WMF)]] Yes, argument description. Like a description for function [https://www.wikifunctions.org/w/index.php?title=Z37921&action=edit&uselang=en]. Like in JavaDoc. [[User:Nux|Nux]] ([[User talk:Nux|talk]]) 19:58, 5 August 2026 (UTC)
*:::Aha, right. Is it OK if I split this out into its own section? That's a very different change from what this section was written up as, based on what I heard in Paris, and should have its own discussion. [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 20:06, 5 August 2026 (UTC)
*::::Sure. [[User:Nux|Nux]] ([[User talk:Nux|talk]]) 20:12, 5 August 2026 (UTC)
* ''Sign here''
=== Example: Thing to fix (copy me!) ===
: What it would involve, and why it would be valuable.
* ''Sign here''
== New/better kinds of fragment ==
Here are some ideas for different kinds of fragments that you could use in abstract articles.
=== Add support for pulling structured data from Commons files ''e.g.'' captions ===
: Right now you can put in image files themselves, but you can't fetch any data about them. This is particularly unhelpful as the Wikidata items still use the File: name rather than the MID; we'd need to add the ability to fetch meta-data from Commons to the back-end services, like we do from Wikidata.
* ''Sign here''
=== Add support for video/audio file inclusions ===
: You can only specify image files, not audio or video files which are more complex. If demand is high we could add this sooner rather than later, though it may be complex to align with the existing workflows.
* ''Sign here''
=== Add support for galleries of media file inclusions ===
: You can create multiple media file transclusions, but it's limited to a small number and you have to do all the work of creating the styles around it. We could give a first-level media file output, if this is strongly wanted.
* ''Sign here''
=== Add support for map inclusions ===
: We don't yet support maps, which might be wanted if folks are making articles about places a lot. Full support would be quite complicated.
* [[User:EatingCarBatteries|EatingCarBatteries]] ([[User talk:EatingCarBatteries|talk]]) 03:24, 31 July 2026 (UTC)
=== Add support for chart inclusions ===
: We don't yet support charts, which might be wanted if folks are making articles about numerical things a lot. Full support would be very complicated.
* ''Sign here''
=== Abstract source mock-ups and multilingual reviews ===
:We are approaching Abstract Wikipedia from the bottom up, with very simple examples. This may be the "Wiki Way", but for software it is very unconventional, and I think it is uncertain whether it can eventually work for more advanced text. The project will have failed unless natural text similar in complexity to current Wikipedia articles can be generated. I think nobody (except possibly [[user:mahir256|Mahir Morshed]]) understands what the abstract source for more complicated sentences would look like.
:Mahir Morshed has created a multilingual text generation system called Elemwala at https://elemwala.toolforge.org/ (see his introduction at https://www.wikifunctions.org/wiki/Wikifunctions:Status_updates/2024-10-17 and his session at Wikimania). This is linked to Abstract Wikipedia, and extremely relevant to it (since it is the only real current proposal for the abstract souce that I know), but it should be noted that Elemwala is only a proposal, not Abstract Wikipedia policy. The list of constructors defines the abstract source as it is at present. Also more information on how this abstract content can be constructed can be found at https://www.wikidata.org/wiki/User:Mahir256/language-generation, with various links and references.
:It is not clear to me whether the abstract source, consisting of functions of Wikidata items backed up by lexemes, can even work at all for a wide variety of languages. Rendering a text needs much information which is special to the target language, for instance there can be genders, grammatical cases, polite forms of address, etc. Example: The Eiffel Tower (Q243) usually needs a definite article when used in English, whereas Blackpool Tower (Q880905) does not. Where should this information for the English renderer be held? It cannot be in the abstract source, since the answer is special for English; some editors of the abstract source will speak languages which do not use articles. Well, I think that this type of item needs an English lexeme with a flag to indicate the article usage, and that would be a solution. Another example relates to the grammatical tenses, voices and moods of verbs. How will that be managed? I suppose that a verb tense indication must be given as a parameter in the abstract source, but how will the values of this parameter be related to all the possible tense/voice/mood verb forms in all the languages? There are an enormous number of such diverse features; how can we be sure that there is enough information in the abstract source to do the rendering in all cases?
:I think that there is an urgent need to create examples of complex text (such as real Wikipedia articles) in the proposed abstract source. Then testers who comprehend the abstract source format and also know a relevant language should interpret the source text and confirm whether they understand it and whether they have enough information to reconstruct the text in their own language (not by software but with their own mental processes). If so, that would give much-needed confidence that the Abstract Wikipedia scheme can actually work, and I think it would advance the project by making clearer the next needed steps.
* [[User:Strobilomyces|Strobilomyces]] ([[User talk:Strobilomyces|talk]]) 20:41, 5 August 2026 (UTC)
* ''Sign here''
=== Example: Thing to fix (copy me!) ===
: What it would involve, and why it would be valuable.
* ''Sign here''
== Article editing ==
Here are some quick ideas about overall article editing, not specific to a given
=== Drag-and-drop moving of fragments, instead of having to click on the menu and the "move up/down" multiple times ===
: Drag-and-drop is a relatively familiar UX feature, and we could add an affordance for it to make it more discoverable at the same time as more usable.
* [[User:EatingCarBatteries|EatingCarBatteries]] ([[User talk:EatingCarBatteries|talk]]) 03:22, 31 July 2026 (UTC)
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 07:52, 31 July 2026 (UTC)
* [[User:Waldyrious|Waldyrious]] ([[User talk:Waldyrious|talk]]) 08:49, 1 August 2026 (UTC)
* [[User:Nux|Nux]] ([[User talk:Nux|talk]]) 11:42, 1 August 2026 (UTC) and also selecting and copying with ctrl+c/ctrl+v like in OOo/LibreOffice Calc
* [[User:Dungodung|Dungodung]] ([[User talk:Dungodung|talk]]) 15:30, 5 August 2026 (UTC)
* It's a very minor issue in the grand scheme of things, but would be nice. --[[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 16:04, 5 August 2026 (UTC)
* ''Sign here''
=== Fix the long article dual-column scroll problem where you can't see what you're editing ===
: This is particularly an issue on longer articles and smaller screens, but was mentioned as very irritating by some of you!
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 07:49, 31 July 2026 (UTC)
* It's a very minor issue in the grand scheme of things, but would be nice. --[[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 16:04, 5 August 2026 (UTC)
* [[User:Kambai Akau|Kambai Akau]] ([[User talk:Kambai Akau|talk]]) 01:03, 7 August 2026 (UTC)
* ''Sign here''
=== Support multiple sections, rather than just the lede ===
: Right now (despite some functions outputting <nowiki><h2></nowiki>s and the like), all articles are limited to just editing the lede section. We have mostly-built support for thematic sections, but this needs some polish. This would let you 'chunk up' articles, potentially editing only a section at a time for ease of use and / or collapsing those sections away to focus. We could also use this to allow external links limited to only the "external links" section (and references).
* [[User:EatingCarBatteries|EatingCarBatteries]] ([[User talk:EatingCarBatteries|talk]]) 07:12, 3 August 2026 (UTC)
=== Prompt editors with function calls based on statements in the Wikidata item ===
: Add a feature that checks the subject's Wikidata item for statements of the kind it knows about (e.g. "born 1850-01-20 in France") and match them to fragments, prompting you to add this. We'd need to work out how to link between fragment functions and Wikidata claims, and how to know whether the claims were already in the article, so this is quite complex to design and build, but would probably help a great deal.
* {{neutral|Comment}} e.g. {{P|569}}:{{P|1535}}={{Q|138748413}} w/ qual. {{P|528}}=[[Z37683]] [[User:YoshiRulz|YoshiRulz]] ([[User talk:YoshiRulz|talk]]) 00:57, 7 August 2026 (UTC)
* It would be nice for statements already present in Wikidata to be converted to form the sentences in the Abstract Wikipedia, instead of adding statements already present in Wikidata again in the A.W., as in [https://abstract.wikipedia.org/view/kcg/Q7251 Alan Turing]. [[User:Kambai Akau|Kambai Akau]] ([[User talk:Kambai Akau|talk]]) 01:02, 7 August 2026 (UTC)
* ''Sign here''
=== Prompt editors with media used on Wikipedia articles for the subject ===
: A more specialised option compared to fetching media suggestions alongside everything else from the Wikidata item would be to check for the main/first image on any existing Wikipedia articles and suggesting that if it's not already set.
* ''Sign here''
=== Fill in the parameters at copy/paste ===
: Fill in the parameters at copy/paste if the number and types of parameters match. That is especialy usefull when copying a new function from one language to an other. Currenltly every parameter has to be filled manually.
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 22:25, 5 August 2026 (UTC) (as proposer) I just created {{Z|Z38911}} and it took me very long to fill all 30! parameters correctly~
* [[User:Kambai Akau|Kambai Akau]] ([[User talk:Kambai Akau|talk]]) 01:21, 7 August 2026 (UTC)
* ''Sign here''
=== Example: Thing to fix (copy me!) ===
: What it would involve, and why it would be valuable.
* This could be a useful shortcut if the Wikidata statements don't get called automatically. [[User:Kambai Akau|Kambai Akau]] ([[User talk:Kambai Akau|talk]]) 01:20, 7 August 2026 (UTC)
* ''Sign here''
== Any other ideas you might have ==
The sections above aren't everything. What else is something you'd like fixed?
=== Make it more obvious in the search whether there's an existing abstract article or not ===
: Right now we just add "– AW" to the end of search results when there's an existing article; if we make it clearer whether the link is a "read this" or "create this" link, folks won't be surprised when they click it.
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 15:58, 1 August 2026 (UTC)
* [[User:Kambai Akau|Kambai Akau]] ([[User talk:Kambai Akau|talk]]) 01:15, 7 August 2026 (UTC)
* ''Sign here''
=== Auto-linking new Abstract Wikipedia articles to their Wikidata counterparts ===
: Right now people need to manually say that ''e.g.'' Q90 is the same as Q90, which takes time and isn't obvious. If we did this automatically as articles were created, the workflow would be easier to understand.
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 15:56, 1 August 2026 (UTC)
* It's a very minor issue in the grand scheme of things, but would be nice. --[[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 16:03, 5 August 2026 (UTC)
* [[User:Kambai Akau|Kambai Akau]] ([[User talk:Kambai Akau|talk]]) 01:14, 7 August 2026 (UTC)
* ''Sign here''
=== Show labels of talk pages ===
: Show labels of Zid's talk pages on recent changes, watchlist and also on Categories like [[:Category:English natural language generation functions|this one]]. Idem for Qid's talk pages on Abstract Wikipedia
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 17:22, 1 August 2026 (UTC) (as proposer)
* It's a very minor issue in the grand scheme of things, but would be nice. --[[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 16:03, 5 August 2026 (UTC)
* ''Sign here''
=== Enlarge the field for labels ===
: Currently the field for labels can hold a maximum of 50 characters. See for example {{Z|Z32398}}. Frequently this is not enough and abbreviation have to be made. That makes the function names confusing and not consistent.
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 17:37, 1 August 2026 (UTC) (as proposer)
* [[User:EatingCarBatteries|EatingCarBatteries]] ([[User talk:EatingCarBatteries|talk]]) 20:59, 3 August 2026 (UTC)
* [[User:Strobilomyces|Strobilomyces]] ([[User talk:Strobilomyces|talk]]) 16:09, 5 August 2026 (UTC)
* ''Sign here''
=== Support wikitext in functions output ===
: Wikifunctions don't support wikitext. They can only output unparseable plain text or HTML. I know that the page [[:f:Wikifunctions:Embedded function calls]] says very clearly that wikitext will never be supported. But this is the number one thing that causes me not to be motivated to use functions, and I suspect that I'm not alone. So perhaps you could reconsider it.
* [[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 16:01, 5 August 2026 (UTC)
** {{ping|Amire80|p=,}} {{ping|HenkvD}} What would you do with the produced Wikitext? Copy it into an existing page on one of the sister projects? [[User:YoshiRulz|YoshiRulz]] ([[User talk:YoshiRulz|talk]]) 01:01, 7 August 2026 (UTC)
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 22:11, 5 August 2026 (UTC) Without wikitext the Abstract Wikipedia is not a real Wikipedia. Using wikitext code for bold, italic etc. Maybe also for Wikilinks.
* ''Sign here''
=== Completely change the UI of compositions ===
: I don't get compositions. A few people get them, but a lot of people don't. I mostly don't. When I try to read existing compositions, their deeply-nested hierarchy immediately confuses me, and I'm almost always afraid of editing anything. And I barely know how to start a new composition. The "clipboard" feature, which was added a few months ago, makes it a little bit less frustrating. But only a little bit; it doesn't solve the big issue. Creating and editing compositions is the only way to edit abstract articles, and it's very commonly needed on Wikifunctions, too, so if a lot of people have a hard time understanding how to do it, neither project will acquire a lot of editors. If you ask me, I'd do away with them completely and just use Python or JavaScript (or Lua!) code.
* [[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 16:01, 5 August 2026 (UTC)
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 22:18, 5 August 2026 (UTC) I don't propose to get rid of compositions, but make the default output more readable by automatically start a new function on a new line, and indent automatically. Also in read mode.
* Same. It's frustrating to have to click my mouse 10 times through a bunch of functions just to change an input value [[User:EatingCarBatteries|EatingCarBatteries]] ([[User talk:EatingCarBatteries|talk]]) 03:38, 6 August 2026 (UTC)
* ''Sign here''
=== Allow choice of implementation to be forced ===
: Where a function has multiple implementations, it would be helpful to be able to force the orchestrator to select a particular implementation for a particular run (or a particular session or a particular user). This would often be very helpful for debugging, or when an implementation appears to have a bug. I am not too sure how that could work - I propose that each user should be able to mark any implementation as always to be selected in their case (or perhaps as never to be selected). Perhaps only in the current session.
:It would even be useful to have a mode in a given session where the orchestrator always selects the first (or last) implementation for all functions - then one would at least know which implementation was going to be called!
* [[User:Strobilomyces|Strobilomyces]] ([[User talk:Strobilomyces|talk]]) 16:35, 5 August 2026 (UTC)
*:@[[User:Strobilomyces|Strobilomyces]]: The orchestrator will (currently) only ever chose the first connected implementation (for a language we support). Maybe we could make it clearer? For debugging, the idea is that you can do that from the implementation page whether or not it's connected, such as on [[Z15788]]. We could highlight that, perhaps? Can you give an example outside of debugging where you might want to allow multiple implementations to be connected but choose different implementations at run-time? I cannot suggest what we could do without understanding better the need, sorry! [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 17:30, 5 August 2026 (UTC)
*::Clarification: "First connected implementation" means the first one listed in the JSON version of the function (which is sometimes promoted or demoted by Wikilambda bot), rather than the first one displayed in the UI list, or the first one that was ever connected. Highlighting this implementation in the UI would be nice. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 04:15, 6 August 2026 (UTC)
*:::Yup, good point; we could definitely improve the UX here to indicate which is the "winning" implementation. [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 14:34, 6 August 2026 (UTC)
*::@[[User:Jdforrester (WMF)|Jdforrester (WMF)]] The ability to test a given implementation directly is very useful. But functions often call other functions and it makes debugging difficult if it is not possible to tell which implementation will be executed or has been executed at the lower level. If it currently always the same version, then that is good. I would like to know how to tell which version will be or has been executed. How do I see the JSON version of the subfunction? Do I have to use the API? [[User:Strobilomyces|Strobilomyces]] ([[User talk:Strobilomyces|talk]]) 13:27, 6 August 2026 (UTC)
*:::I find it by looking at the history and comparing diffs. Here's a diff showing that Wikilambda bot promoted the JS implementation to the top: https://www.wikifunctions.org/w/index.php?title=Z13521&diff=289160&oldid=232341 . --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 13:46, 6 August 2026 (UTC)
*::A particular case where the preferred implementation should not be used is when testing a recursive implementation. [[User:GrounderUK|GrounderUK]] ([[User talk:GrounderUK|talk]]) 18:04, 6 August 2026 (UTC)
*:You can run {{Z|Z35874}} to get the identifier of the currently preferred implementation for a specified function. You could also have [https://www.wikifunctions.org/view/en/Z37465?call=%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z37465%22%2C%22Z37465K1%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z35874%22%2C%22Z35874K1%22%3A%22Z10000%22%7D%2C%22Z37465K2%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z35874%22%2C%22Z35874K1%22%3A%22Z10000%22%7D%7D a hyperlink to the implementation].
*:When browsing, if you click on any of a function’s test cases, the implementations that are connected to the function are listed in the correct order in the Implementations box. This is also true when adding a new test case to a function.
*:Or we could [https://www.wikifunctions.org/view/en/Z801?call=%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z801%22%2C%22Z801K1%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z33470%22%2C%22Z33470K1%22%3A%22view+function%E2%80%99s+JSON%22%2C%22Z33470K2%22%3A%22a%22%2C%22Z33470K3%22%3A%7B%22Z1K1%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z883%22%2C%22Z883K1%22%3A%22Z6%22%2C%22Z883K2%22%3A%22Z1%22%7D%2C%22K1%22%3A%5B%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z882%22%2C%22Z882K1%22%3A%22Z6%22%2C%22Z882K2%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z881%22%2C%22Z881K1%22%3A%22Z6%22%7D%7D%2C%7B%22Z1K1%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z882%22%2C%22Z882K1%22%3A%22Z6%22%2C%22Z882K2%22%3A%22Z1%22%7D%2C%22K1%22%3A%22href%22%2C%22K2%22%3A%5B%22Z6%22%2C%22https%3A%2F%2Fwww.wikifunctions.org%2Fwiki%2F%22%2C%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z28231%22%2C%22Z28231K1%22%3A%22Z801%22%7D%2C%22%3Faction%3Draw%22%5D%7D%5D%7D%7D%7D turn this into a function], I suppose, or [https://www.wikifunctions.org/view/en/Z801?call=%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z801%22%2C%22Z801K1%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z811%22%2C%22Z811K1%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z803%22%2C%22Z803K1%22%3A%7B%22Z1K1%22%3A%22Z39%22%2C%22Z39K1%22%3A%22K1%22%7D%2C%22Z803K2%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z804%22%2C%22Z804K1%22%3A%5B%22Z39%22%2C%7B%22Z1K1%22%3A%22Z39%22%2C%22Z39K1%22%3A%22Z8K4%22%7D%5D%2C%22Z804K2%22%3A%22Z10000%22%7D%7D%7D%7D just this]. [[User:GrounderUK|GrounderUK]] ([[User talk:GrounderUK|talk]]) 17:51, 6 August 2026 (UTC)
* ''Sign here''
=== Allow Wikifunctions functions to be called from Python and Javascript ===
: As indicated in an earlier suggestion, it is not convenient to write complicated code in the form of compositions. I think far more code would be contributed if it could be done in Python or Javascript.
* [[User:Strobilomyces|Strobilomyces]] ([[User talk:Strobilomyces|talk]]) 16:44, 5 August 2026 (UTC)
* ''Sign here''
=== Example: Thing to fix (copy me!) ===
: What it would involve, and why it would be valuable.
* ''Sign here''
== Thank you! ==
It was great to speak to and hear from so many of you.
qfyaooc0cxi8wur0k2k7n1usyfz22d3
297081
297080
2026-08-07T02:50:37Z
Amire80
113
/* Support wikitext in functions output */ Reply
297081
wikitext
text/x-wiki
{{seealso|WF:Feature petitions}}
Thank you to so many of you who came in-person and online to the workshop at Wikimania last week around creating Abstract Wikipedia articles.
__NEWSECTIONLINK__
Based on your comments there and things you ran into or mentioned, we've pulled together a quick ideas list of possible improvements (alongside our work on faster and better NLG support, working with communities to consider piloting Abstract Wikipedia on their wiki, and other major parts of the annual plan).
Please indicate which items you think we should work on soonest by signing your name (<nowiki>~~~~</nowiki>) below them. We'll probably work on many of these, but the count of "votes" and arguments will help guide us in which ones we prioritise.
== Individual fragment editing ==
These are some ideas about how we might make adding and editing individual fragments easier.
=== Only auto-match the Wikidata item to the subject of the article on the first item in a Function call, not all of them ===
: This should avoid the confusing step of suggested items saying "Cairo is the Cairo of Cairo", but instead would need you to specify the item references for the others. The heuristic of only matching the first item might be enough as a starting point for many calls. We probably still want to match all dates and languages, though.
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 07:50, 31 July 2026 (UTC)
* [[User:Kambai Akau|Kambai Akau]] ([[User talk:Kambai Akau|talk]]) 00:56, 7 August 2026 (UTC)
* ''Sign here''
=== Split out some of the '…' menu on each item so you can quickly switch to a manual item reference ===
: A big stumbling block for folks was switching from an auto-matched (argument key) item or a function call to a specific item reference. This would allow you to quickly switch to that, without having to notice and go through the menu of all the other options.
* ''Sign here''
=== Re-word the labels for the abstract argument keys to be more clear about what they are ===
: We label the keys as 'wikidata item reference', 'language', and 'date'; we should make it clearer that these are 'this article's subject', 'view language', and 'view date' respectively. This would help avoid confusion about what these keys are for, and when you don't want to use them.
* [[User:Waldyrious|Waldyrious]] ([[User talk:Waldyrious|talk]]) 08:48, 1 August 2026 (UTC)
*:{{Done}} As a first step; how does that work for you? [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 15:45, 5 August 2026 (UTC)
=== Add short description fields to Functions' arguments, to help people can understand what the inputs mean when they use them ===
: For Functions, we have labels, aliases, and short descriptions, but Functions' inputs just have a single label each, which can make it hard for people to know what to put where, especially if they have unusual or unfamiliar words. Add a short description field, maybe shown via a secondary accessor like a "[[File:Codex icon info color-notice.svg|20x20px]]" rather than all the time.
* ''Sign here''
* [[User:Nux|Nux]] ([[User talk:Nux|talk]]) 11:38, 1 August 2026 (UTC) (i) icons with more info might help, like e.g. what the author means by "Hypernym" [https://abstract.wikipedia.org/w/index.php?title=Abstract_Wikipedia:Useful_functions_for_article_composition&oldid=13847].
*:@[[User:Nux|Nux]]: Can you give some more detail for where that kind of interface shows up for you? Do you mean giving more context for labels of functions' inputs? [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 15:46, 5 August 2026 (UTC)
*::@[[User:Jdforrester (WMF)|Jdforrester (WMF)]] Yes, argument description. Like a description for function [https://www.wikifunctions.org/w/index.php?title=Z37921&action=edit&uselang=en]. Like in JavaDoc. [[User:Nux|Nux]] ([[User talk:Nux|talk]]) 19:58, 5 August 2026 (UTC)
*:::Aha, right. Is it OK if I split this out into its own section? That's a very different change from what this section was written up as, based on what I heard in Paris, and should have its own discussion. [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 20:06, 5 August 2026 (UTC)
*::::Sure. [[User:Nux|Nux]] ([[User talk:Nux|talk]]) 20:12, 5 August 2026 (UTC)
* ''Sign here''
=== Example: Thing to fix (copy me!) ===
: What it would involve, and why it would be valuable.
* ''Sign here''
== New/better kinds of fragment ==
Here are some ideas for different kinds of fragments that you could use in abstract articles.
=== Add support for pulling structured data from Commons files ''e.g.'' captions ===
: Right now you can put in image files themselves, but you can't fetch any data about them. This is particularly unhelpful as the Wikidata items still use the File: name rather than the MID; we'd need to add the ability to fetch meta-data from Commons to the back-end services, like we do from Wikidata.
* ''Sign here''
=== Add support for video/audio file inclusions ===
: You can only specify image files, not audio or video files which are more complex. If demand is high we could add this sooner rather than later, though it may be complex to align with the existing workflows.
* ''Sign here''
=== Add support for galleries of media file inclusions ===
: You can create multiple media file transclusions, but it's limited to a small number and you have to do all the work of creating the styles around it. We could give a first-level media file output, if this is strongly wanted.
* ''Sign here''
=== Add support for map inclusions ===
: We don't yet support maps, which might be wanted if folks are making articles about places a lot. Full support would be quite complicated.
* [[User:EatingCarBatteries|EatingCarBatteries]] ([[User talk:EatingCarBatteries|talk]]) 03:24, 31 July 2026 (UTC)
=== Add support for chart inclusions ===
: We don't yet support charts, which might be wanted if folks are making articles about numerical things a lot. Full support would be very complicated.
* ''Sign here''
=== Abstract source mock-ups and multilingual reviews ===
:We are approaching Abstract Wikipedia from the bottom up, with very simple examples. This may be the "Wiki Way", but for software it is very unconventional, and I think it is uncertain whether it can eventually work for more advanced text. The project will have failed unless natural text similar in complexity to current Wikipedia articles can be generated. I think nobody (except possibly [[user:mahir256|Mahir Morshed]]) understands what the abstract source for more complicated sentences would look like.
:Mahir Morshed has created a multilingual text generation system called Elemwala at https://elemwala.toolforge.org/ (see his introduction at https://www.wikifunctions.org/wiki/Wikifunctions:Status_updates/2024-10-17 and his session at Wikimania). This is linked to Abstract Wikipedia, and extremely relevant to it (since it is the only real current proposal for the abstract souce that I know), but it should be noted that Elemwala is only a proposal, not Abstract Wikipedia policy. The list of constructors defines the abstract source as it is at present. Also more information on how this abstract content can be constructed can be found at https://www.wikidata.org/wiki/User:Mahir256/language-generation, with various links and references.
:It is not clear to me whether the abstract source, consisting of functions of Wikidata items backed up by lexemes, can even work at all for a wide variety of languages. Rendering a text needs much information which is special to the target language, for instance there can be genders, grammatical cases, polite forms of address, etc. Example: The Eiffel Tower (Q243) usually needs a definite article when used in English, whereas Blackpool Tower (Q880905) does not. Where should this information for the English renderer be held? It cannot be in the abstract source, since the answer is special for English; some editors of the abstract source will speak languages which do not use articles. Well, I think that this type of item needs an English lexeme with a flag to indicate the article usage, and that would be a solution. Another example relates to the grammatical tenses, voices and moods of verbs. How will that be managed? I suppose that a verb tense indication must be given as a parameter in the abstract source, but how will the values of this parameter be related to all the possible tense/voice/mood verb forms in all the languages? There are an enormous number of such diverse features; how can we be sure that there is enough information in the abstract source to do the rendering in all cases?
:I think that there is an urgent need to create examples of complex text (such as real Wikipedia articles) in the proposed abstract source. Then testers who comprehend the abstract source format and also know a relevant language should interpret the source text and confirm whether they understand it and whether they have enough information to reconstruct the text in their own language (not by software but with their own mental processes). If so, that would give much-needed confidence that the Abstract Wikipedia scheme can actually work, and I think it would advance the project by making clearer the next needed steps.
* [[User:Strobilomyces|Strobilomyces]] ([[User talk:Strobilomyces|talk]]) 20:41, 5 August 2026 (UTC)
* ''Sign here''
=== Example: Thing to fix (copy me!) ===
: What it would involve, and why it would be valuable.
* ''Sign here''
== Article editing ==
Here are some quick ideas about overall article editing, not specific to a given
=== Drag-and-drop moving of fragments, instead of having to click on the menu and the "move up/down" multiple times ===
: Drag-and-drop is a relatively familiar UX feature, and we could add an affordance for it to make it more discoverable at the same time as more usable.
* [[User:EatingCarBatteries|EatingCarBatteries]] ([[User talk:EatingCarBatteries|talk]]) 03:22, 31 July 2026 (UTC)
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 07:52, 31 July 2026 (UTC)
* [[User:Waldyrious|Waldyrious]] ([[User talk:Waldyrious|talk]]) 08:49, 1 August 2026 (UTC)
* [[User:Nux|Nux]] ([[User talk:Nux|talk]]) 11:42, 1 August 2026 (UTC) and also selecting and copying with ctrl+c/ctrl+v like in OOo/LibreOffice Calc
* [[User:Dungodung|Dungodung]] ([[User talk:Dungodung|talk]]) 15:30, 5 August 2026 (UTC)
* It's a very minor issue in the grand scheme of things, but would be nice. --[[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 16:04, 5 August 2026 (UTC)
* ''Sign here''
=== Fix the long article dual-column scroll problem where you can't see what you're editing ===
: This is particularly an issue on longer articles and smaller screens, but was mentioned as very irritating by some of you!
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 07:49, 31 July 2026 (UTC)
* It's a very minor issue in the grand scheme of things, but would be nice. --[[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 16:04, 5 August 2026 (UTC)
* [[User:Kambai Akau|Kambai Akau]] ([[User talk:Kambai Akau|talk]]) 01:03, 7 August 2026 (UTC)
* ''Sign here''
=== Support multiple sections, rather than just the lede ===
: Right now (despite some functions outputting <nowiki><h2></nowiki>s and the like), all articles are limited to just editing the lede section. We have mostly-built support for thematic sections, but this needs some polish. This would let you 'chunk up' articles, potentially editing only a section at a time for ease of use and / or collapsing those sections away to focus. We could also use this to allow external links limited to only the "external links" section (and references).
* [[User:EatingCarBatteries|EatingCarBatteries]] ([[User talk:EatingCarBatteries|talk]]) 07:12, 3 August 2026 (UTC)
=== Prompt editors with function calls based on statements in the Wikidata item ===
: Add a feature that checks the subject's Wikidata item for statements of the kind it knows about (e.g. "born 1850-01-20 in France") and match them to fragments, prompting you to add this. We'd need to work out how to link between fragment functions and Wikidata claims, and how to know whether the claims were already in the article, so this is quite complex to design and build, but would probably help a great deal.
* {{neutral|Comment}} e.g. {{P|569}}:{{P|1535}}={{Q|138748413}} w/ qual. {{P|528}}=[[Z37683]] [[User:YoshiRulz|YoshiRulz]] ([[User talk:YoshiRulz|talk]]) 00:57, 7 August 2026 (UTC)
* It would be nice for statements already present in Wikidata to be converted to form the sentences in the Abstract Wikipedia, instead of adding statements already present in Wikidata again in the A.W., as in [https://abstract.wikipedia.org/view/kcg/Q7251 Alan Turing]. [[User:Kambai Akau|Kambai Akau]] ([[User talk:Kambai Akau|talk]]) 01:02, 7 August 2026 (UTC)
* ''Sign here''
=== Prompt editors with media used on Wikipedia articles for the subject ===
: A more specialised option compared to fetching media suggestions alongside everything else from the Wikidata item would be to check for the main/first image on any existing Wikipedia articles and suggesting that if it's not already set.
* ''Sign here''
=== Fill in the parameters at copy/paste ===
: Fill in the parameters at copy/paste if the number and types of parameters match. That is especialy usefull when copying a new function from one language to an other. Currenltly every parameter has to be filled manually.
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 22:25, 5 August 2026 (UTC) (as proposer) I just created {{Z|Z38911}} and it took me very long to fill all 30! parameters correctly~
* [[User:Kambai Akau|Kambai Akau]] ([[User talk:Kambai Akau|talk]]) 01:21, 7 August 2026 (UTC)
* ''Sign here''
=== Example: Thing to fix (copy me!) ===
: What it would involve, and why it would be valuable.
* This could be a useful shortcut if the Wikidata statements don't get called automatically. [[User:Kambai Akau|Kambai Akau]] ([[User talk:Kambai Akau|talk]]) 01:20, 7 August 2026 (UTC)
* ''Sign here''
== Any other ideas you might have ==
The sections above aren't everything. What else is something you'd like fixed?
=== Make it more obvious in the search whether there's an existing abstract article or not ===
: Right now we just add "– AW" to the end of search results when there's an existing article; if we make it clearer whether the link is a "read this" or "create this" link, folks won't be surprised when they click it.
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 15:58, 1 August 2026 (UTC)
* [[User:Kambai Akau|Kambai Akau]] ([[User talk:Kambai Akau|talk]]) 01:15, 7 August 2026 (UTC)
* ''Sign here''
=== Auto-linking new Abstract Wikipedia articles to their Wikidata counterparts ===
: Right now people need to manually say that ''e.g.'' Q90 is the same as Q90, which takes time and isn't obvious. If we did this automatically as articles were created, the workflow would be easier to understand.
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 15:56, 1 August 2026 (UTC)
* It's a very minor issue in the grand scheme of things, but would be nice. --[[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 16:03, 5 August 2026 (UTC)
* [[User:Kambai Akau|Kambai Akau]] ([[User talk:Kambai Akau|talk]]) 01:14, 7 August 2026 (UTC)
* ''Sign here''
=== Show labels of talk pages ===
: Show labels of Zid's talk pages on recent changes, watchlist and also on Categories like [[:Category:English natural language generation functions|this one]]. Idem for Qid's talk pages on Abstract Wikipedia
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 17:22, 1 August 2026 (UTC) (as proposer)
* It's a very minor issue in the grand scheme of things, but would be nice. --[[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 16:03, 5 August 2026 (UTC)
* ''Sign here''
=== Enlarge the field for labels ===
: Currently the field for labels can hold a maximum of 50 characters. See for example {{Z|Z32398}}. Frequently this is not enough and abbreviation have to be made. That makes the function names confusing and not consistent.
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 17:37, 1 August 2026 (UTC) (as proposer)
* [[User:EatingCarBatteries|EatingCarBatteries]] ([[User talk:EatingCarBatteries|talk]]) 20:59, 3 August 2026 (UTC)
* [[User:Strobilomyces|Strobilomyces]] ([[User talk:Strobilomyces|talk]]) 16:09, 5 August 2026 (UTC)
* ''Sign here''
=== Support wikitext in functions output ===
: Wikifunctions don't support wikitext. They can only output unparseable plain text or HTML. I know that the page [[:f:Wikifunctions:Embedded function calls]] says very clearly that wikitext will never be supported. But this is the number one thing that causes me not to be motivated to use functions, and I suspect that I'm not alone. So perhaps you could reconsider it.
* [[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 16:01, 5 August 2026 (UTC)
** {{ping|Amire80|p=,}} {{ping|HenkvD}} What would you do with the produced Wikitext? Copy it into an existing page on one of the sister projects? [[User:YoshiRulz|YoshiRulz]] ([[User talk:YoshiRulz|talk]]) 01:01, 7 August 2026 (UTC)
**:The same things that everyone does with templates and modules. [[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 02:50, 7 August 2026 (UTC)
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 22:11, 5 August 2026 (UTC) Without wikitext the Abstract Wikipedia is not a real Wikipedia. Using wikitext code for bold, italic etc. Maybe also for Wikilinks.
* ''Sign here''
=== Completely change the UI of compositions ===
: I don't get compositions. A few people get them, but a lot of people don't. I mostly don't. When I try to read existing compositions, their deeply-nested hierarchy immediately confuses me, and I'm almost always afraid of editing anything. And I barely know how to start a new composition. The "clipboard" feature, which was added a few months ago, makes it a little bit less frustrating. But only a little bit; it doesn't solve the big issue. Creating and editing compositions is the only way to edit abstract articles, and it's very commonly needed on Wikifunctions, too, so if a lot of people have a hard time understanding how to do it, neither project will acquire a lot of editors. If you ask me, I'd do away with them completely and just use Python or JavaScript (or Lua!) code.
* [[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 16:01, 5 August 2026 (UTC)
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 22:18, 5 August 2026 (UTC) I don't propose to get rid of compositions, but make the default output more readable by automatically start a new function on a new line, and indent automatically. Also in read mode.
* Same. It's frustrating to have to click my mouse 10 times through a bunch of functions just to change an input value [[User:EatingCarBatteries|EatingCarBatteries]] ([[User talk:EatingCarBatteries|talk]]) 03:38, 6 August 2026 (UTC)
* ''Sign here''
=== Allow choice of implementation to be forced ===
: Where a function has multiple implementations, it would be helpful to be able to force the orchestrator to select a particular implementation for a particular run (or a particular session or a particular user). This would often be very helpful for debugging, or when an implementation appears to have a bug. I am not too sure how that could work - I propose that each user should be able to mark any implementation as always to be selected in their case (or perhaps as never to be selected). Perhaps only in the current session.
:It would even be useful to have a mode in a given session where the orchestrator always selects the first (or last) implementation for all functions - then one would at least know which implementation was going to be called!
* [[User:Strobilomyces|Strobilomyces]] ([[User talk:Strobilomyces|talk]]) 16:35, 5 August 2026 (UTC)
*:@[[User:Strobilomyces|Strobilomyces]]: The orchestrator will (currently) only ever chose the first connected implementation (for a language we support). Maybe we could make it clearer? For debugging, the idea is that you can do that from the implementation page whether or not it's connected, such as on [[Z15788]]. We could highlight that, perhaps? Can you give an example outside of debugging where you might want to allow multiple implementations to be connected but choose different implementations at run-time? I cannot suggest what we could do without understanding better the need, sorry! [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 17:30, 5 August 2026 (UTC)
*::Clarification: "First connected implementation" means the first one listed in the JSON version of the function (which is sometimes promoted or demoted by Wikilambda bot), rather than the first one displayed in the UI list, or the first one that was ever connected. Highlighting this implementation in the UI would be nice. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 04:15, 6 August 2026 (UTC)
*:::Yup, good point; we could definitely improve the UX here to indicate which is the "winning" implementation. [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 14:34, 6 August 2026 (UTC)
*::@[[User:Jdforrester (WMF)|Jdforrester (WMF)]] The ability to test a given implementation directly is very useful. But functions often call other functions and it makes debugging difficult if it is not possible to tell which implementation will be executed or has been executed at the lower level. If it currently always the same version, then that is good. I would like to know how to tell which version will be or has been executed. How do I see the JSON version of the subfunction? Do I have to use the API? [[User:Strobilomyces|Strobilomyces]] ([[User talk:Strobilomyces|talk]]) 13:27, 6 August 2026 (UTC)
*:::I find it by looking at the history and comparing diffs. Here's a diff showing that Wikilambda bot promoted the JS implementation to the top: https://www.wikifunctions.org/w/index.php?title=Z13521&diff=289160&oldid=232341 . --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 13:46, 6 August 2026 (UTC)
*::A particular case where the preferred implementation should not be used is when testing a recursive implementation. [[User:GrounderUK|GrounderUK]] ([[User talk:GrounderUK|talk]]) 18:04, 6 August 2026 (UTC)
*:You can run {{Z|Z35874}} to get the identifier of the currently preferred implementation for a specified function. You could also have [https://www.wikifunctions.org/view/en/Z37465?call=%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z37465%22%2C%22Z37465K1%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z35874%22%2C%22Z35874K1%22%3A%22Z10000%22%7D%2C%22Z37465K2%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z35874%22%2C%22Z35874K1%22%3A%22Z10000%22%7D%7D a hyperlink to the implementation].
*:When browsing, if you click on any of a function’s test cases, the implementations that are connected to the function are listed in the correct order in the Implementations box. This is also true when adding a new test case to a function.
*:Or we could [https://www.wikifunctions.org/view/en/Z801?call=%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z801%22%2C%22Z801K1%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z33470%22%2C%22Z33470K1%22%3A%22view+function%E2%80%99s+JSON%22%2C%22Z33470K2%22%3A%22a%22%2C%22Z33470K3%22%3A%7B%22Z1K1%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z883%22%2C%22Z883K1%22%3A%22Z6%22%2C%22Z883K2%22%3A%22Z1%22%7D%2C%22K1%22%3A%5B%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z882%22%2C%22Z882K1%22%3A%22Z6%22%2C%22Z882K2%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z881%22%2C%22Z881K1%22%3A%22Z6%22%7D%7D%2C%7B%22Z1K1%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z882%22%2C%22Z882K1%22%3A%22Z6%22%2C%22Z882K2%22%3A%22Z1%22%7D%2C%22K1%22%3A%22href%22%2C%22K2%22%3A%5B%22Z6%22%2C%22https%3A%2F%2Fwww.wikifunctions.org%2Fwiki%2F%22%2C%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z28231%22%2C%22Z28231K1%22%3A%22Z801%22%7D%2C%22%3Faction%3Draw%22%5D%7D%5D%7D%7D%7D turn this into a function], I suppose, or [https://www.wikifunctions.org/view/en/Z801?call=%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z801%22%2C%22Z801K1%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z811%22%2C%22Z811K1%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z803%22%2C%22Z803K1%22%3A%7B%22Z1K1%22%3A%22Z39%22%2C%22Z39K1%22%3A%22K1%22%7D%2C%22Z803K2%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z804%22%2C%22Z804K1%22%3A%5B%22Z39%22%2C%7B%22Z1K1%22%3A%22Z39%22%2C%22Z39K1%22%3A%22Z8K4%22%7D%5D%2C%22Z804K2%22%3A%22Z10000%22%7D%7D%7D%7D just this]. [[User:GrounderUK|GrounderUK]] ([[User talk:GrounderUK|talk]]) 17:51, 6 August 2026 (UTC)
* ''Sign here''
=== Allow Wikifunctions functions to be called from Python and Javascript ===
: As indicated in an earlier suggestion, it is not convenient to write complicated code in the form of compositions. I think far more code would be contributed if it could be done in Python or Javascript.
* [[User:Strobilomyces|Strobilomyces]] ([[User talk:Strobilomyces|talk]]) 16:44, 5 August 2026 (UTC)
* ''Sign here''
=== Example: Thing to fix (copy me!) ===
: What it would involve, and why it would be valuable.
* ''Sign here''
== Thank you! ==
It was great to speak to and hear from so many of you.
gnqtskhwvcnuqu0g0pqzm8pya9oit0b
297082
297081
2026-08-07T03:15:10Z
99of9
1622
/* Add short description fields to Functions' arguments, to help people can understand what the inputs mean when they use them */ Reply
297082
wikitext
text/x-wiki
{{seealso|WF:Feature petitions}}
Thank you to so many of you who came in-person and online to the workshop at Wikimania last week around creating Abstract Wikipedia articles.
__NEWSECTIONLINK__
Based on your comments there and things you ran into or mentioned, we've pulled together a quick ideas list of possible improvements (alongside our work on faster and better NLG support, working with communities to consider piloting Abstract Wikipedia on their wiki, and other major parts of the annual plan).
Please indicate which items you think we should work on soonest by signing your name (<nowiki>~~~~</nowiki>) below them. We'll probably work on many of these, but the count of "votes" and arguments will help guide us in which ones we prioritise.
== Individual fragment editing ==
These are some ideas about how we might make adding and editing individual fragments easier.
=== Only auto-match the Wikidata item to the subject of the article on the first item in a Function call, not all of them ===
: This should avoid the confusing step of suggested items saying "Cairo is the Cairo of Cairo", but instead would need you to specify the item references for the others. The heuristic of only matching the first item might be enough as a starting point for many calls. We probably still want to match all dates and languages, though.
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 07:50, 31 July 2026 (UTC)
* [[User:Kambai Akau|Kambai Akau]] ([[User talk:Kambai Akau|talk]]) 00:56, 7 August 2026 (UTC)
* ''Sign here''
=== Split out some of the '…' menu on each item so you can quickly switch to a manual item reference ===
: A big stumbling block for folks was switching from an auto-matched (argument key) item or a function call to a specific item reference. This would allow you to quickly switch to that, without having to notice and go through the menu of all the other options.
* ''Sign here''
=== Re-word the labels for the abstract argument keys to be more clear about what they are ===
: We label the keys as 'wikidata item reference', 'language', and 'date'; we should make it clearer that these are 'this article's subject', 'view language', and 'view date' respectively. This would help avoid confusion about what these keys are for, and when you don't want to use them.
* [[User:Waldyrious|Waldyrious]] ([[User talk:Waldyrious|talk]]) 08:48, 1 August 2026 (UTC)
*:{{Done}} As a first step; how does that work for you? [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 15:45, 5 August 2026 (UTC)
=== Add short description fields to Functions' arguments, to help people can understand what the inputs mean when they use them ===
: For Functions, we have labels, aliases, and short descriptions, but Functions' inputs just have a single label each, which can make it hard for people to know what to put where, especially if they have unusual or unfamiliar words. Add a short description field, maybe shown via a secondary accessor like a "[[File:Codex icon info color-notice.svg|20x20px]]" rather than all the time.
* ''Sign here''
* [[User:Nux|Nux]] ([[User talk:Nux|talk]]) 11:38, 1 August 2026 (UTC) (i) icons with more info might help, like e.g. what the author means by "Hypernym" [https://abstract.wikipedia.org/w/index.php?title=Abstract_Wikipedia:Useful_functions_for_article_composition&oldid=13847].
*:@[[User:Nux|Nux]]: Can you give some more detail for where that kind of interface shows up for you? Do you mean giving more context for labels of functions' inputs? [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 15:46, 5 August 2026 (UTC)
*::@[[User:Jdforrester (WMF)|Jdforrester (WMF)]] Yes, argument description. Like a description for function [https://www.wikifunctions.org/w/index.php?title=Z37921&action=edit&uselang=en]. Like in JavaDoc. [[User:Nux|Nux]] ([[User talk:Nux|talk]]) 19:58, 5 August 2026 (UTC)
*:::Aha, right. Is it OK if I split this out into its own section? That's a very different change from what this section was written up as, based on what I heard in Paris, and should have its own discussion. [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 20:06, 5 August 2026 (UTC)
*::::Sure. [[User:Nux|Nux]] ([[User talk:Nux|talk]]) 20:12, 5 August 2026 (UTC)
*:As function writers we can probably do a better job of using the full length of the label we are already allowed (e.g. to explain what hypernym means in that context). --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 03:15, 7 August 2026 (UTC)
* ''Sign here''
=== Example: Thing to fix (copy me!) ===
: What it would involve, and why it would be valuable.
* ''Sign here''
== New/better kinds of fragment ==
Here are some ideas for different kinds of fragments that you could use in abstract articles.
=== Add support for pulling structured data from Commons files ''e.g.'' captions ===
: Right now you can put in image files themselves, but you can't fetch any data about them. This is particularly unhelpful as the Wikidata items still use the File: name rather than the MID; we'd need to add the ability to fetch meta-data from Commons to the back-end services, like we do from Wikidata.
* ''Sign here''
=== Add support for video/audio file inclusions ===
: You can only specify image files, not audio or video files which are more complex. If demand is high we could add this sooner rather than later, though it may be complex to align with the existing workflows.
* ''Sign here''
=== Add support for galleries of media file inclusions ===
: You can create multiple media file transclusions, but it's limited to a small number and you have to do all the work of creating the styles around it. We could give a first-level media file output, if this is strongly wanted.
* ''Sign here''
=== Add support for map inclusions ===
: We don't yet support maps, which might be wanted if folks are making articles about places a lot. Full support would be quite complicated.
* [[User:EatingCarBatteries|EatingCarBatteries]] ([[User talk:EatingCarBatteries|talk]]) 03:24, 31 July 2026 (UTC)
=== Add support for chart inclusions ===
: We don't yet support charts, which might be wanted if folks are making articles about numerical things a lot. Full support would be very complicated.
* ''Sign here''
=== Abstract source mock-ups and multilingual reviews ===
:We are approaching Abstract Wikipedia from the bottom up, with very simple examples. This may be the "Wiki Way", but for software it is very unconventional, and I think it is uncertain whether it can eventually work for more advanced text. The project will have failed unless natural text similar in complexity to current Wikipedia articles can be generated. I think nobody (except possibly [[user:mahir256|Mahir Morshed]]) understands what the abstract source for more complicated sentences would look like.
:Mahir Morshed has created a multilingual text generation system called Elemwala at https://elemwala.toolforge.org/ (see his introduction at https://www.wikifunctions.org/wiki/Wikifunctions:Status_updates/2024-10-17 and his session at Wikimania). This is linked to Abstract Wikipedia, and extremely relevant to it (since it is the only real current proposal for the abstract souce that I know), but it should be noted that Elemwala is only a proposal, not Abstract Wikipedia policy. The list of constructors defines the abstract source as it is at present. Also more information on how this abstract content can be constructed can be found at https://www.wikidata.org/wiki/User:Mahir256/language-generation, with various links and references.
:It is not clear to me whether the abstract source, consisting of functions of Wikidata items backed up by lexemes, can even work at all for a wide variety of languages. Rendering a text needs much information which is special to the target language, for instance there can be genders, grammatical cases, polite forms of address, etc. Example: The Eiffel Tower (Q243) usually needs a definite article when used in English, whereas Blackpool Tower (Q880905) does not. Where should this information for the English renderer be held? It cannot be in the abstract source, since the answer is special for English; some editors of the abstract source will speak languages which do not use articles. Well, I think that this type of item needs an English lexeme with a flag to indicate the article usage, and that would be a solution. Another example relates to the grammatical tenses, voices and moods of verbs. How will that be managed? I suppose that a verb tense indication must be given as a parameter in the abstract source, but how will the values of this parameter be related to all the possible tense/voice/mood verb forms in all the languages? There are an enormous number of such diverse features; how can we be sure that there is enough information in the abstract source to do the rendering in all cases?
:I think that there is an urgent need to create examples of complex text (such as real Wikipedia articles) in the proposed abstract source. Then testers who comprehend the abstract source format and also know a relevant language should interpret the source text and confirm whether they understand it and whether they have enough information to reconstruct the text in their own language (not by software but with their own mental processes). If so, that would give much-needed confidence that the Abstract Wikipedia scheme can actually work, and I think it would advance the project by making clearer the next needed steps.
* [[User:Strobilomyces|Strobilomyces]] ([[User talk:Strobilomyces|talk]]) 20:41, 5 August 2026 (UTC)
* ''Sign here''
=== Example: Thing to fix (copy me!) ===
: What it would involve, and why it would be valuable.
* ''Sign here''
== Article editing ==
Here are some quick ideas about overall article editing, not specific to a given
=== Drag-and-drop moving of fragments, instead of having to click on the menu and the "move up/down" multiple times ===
: Drag-and-drop is a relatively familiar UX feature, and we could add an affordance for it to make it more discoverable at the same time as more usable.
* [[User:EatingCarBatteries|EatingCarBatteries]] ([[User talk:EatingCarBatteries|talk]]) 03:22, 31 July 2026 (UTC)
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 07:52, 31 July 2026 (UTC)
* [[User:Waldyrious|Waldyrious]] ([[User talk:Waldyrious|talk]]) 08:49, 1 August 2026 (UTC)
* [[User:Nux|Nux]] ([[User talk:Nux|talk]]) 11:42, 1 August 2026 (UTC) and also selecting and copying with ctrl+c/ctrl+v like in OOo/LibreOffice Calc
* [[User:Dungodung|Dungodung]] ([[User talk:Dungodung|talk]]) 15:30, 5 August 2026 (UTC)
* It's a very minor issue in the grand scheme of things, but would be nice. --[[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 16:04, 5 August 2026 (UTC)
* ''Sign here''
=== Fix the long article dual-column scroll problem where you can't see what you're editing ===
: This is particularly an issue on longer articles and smaller screens, but was mentioned as very irritating by some of you!
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 07:49, 31 July 2026 (UTC)
* It's a very minor issue in the grand scheme of things, but would be nice. --[[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 16:04, 5 August 2026 (UTC)
* [[User:Kambai Akau|Kambai Akau]] ([[User talk:Kambai Akau|talk]]) 01:03, 7 August 2026 (UTC)
* ''Sign here''
=== Support multiple sections, rather than just the lede ===
: Right now (despite some functions outputting <nowiki><h2></nowiki>s and the like), all articles are limited to just editing the lede section. We have mostly-built support for thematic sections, but this needs some polish. This would let you 'chunk up' articles, potentially editing only a section at a time for ease of use and / or collapsing those sections away to focus. We could also use this to allow external links limited to only the "external links" section (and references).
* [[User:EatingCarBatteries|EatingCarBatteries]] ([[User talk:EatingCarBatteries|talk]]) 07:12, 3 August 2026 (UTC)
=== Prompt editors with function calls based on statements in the Wikidata item ===
: Add a feature that checks the subject's Wikidata item for statements of the kind it knows about (e.g. "born 1850-01-20 in France") and match them to fragments, prompting you to add this. We'd need to work out how to link between fragment functions and Wikidata claims, and how to know whether the claims were already in the article, so this is quite complex to design and build, but would probably help a great deal.
* {{neutral|Comment}} e.g. {{P|569}}:{{P|1535}}={{Q|138748413}} w/ qual. {{P|528}}=[[Z37683]] [[User:YoshiRulz|YoshiRulz]] ([[User talk:YoshiRulz|talk]]) 00:57, 7 August 2026 (UTC)
* It would be nice for statements already present in Wikidata to be converted to form the sentences in the Abstract Wikipedia, instead of adding statements already present in Wikidata again in the A.W., as in [https://abstract.wikipedia.org/view/kcg/Q7251 Alan Turing]. [[User:Kambai Akau|Kambai Akau]] ([[User talk:Kambai Akau|talk]]) 01:02, 7 August 2026 (UTC)
* ''Sign here''
=== Prompt editors with media used on Wikipedia articles for the subject ===
: A more specialised option compared to fetching media suggestions alongside everything else from the Wikidata item would be to check for the main/first image on any existing Wikipedia articles and suggesting that if it's not already set.
* ''Sign here''
=== Fill in the parameters at copy/paste ===
: Fill in the parameters at copy/paste if the number and types of parameters match. That is especialy usefull when copying a new function from one language to an other. Currenltly every parameter has to be filled manually.
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 22:25, 5 August 2026 (UTC) (as proposer) I just created {{Z|Z38911}} and it took me very long to fill all 30! parameters correctly~
* [[User:Kambai Akau|Kambai Akau]] ([[User talk:Kambai Akau|talk]]) 01:21, 7 August 2026 (UTC)
* ''Sign here''
=== Example: Thing to fix (copy me!) ===
: What it would involve, and why it would be valuable.
* This could be a useful shortcut if the Wikidata statements don't get called automatically. [[User:Kambai Akau|Kambai Akau]] ([[User talk:Kambai Akau|talk]]) 01:20, 7 August 2026 (UTC)
* ''Sign here''
== Any other ideas you might have ==
The sections above aren't everything. What else is something you'd like fixed?
=== Make it more obvious in the search whether there's an existing abstract article or not ===
: Right now we just add "– AW" to the end of search results when there's an existing article; if we make it clearer whether the link is a "read this" or "create this" link, folks won't be surprised when they click it.
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 15:58, 1 August 2026 (UTC)
* [[User:Kambai Akau|Kambai Akau]] ([[User talk:Kambai Akau|talk]]) 01:15, 7 August 2026 (UTC)
* ''Sign here''
=== Auto-linking new Abstract Wikipedia articles to their Wikidata counterparts ===
: Right now people need to manually say that ''e.g.'' Q90 is the same as Q90, which takes time and isn't obvious. If we did this automatically as articles were created, the workflow would be easier to understand.
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 15:56, 1 August 2026 (UTC)
* It's a very minor issue in the grand scheme of things, but would be nice. --[[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 16:03, 5 August 2026 (UTC)
* [[User:Kambai Akau|Kambai Akau]] ([[User talk:Kambai Akau|talk]]) 01:14, 7 August 2026 (UTC)
* ''Sign here''
=== Show labels of talk pages ===
: Show labels of Zid's talk pages on recent changes, watchlist and also on Categories like [[:Category:English natural language generation functions|this one]]. Idem for Qid's talk pages on Abstract Wikipedia
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 17:22, 1 August 2026 (UTC) (as proposer)
* It's a very minor issue in the grand scheme of things, but would be nice. --[[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 16:03, 5 August 2026 (UTC)
* ''Sign here''
=== Enlarge the field for labels ===
: Currently the field for labels can hold a maximum of 50 characters. See for example {{Z|Z32398}}. Frequently this is not enough and abbreviation have to be made. That makes the function names confusing and not consistent.
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 17:37, 1 August 2026 (UTC) (as proposer)
* [[User:EatingCarBatteries|EatingCarBatteries]] ([[User talk:EatingCarBatteries|talk]]) 20:59, 3 August 2026 (UTC)
* [[User:Strobilomyces|Strobilomyces]] ([[User talk:Strobilomyces|talk]]) 16:09, 5 August 2026 (UTC)
* ''Sign here''
=== Support wikitext in functions output ===
: Wikifunctions don't support wikitext. They can only output unparseable plain text or HTML. I know that the page [[:f:Wikifunctions:Embedded function calls]] says very clearly that wikitext will never be supported. But this is the number one thing that causes me not to be motivated to use functions, and I suspect that I'm not alone. So perhaps you could reconsider it.
* [[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 16:01, 5 August 2026 (UTC)
** {{ping|Amire80|p=,}} {{ping|HenkvD}} What would you do with the produced Wikitext? Copy it into an existing page on one of the sister projects? [[User:YoshiRulz|YoshiRulz]] ([[User talk:YoshiRulz|talk]]) 01:01, 7 August 2026 (UTC)
**:The same things that everyone does with templates and modules. [[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 02:50, 7 August 2026 (UTC)
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 22:11, 5 August 2026 (UTC) Without wikitext the Abstract Wikipedia is not a real Wikipedia. Using wikitext code for bold, italic etc. Maybe also for Wikilinks.
* ''Sign here''
=== Completely change the UI of compositions ===
: I don't get compositions. A few people get them, but a lot of people don't. I mostly don't. When I try to read existing compositions, their deeply-nested hierarchy immediately confuses me, and I'm almost always afraid of editing anything. And I barely know how to start a new composition. The "clipboard" feature, which was added a few months ago, makes it a little bit less frustrating. But only a little bit; it doesn't solve the big issue. Creating and editing compositions is the only way to edit abstract articles, and it's very commonly needed on Wikifunctions, too, so if a lot of people have a hard time understanding how to do it, neither project will acquire a lot of editors. If you ask me, I'd do away with them completely and just use Python or JavaScript (or Lua!) code.
* [[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 16:01, 5 August 2026 (UTC)
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 22:18, 5 August 2026 (UTC) I don't propose to get rid of compositions, but make the default output more readable by automatically start a new function on a new line, and indent automatically. Also in read mode.
* Same. It's frustrating to have to click my mouse 10 times through a bunch of functions just to change an input value [[User:EatingCarBatteries|EatingCarBatteries]] ([[User talk:EatingCarBatteries|talk]]) 03:38, 6 August 2026 (UTC)
* ''Sign here''
=== Allow choice of implementation to be forced ===
: Where a function has multiple implementations, it would be helpful to be able to force the orchestrator to select a particular implementation for a particular run (or a particular session or a particular user). This would often be very helpful for debugging, or when an implementation appears to have a bug. I am not too sure how that could work - I propose that each user should be able to mark any implementation as always to be selected in their case (or perhaps as never to be selected). Perhaps only in the current session.
:It would even be useful to have a mode in a given session where the orchestrator always selects the first (or last) implementation for all functions - then one would at least know which implementation was going to be called!
* [[User:Strobilomyces|Strobilomyces]] ([[User talk:Strobilomyces|talk]]) 16:35, 5 August 2026 (UTC)
*:@[[User:Strobilomyces|Strobilomyces]]: The orchestrator will (currently) only ever chose the first connected implementation (for a language we support). Maybe we could make it clearer? For debugging, the idea is that you can do that from the implementation page whether or not it's connected, such as on [[Z15788]]. We could highlight that, perhaps? Can you give an example outside of debugging where you might want to allow multiple implementations to be connected but choose different implementations at run-time? I cannot suggest what we could do without understanding better the need, sorry! [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 17:30, 5 August 2026 (UTC)
*::Clarification: "First connected implementation" means the first one listed in the JSON version of the function (which is sometimes promoted or demoted by Wikilambda bot), rather than the first one displayed in the UI list, or the first one that was ever connected. Highlighting this implementation in the UI would be nice. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 04:15, 6 August 2026 (UTC)
*:::Yup, good point; we could definitely improve the UX here to indicate which is the "winning" implementation. [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 14:34, 6 August 2026 (UTC)
*::@[[User:Jdforrester (WMF)|Jdforrester (WMF)]] The ability to test a given implementation directly is very useful. But functions often call other functions and it makes debugging difficult if it is not possible to tell which implementation will be executed or has been executed at the lower level. If it currently always the same version, then that is good. I would like to know how to tell which version will be or has been executed. How do I see the JSON version of the subfunction? Do I have to use the API? [[User:Strobilomyces|Strobilomyces]] ([[User talk:Strobilomyces|talk]]) 13:27, 6 August 2026 (UTC)
*:::I find it by looking at the history and comparing diffs. Here's a diff showing that Wikilambda bot promoted the JS implementation to the top: https://www.wikifunctions.org/w/index.php?title=Z13521&diff=289160&oldid=232341 . --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 13:46, 6 August 2026 (UTC)
*::A particular case where the preferred implementation should not be used is when testing a recursive implementation. [[User:GrounderUK|GrounderUK]] ([[User talk:GrounderUK|talk]]) 18:04, 6 August 2026 (UTC)
*:You can run {{Z|Z35874}} to get the identifier of the currently preferred implementation for a specified function. You could also have [https://www.wikifunctions.org/view/en/Z37465?call=%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z37465%22%2C%22Z37465K1%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z35874%22%2C%22Z35874K1%22%3A%22Z10000%22%7D%2C%22Z37465K2%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z35874%22%2C%22Z35874K1%22%3A%22Z10000%22%7D%7D a hyperlink to the implementation].
*:When browsing, if you click on any of a function’s test cases, the implementations that are connected to the function are listed in the correct order in the Implementations box. This is also true when adding a new test case to a function.
*:Or we could [https://www.wikifunctions.org/view/en/Z801?call=%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z801%22%2C%22Z801K1%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z33470%22%2C%22Z33470K1%22%3A%22view+function%E2%80%99s+JSON%22%2C%22Z33470K2%22%3A%22a%22%2C%22Z33470K3%22%3A%7B%22Z1K1%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z883%22%2C%22Z883K1%22%3A%22Z6%22%2C%22Z883K2%22%3A%22Z1%22%7D%2C%22K1%22%3A%5B%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z882%22%2C%22Z882K1%22%3A%22Z6%22%2C%22Z882K2%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z881%22%2C%22Z881K1%22%3A%22Z6%22%7D%7D%2C%7B%22Z1K1%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z882%22%2C%22Z882K1%22%3A%22Z6%22%2C%22Z882K2%22%3A%22Z1%22%7D%2C%22K1%22%3A%22href%22%2C%22K2%22%3A%5B%22Z6%22%2C%22https%3A%2F%2Fwww.wikifunctions.org%2Fwiki%2F%22%2C%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z28231%22%2C%22Z28231K1%22%3A%22Z801%22%7D%2C%22%3Faction%3Draw%22%5D%7D%5D%7D%7D%7D turn this into a function], I suppose, or [https://www.wikifunctions.org/view/en/Z801?call=%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z801%22%2C%22Z801K1%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z811%22%2C%22Z811K1%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z803%22%2C%22Z803K1%22%3A%7B%22Z1K1%22%3A%22Z39%22%2C%22Z39K1%22%3A%22K1%22%7D%2C%22Z803K2%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z804%22%2C%22Z804K1%22%3A%5B%22Z39%22%2C%7B%22Z1K1%22%3A%22Z39%22%2C%22Z39K1%22%3A%22Z8K4%22%7D%5D%2C%22Z804K2%22%3A%22Z10000%22%7D%7D%7D%7D just this]. [[User:GrounderUK|GrounderUK]] ([[User talk:GrounderUK|talk]]) 17:51, 6 August 2026 (UTC)
* ''Sign here''
=== Allow Wikifunctions functions to be called from Python and Javascript ===
: As indicated in an earlier suggestion, it is not convenient to write complicated code in the form of compositions. I think far more code would be contributed if it could be done in Python or Javascript.
* [[User:Strobilomyces|Strobilomyces]] ([[User talk:Strobilomyces|talk]]) 16:44, 5 August 2026 (UTC)
* ''Sign here''
=== Example: Thing to fix (copy me!) ===
: What it would involve, and why it would be valuable.
* ''Sign here''
== Thank you! ==
It was great to speak to and hear from so many of you.
hq7qkaokauqyc5hjdli7q4z8hzud7vk
297128
297082
2026-08-07T05:45:03Z
HenkvD
1290
/* Support wikitext in functions output */ Reply
297128
wikitext
text/x-wiki
{{seealso|WF:Feature petitions}}
Thank you to so many of you who came in-person and online to the workshop at Wikimania last week around creating Abstract Wikipedia articles.
__NEWSECTIONLINK__
Based on your comments there and things you ran into or mentioned, we've pulled together a quick ideas list of possible improvements (alongside our work on faster and better NLG support, working with communities to consider piloting Abstract Wikipedia on their wiki, and other major parts of the annual plan).
Please indicate which items you think we should work on soonest by signing your name (<nowiki>~~~~</nowiki>) below them. We'll probably work on many of these, but the count of "votes" and arguments will help guide us in which ones we prioritise.
== Individual fragment editing ==
These are some ideas about how we might make adding and editing individual fragments easier.
=== Only auto-match the Wikidata item to the subject of the article on the first item in a Function call, not all of them ===
: This should avoid the confusing step of suggested items saying "Cairo is the Cairo of Cairo", but instead would need you to specify the item references for the others. The heuristic of only matching the first item might be enough as a starting point for many calls. We probably still want to match all dates and languages, though.
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 07:50, 31 July 2026 (UTC)
* [[User:Kambai Akau|Kambai Akau]] ([[User talk:Kambai Akau|talk]]) 00:56, 7 August 2026 (UTC)
* ''Sign here''
=== Split out some of the '…' menu on each item so you can quickly switch to a manual item reference ===
: A big stumbling block for folks was switching from an auto-matched (argument key) item or a function call to a specific item reference. This would allow you to quickly switch to that, without having to notice and go through the menu of all the other options.
* ''Sign here''
=== Re-word the labels for the abstract argument keys to be more clear about what they are ===
: We label the keys as 'wikidata item reference', 'language', and 'date'; we should make it clearer that these are 'this article's subject', 'view language', and 'view date' respectively. This would help avoid confusion about what these keys are for, and when you don't want to use them.
* [[User:Waldyrious|Waldyrious]] ([[User talk:Waldyrious|talk]]) 08:48, 1 August 2026 (UTC)
*:{{Done}} As a first step; how does that work for you? [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 15:45, 5 August 2026 (UTC)
=== Add short description fields to Functions' arguments, to help people can understand what the inputs mean when they use them ===
: For Functions, we have labels, aliases, and short descriptions, but Functions' inputs just have a single label each, which can make it hard for people to know what to put where, especially if they have unusual or unfamiliar words. Add a short description field, maybe shown via a secondary accessor like a "[[File:Codex icon info color-notice.svg|20x20px]]" rather than all the time.
* ''Sign here''
* [[User:Nux|Nux]] ([[User talk:Nux|talk]]) 11:38, 1 August 2026 (UTC) (i) icons with more info might help, like e.g. what the author means by "Hypernym" [https://abstract.wikipedia.org/w/index.php?title=Abstract_Wikipedia:Useful_functions_for_article_composition&oldid=13847].
*:@[[User:Nux|Nux]]: Can you give some more detail for where that kind of interface shows up for you? Do you mean giving more context for labels of functions' inputs? [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 15:46, 5 August 2026 (UTC)
*::@[[User:Jdforrester (WMF)|Jdforrester (WMF)]] Yes, argument description. Like a description for function [https://www.wikifunctions.org/w/index.php?title=Z37921&action=edit&uselang=en]. Like in JavaDoc. [[User:Nux|Nux]] ([[User talk:Nux|talk]]) 19:58, 5 August 2026 (UTC)
*:::Aha, right. Is it OK if I split this out into its own section? That's a very different change from what this section was written up as, based on what I heard in Paris, and should have its own discussion. [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 20:06, 5 August 2026 (UTC)
*::::Sure. [[User:Nux|Nux]] ([[User talk:Nux|talk]]) 20:12, 5 August 2026 (UTC)
*:As function writers we can probably do a better job of using the full length of the label we are already allowed (e.g. to explain what hypernym means in that context). --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 03:15, 7 August 2026 (UTC)
* ''Sign here''
=== Example: Thing to fix (copy me!) ===
: What it would involve, and why it would be valuable.
* ''Sign here''
== New/better kinds of fragment ==
Here are some ideas for different kinds of fragments that you could use in abstract articles.
=== Add support for pulling structured data from Commons files ''e.g.'' captions ===
: Right now you can put in image files themselves, but you can't fetch any data about them. This is particularly unhelpful as the Wikidata items still use the File: name rather than the MID; we'd need to add the ability to fetch meta-data from Commons to the back-end services, like we do from Wikidata.
* ''Sign here''
=== Add support for video/audio file inclusions ===
: You can only specify image files, not audio or video files which are more complex. If demand is high we could add this sooner rather than later, though it may be complex to align with the existing workflows.
* ''Sign here''
=== Add support for galleries of media file inclusions ===
: You can create multiple media file transclusions, but it's limited to a small number and you have to do all the work of creating the styles around it. We could give a first-level media file output, if this is strongly wanted.
* ''Sign here''
=== Add support for map inclusions ===
: We don't yet support maps, which might be wanted if folks are making articles about places a lot. Full support would be quite complicated.
* [[User:EatingCarBatteries|EatingCarBatteries]] ([[User talk:EatingCarBatteries|talk]]) 03:24, 31 July 2026 (UTC)
=== Add support for chart inclusions ===
: We don't yet support charts, which might be wanted if folks are making articles about numerical things a lot. Full support would be very complicated.
* ''Sign here''
=== Abstract source mock-ups and multilingual reviews ===
:We are approaching Abstract Wikipedia from the bottom up, with very simple examples. This may be the "Wiki Way", but for software it is very unconventional, and I think it is uncertain whether it can eventually work for more advanced text. The project will have failed unless natural text similar in complexity to current Wikipedia articles can be generated. I think nobody (except possibly [[user:mahir256|Mahir Morshed]]) understands what the abstract source for more complicated sentences would look like.
:Mahir Morshed has created a multilingual text generation system called Elemwala at https://elemwala.toolforge.org/ (see his introduction at https://www.wikifunctions.org/wiki/Wikifunctions:Status_updates/2024-10-17 and his session at Wikimania). This is linked to Abstract Wikipedia, and extremely relevant to it (since it is the only real current proposal for the abstract souce that I know), but it should be noted that Elemwala is only a proposal, not Abstract Wikipedia policy. The list of constructors defines the abstract source as it is at present. Also more information on how this abstract content can be constructed can be found at https://www.wikidata.org/wiki/User:Mahir256/language-generation, with various links and references.
:It is not clear to me whether the abstract source, consisting of functions of Wikidata items backed up by lexemes, can even work at all for a wide variety of languages. Rendering a text needs much information which is special to the target language, for instance there can be genders, grammatical cases, polite forms of address, etc. Example: The Eiffel Tower (Q243) usually needs a definite article when used in English, whereas Blackpool Tower (Q880905) does not. Where should this information for the English renderer be held? It cannot be in the abstract source, since the answer is special for English; some editors of the abstract source will speak languages which do not use articles. Well, I think that this type of item needs an English lexeme with a flag to indicate the article usage, and that would be a solution. Another example relates to the grammatical tenses, voices and moods of verbs. How will that be managed? I suppose that a verb tense indication must be given as a parameter in the abstract source, but how will the values of this parameter be related to all the possible tense/voice/mood verb forms in all the languages? There are an enormous number of such diverse features; how can we be sure that there is enough information in the abstract source to do the rendering in all cases?
:I think that there is an urgent need to create examples of complex text (such as real Wikipedia articles) in the proposed abstract source. Then testers who comprehend the abstract source format and also know a relevant language should interpret the source text and confirm whether they understand it and whether they have enough information to reconstruct the text in their own language (not by software but with their own mental processes). If so, that would give much-needed confidence that the Abstract Wikipedia scheme can actually work, and I think it would advance the project by making clearer the next needed steps.
* [[User:Strobilomyces|Strobilomyces]] ([[User talk:Strobilomyces|talk]]) 20:41, 5 August 2026 (UTC)
* ''Sign here''
=== Example: Thing to fix (copy me!) ===
: What it would involve, and why it would be valuable.
* ''Sign here''
== Article editing ==
Here are some quick ideas about overall article editing, not specific to a given
=== Drag-and-drop moving of fragments, instead of having to click on the menu and the "move up/down" multiple times ===
: Drag-and-drop is a relatively familiar UX feature, and we could add an affordance for it to make it more discoverable at the same time as more usable.
* [[User:EatingCarBatteries|EatingCarBatteries]] ([[User talk:EatingCarBatteries|talk]]) 03:22, 31 July 2026 (UTC)
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 07:52, 31 July 2026 (UTC)
* [[User:Waldyrious|Waldyrious]] ([[User talk:Waldyrious|talk]]) 08:49, 1 August 2026 (UTC)
* [[User:Nux|Nux]] ([[User talk:Nux|talk]]) 11:42, 1 August 2026 (UTC) and also selecting and copying with ctrl+c/ctrl+v like in OOo/LibreOffice Calc
* [[User:Dungodung|Dungodung]] ([[User talk:Dungodung|talk]]) 15:30, 5 August 2026 (UTC)
* It's a very minor issue in the grand scheme of things, but would be nice. --[[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 16:04, 5 August 2026 (UTC)
* ''Sign here''
=== Fix the long article dual-column scroll problem where you can't see what you're editing ===
: This is particularly an issue on longer articles and smaller screens, but was mentioned as very irritating by some of you!
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 07:49, 31 July 2026 (UTC)
* It's a very minor issue in the grand scheme of things, but would be nice. --[[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 16:04, 5 August 2026 (UTC)
* [[User:Kambai Akau|Kambai Akau]] ([[User talk:Kambai Akau|talk]]) 01:03, 7 August 2026 (UTC)
* ''Sign here''
=== Support multiple sections, rather than just the lede ===
: Right now (despite some functions outputting <nowiki><h2></nowiki>s and the like), all articles are limited to just editing the lede section. We have mostly-built support for thematic sections, but this needs some polish. This would let you 'chunk up' articles, potentially editing only a section at a time for ease of use and / or collapsing those sections away to focus. We could also use this to allow external links limited to only the "external links" section (and references).
* [[User:EatingCarBatteries|EatingCarBatteries]] ([[User talk:EatingCarBatteries|talk]]) 07:12, 3 August 2026 (UTC)
=== Prompt editors with function calls based on statements in the Wikidata item ===
: Add a feature that checks the subject's Wikidata item for statements of the kind it knows about (e.g. "born 1850-01-20 in France") and match them to fragments, prompting you to add this. We'd need to work out how to link between fragment functions and Wikidata claims, and how to know whether the claims were already in the article, so this is quite complex to design and build, but would probably help a great deal.
* {{neutral|Comment}} e.g. {{P|569}}:{{P|1535}}={{Q|138748413}} w/ qual. {{P|528}}=[[Z37683]] [[User:YoshiRulz|YoshiRulz]] ([[User talk:YoshiRulz|talk]]) 00:57, 7 August 2026 (UTC)
* It would be nice for statements already present in Wikidata to be converted to form the sentences in the Abstract Wikipedia, instead of adding statements already present in Wikidata again in the A.W., as in [https://abstract.wikipedia.org/view/kcg/Q7251 Alan Turing]. [[User:Kambai Akau|Kambai Akau]] ([[User talk:Kambai Akau|talk]]) 01:02, 7 August 2026 (UTC)
* ''Sign here''
=== Prompt editors with media used on Wikipedia articles for the subject ===
: A more specialised option compared to fetching media suggestions alongside everything else from the Wikidata item would be to check for the main/first image on any existing Wikipedia articles and suggesting that if it's not already set.
* ''Sign here''
=== Fill in the parameters at copy/paste ===
: Fill in the parameters at copy/paste if the number and types of parameters match. That is especialy usefull when copying a new function from one language to an other. Currenltly every parameter has to be filled manually.
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 22:25, 5 August 2026 (UTC) (as proposer) I just created {{Z|Z38911}} and it took me very long to fill all 30! parameters correctly~
* [[User:Kambai Akau|Kambai Akau]] ([[User talk:Kambai Akau|talk]]) 01:21, 7 August 2026 (UTC)
* ''Sign here''
=== Example: Thing to fix (copy me!) ===
: What it would involve, and why it would be valuable.
* This could be a useful shortcut if the Wikidata statements don't get called automatically. [[User:Kambai Akau|Kambai Akau]] ([[User talk:Kambai Akau|talk]]) 01:20, 7 August 2026 (UTC)
* ''Sign here''
== Any other ideas you might have ==
The sections above aren't everything. What else is something you'd like fixed?
=== Make it more obvious in the search whether there's an existing abstract article or not ===
: Right now we just add "– AW" to the end of search results when there's an existing article; if we make it clearer whether the link is a "read this" or "create this" link, folks won't be surprised when they click it.
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 15:58, 1 August 2026 (UTC)
* [[User:Kambai Akau|Kambai Akau]] ([[User talk:Kambai Akau|talk]]) 01:15, 7 August 2026 (UTC)
* ''Sign here''
=== Auto-linking new Abstract Wikipedia articles to their Wikidata counterparts ===
: Right now people need to manually say that ''e.g.'' Q90 is the same as Q90, which takes time and isn't obvious. If we did this automatically as articles were created, the workflow would be easier to understand.
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 15:56, 1 August 2026 (UTC)
* It's a very minor issue in the grand scheme of things, but would be nice. --[[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 16:03, 5 August 2026 (UTC)
* [[User:Kambai Akau|Kambai Akau]] ([[User talk:Kambai Akau|talk]]) 01:14, 7 August 2026 (UTC)
* ''Sign here''
=== Show labels of talk pages ===
: Show labels of Zid's talk pages on recent changes, watchlist and also on Categories like [[:Category:English natural language generation functions|this one]]. Idem for Qid's talk pages on Abstract Wikipedia
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 17:22, 1 August 2026 (UTC) (as proposer)
* It's a very minor issue in the grand scheme of things, but would be nice. --[[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 16:03, 5 August 2026 (UTC)
* ''Sign here''
=== Enlarge the field for labels ===
: Currently the field for labels can hold a maximum of 50 characters. See for example {{Z|Z32398}}. Frequently this is not enough and abbreviation have to be made. That makes the function names confusing and not consistent.
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 17:37, 1 August 2026 (UTC) (as proposer)
* [[User:EatingCarBatteries|EatingCarBatteries]] ([[User talk:EatingCarBatteries|talk]]) 20:59, 3 August 2026 (UTC)
* [[User:Strobilomyces|Strobilomyces]] ([[User talk:Strobilomyces|talk]]) 16:09, 5 August 2026 (UTC)
* ''Sign here''
=== Support wikitext in functions output ===
: Wikifunctions don't support wikitext. They can only output unparseable plain text or HTML. I know that the page [[:f:Wikifunctions:Embedded function calls]] says very clearly that wikitext will never be supported. But this is the number one thing that causes me not to be motivated to use functions, and I suspect that I'm not alone. So perhaps you could reconsider it.
* [[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 16:01, 5 August 2026 (UTC)
** {{ping|Amire80|p=,}} {{ping|HenkvD}} What would you do with the produced Wikitext? Copy it into an existing page on one of the sister projects? [[User:YoshiRulz|YoshiRulz]] ([[User talk:YoshiRulz|talk]]) 01:01, 7 August 2026 (UTC)
**:The same things that everyone does with templates and modules. [[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 02:50, 7 August 2026 (UTC)
**::We should write functions as Wikitext like <nowiki>'''[[Q1]]'''</nowiki> and table and templates and modules etcetera. that should be rendered into HTML or so, the same as string to HTML functions. [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 05:45, 7 August 2026 (UTC)
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 22:11, 5 August 2026 (UTC) Without wikitext the Abstract Wikipedia is not a real Wikipedia. Using wikitext code for bold, italic etc. Maybe also for Wikilinks.
* ''Sign here''
=== Completely change the UI of compositions ===
: I don't get compositions. A few people get them, but a lot of people don't. I mostly don't. When I try to read existing compositions, their deeply-nested hierarchy immediately confuses me, and I'm almost always afraid of editing anything. And I barely know how to start a new composition. The "clipboard" feature, which was added a few months ago, makes it a little bit less frustrating. But only a little bit; it doesn't solve the big issue. Creating and editing compositions is the only way to edit abstract articles, and it's very commonly needed on Wikifunctions, too, so if a lot of people have a hard time understanding how to do it, neither project will acquire a lot of editors. If you ask me, I'd do away with them completely and just use Python or JavaScript (or Lua!) code.
* [[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 16:01, 5 August 2026 (UTC)
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 22:18, 5 August 2026 (UTC) I don't propose to get rid of compositions, but make the default output more readable by automatically start a new function on a new line, and indent automatically. Also in read mode.
* Same. It's frustrating to have to click my mouse 10 times through a bunch of functions just to change an input value [[User:EatingCarBatteries|EatingCarBatteries]] ([[User talk:EatingCarBatteries|talk]]) 03:38, 6 August 2026 (UTC)
* ''Sign here''
=== Allow choice of implementation to be forced ===
: Where a function has multiple implementations, it would be helpful to be able to force the orchestrator to select a particular implementation for a particular run (or a particular session or a particular user). This would often be very helpful for debugging, or when an implementation appears to have a bug. I am not too sure how that could work - I propose that each user should be able to mark any implementation as always to be selected in their case (or perhaps as never to be selected). Perhaps only in the current session.
:It would even be useful to have a mode in a given session where the orchestrator always selects the first (or last) implementation for all functions - then one would at least know which implementation was going to be called!
* [[User:Strobilomyces|Strobilomyces]] ([[User talk:Strobilomyces|talk]]) 16:35, 5 August 2026 (UTC)
*:@[[User:Strobilomyces|Strobilomyces]]: The orchestrator will (currently) only ever chose the first connected implementation (for a language we support). Maybe we could make it clearer? For debugging, the idea is that you can do that from the implementation page whether or not it's connected, such as on [[Z15788]]. We could highlight that, perhaps? Can you give an example outside of debugging where you might want to allow multiple implementations to be connected but choose different implementations at run-time? I cannot suggest what we could do without understanding better the need, sorry! [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 17:30, 5 August 2026 (UTC)
*::Clarification: "First connected implementation" means the first one listed in the JSON version of the function (which is sometimes promoted or demoted by Wikilambda bot), rather than the first one displayed in the UI list, or the first one that was ever connected. Highlighting this implementation in the UI would be nice. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 04:15, 6 August 2026 (UTC)
*:::Yup, good point; we could definitely improve the UX here to indicate which is the "winning" implementation. [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 14:34, 6 August 2026 (UTC)
*::@[[User:Jdforrester (WMF)|Jdforrester (WMF)]] The ability to test a given implementation directly is very useful. But functions often call other functions and it makes debugging difficult if it is not possible to tell which implementation will be executed or has been executed at the lower level. If it currently always the same version, then that is good. I would like to know how to tell which version will be or has been executed. How do I see the JSON version of the subfunction? Do I have to use the API? [[User:Strobilomyces|Strobilomyces]] ([[User talk:Strobilomyces|talk]]) 13:27, 6 August 2026 (UTC)
*:::I find it by looking at the history and comparing diffs. Here's a diff showing that Wikilambda bot promoted the JS implementation to the top: https://www.wikifunctions.org/w/index.php?title=Z13521&diff=289160&oldid=232341 . --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 13:46, 6 August 2026 (UTC)
*::A particular case where the preferred implementation should not be used is when testing a recursive implementation. [[User:GrounderUK|GrounderUK]] ([[User talk:GrounderUK|talk]]) 18:04, 6 August 2026 (UTC)
*:You can run {{Z|Z35874}} to get the identifier of the currently preferred implementation for a specified function. You could also have [https://www.wikifunctions.org/view/en/Z37465?call=%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z37465%22%2C%22Z37465K1%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z35874%22%2C%22Z35874K1%22%3A%22Z10000%22%7D%2C%22Z37465K2%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z35874%22%2C%22Z35874K1%22%3A%22Z10000%22%7D%7D a hyperlink to the implementation].
*:When browsing, if you click on any of a function’s test cases, the implementations that are connected to the function are listed in the correct order in the Implementations box. This is also true when adding a new test case to a function.
*:Or we could [https://www.wikifunctions.org/view/en/Z801?call=%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z801%22%2C%22Z801K1%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z33470%22%2C%22Z33470K1%22%3A%22view+function%E2%80%99s+JSON%22%2C%22Z33470K2%22%3A%22a%22%2C%22Z33470K3%22%3A%7B%22Z1K1%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z883%22%2C%22Z883K1%22%3A%22Z6%22%2C%22Z883K2%22%3A%22Z1%22%7D%2C%22K1%22%3A%5B%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z882%22%2C%22Z882K1%22%3A%22Z6%22%2C%22Z882K2%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z881%22%2C%22Z881K1%22%3A%22Z6%22%7D%7D%2C%7B%22Z1K1%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z882%22%2C%22Z882K1%22%3A%22Z6%22%2C%22Z882K2%22%3A%22Z1%22%7D%2C%22K1%22%3A%22href%22%2C%22K2%22%3A%5B%22Z6%22%2C%22https%3A%2F%2Fwww.wikifunctions.org%2Fwiki%2F%22%2C%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z28231%22%2C%22Z28231K1%22%3A%22Z801%22%7D%2C%22%3Faction%3Draw%22%5D%7D%5D%7D%7D%7D turn this into a function], I suppose, or [https://www.wikifunctions.org/view/en/Z801?call=%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z801%22%2C%22Z801K1%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z811%22%2C%22Z811K1%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z803%22%2C%22Z803K1%22%3A%7B%22Z1K1%22%3A%22Z39%22%2C%22Z39K1%22%3A%22K1%22%7D%2C%22Z803K2%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z804%22%2C%22Z804K1%22%3A%5B%22Z39%22%2C%7B%22Z1K1%22%3A%22Z39%22%2C%22Z39K1%22%3A%22Z8K4%22%7D%5D%2C%22Z804K2%22%3A%22Z10000%22%7D%7D%7D%7D just this]. [[User:GrounderUK|GrounderUK]] ([[User talk:GrounderUK|talk]]) 17:51, 6 August 2026 (UTC)
* ''Sign here''
=== Allow Wikifunctions functions to be called from Python and Javascript ===
: As indicated in an earlier suggestion, it is not convenient to write complicated code in the form of compositions. I think far more code would be contributed if it could be done in Python or Javascript.
* [[User:Strobilomyces|Strobilomyces]] ([[User talk:Strobilomyces|talk]]) 16:44, 5 August 2026 (UTC)
* ''Sign here''
=== Example: Thing to fix (copy me!) ===
: What it would involve, and why it would be valuable.
* ''Sign here''
== Thank you! ==
It was great to speak to and hear from so many of you.
pgfosbxqm9on9cun9f23wgsjvajzou2
297162
297128
2026-08-07T06:50:09Z
EatingCarBatteries
61191
/* Allow Wikifunctions functions to be called from Python and Javascript */
297162
wikitext
text/x-wiki
{{seealso|WF:Feature petitions}}
Thank you to so many of you who came in-person and online to the workshop at Wikimania last week around creating Abstract Wikipedia articles.
__NEWSECTIONLINK__
Based on your comments there and things you ran into or mentioned, we've pulled together a quick ideas list of possible improvements (alongside our work on faster and better NLG support, working with communities to consider piloting Abstract Wikipedia on their wiki, and other major parts of the annual plan).
Please indicate which items you think we should work on soonest by signing your name (<nowiki>~~~~</nowiki>) below them. We'll probably work on many of these, but the count of "votes" and arguments will help guide us in which ones we prioritise.
== Individual fragment editing ==
These are some ideas about how we might make adding and editing individual fragments easier.
=== Only auto-match the Wikidata item to the subject of the article on the first item in a Function call, not all of them ===
: This should avoid the confusing step of suggested items saying "Cairo is the Cairo of Cairo", but instead would need you to specify the item references for the others. The heuristic of only matching the first item might be enough as a starting point for many calls. We probably still want to match all dates and languages, though.
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 07:50, 31 July 2026 (UTC)
* [[User:Kambai Akau|Kambai Akau]] ([[User talk:Kambai Akau|talk]]) 00:56, 7 August 2026 (UTC)
* ''Sign here''
=== Split out some of the '…' menu on each item so you can quickly switch to a manual item reference ===
: A big stumbling block for folks was switching from an auto-matched (argument key) item or a function call to a specific item reference. This would allow you to quickly switch to that, without having to notice and go through the menu of all the other options.
* ''Sign here''
=== Re-word the labels for the abstract argument keys to be more clear about what they are ===
: We label the keys as 'wikidata item reference', 'language', and 'date'; we should make it clearer that these are 'this article's subject', 'view language', and 'view date' respectively. This would help avoid confusion about what these keys are for, and when you don't want to use them.
* [[User:Waldyrious|Waldyrious]] ([[User talk:Waldyrious|talk]]) 08:48, 1 August 2026 (UTC)
*:{{Done}} As a first step; how does that work for you? [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 15:45, 5 August 2026 (UTC)
=== Add short description fields to Functions' arguments, to help people can understand what the inputs mean when they use them ===
: For Functions, we have labels, aliases, and short descriptions, but Functions' inputs just have a single label each, which can make it hard for people to know what to put where, especially if they have unusual or unfamiliar words. Add a short description field, maybe shown via a secondary accessor like a "[[File:Codex icon info color-notice.svg|20x20px]]" rather than all the time.
* ''Sign here''
* [[User:Nux|Nux]] ([[User talk:Nux|talk]]) 11:38, 1 August 2026 (UTC) (i) icons with more info might help, like e.g. what the author means by "Hypernym" [https://abstract.wikipedia.org/w/index.php?title=Abstract_Wikipedia:Useful_functions_for_article_composition&oldid=13847].
*:@[[User:Nux|Nux]]: Can you give some more detail for where that kind of interface shows up for you? Do you mean giving more context for labels of functions' inputs? [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 15:46, 5 August 2026 (UTC)
*::@[[User:Jdforrester (WMF)|Jdforrester (WMF)]] Yes, argument description. Like a description for function [https://www.wikifunctions.org/w/index.php?title=Z37921&action=edit&uselang=en]. Like in JavaDoc. [[User:Nux|Nux]] ([[User talk:Nux|talk]]) 19:58, 5 August 2026 (UTC)
*:::Aha, right. Is it OK if I split this out into its own section? That's a very different change from what this section was written up as, based on what I heard in Paris, and should have its own discussion. [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 20:06, 5 August 2026 (UTC)
*::::Sure. [[User:Nux|Nux]] ([[User talk:Nux|talk]]) 20:12, 5 August 2026 (UTC)
*:As function writers we can probably do a better job of using the full length of the label we are already allowed (e.g. to explain what hypernym means in that context). --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 03:15, 7 August 2026 (UTC)
* ''Sign here''
=== Example: Thing to fix (copy me!) ===
: What it would involve, and why it would be valuable.
* ''Sign here''
== New/better kinds of fragment ==
Here are some ideas for different kinds of fragments that you could use in abstract articles.
=== Add support for pulling structured data from Commons files ''e.g.'' captions ===
: Right now you can put in image files themselves, but you can't fetch any data about them. This is particularly unhelpful as the Wikidata items still use the File: name rather than the MID; we'd need to add the ability to fetch meta-data from Commons to the back-end services, like we do from Wikidata.
* ''Sign here''
=== Add support for video/audio file inclusions ===
: You can only specify image files, not audio or video files which are more complex. If demand is high we could add this sooner rather than later, though it may be complex to align with the existing workflows.
* ''Sign here''
=== Add support for galleries of media file inclusions ===
: You can create multiple media file transclusions, but it's limited to a small number and you have to do all the work of creating the styles around it. We could give a first-level media file output, if this is strongly wanted.
* ''Sign here''
=== Add support for map inclusions ===
: We don't yet support maps, which might be wanted if folks are making articles about places a lot. Full support would be quite complicated.
* [[User:EatingCarBatteries|EatingCarBatteries]] ([[User talk:EatingCarBatteries|talk]]) 03:24, 31 July 2026 (UTC)
=== Add support for chart inclusions ===
: We don't yet support charts, which might be wanted if folks are making articles about numerical things a lot. Full support would be very complicated.
* ''Sign here''
=== Abstract source mock-ups and multilingual reviews ===
:We are approaching Abstract Wikipedia from the bottom up, with very simple examples. This may be the "Wiki Way", but for software it is very unconventional, and I think it is uncertain whether it can eventually work for more advanced text. The project will have failed unless natural text similar in complexity to current Wikipedia articles can be generated. I think nobody (except possibly [[user:mahir256|Mahir Morshed]]) understands what the abstract source for more complicated sentences would look like.
:Mahir Morshed has created a multilingual text generation system called Elemwala at https://elemwala.toolforge.org/ (see his introduction at https://www.wikifunctions.org/wiki/Wikifunctions:Status_updates/2024-10-17 and his session at Wikimania). This is linked to Abstract Wikipedia, and extremely relevant to it (since it is the only real current proposal for the abstract souce that I know), but it should be noted that Elemwala is only a proposal, not Abstract Wikipedia policy. The list of constructors defines the abstract source as it is at present. Also more information on how this abstract content can be constructed can be found at https://www.wikidata.org/wiki/User:Mahir256/language-generation, with various links and references.
:It is not clear to me whether the abstract source, consisting of functions of Wikidata items backed up by lexemes, can even work at all for a wide variety of languages. Rendering a text needs much information which is special to the target language, for instance there can be genders, grammatical cases, polite forms of address, etc. Example: The Eiffel Tower (Q243) usually needs a definite article when used in English, whereas Blackpool Tower (Q880905) does not. Where should this information for the English renderer be held? It cannot be in the abstract source, since the answer is special for English; some editors of the abstract source will speak languages which do not use articles. Well, I think that this type of item needs an English lexeme with a flag to indicate the article usage, and that would be a solution. Another example relates to the grammatical tenses, voices and moods of verbs. How will that be managed? I suppose that a verb tense indication must be given as a parameter in the abstract source, but how will the values of this parameter be related to all the possible tense/voice/mood verb forms in all the languages? There are an enormous number of such diverse features; how can we be sure that there is enough information in the abstract source to do the rendering in all cases?
:I think that there is an urgent need to create examples of complex text (such as real Wikipedia articles) in the proposed abstract source. Then testers who comprehend the abstract source format and also know a relevant language should interpret the source text and confirm whether they understand it and whether they have enough information to reconstruct the text in their own language (not by software but with their own mental processes). If so, that would give much-needed confidence that the Abstract Wikipedia scheme can actually work, and I think it would advance the project by making clearer the next needed steps.
* [[User:Strobilomyces|Strobilomyces]] ([[User talk:Strobilomyces|talk]]) 20:41, 5 August 2026 (UTC)
* ''Sign here''
=== Example: Thing to fix (copy me!) ===
: What it would involve, and why it would be valuable.
* ''Sign here''
== Article editing ==
Here are some quick ideas about overall article editing, not specific to a given
=== Drag-and-drop moving of fragments, instead of having to click on the menu and the "move up/down" multiple times ===
: Drag-and-drop is a relatively familiar UX feature, and we could add an affordance for it to make it more discoverable at the same time as more usable.
* [[User:EatingCarBatteries|EatingCarBatteries]] ([[User talk:EatingCarBatteries|talk]]) 03:22, 31 July 2026 (UTC)
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 07:52, 31 July 2026 (UTC)
* [[User:Waldyrious|Waldyrious]] ([[User talk:Waldyrious|talk]]) 08:49, 1 August 2026 (UTC)
* [[User:Nux|Nux]] ([[User talk:Nux|talk]]) 11:42, 1 August 2026 (UTC) and also selecting and copying with ctrl+c/ctrl+v like in OOo/LibreOffice Calc
* [[User:Dungodung|Dungodung]] ([[User talk:Dungodung|talk]]) 15:30, 5 August 2026 (UTC)
* It's a very minor issue in the grand scheme of things, but would be nice. --[[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 16:04, 5 August 2026 (UTC)
* ''Sign here''
=== Fix the long article dual-column scroll problem where you can't see what you're editing ===
: This is particularly an issue on longer articles and smaller screens, but was mentioned as very irritating by some of you!
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 07:49, 31 July 2026 (UTC)
* It's a very minor issue in the grand scheme of things, but would be nice. --[[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 16:04, 5 August 2026 (UTC)
* [[User:Kambai Akau|Kambai Akau]] ([[User talk:Kambai Akau|talk]]) 01:03, 7 August 2026 (UTC)
* ''Sign here''
=== Support multiple sections, rather than just the lede ===
: Right now (despite some functions outputting <nowiki><h2></nowiki>s and the like), all articles are limited to just editing the lede section. We have mostly-built support for thematic sections, but this needs some polish. This would let you 'chunk up' articles, potentially editing only a section at a time for ease of use and / or collapsing those sections away to focus. We could also use this to allow external links limited to only the "external links" section (and references).
* [[User:EatingCarBatteries|EatingCarBatteries]] ([[User talk:EatingCarBatteries|talk]]) 07:12, 3 August 2026 (UTC)
=== Prompt editors with function calls based on statements in the Wikidata item ===
: Add a feature that checks the subject's Wikidata item for statements of the kind it knows about (e.g. "born 1850-01-20 in France") and match them to fragments, prompting you to add this. We'd need to work out how to link between fragment functions and Wikidata claims, and how to know whether the claims were already in the article, so this is quite complex to design and build, but would probably help a great deal.
* {{neutral|Comment}} e.g. {{P|569}}:{{P|1535}}={{Q|138748413}} w/ qual. {{P|528}}=[[Z37683]] [[User:YoshiRulz|YoshiRulz]] ([[User talk:YoshiRulz|talk]]) 00:57, 7 August 2026 (UTC)
* It would be nice for statements already present in Wikidata to be converted to form the sentences in the Abstract Wikipedia, instead of adding statements already present in Wikidata again in the A.W., as in [https://abstract.wikipedia.org/view/kcg/Q7251 Alan Turing]. [[User:Kambai Akau|Kambai Akau]] ([[User talk:Kambai Akau|talk]]) 01:02, 7 August 2026 (UTC)
* ''Sign here''
=== Prompt editors with media used on Wikipedia articles for the subject ===
: A more specialised option compared to fetching media suggestions alongside everything else from the Wikidata item would be to check for the main/first image on any existing Wikipedia articles and suggesting that if it's not already set.
* ''Sign here''
=== Fill in the parameters at copy/paste ===
: Fill in the parameters at copy/paste if the number and types of parameters match. That is especialy usefull when copying a new function from one language to an other. Currenltly every parameter has to be filled manually.
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 22:25, 5 August 2026 (UTC) (as proposer) I just created {{Z|Z38911}} and it took me very long to fill all 30! parameters correctly~
* [[User:Kambai Akau|Kambai Akau]] ([[User talk:Kambai Akau|talk]]) 01:21, 7 August 2026 (UTC)
* ''Sign here''
=== Example: Thing to fix (copy me!) ===
: What it would involve, and why it would be valuable.
* This could be a useful shortcut if the Wikidata statements don't get called automatically. [[User:Kambai Akau|Kambai Akau]] ([[User talk:Kambai Akau|talk]]) 01:20, 7 August 2026 (UTC)
* ''Sign here''
== Any other ideas you might have ==
The sections above aren't everything. What else is something you'd like fixed?
=== Make it more obvious in the search whether there's an existing abstract article or not ===
: Right now we just add "– AW" to the end of search results when there's an existing article; if we make it clearer whether the link is a "read this" or "create this" link, folks won't be surprised when they click it.
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 15:58, 1 August 2026 (UTC)
* [[User:Kambai Akau|Kambai Akau]] ([[User talk:Kambai Akau|talk]]) 01:15, 7 August 2026 (UTC)
* ''Sign here''
=== Auto-linking new Abstract Wikipedia articles to their Wikidata counterparts ===
: Right now people need to manually say that ''e.g.'' Q90 is the same as Q90, which takes time and isn't obvious. If we did this automatically as articles were created, the workflow would be easier to understand.
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 15:56, 1 August 2026 (UTC)
* It's a very minor issue in the grand scheme of things, but would be nice. --[[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 16:03, 5 August 2026 (UTC)
* [[User:Kambai Akau|Kambai Akau]] ([[User talk:Kambai Akau|talk]]) 01:14, 7 August 2026 (UTC)
* ''Sign here''
=== Show labels of talk pages ===
: Show labels of Zid's talk pages on recent changes, watchlist and also on Categories like [[:Category:English natural language generation functions|this one]]. Idem for Qid's talk pages on Abstract Wikipedia
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 17:22, 1 August 2026 (UTC) (as proposer)
* It's a very minor issue in the grand scheme of things, but would be nice. --[[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 16:03, 5 August 2026 (UTC)
* ''Sign here''
=== Enlarge the field for labels ===
: Currently the field for labels can hold a maximum of 50 characters. See for example {{Z|Z32398}}. Frequently this is not enough and abbreviation have to be made. That makes the function names confusing and not consistent.
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 17:37, 1 August 2026 (UTC) (as proposer)
* [[User:EatingCarBatteries|EatingCarBatteries]] ([[User talk:EatingCarBatteries|talk]]) 20:59, 3 August 2026 (UTC)
* [[User:Strobilomyces|Strobilomyces]] ([[User talk:Strobilomyces|talk]]) 16:09, 5 August 2026 (UTC)
* ''Sign here''
=== Support wikitext in functions output ===
: Wikifunctions don't support wikitext. They can only output unparseable plain text or HTML. I know that the page [[:f:Wikifunctions:Embedded function calls]] says very clearly that wikitext will never be supported. But this is the number one thing that causes me not to be motivated to use functions, and I suspect that I'm not alone. So perhaps you could reconsider it.
* [[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 16:01, 5 August 2026 (UTC)
** {{ping|Amire80|p=,}} {{ping|HenkvD}} What would you do with the produced Wikitext? Copy it into an existing page on one of the sister projects? [[User:YoshiRulz|YoshiRulz]] ([[User talk:YoshiRulz|talk]]) 01:01, 7 August 2026 (UTC)
**:The same things that everyone does with templates and modules. [[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 02:50, 7 August 2026 (UTC)
**::We should write functions as Wikitext like <nowiki>'''[[Q1]]'''</nowiki> and table and templates and modules etcetera. that should be rendered into HTML or so, the same as string to HTML functions. [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 05:45, 7 August 2026 (UTC)
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 22:11, 5 August 2026 (UTC) Without wikitext the Abstract Wikipedia is not a real Wikipedia. Using wikitext code for bold, italic etc. Maybe also for Wikilinks.
* ''Sign here''
=== Completely change the UI of compositions ===
: I don't get compositions. A few people get them, but a lot of people don't. I mostly don't. When I try to read existing compositions, their deeply-nested hierarchy immediately confuses me, and I'm almost always afraid of editing anything. And I barely know how to start a new composition. The "clipboard" feature, which was added a few months ago, makes it a little bit less frustrating. But only a little bit; it doesn't solve the big issue. Creating and editing compositions is the only way to edit abstract articles, and it's very commonly needed on Wikifunctions, too, so if a lot of people have a hard time understanding how to do it, neither project will acquire a lot of editors. If you ask me, I'd do away with them completely and just use Python or JavaScript (or Lua!) code.
* [[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 16:01, 5 August 2026 (UTC)
* [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 22:18, 5 August 2026 (UTC) I don't propose to get rid of compositions, but make the default output more readable by automatically start a new function on a new line, and indent automatically. Also in read mode.
* Same. It's frustrating to have to click my mouse 10 times through a bunch of functions just to change an input value [[User:EatingCarBatteries|EatingCarBatteries]] ([[User talk:EatingCarBatteries|talk]]) 03:38, 6 August 2026 (UTC)
* ''Sign here''
=== Allow choice of implementation to be forced ===
: Where a function has multiple implementations, it would be helpful to be able to force the orchestrator to select a particular implementation for a particular run (or a particular session or a particular user). This would often be very helpful for debugging, or when an implementation appears to have a bug. I am not too sure how that could work - I propose that each user should be able to mark any implementation as always to be selected in their case (or perhaps as never to be selected). Perhaps only in the current session.
:It would even be useful to have a mode in a given session where the orchestrator always selects the first (or last) implementation for all functions - then one would at least know which implementation was going to be called!
* [[User:Strobilomyces|Strobilomyces]] ([[User talk:Strobilomyces|talk]]) 16:35, 5 August 2026 (UTC)
*:@[[User:Strobilomyces|Strobilomyces]]: The orchestrator will (currently) only ever chose the first connected implementation (for a language we support). Maybe we could make it clearer? For debugging, the idea is that you can do that from the implementation page whether or not it's connected, such as on [[Z15788]]. We could highlight that, perhaps? Can you give an example outside of debugging where you might want to allow multiple implementations to be connected but choose different implementations at run-time? I cannot suggest what we could do without understanding better the need, sorry! [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 17:30, 5 August 2026 (UTC)
*::Clarification: "First connected implementation" means the first one listed in the JSON version of the function (which is sometimes promoted or demoted by Wikilambda bot), rather than the first one displayed in the UI list, or the first one that was ever connected. Highlighting this implementation in the UI would be nice. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 04:15, 6 August 2026 (UTC)
*:::Yup, good point; we could definitely improve the UX here to indicate which is the "winning" implementation. [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 14:34, 6 August 2026 (UTC)
*::@[[User:Jdforrester (WMF)|Jdforrester (WMF)]] The ability to test a given implementation directly is very useful. But functions often call other functions and it makes debugging difficult if it is not possible to tell which implementation will be executed or has been executed at the lower level. If it currently always the same version, then that is good. I would like to know how to tell which version will be or has been executed. How do I see the JSON version of the subfunction? Do I have to use the API? [[User:Strobilomyces|Strobilomyces]] ([[User talk:Strobilomyces|talk]]) 13:27, 6 August 2026 (UTC)
*:::I find it by looking at the history and comparing diffs. Here's a diff showing that Wikilambda bot promoted the JS implementation to the top: https://www.wikifunctions.org/w/index.php?title=Z13521&diff=289160&oldid=232341 . --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 13:46, 6 August 2026 (UTC)
*::A particular case where the preferred implementation should not be used is when testing a recursive implementation. [[User:GrounderUK|GrounderUK]] ([[User talk:GrounderUK|talk]]) 18:04, 6 August 2026 (UTC)
*:You can run {{Z|Z35874}} to get the identifier of the currently preferred implementation for a specified function. You could also have [https://www.wikifunctions.org/view/en/Z37465?call=%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z37465%22%2C%22Z37465K1%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z35874%22%2C%22Z35874K1%22%3A%22Z10000%22%7D%2C%22Z37465K2%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z35874%22%2C%22Z35874K1%22%3A%22Z10000%22%7D%7D a hyperlink to the implementation].
*:When browsing, if you click on any of a function’s test cases, the implementations that are connected to the function are listed in the correct order in the Implementations box. This is also true when adding a new test case to a function.
*:Or we could [https://www.wikifunctions.org/view/en/Z801?call=%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z801%22%2C%22Z801K1%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z33470%22%2C%22Z33470K1%22%3A%22view+function%E2%80%99s+JSON%22%2C%22Z33470K2%22%3A%22a%22%2C%22Z33470K3%22%3A%7B%22Z1K1%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z883%22%2C%22Z883K1%22%3A%22Z6%22%2C%22Z883K2%22%3A%22Z1%22%7D%2C%22K1%22%3A%5B%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z882%22%2C%22Z882K1%22%3A%22Z6%22%2C%22Z882K2%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z881%22%2C%22Z881K1%22%3A%22Z6%22%7D%7D%2C%7B%22Z1K1%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z882%22%2C%22Z882K1%22%3A%22Z6%22%2C%22Z882K2%22%3A%22Z1%22%7D%2C%22K1%22%3A%22href%22%2C%22K2%22%3A%5B%22Z6%22%2C%22https%3A%2F%2Fwww.wikifunctions.org%2Fwiki%2F%22%2C%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z28231%22%2C%22Z28231K1%22%3A%22Z801%22%7D%2C%22%3Faction%3Draw%22%5D%7D%5D%7D%7D%7D turn this into a function], I suppose, or [https://www.wikifunctions.org/view/en/Z801?call=%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z801%22%2C%22Z801K1%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z811%22%2C%22Z811K1%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z803%22%2C%22Z803K1%22%3A%7B%22Z1K1%22%3A%22Z39%22%2C%22Z39K1%22%3A%22K1%22%7D%2C%22Z803K2%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z804%22%2C%22Z804K1%22%3A%5B%22Z39%22%2C%7B%22Z1K1%22%3A%22Z39%22%2C%22Z39K1%22%3A%22Z8K4%22%7D%5D%2C%22Z804K2%22%3A%22Z10000%22%7D%7D%7D%7D just this]. [[User:GrounderUK|GrounderUK]] ([[User talk:GrounderUK|talk]]) 17:51, 6 August 2026 (UTC)
* ''Sign here''
=== Allow Wikifunctions functions to be called from Python and Javascript ===
: As indicated in an earlier suggestion, it is not convenient to write complicated code in the form of compositions. I think far more code would be contributed if it could be done in Python or Javascript.
* [[User:Strobilomyces|Strobilomyces]] ([[User talk:Strobilomyces|talk]]) 16:44, 5 August 2026 (UTC)
* This is extremely important to me. It's much easier and more readable for someone to write a couple lines of code rather than calling 10 functions. [[User:EatingCarBatteries|EatingCarBatteries]] ([[User talk:EatingCarBatteries|talk]]) 06:49, 7 August 2026 (UTC)
* ''Sign here''
=== Example: Thing to fix (copy me!) ===
: What it would involve, and why it would be valuable.
* ''Sign here''
== Thank you! ==
It was great to speak to and hear from so many of you.
pz96gejvy6o4qoqp2oid1ly3ufq1s30
Z38531
0
88932
297063
295165
2026-08-06T21:44:42Z
JhowieNitnek
1044
297063
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z38531"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z6",
"Z17K2": "Z38531K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Latin input"
}
]
}
}
],
"Z8K2": "Z6",
"Z8K3": [
"Z20",
"Z38532",
"Z38533",
"Z38535"
],
"Z8K4": [
"Z14",
"Z38534"
],
"Z8K5": "Z38531"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Dutch eight-dot Braille encode"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1157",
"Z11K2": "Nederlandse achtpuntsbraillecodering"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31",
{
"Z1K1": "Z31",
"Z31K1": "Z1002",
"Z31K2": [
"Z6",
"Dutch eight-point Braille encode",
"Dutch 8-dot Braille encode",
"Dutch 8-point Braille encode"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1157",
"Z31K2": [
"Z6",
"Nederlandse 8-puntsbraillecodering"
]
}
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Dutch eight-dot Braille based on the 2022 standard by the Braille Autoriteit (https://braille-autoriteit.org/standaarden/achtpuntsbraille/versie-2022/)"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1157",
"Z11K2": "Nederlandse achtpuntsbraille volgens de norm van 2022 van de Braille Autoriteit (https://braille-autoriteit.org/standaarden/achtpuntsbraille/versie-2022/)"
}
]
}
}
9f5i6rb5b4ivprlu3pjp8071g52jgis
Z38534
0
88935
297049
296374
2026-08-06T19:39:05Z
JhowieNitnek
1044
Added encodings for currency signs
297049
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z38534"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z38531",
"Z14K3": {
"Z1K1": "Z16",
"Z16K1": "Z610",
"Z16K2": "def Z38531(Z38531K1):\n\t# Uppercase Latin script letters\n\tuppercase = {\n\t\t\"A\": \"⡁\", \"B\": \"⡃\", \"C\": \"⡉\", \"D\": \"⡙\", \"E\": \"⡑\", \"F\": \"⡋\", \"G\": \"⡛\", \"H\": \"⡓\", \"I\": \"⡊\", \"J\": \"⡚\", \"K\": \"⡅\", \"L\": \"⡇\", \"M\": \"⡍\", \"N\": \"⡝\", \"O\": \"⡕\", \"P\": \"⡏\", \"Q\": \"⡟\", \"R\": \"⡗\", \"S\": \"⡎\", \"T\": \"⡞\", \"U\": \"⡥\", \"V\": \"⡧\", \"W\": \"⡺\", \"X\": \"⡭\", \"Y\": \"⡽\", \"Z\": \"⡵\"\n\t}\n\n\t# Lowercase Latin script letters\n\tlowercase = {\n\t\t\"a\": \"⠁\", \"b\": \"⠃\", \"c\": \"⠉\", \"d\": \"⠙\", \"e\": \"⠑\", \"f\": \"⠋\", \"g\": \"⠛\", \"h\": \"⠓\", \"i\": \"⠊\", \"j\": \"⠚\", \"k\": \"⠅\", \"l\": \"⠇\", \"m\": \"⠍\", \"n\": \"⠝\", \"o\": \"⠕\", \"p\": \"⠏\", \"q\": \"⠟\", \"r\": \"⠗\", \"s\": \"⠎\", \"t\": \"⠞\", \"u\": \"⠥\", \"v\": \"⠧\", \"w\": \"⠺\", \"x\": \"⠭\", \"y\": \"⠽\", \"z\": \"⠵\"\n\t}\n\n\t# Numbers\n\tnumbers = {\n\t\t\"1\": \"⠡\", \"2\": \"⠣\", \"3\": \"⠩\", \"4\": \"⠹\", \"5\": \"⠱\", \"6\": \"⠫\", \"7\": \"⠻\", \"8\": \"⠳\", \"9\": \"⠪\", \"0\": \"⠬\"\n\t}\n\n\t# Punctuation and other symbols\n\tpunctuation = {\n\t\t\" \": \"⠀\", \"!\": \"⠖\", '\"': \"⠶\", \"#\": \"⠼\", \"%\": \"⠿\", \"\u0026\": \"⠯\",\"'\": \"⠄\", \"(\": \"⠦\", \")\": \"⠴\", \"*\": \"⠔\", \"+\": \"⢖\", \",\": \"⠂\", \"-\": \"⠤\", \".\": \"⠲\", \"/\": \"⠌\", \":\": \"⠒\", \";\": \"⠆\", \"\u003C\": \"⢔\", \"=\": \"⢶\", \"\u003E\": \"⡢\", \"?\": \"⠢\", \"@\": \"⠜\", \"[\": \"⠷\", \"]\": \"⠾\", \"^\": \"⡬\", \"_\": \"⠸\", \"`\": \"⠠\", \"{\": \"⣦\", \"|\": \"⢸\", \"}\": \"⣴\", \"~\": \"⢢\", \"¡\": \"⣋\", \"¦\": \"⢘\", \"§\": \"⣐\", \"¨\": \"⠈\", \"©\": \"⢉\", \"“\": \"⣆\", \"«\": \"⣆\", \"¬\": \"⣲\", \"®\": \"⢗\", \"°\": \"⢛\", \"±\": \"⣖\", \"²\": \"⡆\", \"³\": \"⡒\", \"´\": \"⢀\", \"µ\": \"⢍\", \"¶\": \"⡀\", \"·\": \"⠐\", \"¸\": \"⢂\", \"¹\": \"⡂\", '”': \"⣰\", \"»\": \"⣰\", \"¼\": \"⡳\", \"½\": \"⢇\", \"¾\": \"⡻\", \"¿\": \"⣑\", \"×\": \"⢦\", \"÷\": \"⢲\", \"–\": \"⡤\", \"—\": \"⣀\", \"‘\": \"⣄\", \"‹\": \"⣄\", \"’\": \"⣠\", \"›\": \"⣠\", \"‚\": \"⡄\", \"„\": \"⡶\", \"†\": \"⡖\", \"…\": \"⡲\", \"‰\": \"⡿\", \"′\": \"⢄\", \"™\": \"⢞\", \"−\": \"⢤\", \"√\": \"⡩\", \"∛\": \"⡫\", \"∜\": \"⡯\", \"∞\": \"⣉\", \"∫\": \"⡾\", \"≈\": \"⣶\", \"≠\": \"⣟\", \"≤\": \"⣼\", \"≥\": \"⣧\"\n\t}\n\t\n\tcurrency_signs = {\n\t\t\"$\": \"⢙\", \"€\": \"⢑\", \"£\": \"⢏\", \"¤\": \"⢭\", \"¥\": \"⢽\"\n\t}\n\n\tcombined = punctuation | numbers | uppercase | lowercase | currency_signs\n\n\treturn \"\".join([combined.get(c, c) for c in Z38531K1])"
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Dutch eight-dot Braille encode, Python"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
rq7zvll376hkc8aqjt527vzswsi23z2
297051
297049
2026-08-06T19:50:42Z
JhowieNitnek
1044
Added encoding for arrows
297051
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z38534"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z38531",
"Z14K3": {
"Z1K1": "Z16",
"Z16K1": "Z610",
"Z16K2": "def Z38531(Z38531K1):\n\t# Uppercase Latin script letters\n\tuppercase = {\n\t\t\"A\": \"⡁\", \"B\": \"⡃\", \"C\": \"⡉\", \"D\": \"⡙\", \"E\": \"⡑\", \"F\": \"⡋\", \"G\": \"⡛\", \"H\": \"⡓\", \"I\": \"⡊\", \"J\": \"⡚\", \"K\": \"⡅\", \"L\": \"⡇\", \"M\": \"⡍\", \"N\": \"⡝\", \"O\": \"⡕\", \"P\": \"⡏\", \"Q\": \"⡟\", \"R\": \"⡗\", \"S\": \"⡎\", \"T\": \"⡞\", \"U\": \"⡥\", \"V\": \"⡧\", \"W\": \"⡺\", \"X\": \"⡭\", \"Y\": \"⡽\", \"Z\": \"⡵\"\n\t}\n\n\t# Lowercase Latin script letters\n\tlowercase = {\n\t\t\"a\": \"⠁\", \"b\": \"⠃\", \"c\": \"⠉\", \"d\": \"⠙\", \"e\": \"⠑\", \"f\": \"⠋\", \"g\": \"⠛\", \"h\": \"⠓\", \"i\": \"⠊\", \"j\": \"⠚\", \"k\": \"⠅\", \"l\": \"⠇\", \"m\": \"⠍\", \"n\": \"⠝\", \"o\": \"⠕\", \"p\": \"⠏\", \"q\": \"⠟\", \"r\": \"⠗\", \"s\": \"⠎\", \"t\": \"⠞\", \"u\": \"⠥\", \"v\": \"⠧\", \"w\": \"⠺\", \"x\": \"⠭\", \"y\": \"⠽\", \"z\": \"⠵\"\n\t}\n\n\t# Numbers\n\tnumbers = {\n\t\t\"1\": \"⠡\", \"2\": \"⠣\", \"3\": \"⠩\", \"4\": \"⠹\", \"5\": \"⠱\", \"6\": \"⠫\", \"7\": \"⠻\", \"8\": \"⠳\", \"9\": \"⠪\", \"0\": \"⠬\"\n\t}\n\n\t# Punctuation and other symbols\n\tpunctuation = {\n\t\t\" \": \"⠀\", \"!\": \"⠖\", '\"': \"⠶\", \"#\": \"⠼\", \"%\": \"⠿\", \"\u0026\": \"⠯\",\"'\": \"⠄\", \"(\": \"⠦\", \")\": \"⠴\", \"*\": \"⠔\", \"+\": \"⢖\", \",\": \"⠂\", \"-\": \"⠤\", \".\": \"⠲\", \"/\": \"⠌\", \":\": \"⠒\", \";\": \"⠆\", \"\u003C\": \"⢔\", \"=\": \"⢶\", \"\u003E\": \"⡢\", \"?\": \"⠢\", \"@\": \"⠜\", \"[\": \"⠷\", \"]\": \"⠾\", \"^\": \"⡬\", \"_\": \"⠸\", \"`\": \"⠠\", \"{\": \"⣦\", \"|\": \"⢸\", \"}\": \"⣴\", \"~\": \"⢢\", \"¡\": \"⣋\", \"¦\": \"⢘\", \"§\": \"⣐\", \"¨\": \"⠈\", \"©\": \"⢉\", \"“\": \"⣆\", \"«\": \"⣆\", \"¬\": \"⣲\", \"®\": \"⢗\", \"°\": \"⢛\", \"±\": \"⣖\", \"²\": \"⡆\", \"³\": \"⡒\", \"´\": \"⢀\", \"µ\": \"⢍\", \"¶\": \"⡀\", \"·\": \"⠐\", \"¸\": \"⢂\", \"¹\": \"⡂\", '”': \"⣰\", \"»\": \"⣰\", \"¼\": \"⡳\", \"½\": \"⢇\", \"¾\": \"⡻\", \"¿\": \"⣑\", \"×\": \"⢦\", \"÷\": \"⢲\", \"–\": \"⡤\", \"—\": \"⣀\", \"‘\": \"⣄\", \"‹\": \"⣄\", \"’\": \"⣠\", \"›\": \"⣠\", \"‚\": \"⡄\", \"„\": \"⡶\", \"†\": \"⡖\", \"…\": \"⡲\", \"‰\": \"⡿\", \"′\": \"⢄\", \"™\": \"⢞\", \"−\": \"⢤\", \"√\": \"⡩\", \"∛\": \"⡫\", \"∜\": \"⡯\", \"∞\": \"⣉\", \"∫\": \"⡾\", \"≈\": \"⣶\", \"≠\": \"⣟\", \"≤\": \"⣼\", \"≥\": \"⣧\"\n\t}\n\t\n\tcurrency_signs = {\n\t\t\"$\": \"⢙\", \"€\": \"⢑\", \"£\": \"⢏\", \"¤\": \"⢭\", \"¥\": \"⢽\"\n\t}\n\t\n\tarrows = {\n\t\t\"←\": \"⢎\", \"⇐\": \"⢎\", \"⇦\": \"⢎\", \"◀\": \"⢎\", \"◁\": \"⢎\", \"◂\": \"⢎\", \"◃\": \"⢎\", \"◄\": \"⢎\", \"◅\": \"⢎\", \"→\": \"⡱\", \"⇒\": \"⡱\", \"⇨\": \"⡱\", \"▶\": \"⡱\", \"▷\": \"⡱\", \"▸\": \"⡱\", \"▹\": \"⡱\", \"►\": \"⡱\", \"▻\": \"⡱\", \"↑\": \"⣭\", \"⇑\": \"⣭\", \"⇧\": \"⣭\", \"▲\": \"⣭\", \"△\": \"⣭\", \"▴\": \"⣭\", \"▵\": \"⣭\", \"↓\": \"⣛\", \"⇓\": \"⣛\", \"⇩\": \"⣛\", \"▼\": \"⣛\", \"▽\": \"⣛\", \"▾\": \"⣛\", \"▿\": \"⣛\"\n\t}\n\n\tcombined = punctuation | numbers | uppercase | lowercase | currency_signs\n\n\treturn \"\".join([combined.get(c, c) for c in Z38531K1])"
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Dutch eight-dot Braille encode, Python"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
5uafd5sa92lp4x8g6rjl4ss2qsqfxcd
297052
297051
2026-08-06T19:51:20Z
JhowieNitnek
1044
297052
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z38534"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z38531",
"Z14K3": {
"Z1K1": "Z16",
"Z16K1": "Z610",
"Z16K2": "def Z38531(Z38531K1):\n\t# Uppercase Latin script letters\n\tuppercase = {\n\t\t\"A\": \"⡁\", \"B\": \"⡃\", \"C\": \"⡉\", \"D\": \"⡙\", \"E\": \"⡑\", \"F\": \"⡋\", \"G\": \"⡛\", \"H\": \"⡓\", \"I\": \"⡊\", \"J\": \"⡚\", \"K\": \"⡅\", \"L\": \"⡇\", \"M\": \"⡍\", \"N\": \"⡝\", \"O\": \"⡕\", \"P\": \"⡏\", \"Q\": \"⡟\", \"R\": \"⡗\", \"S\": \"⡎\", \"T\": \"⡞\", \"U\": \"⡥\", \"V\": \"⡧\", \"W\": \"⡺\", \"X\": \"⡭\", \"Y\": \"⡽\", \"Z\": \"⡵\"\n\t}\n\n\t# Lowercase Latin script letters\n\tlowercase = {\n\t\t\"a\": \"⠁\", \"b\": \"⠃\", \"c\": \"⠉\", \"d\": \"⠙\", \"e\": \"⠑\", \"f\": \"⠋\", \"g\": \"⠛\", \"h\": \"⠓\", \"i\": \"⠊\", \"j\": \"⠚\", \"k\": \"⠅\", \"l\": \"⠇\", \"m\": \"⠍\", \"n\": \"⠝\", \"o\": \"⠕\", \"p\": \"⠏\", \"q\": \"⠟\", \"r\": \"⠗\", \"s\": \"⠎\", \"t\": \"⠞\", \"u\": \"⠥\", \"v\": \"⠧\", \"w\": \"⠺\", \"x\": \"⠭\", \"y\": \"⠽\", \"z\": \"⠵\"\n\t}\n\n\t# Numbers\n\tnumbers = {\n\t\t\"1\": \"⠡\", \"2\": \"⠣\", \"3\": \"⠩\", \"4\": \"⠹\", \"5\": \"⠱\", \"6\": \"⠫\", \"7\": \"⠻\", \"8\": \"⠳\", \"9\": \"⠪\", \"0\": \"⠬\"\n\t}\n\n\t# Punctuation and other symbols\n\tpunctuation = {\n\t\t\" \": \"⠀\", \"!\": \"⠖\", '\"': \"⠶\", \"#\": \"⠼\", \"%\": \"⠿\", \"\u0026\": \"⠯\",\"'\": \"⠄\", \"(\": \"⠦\", \")\": \"⠴\", \"*\": \"⠔\", \"+\": \"⢖\", \",\": \"⠂\", \"-\": \"⠤\", \".\": \"⠲\", \"/\": \"⠌\", \":\": \"⠒\", \";\": \"⠆\", \"\u003C\": \"⢔\", \"=\": \"⢶\", \"\u003E\": \"⡢\", \"?\": \"⠢\", \"@\": \"⠜\", \"[\": \"⠷\", \"]\": \"⠾\", \"^\": \"⡬\", \"_\": \"⠸\", \"`\": \"⠠\", \"{\": \"⣦\", \"|\": \"⢸\", \"}\": \"⣴\", \"~\": \"⢢\", \"¡\": \"⣋\", \"¦\": \"⢘\", \"§\": \"⣐\", \"¨\": \"⠈\", \"©\": \"⢉\", \"“\": \"⣆\", \"«\": \"⣆\", \"¬\": \"⣲\", \"®\": \"⢗\", \"°\": \"⢛\", \"±\": \"⣖\", \"²\": \"⡆\", \"³\": \"⡒\", \"´\": \"⢀\", \"µ\": \"⢍\", \"¶\": \"⡀\", \"·\": \"⠐\", \"¸\": \"⢂\", \"¹\": \"⡂\", '”': \"⣰\", \"»\": \"⣰\", \"¼\": \"⡳\", \"½\": \"⢇\", \"¾\": \"⡻\", \"¿\": \"⣑\", \"×\": \"⢦\", \"÷\": \"⢲\", \"–\": \"⡤\", \"—\": \"⣀\", \"‘\": \"⣄\", \"‹\": \"⣄\", \"’\": \"⣠\", \"›\": \"⣠\", \"‚\": \"⡄\", \"„\": \"⡶\", \"†\": \"⡖\", \"…\": \"⡲\", \"‰\": \"⡿\", \"′\": \"⢄\", \"™\": \"⢞\", \"−\": \"⢤\", \"√\": \"⡩\", \"∛\": \"⡫\", \"∜\": \"⡯\", \"∞\": \"⣉\", \"∫\": \"⡾\", \"≈\": \"⣶\", \"≠\": \"⣟\", \"≤\": \"⣼\", \"≥\": \"⣧\"\n\t}\n\t\n\tcurrency_signs = {\n\t\t\"$\": \"⢙\", \"€\": \"⢑\", \"£\": \"⢏\", \"¤\": \"⢭\", \"¥\": \"⢽\"\n\t}\n\t\n\tarrows = {\n\t\t\"←\": \"⢎\", \"⇐\": \"⢎\", \"⇦\": \"⢎\", \"◀\": \"⢎\", \"◁\": \"⢎\", \"◂\": \"⢎\", \"◃\": \"⢎\", \"◄\": \"⢎\", \"◅\": \"⢎\", \"→\": \"⡱\", \"⇒\": \"⡱\", \"⇨\": \"⡱\", \"▶\": \"⡱\", \"▷\": \"⡱\", \"▸\": \"⡱\", \"▹\": \"⡱\", \"►\": \"⡱\", \"▻\": \"⡱\", \"↑\": \"⣭\", \"⇑\": \"⣭\", \"⇧\": \"⣭\", \"▲\": \"⣭\", \"△\": \"⣭\", \"▴\": \"⣭\", \"▵\": \"⣭\", \"↓\": \"⣛\", \"⇓\": \"⣛\", \"⇩\": \"⣛\", \"▼\": \"⣛\", \"▽\": \"⣛\", \"▾\": \"⣛\", \"▿\": \"⣛\"\n\t}\n\n\tcombined = punctuation | numbers | uppercase | lowercase | currency_signs | arrows\n\n\treturn \"\".join([combined.get(c, c) for c in Z38531K1])"
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Dutch eight-dot Braille encode, Python"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
864djjlwcfna0b9fr9gluckktuidx5e
297053
297052
2026-08-06T20:05:00Z
JhowieNitnek
1044
297053
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z38534"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z38531",
"Z14K3": {
"Z1K1": "Z16",
"Z16K1": "Z610",
"Z16K2": "def Z38531(Z38531K1):\n\t# Uppercase Latin script letters\n\tuppercase = {\n\t\t\"A\": \"⡁\", \"B\": \"⡃\", \"C\": \"⡉\", \"D\": \"⡙\", \"E\": \"⡑\", \"F\": \"⡋\", \"G\": \"⡛\", \"H\": \"⡓\", \"I\": \"⡊\", \"J\": \"⡚\", \"K\": \"⡅\", \"L\": \"⡇\", \"M\": \"⡍\", \"N\": \"⡝\", \"O\": \"⡕\", \"P\": \"⡏\", \"Q\": \"⡟\", \"R\": \"⡗\", \"S\": \"⡎\", \"T\": \"⡞\", \"U\": \"⡥\", \"V\": \"⡧\", \"W\": \"⡺\", \"X\": \"⡭\", \"Y\": \"⡽\", \"Z\": \"⡵\"\n\t}\n\n\t# Lowercase Latin script letters\n\tlowercase = {\n\t\t\"a\": \"⠁\", \"b\": \"⠃\", \"c\": \"⠉\", \"d\": \"⠙\", \"e\": \"⠑\", \"f\": \"⠋\", \"g\": \"⠛\", \"h\": \"⠓\", \"i\": \"⠊\", \"j\": \"⠚\", \"k\": \"⠅\", \"l\": \"⠇\", \"m\": \"⠍\", \"n\": \"⠝\", \"o\": \"⠕\", \"p\": \"⠏\", \"q\": \"⠟\", \"r\": \"⠗\", \"s\": \"⠎\", \"t\": \"⠞\", \"u\": \"⠥\", \"v\": \"⠧\", \"w\": \"⠺\", \"x\": \"⠭\", \"y\": \"⠽\", \"z\": \"⠵\"\n\t}\n\n\t# Numbers\n\tnumbers = {\n\t\t\"1\": \"⠡\", \"2\": \"⠣\", \"3\": \"⠩\", \"4\": \"⠹\", \"5\": \"⠱\", \"6\": \"⠫\", \"7\": \"⠻\", \"8\": \"⠳\", \"9\": \"⠪\", \"0\": \"⠬\"\n\t}\n\n\t# Punctuation and other symbols\n\tpunctuation = {\n\t\t\" \": \"⠀\", \"!\": \"⠖\", '\"': \"⠶\", \"#\": \"⠼\", \"%\": \"⠿\", \"\u0026\": \"⠯\",\"'\": \"⠄\", \"(\": \"⠦\", \")\": \"⠴\", \"*\": \"⠔\", \"+\": \"⢖\", \",\": \"⠂\", \"-\": \"⠤\", \".\": \"⠲\", \"/\": \"⠌\", \":\": \"⠒\", \";\": \"⠆\", \"\u003C\": \"⢔\", \"=\": \"⢶\", \"\u003E\": \"⡢\", \"?\": \"⠢\", \"@\": \"⠜\", \"[\": \"⠷\", \"]\": \"⠾\", \"^\": \"⡬\", \"_\": \"⠸\", \"`\": \"⠠\", \"{\": \"⣦\", \"|\": \"⢸\", \"}\": \"⣴\", \"~\": \"⢢\", \"¡\": \"⣋\", \"¦\": \"⢘\", \"§\": \"⣐\", \"¨\": \"⠈\", \"©\": \"⢉\", \"“\": \"⣆\", \"«\": \"⣆\", \"¬\": \"⣲\", \"®\": \"⢗\", \"°\": \"⢛\", \"±\": \"⣖\", \"²\": \"⡆\", \"³\": \"⡒\", \"´\": \"⢀\", \"µ\": \"⢍\", \"¶\": \"⡀\", \"·\": \"⠐\", \"¸\": \"⢂\", \"¹\": \"⡂\", '”': \"⣰\", \"»\": \"⣰\", \"¼\": \"⡳\", \"½\": \"⢇\", \"¾\": \"⡻\", \"¿\": \"⣑\", \"×\": \"⢦\", \"÷\": \"⢲\", \"–\": \"⡤\", \"—\": \"⣀\", \"‘\": \"⣄\", \"‹\": \"⣄\", \"’\": \"⣠\", \"›\": \"⣠\", \"‚\": \"⡄\", \"„\": \"⡶\", \"†\": \"⡖\", \"…\": \"⡲\", \"‰\": \"⡿\", \"′\": \"⢄\", \"™\": \"⢞\", \"−\": \"⢤\", \"√\": \"⡩\", \"∛\": \"⡫\", \"∜\": \"⡯\", \"∞\": \"⣉\", \"∫\": \"⡾\", \"≈\": \"⣶\", \"≠\": \"⣟\", \"≤\": \"⣼\", \"≥\": \"⣧\"\n\t}\n\t\n\t#Currency signs\n\tcurrency_signs = {\n\t\t\"$\": \"⢙\", \"€\": \"⢑\", \"£\": \"⢏\", \"¤\": \"⢭\", \"¥\": \"⢽\"\n\t}\n\t\n\t#Arrows\n\tarrows = {\n\t\t\"←\": \"⢎\", \"⇐\": \"⢎\", \"⇦\": \"⢎\", \"◀\": \"⢎\", \"◁\": \"⢎\", \"◂\": \"⢎\", \"◃\": \"⢎\", \"◄\": \"⢎\", \"◅\": \"⢎\", \"→\": \"⡱\", \"⇒\": \"⡱\", \"⇨\": \"⡱\", \"▶\": \"⡱\", \"▷\": \"⡱\", \"▸\": \"⡱\", \"▹\": \"⡱\", \"►\": \"⡱\", \"▻\": \"⡱\", \"↑\": \"⣭\", \"⇑\": \"⣭\", \"⇧\": \"⣭\", \"▲\": \"⣭\", \"△\": \"⣭\", \"▴\": \"⣭\", \"▵\": \"⣭\", \"↓\": \"⣛\", \"⇓\": \"⣛\", \"⇩\": \"⣛\", \"▼\": \"⣛\", \"▽\": \"⣛\", \"▾\": \"⣛\", \"▿\": \"⣛\"\n\t}\n\t\n\t#Symbols to make lists\n\tsummary_symbols = {\n\t\t\"⁃\": \"⣤\", \"■\": \"⣤\", \"▪\": \"⣤\", \"◘\": \"⣤\", \"◦\": \"⣤\", \"◼\": \"⣤\", \"◾\": \"⣤\", \"♣\": \"⣤\", \"♦\": \"⣤\", \"✓\": \"⣤\", \"✔\": \"⣤\", \"❖\": \"⣤\", \"➢\": \"⣤\"\n\t}\n\n\tcombined = punctuation | numbers | uppercase | lowercase | currency_signs | arrows | summary_symbols\n\n\treturn \"\".join([combined.get(c, c) for c in Z38531K1])"
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Dutch eight-dot Braille encode, Python"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
0e77smcv6v7j622p9vruzmsjx2bqtuz
297056
297053
2026-08-06T20:23:34Z
JhowieNitnek
1044
Added encoding for Greek characters
297056
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z38534"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z38531",
"Z14K3": {
"Z1K1": "Z16",
"Z16K1": "Z610",
"Z16K2": "def Z38531(Z38531K1):\n\t# Uppercase Latin script letters\n\tuppercase = {\n\t\t\"A\": \"⡁\", \"B\": \"⡃\", \"C\": \"⡉\", \"D\": \"⡙\", \"E\": \"⡑\", \"F\": \"⡋\", \"G\": \"⡛\", \"H\": \"⡓\", \"I\": \"⡊\", \"J\": \"⡚\", \"K\": \"⡅\", \"L\": \"⡇\", \"M\": \"⡍\", \"N\": \"⡝\", \"O\": \"⡕\", \"P\": \"⡏\", \"Q\": \"⡟\", \"R\": \"⡗\", \"S\": \"⡎\", \"T\": \"⡞\", \"U\": \"⡥\", \"V\": \"⡧\", \"W\": \"⡺\", \"X\": \"⡭\", \"Y\": \"⡽\", \"Z\": \"⡵\"\n\t}\n\n\t# Lowercase Latin script letters\n\tlowercase = {\n\t\t\"a\": \"⠁\", \"b\": \"⠃\", \"c\": \"⠉\", \"d\": \"⠙\", \"e\": \"⠑\", \"f\": \"⠋\", \"g\": \"⠛\", \"h\": \"⠓\", \"i\": \"⠊\", \"j\": \"⠚\", \"k\": \"⠅\", \"l\": \"⠇\", \"m\": \"⠍\", \"n\": \"⠝\", \"o\": \"⠕\", \"p\": \"⠏\", \"q\": \"⠟\", \"r\": \"⠗\", \"s\": \"⠎\", \"t\": \"⠞\", \"u\": \"⠥\", \"v\": \"⠧\", \"w\": \"⠺\", \"x\": \"⠭\", \"y\": \"⠽\", \"z\": \"⠵\"\n\t}\n\n\t# Numbers\n\tnumbers = {\n\t\t\"1\": \"⠡\", \"2\": \"⠣\", \"3\": \"⠩\", \"4\": \"⠹\", \"5\": \"⠱\", \"6\": \"⠫\", \"7\": \"⠻\", \"8\": \"⠳\", \"9\": \"⠪\", \"0\": \"⠬\"\n\t}\n\n\t# Punctuation and other symbols\n\tpunctuation = {\n\t\t\" \": \"⠀\", \"!\": \"⠖\", '\"': \"⠶\", \"#\": \"⠼\", \"%\": \"⠿\", \"\u0026\": \"⠯\",\"'\": \"⠄\", \"(\": \"⠦\", \")\": \"⠴\", \"*\": \"⠔\", \"+\": \"⢖\", \",\": \"⠂\", \"-\": \"⠤\", \".\": \"⠲\", \"/\": \"⠌\", \":\": \"⠒\", \";\": \"⠆\", \"\u003C\": \"⢔\", \"=\": \"⢶\", \"\u003E\": \"⡢\", \"?\": \"⠢\", \"@\": \"⠜\", \"[\": \"⠷\", \"]\": \"⠾\", \"^\": \"⡬\", \"_\": \"⠸\", \"`\": \"⠠\", \"{\": \"⣦\", \"|\": \"⢸\", \"}\": \"⣴\", \"~\": \"⢢\", \"¡\": \"⣋\", \"¦\": \"⢘\", \"§\": \"⣐\", \"¨\": \"⠈\", \"©\": \"⢉\", \"“\": \"⣆\", \"«\": \"⣆\", \"¬\": \"⣲\", \"®\": \"⢗\", \"°\": \"⢛\", \"±\": \"⣖\", \"²\": \"⡆\", \"³\": \"⡒\", \"´\": \"⢀\", \"µ\": \"⢍\", \"¶\": \"⡀\", \"·\": \"⠐\", \"¸\": \"⢂\", \"¹\": \"⡂\", '”': \"⣰\", \"»\": \"⣰\", \"¼\": \"⡳\", \"½\": \"⢇\", \"¾\": \"⡻\", \"¿\": \"⣑\", \"×\": \"⢦\", \"÷\": \"⢲\", \"–\": \"⡤\", \"—\": \"⣀\", \"‘\": \"⣄\", \"‹\": \"⣄\", \"’\": \"⣠\", \"›\": \"⣠\", \"‚\": \"⡄\", \"„\": \"⡶\", \"†\": \"⡖\", \"…\": \"⡲\", \"‰\": \"⡿\", \"′\": \"⢄\", \"™\": \"⢞\", \"−\": \"⢤\", \"√\": \"⡩\", \"∛\": \"⡫\", \"∜\": \"⡯\", \"∞\": \"⣉\", \"∫\": \"⡾\", \"≈\": \"⣶\", \"≠\": \"⣟\", \"≤\": \"⣼\", \"≥\": \"⣧\"\n\t}\n\t\n\t# Currency signs\n\tcurrency_signs = {\n\t\t\"$\": \"⢙\", \"€\": \"⢑\", \"£\": \"⢏\", \"¤\": \"⢭\", \"¥\": \"⢽\"\n\t}\n\t\n\t# Arrows\n\tarrows = {\n\t\t\"←\": \"⢎\", \"⇐\": \"⢎\", \"⇦\": \"⢎\", \"◀\": \"⢎\", \"◁\": \"⢎\", \"◂\": \"⢎\", \"◃\": \"⢎\", \"◄\": \"⢎\", \"◅\": \"⢎\", \"→\": \"⡱\", \"⇒\": \"⡱\", \"⇨\": \"⡱\", \"▶\": \"⡱\", \"▷\": \"⡱\", \"▸\": \"⡱\", \"▹\": \"⡱\", \"►\": \"⡱\", \"▻\": \"⡱\", \"↑\": \"⣭\", \"⇑\": \"⣭\", \"⇧\": \"⣭\", \"▲\": \"⣭\", \"△\": \"⣭\", \"▴\": \"⣭\", \"▵\": \"⣭\", \"↓\": \"⣛\", \"⇓\": \"⣛\", \"⇩\": \"⣛\", \"▼\": \"⣛\", \"▽\": \"⣛\", \"▾\": \"⣛\", \"▿\": \"⣛\"\n\t}\n\t\n\t# Symbols to make lists\n\tsummary_symbols = {\n\t\t\"•\": \"⣤\", \"⁃\": \"⣤\", \"■\": \"⣤\", \"▪\": \"⣤\", \"◘\": \"⣤\", \"◦\": \"⣤\", \"◼\": \"⣤\", \"◾\": \"⣤\", \"♣\": \"⣤\", \"♦\": \"⣤\", \"✓\": \"⣤\", \"✔\": \"⣤\", \"❖\": \"⣤\", \"➢\": \"⣤\"\n\t}\n\t\n\t# Uppercase Greek script letters\n\tgreek_uppercase = {\n\t\t\"Α\": \"⣁\", \"Β\": \"⣃\", \"Γ\": \"⣛\", \"Δ\": \"⣙\", \"Ε\": \"⣑\", \"Ζ\": \"⣵\", \"Η\": \"⣱\", \"Θ\": \"⣹\", \"Ι\": \"⣊\", \"Κ\": \"⣅\", \"Λ\": \"⣇\", \"Μ\": \"⣍\", \"Ν\": \"⣝\", \"Ξ\": \"⣭\", \"Ο\": \"⣕\", \"Π\": \"⣏\", \"Ρ\": \"⣗\", \"Σ\": \"⣎\", \"Τ\": \"⣞\", \"Υ\": \"⣥\", \"Φ\": \"⣋\", \"Χ\": \"⣯\", \"Ψ\": \"⣽\", \"Ω\": \"⣺\"\n\t}\n\t\n\t# Lowercase Greek script letters\n\tgreek_lowercase = {\n\t\t\"α\": \"⢁\", \"β\": \"⢃\", \"γ\": \"⢛\", \"δ\": \"⢙\", \"ε\": \"⢑\", \"ζ\": \"⢵\", \"η\": \"⢱\", \"θ\": \"⢹\", \"ι\": \"⢊\", \"κ\": \"⢅\", \"λ\": \"⢇\", \"μ\": \"⢍\", \"ν\": \"⢝\", \"ξ\": \"⢭\", \"ο\": \"⢕\", \"π\": \"⢏\", \"ρ\": \"⢗\", \"σ\": \"⢎\", \"τ\": \"⢞\", \"υ\": \"⢥\", \"φ\": \"⢋\", \"χ\": \"⢯\", \"ψ\": \"⢯\", \"ω\": \"⢺\"\n\t}\n\n\tcombined = punctuation | numbers | uppercase | lowercase | currency_signs | arrows | summary_symbols | greek_uppercase | greek_lowercase\n\n\treturn \"\".join([combined.get(c, c) for c in Z38531K1])"
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Dutch eight-dot Braille encode, Python"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
cghncln644rwnqlsv3039bg34js898c
297057
297056
2026-08-06T20:33:29Z
JhowieNitnek
1044
297057
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z38534"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z38531",
"Z14K3": {
"Z1K1": "Z16",
"Z16K1": "Z610",
"Z16K2": "def Z38531(Z38531K1):\n\t# Uppercase Latin script letters\n\tuppercase = {\n\t\t\"A\": \"⡁\", \"B\": \"⡃\", \"C\": \"⡉\", \"D\": \"⡙\", \"E\": \"⡑\", \"F\": \"⡋\", \"G\": \"⡛\", \"H\": \"⡓\", \"I\": \"⡊\", \"J\": \"⡚\", \"K\": \"⡅\", \"L\": \"⡇\", \"M\": \"⡍\", \"N\": \"⡝\", \"O\": \"⡕\", \"P\": \"⡏\", \"Q\": \"⡟\", \"R\": \"⡗\", \"S\": \"⡎\", \"T\": \"⡞\", \"U\": \"⡥\", \"V\": \"⡧\", \"W\": \"⡺\", \"X\": \"⡭\", \"Y\": \"⡽\", \"Z\": \"⡵\"\n\t}\n\n\t# Lowercase Latin script letters\n\tlowercase = {\n\t\t\"a\": \"⠁\", \"b\": \"⠃\", \"c\": \"⠉\", \"d\": \"⠙\", \"e\": \"⠑\", \"f\": \"⠋\", \"g\": \"⠛\", \"h\": \"⠓\", \"i\": \"⠊\", \"j\": \"⠚\", \"k\": \"⠅\", \"l\": \"⠇\", \"m\": \"⠍\", \"n\": \"⠝\", \"o\": \"⠕\", \"p\": \"⠏\", \"q\": \"⠟\", \"r\": \"⠗\", \"s\": \"⠎\", \"t\": \"⠞\", \"u\": \"⠥\", \"v\": \"⠧\", \"w\": \"⠺\", \"x\": \"⠭\", \"y\": \"⠽\", \"z\": \"⠵\"\n\t}\n\n\t# Numbers\n\tnumbers = {\n\t\t\"1\": \"⠡\", \"2\": \"⠣\", \"3\": \"⠩\", \"4\": \"⠹\", \"5\": \"⠱\", \"6\": \"⠫\", \"7\": \"⠻\", \"8\": \"⠳\", \"9\": \"⠪\", \"0\": \"⠬\"\n\t}\n\n\t# Punctuation and other symbols\n\tpunctuation = {\n\t\t\" \": \"⠀\", \"!\": \"⠖\", '\"': \"⠶\", \"#\": \"⠼\", \"%\": \"⠿\", \"\u0026\": \"⠯\",\"'\": \"⠄\", \"(\": \"⠦\", \")\": \"⠴\", \"*\": \"⠔\", \"+\": \"⢖\", \",\": \"⠂\", \"-\": \"⠤\", \".\": \"⠲\", \"/\": \"⠌\", \":\": \"⠒\", \";\": \"⠆\", \"\u003C\": \"⢔\", \"=\": \"⢶\", \"\u003E\": \"⡢\", \"?\": \"⠢\", \"@\": \"⠜\", \"[\": \"⠷\", \"]\": \"⠾\", \"^\": \"⡬\", \"_\": \"⠸\", \"`\": \"⠠\", \"{\": \"⣦\", \"|\": \"⢸\", \"}\": \"⣴\", \"~\": \"⢢\", \"¡\": \"⣋\", \"¦\": \"⢘\", \"§\": \"⣐\", \"¨\": \"⠈\", \"©\": \"⢉\", \"“\": \"⣆\", \"«\": \"⣆\", \"¬\": \"⣲\", \"®\": \"⢗\", \"°\": \"⢛\", \"±\": \"⣖\", \"²\": \"⡆\", \"³\": \"⡒\", \"´\": \"⢀\", \"µ\": \"⢍\", \"¶\": \"⡀\", \"·\": \"⠐\", \"¸\": \"⢂\", \"¹\": \"⡂\", '”': \"⣰\", \"»\": \"⣰\", \"¼\": \"⡳\", \"½\": \"⢇\", \"¾\": \"⡻\", \"¿\": \"⣑\", \"×\": \"⢦\", \"÷\": \"⢲\", \"–\": \"⡤\", \"—\": \"⣀\", \"‘\": \"⣄\", \"‹\": \"⣄\", \"’\": \"⣠\", \"›\": \"⣠\", \"‚\": \"⡄\", \"„\": \"⡶\", \"†\": \"⡖\", \"…\": \"⡲\", \"‰\": \"⡿\", \"′\": \"⢄\", \"™\": \"⢞\", \"−\": \"⢤\", \"√\": \"⡩\", \"∛\": \"⡫\", \"∜\": \"⡯\", \"∞\": \"⣉\", \"∫\": \"⡾\", \"≈\": \"⣶\", \"≠\": \"⣟\", \"≤\": \"⣼\", \"≥\": \"⣧\"\n\t}\n\t\n\t# Currency signs\n\tcurrency_signs = {\n\t\t\"$\": \"⢙\", \"€\": \"⢑\", \"£\": \"⢏\", \"¤\": \"⢭\", \"¥\": \"⢽\"\n\t}\n\t\n\t# Arrows\n\tarrows = {\n\t\t\"←\": \"⢎\", \"⇐\": \"⢎\", \"⇦\": \"⢎\", \"◀\": \"⢎\", \"◁\": \"⢎\", \"◂\": \"⢎\", \"◃\": \"⢎\", \"◄\": \"⢎\", \"◅\": \"⢎\", \"→\": \"⡱\", \"⇒\": \"⡱\", \"⇨\": \"⡱\", \"▶\": \"⡱\", \"▷\": \"⡱\", \"▸\": \"⡱\", \"▹\": \"⡱\", \"►\": \"⡱\", \"▻\": \"⡱\", \"↑\": \"⣭\", \"⇑\": \"⣭\", \"⇧\": \"⣭\", \"▲\": \"⣭\", \"△\": \"⣭\", \"▴\": \"⣭\", \"▵\": \"⣭\", \"↓\": \"⣛\", \"⇓\": \"⣛\", \"⇩\": \"⣛\", \"▼\": \"⣛\", \"▽\": \"⣛\", \"▾\": \"⣛\", \"▿\":\"⣛\"\n\t}\n\t\n\t# Symbols to make lists\n\tsummary_symbols = {\n\t\t\"•\": \"⣤\", \"⁃\": \"⣤\", \"■\": \"⣤\", \"▪\": \"⣤\", \"◘\": \"⣤\", \"◦\": \"⣤\", \"◼\": \"⣤\", \"◾\": \"⣤\", \"♣\": \"⣤\", \"♦\": \"⣤\", \"✓\": \"⣤\", \"✔\": \"⣤\", \"❖\": \"⣤\", \"➢\": \"⣤\"\n\t}\n\t\n\t# Uppercase Greek script letters\n\tgreek_uppercase = {\n\t\t\"Α\": \"⣁\", \"Β\": \"⣃\", \"Γ\": \"⣛\", \"Δ\": \"⣙\", \"Ε\": \"⣑\", \"Ζ\": \"⣵\", \"Η\": \"⣱\", \"Θ\": \"⣹\", \"Ι\": \"⣊\", \"Κ\": \"⣅\", \"Λ\": \"⣇\", \"Μ\": \"⣍\", \"Ν\": \"⣝\", \"Ξ\": \"⣭\", \"Ο\": \"⣕\", \"Π\": \"⣏\", \"Ρ\": \"⣗\", \"Σ\": \"⣎\", \"Τ\": \"⣞\", \"Υ\": \"⣥\", \"Φ\": \"⣋\", \"Χ\": \"⣯\", \"Ψ\": \"⣽\", \"Ω\": \"⣺\"\n\t}\n\t\n\t# Lowercase Greek script letters\n\tgreek_lowercase = {\n\t\t\"α\": \"⢁\", \"β\": \"⢃\", \"γ\": \"⢛\", \"δ\": \"⢙\", \"ε\": \"⢑\", \"ζ\": \"⢵\", \"η\": \"⢱\", \"θ\": \"⢹\", \"ι\": \"⢊\", \"κ\": \"⢅\", \"λ\": \"⢇\", \"μ\": \"⢍\", \"ν\": \"⢝\", \"ξ\": \"⢭\", \"ο\": \"⢕\", \"π\": \"⢏\", \"ρ\": \"⢗\", \"σ\": \"⢎\", \"τ\": \"⢞\", \"υ\": \"⢥\", \"φ\": \"⢋\", \"χ\": \"⢯\", \"ψ\": \"⢯\", \"ω\": \"⢺\"\n\t}\n\n\tcombined = punctuation | numbers | uppercase | lowercase | currency_signs | arrows | summary_symbols | greek_uppercase | greek_lowercase\n\n\treturn \"\".join([combined.get(c, c) for c in Z38531K1])"
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Dutch eight-dot Braille encode, Python"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
k5rdgriwtnr3t9g8zcislbeq1g4l3bx
297058
297057
2026-08-06T20:34:50Z
JhowieNitnek
1044
297058
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z38534"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z38531",
"Z14K3": {
"Z1K1": "Z16",
"Z16K1": "Z610",
"Z16K2": "def Z38531(Z38531K1):\n\t# Uppercase Latin script letters\n\tuppercase = {\n\t\t\"A\": \"⡁\", \"B\": \"⡃\", \"C\": \"⡉\", \"D\": \"⡙\", \"E\": \"⡑\", \"F\": \"⡋\", \"G\": \"⡛\", \"H\": \"⡓\", \"I\": \"⡊\", \"J\": \"⡚\", \"K\": \"⡅\", \"L\": \"⡇\", \"M\": \"⡍\", \"N\": \"⡝\", \"O\": \"⡕\", \"P\": \"⡏\", \"Q\": \"⡟\", \"R\": \"⡗\", \"S\": \"⡎\", \"T\": \"⡞\", \"U\": \"⡥\", \"V\": \"⡧\", \"W\": \"⡺\", \"X\": \"⡭\", \"Y\": \"⡽\", \"Z\": \"⡵\"\n\t}\n\n\t# Lowercase Latin script letters\n\tlowercase = {\n\t\t\"a\": \"⠁\", \"b\": \"⠃\", \"c\": \"⠉\", \"d\": \"⠙\", \"e\": \"⠑\", \"f\": \"⠋\", \"g\": \"⠛\", \"h\": \"⠓\", \"i\": \"⠊\", \"j\": \"⠚\", \"k\": \"⠅\", \"l\": \"⠇\", \"m\": \"⠍\", \"n\": \"⠝\", \"o\": \"⠕\", \"p\": \"⠏\", \"q\": \"⠟\", \"r\": \"⠗\", \"s\": \"⠎\", \"t\": \"⠞\", \"u\": \"⠥\", \"v\": \"⠧\", \"w\": \"⠺\", \"x\": \"⠭\", \"y\": \"⠽\", \"z\": \"⠵\"\n\t}\n\n\t# Numbers\n\tnumbers = {\n\t\t\"1\": \"⠡\", \"2\": \"⠣\", \"3\": \"⠩\", \"4\": \"⠹\", \"5\": \"⠱\", \"6\": \"⠫\", \"7\": \"⠻\", \"8\": \"⠳\", \"9\": \"⠪\", \"0\": \"⠬\"\n\t}\n\n\t# Punctuation and other symbols\n\tpunctuation = {\n\t\t\" \": \"⠀\", \"!\": \"⠖\", '\"': \"⠶\", \"#\": \"⠼\", \"%\": \"⠿\", \"\u0026\": \"⠯\",\"'\": \"⠄\", \"(\": \"⠦\", \")\": \"⠴\", \"*\": \"⠔\", \"+\": \"⢖\", \",\": \"⠂\", \"-\": \"⠤\", \".\": \"⠲\", \"/\": \"⠌\", \":\": \"⠒\", \";\": \"⠆\", \"\u003C\": \"⢔\", \"=\": \"⢶\", \"\u003E\": \"⡢\", \"?\": \"⠢\", \"@\": \"⠜\", \"[\": \"⠷\", \"]\": \"⠾\", \"^\": \"⡬\", \"_\": \"⠸\", \"`\": \"⠠\", \"{\": \"⣦\", \"|\": \"⢸\", \"}\": \"⣴\", \"~\": \"⢢\", \"¡\": \"⣋\", \"¦\": \"⢘\", \"§\": \"⣐\", \"¨\": \"⠈\", \"©\": \"⢉\", \"“\": \"⣆\", \"«\": \"⣆\", \"¬\": \"⣲\", \"®\": \"⢗\", \"°\": \"⢛\", \"±\": \"⣖\", \"²\": \"⡆\", \"³\": \"⡒\", \"´\": \"⢀\", \"µ\": \"⢍\", \"¶\": \"⡀\", \"·\": \"⠐\", \"¸\": \"⢂\", \"¹\": \"⡂\", '”': \"⣰\", \"»\": \"⣰\", \"¼\": \"⡳\", \"½\": \"⢇\", \"¾\": \"⡻\", \"¿\": \"⣑\", \"×\": \"⢦\", \"÷\": \"⢲\", \"–\": \"⡤\", \"—\": \"⣀\", \"‘\": \"⣄\", \"‹\": \"⣄\", \"’\": \"⣠\", \"›\": \"⣠\", \"‚\": \"⡄\", \"„\": \"⡶\", \"†\": \"⡖\", \"…\": \"⡲\", \"‰\": \"⡿\", \"′\": \"⢄\", \"™\": \"⢞\", \"−\": \"⢤\", \"√\": \"⡩\", \"∛\": \"⡫\", \"∜\": \"⡯\", \"∞\": \"⣉\", \"∫\": \"⡾\", \"≈\": \"⣶\", \"≠\": \"⣟\", \"≤\": \"⣼\", \"≥\": \"⣧\"\n\t}\n\t\n\t# Currency signs\n\tcurrency_signs = {\n\t\t\"$\": \"⢙\", \"€\": \"⢑\", \"£\": \"⢏\", \"¤\": \"⢭\", \"¥\": \"⢽\"\n\t}\n\t\n\t# Arrows\n\tarrows = {\n\t\t\"←\": \"⢎\", \"⇐\": \"⢎\", \"⇦\": \"⢎\", \"◀\": \"⢎\", \"◁\": \"⢎\", \"◂\": \"⢎\", \"◃\": \"⢎\", \"◄\": \"⢎\", \"◅\": \"⢎\", \"→\": \"⡱\", \"⇒\": \"⡱\", \"⇨\": \"⡱\", \"▶\": \"⡱\", \"▷\": \"⡱\", \"▸\": \"⡱\", \"▹\": \"⡱\", \"►\": \"⡱\", \"▻\": \"⡱\", \"↑\": \"⣭\", \"⇑\": \"⣭\", \"⇧\": \"⣭\", \"▲\": \"⣭\", \"△\": \"⣭\", \"▴\": \"⣭\", \"▵\": \"⣭\", \"↓\": \"⣛\", \"⇓\": \"⣛\", \"⇩\": \"⣛\", \"▼\": \"⣛\", \"▽\": \"⣛\", \"▾\": \"⣛\", \"▿\": \"⣛\"\n\t}\n\t\n\t# Symbols to make lists\n\tsummary_symbols = {\n\t\t\"•\": \"⣤\", \"⁃\": \"⣤\", \"■\": \"⣤\", \"▪\": \"⣤\", \"◘\": \"⣤\", \"◦\": \"⣤\", \"◼\": \"⣤\", \"◾\": \"⣤\", \"♣\": \"⣤\", \"♦\": \"⣤\", \"✓\": \"⣤\", \"✔\": \"⣤\", \"❖\": \"⣤\", \"➢\": \"⣤\"\n\t}\n\t\n\t# Uppercase Greek script letters\n\tgreek_uppercase = {\n\t\t\"Α\": \"⣁\", \"Β\": \"⣃\", \"Γ\": \"⣛\", \"Δ\": \"⣙\", \"Ε\": \"⣑\", \"Ζ\": \"⣵\", \"Η\": \"⣱\", \"Θ\": \"⣹\", \"Ι\": \"⣊\", \"Κ\": \"⣅\", \"Λ\": \"⣇\", \"Μ\": \"⣍\", \"Ν\": \"⣝\", \"Ξ\": \"⣭\", \"Ο\": \"⣕\", \"Π\": \"⣏\", \"Ρ\": \"⣗\", \"Σ\": \"⣎\", \"Τ\": \"⣞\", \"Υ\": \"⣥\", \"Φ\": \"⣋\", \"Χ\": \"⣯\", \"Ψ\": \"⣽\", \"Ω\": \"⣺\"\n\t}\n\t\n\t# Lowercase Greek script letters\n\tgreek_lowercase = {\n\t\t\"α\": \"⢁\", \"β\": \"⢃\", \"γ\": \"⢛\", \"δ\": \"⢙\", \"ε\": \"⢑\", \"ζ\": \"⢵\", \"η\": \"⢱\", \"θ\": \"⢹\", \"ι\": \"⢊\", \"κ\": \"⢅\", \"λ\": \"⢇\", \"μ\": \"⢍\", \"ν\": \"⢝\", \"ξ\": \"⢭\", \"ο\": \"⢕\", \"π\": \"⢏\", \"ρ\": \"⢗\", \"σ\": \"⢎\", \"τ\": \"⢞\", \"υ\": \"⢥\", \"φ\": \"⢋\", \"χ\": \"⢯\", \"ψ\": \"⢯\", \"ω\": \"⢺\"\n\t}\n\n\tcombined = punctuation | numbers | uppercase | lowercase | currency_signs | arrows | summary_symbols | greek_uppercase | greek_lowercase\n\n\treturn \"\".join([combined.get(c, c) for c in Z38531K1])"
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Dutch eight-dot Braille encode, Python"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
cghncln644rwnqlsv3039bg34js898c
Z38909
0
89373
297061
296718
2026-08-06T21:40:42Z
HenkvD
1290
typo geclassificerd -> geclassificeerd
297061
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z38909"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z38908",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z38908",
"Z38908K1": {
"Z1K1": "Z6091",
"Z6091K1": "Q140"
},
"Z38908K2": {
"Z1K1": "Z6091",
"Z6091K1": "Q6667323"
},
"Z38908K3": "Z1157"
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z877",
"Z877K2": {
"Z1K1": "Z89",
"Z89K1": "\u003Cstrong\u003ELeeuw\u003C/strong\u003E (\u003Ci\u003EPanthera leo\u003C/i\u003E) is een soort grote katachtige in de familie \u003Ca href=\"https://abstract.wikipedia.org/wiki/Q25265\"\u003EFelidae\u003C/a\u003E. De soort werd in 1758 beschreven door \u003Ca href=\"https://abstract.wikipedia.org/wiki/Q1043\"\u003ECarolus Linnaeus\u003C/a\u003E.\u003Csup class=\"ext-wikilambda-reference\"\u003E\u003Ca href=\"https://www.wikidata.org/wiki/Q140#P225\"\u003EWikidata: leeuw (Q140#P225)\u003C/a\u003E\u003C/sup\u003E \u003Cem\u003EPanthera leo\u003C/em\u003E is door de \u003Ca href=\"https://abstract.wikipedia.org/wiki/Q48268\"\u003EInternational Union for Conservation of Nature and Natural Resources\u003C/a\u003E (IUCN) geclassificeerd als kwetsbare soort.\u003Csup class=\"ext-wikilambda-reference\"\u003E\u003Ca href=\"https://www.wikidata.org/wiki/Q140#P141\"\u003EWikidata: leeuw (Q140#P141)\u003C/a\u003E\u003C/sup\u003E"
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "intro sentence Lion in Dutch"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
7zyzhk7zuxwgpst7kny039aw0y0hqpv
Z38911
0
89378
297060
296713
2026-08-06T21:39:26Z
HenkvD
1290
typo geclassificerd -> geclassificeerd
297060
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z38911"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z38908",
"Z14K2": {
"Z1K1": "Z7",
"Z7K1": "Z27926",
"Z27926K1": [
"Z89",
{
"Z1K1": "Z7",
"Z7K1": "Z802",
"Z802K1": {
"Z1K1": "Z7",
"Z7K1": "Z28676",
"Z28676K1": {
"Z1K1": "Z7",
"Z7K1": "Z37821",
"Z37821K1": {
"Z1K1": "Z18",
"Z18K1": "Z38908K1"
},
"Z37821K2": {
"Z1K1": "Z18",
"Z18K1": "Z38908K3"
}
},
"Z28676K2": "Z37463"
},
"Z802K2": {
"Z1K1": "Z7",
"Z7K1": "Z27926",
"Z27926K1": [
"Z89",
{
"Z1K1": "Z89",
"Z89K1": "\u003Cb\u003E\u003Ci\u003E"
},
{
"Z1K1": "Z7",
"Z7K1": "Z27868",
"Z27868K1": {
"Z1K1": "Z7",
"Z7K1": "Z19308",
"Z19308K1": {
"Z1K1": "Z7",
"Z7K1": "Z37836",
"Z37836K1": {
"Z1K1": "Z18",
"Z18K1": "Z38908K1"
}
}
}
},
{
"Z1K1": "Z89",
"Z89K1": "\u003C/i\u003E\u003C/b\u003E"
}
]
},
"Z802K3": {
"Z1K1": "Z7",
"Z7K1": "Z27926",
"Z27926K1": [
"Z89",
{
"Z1K1": "Z7",
"Z7K1": "Z28914",
"Z28914K1": {
"Z1K1": "Z7",
"Z7K1": "Z10771",
"Z10771K1": {
"Z1K1": "Z7",
"Z7K1": "Z37821",
"Z37821K1": {
"Z1K1": "Z18",
"Z18K1": "Z38908K1"
},
"Z37821K2": {
"Z1K1": "Z18",
"Z18K1": "Z38908K3"
}
}
}
},
{
"Z1K1": "Z89",
"Z89K1": " (\u003Ci\u003E"
},
{
"Z1K1": "Z7",
"Z7K1": "Z27868",
"Z27868K1": {
"Z1K1": "Z7",
"Z7K1": "Z19308",
"Z19308K1": {
"Z1K1": "Z7",
"Z7K1": "Z37836",
"Z37836K1": {
"Z1K1": "Z18",
"Z18K1": "Z38908K1"
}
}
}
},
{
"Z1K1": "Z89",
"Z89K1": "\u003C/i\u003E)"
}
]
}
},
{
"Z1K1": "Z89",
"Z89K1": " is een soort "
},
{
"Z1K1": "Z7",
"Z7K1": "Z802",
"Z802K1": {
"Z1K1": "Z7",
"Z7K1": "Z10174",
"Z10174K1": {
"Z1K1": "Z7",
"Z7K1": "Z24331",
"Z24331K1": {
"Z1K1": "Z7",
"Z7K1": "Z20041",
"Z20041K1": {
"Z1K1": "Z18",
"Z18K1": "Z38908K2"
}
}
},
"Z10174K2": {
"Z1K1": "Z7",
"Z7K1": "Z10216",
"Z10216K1": {
"Z1K1": "Z7",
"Z7K1": "Z35811",
"Z35811K1": {
"Z1K1": "Z7",
"Z7K1": "Z31676",
"Z31676K1": {
"Z1K1": "Z18",
"Z18K1": "Z38908K2"
},
"Z31676K2": {
"Z1K1": "Z18",
"Z18K1": "Z38908K3"
}
}
}
}
},
"Z802K2": {
"Z1K1": "Z7",
"Z7K1": "Z27926",
"Z27926K1": [
"Z89",
{
"Z1K1": "Z89",
"Z89K1": " "
},
{
"Z1K1": "Z7",
"Z7K1": "Z27868",
"Z27868K1": {
"Z1K1": "Z7",
"Z7K1": "Z14396",
"Z14396K1": {
"Z1K1": "Z7",
"Z7K1": "Z31676",
"Z31676K1": {
"Z1K1": "Z18",
"Z18K1": "Z38908K2"
},
"Z31676K2": {
"Z1K1": "Z18",
"Z18K1": "Z38908K3"
}
}
}
},
{
"Z1K1": "Z89",
"Z89K1": " "
}
]
},
"Z802K3": {
"Z1K1": "Z89",
"Z89K1": ""
}
},
{
"Z1K1": "Z89",
"Z89K1": "in de familie "
},
{
"Z1K1": "Z7",
"Z7K1": "Z36489",
"Z36489K1": {
"Z1K1": "Z7",
"Z7K1": "Z37725",
"Z37725K1": {
"Z1K1": "Z18",
"Z18K1": "Z38908K1"
}
},
"Z36489K2": {
"Z1K1": "Z7",
"Z7K1": "Z23459",
"Z23459K1": {
"Z1K1": "Z7",
"Z7K1": "Z30120",
"Z30120K1": {
"Z1K1": "Z7",
"Z7K1": "Z37725",
"Z37725K1": {
"Z1K1": "Z18",
"Z18K1": "Z38908K1"
}
},
"Z30120K2": [
"Z6030",
"Z6036"
],
"Z30120K3": [
"Z60"
],
"Z30120K4": [
"Z6092",
{
"Z1K1": "Z6092",
"Z6092K1": "P225"
}
]
},
"Z23459K2": {
"Z1K1": "Z6092",
"Z6092K1": "P225"
}
}
},
{
"Z1K1": "Z89",
"Z89K1": ". "
},
{
"Z1K1": "Z7",
"Z7K1": "Z802",
"Z802K1": {
"Z1K1": "Z7",
"Z7K1": "Z37925",
"Z37925K1": {
"Z1K1": "Z7",
"Z7K1": "Z811",
"Z811K1": {
"Z1K1": "Z7",
"Z7K1": "Z37808",
"Z37808K1": {
"Z1K1": "Z18",
"Z18K1": "Z38908K1"
},
"Z37808K2": {
"Z1K1": "Z18",
"Z18K1": "Z38908K3"
}
}
}
},
"Z802K2": {
"Z1K1": "Z7",
"Z7K1": "Z27926",
"Z27926K1": [
"Z89",
{
"Z1K1": "Z89",
"Z89K1": "De soort werd in "
},
{
"Z1K1": "Z7",
"Z7K1": "Z27868",
"Z27868K1": {
"Z1K1": "Z7",
"Z7K1": "Z811",
"Z811K1": {
"Z1K1": "Z7",
"Z7K1": "Z37808",
"Z37808K1": {
"Z1K1": "Z18",
"Z18K1": "Z38908K1"
},
"Z37808K2": {
"Z1K1": "Z18",
"Z18K1": "Z38908K3"
}
}
}
},
{
"Z1K1": "Z89",
"Z89K1": " beschreven door "
},
{
"Z1K1": "Z7",
"Z7K1": "Z802",
"Z802K1": {
"Z1K1": "Z7",
"Z7K1": "Z23120",
"Z23120K1": {
"Z1K1": "Z7",
"Z7K1": "Z16360",
"Z16360K1": {
"Z1K1": "Z7",
"Z7K1": "Z37808",
"Z37808K1": {
"Z1K1": "Z18",
"Z18K1": "Z38908K1"
},
"Z37808K2": {
"Z1K1": "Z18",
"Z18K1": "Z38908K3"
}
}
}
},
"Z802K2": {
"Z1K1": "Z7",
"Z7K1": "Z37927",
"Z37927K1": {
"Z1K1": "Z18",
"Z18K1": "Z38908K1"
},
"Z37927K2": {
"Z1K1": "Z18",
"Z18K1": "Z38908K3"
}
},
"Z802K3": {
"Z1K1": "Z89",
"Z89K1": ""
}
},
{
"Z1K1": "Z89",
"Z89K1": "."
},
{
"Z1K1": "Z7",
"Z7K1": "Z32891",
"Z32891K1": {
"Z1K1": "Z7",
"Z7K1": "Z36240",
"Z36240K1": {
"Z1K1": "Z18",
"Z18K1": "Z38908K1"
},
"Z36240K2": {
"Z1K1": "Z6092",
"Z6092K1": "P225"
},
"Z36240K3": {
"Z1K1": "Z18",
"Z18K1": "Z38908K3"
}
}
},
{
"Z1K1": "Z89",
"Z89K1": " "
}
]
},
"Z802K3": {
"Z1K1": "Z89",
"Z89K1": "\u003C!-- no describing date and/or authority --\u003E"
}
},
{
"Z1K1": "Z7",
"Z7K1": "Z802",
"Z802K1": {
"Z1K1": "Z7",
"Z7K1": "Z10216",
"Z10216K1": {
"Z1K1": "Z7",
"Z7K1": "Z28676",
"Z28676K1": {
"Z1K1": "Z7",
"Z7K1": "Z37833",
"Z37833K1": {
"Z1K1": "Z18",
"Z18K1": "Z38908K1"
},
"Z37833K2": {
"Z1K1": "Z18",
"Z18K1": "Z38908K3"
}
},
"Z28676K2": "Z28158"
}
},
"Z802K2": {
"Z1K1": "Z7",
"Z7K1": "Z27926",
"Z27926K1": [
"Z89",
{
"Z1K1": "Z7",
"Z7K1": "Z37441",
"Z37441K1": {
"Z1K1": "Z18",
"Z18K1": "Z38908K1"
}
},
{
"Z1K1": "Z89",
"Z89K1": " is door de "
},
{
"Z1K1": "Z7",
"Z7K1": "Z32428",
"Z32428K1": {
"Z1K1": "Z6091",
"Z6091K1": "Q48268"
},
"Z32428K2": {
"Z1K1": "Z18",
"Z18K1": "Z38908K3"
}
},
{
"Z1K1": "Z89",
"Z89K1": " (IUCN) geclassificeerd als "
},
{
"Z1K1": "Z7",
"Z7K1": "Z27868",
"Z27868K1": {
"Z1K1": "Z7",
"Z7K1": "Z37833",
"Z37833K1": {
"Z1K1": "Z18",
"Z18K1": "Z38908K1"
},
"Z37833K2": {
"Z1K1": "Z18",
"Z18K1": "Z38908K3"
}
}
},
{
"Z1K1": "Z89",
"Z89K1": "."
},
{
"Z1K1": "Z7",
"Z7K1": "Z32891",
"Z32891K1": {
"Z1K1": "Z7",
"Z7K1": "Z36240",
"Z36240K1": {
"Z1K1": "Z18",
"Z18K1": "Z38908K1"
},
"Z36240K2": {
"Z1K1": "Z6092",
"Z6092K1": "P141"
},
"Z36240K3": {
"Z1K1": "Z18",
"Z18K1": "Z38908K3"
}
}
}
]
},
"Z802K3": {
"Z1K1": "Z89",
"Z89K1": "\u003C!-- Not assessed by IUCN --\u003E"
}
}
]
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "intro for species with hypernym, Dutch Composition"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
nve1re5n7kd65hu2bcmp9plj35j7lk9
Z38933
0
89406
296856
296848
2026-08-06T12:19:22Z
99of9
1622
296856
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z38933"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z6091",
"Z17K2": "Z38933K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "entity"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z6091",
"Z17K2": "Z38933K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "class"
}
]
}
}
],
"Z8K2": "Z6",
"Z8K3": [
"Z20",
"Z38934",
"Z38935",
"Z38936"
],
"Z8K4": [
"Z14",
"Z38937"
],
"Z8K5": "Z38933"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "entity is instance of class, Igbo"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Makes a sentence like \"Nigeria bụ ọbọdọ.\" (Nigeria is a country.)"
}
]
}
}
a9gewz5zua45es9bukeby0stok55sga
296859
296856
2026-08-06T12:41:51Z
99of9
1622
Added Z38938 to the approved list of test cases
296859
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z38933"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z6091",
"Z17K2": "Z38933K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "entity"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z6091",
"Z17K2": "Z38933K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "class"
}
]
}
}
],
"Z8K2": "Z6",
"Z8K3": [
"Z20",
"Z38934",
"Z38935",
"Z38936",
"Z38938"
],
"Z8K4": [
"Z14",
"Z38937"
],
"Z8K5": "Z38933"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "entity is instance of class, Igbo"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Makes a sentence like \"Nigeria bụ ọbọdọ.\" (Nigeria is a country.)"
}
]
}
}
i23czktjppkbjhiz3mcz9h068c9w100
296866
296859
2026-08-06T14:03:27Z
99of9
1622
Added Z38939 to the approved list of test cases
296866
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z38933"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z6091",
"Z17K2": "Z38933K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "entity"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z6091",
"Z17K2": "Z38933K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "class"
}
]
}
}
],
"Z8K2": "Z6",
"Z8K3": [
"Z20",
"Z38934",
"Z38935",
"Z38936",
"Z38938",
"Z38939"
],
"Z8K4": [
"Z14",
"Z38937"
],
"Z8K5": "Z38933"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "entity is instance of class, Igbo"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Makes a sentence like \"Nigeria bụ ọbọdọ.\" (Nigeria is a country.)"
}
]
}
}
omyjyoaehh324utbt6psxenn35vz1eb
Z38934
0
89407
296853
296847
2026-08-06T12:04:14Z
99of9
1622
296853
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z38934"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z38933",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z38933",
"Z38933K1": {
"Z1K1": "Z6091",
"Z6091K1": "Q1033"
},
"Z38933K2": {
"Z1K1": "Z6091",
"Z6091K1": "Q6256"
}
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z866",
"Z866K2": "Ọbọdọ Nigeria."
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Nigeria, country: \"Naijiria bụ ọbọdọ.\""
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
pzg7692wbt58ifwc7l2znnol96eloz4
296854
296853
2026-08-06T12:04:33Z
99of9
1622
296854
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z38934"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z38933",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z38933",
"Z38933K1": {
"Z1K1": "Z6091",
"Z6091K1": "Q1033"
},
"Z38933K2": {
"Z1K1": "Z6091",
"Z6091K1": "Q6256"
}
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z866",
"Z866K2": "Naijiria bụ ọbọdọ."
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Nigeria, country: \"Naijiria bụ ọbọdọ.\""
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
dy437mum7i7s984l9hxd7xwx3kv21i3
Z38935
0
89408
296852
296842
2026-08-06T12:03:09Z
99of9
1622
296852
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z38935"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z38933",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z38933",
"Z38933K1": {
"Z1K1": "Z6091",
"Z6091K1": "Q65"
},
"Z38933K2": {
"Z1K1": "Z6091",
"Z6091K1": "Q515"
}
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z866",
"Z866K2": "Los Angeles bụ ọbọdọ."
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "LA, city: \"Los Angeles bụ ọbọdọ.\""
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
knokdk0srd6uwcg4uvb5mf2w9356ysl
Z38938
0
89411
296858
2026-08-06T12:41:33Z
99of9
1622
296858
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z38938"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z38933",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z38933",
"Z38933K1": {
"Z1K1": "Z6091",
"Z6091K1": "Q97"
},
"Z38933K2": {
"Z1K1": "Z6091",
"Z6091K1": "Q9430"
}
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z866",
"Z866K2": "Òrìmìlì Atlantic bụ oke osimiri."
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Atlantic, ocean: \"Osimiri Atlantic bụ oke osimiri\""
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
ndytsdy3iy36ihe5n1xn8o253ntjihq
296860
296858
2026-08-06T12:48:27Z
99of9
1622
296860
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z38938"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z38933",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z38933",
"Z38933K1": {
"Z1K1": "Z6091",
"Z6091K1": "Q97"
},
"Z38933K2": {
"Z1K1": "Z6091",
"Z6091K1": "Q9430"
}
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z866",
"Z866K2": "Òrìmìlì Atlantic bụ oke òsìmìrì."
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Atlantic, ocean: \"Òrìmìlì Atlantic bụ oke òsìmìrì\""
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
s4lkw3nfn24ucupf5q7lycn850kqq5k
296861
296860
2026-08-06T12:49:11Z
99of9
1622
296861
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z38938"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z38933",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z38933",
"Z38933K1": {
"Z1K1": "Z6091",
"Z6091K1": "Q97"
},
"Z38933K2": {
"Z1K1": "Z6091",
"Z6091K1": "Q9430"
}
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z866",
"Z866K2": "Òsìmìrì Atlantic bụ oke òsìmìrì."
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Atlantic, ocean: \"Òsìmìrì Atlantic bụ oke òsìmìrì\""
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
mswkuwy6qsjvr0gizzxz012d5d6q785
Z38939
0
89412
296864
2026-08-06T13:59:57Z
SephyPHC
98431
Added translation
296864
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z38939"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z38933",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z38933",
"Z38933K1": {
"Z1K1": "Z6091",
"Z6091K1": "Q7296"
},
"Z38933K2": {
"Z1K1": "Z6091",
"Z6091K1": "Q8502"
}
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z866",
"Z866K2": "Kilimanjaro bu ụgwụ."
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Kilimanjaro bụ ugwu"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Ahịrịokwu na egosi na ihe ụgwụ bụ "
}
]
}
}
ht9gx7dh6vnsdow7vqtmd7x8r98yeiv
User talk:SephyPHC
3
89413
296865
2026-08-06T14:01:57Z
99of9
1622
Congratulations
296865
wikitext
text/x-wiki
Well done! (I'm Toby by the way.). --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 14:01, 6 August 2026 (UTC)
ft7ocnjr1a6o6k4d080r90ld5b0yjji
297050
296865
2026-08-06T19:40:09Z
SephyPHC
98431
/* */ Reply
297050
wikitext
text/x-wiki
Well done! (I'm Toby by the way.). --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 14:01, 6 August 2026 (UTC)
:It is nice to have you Toby! I'm delighted. Daalụ! [[User:SephyPHC|SephyPHC]] ([[User talk:SephyPHC|talk]]) 19:40, 6 August 2026 (UTC)
djs98wbmjyi2mpez2tytpgmau5y9eiq
Talk:Z38911
1
89414
296868
2026-08-06T15:05:58Z
WouterKo
98442
/* Typo */ new section
296868
wikitext
text/x-wiki
== Typo ==
There is a typo in this composition, "geclassificerd" should be "geclassificeerd". I do not have permission to fix this myself. [[User:WouterKo|WouterKo]] ([[User talk:WouterKo|talk]]) 15:05, 6 August 2026 (UTC)
5o7zkdjitx6ffhiqxl8a9p1bbmv0m6i
297062
296868
2026-08-06T21:43:16Z
HenkvD
1290
/* Typo */ Reply
297062
wikitext
text/x-wiki
== Typo ==
There is a typo in this composition, "geclassificerd" should be "geclassificeerd". I do not have permission to fix this myself. [[User:WouterKo|WouterKo]] ([[User talk:WouterKo|talk]]) 15:05, 6 August 2026 (UTC)
:I have corrected the spelling mistake. PS: @[[User:WouterKo|WouterKo]] I don't think you need special permission to correct this. [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 21:43, 6 August 2026 (UTC)
321c08gxln62t2gqt4vq3yakkqyxout
297165
297062
2026-08-07T07:42:46Z
WouterKo
98442
/* Typo */ Reply
297165
wikitext
text/x-wiki
== Typo ==
There is a typo in this composition, "geclassificerd" should be "geclassificeerd". I do not have permission to fix this myself. [[User:WouterKo|WouterKo]] ([[User talk:WouterKo|talk]]) 15:05, 6 August 2026 (UTC)
:I have corrected the spelling mistake. PS: @[[User:WouterKo|WouterKo]] I don't think you need special permission to correct this. [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 21:43, 6 August 2026 (UTC)
::Thanks! I am getting "You don't have permission to edit Implementation that is connected to a Function.", perhaps it is different for you as you have created the composition in the first place? [[User:WouterKo|WouterKo]] ([[User talk:WouterKo|talk]]) 07:42, 7 August 2026 (UTC)
iug3e2j69v3j0tvguapuzqkv47stni6
297166
297165
2026-08-07T07:43:11Z
WouterKo
98442
forgot to tag
297166
wikitext
text/x-wiki
== Typo ==
There is a typo in this composition, "geclassificerd" should be "geclassificeerd". I do not have permission to fix this myself. [[User:WouterKo|WouterKo]] ([[User talk:WouterKo|talk]]) 15:05, 6 August 2026 (UTC)
:I have corrected the spelling mistake. PS: @[[User:WouterKo|WouterKo]] I don't think you need special permission to correct this. [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 21:43, 6 August 2026 (UTC)
::Thanks @[[User:HenkvD|HenkvD]]! I am getting "You don't have permission to edit Implementation that is connected to a Function.", perhaps it is different for you as you have created the composition in the first place? [[User:WouterKo|WouterKo]] ([[User talk:WouterKo|talk]]) 07:42, 7 August 2026 (UTC)
nv62cffc2npzo5nlqzxkyz90tfrmhhz
Translations:Wikifunctions:FAQ/64/en
1198
89415
296907
2026-08-06T18:01:52Z
FuzzyBot
207
Importing a new version from external source
296907
wikitext
text/x-wiki
=== How can I setup the software locally to hack on it? ===
texxyvo1bp5p71clmv2qw8e58a0n0sd
Translations:Wikifunctions:FAQ/65/en
1198
89416
296908
2026-08-06T18:01:52Z
FuzzyBot
207
Importing a new version from external source
296908
wikitext
text/x-wiki
See [[$1|Hacking on the evaluator and orchestrator]].
63r6169rmnn1j77b94ezlu8mxij8ejs
Translations:Wikifunctions:Status updates/131/en
1198
89417
296979
2026-08-06T18:03:24Z
FuzzyBot
207
Importing a new version from external source
296979
wikitext
text/x-wiki
$1: An apple is a fruit
1h69hfz4t25gm6udxh2q6q6gtz6vvw8
Translations:Template:Main page/News/41/de
1198
89418
297028
2026-08-06T18:06:30Z
Ameisenigel
44
Created page with "$1: Abstrakte Wikipedia bei der Wikimania"
297028
wikitext
text/x-wiki
$1: Abstrakte Wikipedia bei der Wikimania
8curtzaetyzesqw5bnppnc62j3wkjx3
Translations:Wikifunctions:Status updates/131/de
1198
89419
297032
2026-08-06T18:07:14Z
Ameisenigel
44
Created page with "$1: Ein Apfel ist eine Frucht"
297032
wikitext
text/x-wiki
$1: Ein Apfel ist eine Frucht
hmmve3wjj2b6tpfg7y6aeceqd3a22u8
Translations:Wikifunctions:Status updates/130/de
1198
89420
297034
2026-08-06T18:07:17Z
Ameisenigel
44
Created page with "$1: Abstrakte Wikipedia bei der Wikimania"
297034
wikitext
text/x-wiki
$1: Abstrakte Wikipedia bei der Wikimania
8curtzaetyzesqw5bnppnc62j3wkjx3
Translations:Wikifunctions:FAQ/64/de
1198
89421
297036
2026-08-06T18:07:45Z
Ameisenigel
44
Created page with "=== Wie kann ich die Software lokal einrichten, um daran zu arbeiten? ==="
297036
wikitext
text/x-wiki
=== Wie kann ich die Software lokal einrichten, um daran zu arbeiten? ===
cuhmii4bqprw8y0q7v13bekjnx720y6
Translations:Wikifunctions:FAQ/65/de
1198
89422
297038
2026-08-06T18:08:18Z
Ameisenigel
44
Created page with "Siehe [[$1|Arbeiten am Auswerter und Orchestrierer]]."
297038
wikitext
text/x-wiki
Siehe [[$1|Arbeiten am Auswerter und Orchestrierer]].
jgci9asxnlo2wgqlfqekbnomhnq1k2w
Z38940
0
89423
297054
2026-08-06T20:19:47Z
SephyPHC
98431
297054
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z38940"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z11248",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z11248",
"Z11248K1": "ji"
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z866",
"Z866K2": "na ji"
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
lav91tspgne061padsv9fckfrrgrtdb
297055
297054
2026-08-06T20:21:53Z
SephyPHC
98431
297055
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z38940"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z11248",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z11248",
"Z11248K1": "ji"
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z866",
"Z866K2": "na ji"
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "ji → na ji"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
jfb909b5lgoj8ql2nrhn9dtqupn8guy
User:修正俱楽部 資材置場
2
89425
297067
2026-08-06T23:57:37Z
修正俱楽部 資材置場
98513
Created page with "{{Reply to|しんぎんぐきゃっと}}{{Reply to|しらむねソーダ}}{{Reply to|えすぱーの人}}{{Reply to|DIYdriver}} ただちに[[w:ja:Wikipedia:削除の復帰依頼/池袋ストーカー殺人事件]]で復帰票を投票してください お願いします"
297067
wikitext
text/x-wiki
{{Reply to|しんぎんぐきゃっと}}{{Reply to|しらむねソーダ}}{{Reply to|えすぱーの人}}{{Reply to|DIYdriver}}
ただちに[[w:ja:Wikipedia:削除の復帰依頼/池袋ストーカー殺人事件]]で復帰票を投票してください
お願いします
oq4owzzia7e6ws8r7y8xu5p7avncbkb
297068
297067
2026-08-06T23:57:57Z
修正俱楽部 資材置場
98513
297068
wikitext
text/x-wiki
{{Reply to|しんぎんぐきゃっと}}{{Reply to|らむねソーダ}}{{Reply to|えすぱーの人}}{{Reply to|DIYdriver}}
ただちに[[w:ja:Wikipedia:削除の復帰依頼/池袋ストーカー殺人事件]]で復帰票を投票してください
お願いします
jz5nnn5yb9p6zpcp5vgba7hifmlvgkd
297113
297068
2026-08-07T04:37:57Z
Y-route
23265
297113
wikitext
text/x-wiki
{{Delete}}<!--Out of scope / Cross-wiki vandalism ([[:ja:LTA:NRE]])-->
dfdotvmryvhhmc35v6tcuecd7xozdh1
297125
297113
2026-08-07T05:42:51Z
99of9
1622
Blanking is ok here.
297125
wikitext
text/x-wiki
phoiac9h4m842xq45sp7s6u21eteeq1
Z38941
0
89426
297086
2026-08-07T03:29:38Z
99of9
1622
297086
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z38941"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z37068",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z37068",
"Z37068K1": {
"Z1K1": "Z6091",
"Z6091K1": "Q5355131"
},
"Z37068K2": {
"Z1K1": "Z6091",
"Z6091K1": "Q1088"
},
"Z37068K3": {
"Z1K1": "Z6091",
"Z6091K1": "Q46831"
},
"Z37068K4": "Z1147"
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z877",
"Z877K2": {
"Z1K1": "Z89",
"Z89K1": "\u003Cspan lang=\"mul\" style=\"color: #FF00FF;\"\u003E\u003Ca href=\"https://abstract.wikipedia.org/wiki/Q5355131\"\u003EBlue Mountains\u003C/a\u003E ∈ { Q1088\u003Ca href=\"https://www.wikidata.org/wiki/Q1088\"\u003E✏️\u003C/a\u003E ∩ \u003Ca href=\"https://abstract.wikipedia.org/wiki/Q46831\"\u003EQ46831\u003C/a\u003E\u003Ca href=\"https://www.wikidata.org/wiki/Q46831\"\u003E✏️\u003C/a\u003E }\u003Cspan\u003E\u003Ca href=\"https://www.wikifunctions.org/wiki/Z29597\"\u003E🔧\u003C/a\u003E"
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "dz (default) Blue Mountains, blue, mountain range"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
2rnorqbpi94dkh9dkacjoxan98s28s7
Z38942
0
89427
297089
2026-08-07T03:39:44Z
99of9
1622
297089
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z38942"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z89",
"Z17K2": "Z38942K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "source HTML"
}
]
}
}
],
"Z8K2": "Z89",
"Z8K3": [
"Z20"
],
"Z8K4": [
"Z14"
],
"Z8K5": "Z38942"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "wrap an HTML fragment with default lang=mul\u0026color"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31",
{
"Z1K1": "Z31",
"Z31K1": "Z1002",
"Z31K2": [
"Z6",
"wrap an HTML fragment with a default lang \u0026 colour"
]
}
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
bchkmfx20y64ismj5cexmha9w6n6k4u
297091
297089
2026-08-07T03:43:32Z
99of9
1622
Added Z38943 to the approved list of implementations
297091
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z38942"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z89",
"Z17K2": "Z38942K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "source HTML"
}
]
}
}
],
"Z8K2": "Z89",
"Z8K3": [
"Z20"
],
"Z8K4": [
"Z14",
"Z38943"
],
"Z8K5": "Z38942"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "wrap an HTML fragment with default lang=mul\u0026color"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31",
{
"Z1K1": "Z31",
"Z31K1": "Z1002",
"Z31K2": [
"Z6",
"wrap an HTML fragment with a default lang \u0026 colour"
]
}
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
fydut0b1n0fk92o042xm78iurwtg1uy
297093
297091
2026-08-07T03:44:57Z
99of9
1622
Added Z38944 to the approved list of test cases
297093
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z38942"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z89",
"Z17K2": "Z38942K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "source HTML"
}
]
}
}
],
"Z8K2": "Z89",
"Z8K3": [
"Z20",
"Z38944"
],
"Z8K4": [
"Z14",
"Z38943"
],
"Z8K5": "Z38942"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "wrap an HTML fragment with default lang=mul\u0026color"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31",
{
"Z1K1": "Z31",
"Z31K1": "Z1002",
"Z31K2": [
"Z6",
"wrap an HTML fragment with a default lang \u0026 colour"
]
}
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
bkjdm7eharc9lewnr07gfhubbefzfol
Z38943
0
89428
297090
2026-08-07T03:43:18Z
99of9
1622
297090
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z38943"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z38942",
"Z14K2": {
"Z1K1": "Z7",
"Z7K1": "Z27873",
"Z27873K1": {
"Z1K1": "Z18",
"Z18K1": "Z38942K1"
},
"Z27873K2": "span",
"Z27873K3": [
"Z6",
"lang",
"style"
],
"Z27873K4": [
"Z6",
"mul",
{
"Z1K1": "Z7",
"Z7K1": "Z21394",
"Z21394K1": [
"Z6",
"color: ",
{
"Z1K1": "Z7",
"Z7K1": "Z28639",
"Z28639K1": "Z37458"
},
";"
]
}
]
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "wrap with span mul \u0026 magenta"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
4a0lg8zdnw210bh4cyfabavsv0nd187
Z38944
0
89429
297092
2026-08-07T03:44:44Z
99of9
1622
297092
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z38944"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z38942",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z38942",
"Z38942K1": {
"Z1K1": "Z89",
"Z89K1": "test"
}
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z877",
"Z877K2": {
"Z1K1": "Z89",
"Z89K1": "\u003Cspan lang=\"mul\" style=\"color: #FF00FF;\"\u003Etest\u003C/span\u003E"
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "\u003Cspan lang=\"mul\" style=\"color: #FF00FF;\"\u003Etest\u003C/.."
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
7v9arzpwozohbgq97thdpvzkuvfcmud
Z38945
0
89430
297097
2026-08-07T04:00:48Z
99of9
1622
297097
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z38945"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z6091",
"Z17K2": "Z38945K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "entity"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z13518",
"Z17K2": "Z38945K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "ordinal"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z6091",
"Z17K2": "Z38945K3",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "adjectival"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z6091",
"Z17K2": "Z38945K4",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "class"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z6091",
"Z17K2": "Z38945K5",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "location"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z60",
"Z17K2": "Z38945K6",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "language expected"
}
]
}
}
],
"Z8K2": "Z11",
"Z8K3": [
"Z20"
],
"Z8K4": [
"Z14"
],
"Z8K5": "Z38945"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "default ordinal class location fragment"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
qh7pivvvaynpfwgn3k53n3ay2epeuo3
297099
297097
2026-08-07T04:17:19Z
99of9
1622
Added Z38946 to the approved list of implementations
297099
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z38945"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z6091",
"Z17K2": "Z38945K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "entity"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z13518",
"Z17K2": "Z38945K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "ordinal"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z6091",
"Z17K2": "Z38945K3",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "adjectival"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z6091",
"Z17K2": "Z38945K4",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "class"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z6091",
"Z17K2": "Z38945K5",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "location"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z60",
"Z17K2": "Z38945K6",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "language expected"
}
]
}
}
],
"Z8K2": "Z11",
"Z8K3": [
"Z20"
],
"Z8K4": [
"Z14",
"Z38946"
],
"Z8K5": "Z38945"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "default ordinal class location fragment"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
i1oaelnt785p9u380w7p74ouzqws5xe
297101
297099
2026-08-07T04:19:45Z
99of9
1622
Added Z38947 to the approved list of test cases
297101
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z38945"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z6091",
"Z17K2": "Z38945K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "entity"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z13518",
"Z17K2": "Z38945K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "ordinal"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z6091",
"Z17K2": "Z38945K3",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "adjectival"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z6091",
"Z17K2": "Z38945K4",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "class"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z6091",
"Z17K2": "Z38945K5",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "location"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z60",
"Z17K2": "Z38945K6",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "language expected"
}
]
}
}
],
"Z8K2": "Z11",
"Z8K3": [
"Z20",
"Z38947"
],
"Z8K4": [
"Z14",
"Z38946"
],
"Z8K5": "Z38945"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "default ordinal class location fragment"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
psdltj87xr80yy1qzwdaggco4pn5615
Z38946
0
89431
297098
2026-08-07T04:17:01Z
99of9
1622
297098
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z38946"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z38945",
"Z14K2": {
"Z1K1": "Z7",
"Z7K1": "Z26107",
"Z26107K1": "Z1360",
"Z26107K2": {
"Z1K1": "Z7",
"Z7K1": "Z22504",
"Z22504K1": [
"Z6",
{
"Z1K1": "Z7",
"Z7K1": "Z36270",
"Z36270K1": {
"Z1K1": "Z18",
"Z18K1": "Z38945K4"
},
"Z36270K2": {
"Z1K1": "Z18",
"Z18K1": "Z38945K6"
}
},
"∩",
{
"Z1K1": "Z7",
"Z7K1": "Z36270",
"Z36270K1": {
"Z1K1": "Z18",
"Z18K1": "Z38945K5"
},
"Z36270K2": {
"Z1K1": "Z18",
"Z18K1": "Z38945K6"
}
},
"|",
{
"Z1K1": "Z7",
"Z7K1": "Z36270",
"Z36270K1": {
"Z1K1": "Z18",
"Z18K1": "Z38945K3"
},
"Z36270K2": {
"Z1K1": "Z18",
"Z18K1": "Z38945K6"
}
},
"[",
{
"Z1K1": "Z7",
"Z7K1": "Z14280",
"Z14280K1": {
"Z1K1": "Z18",
"Z18K1": "Z38945K2"
},
"Z14280K2": {
"Z1K1": "Z18",
"Z18K1": "Z38945K6"
}
},
"]",
"=",
{
"Z1K1": "Z7",
"Z7K1": "Z36270",
"Z36270K1": {
"Z1K1": "Z18",
"Z18K1": "Z38945K1"
},
"Z36270K2": {
"Z1K1": "Z18",
"Z18K1": "Z38945K6"
}
}
]
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "default ordinal class location, compose"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
0sp7g8ql0p0kgeeillopxsywc0zr3pl
297102
297098
2026-08-07T04:22:48Z
99of9
1622
297102
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z38946"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z38945",
"Z14K2": {
"Z1K1": "Z7",
"Z7K1": "Z26107",
"Z26107K1": "Z1360",
"Z26107K2": {
"Z1K1": "Z7",
"Z7K1": "Z22514",
"Z22514K1": [
"Z6",
"(",
{
"Z1K1": "Z7",
"Z7K1": "Z36270",
"Z36270K1": {
"Z1K1": "Z18",
"Z18K1": "Z38945K4"
},
"Z36270K2": {
"Z1K1": "Z18",
"Z18K1": "Z38945K6"
}
},
"∩",
{
"Z1K1": "Z7",
"Z7K1": "Z36270",
"Z36270K1": {
"Z1K1": "Z18",
"Z18K1": "Z38945K5"
},
"Z36270K2": {
"Z1K1": "Z18",
"Z18K1": "Z38945K6"
}
},
")",
"|",
{
"Z1K1": "Z7",
"Z7K1": "Z36270",
"Z36270K1": {
"Z1K1": "Z18",
"Z18K1": "Z38945K3"
},
"Z36270K2": {
"Z1K1": "Z18",
"Z18K1": "Z38945K6"
}
},
"[",
{
"Z1K1": "Z7",
"Z7K1": "Z14280",
"Z14280K1": {
"Z1K1": "Z18",
"Z18K1": "Z38945K2"
},
"Z14280K2": {
"Z1K1": "Z18",
"Z18K1": "Z38945K6"
}
},
"]",
"=",
{
"Z1K1": "Z7",
"Z7K1": "Z36270",
"Z36270K1": {
"Z1K1": "Z18",
"Z18K1": "Z38945K1"
},
"Z36270K2": {
"Z1K1": "Z18",
"Z18K1": "Z38945K6"
}
}
]
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "default ordinal class location, compose"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
cgw5iyuobodx0al2b8pqzlje1nzutht
Z38947
0
89432
297100
2026-08-07T04:19:27Z
99of9
1622
297100
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z38947"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z38945",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z38945",
"Z38945K1": {
"Z1K1": "Z6091",
"Z6091K1": "Q408"
},
"Z38945K2": {
"Z1K1": "Z13518",
"Z13518K1": "6"
},
"Z38945K3": {
"Z1K1": "Z6091",
"Z6091K1": "Q12935276"
},
"Z38945K4": {
"Z1K1": "Z6091",
"Z6091K1": "Q6256"
},
"Z38945K5": {
"Z1K1": "Z6091",
"Z6091K1": "Q16502"
},
"Z38945K6": "Z1002"
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z14392",
"Z14392K2": {
"Z1K1": "Z11",
"Z11K1": "Z1360",
"Z11K2": "( country ∩ world ) | large [ 6 ] = Australia"
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "( country ∩ world ) | large [ 6 ] = Australia"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
asoul5scwb9nos9npd2g7zao9c22gjt
297103
297100
2026-08-07T04:23:18Z
99of9
1622
297103
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z38947"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z38945",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z38945",
"Z38945K1": {
"Z1K1": "Z6091",
"Z6091K1": "Q408"
},
"Z38945K2": {
"Z1K1": "Z13518",
"Z13518K1": "6"
},
"Z38945K3": {
"Z1K1": "Z6091",
"Z6091K1": "Q12935276"
},
"Z38945K4": {
"Z1K1": "Z6091",
"Z6091K1": "Q6256"
},
"Z38945K5": {
"Z1K1": "Z6091",
"Z6091K1": "Q16502"
},
"Z38945K6": "Z1002"
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z14392",
"Z14392K2": {
"Z1K1": "Z11",
"Z11K1": "Z1360",
"Z11K2": "( country ∩ world ) | large [ 6 ] = Australia."
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "( country ∩ world ) | large [ 6 ] = Australia."
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
gonz6irle7phhkevb80vwneycamlefk
Z38948
0
89433
297105
2026-08-07T04:27:30Z
99of9
1622
297105
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z38948"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z8",
"Z17K2": "Z38948K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "function to apply"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z1",
"Z17K2": "Z38948K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "arg 1"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z1",
"Z17K2": "Z38948K3",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "arg 2"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z1",
"Z17K2": "Z38948K4",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "arg 3"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z1",
"Z17K2": "Z38948K5",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "arg 4"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z1",
"Z17K2": "Z38948K6",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "arg 5"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z1",
"Z17K2": "Z38948K7",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "arg 6 (not used if incompatible with signature)"
}
]
}
}
],
"Z8K2": "Z1",
"Z8K3": [
"Z20"
],
"Z8K4": [
"Z14"
],
"Z8K5": "Z38948"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "apply five or optionally six-argument function"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31",
{
"Z1K1": "Z31",
"Z31K1": "Z1002",
"Z31K2": [
"Z6",
"apply5/6"
]
}
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
jddcm23ye95rwa1rdatojwl40tbupwn
297112
297105
2026-08-07T04:37:29Z
99of9
1622
Added Z38951 to the approved list of implementations
297112
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z38948"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z8",
"Z17K2": "Z38948K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "function to apply"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z1",
"Z17K2": "Z38948K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "arg 1"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z1",
"Z17K2": "Z38948K3",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "arg 2"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z1",
"Z17K2": "Z38948K4",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "arg 3"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z1",
"Z17K2": "Z38948K5",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "arg 4"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z1",
"Z17K2": "Z38948K6",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "arg 5"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z1",
"Z17K2": "Z38948K7",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "arg 6 (not used if incompatible with signature)"
}
]
}
}
],
"Z8K2": "Z1",
"Z8K3": [
"Z20"
],
"Z8K4": [
"Z14",
"Z38951"
],
"Z8K5": "Z38948"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "apply five or optionally six-argument function"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31",
{
"Z1K1": "Z31",
"Z31K1": "Z1002",
"Z31K2": [
"Z6",
"apply5/6"
]
}
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
8mpa1unm9jdm35m4pjyfnldwzmf6x3m
Z38949
0
89434
297106
2026-08-07T04:30:47Z
99of9
1622
297106
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z38949"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z8",
"Z17K2": "Z38949K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "function to apply"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z1",
"Z17K2": "Z38949K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "argument 1"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z1",
"Z17K2": "Z38949K3",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "argument 2"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z1",
"Z17K2": "Z38949K4",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "argument 3"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z1",
"Z17K2": "Z38949K5",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "argument 4"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z1",
"Z17K2": "Z38949K6",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "argument 5"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z1",
"Z17K2": "Z38949K7",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "argument 6"
}
]
}
}
],
"Z8K2": "Z1",
"Z8K3": [
"Z20"
],
"Z8K4": [
"Z14"
],
"Z8K5": "Z38949"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "apply six-argument function"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31",
{
"Z1K1": "Z31",
"Z31K1": "Z1002",
"Z31K2": [
"Z6",
"apply6"
]
}
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "a function that applies another (six-argument) function to six arguments"
}
]
}
}
iw82wcc6jjwvqk5l0yhmwib2ffvjcwc
297110
297106
2026-08-07T04:35:57Z
99of9
1622
Added Z38950 to the approved list of implementations
297110
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z38949"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z8",
"Z17K2": "Z38949K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "function to apply"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z1",
"Z17K2": "Z38949K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "argument 1"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z1",
"Z17K2": "Z38949K3",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "argument 2"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z1",
"Z17K2": "Z38949K4",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "argument 3"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z1",
"Z17K2": "Z38949K5",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "argument 4"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z1",
"Z17K2": "Z38949K6",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "argument 5"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z1",
"Z17K2": "Z38949K7",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "argument 6"
}
]
}
}
],
"Z8K2": "Z1",
"Z8K3": [
"Z20"
],
"Z8K4": [
"Z14",
"Z38950"
],
"Z8K5": "Z38949"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "apply six-argument function"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31",
{
"Z1K1": "Z31",
"Z31K1": "Z1002",
"Z31K2": [
"Z6",
"apply6"
]
}
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "a function that applies another (six-argument) function to six arguments"
}
]
}
}
fa7k02ntae90u90mqrm0i7ckeu0d20m
Z38950
0
89435
297107
2026-08-07T04:34:48Z
99of9
1622
297107
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z38950"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z38949",
"Z14K2": {
"Z1K1": "Z7",
"Z7K1": {
"Z1K1": "Z7",
"Z7K1": "Z29350",
"Z29350K1": {
"Z1K1": "Z18",
"Z18K1": "Z38949K1"
}
},
"K1": {
"Z1K1": "Z18",
"Z18K1": "Z38949K2"
},
"K2": {
"Z1K1": "Z18",
"Z18K1": "Z38949K3"
},
"K3": {
"Z1K1": "Z18",
"Z18K1": "Z38949K4"
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "apply6, compose"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
jcvtvml0dywkz5hstuztefddwap8tjg
297108
297107
2026-08-07T04:35:35Z
99of9
1622
λ🔌 edited in source view ~ [[:f:User:מקף/wikilambda_editsource.js|#wikilambda_editsource v0]]
297108
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z38950"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z38949",
"Z14K2": {
"Z1K1": "Z7",
"Z7K1": {
"Z1K1": "Z7",
"Z7K1": "Z29350",
"Z29350K1": {
"Z1K1": "Z18",
"Z18K1": "Z38949K1"
}
},
"K1": {
"Z1K1": "Z18",
"Z18K1": "Z38949K2"
},
"K2": {
"Z1K1": "Z18",
"Z18K1": "Z38949K3"
},
"K3": {
"Z1K1": "Z18",
"Z18K1": "Z38949K4"
},
"K4": {
"Z1K1": "Z18",
"Z18K1": "Z38949K5"
},
"K5": {
"Z1K1": "Z18",
"Z18K1": "Z38949K6"
},
"K6": {
"Z1K1": "Z18",
"Z18K1": "Z38949K7"
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "apply6, compose"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
a6457c8etomg38ul01hrvog8f00pvh1
Z38951
0
89436
297111
2026-08-07T04:37:13Z
99of9
1622
297111
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z38951"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z38948",
"Z14K2": {
"Z1K1": "Z7",
"Z7K1": "Z802",
"Z802K1": {
"Z1K1": "Z7",
"Z7K1": "Z13522",
"Z13522K1": {
"Z1K1": "Z7",
"Z7K1": "Z28222",
"Z28222K1": {
"Z1K1": "Z18",
"Z18K1": "Z38948K1"
}
},
"Z13522K2": {
"Z1K1": "Z13518",
"Z13518K1": "5"
}
},
"Z802K2": {
"Z1K1": "Z7",
"Z7K1": "Z34120",
"Z34120K1": {
"Z1K1": "Z18",
"Z18K1": "Z38948K1"
},
"Z34120K2": {
"Z1K1": "Z18",
"Z18K1": "Z38948K2"
},
"Z34120K3": {
"Z1K1": "Z18",
"Z18K1": "Z38948K3"
},
"Z34120K4": {
"Z1K1": "Z18",
"Z18K1": "Z38948K4"
},
"Z34120K5": {
"Z1K1": "Z18",
"Z18K1": "Z38948K5"
},
"Z34120K6": {
"Z1K1": "Z18",
"Z18K1": "Z38948K6"
}
},
"Z802K3": {
"Z1K1": "Z7",
"Z7K1": "Z38949",
"Z38949K1": {
"Z1K1": "Z18",
"Z18K1": "Z38948K1"
},
"Z38949K2": {
"Z1K1": "Z18",
"Z18K1": "Z38948K2"
},
"Z38949K3": {
"Z1K1": "Z18",
"Z18K1": "Z38948K3"
},
"Z38949K4": {
"Z1K1": "Z18",
"Z18K1": "Z38948K4"
},
"Z38949K5": {
"Z1K1": "Z18",
"Z18K1": "Z38948K5"
},
"Z38949K6": {
"Z1K1": "Z18",
"Z18K1": "Z38948K6"
},
"Z38949K7": {
"Z1K1": "Z18",
"Z18K1": "Z38948K7"
}
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "apply 5/6, compose"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
ktbpopebq1mgo9w4xk77p6equmf5uhg
Z38952
0
89437
297115
2026-08-07T05:22:43Z
99of9
1622
297115
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z38952"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z36243",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z36243",
"Z36243K1": {
"Z1K1": "Z6091",
"Z6091K1": "Q408"
},
"Z36243K2": {
"Z1K1": "Z6092",
"Z6092K1": "P2573"
},
"Z36243K3": {
"Z1K1": "Z6010",
"Z6010K1": {
"Z1K1": "Z19677",
"Z19677K1": {
"Z1K1": "Z16659",
"Z16659K1": "Z16660"
},
"Z19677K2": {
"Z1K1": "Z13518",
"Z13518K1": "107065"
},
"Z19677K3": {
"Z1K1": "Z13518",
"Z13518K1": "1"
}
},
"Z6010K2": {
"Z1K1": "Z19677",
"Z19677K1": {
"Z1K1": "Z16659",
"Z16659K1": "Z16660"
},
"Z19677K2": {
"Z1K1": "Z13518",
"Z13518K1": "107065"
},
"Z19677K3": {
"Z1K1": "Z13518",
"Z13518K1": "1"
}
},
"Z6010K3": {
"Z1K1": "Z19677",
"Z19677K1": {
"Z1K1": "Z16659",
"Z16659K1": "Z16660"
},
"Z19677K2": {
"Z1K1": "Z13518",
"Z13518K1": "107065"
},
"Z19677K3": {
"Z1K1": "Z13518",
"Z13518K1": "1"
}
},
"Z6010K4": {
"Z1K1": "Z6091",
"Z6091K1": "Q199"
}
},
"Z36243K4": "Z1002"
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z877",
"Z877K2": {
"Z1K1": "Z89",
"Z89K1": "\u003Cspan lang=\"mul\" style=\"color: #FF00FF;\"\u003Enumber of out-of-school students(Australia) = 107065.\u003C/span\u003E\u003Ca href=\"https://www.wikifunctions.org/wiki/Z36219\"\u003E🔧\u003C/a\u003E"
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "number of out-of-school students(Australia) = 1070"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "or something like that, currently error"
}
]
}
}
hewmyrute1vr0rfln1gvc96ah33d3t6
297119
297115
2026-08-07T05:33:37Z
99of9
1622
number format
297119
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z38952"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z36243",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z36243",
"Z36243K1": {
"Z1K1": "Z6091",
"Z6091K1": "Q408"
},
"Z36243K2": {
"Z1K1": "Z6092",
"Z6092K1": "P2573"
},
"Z36243K3": {
"Z1K1": "Z6010",
"Z6010K1": {
"Z1K1": "Z19677",
"Z19677K1": {
"Z1K1": "Z16659",
"Z16659K1": "Z16660"
},
"Z19677K2": {
"Z1K1": "Z13518",
"Z13518K1": "107065"
},
"Z19677K3": {
"Z1K1": "Z13518",
"Z13518K1": "1"
}
},
"Z6010K2": {
"Z1K1": "Z19677",
"Z19677K1": {
"Z1K1": "Z16659",
"Z16659K1": "Z16660"
},
"Z19677K2": {
"Z1K1": "Z13518",
"Z13518K1": "107065"
},
"Z19677K3": {
"Z1K1": "Z13518",
"Z13518K1": "1"
}
},
"Z6010K3": {
"Z1K1": "Z19677",
"Z19677K1": {
"Z1K1": "Z16659",
"Z16659K1": "Z16660"
},
"Z19677K2": {
"Z1K1": "Z13518",
"Z13518K1": "107065"
},
"Z19677K3": {
"Z1K1": "Z13518",
"Z13518K1": "1"
}
},
"Z6010K4": {
"Z1K1": "Z6091",
"Z6091K1": "Q199"
}
},
"Z36243K4": "Z1002"
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z877",
"Z877K2": {
"Z1K1": "Z89",
"Z89K1": "\u003Cspan lang=\"mul\" style=\"color: #FF00FF;\"\u003Enumber of out-of-school children(Australia) = 107,065.\u003C/span\u003E\u003Ca href=\"https://www.wikifunctions.org/wiki/Z36219\"\u003E🔧\u003C/a\u003E"
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "number of out-of-school students(Australia) = 1070"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "or something like that, currently error"
}
]
}
}
dhay3zy4nvxr5kz4ch8dffkji70qe1o
297120
297119
2026-08-07T05:34:07Z
99of9
1622
now working
297120
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z38952"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z36243",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z36243",
"Z36243K1": {
"Z1K1": "Z6091",
"Z6091K1": "Q408"
},
"Z36243K2": {
"Z1K1": "Z6092",
"Z6092K1": "P2573"
},
"Z36243K3": {
"Z1K1": "Z6010",
"Z6010K1": {
"Z1K1": "Z19677",
"Z19677K1": {
"Z1K1": "Z16659",
"Z16659K1": "Z16660"
},
"Z19677K2": {
"Z1K1": "Z13518",
"Z13518K1": "107065"
},
"Z19677K3": {
"Z1K1": "Z13518",
"Z13518K1": "1"
}
},
"Z6010K2": {
"Z1K1": "Z19677",
"Z19677K1": {
"Z1K1": "Z16659",
"Z16659K1": "Z16660"
},
"Z19677K2": {
"Z1K1": "Z13518",
"Z13518K1": "107065"
},
"Z19677K3": {
"Z1K1": "Z13518",
"Z13518K1": "1"
}
},
"Z6010K3": {
"Z1K1": "Z19677",
"Z19677K1": {
"Z1K1": "Z16659",
"Z16659K1": "Z16660"
},
"Z19677K2": {
"Z1K1": "Z13518",
"Z13518K1": "107065"
},
"Z19677K3": {
"Z1K1": "Z13518",
"Z13518K1": "1"
}
},
"Z6010K4": {
"Z1K1": "Z6091",
"Z6091K1": "Q199"
}
},
"Z36243K4": "Z1002"
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z877",
"Z877K2": {
"Z1K1": "Z89",
"Z89K1": "\u003Cspan lang=\"mul\" style=\"color: #FF00FF;\"\u003Enumber of out-of-school children(Australia) = 107,065.\u003C/span\u003E\u003Ca href=\"https://www.wikifunctions.org/wiki/Z36219\"\u003E🔧\u003C/a\u003E"
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "number of out-of-school students(Australia) = 1..."
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "or something like that"
}
]
}
}
hqeyp5y4e19bqi4kixum3ycuaj7uv0e
Z38953
0
89438
297127
2026-08-07T05:44:58Z
Jsamwrites
938
297127
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z38953"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z6091",
"Z17K2": "Z38953K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "entity"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z60",
"Z17K2": "Z38953K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "language"
}
]
}
}
],
"Z8K2": "Z89",
"Z8K3": [
"Z20"
],
"Z8K4": [
"Z14"
],
"Z8K5": "Z38953"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "infobox for Linux distribution"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
2btrrxxdadpycpntwdpk2za0zwo099d
297130
297127
2026-08-07T05:48:34Z
Jsamwrites
938
Added Z38954 to the approved list of implementations
297130
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z38953"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z6091",
"Z17K2": "Z38953K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "entity"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z60",
"Z17K2": "Z38953K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "language"
}
]
}
}
],
"Z8K2": "Z89",
"Z8K3": [
"Z20"
],
"Z8K4": [
"Z14",
"Z38954"
],
"Z8K5": "Z38953"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "infobox for Linux distribution"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
22o3luj7tdteznd9fncolr5w1xr5cjh
297140
297130
2026-08-07T06:01:47Z
Jsamwrites
938
Added Z38955 to the approved list of test cases
297140
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z38953"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z6091",
"Z17K2": "Z38953K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "entity"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z60",
"Z17K2": "Z38953K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "language"
}
]
}
}
],
"Z8K2": "Z89",
"Z8K3": [
"Z20",
"Z38955"
],
"Z8K4": [
"Z14",
"Z38954"
],
"Z8K5": "Z38953"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "infobox for Linux distribution"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
kw2lg3ra5t86exe4mj4g5e1c106m0sq
Z38954
0
89439
297129
2026-08-07T05:48:22Z
Jsamwrites
938
297129
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z38954"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z38953",
"Z14K2": {
"Z1K1": "Z7",
"Z7K1": "Z33328",
"Z33328K1": {
"Z1K1": "Z89",
"Z89K1": ""
},
"Z33328K2": {
"Z1K1": "Z89",
"Z89K1": ""
},
"Z33328K3": [
"Z89",
{
"Z1K1": "Z7",
"Z7K1": "Z37644",
"Z37644K1": {
"Z1K1": "Z18",
"Z18K1": "Z38953K1"
},
"Z37644K2": "default",
"Z37644K3": {
"Z1K1": "Z18",
"Z18K1": "Z38953K2"
}
},
{
"Z1K1": "Z7",
"Z7K1": "Z37623",
"Z37623K1": {
"Z1K1": "Z18",
"Z18K1": "Z38953K1"
},
"Z37623K2": {
"Z1K1": "Z6092",
"Z6092K1": "P277"
},
"Z37623K3": {
"Z1K1": "Z18",
"Z18K1": "Z38953K2"
}
},
{
"Z1K1": "Z7",
"Z7K1": "Z37782",
"Z37782K1": {
"Z1K1": "Z18",
"Z18K1": "Z38953K1"
},
"Z37782K2": {
"Z1K1": "Z6092",
"Z6092K1": "P571"
},
"Z37782K3": {
"Z1K1": "Z18",
"Z18K1": "Z38953K2"
}
},
{
"Z1K1": "Z7",
"Z7K1": "Z37623",
"Z37623K1": {
"Z1K1": "Z18",
"Z18K1": "Z38953K1"
},
"Z37623K2": {
"Z1K1": "Z6092",
"Z6092K1": "P178"
},
"Z37623K3": {
"Z1K1": "Z18",
"Z18K1": "Z38953K2"
}
}
]
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "infobox for Linux distribution, comp"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
fszlxa9pg1ouw8rgs81p2l9xl4dgglg
Z38955
0
89440
297131
2026-08-07T05:49:43Z
Jsamwrites
938
297131
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z38955"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z38953",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z38953",
"Z38953K1": {
"Z1K1": "Z6091",
"Z6091K1": "Q381"
},
"Z38953K2": "Z1002"
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z877",
"Z877K2": {
"Z1K1": "Z89",
"Z89K1": "\u003Ctable style=\"background-color:var(--background-color-interactive-subtle,#F8F9FA);border:1px solid var(--border-color-base,#A2A9B1);border-spacing:3px;clear:inline-end;float: inline-end;margin:0.5em 0 0.5em 1em;padding:0.2em;width:250px;\"\u003E\u003Ctr\u003E\u003Ctd colspan=\"2\" align=\"center\" style=\"--infobox-accent-hue:264deg;background-color:oklch(from var(--background-color-success-subtle,#DFF2EB) calc(0.8*l + 0.15) calc(c + 0.05) var(--infobox-accent-hue,264deg));font-weight: bold;\"\u003EUbuntu\u003C/td\u003E\u003C/tr\u003E\u003Ctr\u003E\u003Ctd\u003EProgramming language\u003C/td\u003E\u003Ctd\u003EC++\u003C/td\u003E\u003C/tr\u003E\u003Ctr\u003E\u003Ctd\u003EDate of establishment\u003C/td\u003E\u003Ctd\u003E20 October 2004\u003C/td\u003E\u003C/tr\u003E\u003Ctr\u003E\u003Ctd\u003ESoftware developer\u003C/td\u003E\u003Ctd\u003ECanonical Ltd.\u003C/td\u003E\u003C/tr\u003E\u003C/table\u003E"
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Ubuntu infobox, test"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
tg32dktnkg4mypidh5w2mp1q369n2kx
Z38956
0
89441
297133
2026-08-07T05:53:30Z
Jsamwrites
938
297133
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z38956"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z6091",
"Z17K2": "Z38956K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "entity"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z60",
"Z17K2": "Z38956K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "language"
}
]
}
}
],
"Z8K2": "Z89",
"Z8K3": [
"Z20"
],
"Z8K4": [
"Z14"
],
"Z8K5": "Z38956"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "infobox for country"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31",
{
"Z1K1": "Z31",
"Z31K1": "Z1002",
"Z31K2": [
"Z6",
"infobox for sovereign state"
]
}
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
mrmao0n3gkln7niiudac9dc3y28e430
297136
297133
2026-08-07T05:58:53Z
Jsamwrites
938
Added Z38957 to the approved list of implementations
297136
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z38956"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z6091",
"Z17K2": "Z38956K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "entity"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z60",
"Z17K2": "Z38956K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "language"
}
]
}
}
],
"Z8K2": "Z89",
"Z8K3": [
"Z20"
],
"Z8K4": [
"Z14",
"Z38957"
],
"Z8K5": "Z38956"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "infobox for country"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31",
{
"Z1K1": "Z31",
"Z31K1": "Z1002",
"Z31K2": [
"Z6",
"infobox for sovereign state"
]
}
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
oeg09ujyz1trwl0uakgtaf91evuw7dg
297139
297136
2026-08-07T06:00:43Z
Jsamwrites
938
Added Z38958 to the approved list of test cases
297139
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z38956"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z6091",
"Z17K2": "Z38956K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "entity"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z60",
"Z17K2": "Z38956K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "language"
}
]
}
}
],
"Z8K2": "Z89",
"Z8K3": [
"Z20",
"Z38958"
],
"Z8K4": [
"Z14",
"Z38957"
],
"Z8K5": "Z38956"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "infobox for country"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31",
{
"Z1K1": "Z31",
"Z31K1": "Z1002",
"Z31K2": [
"Z6",
"infobox for sovereign state"
]
}
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
97t3ide03nfvxr8m9sb8tm0xwq1iyvv
Z38957
0
89442
297135
2026-08-07T05:56:39Z
Jsamwrites
938
297135
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z38957"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z38956",
"Z14K2": {
"Z1K1": "Z7",
"Z7K1": "Z33328",
"Z33328K1": {
"Z1K1": "Z89",
"Z89K1": ""
},
"Z33328K2": {
"Z1K1": "Z89",
"Z89K1": ""
},
"Z33328K3": [
"Z89",
{
"Z1K1": "Z7",
"Z7K1": "Z37644",
"Z37644K1": {
"Z1K1": "Z18",
"Z18K1": "Z38956K1"
},
"Z37644K2": "city",
"Z37644K3": {
"Z1K1": "Z18",
"Z18K1": "Z38956K2"
}
},
{
"Z1K1": "Z7",
"Z7K1": "Z37623",
"Z37623K1": {
"Z1K1": "Z18",
"Z18K1": "Z38956K1"
},
"Z37623K2": {
"Z1K1": "Z6092",
"Z6092K1": "P30"
},
"Z37623K3": {
"Z1K1": "Z18",
"Z18K1": "Z38956K2"
}
},
{
"Z1K1": "Z7",
"Z7K1": "Z37623",
"Z37623K1": {
"Z1K1": "Z18",
"Z18K1": "Z38956K1"
},
"Z37623K2": {
"Z1K1": "Z6092",
"Z6092K1": "P421"
},
"Z37623K3": {
"Z1K1": "Z18",
"Z18K1": "Z38956K2"
}
},
{
"Z1K1": "Z7",
"Z7K1": "Z38086",
"Z38086K1": {
"Z1K1": "Z18",
"Z18K1": "Z38956K1"
},
"Z38086K2": {
"Z1K1": "Z18",
"Z18K1": "Z38956K2"
}
}
]
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
d3vz0npc35m3gcs21vb6y5cjv1439h8
297137
297135
2026-08-07T05:59:22Z
Jsamwrites
938
297137
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z38957"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z38956",
"Z14K2": {
"Z1K1": "Z7",
"Z7K1": "Z33328",
"Z33328K1": {
"Z1K1": "Z89",
"Z89K1": ""
},
"Z33328K2": {
"Z1K1": "Z89",
"Z89K1": ""
},
"Z33328K3": [
"Z89",
{
"Z1K1": "Z7",
"Z7K1": "Z37644",
"Z37644K1": {
"Z1K1": "Z18",
"Z18K1": "Z38956K1"
},
"Z37644K2": "city",
"Z37644K3": {
"Z1K1": "Z18",
"Z18K1": "Z38956K2"
}
},
{
"Z1K1": "Z7",
"Z7K1": "Z37623",
"Z37623K1": {
"Z1K1": "Z18",
"Z18K1": "Z38956K1"
},
"Z37623K2": {
"Z1K1": "Z6092",
"Z6092K1": "P30"
},
"Z37623K3": {
"Z1K1": "Z18",
"Z18K1": "Z38956K2"
}
},
{
"Z1K1": "Z7",
"Z7K1": "Z37623",
"Z37623K1": {
"Z1K1": "Z18",
"Z18K1": "Z38956K1"
},
"Z37623K2": {
"Z1K1": "Z6092",
"Z6092K1": "P421"
},
"Z37623K3": {
"Z1K1": "Z18",
"Z18K1": "Z38956K2"
}
},
{
"Z1K1": "Z7",
"Z7K1": "Z38086",
"Z38086K1": {
"Z1K1": "Z18",
"Z18K1": "Z38956K1"
},
"Z38086K2": {
"Z1K1": "Z18",
"Z18K1": "Z38956K2"
}
}
]
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "infobox for country, comp"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31",
{
"Z1K1": "Z31",
"Z31K1": "Z1002",
"Z31K2": [
"Z6",
"infobox for sovereign state, comp"
]
}
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
o0bwyxc6nmbhixm6ppbbeug8qqy344c
297168
297137
2026-08-07T09:26:13Z
HenkvD
1290
+ capital and population
297168
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z38957"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z38956",
"Z14K2": {
"Z1K1": "Z7",
"Z7K1": "Z33328",
"Z33328K1": {
"Z1K1": "Z89",
"Z89K1": ""
},
"Z33328K2": {
"Z1K1": "Z89",
"Z89K1": ""
},
"Z33328K3": [
"Z89",
{
"Z1K1": "Z7",
"Z7K1": "Z37644",
"Z37644K1": {
"Z1K1": "Z18",
"Z18K1": "Z38956K1"
},
"Z37644K2": "city",
"Z37644K3": {
"Z1K1": "Z18",
"Z18K1": "Z38956K2"
}
},
{
"Z1K1": "Z7",
"Z7K1": "Z37623",
"Z37623K1": {
"Z1K1": "Z18",
"Z18K1": "Z38956K1"
},
"Z37623K2": {
"Z1K1": "Z6092",
"Z6092K1": "P30"
},
"Z37623K3": {
"Z1K1": "Z18",
"Z18K1": "Z38956K2"
}
},
{
"Z1K1": "Z7",
"Z7K1": "Z37623",
"Z37623K1": {
"Z1K1": "Z18",
"Z18K1": "Z38956K1"
},
"Z37623K2": {
"Z1K1": "Z6092",
"Z6092K1": "P36"
},
"Z37623K3": {
"Z1K1": "Z18",
"Z18K1": "Z38956K2"
}
},
{
"Z1K1": "Z7",
"Z7K1": "Z37830",
"Z37830K1": {
"Z1K1": "Z18",
"Z18K1": "Z38956K1"
},
"Z37830K2": {
"Z1K1": "Z6092",
"Z6092K1": "P1082"
},
"Z37830K3": {
"Z1K1": "Z18",
"Z18K1": "Z38956K2"
}
},
{
"Z1K1": "Z7",
"Z7K1": "Z37623",
"Z37623K1": {
"Z1K1": "Z18",
"Z18K1": "Z38956K1"
},
"Z37623K2": {
"Z1K1": "Z6092",
"Z6092K1": "P421"
},
"Z37623K3": {
"Z1K1": "Z18",
"Z18K1": "Z38956K2"
}
},
{
"Z1K1": "Z7",
"Z7K1": "Z38086",
"Z38086K1": {
"Z1K1": "Z18",
"Z18K1": "Z38956K1"
},
"Z38086K2": {
"Z1K1": "Z18",
"Z18K1": "Z38956K2"
}
}
]
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "infobox for country, comp"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31",
{
"Z1K1": "Z31",
"Z31K1": "Z1002",
"Z31K2": [
"Z6",
"infobox for sovereign state, comp"
]
}
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
ovash855uljbqpgso3oizfdleomqfy9
Z38958
0
89443
297138
2026-08-07T06:00:32Z
Jsamwrites
938
297138
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z38958"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z38956",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z38956",
"Z38956K1": {
"Z1K1": "Z6091",
"Z6091K1": "Q965"
},
"Z38956K2": "Z1002"
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z877",
"Z877K2": {
"Z1K1": "Z89",
"Z89K1": "\u003Ctable style=\"background-color:var(--background-color-interactive-subtle,#F8F9FA);border:1px solid var(--border-color-base,#A2A9B1);border-spacing:3px;clear:inline-end;float: inline-end;margin:0.5em 0 0.5em 1em;padding:0.2em;width:250px;\"\u003E\u003Ctr\u003E\u003Ctd colspan=\"2\" align=\"center\" style=\"--infobox-accent-hue:264deg;background-color:oklch(from var(--background-color-success-subtle,#DFF2EB) calc(0.8*l + 0.15) calc(c + 0.05) var(--infobox-accent-hue,264deg));font-weight: bold;\"\u003EBurkina Faso\u003C/td\u003E\u003C/tr\u003E\u003Ctr\u003E\u003Ctd\u003EContinent\u003C/td\u003E\u003Ctd\u003EAfrica\u003C/td\u003E\u003C/tr\u003E\u003Ctr\u003E\u003Ctd\u003ETime zone\u003C/td\u003E\u003Ctd\u003EUTC±00:00\u003C/td\u003E\u003C/tr\u003E\u003Ctr\u003E\u003Ctd\u003EGeographic coordinate\u003C/td\u003E\u003Ctd\u003E12°16′0″N 2°4′0″W\u003Csup class=\"ext-wikilambda-reference\"\u003E\u003Ca href=\"https://geohack.toolforge.org/geohack.php?params=12.26667_N_-2.06667_E_globe:earth\u0026language=en\"\u003EGeoHack\u003C/a\u003E\u003C/sup\u003E\u003C/td\u003E\u003C/tr\u003E\u003C/table\u003E"
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "country infobox, test"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
dopr6nsmivmxs0ibszm3y141eu1t20f
297169
297138
2026-08-07T09:27:15Z
HenkvD
1290
+ capital and population
297169
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z38958"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z38956",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z38956",
"Z38956K1": {
"Z1K1": "Z6091",
"Z6091K1": "Q965"
},
"Z38956K2": "Z1002"
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z877",
"Z877K2": {
"Z1K1": "Z89",
"Z89K1": "\u003Ctable style=\"background-color:var(--background-color-interactive-subtle,#F8F9FA);border:1px solid var(--border-color-base,#A2A9B1);border-spacing:3px;clear:inline-end;float: inline-end;margin:0.5em 0 0.5em 1em;padding:0.2em;width:250px;\"\u003E\u003Ctr\u003E\u003Ctd colspan=\"2\" align=\"center\" style=\"--infobox-accent-hue:264deg;background-color:oklch(from var(--background-color-success-subtle,#DFF2EB) calc(0.8*l + 0.15) calc(c + 0.05) var(--infobox-accent-hue,264deg));font-weight: bold;\"\u003EBurkina Faso\u003C/td\u003E\u003C/tr\u003E\u003Ctr\u003E\u003Ctd\u003EContinent\u003C/td\u003E\u003Ctd\u003EAfrica\u003C/td\u003E\u003C/tr\u003E\u003Ctr\u003E\u003Ctd\u003ECapital city\u003C/td\u003E\u003Ctd\u003EOuagadougou\u003C/td\u003E\u003C/tr\u003E\u003Ctr\u003E\u003Ctd\u003EPopulation size\u003C/td\u003E\u003Ctd\u003E23,025,776\u003C/td\u003E\u003C/tr\u003E\u003Ctr\u003E\u003Ctd\u003ETime zone\u003C/td\u003E\u003Ctd\u003EUTC±00:00\u003C/td\u003E\u003C/tr\u003E\u003Ctr\u003E\u003Ctd\u003EGeographic coordinate\u003C/td\u003E\u003Ctd\u003E12°16′0″N 2°4′0″W\u003Csup class=\"ext-wikilambda-reference\"\u003E\u003Ca href=\"https://geohack.toolforge.org/geohack.php?params=12.26667_N_-2.06667_E_globe:earth\u0026language=en\"\u003EGeoHack\u003C/a\u003E\u003C/sup\u003E\u003C/td\u003E\u003C/tr\u003E\u003C/table\u003E"
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "country infobox, test"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
h9qs0mtfmrxnu4if36vkzwn8qjehe6k
Z38959
0
89444
297142
2026-08-07T06:21:19Z
Jsamwrites
938
297142
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z38959"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z6091",
"Z17K2": "Z38959K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "entity"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z60",
"Z17K2": "Z38959K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "language"
}
]
}
}
],
"Z8K2": "Z89",
"Z8K3": [
"Z20"
],
"Z8K4": [
"Z14"
],
"Z8K5": "Z38959"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "infobox for river"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
du6e9k9en18evkqf53gmw54q003c8t0
297146
297142
2026-08-07T06:24:50Z
Jsamwrites
938
Added Z38961 to the approved list of implementations
297146
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z38959"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z6091",
"Z17K2": "Z38959K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "entity"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z60",
"Z17K2": "Z38959K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "language"
}
]
}
}
],
"Z8K2": "Z89",
"Z8K3": [
"Z20"
],
"Z8K4": [
"Z14",
"Z38961"
],
"Z8K5": "Z38959"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "infobox for river"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
e3hvlyexm260at77mwtc11jq0u5eq1i
297155
297146
2026-08-07T06:31:27Z
Jsamwrites
938
Added Z38963 to the approved list of test cases
297155
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z38959"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z6091",
"Z17K2": "Z38959K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "entity"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z60",
"Z17K2": "Z38959K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "language"
}
]
}
}
],
"Z8K2": "Z89",
"Z8K3": [
"Z20",
"Z38963"
],
"Z8K4": [
"Z14",
"Z38961"
],
"Z8K5": "Z38959"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "infobox for river"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
in1qhcndonqr08b74oyvyy5tdqk7yta
Z38960
0
89445
297143
2026-08-07T06:22:59Z
HenkvD
1290
infobox rows taxonomy
297143
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z38960"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z6002",
"Z17K2": "Z38960K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "entity"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z60",
"Z17K2": "Z38960K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "language"
}
]
}
}
],
"Z8K2": "Z89",
"Z8K3": [
"Z20"
],
"Z8K4": [
"Z14"
],
"Z8K5": "Z38960"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "infobox rows taxonomy"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "table rows with two columns with taxonomy data\n\nExample for lion\n\u003Ctr\u003E\u003Ctd\u003EKingdom\u003C/td\u003E\u003Ctd\u003EAnimalia\u003C/td\u003E\u003C/tr\u003E\n\u003Ctr\u003E\u003Ctd\u003EPhylum\u003C/td\u003E\u003Ctd\u003EChordata\u003C/td\u003E\u003C/tr\u003E\n\u003Ctr\u003E\u003Ctd\u003EClass\u003C/td\u003E\u003Ctd\u003EMammalia\u003C/td\u003E\u003C/tr\u003E\n"
}
]
}
}
j6drtewajjqkrc15aoh5raetwttpfcy
297144
297143
2026-08-07T06:23:53Z
HenkvD
1290
297144
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z38960"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z6091",
"Z17K2": "Z38960K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "entity"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z60",
"Z17K2": "Z38960K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "language"
}
]
}
}
],
"Z8K2": "Z89",
"Z8K3": [
"Z20"
],
"Z8K4": [
"Z14"
],
"Z8K5": "Z38960"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "infobox rows taxonomy"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "table rows with two columns with taxonomy data\n\nExample for lion\n\u003Ctr\u003E\u003Ctd\u003EKingdom\u003C/td\u003E\u003Ctd\u003EAnimalia\u003C/td\u003E\u003C/tr\u003E\n\u003Ctr\u003E\u003Ctd\u003EPhylum\u003C/td\u003E\u003Ctd\u003EChordata\u003C/td\u003E\u003C/tr\u003E\n\u003Ctr\u003E\u003Ctd\u003EClass\u003C/td\u003E\u003Ctd\u003EMammalia\u003C/td\u003E\u003C/tr\u003E\n"
}
]
}
}
6tm4iel5j7vvu1g19iw245ze8pt0c37
297148
297144
2026-08-07T06:25:20Z
HenkvD
1290
Added Z38962 to the approved list of test cases
297148
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z38960"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z6091",
"Z17K2": "Z38960K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "entity"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z60",
"Z17K2": "Z38960K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "language"
}
]
}
}
],
"Z8K2": "Z89",
"Z8K3": [
"Z20",
"Z38962"
],
"Z8K4": [
"Z14"
],
"Z8K5": "Z38960"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "infobox rows taxonomy"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "table rows with two columns with taxonomy data\n\nExample for lion\n\u003Ctr\u003E\u003Ctd\u003EKingdom\u003C/td\u003E\u003Ctd\u003EAnimalia\u003C/td\u003E\u003C/tr\u003E\n\u003Ctr\u003E\u003Ctd\u003EPhylum\u003C/td\u003E\u003Ctd\u003EChordata\u003C/td\u003E\u003C/tr\u003E\n\u003Ctr\u003E\u003Ctd\u003EClass\u003C/td\u003E\u003Ctd\u003EMammalia\u003C/td\u003E\u003C/tr\u003E\n"
}
]
}
}
fq31ec4g9qp6g1k3emmvj78oauoy0na
Z38961
0
89446
297145
2026-08-07T06:24:29Z
Jsamwrites
938
297145
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z38961"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z38959",
"Z14K2": {
"Z1K1": "Z7",
"Z7K1": "Z33328",
"Z33328K1": {
"Z1K1": "Z89",
"Z89K1": ""
},
"Z33328K2": {
"Z1K1": "Z89",
"Z89K1": ""
},
"Z33328K3": [
"Z89",
{
"Z1K1": "Z7",
"Z7K1": "Z37644",
"Z37644K1": {
"Z1K1": "Z18",
"Z18K1": "Z38959K1"
},
"Z37644K2": "city",
"Z37644K3": {
"Z1K1": "Z18",
"Z18K1": "Z38959K2"
}
},
{
"Z1K1": "Z7",
"Z7K1": "Z37623",
"Z37623K1": {
"Z1K1": "Z18",
"Z18K1": "Z38959K1"
},
"Z37623K2": {
"Z1K1": "Z6092",
"Z6092K1": "P885"
},
"Z37623K3": {
"Z1K1": "Z18",
"Z18K1": "Z38959K2"
}
},
{
"Z1K1": "Z7",
"Z7K1": "Z37623",
"Z37623K1": {
"Z1K1": "Z18",
"Z18K1": "Z38959K1"
},
"Z37623K2": {
"Z1K1": "Z6092",
"Z6092K1": "P403"
},
"Z37623K3": {
"Z1K1": "Z18",
"Z18K1": "Z38959K2"
}
},
{
"Z1K1": "Z7",
"Z7K1": "Z37623",
"Z37623K1": {
"Z1K1": "Z18",
"Z18K1": "Z38959K1"
},
"Z37623K2": {
"Z1K1": "Z6092",
"Z6092K1": "P4614"
},
"Z37623K3": {
"Z1K1": "Z18",
"Z18K1": "Z38959K2"
}
}
]
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "infobox for river, com"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
o4djmqpfe0oibik9k4eflgbav8ll0jq
297149
297145
2026-08-07T06:25:37Z
Jsamwrites
938
297149
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z38961"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z38959",
"Z14K2": {
"Z1K1": "Z7",
"Z7K1": "Z33328",
"Z33328K1": {
"Z1K1": "Z89",
"Z89K1": ""
},
"Z33328K2": {
"Z1K1": "Z89",
"Z89K1": ""
},
"Z33328K3": [
"Z89",
{
"Z1K1": "Z7",
"Z7K1": "Z37644",
"Z37644K1": {
"Z1K1": "Z18",
"Z18K1": "Z38959K1"
},
"Z37644K2": "city",
"Z37644K3": {
"Z1K1": "Z18",
"Z18K1": "Z38959K2"
}
},
{
"Z1K1": "Z7",
"Z7K1": "Z37623",
"Z37623K1": {
"Z1K1": "Z18",
"Z18K1": "Z38959K1"
},
"Z37623K2": {
"Z1K1": "Z6092",
"Z6092K1": "P885"
},
"Z37623K3": {
"Z1K1": "Z18",
"Z18K1": "Z38959K2"
}
},
{
"Z1K1": "Z7",
"Z7K1": "Z37623",
"Z37623K1": {
"Z1K1": "Z18",
"Z18K1": "Z38959K1"
},
"Z37623K2": {
"Z1K1": "Z6092",
"Z6092K1": "P403"
},
"Z37623K3": {
"Z1K1": "Z18",
"Z18K1": "Z38959K2"
}
},
{
"Z1K1": "Z7",
"Z7K1": "Z37623",
"Z37623K1": {
"Z1K1": "Z18",
"Z18K1": "Z38959K1"
},
"Z37623K2": {
"Z1K1": "Z6092",
"Z6092K1": "P4614"
},
"Z37623K3": {
"Z1K1": "Z18",
"Z18K1": "Z38959K2"
}
},
{
"Z1K1": "Z7",
"Z7K1": "Z37623",
"Z37623K1": {
"Z1K1": "Z18",
"Z18K1": "Z38959K1"
},
"Z37623K2": {
"Z1K1": "Z6092",
"Z6092K1": "P205"
},
"Z37623K3": {
"Z1K1": "Z18",
"Z18K1": "Z38959K2"
}
}
]
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "infobox for river, com"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
eow6aglz9m2eyza54ryxkzoa5wjhoy4
297153
297149
2026-08-07T06:29:46Z
Jsamwrites
938
297153
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z38961"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z38959",
"Z14K2": {
"Z1K1": "Z7",
"Z7K1": "Z33328",
"Z33328K1": {
"Z1K1": "Z89",
"Z89K1": ""
},
"Z33328K2": {
"Z1K1": "Z89",
"Z89K1": ""
},
"Z33328K3": [
"Z89",
{
"Z1K1": "Z7",
"Z7K1": "Z37644",
"Z37644K1": {
"Z1K1": "Z18",
"Z18K1": "Z38959K1"
},
"Z37644K2": "city",
"Z37644K3": {
"Z1K1": "Z18",
"Z18K1": "Z38959K2"
}
},
{
"Z1K1": "Z7",
"Z7K1": "Z37623",
"Z37623K1": {
"Z1K1": "Z18",
"Z18K1": "Z38959K1"
},
"Z37623K2": {
"Z1K1": "Z6092",
"Z6092K1": "P885"
},
"Z37623K3": {
"Z1K1": "Z18",
"Z18K1": "Z38959K2"
}
},
{
"Z1K1": "Z7",
"Z7K1": "Z37623",
"Z37623K1": {
"Z1K1": "Z18",
"Z18K1": "Z38959K1"
},
"Z37623K2": {
"Z1K1": "Z6092",
"Z6092K1": "P403"
},
"Z37623K3": {
"Z1K1": "Z18",
"Z18K1": "Z38959K2"
}
},
{
"Z1K1": "Z7",
"Z7K1": "Z37623",
"Z37623K1": {
"Z1K1": "Z18",
"Z18K1": "Z38959K1"
},
"Z37623K2": {
"Z1K1": "Z6092",
"Z6092K1": "P4614"
},
"Z37623K3": {
"Z1K1": "Z18",
"Z18K1": "Z38959K2"
}
}
]
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "infobox for river, com"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
o4djmqpfe0oibik9k4eflgbav8ll0jq
Z38962
0
89447
297147
2026-08-07T06:25:07Z
HenkvD
1290
lion taxonomy
297147
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z38962"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z38960",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z38960",
"Z38960K1": {
"Z1K1": "Z6091",
"Z6091K1": "Q140"
},
"Z38960K2": "Z1002"
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z877",
"Z877K2": {
"Z1K1": "Z89",
"Z89K1": "\u003Ctr\u003E\u003Ctd\u003EKingdom\u003C/td\u003E\u003Ctd\u003EAnimalia\u003C/td\u003E\u003C/tr\u003E\r\n\u003Ctr\u003E\u003Ctd\u003EPhylum\u003C/td\u003E\u003Ctd\u003EChordata\u003C/td\u003E\u003C/tr\u003E\r\n\u003Ctr\u003E\u003Ctd\u003EClass\u003C/td\u003E\u003Ctd\u003EMammalia\u003C/td\u003E\u003C/tr\u003E\r\n\u003Ctr\u003E\u003Ctd\u003EInfraclass\u003C/td\u003E\u003Ctd\u003EPlacentalia\u003C/td\u003E\u003C/tr\u003E\r\n\u003Ctr\u003E\u003Ctd\u003EOrder\u003C/td\u003E\u003Ctd\u003ECarnivora\u003C/td\u003E\u003C/tr\u003E\r\n\u003Ctr\u003E\u003Ctd\u003EFamily\u003C/td\u003E\u003Ctd\u003EFelidae\u003C/td\u003E\u003C/tr\u003E\r\n\u003Ctr\u003E\u003Ctd\u003EGenus\u003C/td\u003E\u003Ctd\u003EPanthera\u003C/td\u003E\u003C/tr\u003E\r\n"
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "lion taxonomy"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
o5nizvk3mljad3osh6gohxcuzt2r9zm
Z38963
0
89448
297154
2026-08-07T06:31:15Z
Jsamwrites
938
297154
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z38963"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z38959",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z38959",
"Z38959K1": {
"Z1K1": "Z6091",
"Z6091K1": "Q131574"
},
"Z38959K2": "Z1002"
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z877",
"Z877K2": {
"Z1K1": "Z89",
"Z89K1": "\u003Ctable style=\"background-color:var(--background-color-interactive-subtle,#F8F9FA);border:1px solid var(--border-color-base,#A2A9B1);border-spacing:3px;clear:inline-end;float: inline-end;margin:0.5em 0 0.5em 1em;padding:0.2em;width:250px;\"\u003E\u003Ctr\u003E\u003Ctd colspan=\"2\" align=\"center\" style=\"--infobox-accent-hue:264deg;background-color:oklch(from var(--background-color-success-subtle,#DFF2EB) calc(0.8*l + 0.15) calc(c + 0.05) var(--infobox-accent-hue,264deg));font-weight: bold;\"\u003EVltava\u003C/td\u003E\u003C/tr\u003E\u003Ctr\u003E\u003Ctd\u003ERiver source\u003C/td\u003E\u003Ctd\u003EBohemian Forest\u003C/td\u003E\u003C/tr\u003E\u003Ctr\u003E\u003Ctd\u003ERiver mouth\u003C/td\u003E\u003Ctd\u003EElbe\u003C/td\u003E\u003C/tr\u003E\u003Ctr\u003E\u003Ctd\u003EDrainage basin\u003C/td\u003E\u003Ctd\u003EVltava Basin\u003C/td\u003E\u003C/tr\u003E\u003C/table\u003E"
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Vltava infobox, test"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
gw76965px8j3f8ab4s8psd7bxifri79
Z38964
0
89449
297156
2026-08-07T06:33:27Z
Jsamwrites
938
297156
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z38964"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z6091",
"Z17K2": "Z38964K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "entity"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z60",
"Z17K2": "Z38964K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "language"
}
]
}
}
],
"Z8K2": "Z89",
"Z8K3": [
"Z20"
],
"Z8K4": [
"Z14"
],
"Z8K5": "Z38964"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "infobox for sea"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
65zyrfs6u1c0y5x3ctdgvjk8au87ycq
297158
297156
2026-08-07T06:36:43Z
Jsamwrites
938
Added Z38965 to the approved list of implementations
297158
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z38964"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z6091",
"Z17K2": "Z38964K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "entity"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z60",
"Z17K2": "Z38964K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "language"
}
]
}
}
],
"Z8K2": "Z89",
"Z8K3": [
"Z20"
],
"Z8K4": [
"Z14",
"Z38965"
],
"Z8K5": "Z38964"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "infobox for sea"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
hr1782cwu5fgw4xxrzgvk827pp5y5eb
297160
297158
2026-08-07T06:38:03Z
Jsamwrites
938
Added Z38966 to the approved list of test cases
297160
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z38964"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z6091",
"Z17K2": "Z38964K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "entity"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z60",
"Z17K2": "Z38964K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "language"
}
]
}
}
],
"Z8K2": "Z89",
"Z8K3": [
"Z20",
"Z38966"
],
"Z8K4": [
"Z14",
"Z38965"
],
"Z8K5": "Z38964"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "infobox for sea"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
s8qofjinh57rxoilmib77tbpdrmvmhy
Z38965
0
89450
297157
2026-08-07T06:36:33Z
Jsamwrites
938
297157
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z38965"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z38964",
"Z14K2": {
"Z1K1": "Z7",
"Z7K1": "Z33328",
"Z33328K1": {
"Z1K1": "Z89",
"Z89K1": ""
},
"Z33328K2": {
"Z1K1": "Z89",
"Z89K1": ""
},
"Z33328K3": [
"Z89",
{
"Z1K1": "Z7",
"Z7K1": "Z37644",
"Z37644K1": {
"Z1K1": "Z18",
"Z18K1": "Z38964K1"
},
"Z37644K2": "default",
"Z37644K3": {
"Z1K1": "Z18",
"Z18K1": "Z38964K2"
}
},
{
"Z1K1": "Z7",
"Z7K1": "Z38357",
"Z38357K1": {
"Z1K1": "Z18",
"Z18K1": "Z38964K1"
},
"Z38357K2": {
"Z1K1": "Z6092",
"Z6092K1": "P2044"
},
"Z38357K3": {
"Z1K1": "Z18",
"Z18K1": "Z38964K2"
}
},
{
"Z1K1": "Z7",
"Z7K1": "Z38216",
"Z38216K1": {
"Z1K1": "Z18",
"Z18K1": "Z38964K1"
},
"Z38216K2": {
"Z1K1": "Z6092",
"Z6092K1": "P47"
},
"Z38216K3": {
"Z1K1": "Z18",
"Z18K1": "Z38964K2"
}
},
{
"Z1K1": "Z7",
"Z7K1": "Z38357",
"Z38357K1": {
"Z1K1": "Z18",
"Z18K1": "Z38964K1"
},
"Z38357K2": {
"Z1K1": "Z6092",
"Z6092K1": "P2049"
},
"Z38357K3": {
"Z1K1": "Z18",
"Z18K1": "Z38964K2"
}
}
]
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "infobox for sea, comp"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
hkw5inpp84l4prlec78qniuoyuuurob
Z38966
0
89451
297159
2026-08-07T06:37:49Z
Jsamwrites
938
297159
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z38966"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z38964",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z38964",
"Z38964K1": {
"Z1K1": "Z6091",
"Z6091K1": "Q13924"
},
"Z38964K2": "Z1002"
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z877",
"Z877K2": {
"Z1K1": "Z89",
"Z89K1": "\u003Ctable style=\"background-color:var(--background-color-interactive-subtle,#F8F9FA);border:1px solid var(--border-color-base,#A2A9B1);border-spacing:3px;clear:inline-end;float: inline-end;margin:0.5em 0 0.5em 1em;padding:0.2em;width:250px;\"\u003E\u003Ctr\u003E\u003Ctd colspan=\"2\" align=\"center\" style=\"--infobox-accent-hue:264deg;background-color:oklch(from var(--background-color-success-subtle,#DFF2EB) calc(0.8*l + 0.15) calc(c + 0.05) var(--infobox-accent-hue,264deg));font-weight: bold;\"\u003EAdriatic Sea\u003C/td\u003E\u003C/tr\u003E\u003Ctr\u003E\u003Ctd\u003EHeight above mean sea level\u003C/td\u003E\u003Ctd\u003E0 m\u003C/td\u003E\u003C/tr\u003E\u003Ctr\u003E\u003Ctd\u003EBorder\u003C/td\u003E\u003Ctd\u003EItaly, Balkans\u003C/td\u003E\u003C/tr\u003E\u003Ctr\u003E\u003Ctd\u003EWidth\u003C/td\u003E\u003Ctd\u003E200 km\u003C/td\u003E\u003C/tr\u003E\u003C/table\u003E"
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Adriatic sea, test"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
ri0b7vj91pqpmn100p5ct9qw823e08h
Talk:Z38960
1
89452
297163
2026-08-07T06:56:06Z
HenkvD
1290
/* Request for implementation */ new section
297163
wikitext
text/x-wiki
== Request for implementation ==
Because taxonomy is not easily available as a list of properties for an entity (such as a lion), it needs to be retrieved recursively by following the parent taxon hierarchy all the way up to the Kingdom level. I think this can best be implemented using Python or JavaScript.
For example the output for lion could be as in [[:en:lion]]:<br>
<nowiki><tr><td>Kingdom</td><td>Animalia</td></tr></nowiki><br>
<nowiki><tr><td>Phylum</td><td>Chordata</td></tr></nowiki><br>
<nowiki><tr><td>Class</td><td>Mammalia</td></tr></nowiki><br>
<nowiki><tr><td>Infraclass</td><td>Placentalia</td></tr></nowiki><br>
<nowiki><tr><td>Order</td><td>Carnivora</td></tr></nowiki><br>
<nowiki><tr><td>Family</td><td>Felidae</td></tr></nowiki><br>
<nowiki><tr><td>Genus</td><td>Panthera</td></tr></nowiki><br>
This could be with wikilinks.
Find below some examples of taxonomy lists (not formatted) one with more levels of taxonomy and one with both the common names and the taxon names.
Example from [[:commons:Category:Panthera leo]]<br>
Class Mammalia<br>
Subclass Theriiformes<br>
Superlegion Trechnotheria<br>
Infralegion Boreosphenida<br>
Subclass Theria<br>
Clade Eutheria<br>
Infraclass Placentalia<br>
Magnorder Boreoeutheria<br>
Superorder Laurasiatheria<br>
Grandorder Ferungulata<br>
Mirorder Ferae<br>
Clade Pan-Carnivora<br>
Clade Carnivoramorpha<br>
Clade Carnivoraformes<br>
Order Carnivora<br>
Suborder Feliformia<br>
Infraorder Aeluroidea<br>
Superfamily Feloidea<br>
Family Felidae<br>
Subfamily Pantherinae<br>
Genus Panthera<br>
Species Panthera leo<br>
Example from [[:de:Löwe]]<br>
Ordnung Raubtiere (Carnivora)<br>
Unterordnung Katzenartige (Feliformia)<br>
Familie Katzen (Felidae)<br>
Unterfamilie Großkatzen (Pantherinae)<br>
Gattung Eigentliche Großkatzen (Panthera)<br>
Art Löwe<br>
[[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 06:56, 7 August 2026 (UTC)
4bpfju243jthetg4nz97tjy0frf1sei
Z38967
0
89453
297171
2026-08-07T09:32:17Z
HenkvD
1290
Area 37,378 km²
297171
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z38967"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z37830",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z37830",
"Z37830K1": {
"Z1K1": "Z6091",
"Z6091K1": "Q55"
},
"Z37830K2": {
"Z1K1": "Z6092",
"Z6092K1": "P2046"
},
"Z37830K3": "Z1002"
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z877",
"Z877K2": {
"Z1K1": "Z89",
"Z89K1": "\u003Ctr\u003E\u003Ctd\u003EArea\u003C/td\u003E\u003Ctd\u003E37,378 km²\u003C/td\u003E\u003C/tr\u003E"
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Area 37,378 km²"
}
]
}
}
1j20m0kl0ag7zwnlshoxudpdk5hrbp7
297172
297171
2026-08-07T09:32:32Z
HenkvD
1290
Area 37,378 km²
297172
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z38967"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z37830",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z37830",
"Z37830K1": {
"Z1K1": "Z6091",
"Z6091K1": "Q55"
},
"Z37830K2": {
"Z1K1": "Z6092",
"Z6092K1": "P2046"
},
"Z37830K3": "Z1002"
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z877",
"Z877K2": {
"Z1K1": "Z89",
"Z89K1": "\u003Ctr\u003E\u003Ctd\u003EArea\u003C/td\u003E\u003Ctd\u003E37,378 km²\u003C/td\u003E\u003C/tr\u003E"
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Area 37,378 km²"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
nlh5qu1q5fjyqnbc4y7kxyb3urxfpz7