# Table of Contents
This is a repository to hold the working versions of Patrick Joyce's SpeakBook project (opens new window). We aim to provide a platform for crowd-sourced version control of future PDF's here. More info (and the current final releases) can be found at the Ace Centre's project page here (opens new window).
The current in-progress versions (Note: will only look as intended in Chrome. We recommend looking at the PDF builds):
# Complete Translatons
# 🇬🇧 English
With thanks to Suzanne Guerin and her colleagues for finding the mistake with the circles/triangles and cyan/green dots!
# 🇹🇷 Turkish
Credits Ersin Sinay
# 🇩🇪 German
Credits Julius Deutsch, kommhelp e.V., Michael Ritson, Ace Centre, UK.
# 🇿🇦 Afrikaans
Credits Emma Emmerich, Inclusive Solutions.
# Needing "Printing Instructions" (but complete otherwise)
# 🇸🇪 Swedish
# 🇵🇹 Portuguese
Credits Hélio Lourenço, Ace Centre UK
# 🇪🇸 Spanish
# 🇫🇷 French
Credits Michael Ritson, Ace Centre, UK.
# 🇲🇹 Maltese
Credits Martina Zarb, Jamie Said, Access to Communication and Technology Unit (ACTU), Malta
# 🇲🇿 Zulu
Credits Sipho Sibanda, Inclusive Solutions
# Needs a proof reader
# 🇨🇳 Chinese Simplified
NB: We really are not sure how speakbook would work in Chinese. Maybe we need to strip out the finger spelling page - and spelling e-tran style page.
# 🇲🇿 Arabic
Note: using Abjadī alphabet
Credits Hossein Amin, Iraq.
# 🇵🇰 Urdu
# 🇵🇱 Polish
# 🇦🇲 Armenian
# 🇭🇷 Croatian
# How do I create a new version for my language - or improve a language translation
Firstly - Great! Here are the steps:
- Go to https://poeditor.com/join/project/wKsMtKRLIj (opens new window) and join up. Pick a current language to help edit - or create a new one.
- What happens is you end up with a table. In one column is English snippets of text. And in the other you write that languages translation. Have a look at the English (opens new window) version where the strings are from. It should make sense what things mean. There are some strange bits - some bits later on have html embedded in them. Don’t worry - just do what you can. You can’t break anything!
- Once you have done what you can - send me an email and I’ll run a little script that converts it. It really takes me no more than about 10 minutes to do. Once done you can see the changes on our development page (opens new window)
- There’s usually tweaks to be made around how we do the e-Tran frame and finger spelling page. At that stage we just have a email chat about the best way forward. Some languages don’t bother to use all their letters - or we ignore the numbers. Lots of things we can do. And feel free to change things like the static words like “I feel hot” to something more regional.
- Lastly* - we translate the printing instructions page. That’s just a text or word file you can send me. Example here (opens new window)
# I want it to do _____ or can it print upside down?
Get in touch with the team if you have a special request. We occasionally do sprints of work on SpeakBook to add new features. Alternatively look at the current Issues here (opens new window). We welcome code changes and pull requests!
- Need translations for a printed instructions sheet (opens new window)
- More serious coding issues see the queue here (opens new window).
# Technical Background
This is simply a Vue.js themed template with some scripts to generate a PDF of the html document that is created. Its designed for chrome as chrome does the PDF generation. We use PO language strings (opens new window) in this project. On each markdown file we have a
text: field where there is a list of strings available to the page. This means you can separate the design logic from the language information. We have some scripts to aid this process. A Markdown->PO script to create a PO file from a file - and then a PO->Markdown script that applies new language strings to a markdown file.
We also have a very natty script that uses Google translate to make a new po file.. See below
.vuepress/ build-pdf-plugin.js <- The pdf build plugin. config.js dist/ <- Where the final build is outputted public/ <- Static assets like images sit here and in SpeakBook/ theme/ layouts/ SpeakBook.vue <- The main logic for SpeakBook styles/ util/ fonts/ components/ .scripts/ common.js apply-po-to-md.js <- Apply a PO Language file to Markdown file. getPOfiles.js <- NOT WORKING - Grab files from POEditor po-from-md.js <- Make a master PO file from a markdown file. speakbook/ README.md <- The English version of SpeakBook lang/speakbook/ README.md <- Other language versions
# Package scripts
# run a local server for development $ yarn dev # build it in static html format $ yarn build # build pdf format for all pages $ yarn buildpdf # build a zip of all the pdfs for each language $ node .scripts/buildfinalzip.js $ netlify deploy --dir=.vuepress/dist $ netlify deploy --prod
There is also a way we can use Google translate to start a new language. This is useful to get you going in the right direction.. e.g. For English to Armenian
node .scripts/po-google-translate.js res/lang/master.po res/lang/SpeakBook_Armenian.po en hy'
# Script to update all files from POEditor
node .scripts/apply-po-to-md.js res/lang/SpeakBook_Arabic.po ar/speakbook/README.md > ar/speakbook/README2.md && mv ar/speakbook/README2.md ar/speakbook/README.md node .scripts/apply-po-to-md.js res/lang/SpeakBook_Spanish.po es/speakbook/README.md > es/speakbook/README2.md && mv es/speakbook/README2.md es/speakbook/README.md node .scripts/apply-po-to-md.js res/lang/SpeakBook_French.po fr/speakbook/README.md > fr/speakbook/README2.md && mv fr/speakbook/README2.md fr/speakbook/README.md node .scripts/apply-po-to-md.js res/lang/SpeakBook_Portuguese.po po/speakbook/README.md > po/speakbook/README2.md && mv po/speakbook/README2.md po/speakbook/README.md node .scripts/apply-po-to-md.js res/lang/SpeakBook_Swedish.po sv/speakbook/README.md > sv/speakbook/README2.md && mv sv/speakbook/README2.md sv/speakbook/README.md node .scripts/apply-po-to-md.js res/lang/SpeakBook_German.po de/speakbook/README.md > de/speakbook/README2.md && mv de/speakbook/README2.md de/speakbook/README.md node .scripts/apply-po-to-md.js res/lang/SpeakBook_Afrikaans.po af/speakbook/README.md > af/speakbook/README2.md && mv af/speakbook/README2.md af/speakbook/README.md node .scripts/apply-po-to-md.js res/lang/SpeakBook_Zulu.po zu/speakbook/README.md > zu/speakbook/README2.md && mv zu/speakbook/README2.md zu/speakbook/README.md node .scripts/apply-po-to-md.js res/lang/SpeakBook_Turkish.po tr/speakbook/README.md > tr/speakbook/README2.md && mv tr/speakbook/README2.md tr/speakbook/README.md node .scripts/apply-po-to-md.js res/lang/SpeakBook_Maltese.po mt/speakbook/README.md > mt/speakbook/README2.md && mv mt/speakbook/README2.md mt/speakbook/README.md node .scripts/apply-po-to-md.js res/lang/SpeakBook_Armenian.po hu/speakbook/README.md > hu/speakbook/README2.md && mv hu/speakbook/README2.md hu/speakbook/README.md node .scripts/apply-po-to-md.js res/lang/SpeakBook_Croatian.po hr/speakbook/README.md > hr/speakbook/README2.md && mv hr/speakbook/README2.md hr/speakbook/README.md
and likewise for Classic (colour version):
node .scripts/apply-po-to-md.js res/lang/SpeakBook_Arabic.po ar/speakbook/classic.md > ar/speakbook/classic2.md && mv ar/speakbook/classic2.md ar/speakbook/classic.md node .scripts/apply-po-to-md.js res/lang/SpeakBook_Spanish.po es/speakbook/classic.md > es/speakbook/classic2.md && mv es/speakbook/classic2.md es/speakbook/classic.md node .scripts/apply-po-to-md.js res/lang/SpeakBook_French.po fr/speakbook/classic.md > fr/speakbook/classic2.md && mv fr/speakbook/classic2.md fr/speakbook/classic.md node .scripts/apply-po-to-md.js res/lang/SpeakBook_Portuguese.po po/speakbook/classic.md > po/speakbook/classic2.md && mv po/speakbook/classic2.md po/speakbook/classic.md node .scripts/apply-po-to-md.js res/lang/SpeakBook_Swedish.po sv/speakbook/classic.md > sv/speakbook/classic2.md && mv sv/speakbook/classic2.md sv/speakbook/classic.md node .scripts/apply-po-to-md.js res/lang/SpeakBook_German.po de/speakbook/classic.md > de/speakbook/classic2.md && mv de/speakbook/classic2.md de/speakbook/classic.md node .scripts/apply-po-to-md.js res/lang/SpeakBook_Afrikaans.po af/speakbook/classic.md > af/speakbook/classic2.md && mv af/speakbook/classic2.md af/speakbook/classic.md node .scripts/apply-po-to-md.js res/lang/SpeakBook_Zulu.po zu/speakbook/classic.md > zu/speakbook/classic2.md && mv zu/speakbook/classic2.md zu/speakbook/classic.md node .scripts/apply-po-to-md.js res/lang/SpeakBook_Turkish.po tr/speakbook/classic.md > tr/speakbook/classic2.md && mv tr/speakbook/classic2.md tr/speakbook/classic.md node .scripts/apply-po-to-md.js res/lang/SpeakBook_Maltese.po mt/speakbook/classic.md > mt/speakbook/classic2.md && mv mt/speakbook/classic2.md mt/speakbook/classic.md node .scripts/apply-po-to-md.js res/lang/SpeakBook_Armenian.po hu/speakbook/classic.md > hu/speakbook/classic2.md && mv hu/speakbook/classic2.md hu/speakbook/classic.md node .scripts/apply-po-to-md.js res/lang/SpeakBook_Croatian.po hr/speakbook/classic.md > hr/speakbook/classic2.md && mv hr/speakbook/classic2.md hr/speakbook/classic.md