This repository is responsible for most content visible on the website TechWorkersBerlin.com. The site is made with a static site generator called Jekyll in a language called Ruby.
We use Docker to have a reproducible development environment. Before proceeding, install Docker Compose on your system.
- Start the application with the command:
docker-compose up
- Access the application in a browser at
localhost:4000
- Execute other commands in the Docker container:
docker-compose run --rm --service-ports jekyll bash
- Install dependencies:
bundle install
- Start a local server:
bundle exec jekyll serve
- Verify all internal links are valid:
bundle exec rake
- (Optional) to reproduce Netlify functions run
npx decap-server
; then you can access/admin
or other Netlify services
Open a browser to localhost:4000
Add a file inside the _events
directory. Copy a previous file as a template, and make sure to include the right time zone for Berlin!
Add a file inside the _blog
directory. Copy a previous file as a template. If an author does not exist, add one inside _data/authors.yml
. A name is the only thing necessary, but photo is optional too.
Inside _data/press.yml
file, add a media entry, with date format in YYYY-MM-DD
.
I18n (internationalization) is made available with the jekyll-multiple-languages-plugin. When a page has a translated version available, a link will show up on the top right if you use the default_translate layout. English is the default language, while other languages have their two letter ISO code prefixed, for example TechWorkersCoalition.org/ru for Russian.
Normally displaying a date is done using native liquid templates {{ page.date | date: '%-d %B %Y' }}
, but for localisation, we need to pass it a language which can be done using our custom _plugins/i18n_filter.rb, and translation keys. We would replace our liquid template with the following:
{{ page.date | localize: site.lang, '%-d %B %Y' }}
- Add new language key to en.yml
- Add two letter iso code in config. The order here determines the order shown on the page. English must be first.
- Inside the i18n directory create a
LANGUAGE.yml
with the language key and value in its own language, for examplees: Español
Note, only the default en.yml must contain the names of each language. The other language yaml files contain just their own language key. To include only certain languages, specify the exact language keys you want. For example languages: ["en", 'ja']
Currently techworkerscoalition.org uses Berlin press and events either from GitHub or directly from our exposed APIs e.g /events.json. You can find other uses cases here
- Landing Page index.yml
- Join Page join.md
- Events events.md
- Press mentions press_mentions.md
- English
- German
- Russian
- Polish