This is a repository for the textual content of the fundraising application.
data: Language-independent content that is used internally. Currently it's the black- and whitelists for address fields and comments.i18n: Language-dependent content.de_DE: Sub folders named by language/locale identifier. Each language has a dedicated subdirectory.data: Language-dependent configuration options, like the list of allowed page URLs.mail: Mail template snippets. For mail templates that consist of multiple snippets, the templates are placed in a subdirectory. The files must not contain HTML!messages: JSON files with translations.shared: Content that is used both for E-Mails and in the web application.web: Content that is used in the web application. This content may contain simple, valid HTML.pages: Content for pages defined indata/pages.json
resources: Web resources that will be available through the web server, like images or PDFs....: Language-independent resources (e.g. logos).de_DE: Sub folders named by language/locale identifier. Each language has a dedicated subdirectory....: Language-dependent resources (e.g. documents containing text).
Note
Banners in wikipedia.de currently include the JSON directly.
Banners on wikipedia.org (managed with 'CentralNotice') need the "Use of funds" content as data attributes in an HTML tag.
First, make sure the source JSON files in i18n/de_DE/data and i18n/en_GB/data folder contain the latest changes. The source JSON files use the following filename convention:
use_of_funds_content[_YYYY].json
e.g. use_of_funds_content.json or use_of_funds_content_2025.json
Here, _YYYY is optional
The source JSON file without the _YYYY suffix will always exist. Sometimes, we are in a transition phase, where we have an additional source file with the suffix, with new and improved content.
During this transition phase, the fundraising-application links to either the file with or without the suffix. During that time, the content repository needs to contain both files, to support the content deployment independent of application deployment.
See section "Clean up UoF source JSON file" to see what happens after the transition phase.
The following text explains how to generate the “Use of Funds” text for MediaWiki for both German and English language
(using bin/extract_to_mediawiki script and Composer command).
- Default (no year):
composer uof - With year:
composer uof -- [YYYY]- e.g.
composer uof -- 2023
- e.g.
Note: The -- ensures Composer forwards YYYY to each script entry
| JSON source file | Output file |
|---|---|
| use_of_funds_content.json | mediawiki_use_of_funds_de.txt / mediawiki_use_of_funds_en.txt |
| use_of_funds_content_2025.json | mediawiki_use_of_funds_de_2025.txt / mediawiki_use_of_funds_en_2025.txt |
The Composer command will only generate the files with the suffix _YYYY when you pass a year (YYYY) in.
Tip
If you don't want to open the files in a text editor to copy them into MediaWiki, you can copy them directly to the clipboard with the following commands:
cat mediawiki_use_of_funds_de.txt | xclip -sel c (Linux) and
cat mediawiki_use_of_funds_de.txt | pbcopy (Mac)
-
Default (no year):
php bin/extract_to_mediawiki <de|en><de|en>- which language folder to read (de_DE or en_GB).- e.g.
php bin/extract_to_mediawiki deOrphp bin/extract_to_mediawiki en
-
With year:
php bin/extract_to_mediawiki <de|en> [YYYY]YYYY(optional) - four‑digit year- e.g.
php bin/extract_to_mediawiki de 2023Orphp bin/extract_to_mediawiki en 2023
Output:
It writes the output file in the repo's root: mediawiki_use_of_funds_<lang>[_YYYY].txt
e.g. mediawiki_use_of_funds_de.txt / mediawiki_use_of_funds_en.txt Or
mediawiki_use_of_funds_de_2025.txt / mediawiki_use_of_funds_en_2025.txt
When the fundraising-application uses the "latest" UoF, it's time to clean up the duplicate UoF JSON file. Please follow the ticket below to achieve that:
Remove old UoF content and scripts from content repo
If they are very short snippets of text like labels or messages, place them in messages/messages.json. Otherwise, create a file in mail, shared or web.
Have a look at the list of allowed tags in the content provider Repository.
Only {% include %} and {$ variable $} statements.
These are being shared and used for client and server side validation. Currently, they're being used in the following places:
- The Fundraising Frontend app outputs them as application vars used by Vuejs for client side form validation.
- They are injected into the Fun Validators
AddressValidatorfor server side validation.