KAppTemplate and KDevelop placeholders

%{PROJECTDIRNAME} = %{APPNAMELC} for KAppTemplate
%{APPNAME}    used in .kdev4, project name as entered by user ex: MyKApp
%{APPNAMELC}  project name in lower case ex: mykapp
%{APPNAMEUC}  project name in upper case ex: MYKAPP

%{CPP_TEMPLATE}  license header for cpp file
%{H_TEMPLATE}    license header for h file

%{AUTHOR}        author name ex: George Ignacious
%{EMAIL}	 author email ex: foo@bar.org
%{VERSION}       project version ex: 0.1
%{CURRENT_YEAR}  year at generation time ex: 2017

Deprecated:
%{dest}          used in .kdevtemplate with ShowFilesAfterGeneration entry, since KDevelop 5.1.1 supports relative paths (again)


***** In the view that lists the templates *****
kapptemplate -> ChoicePage
or
kdevplatform -> plugins -> appwizard -> ProjectSelectionPage


** Template name
The name of the template is the name you write in English in the .kdevtemplate file in Name= and which is translated in other languages. This appears in the Tree View.
Example: Name=Qt5 GUI Application

** Template description
The description of the template is the comment you write in English in the .kdevtemplate file in Comment= and which is translated in other languages.
Example: Comment=Generate a QMake/Qt5 based application with graphical user interface (cross-platform)

** Template Category
The template category as it'll appear in the Tree View is extracted from the Category= line in the .kdevtemplate file.
Example: Category=Qt/Graphical

** Template preview
A screenshot will help the user to preview the template. This screenshot file will be passed as value for the entry Icon= . The file needs to be stored next to the .kdevtemplate file and ideally has the same basename as the .kdevtemplate file. Screenshot preferred size: 200 pixels width.
Example: Icon=qt5gui.png

KDevelop: templates are tarred using the CMake kdevplatform_add_app_templates macro and installed in kdevappwizard/templates.
Model untars it and extracts the .kdevtemplate files locally in $XDG_DATA_HOME/kdevappwizard/template_descriptions (void ProjectTemplatesModel::extractTemplateDescriptions())
Model then read the name and description from there (void ProjectTemplatesModel::refresh()).
