Module:auto cat >> Module:auto cat/data   << Module:auto cat/τεκμηρίωση
Module:auto cat >> Module:auto cat/data (γενικές, γραμματική, ετυμολογία)
Module:auto cat >> Module:auto cat/data/topics (θεματικές as in topic labels at Module:labels/data)
Module:auto cat >> Module:auto cat/data/style (υφολογικές as in style labels at Module:labels/data)
Module:auto cat >> Module:auto cat/data/toposkind (τοπωνύμια as in placenames at Module:topos/kind)
Module:auto cat >> τόποι της... places of...       (as in where at Module:topos/where)
Module:auto cat >> Module:Languages       & Module:Languages/cat (γλώσσες)


-- [[Template:auto cat]]
-- https://el.wiktionary.org/wiki/Ειδικό:ΤιΣυνδέειΕδώ/Πρότυπο:auto_cat
-- [[:Κατηγορία:Σελίδες με σφάλμα στο auto cat]]
-- [[:Κατηγορία:Σελίδες με σφάλματα δέσμης ενεργειών]]
--[=[
2020.11.11. Sarri.greek
IN GREEK================
-- Στις σελίδες Κατηγοριών, το [[Πρότυπο:auto cat]] προσθέτει μικρογράμματο τίτλο στην κορυφή της σελίδας
	και κατηγοριοποιεί στο τέλος της σελίδας.
-- Οι Κατηγορίες στο el.wiktionary έχουν πάντοτε τη μορφή
	Κατηγορία:Τίτλος
	ή
	Κατηγορία:Τίτλος (όνομαγλώσσας)
	Ειδικοί δείκτες:
	* η λέξη 'από' για ετυμολογικές κατηγορίες όπως στο [[Module:Languages]].apota = από την τάδε γλώσσα
		π.χ. [[:Κατηγορία:Δάνεια - ονόματα]]
	* απλή παύλα ' - ' για θεματικές ετυμολογικές κατηγορίες π.χ.[[:Κατηγορία:Δάνεια - ονόματα]]
		(όμως καλύτερα να αποφεύγεται, δημιουργεί προβλήματα)
	* η γενική του άρθρου 'της / του / των' για κατηγορίες τόπων π.χ. [[:Κατηγορία:Τοπωνύμια της Ελλάδας]]
ΔΙΟΡΘΩΣΗ ΣΥΧΝΟΥ ΠΡΟΒΛΗΜΑΤΟΣ: αν κάποια Κατηγορία δίνει error: bad argument #1 to 'sub' (string expected, got nil).
	μάλλον φταίει ότι μέσα στην έκφραση υπάρχει το «απο» Παράδειγμα: [[:Κατηγορία:Αριθμητικά απόλυτα]]
	Θα πρέπει να πάμε ΣΕ ΟΛΕΣ τις περιπτώσεις ΕΞΑΙΡΕΣΕΩΝ ΕΤΥΜΟΛΟΓΙΑ για τον δείκτη apota προσθέτοντας:  and not mw.ustring.find(cat_title, 'απόλυτα')
ΔΟΜΗ ===============================
1)	προκαταρκτικά, mode a, mode b
	text= & cat= in mode a (χωρίς γλώσσα) & mode b (με γλώσσα στην παρένθεση)
2)		// Κατηγορίες γλωσσών όπως στο [[Module:Languages/cat]] // ειδικά για συγκεκριμένες γλώσσες
3) απλοί τίτλοι lables [[Module:labels]] & άλλα Πρότυπα
		// level_1, by_lang //  label  από το [[Module:auto cat/data]] από το [[Module:labels/data]] gramm=true, etym=true//
		// topics (Θεματικές ορολογίες) όπως στο [[Module:auto cat/data/topics]] από το [[Module:labels/data]] topics=true // 
		// υφολογικές όπως στο [[Module:auto cat/data/style]] από το [[Module:labels/data]] style=true // 
4) τίτλοι με δείκτες
		// λέξεις με πρόθημα... - με ένθημα... - με επίθημα... - με συνθετικό... / με υποκοριστικό επίθημα..., με μεγεθυντικό επίθημα... //
			// πρόθημα σε ονομασίες - επίθημα σε ονομασίες όπως επώνυμα κλπ
			// phrasal verbs με //
		// ετυμολογία: +Functions apota (από τα...ά -όνομα γλώσσας-) // + Functions apotin root
5) ΤΟΠΩΝΥΜΙΑ ([[Module:topos]]		
		//  Γενικοί τίτλοι: τοπωνύμια 
		// με δείκτες: κατάλογος τίτλοων / Functions τοπωνύμια+της.. του.. των + χώρα ή ήπειρος όπως στο [[Module:topos/kind]] & [[Module:topos/where]]
	output
IN ENGLISH================
-- At category pages: Κατηγορία:... [[Template:auto cat]] adds a title-row (breadcrumb) and categorizes at bottom.
	Some categories cannot be supported by auto cat (see output).
-- Categories in el.wiktionary are of the form
	Category:Title
	or
	Category:Title (languagename)
	Special markers:
	* the word 'από' for etymological categories: [[Module:Languages]].apota = from...xx language
		Category:Title languages.apota e.g. [[:Κατηγορία:Δανεισμοί από τα αγγλικά]]
	* dash ' - ' for etymological subjects e.g. [[:Κατηγορία:Δάνεια - ονόματα]]
		(to be avoided in the future)
	* the genitive articles 'της / του / των' for places 'from X country' e.g. [[:Κατηγορία:Τοπωνύμια της Ελλάδας]]
STRUCTURE ===============================
1)	preliminaries, mode a, mode b
	text= & cat= in mode a (without language) & mode b (with language)
2)		// Language Categories as in [[Module:Languages/cat]] // language specifics
3) simple titles from [[Module:labels]] & other Templates
		// level_1, by_lang //  labels as in [[Module:auto cat/data]] from [[Module:labels/data]] gramm=true, etym=true//
		// topics (Subjects) as in [[Module:auto cat/data/topics]] from [[Module:labels/data]] topics=true // 
		// style&usage as in [[Module:auto cat/data/style]] from [[Module:labels/data]] style=true // 
4) titles with markers
		// Word with prefix... - with infix... - with suffix... / with combinging form... / with diminutive suffix..., with augmentative suffix... //
			// prefix+names, suffix+names // phrasal verbs with //
		// etymology +Functions apota (from...language) // + Functions apotin root
5) PLACENMAES ([[Module:topos]]		
		// General titles: toponyms 	
		// with markers: list of titles / Functions toponyms of+της.. του.. των + coungry or continent as in [[Module:topos/kind]] & [[Module:topos/where]]
	output

TEXT: The title-row (breadcrumb) may begin with
	mode a, level 0: [[Κατηγορία:Βικιλεξικό|Κατηγορίες]] = the first fundamental cat
	mode b, level 0: Κατηγορία:γλώσσα τάδε = a specific language ++	for hosted phases cf. ελληνιστική κοινή
TEXT with its parents has the form
	... >> parent4 >> parent3 >> parent2 >> parent >> THE CATEGORY << extra1
Categorization for the Category includes:
	the general Categories assigned by the module and if they exist: parent - extra1 - extra2 - extra3

HOW
 Read the title of the page. Examine if there is a parenthesis. Extract the title (cat_title). 
 Extract what is in the parenthesis.  What is in the parenthesis is a language.name. 
 Extract from language.name the language.iso as at required [[Module:Languages]] via a required function from [[Module:lang]]. 
 If the iso field in Languages is wrong or empty, give error. -- CANNOT do ERROR for WRONG language names
 Also: extract the expressions apota from titles if they match to [[Module:Languages]] apota. This is the donor language and has lang_iso2. 
 Also: extract affixes - extract expressions 'from xxx country' for placnames.
NOTES
	NO  br at end of text
	AVOID dash in title in the future - ΝΑ ΜΗΝ ΕΒΑΖΑ παύλες μέσα σε τίτλους καλύτερα. Έχουν μονίμως πρόβλημα.
	
TO DO, PROBLEMS
	* topos+where. REDO IT. CANNOT toposwhere label = topos kind id. 
		Cannot toposwhere_label.descr [[:Κατηγορία:Διαμερίσματα της Ελλάδας]]
]=]--

local export = {}

-- MODULES needed
local m_page = require("Module:page") -- splits page's name in parts
	-- call with  m_page.nameofthefunctionneeded(xx)
--also, modules used:
-- βλ. κωδικούς γλωσσών [[Module:lang]] -- get language codes and keywords
-- βλ. Τοπωνύμια: [[Module:topos/functions]]	-- handles keywords of placenames

-- DATAONLYMODULES needed
local languages = mw.loadData("Module:Languages") -- all language keywords are in here
	-- call with languages[language_iso].somekeyword (first, need to make language_iso)
local cat_languages = mw.loadData("Module:Languages/cat") -- gives the iso for [[Module:Languages]]
	-- call with cat_languages.lang[page_text] with page_text, to match ALL title
local data = mw.loadData("Module:auto cat/data") 
	-- call with data.level_1[cat_title]
	-- call with data.level_1bylang[cat_title]
	-- call with data.label[cat_title].somekeyword or data.label[cat_title]['somekeyword']
local topics = mw.loadData("Module:auto cat/data/topics") -- corresponds to [[Module:labels/data]] only at Θεματικές section
	-- call with topics.label[cat_title].somekeyowrd or topics.label[cat_title]['somekeyword']
local topos = mw.loadData("Module:topos/kind")		-- all placename keywords are in here
	-- call with topos[toposid].somekeyword (first, need to make toposid)
local toposkind = mw.loadData("Module:auto cat/data/toposkind")	-- repetition of all placename keywords
	-- call with toposkind.label[cat_title].somekeyword
	-- I need it only to get the key for m_topos
local style = mw.loadData("Module:auto cat/data/style") -- labels for style found in [[Module:labels/data]]
	-- call with style.label[cat_title].somekeyword or style.label[cat_title]['somekeyword']

-- parameters ========================
	local page_text = m_page.pagetext(xx)	-- Title + (textparenthesis) if there is one
	local cat_title = m_page.pagetitle(xx)	-- Title WITHOUT (textinparenthesis)
	local cat_parenthesis = m_page.pageparenthesis(xx)	-- (textinparenthesis)
	local cat_lang = ''	-- textofparenthesis without brackets = the language name in the category titles
	local lang_name = ''
	local lang_cat = ''
	local lang_key = ''
	
-- Exception: See Etymology
	local lang_apota = ''	-- donor language as 'apota' in [[Module:Languages]], it gets lang_iso2 -- only for some categories - OK
	
	local apota_text = ''
	local apota_label = ''
	local length = ''
-- βλ. Προσφύματα: -- local sort, alt, show_other, other_link, other_cat, other_category
-- βλ. Τοπωνύμια: toposid, whereid

								
-- =========================== MAIN FUNCTION  =========================== --

function export.main(frame)
	local args = frame:getParent().args	-- only for Templates -- [[Template:auto cat]]
--	local args = frame.args			-- only for direct invoke
	local text = ''				-- the sequence of Categories, see output
	local text_plus = ''			-- extra text. see output
	local cat = ''				-- the categorizations at bottom of page, see output


--------------------------------------------------------------------------
--             for a) without language and b) with language             --
--------------------------------------------------------------------------

-- MODE a = without language
	if cat_parenthesis == '' or cat_parenthesis == nil then
		cat_lang = ''
		-- iso1 is not needed here, there is no language-specific category
		lang_iso2 = args['iso2'] or '' -- in case editor needs to fill parameter for a donor language
		lang_name = '' 
		lang_cat = ''
		lang_key = ''
		lang_apota = ''
		
		if lang_iso ~= '' and lang_iso ~= nil then
			lang_name = languages[lang_iso].name
			lang_cat = languages[lang_iso].cat
		else
			lang_cat = ''
		end
		if lang_iso2 ~= '' and lang_iso2 ~= nil then
			lang_apota = languages[lang_iso2].apota
		else
			lang_apota = ''
		end
-- MODE b WITH language in the parenthesis
	else
		cat_lang = m_page.pagelang(xx)

	   	lang_iso = args['iso'] or '' -- in case editor needs to fill parameter
			-- get the iso from cat_lang (which is [[Module:Languages]] the 'name'  see [[Module:lang]])
			if cat_lang ~= '' and cat_lang ~= nil then
				lang_iso = require("Module:lang").langname_to_langiso(cat_lang) -- DO NOT USE the function name_to_iso, it will not work here
			end
	   	lang_iso2 = args['iso2'] or '' -- in case editor needs to fill parameter
		lang_name = languages[lang_iso].name -- = in the parenthesis cat_lang
		lang_cat = languages[lang_iso].cat
		lang_key = languages[lang_iso].key

		lang_apota = ''
		if lang_iso2 ~= '' and lang_iso2 ~= nil then
			lang_apota = languages[lang_iso2].apota
		else
			lang_apota = ''
		end
		lang_specific = args['γλ'] or args['lang'] or ''	-- applied at: GENERAL DATA
		
	-- PREPARED texts with language
		-- [[:Κατηγορία:Ετυμολογία (ελληνιστική κοινή)]] -- [[:Κατηγορία:Δάνεια από τα λατινικά (ελληνιστική κοινή)]]
		if languages[lang_iso].sublang == true then
			text_lang = '[[:Κατηγορία:Κατάλογος γλωσσών|Γλώσσα]]: ' 
			.. '[[:Κατηγορία:' .. languages[lang_iso].host .. '|<b>' .. languages[lang_iso].host_show .. '</b>]] - [[:Κατηγορία:' 
			.. lang_cat .. '|' .. lang_cat .. ']]'
		else
			text_lang = '[[:Κατηγορία:Κατάλογος γλωσσών|Γλώσσα]]: ' 
			.. '[[:Κατηγορία:' .. lang_cat .. '|<b>' .. mw.getContentLanguage():ucfirst(lang_name) .. '</b>]]'
		end		
		textit_lang = ' » [[:Κατηγορία:' .. cat_title .. ' (' ..	lang_name .. ')|' .. cat_title .. ']]'
	-- for placenames: Does is create problems??
--		text_topos_lang = text_lang .. ' » [[:Κατηγορία:Θεματικές ορολογίες (' .. lang_name .. ')|Θεματικές ορολογίες]]' 
--		.. ' » [[:Κατηγορία:Ονομασίες (' .. lang_name .. ')|Ονομασίες]] » [[:Κατηγορία:Τοπωνύμια (' .. lang_name ..  ')|Τοπωνύμια]]'
		
	end
	
-- DO NOT MOVE up this section
	-- PREPARED  texts without language (mode a)
-- level 0, general
	textit = ' » [[:Κατηγορία:' .. cat_title .. '|' .. cat_title .. ']]'
	text_wikt = '[[:Κατηγορία:Βικιλεξικό|<b>Κατηγορίες</b>]]'
-- etymology derived
	descr_der = 'Η προέλευση των λέξων από γλώσσα σε γλώσσα έως την απώτατη αρχή τους με κάθε είδος ετυμολογικής σχέσης.'
-- topos for placenames - Does it create problems??
--	text_topos = text_wikt .. ' » [[:Κατηγορία:Θεματικές ορολογίες|Θεματικές ορολογίες]]' 
--	.. ' » [[:Κατηγορία:Ονομασίες|Ονομασίες]] » [[:Κατηγορία:Τοπωνύμια ανά είδος|Τοπωνύμια]]' 

--------------------------------------------------------------------------
--                       Κατηγορίες γλωσσών                            --
--        Languages Categories, as in [[Module:Languages/cat]]         --
--------------------------------------------------------------------------
	if cat_languages.lang[page_text] then
		-- PROBLEM dash παύλα [[:Κατηγορία:Σερβική γλώσσα - λατινικό αλφάβητο]] (no problem without dash)
		if page_text == 'Σερβική γλώσσα - λατινικό αλφάβητο' then language_iso = 'sr-la'
		elseif page_text == 'Λήμματα απλοποιημένης γραφής (κινεζικά)' then language_iso = 'zh2'
		else language_iso = cat_languages.lang[page_text].iso
		end
		if languages[language_iso].sublang == true then 
			-- [[:Κατηγορία:Αρχαία ελληνικά]] -- [[:Κατηγορία:Ελληνιστική κοινή]]
			text = '[[:Κατηγορία:Κατάλογος γλωσσών|Γλώσσα]]: ' 
			.. '[[:Κατηγορία:' .. languages[language_iso].host .. '|<b>' 
			.. languages[language_iso].host_show .. '</b>]] - [[:Κατηγορία:' 
			.. languages[language_iso].cat .. '|'
			.. mw.getContentLanguage():ucfirst(languages[language_iso].name) .. ']]'
			.. ' »  <i>επιλέξτε είδος κατηγορίας</i>'
			cat = '[[Κατηγορία:' .. languages[language_iso].host .. "|']]" ..  "\n"
			.. '[[Κατηγορία:Κατάλογος γλωσσών]]' ..  "\n" -- [[:Κατηγορία:Ποντιακά]] και αλφαβητικά στο Π
		else
			text = '[[:Κατηγορία:Κατάλογος γλωσσών|Γλώσσα]]: ' 
			.. '[[:Κατηγορία:' .. languages[language_iso].cat .. '|<b>' 
			.. mw.getContentLanguage():ucfirst(languages[language_iso].name) .. '</b>]]'
			.. ' »  <i>επιλέξτε είδος κατηγορίας</i>'
			cat = '[[Κατηγορία:Κατάλογος γλωσσών|' .. languages[language_iso].key .. ']]' ..  "\n"
			
		end
	else
		 -- do not spoil all other page titles e.g. [[:Κατηγορία:Ουσιαστικά]]
	end
	
-- ============== language specific - ειδικά για συγκεκριμένες γλώσσες ============== --
if page_text == 'Ελληνιστική σημασία για αρχαίες λέξεις' then
			text = '[[:Κατηγορία:Κατάλογος γλωσσών|Γλώσσα]]: ' 
			.. '[[:Κατηγορία:Αρχαία ελληνικά|<b>Αρχαία ελληνικά</b>]] - [[:Κατηγορία:Ελληνιστική κοινή|Ελληνιστική κοινή]]'
			.. ' »  σημασίες για αρχαίες λέξεις'
			cat = '[[Κατηγορία:Ελληνιστική κοινή| ]]' ..  "\n"
			end
if page_text == 'Ουσιαστικά 2ης κλίσης αττικόκλιτα (αρχαία ελληνικά)' then
			text = '[[:Κατηγορία:Κατάλογος γλωσσών|Γλώσσα]]: ' 
			.. '[[:Κατηγορία:Αρχαία ελληνικά|<b>Αρχαία ελληνικά</b>]] » [[:Κατηγορία:Γραμματικές κατηγορίες (αρχαία ελληνικά)|Γραμματικές κατηγορίες]]'
			.. ' » [[:Κατηγορία:Ουσιαστικά (αρχαία ελληνικά)|Ουσιαστικά]] » [[:Κατηγορία:Ουσιαστικά κατά την κλίση (αρχαία ελληνικά)|κατά την κλίση]]'
			.. ' » [[:Κατηγορία:Ουσιαστικά 2ης κλίσης (αρχαία ελληνικά)|2ης κλίσης]] » <b>αττικόκλιτα</b>'
			cat = '[[Κατηγορία:Ουσιαστικά 2ης κλίσης (αρχαία ελληνικά)| ]]'
end
if page_text == 'Ουσιαστικά 2ης κλίσης αρσενικά αττικόκλιτα (αρχαία ελληνικά)' then
			text = '[[:Κατηγορία:Κατάλογος γλωσσών|Γλώσσα]]: ' 
			.. '[[:Κατηγορία:Αρχαία ελληνικά|<b>Αρχαία ελληνικά</b>]] » [[:Κατηγορία:Γραμματικές κατηγορίες (αρχαία ελληνικά)|Γραμματικές κατηγορίες]]'
			.. ' » [[:Κατηγορία:Ουσιαστικά (αρχαία ελληνικά)|Ουσιαστικά]] » [[:Κατηγορία:Ουσιαστικά κατά την κλίση (αρχαία ελληνικά)|κατά την κλίση]]'
			.. ' » [[:Κατηγορία:Ουσιαστικά 2ης κλίσης (αρχαία ελληνικά)|2ης κλίσης]] » [[:Κατηγορία:Ουσιαστικά 2ης κλίσης αρσενικά (αρχαία ελληνικά)|αρσενικά]] » <b>αττικόκλιτα</b>'
			.. ' « [[:Κατηγορία:Ουσιαστικά κατά το γένος (αρχαία ελληνικά)|Ουσιαστικά κατά το γένος]]'
			cat = '[[Κατηγορία:Ουσιαστικά 2ης κλίσης αρσενικά (αρχαία ελληνικά)| ]]'
end
if page_text == 'Ουσιαστικά 2ης κλίσης θηλυκά αττικόκλιτα (αρχαία ελληνικά)' then
			text = '[[:Κατηγορία:Κατάλογος γλωσσών|Γλώσσα]]: ' 
			.. '[[:Κατηγορία:Αρχαία ελληνικά|<b>Αρχαία ελληνικά</b>]] » [[:Κατηγορία:Γραμματικές κατηγορίες (αρχαία ελληνικά)|Γραμματικές κατηγορίες]]'
			.. ' » [[:Κατηγορία:Ουσιαστικά (αρχαία ελληνικά)|Ουσιαστικά]] » [[:Κατηγορία:Ουσιαστικά κατά την κλίση (αρχαία ελληνικά)|κατά την κλίση]]'
			.. ' » [[:Κατηγορία:Ουσιαστικά 2ης κλίσης (αρχαία ελληνικά)|2ης κλίσης]] » [[:Κατηγορία:Ουσιαστικά 2ης κλίσης θηλυκά (αρχαία ελληνικά)|θηλυκά]] » <b>αττικόκλιτα</b>'
			.. ' « [[:Κατηγορία:Ουσιαστικά κατά το γένος (αρχαία ελληνικά)|Ουσιαστικά κατά το γένος]]'
			cat = '[[Κατηγορία:Ουσιαστικά 2ης κλίσης θηλυκά (αρχαία ελληνικά)| ]]'
end
if page_text == 'Ουσιαστικά 2ης κλίσης ουδέτερα αττικόκλιτα (αρχαία ελληνικά)' then
			text = '[[:Κατηγορία:Κατάλογος γλωσσών|Γλώσσα]]: ' 
			.. '[[:Κατηγορία:Αρχαία ελληνικά|<b>Αρχαία ελληνικά</b>]] » [[:Κατηγορία:Γραμματικές κατηγορίες (αρχαία ελληνικά)|Γραμματικές κατηγορίες]]'
			.. ' » [[:Κατηγορία:Ουσιαστικά (αρχαία ελληνικά)|Ουσιαστικά]] » [[:Κατηγορία:Ουσιαστικά κατά την κλίση (αρχαία ελληνικά)|κατά την κλίση]]'
			.. ' » [[:Κατηγορία:Ουσιαστικά 2ης κλίσης (αρχαία ελληνικά)|2ης κλίσης]] » [[:Κατηγορία:Ουσιαστικά 2ης κλίσης ουδέτερα (αρχαία ελληνικά)|ουδέτερα]] » <b>αττικόκλιτα</b>'
			.. ' « [[:Κατηγορία:Ουσιαστικά κατά το γένος (αρχαία ελληνικά)|Ουσιαστικά κατά το γένος]]'
			cat = '[[Κατηγορία:Ουσιαστικά 2ης κλίσης ουδέτερα (αρχαία ελληνικά)| ]]'
			end

--------------------------------------------------------------------------
--                         LEVEL 1                             --
-- as in [[Module:auto cat/data]] level_1
--------------------------------------------------------------------------

-- level_1 simple =========================
-- a1 όλες όσες υπάγονται ΑΠΕΥΘΕΙΑΣ στο Βικιλεξικό, e.g. [[:Κατηγορία:Γραμματικές κατηγορίες]], [[:Κατηγορία:Ετυμολογία]]
	if data.level_1[cat_title] then
		if cat_parenthesis == '' or cat_parenthesis == nil then
			text = text_wikt .. textit
			
			cat = '[[Κατηγορία:Βικιλεξικό|' .. data.level_1[cat_title]['key'] .. ']]'
		else
-- b1 που υπάγονται ΑΠΕΥΘΕΙΑΣ στη γλώσσα τους e.g. [[:Κατηγορία:Γραμματικές κατηγορίες (αγγλικά)]]
			text = text_lang .. textit_lang .. ' [[:Κατηγορία:' ..cat_title .. '|«««]]'
		
			-- cat
			if languages[lang_iso].sublang == true then
				cat = cat .. '[[Κατηγορία:' .. cat_title .. ' (' .. languages[lang_iso].host_name .. ')|' .. languages[lang_iso].host_key .. ']]' ..  "\n"
				-- special top sortings: [[:Κατηγορία:Γραμματικές κατηγορίες (νεολατινικά)]]
				if cat_title == 'Γραμματικές κατηγορίες' or cat_title == 'Ετυμολογία' 
				or mw.ustring.find(cat_title, 'Πρότυπα') then
					cat = cat .. '[[Κατηγορία:' .. lang_cat .. '| ' .. data.level_1[cat_title]['key'] .. ']]' ..  "\n" -- sort top
				else
					cat = cat.. '[[Κατηγορία:' .. lang_cat .. '|' .. data.level_1[cat_title]['key'] .. ']]' ..  "\n" -- the rest are sorted by letter
				end

			else
				cat = '[[Κατηγορία:' .. cat_title .. '|' .. lang_key .. ']]' ..  "\n" -- DO I have to use than \n?????????			
				-- special top sortings:
				if cat_title == 'Γραμματικές κατηγορίες' or cat_title == 'Ετυμολογία' 
				or mw.ustring.find(cat_title, 'Πρότυπα') then
					cat = cat .. '[[Κατηγορία:' .. lang_cat .. '| ' .. data.level_1[cat_title]['key'] .. ']]' ..  "\n" -- sort top
				else
					cat = cat .. '[[Κατηγορία:' .. lang_cat .. '|' .. data.level_1[cat_title]['key'] .. ']]' ..  "\n" -- the rest are sorted by letter
				end
			end -- close sublang
		end -- close cat_parenthesis
	end -- close level_1
	
	
-- level_1bylang = ανά γλώσσα ============================= -- cf. και ΕΤΥΜΟΛΟΓΙΑ+apotin+ ρίζα, apota+ρίζες ανά γλώσσα
-- a1 specials:  + ανά γλώσσα by language -- [[:Κατηγορία:Θεματικές ορολογίες]] [[:Κατηγορία:Υφολογικές κατηγορίες]]  [[:Κατηγορία:Πρότυπα βιβλιογραφίας]]
	if data.level_1bylang[cat_title] then
		if cat_parenthesis == '' or cat_parenthesis == nil then
			text = text_wikt .. textit
			.. ' » [[:Κατηγορία:' .. cat_title .. ' ανά γλώσσα|' .. cat_title .. ' ανά γλώσσα]]'
			cat = '[[Κατηγορία:Βικιλεξικό|' .. data.level_1bylang[cat_title]['key'] .. ']]' ..  "\n"
		else
-- b1 specials -- [[:Κατηγορία:Θεματικές ορολογίες (τζαμαϊκανά κρεολικά)]]
			text = text_lang .. textit_lang .. ' [[:Κατηγορία:' ..cat_title .. ' ανά γλώσσα|«««]]'
			cat = '[[Κατηγορία:' .. cat_title .. ' ανά γλώσσα|' .. lang_key .. ']]' ..  "\n"
			if languages[lang_iso].sublang == true then
				cat = cat .. '[[Κατηγορία:' .. cat_title .. ' (' .. languages[lang_iso].host_name .. ')|' .. languages[lang_iso].host_key .. ']]' ..  "\n"
				-- special sortings:
				if cat_title == 'Θεματικές ορολογίες' or cat_title == 'Υφολογικές κατηγορίες' 
				or cat_title == 'Πρότυπα'
				then
					cat = cat .. '[[Κατηγορία:' .. lang_cat .. '| ' .. data.level_1bylang[cat_title]['key'] .. ']]' ..  "\n" -- sort top
				else
					cat = cat.. '[[Κατηγορία:' .. lang_cat .. '|' .. data.level_1bylang[cat_title]['key'] .. ']]' ..  "\n" -- the rest are sorted by letter
				end
			else
			
				if cat_title == 'Θεματικές ορολογίες' or cat_title == 'Υφολογικές κατηγορίες' 
				or cat_title == 'Πρότυπα'
				then
					cat = cat .. '[[Κατηγορία:' .. lang_cat .. '| ' .. data.level_1bylang[cat_title]['key'] .. ']]' ..  "\n" -- sort top
				else
					cat = cat .. '[[Κατηγορία:' .. lang_cat .. '|' .. data.level_1bylang[cat_title]['key'] .. ']]' ..  "\n" -- sort normal
				end
			end -- close sublang
		end -- close cat_parenthesis
	end -- close level_1bylang

-- a1 Τίτλος: ανά γλώσσα. This occurs only in mode a -- [[:Κατηγορία:Θεματικές ορολογίες ανά γλώσσα]] for level_1bylang, the second phrase:
	
	if mw.ustring.find(cat_title, 'ανά γλώσσα') and not mw.ustring.find(cat_title, 'ρίζες') then
		cat_title = mw.ustring.sub(mw.ustring.match(cat_title, cat_title), 1, -12) -- take off 'ανά γλώσσα'
		text = text_wikt .. ' » [[:Κατηγορία:' .. cat_title .. '|' .. cat_title .. ']]'
		.. ' » [[:Κατηγορία:' .. cat_title .. ' ανά γλώσσα|' .. cat_title .. ' ανά γλώσσα]]'
		cat = '[[Κατηγορία:' .. cat_title .. '| ]]' .. "\n" -- sort top
		.. '[[Κατηγορία:Βικιλεξικό|' .. cat_title .. '|' .. data.level_1bylang[cat_title]['key'] .. ']]' .. "\n"
	end
	
	-- [[:Κατηγορία:Πρότυπα για τομείς γλωσσών]]
	if mw.ustring.find(cat_title, 'για τομείς γλωσσών') then
		cat_title = mw.ustring.sub(mw.ustring.match(cat_title, cat_title), 1, -20) -- take off 'για τομείς γλωσσών'
		text = text_wikt .. ' » [[:Κατηγορία:' .. cat_title .. '|' .. cat_title .. ']]'
		.. ' » [[:Κατηγορία:' .. cat_title .. ' για τομείς γλωσσών|' .. cat_title .. ' ανά γλώσσα]]'
		cat = '[[Κατηγορία:' .. cat_title .. '| ]]' .. "\n" -- sort top
		.. '[[Κατηγορία:Βικιλεξικό|' .. cat_title .. '|' .. data.level_1bylang[cat_title]['key'] .. ']]' .. "\n"
	end

--------------------------------------------------------------------------
--                      general DATA LABEL                              --
-- at [[Module:auto cat/data]] -- always call them with data.label
--------------------------------------------------------------------------

--  e.g. [[:Κατηγορία:Ανορθογραφίες]] [[:Κατηγορία:Δανεισμοί]]
	if data.label[cat_title] then

-- a mode, no (language)
		if cat_parenthesis == '' or cat_parenthesis == nil then
			text = text_wikt
			if data.label[cat_title]['parent6'] ~= '' and data.label[cat_title]['parent6'] ~= nil then
				text = text .. ' » [[:Κατηγορία:' .. data.label[cat_title]['parent6'] .. '|' .. data.label[cat_title]['parent6'] .. ']]'
			end	
			if data.label[cat_title]['parent5'] ~= '' and data.label[cat_title]['parent5'] ~= nil then
				text = text .. ' » [[:Κατηγορία:' .. data.label[cat_title]['parent5'] .. '|' .. data.label[cat_title]['parent5'] .. ']]'
			end	
			if data.label[cat_title]['parent4'] ~= '' and data.label[cat_title]['parent4'] ~= nil then
				if data.label[cat_title]['parent4_show'] ~= '' and data.label[cat_title]['parent4_show'] ~= nil then
				text = text .. ' » [[:Κατηγορία:' .. data.label[cat_title]['parent4'] .. '|' .. data.label[cat_title]['parent4_show'] .. ']]'
				else
				text = text .. ' » [[:Κατηγορία:' .. data.label[cat_title]['parent4'] .. '|' .. data.label[cat_title]['parent4'] .. ']]'
				end
			end	
			if data.label[cat_title]['parent3'] ~= '' and data.label[cat_title]['parent3'] ~= nil then
				if data.label[cat_title]['parent3_show'] ~= '' and data.label[cat_title]['parent3_show'] ~= nil then
				text = text .. ' » [[:Κατηγορία:' .. data.label[cat_title]['parent3'] .. '|' .. data.label[cat_title]['parent3_show'] .. ']]'
				else
				text = text .. ' » [[:Κατηγορία:' .. data.label[cat_title]['parent3'] .. '|' .. data.label[cat_title]['parent3'] .. ']]'
				end
			end
			if data.label[cat_title]['parent2'] ~= '' and data.label[cat_title]['parent2'] ~= nil then
				if data.label[cat_title]['parent2_show'] ~= '' and data.label[cat_title]['parent2_show'] ~= nil then
				text = text .. ' » [[:Κατηγορία:' .. data.label[cat_title]['parent2'] .. '|' .. data.label[cat_title]['parent2_show'] .. ']]'
				else
				text = text .. ' » [[:Κατηγορία:' .. data.label[cat_title]['parent2'] .. '|' .. data.label[cat_title]['parent2'] .. ']]'
				end
			end
		-- they all have parent: [[:Κατηγορία:Δάνεια - ονόματα]]
			if data.label[cat_title]['parent'] ~= '' and data.label[cat_title]['parent'] ~= nil then
				if data.label[cat_title]['parent_show'] ~= '' and data.label[cat_title]['parent_show'] ~= nil then
				text = text .. ' » [[:Κατηγορία:' .. data.label[cat_title]['parent'] .. '|' .. data.label[cat_title]['parent_show'] .. ']]'
				else
				text = text .. ' » [[:Κατηγορία:' .. data.label[cat_title]['parent'] .. '|' .. data.label[cat_title]['parent'] .. ']]'
				end
			end
			if data.label[cat_title]['show'] ~= '' and data.label[cat_title]['show'] ~= nil then
				text =  text .. ' » [[:Κατηγορία:' .. cat_title .. '|' .. data.label[cat_title]['show'] .. ']]'
			else
				text = text .. textit
			end
			-- extra0 ONLY in text, not at categories
			if data.label[cat_title]['extra0'] ~= '' and data.label[cat_title]['extra0'] ~= nil then
				if data.label[cat_title]['extra0_show'] ~= '' and data.label[cat_title]['extra0_show'] ~= nil then
				text = text .. ' « [[:Κατηγορία:' .. data.label[cat_title]['extra0'] .. '|' .. data.label[cat_title]['extra0_show'] .. ']]'
				else
				text = text .. ' « [[:Κατηγορία:' .. data.label[cat_title]['extra0'] .. '|' .. data.label[cat_title]['extra0'] .. ']]'
				end
			end	
			if data.label[cat_title]['extra1'] ~= '' and data.label[cat_title]['extra1'] ~= nil then
				if data.label[cat_title]['extra1_show'] ~= '' and data.label[cat_title]['extra1_show'] ~= nil then
				text = text .. ' « [[:Κατηγορία:' .. data.label[cat_title]['extra1'] .. '|' .. data.label[cat_title]['extra1_show'] .. ']]'
				else
				text = text .. ' « [[:Κατηγορία:' .. data.label[cat_title]['extra1'] .. '|' .. data.label[cat_title]['extra1'] .. ']]' -- [[:Κατηγορία:Αμάρτυροι τύποι]]
				end
			end
			-- descr -- [[:Κατηγορία:Λέξεις με άγνωστη ετυμολογία]]
			if data.label[cat_title]['descr'] ~= '' and data.label[cat_title]['descr'] ~= nil then
				text_plus = '<dl><dd>' .. data.label[cat_title]['descr'] .. '</dd></dl>'
			end
--			if cat_title == 'Δανεισμοί' then
--				text_plus =  "\n" .. frame:expandTemplate{ title = 'δείτε', args = {':Κατηγορία:Προέλευση λέξεων'} } .. "\n"
--			end
--			if cat_title == 'Προέλευση λέξεων' then
--				text_plus =  "\n" .. frame:expandTemplate{ title = 'δείτε', args = {':Κατηγορία:Δανεισμοί'} } .. "\n"
--				.. descr_der
--			end
			
			-- cat a -- MUST have parent		
			cat = '[[Κατηγορία:' .. data.label[cat_title]['parent'] .. '| ' .. data.label[cat_title]['key'] .. ']]' ..  "\n" -- sort top
			if data.label[cat_title]['extra1'] ~= '' and data.label[cat_title]['extra1'] ~= nil then
				cat = cat .. '[[Κατηγορία:' .. data.label[cat_title]['extra1'] .. '| ' .. data.label[cat_title]['key'] .. ']]' ..  "\n" -- sort top
			end
			if data.label[cat_title]['extra2'] ~= '' and data.label[cat_title]['extra2'] ~= nil then
				cat = cat .. '[[Κατηγορία:' .. data.label[cat_title]['extra2'] .. '| ' .. data.label[cat_title]['key'] .. ']]' ..  "\n" -- sort top
			end
			if data.label[cat_title]['extra3'] ~= '' and data.label[cat_title]['extra3'] ~= nil then
				cat = cat .. '[[Κατηγορία:' .. data.label[cat_title]['extra3'] .. '| ' .. data.label[cat_title]['key'] .. ']]' ..  "\n" -- sort top
			end
			
		else
-- b mode e.g. [[:Κατηγορία:Ανορθογραφίες (νέα ελληνικά)]]  -- [[:Κατηγορία:Αμάρτυροι τύποι (αρχαία ελληνικά)]]
			text = text_lang
			if data.label[cat_title]['parent6'] ~= '' and data.label[cat_title]['parent6'] ~= nil then
				text = text .. ' » [[:Κατηγορία:' .. data.label[cat_title]['parent6'] .. ' (' .. lang_name .. ')|' .. data.label[cat_title]['parent6'] .. ']]'
			end	
			if data.label[cat_title]['parent5'] ~= '' and data.label[cat_title]['parent5'] ~= nil then
				text = text .. ' » [[:Κατηγορία:' .. data.label[cat_title]['parent5'] .. ' (' .. lang_name .. ')|' .. data.label[cat_title]['parent5'] .. ']]'
			end
			if data.label[cat_title]['parent4'] ~= '' and data.label[cat_title]['parent4'] ~= nil then
				if data.label[cat_title]['parent4_show'] ~= '' and data.label[cat_title]['parent4_show'] ~= nil then
				text = text .. ' » [[:Κατηγορία:' .. data.label[cat_title]['parent4'] .. ' (' .. lang_name .. ')|' .. data.label[cat_title]['parent4_show'] .. ']]'
				else
				text = text .. ' » [[:Κατηγορία:' .. data.label[cat_title]['parent4'] .. ' (' .. lang_name .. ')|' .. data.label[cat_title]['parent4'] .. ']]'
				end
			end	
			if data.label[cat_title]['parent3'] ~= '' and data.label[cat_title]['parent3'] ~= nil then
				if data.label[cat_title]['parent3_show'] ~= '' and data.label[cat_title]['parent3_show'] ~= nil then
				text = text .. ' » [[:Κατηγορία:' .. data.label[cat_title]['parent3'] .. ' (' .. lang_name .. ')|' .. data.label[cat_title]['parent3_show'] .. ']]'
				else
				text = text .. ' » [[:Κατηγορία:' .. data.label[cat_title]['parent3'] .. ' (' .. lang_name .. ')|' .. data.label[cat_title]['parent3'] .. ']]'
				end
			end	
			if data.label[cat_title]['parent2'] ~= '' and data.label[cat_title]['parent2'] ~= nil then
				if data.label[cat_title]['parent2_show'] ~= '' and data.label[cat_title]['parent2_show'] ~= nil then
				text = text .. ' » [[:Κατηγορία:' .. data.label[cat_title]['parent2'] .. ' (' .. lang_name .. ')|' .. data.label[cat_title]['parent2_show'] .. ']]'
				else
				text = text .. ' » [[:Κατηγορία:' .. data.label[cat_title]['parent2'] .. ' (' .. lang_name .. ')|' .. data.label[cat_title]['parent2'] .. ']]'
				end
			end	
			-- they all have parent [[:Κατηγορία:Δάνεια - ονόματα (αρχαία ελληνικά)]], except if -
			if data.label[cat_title]['parent'] ~= '' and data.label[cat_title]['parent'] ~= nil and data.label[cat_title]['parent'] ~= '-' then
				if data.label[cat_title]['parent_show'] ~= '' and data.label[cat_title]['parent_show'] ~= nil then
				text = text .. ' » [[:Κατηγορία:' .. data.label[cat_title]['parent'] .. ' (' .. lang_name .. ')|' .. data.label[cat_title]['parent_show'] .. ']]'
				else
				text = text .. ' » [[:Κατηγορία:' .. data.label[cat_title]['parent'] .. ' (' .. lang_name .. ')|' .. data.label[cat_title]['parent'] .. ']]'
				end
--!!!			-- except language specifics e.g. [[:Κατηγορία:Δημοτική (νέα ελληνικά)]] - parent: [[:Κατηγορία:Ποικιλίες της νεοελληνικής γλώσσας]] PARENT = el
			elseif data.label[cat_title]['parent'] == '-' then
				text = text 
			end
			if data.label[cat_title]['show'] ~= '' and data.label[cat_title]['show'] ~= nil then
				text = text .. ' » [[:Κατηγορία:' .. cat_title .. ' (' .. lang_name .. ')|' .. data.label[cat_title]['show'] .. ']]'
			else
				text =  text .. textit_lang
			end
			-- link ONLY to this language with param |γλ=1 |lang=1
			if lang_specific ~= '' and lang_specific ~= nil then
				text = text
			else
				text = text .. ' [[:Κατηγορία:' .. cat_title .. '|«««]]'
			end
			-- extra0 ONLY in text, not at categories
			if data.label[cat_title]['extra0'] ~= '' and data.label[cat_title]['extra0'] ~= nil then
				if data.label[cat_title]['extra0_show'] ~= '' and data.label[cat_title]['extra0_show'] ~= nil then
				text = text .. ' « [[:Κατηγορία:' .. data.label[cat_title]['extra0'] .. ' (' .. lang_name .. ')|' .. data.label[cat_title]['extra0_show'] .. ']]'
				else -- [[:Κατηγορία:Αμάρτυροι τύποι (αρχαία ελληνικά)]]
				text = text .. ' « [[:Κατηγορία:' .. data.label[cat_title]['extra0'] .. ' (' .. lang_name .. ')|' .. data.label[cat_title]['extra0'] .. ']]'
				end
			end		
			if data.label[cat_title]['extra1'] ~= '' and data.label[cat_title]['extra1'] ~= nil then
				if data.label[cat_title]['extra1_show'] ~= '' and data.label[cat_title]['extra1_show'] ~= nil then
				text = text .. ' « [[:Κατηγορία:' .. data.label[cat_title]['extra1'] .. ' (' .. lang_name .. ')|' .. data.label[cat_title]['extra1_show'] .. ']]'
				else -- [[:Κατηγορία:Αμάρτυροι τύποι (αρχαία ελληνικά)]]
				text = text .. ' « [[:Κατηγορία:' .. data.label[cat_title]['extra1'] .. ' (' .. lang_name .. ')|' .. data.label[cat_title]['extra1'] .. ']]'
				end
			end	
			-- descr -- [[:Κατηγορία:Λέξεις με άγνωστη ετυμολογία (νέα ελληνικά)]]
			if data.label[cat_title]['descr'] ~= '' and data.label[cat_title]['descr'] ~= nil then
				text_plus = '<dl><dd>' .. data.label[cat_title]['descr'] .. '</dd></dl>'
			end
--			if cat_title == 'Δανεισμοί' then
--				text_plus =  "\n" .. frame:expandTemplate{ title = 'δείτε', args = {':Κατηγορία:Προέλευση λέξεων (' .. lang_name .. ')'} } .. "\n"
--			end
--			if cat_title == 'Προέλευση λέξεων' then
--				text_plus =  "\n" .. frame:expandTemplate{ title = 'δείτε', args = {':Κατηγορία:Δανεισμοί (' .. lang_name .. ')'} } .. "\n"
--				.. descr_der
--			end
			
			-- cat b -- MUST have parent	 -- e.g. [[:Κατηγορία:Δανεισμοί (ελληνιστική κοινή)]]
			if languages[lang_iso].sublang == true then
				cat = '[[Κατηγορία:' .. cat_title .. ' (' .. languages[lang_iso].host_name .. ')|' .. languages[lang_iso].host_key .. ']]' ..  "\n"
				.. '[[Κατηγορία:' .. data.label[cat_title]['parent'] .. ' (' .. lang_name .. ')|' .. data.label[cat_title]['key'] .. ']]'
			else
--!!!			-- except language specifics e.g. [[:Κατηγορία:Δημοτική (νέα ελληνικά)]] - parent: [[:Κατηγορία:Ποικιλίες της νεοελληνικής γλώσσας]] PARENT = el
				if data.label[cat_title]['parent'] == '-' then
					cat = '[[Κατηγορία:' .. lang_cat .. '|' .. data.label[cat_title]['key'] .. ']]'
				elseif lang_specific ~= '' and lang_specific ~= nil and data.label[cat_title]['parent'] ~= '-'  then
					cat = '[[Κατηγορία:' .. data.label[cat_title]['parent'] .. ' (' .. lang_name .. ')|' .. data.label[cat_title]['key'] .. ']]'
				else
				cat = '[[Κατηγορία:' .. cat_title .. '|' .. lang_key .. ']]' ..  "\n"
				.. '[[Κατηγορία:' .. data.label[cat_title]['parent'] .. ' (' .. lang_name .. ')|' .. data.label[cat_title]['key'] .. ']]'
				end
			end -- close hosted languages

			if data.label[cat_title]['extra1'] ~= '' and data.label[cat_title]['extra1'] ~= nil then
				cat = cat .. '[[Κατηγορία:' .. data.label[cat_title]['extra1'] .. ' (' .. lang_name .. ')|' .. data.label[cat_title]['key'] .. ']]' ..  "\n"
			end
			if data.label[cat_title]['extra2'] ~= '' and data.label[cat_title]['extra2'] ~= nil then
				cat = cat .. '[[Κατηγορία:' .. data.label[cat_title]['extra2'] .. ' (' .. lang_name .. ')|' .. data.label[cat_title]['key'] .. ']]' ..  "\n"
			end	
			if data.label[cat_title]['extra3'] ~= '' and data.label[cat_title]['extra3'] ~= nil then
				cat = cat .. '[[Κατηγορία:' .. data.label[cat_title]['extra3'] .. ' (' .. lang_name .. ')|' .. data.label[cat_title]['key'] .. ']]' ..  "\n"
			end	
		end -- close cat_parenthesis
	end -- close level_2



--------------------------------------------------------------------------
--    ΘΕΜΑΤΙΚΗ ΟΡΟΛΟΓΙΑ εκτός τόπων - TOPICS LABEL  excpet placenames    --
-- at [[Module:auto cat/data/topics]] -- always call them with topics.label
-- correspond to [[Module:labels/data]]
--------------------------------------------------------------------------

--  e.g. [[:Category:HTML]] [[:Κατηγορία:Αεροπορικοί όροι]]
	if topics.label[cat_title] then

-- a mode, no (language)
		if cat_parenthesis == '' or cat_parenthesis == nil then
			text = text_wikt
			if topics.label[cat_title]['parent4'] ~= '' and topics.label[cat_title]['parent4'] ~= nil then
				text = text .. ' » [[:Κατηγορία:' .. topics.label[cat_title]['parent4'] .. '|' .. topics.label[cat_title]['parent4'] .. ']]'
			end	
			if topics.label[cat_title]['parent3'] ~= '' and topics.label[cat_title]['parent3'] ~= nil then
				text = text .. ' » [[:Κατηγορία:' .. topics.label[cat_title]['parent3'] .. '|' .. topics.label[cat_title]['parent3'] .. ']]'
			end
			if topics.label[cat_title]['parent2'] ~= '' and topics.label[cat_title]['parent2'] ~= nil then
				if topics.label[cat_title]['parent2_show'] ~= '' and topics.label[cat_title]['parent2_show'] ~= nil then
				text = text .. ' » [[:Κατηγορία:' .. topics.label[cat_title]['parent2'] .. '|' .. topics.label[cat_title]['parent2_show'] .. ']]'
				else
				text = text .. ' » [[:Κατηγορία:' .. topics.label[cat_title]['parent2'] .. '|' .. topics.label[cat_title]['parent2'] .. ']]'
				end
			end
	-- they all have parent
			if topics.label[cat_title]['parent'] ~= '' and topics.label[cat_title]['parent'] ~= nil then
				if topics.label[cat_title]['parent_show'] ~= '' and topics.label[cat_title]['parent_show'] ~= nil then
				text = text .. ' » [[:Κατηγορία:' .. topics.label[cat_title]['parent'] .. '|' .. topics.label[cat_title]['parent_show'] .. ']]'
				else
				text = text .. ' » [[:Κατηγορία:' .. topics.label[cat_title]['parent'] .. '|' .. topics.label[cat_title]['parent'] .. ']]'
				end
			end
			if topics.label[cat_title]['show'] ~= '' and topics.label[cat_title]['show'] ~= nil then
				text =  text .. ' » [[:Κατηγορία:' .. cat_title .. '|' .. topics.label[cat_title]['show'] .. ']]'
			else
				text = text .. textit
			end
			-- extra0 ONLY in text, not at categories e.g. [[:Κατηγορία:Υφάσματα]] & [[:Κατηγορία:Ενδυμασία]]
			if topics.label[cat_title]['extra0'] ~= '' and topics.label[cat_title]['extra0'] ~= nil then
				if topics.label[cat_title]['extra0_show'] ~= '' and topics.label[cat_title]['extra0_show'] ~= nil then
				text = text .. ' « [[:Κατηγορία:' .. topics.label[cat_title]['extra0'] .. '|' .. topics.label[cat_title]['extra0_show'] .. ']]'
				else
				text = text .. ' « [[:Κατηγορία:' .. topics.label[cat_title]['extra0'] .. '|' .. topics.label[cat_title]['extra0'] .. ']]'
				end
			end
			if topics.label[cat_title]['extra1'] ~= '' and topics.label[cat_title]['extra1'] ~= nil then
				if topics.label[cat_title]['extra1_show'] ~= '' and topics.label[cat_title]['extra1_show'] ~= nil then
				text = text .. ' « [[:Κατηγορία:' .. topics.label[cat_title]['extra1'] .. '|' .. topics.label[cat_title]['extra1_show'] .. ']]'
				else  -- [[:Κατηγορία:Αμάρτυροι τύποι]]
				text = text .. ' « [[:Κατηγορία:' .. topics.label[cat_title]['extra1'] .. '|' .. topics.label[cat_title]['extra1'] .. ']]'
				end
			end
			-- descr
			if topics.label[cat_title]['descr'] ~= '' and topics.label[cat_title]['descr'] ~= nil then
				text_plus = '<dl><dd>' .. topics.label[cat_title]['descr'] .. '</dd></dl>'
			end

			-- cat a	-- MUST have parent		
			cat = '[[Κατηγορία:' .. topics.label[cat_title]['parent'] .. '| ' .. topics.label[cat_title]['key'] .. ']]' ..  "\n" -- sort top
			if topics.label[cat_title]['extra1'] ~= '' and topics.label[cat_title]['extra1'] ~= nil then
				cat = cat .. '[[Κατηγορία:' .. topics.label[cat_title]['extra1'] .. '| ' .. topics.label[cat_title]['key'] .. ']]' ..  "\n" -- sort top
			end
			-- ALWAYS PUT AT [[:Κατηγορία:Θεματικές ορολογίες]] nomatter what
			cat = cat .. '[[Κατηγορία:Θεματικές ορολογίες|' .. topics.label[cat_title]['key'] .. ']]' ..  "\n" 
			if topics.label[cat_title]['extra2'] ~= '' and topics.label[cat_title]['extra2'] ~= nil then
				cat = cat .. '[[Κατηγορία:' .. topics.label[cat_title]['extra2'] .. '| ' .. topics.label[cat_title]['key'] .. ']]' ..  "\n" -- sort top
			end
			if topics.label[cat_title]['extra3'] ~= '' and topics.label[cat_title]['extra3'] ~= nil then
				cat = cat .. '[[Κατηγορία:' .. topics.label[cat_title]['extra3'] .. '| ' .. topics.label[cat_title]['key'] .. ']]' ..  "\n" -- sort top
			end
			
		else
-- b mode 
			text = text_lang
			if topics.label[cat_title]['parent4'] ~= '' and topics.label[cat_title]['parent4'] ~= nil then
				text = text .. ' » [[:Κατηγορία:' .. topics.label[cat_title]['parent4'] .. ' (' .. lang_name .. ')|' .. topics.label[cat_title]['parent4'] .. ']]'
			end	
			if topics.label[cat_title]['parent3'] ~= '' and topics.label[cat_title]['parent3'] ~= nil then
				text = text .. ' » [[:Κατηγορία:' .. topics.label[cat_title]['parent3'] .. ' (' .. lang_name .. ')|' .. topics.label[cat_title]['parent3'] .. ']]'
			end	
			if topics.label[cat_title]['parent2'] ~= '' and topics.label[cat_title]['parent2'] ~= nil then
				if topics.label[cat_title]['parent2_show'] ~= '' and topics.label[cat_title]['parent2_show'] ~= nil then
				text = text .. ' » [[:Κατηγορία:' .. topics.label[cat_title]['parent2'] .. ' (' .. lang_name .. ')|' .. topics.label[cat_title]['parent2_show'] .. ']]'
				else
				text = text .. ' » [[:Κατηγορία:' .. topics.label[cat_title]['parent2'] .. ' (' .. lang_name .. ')|' .. topics.label[cat_title]['parent2'] .. ']]'
				end
			end	
			
			if topics.label[cat_title]['parent'] ~= '' and topics.label[cat_title]['parent'] ~= nil then
				if topics.label[cat_title]['parent_show'] ~= '' and topics.label[cat_title]['parent_show'] ~= nil then
				text = text .. ' » [[:Κατηγορία:' .. topics.label[cat_title]['parent'] .. ' (' .. lang_name .. ')|' .. topics.label[cat_title]['parent_show'] .. ']]'
				else
				text = text .. ' » [[:Κατηγορία:' .. topics.label[cat_title]['parent'] .. ' (' .. lang_name .. ')|' .. topics.label[cat_title]['parent'] .. ']]'
				end
			end
			if topics.label[cat_title]['show'] ~= '' and topics.label[cat_title]['show'] ~= nil then
				text = text .. ' » [[:Κατηγορία:' .. cat_title .. ' (' .. lang_name .. ')|' .. topics.label[cat_title]['show'] .. ']]' .. ' [[:Κατηγορία:' .. cat_title .. '|«««]]'
			else
				text =  text .. textit_lang .. ' [[:Κατηγορία:' .. cat_title .. '|«««]]'
			end
			-- extra0 ONLY in text, not at categories e.g. [[:Κατηγορία:Υφάσματα (νέα ελληνικά)]] & [[:Κατηγορία:Ενδυμασία (νέα ελληνικά)]]
			if topics.label[cat_title]['extra0'] ~= '' and topics.label[cat_title]['extra0'] ~= nil then
				if topics.label[cat_title]['extra0_show'] ~= '' and topics.label[cat_title]['extra0_show'] ~= nil then
				text = text .. ' « [[:Κατηγορία:' .. topics.label[cat_title]['extra0'] .. ' (' .. lang_name .. ')|' .. topics.label[cat_title]['extra0_show'] .. ']]'
				else
				text = text .. ' « [[:Κατηγορία:' .. topics.label[cat_title]['extra0'] .. ' (' .. lang_name .. ')|' .. topics.label[cat_title]['extra0'] .. ']]'
				end
			end	
			if topics.label[cat_title]['extra1'] ~= '' and topics.label[cat_title]['extra1'] ~= nil then
				if topics.label[cat_title]['extra1_show'] ~= '' and topics.label[cat_title]['extra1_show'] ~= nil then
				text = text .. ' « [[:Κατηγορία:' .. topics.label[cat_title]['extra1'] .. ' (' .. lang_name .. ')|' .. topics.label[cat_title]['extra1_show'] .. ']]'
				else   -- [[:Κατηγορία:Αμάρτυροι τύποι (αρχαία ελληνικά)]]
				text = text .. ' « [[:Κατηγορία:' .. topics.label[cat_title]['extra1'] .. ' (' .. lang_name .. ')|' .. topics.label[cat_title]['extra1'] .. ']]'
				end
			end	
			-- descr
			if topics.label[cat_title]['descr'] ~= '' and topics.label[cat_title]['descr'] ~= nil then
				text_plus = '<dl><dd>' .. topics.label[cat_title]['descr'] .. '</dd></dl>'
			end

			-- cat b	-- MUST have parent
			if languages[lang_iso].sublang == true then
				cat = '[[Κατηγορία:' .. cat_title .. ' (' .. languages[lang_iso].host_name .. ')|' .. languages[lang_iso].host_key .. ']]' ..  "\n"
				.. '[[Κατηγορία:' .. topics.label[cat_title]['parent'] .. ' (' .. lang_name .. ')|' .. topics.label[cat_title]['key'] .. ']]' ..  "\n"
			else
				cat = '[[Κατηγορία:' .. cat_title .. '|' .. lang_key .. ']]' ..  "\n"
				.. '[[Κατηγορία:' .. topics.label[cat_title]['parent'] .. ' (' .. lang_name .. ')|' .. topics.label[cat_title]['key'] .. ']]' -- ??srt -- normal
			end -- close hosted languages
			-- ALWAYS PUT AT  Κατηγορία:Θεματικές ορολογίες (language) nomatter what
			cat = cat .. '[[Κατηγορία:Θεματικές ορολογίες (' .. lang_name .. ')|' .. topics.label[cat_title]['key'] .. ']]' ..  "\n"
			if topics.label[cat_title]['extra1'] ~= '' and topics.label[cat_title]['extra1'] ~= nil then
				cat = cat .. '[[Κατηγορία:' .. topics.label[cat_title]['extra1'] .. ' (' .. lang_name .. ')|' .. topics.label[cat_title]['key'] .. ']]' ..  "\n"
			end
			if topics.label[cat_title]['extra2'] ~= '' and topics.label[cat_title]['extra2'] ~= nil then
				cat = cat .. '[[Κατηγορία:' .. topics.label[cat_title]['extra2'] .. ' (' .. lang_name .. ')|' .. topics.label[cat_title]['key'] .. ']]' ..  "\n"
			end	
			if topics.label[cat_title]['extra3'] ~= '' and topics.label[cat_title]['extra3'] ~= nil then
				cat = cat .. '[[Κατηγορία:' .. topics.label[cat_title]['extra3'] .. ' (' .. lang_name .. ')|' .. topics.label[cat_title]['key'] .. ']]' ..  "\n"
			end	
		end -- close cat_parenthesis
	end -- close TOPICS




--------------------------------------------------------------------------
--                       ΥΦΟΛΟΓΙΚΕΣ - STYLE                          --
-- at [[Module:auto cat/data/style]] -- always call them with style.label
-- correspond to [[Module:labels/data]]
-- [[:Κατηγορία:Υφολογικές κατηγορίες]] - [[:Κατηγορία:Υφολογικές κατηγορίες ανά γλώσσα]]
--------------------------------------------------------------------------

--  e.g. [[:Κατηγορία:Αργκό]]
	if style.label[cat_title] then

-- a mode, no (language)
		if cat_parenthesis == '' or cat_parenthesis == nil then
			text = text_wikt
			if style.label[cat_title]['parent4'] ~= '' and style.label[cat_title]['parent4'] ~= nil then
				text = text .. ' » [[:Κατηγορία:' .. style.label[cat_title]['parent4'] .. '|' .. style.label[cat_title]['parent4'] .. ']]'
			end	
			if style.label[cat_title]['parent3'] ~= '' and style.label[cat_title]['parent3'] ~= nil then
				text = text .. ' » [[:Κατηγορία:' .. style.label[cat_title]['parent3'] .. '|' .. style.label[cat_title]['parent3'] .. ']]'
			end
			if style.label[cat_title]['parent2'] ~= '' and style.label[cat_title]['parent2'] ~= nil then
				if style.label[cat_title]['parent2_show'] ~= '' and style.label[cat_title]['parent2_show'] ~= nil then
				text = text .. ' » [[:Κατηγορία:' .. style.label[cat_title]['parent2'] .. '|' .. style.label[cat_title]['parent2_show'] .. ']]'
				else
				text = text .. ' » [[:Κατηγορία:' .. style.label[cat_title]['parent2'] .. '|' .. style.label[cat_title]['parent2'] .. ']]'
				end
			end
	-- they all have parent
			if style.label[cat_title]['parent'] ~= '' and style.label[cat_title]['parent'] ~= nil then
				if style.label[cat_title]['parent_show'] ~= '' and style.label[cat_title]['parent_show'] ~= nil then
				text = text .. ' » [[:Κατηγορία:' .. style.label[cat_title]['parent'] .. '|' .. style.label[cat_title]['parent_show'] .. ']]'
				else
				text = text .. ' » [[:Κατηγορία:' .. style.label[cat_title]['parent'] .. '|' .. style.label[cat_title]['parent'] .. ']]'
				end
			end
			if style.label[cat_title]['show'] ~= '' and style.label[cat_title]['show'] ~= nil then
				text =  text .. ' » [[:Κατηγορία:' .. cat_title .. '|' .. style.label[cat_title]['show'] .. ']]'
			else
				text = text .. textit
			end
			-- extra0 ONLY in text, not at categories
			if style.label[cat_title]['extra0'] ~= '' and style.label[cat_title]['extra0'] ~= nil then
				if style.label[cat_title]['extra0_show'] ~= '' and style.label[cat_title]['extra0_show'] ~= nil then
				text = text .. ' « [[:Κατηγορία:' .. style.label[cat_title]['extra0'] .. '|' .. style.label[cat_title]['extra0_show'] .. ']]'
				else
				text = text .. ' « [[:Κατηγορία:' .. style.label[cat_title]['extra0'] .. '|' .. style.label[cat_title]['extra0'] .. ']]'
				end
			end
			if style.label[cat_title]['extra1'] ~= '' and style.label[cat_title]['extra1'] ~= nil then
				if style.label[cat_title]['extra1_show'] ~= '' and style.label[cat_title]['extra1_show'] ~= nil then
				text = text .. ' « [[:Κατηγορία:' .. style.label[cat_title]['extra1'] .. '|' .. style.label[cat_title]['extra1_show'] .. ']]'
				else
				text = text .. ' « [[:Κατηγορία:' .. style.label[cat_title]['extra1'] .. '|' .. style.label[cat_title]['extra1'] .. ']]'
				end
			end
			-- descr
			if style.label[cat_title]['descr'] ~= '' and style.label[cat_title]['descr'] ~= nil then
				text_plus = '<dl><dd>' .. style.label[cat_title]['descr'] .. '</dd></dl>'
			end

			-- cat a	-- MUST have parent		
			cat = '[[Κατηγορία:' .. style.label[cat_title]['parent'] .. '| ' .. style.label[cat_title]['key'] .. ']]' ..  "\n" -- sort top
			if style.label[cat_title]['extra1'] ~= '' and style.label[cat_title]['extra1'] ~= nil then
				cat = cat .. '[[Κατηγορία:' .. style.label[cat_title]['extra1'] .. '| ' .. style.label[cat_title]['key'] .. ']]' ..  "\n" -- sort top
			end
			-- ALWAYS PUT AT [[:Κατηγορία:Υφολογικές κατηγορίες]] nomatter what
			cat = cat .. '[[Κατηγορία:Υφολογικές κατηγορίες|' .. style.label[cat_title]['key'] .. ']]' ..  "\n" 
			if style.label[cat_title]['extra2'] ~= '' and style.label[cat_title]['extra2'] ~= nil then
				cat = cat .. '[[Κατηγορία:' .. style.label[cat_title]['extra2'] .. '| ' .. style.label[cat_title]['key'] .. ']]' ..  "\n" -- sort top
			end
			if style.label[cat_title]['extra3'] ~= '' and style.label[cat_title]['extra3'] ~= nil then
				cat = cat .. '[[Κατηγορία:' .. style.label[cat_title]['extra3'] .. '| ' .. style.label[cat_title]['key'] .. ']]' ..  "\n" -- sort top
			end
			
		else
-- b mode 
			text = text_lang
			if style.label[cat_title]['parent4'] ~= '' and style.label[cat_title]['parent4'] ~= nil then
				text = text .. ' » [[:Κατηγορία:' .. style.label[cat_title]['parent4'] .. ' (' .. lang_name .. ')|' .. style.label[cat_title]['parent4'] .. ']]'
			end	
			if style.label[cat_title]['parent3'] ~= '' and style.label[cat_title]['parent3'] ~= nil then
				text = text .. ' » [[:Κατηγορία:' .. style.label[cat_title]['parent3'] .. ' (' .. lang_name .. ')|' .. style.label[cat_title]['parent3'] .. ']]'
			end	
			if style.label[cat_title]['parent2'] ~= '' and style.label[cat_title]['parent2'] ~= nil then
				if style.label[cat_title]['parent2_show'] ~= '' and style.label[cat_title]['parent2_show'] ~= nil then
				text = text .. ' » [[:Κατηγορία:' .. style.label[cat_title]['parent2'] .. ' (' .. lang_name .. ')|' .. style.label[cat_title]['parent2_show'] .. ']]'
				else
				text = text .. ' » [[:Κατηγορία:' .. style.label[cat_title]['parent2'] .. ' (' .. lang_name .. ')|' .. style.label[cat_title]['parent2'] .. ']]'
				end
			end	
			
			if style.label[cat_title]['parent'] ~= '' and style.label[cat_title]['parent'] ~= nil then
				if style.label[cat_title]['parent_show'] ~= '' and style.label[cat_title]['parent_show'] ~= nil then
				text = text .. ' » [[:Κατηγορία:' .. style.label[cat_title]['parent'] .. ' (' .. lang_name .. ')|' .. style.label[cat_title]['parent_show'] .. ']]'
				else
				text = text .. ' » [[:Κατηγορία:' .. style.label[cat_title]['parent'] .. ' (' .. lang_name .. ')|' .. style.label[cat_title]['parent'] .. ']]'
				end
			end
			if style.label[cat_title]['show'] ~= '' and style.label[cat_title]['show'] ~= nil then
				text = text .. ' » [[:Κατηγορία:' .. cat_title .. ' (' .. lang_name .. ')|' .. style.label[cat_title]['show'] .. ']]' .. ' [[:Κατηγορία:' .. cat_title .. '|«««]]'
			else
				text =  text .. textit_lang .. ' [[:Κατηγορία:' .. cat_title .. '|«««]]'
			end
			-- extra0 ONLY in text, not at categories
			if style.label[cat_title]['extra0'] ~= '' and style.label[cat_title]['extra0'] ~= nil then
				if style.label[cat_title]['extra0_show'] ~= '' and style.label[cat_title]['extra0_show'] ~= nil then
				text = text .. ' « [[:Κατηγορία:' .. style.label[cat_title]['extra0'] .. ' (' .. lang_name .. ')|' .. style.label[cat_title]['extra0_show'] .. ']]'
				else
				text = text .. ' « [[:Κατηγορία:' .. style.label[cat_title]['extra0'] .. ' (' .. lang_name .. ')|' .. style.label[cat_title]['extra0'] .. ']]'
				end
			end	
			if style.label[cat_title]['extra1'] ~= '' and style.label[cat_title]['extra1'] ~= nil then
				if style.label[cat_title]['extra1_show'] ~= '' and style.label[cat_title]['extra1_show'] ~= nil then
				text = text .. ' « [[:Κατηγορία:' .. style.label[cat_title]['extra1'] .. ' (' .. lang_name .. ')|' .. style.label[cat_title]['extra1_show'] .. ']]'
				else
				text = text .. ' « [[:Κατηγορία:' .. style.label[cat_title]['extra1'] .. ' (' .. lang_name .. ')|' .. style.label[cat_title]['extra1'] .. ']]'
				end
			end	
			-- descr
			if style.label[cat_title]['descr'] ~= '' and style.label[cat_title]['descr'] ~= nil then
				text_plus = '<dl><dd>' .. style.label[cat_title]['descr'] .. '</dd></dl>'
			end

			-- cat b	-- MUST have parent
			if languages[lang_iso].sublang == true then
				cat = '[[Κατηγορία:' .. cat_title .. ' (' .. languages[lang_iso].host_name .. ')|' .. languages[lang_iso].host_key .. ']]' ..  "\n"
				.. '[[Κατηγορία:' .. style.label[cat_title]['parent'] .. ' (' .. lang_name .. ')|' .. style.label[cat_title]['key'] .. ']]' ..  "\n"
			else
				cat = '[[Κατηγορία:' .. cat_title .. '|' .. lang_key .. ']]' ..  "\n"
				.. '[[Κατηγορία:' .. style.label[cat_title]['parent'] .. ' (' .. lang_name .. ')|' .. style.label[cat_title]['key'] .. ']]' -- ??srt -- normal
			end -- close hosted languages
			-- ALWAYS PUT AT  Κατηγορία:Υφολογικές κατηγορίες (language) nomatter what
			cat = cat .. '[[Κατηγορία:Υφολογικές κατηγορίες (' .. lang_name .. ')|' .. style.label[cat_title]['key'] .. ']]' ..  "\n"
			if style.label[cat_title]['extra1'] ~= '' and style.label[cat_title]['extra1'] ~= nil then
				cat = cat .. '[[Κατηγορία:' .. style.label[cat_title]['extra1'] .. ' (' .. lang_name .. ')|' .. style.label[cat_title]['key'] .. ']]' ..  "\n"
			end
			if style.label[cat_title]['extra2'] ~= '' and style.label[cat_title]['extra2'] ~= nil then
				cat = cat .. '[[Κατηγορία:' .. style.label[cat_title]['extra2'] .. ' (' .. lang_name .. ')|' .. style.label[cat_title]['key'] .. ']]' ..  "\n"
			end	
			if style.label[cat_title]['extra3'] ~= '' and style.label[cat_title]['extra3'] ~= nil then
				cat = cat .. '[[Κατηγορία:' .. style.label[cat_title]['extra3'] .. ' (' .. lang_name .. ')|' .. style.label[cat_title]['key'] .. ']]' ..  "\n"
			end	
		end -- close cat_parenthesis
	end -- close STYLE



--------------------------------------------------------------------------
--    with PREFIX - with INFIX - with SUFFIX - with COMBINING FORM      --
--              Λέξεις με πρόθημα/ένθημα/πρόθημα/συνθετικό              --
--                          and +for names
--------------------------------------------------------------------------
-- οι σκέτοι τίτλοι [[:Κατηγορία:Προθήματα]], [[:Κατηγορία:Λέξεις κατά πρόθημα]], κλπ όπως στο [[Module:auto cat/data]]

	local autosort = ''
	local sort = args[1] or args['sort'] or '' 
	local show_other = args[2] or args['alt'] or '' -- show alternative
	local other_word = args['lemma'] or args['λήμμα'] or args['άλλο'] or ''
	local other_link = args['link'] or args['λινκ'] or '' -- different link, not just the affix [[:Κατηγορία:Γυναικεία επώνυμα με επίθημα -άδη (νέα ελληνικά)]]
	local other_cat = args['cat'] or args['κατ'] or '' -- other affix for the same kind of category
	local other_category = args['category'] or args['κατηγορία'] or '' -- totally different category
	local multicat = args['multi'] or args['πολυ'] or '' -- add to multilingual category e.g. [[:Κατηγορία:Λέξεις γλωσσών κατά επίθημα]]
	local compound = args['compound'] or args['comp'] or args['συνθετικό'] or args['σύνθετο'] or args['συνθ'] or '' -- only for name categories [[:Κατηγορία:Ανδρικά ονόματα με επίθημα -γιάννης (νέα ελληνικά)]]
	-- και μόνο για Κατ.Λέξεις με πρόθημα, param plus_in_infix (π.χ. η [[:Κατηγορία:Λέξεις με πρόθημα ψυχο- (νέα ελληνικά)]] να μπει ΚΑΙ στην [[:Κατηγορία:Λέξεις με ένθημα -ο (νέα ελληνικά)]])
	-- and see section Combining form for param plus_in_prefix, plus_in_suffix

-- test [[:Κατηγορία:Λέξεις με πρόθημα συν- (νέα ελληνικά)]] [[:Κατηγορία:Λέξεις με επίθημα -ά (νέα ελληνικά)]]

-- prefix params
if mw.ustring.find(cat_title, "Λέξεις με πρόθημα") then 
catword = 'Λέξεις με πρόθημα' 
cat_affix = 'Προθήματα'
in_cat = 'κατά πρόθημα'
	affix = mw.ustring.sub(mw.ustring.match(cat_title, "Λέξεις με πρόθημα (.*)"), 1, -1)  -- this is affix+hyphen
	linkit = '<b>[[' .. mw.ustring.sub(mw.ustring.match(cat_title, "Λέξεις με πρόθημα (.*)"), 1, -1) .. ']]</b>'
	if mw.ustring.sub(mw.ustring.match(cat_title, "Λέξεις με πρόθημα (.*)"), 1, -1):sub(-1) == '-'
	then
	autosort  = mw.ustring.sub(mw.ustring.match(cat_title, "Λέξεις με πρόθημα (.*)"), 1, -2) -- no hyphen
	else
	autosort = affix
	end
end

-- infix params
if mw.ustring.find(cat_title, "Λέξεις με ένθημα") then 
catword = 'Λέξεις με ένθημα' 
cat_affix = 'Ενθήματα'
in_cat = 'κατά ένθημα'
affix = mw.ustring.sub(mw.ustring.match(cat_title, "Λέξεις με ένθημα (.*)"), 1, -1)  -- this is hyphen+affix+hyphen
	if mw.ustring.sub(mw.ustring.match(cat_title, "Λέξεις με ένθημα (.*)"), 1, -1):sub(1, 1) == '-'
	and mw.ustring.sub(mw.ustring.match(cat_title, "Λέξεις με ένθημα (.*)"), 1, -1):sub(-1) == '-'
	then
	autosort  = mw.ustring.sub(mw.ustring.match(cat_title, "Λέξεις με ένθημα (.*)"), 2, -2) -- no hyphens
	else
	autosort = affix
	end
end

-- suffix params
if mw.ustring.find(cat_title, "Λέξεις με επίθημα") then 
catword = 'Λέξεις με επίθημα' 
cat_affix = 'Επιθήματα'
in_cat = 'κατά επίθημα'
	affix = mw.ustring.sub(mw.ustring.match(cat_title, "Λέξεις με επίθημα (.*)"), 1, -1)  -- this is hyphen+affix
	if mw.ustring.sub(mw.ustring.match(cat_title, "Λέξεις με επίθημα (.*)"), 1, -1):sub(1, 1) == '-'
	then
	autosort  = mw.ustring.sub(mw.ustring.match(cat_title, "Λέξεις με επίθημα (.*)"), 2, -1)  -- no hyphen
	else
	autosort = affix
	end
end

-- combining form params
if mw.ustring.find(cat_title, "Λέξεις με συνθετικό") then 
catword = 'Λέξεις με συνθετικό' 
cat_affix = 'Σύνθετα'
in_cat = 'κατά συνθετικό'
	affix = mw.ustring.sub(mw.ustring.match(cat_title, "Λέξεις με συνθετικό (.*)"), 2, -2)  -- this is the combining form without apostrophs
	if mw.ustring.sub(mw.ustring.match(cat_title, "Λέξεις με συνθετικό (.*)"), 1, -1):sub(1) == "'" -- apostroph at beginning
	and mw.ustring.sub(mw.ustring.match(cat_title, "Λέξεις με συνθετικό (.*)"), 1, -1):sub(-1) == "'" -- apostroph at end
	then
	autosort  = mw.ustring.sub(mw.ustring.match(cat_title, "Λέξεις με συνθετικό (.*)"), 2, -2) -- no apostrophs
	else
	autosort = affix
	end
end

-- =============== AFFIXES: apply with prefix, with infix, with suffix
if mw.ustring.find(cat_title, "Λέξεις με πρόθημα") or mw.ustring.find(cat_title, "Λέξεις με ένθημα") 
	or mw.ustring.find(cat_title, "Λέξεις με επίθημα") 
then
-- a mode, no (language) -- [[:Κατηγορία:Λέξεις με πρόθημα in-]] (the category includes latin, english, etc)
	if cat_parenthesis == '' or cat_parenthesis == nil then
		text = text_wikt .. ' » [[:Κατηγορία:Ετυμολογία|Ετυμολογία]] » [[:Κατηγορία:Μορφολογία|Μορφολογία]]'
		.. ' » [[:Κατηγορία:Προσφύματα|Προσφύματα]]'
		.. ' » [[:Κατηγορία:' .. cat_affix .. '|' .. cat_affix .. ']]'
		.. ' » [[:Κατηγορία:Λέξεις ' .. in_cat .. '|Λέξεις ' .. in_cat .. ']]'
		if show_other == '' or show_other == nil then
			text = text .. ' » [[' .. affix .. '|<b>' .. affix .. '</b>]]'
		else
			text = text  .. ' » [[' .. affix .. '|<b>' .. show_other .. '</b>]]' -- alt, show alternative
		end

		-- cat a
		if sort == '' or sort == nil then
			mw.addWarning('<b><span style="color:#b22222; font-size:14px;">Αν χρειάζεται, συμπληρώστε με &#123;&#123;auto cat|xxx}} την κλείδα κατάταξης sort.</span></b>')
			cat = '[[Κατηγορία:Λέξεις γλωσσών ' .. in_cat .. '|' .. autosort .. ']]' ..  "\n"			
		else
			cat = '[[Κατηγορία:Λέξεις γλωσσών ' .. in_cat .. '|' .. sort .. ']]' ..  "\n"
		end

	else -- with language
-- b mode e.g. [[:Κατηγορία:Λέξεις με πρόθημα συν- (νέα ελληνικά)]]
		text = text_lang .. ' » [[:Κατηγορία:Ετυμολογία (' .. lang_name .. ')|Ετυμολογία]]'
		.. ' » [[:Κατηγορία:Μορφολογία (' .. lang_name .. ')|Μορφολογία]]'
		.. ' » [[:Κατηγορία:Προσφύματα (' .. lang_name .. ')|Προσφύματα]]'
		.. ' » [[:Κατηγορία:' .. cat_affix .. ' (' .. lang_name .. ')|' .. cat_affix .. ']]'
		.. ' » [[:Κατηγορία:Λέξεις ' .. in_cat .. ' (' .. lang_name .. ')|Λέξεις ' .. in_cat .. ']]'
		if other_word == '' or other_word == nil then
			if show_other == '' or show_other == nil then
			text = text .. ' » [[' .. affix .. "#" .. languages[lang_iso].link .. '|<b>' .. affix .. '</b>]]'
			else
			text = text .. ' » [[' .. affix .. "#" .. languages[lang_iso].link .. '|<b>' .. show_other .. '</b>]]'
			end
		else -- give a different link [[:Κατηγορία:Λέξεις με πρόθημα δι- από το δια- (νέα ελληνικά)]]
			if show_other == '' or show_other == nil then
			text = text .. ' » [[' .. other_word .. "#" .. languages[lang_iso].link .. '|<b>' .. other_word .. '</b>]]'
			else
			text = text .. ' » [[' .. other_word .. "#" .. languages[lang_iso].link .. '|<b>' .. show_other .. '</b>]]'
			end
		end
	-- check [[:Κατηγορία:Λέξεις με πρόθημα ψυχο- (ελληνιστική κοινή)]]
	if languages[lang_iso].sublang == true then
		if other_word == '' or other_word == nil then
			if show_other == '' or show_other == nil then
			text = text .. ' « [[:Κατηγορία:' .. catword .. ' ' .. affix .. ' (' .. languages[lang_iso].host_name .. ')|' .. languages[lang_iso].host_name .. ']]' 
			else -- the same
			text = text .. ' « [[:Κατηγορία:' .. catword .. ' ' .. affix .. ' (' .. languages[lang_iso].host_name .. ')|' .. languages[lang_iso].host_name .. ']]' 	
			end
		else -- give a different link 
			if show_other == '' or show_other == nil then
			text = text .. ' « [[:Κατηγορία:' .. catword .. ' ' .. other_word .. ' (' .. languages[lang_iso].host_name .. ')|' .. languages[lang_iso].host_name .. ']]' 
			else -- the same
			text = text .. ' « [[:Κατηγορία:' .. catword .. ' ' .. other_word .. ' (' .. languages[lang_iso].host_name .. ')|' .. languages[lang_iso].host_name .. ']]' 
			end
		end			
	end -- close if sublang
			
		-- cat b -- [[:Κατηγορία:Λέξεις με πρόθημα συν- (νέα ελληνικά)]]
		if other_category ~= '' and other_category ~= nil then 
			cat = other_category .. "\n"  -- editor adds Category or Categories ad libitum
		else
			if other_cat ~= '' and other_cat ~= nil then
			if languages[lang_iso].sublang == true then
				if sort == '' or sort == nil then
				mw.addWarning('<b><span style="color:#b22222; font-size:14px;">Αν χρειάζεται, συμπληρώστε με &#123;&#123;auto cat|xxx}} την κλείδα κατάταξης sort.</span></b>')
				cat = '[[Κατηγορία:Λέξεις ' .. in_cat .. ' (' .. lang_name .. ')|' .. other_cat .. ']]' .. "\n"	
				.. '[[Κατηγορία:' .. catword .. ' ' .. affix  ' (' .. languages[lang_iso].host_name .. ')|' .. languages[lang_iso].key .. ']]' ..  "\n"
				else
				cat = '[[Κατηγορία:Λέξεις ' .. in_cat .. ' (' .. lang_name .. ')|' .. sort .. ']]' ..  "\n"
				.. '[[Κατηγορία:' .. catword .. ' ' .. affix .. ' (' .. languages[lang_iso].host_name .. ')|' .. languages[lang_iso].key .. ']]' ..  "\n"
				end				
			else -- no sublang	
				if sort == '' or sort == nil then
				mw.addWarning('<b><span style="color:#b22222; font-size:14px;">Αν χρειάζεται, συμπληρώστε με &#123;&#123;auto cat|xxx}} την κλείδα κατάταξης sort.</span></b>')
				cat = '[[Κατηγορία:Λέξεις ' .. in_cat .. ' (' .. lang_name .. ')|' .. other_cat .. ']]' .. "\n"		
				else
				cat = '[[Κατηγορία:Λέξεις ' .. in_cat .. ' (' .. lang_name .. ')|' .. sort .. ']]' ..  "\n"
				end
			end -- close sublang
			else -- (no other_cat) -- check [[:Κατηγορία:Λέξεις με ένθημα -ο- (ελληνιστική κοινή)]]
			if languages[lang_iso].sublang == true then 
				if sort == '' or sort == nil then
				mw.addWarning('<b><span style="color:#b22222; font-size:14px;">Αν χρειάζεται, συμπληρώστε με &#123;&#123;auto cat|xxx}} την κλείδα κατάταξης sort.</span></b>')
				cat = '[[Κατηγορία:Λέξεις ' .. in_cat .. ' (' .. lang_name .. ')|' .. autosort .. ']]' .. "\n"	
				.. '[[Κατηγορία:' .. catword .. ' ' .. affix .. ' (' .. languages[lang_iso].host_name .. ')|' .. languages[lang_iso].key .. ']]' ..  "\n"
				else
				cat = '[[Κατηγορία:Λέξεις ' .. in_cat .. ' (' .. lang_name .. ')|' .. sort .. ']]' ..  "\n"
				.. '[[Κατηγορία:' .. catword .. ' ' .. affix .. ' (' .. languages[lang_iso].host_name .. ')|' .. languages[lang_iso].key .. ']]' ..  "\n"
				end				
			else -- no sublang	
				if sort == '' or sort == nil then
				mw.addWarning('<b><span style="color:#b22222; font-size:14px;">Αν χρειάζεται, συμπληρώστε με &#123;&#123;auto cat|xxx}} την κλείδα κατάταξης sort.</span></b>')
				cat = '[[Κατηγορία:Λέξεις ' .. in_cat .. ' (' .. lang_name .. ')|' .. autosort .. ']]' .. "\n"		
				else
				cat = '[[Κατηγορία:Λέξεις ' .. in_cat .. ' (' .. lang_name .. ')|' .. sort .. ']]' ..  "\n"
				end
			end -- close sublang
			end
						-- [[:Κατηγορία:Λέξεις με πρόθημα δι- από το δια- (νέα ελληνικά)]]
						-- [[:Κατηγορία:Λέξεις με πρόθημα δι- από το δις (νέα ελληνικά)]]
		end -- close other_category
		if multicat ~= '' and multicat ~= nil then -- e.g. [[:Κατηγορία:Λέξεις με επίθημα -ation]] (en, fr)
			cat = cat .. '[[Κατηγορία:' .. catword .. ' ' .. affix .. '|' .. languages[lang_iso].key .. ']]' .. "\n"		
		end
		
	-- PLUS: μόνο για Κατ.προθημάτων: [[:Κατηγορία:Λέξεις με πρόθημα ψυχο- (νέα ελληνικά)]] να μπει ΚΑΙ στην [[:Κατηγορία:Λέξεις με ένθημα -ο (νέα ελληνικά)]])
		local plus_in_infix = args['infix'] or args['interfix'] or args['ενθ'] or args['ένθ'] or args['ένθημα'] or ''
		if mw.ustring.find(cat_title, "Λέξεις με πρόθημα") then
			if plus_in_infix ~= '' and plus_in_infix ~= nil then
				if sort == '' or sort == nil then
				cat = cat .. '[[Κατηγορία:Λέξεις με ένθημα ' .. plus_in_infix .. ' (' .. lang_name .. ')|' .. autosort .. ']]' .. "\n"		
				else
				cat = cat .. '[[Κατηγορία:Λέξεις με ένθημα ' .. plus_in_infix .. ' (' .. lang_name .. ')|' .. sort .. ']]' ..  "\n"
				end
			end -- plus_in_infix
		end -- if Λέξεις με πρόθημα
		
	end -- close cat_parenthesis
end -- close affixes



-- =============== with combining form: συνθετικό ΧΩΡΙΣ τον τίτλο 'Προσφύματα'
local plus_in_prefix = args['pref'] or args['προ'] or args['πρό'] or args['πρόθημα'] or ''		-- να προστεθεί ΚΑΙ στην Κατηγορία:Λέξεις κατά πρόθημα -- also add in Category:Words by prefix...
local plus_in_suffix = args['suf'] or args['επι'] or args['επί'] or args['επίθημα'] or ''		-- να προστεθεί ΚΑΙ στην Κατηγορία:Λέξεις κατά επίθημα -- also add in Category:Words by suffix...

if mw.ustring.find(cat_title, "Λέξεις με συνθετικό") 
then
-- a mode, no (language)
	if cat_parenthesis == '' or cat_parenthesis == nil then
		text = text_wikt .. ' » [[:Κατηγορία:Ετυμολογία|Ετυμολογία]] » [[:Κατηγορία:Μορφολογία|Μορφολογία]]'
		.. ' » [[:Κατηγορία:' .. cat_affix .. '|' .. cat_affix .. ']]'
		.. ' » [[:Κατηγορία:Λέξεις ' .. in_cat .. '|Λέξεις ' .. in_cat .. ']]'
		if show_other == '' or show_other == nil then
			text = text .. ' » [[' .. affix .. '|<b>' .. affix .. '</b>]]'
		else
			text = text  .. ' » [[' .. affix .. '|<b>' .. show_other .. '</b>]]' -- alt, show alternative
		end

		-- cat a
		if sort == '' or sort == nil then
			mw.addWarning('<b><span style="color:#b22222; font-size:14px;">Αν χρειάζεται, συμπληρώστε με &#123;&#123;auto cat|xxx}} την κλείδα κατάταξης sort.</span></b>')
			cat = '[[Κατηγορία:Λέξεις γλωσσών ' .. in_cat .. '|' .. autosort .. ']]' ..  "\n"
				if args['προ'] == '1' or args['pref'] then
				cat = cat .. '[[Κατηγορία:Λέξεις γλωσσών κατά πρόθημα|' .. autosort .. ']]' ..  "\n"
				end
				if args['επι'] == '1' or args['suf'] then
				cat = cat .. '[[Κατηγορία:Λέξεις γλωσσών κατά επίθημα|' .. autosort .. ']]' ..  "\n"
				end	
		else
			cat = '[[Κατηγορία:Λέξεις γλωσσών ' .. in_cat .. '|' .. sort .. ']]' ..  "\n"
				if args['προ'] == '1' or args['pref'] then
				cat = cat .. '[[Κατηγορία:Λέξεις γλωσσών κατά πρόθημα|' .. sort .. ']]' ..  "\n"
				end
				if args['επι'] == '1' or args['suf'] then
				cat = cat .. '[[Κατηγορία:Λέξεις γλωσσών κατά επίθημα|' .. sort .. ']]' ..  "\n"
				end		
		end

	else -- with language
-- b mode e.g. -- [[:Κατηγορία:Λέξεις με συνθετικό 'βιομηχανία' (νέα ελληνικά)]]
		text = text_lang .. ' » [[:Κατηγορία:Ετυμολογία (' .. lang_name .. ')|Ετυμολογία]]'
		.. ' » [[:Κατηγορία:Μορφολογία (' .. lang_name .. ')|Μορφολογία]]'
		.. ' » [[:Κατηγορία:' .. cat_affix .. ' (' .. lang_name .. ')|' .. cat_affix .. ']]'
		.. ' » [[:Κατηγορία:Λέξεις ' .. in_cat .. ' (' .. lang_name .. ')|Λέξεις ' .. in_cat .. ']]'
		if other_word == '' or other_word == nil then
			if show_other == '' or show_other == nil then
			text = text .. ' » [[' .. affix .. "#" .. languages[lang_iso].link .. '|<b>' .. affix .. '</b>]]'
			else
			text = text .. ' » [[' .. affix .. "#" .. languages[lang_iso].link .. '|<b>' .. show_other .. '</b>]]'
			end
		else -- give a different link
			if show_other == '' or show_other == nil then
			text = text .. ' » [[' .. other_word .. "#" .. languages[lang_iso].link .. '|<b>' .. other_word .. '</b>]]'
			else
			text = text .. ' » [[' .. other_word .. "#" .. languages[lang_iso].link .. '|<b>' .. show_other .. '</b>]]'
			end
		end
			
		-- cat b
		if other_category ~= '' and other_category ~= nil then 
			cat = other_category .. "\n"  -- editor adds Category or Categories ad libitum
		else
			if other_cat ~= '' and other_cat ~= nil then
			if languages[lang_iso].sublang == true then
				if sort == '' or sort == nil then
				mw.addWarning('<b><span style="color:#b22222; font-size:14px;">Αν χρειάζεται, συμπληρώστε με &#123;&#123;auto cat|xxx}} την κλείδα κατάταξης sort.</span></b>')
				cat = '[[Κατηγορία:Λέξεις ' .. in_cat .. ' (' .. lang_name .. ')|' .. other_cat .. ']]' .. "\n"	
				.. '[[Κατηγορία:' .. catword .. " '" .. affix .. "' (" .. languages[lang_iso].host_name .. ')|' .. other_cat .. ']]' ..  "\n"
				else
				cat = '[[Κατηγορία:Λέξεις ' .. in_cat .. ' (' .. lang_name .. ')|' .. sort .. ']]' ..  "\n"
				.. '[[Κατηγορία:' .. catword .. " '" .. affix .. "' (" .. languages[lang_iso].host_name .. ')|' .. sort .. ']]' ..  "\n"
				end				
			else -- no sublang	
				if sort == '' or sort == nil then
				mw.addWarning('<b><span style="color:#b22222; font-size:14px;">Αν χρειάζεται, συμπληρώστε με &#123;&#123;auto cat|xxx}} την κλείδα κατάταξης sort.</span></b>')
				cat = '[[Κατηγορία:Λέξεις ' .. in_cat .. ' (' .. lang_name .. ')|' .. other_cat .. ']]' .. "\n"		
				else
				cat = '[[Κατηγορία:Λέξεις ' .. in_cat .. ' (' .. lang_name .. ')|' .. sort .. ']]' ..  "\n"
				end
			end -- close sublang				
			else -- (no other_cat)
			if languages[lang_iso].sublang == true then
				if sort == '' or sort == nil then
				mw.addWarning('<b><span style="color:#b22222; font-size:14px;">Αν χρειάζεται, συμπληρώστε με &#123;&#123;auto cat|xxx}} την κλείδα κατάταξης sort.</span></b>')
				cat = '[[Κατηγορία:Λέξεις ' .. in_cat .. ' (' .. lang_name .. ')|' .. autosort .. ']]' .. "\n"	
				.. '[[Κατηγορία:' .. catword .. " '" .. affix ..  "' (" .. languages[lang_iso].host_name .. ')|' .. autosort .. ']]' ..  "\n"
					if args['προ'] == '1' or args['pref'] then -- [[:Κατηγορία:Λέξεις με συνθετικό 'Γιάννης' (νέα ελληνικά)]]
					cat = cat .. '[[Κατηγορία:Λέξεις κατά πρόθημα (' .. lang_name .. ')|' .. autosort .. ']]' ..  "\n"
					.. '[[Κατηγορία:Λέξεις κατά πρόθημα (' .. lang_name .. ')|' .. autosort .. ']]' ..  "\n"
					end
					if args['επι'] == '1' or args['suf'] then
					cat = cat .. '[[Κατηγορία:Λέξεις κατά επίθημα (' .. lang_name .. ')|' .. autosort .. ']]' ..  "\n"
					end	
				else
				cat = '[[Κατηγορία:Λέξεις ' .. in_cat .. ' (' .. lang_name .. ')|' .. sort .. ']]' ..  "\n"
				.. '[[Κατηγορία:' .. catword .. " '" .. affix .. "' (" .. languages[lang_iso].host_name .. ')|' .. sort .. ']]' ..  "\n"
					if args['προ'] == '1' or args['pref'] then
					cat = cat .. '[[Κατηγορία:Λέξεις κατά πρόθημα (' .. lang_name .. ')|' .. sort .. ']]' ..  "\n"
					end
					if args['επι'] == '1' or args['suf'] then
					cat = cat .. '[[Κατηγορία:Λέξεις κατά επίθημα (' .. lang_name .. ')|' .. sort .. ']]' ..  "\n"
					end	
				end				
			else -- no sublang	
				if sort == '' or sort == nil then
				mw.addWarning('<b><span style="color:#b22222; font-size:14px;">Αν χρειάζεται, συμπληρώστε με &#123;&#123;auto cat|xxx}} την κλείδα κατάταξης sort.</span></b>')
				cat = '[[Κατηγορία:Λέξεις ' .. in_cat .. ' (' .. lang_name .. ')|' .. autosort .. ']]' .. "\n"
					if args['προ'] == '1' or args['pref'] then -- [[:Κατηγορία:Λέξεις με συνθετικό 'Γιάννης' (νέα ελληνικά)]]
					cat = cat .. '[[Κατηγορία:Λέξεις κατά πρόθημα (' .. lang_name .. ')|' .. autosort .. ']]' ..  "\n"
					end
					if args['επι'] == '1' or args['suf'] then
					cat = cat .. '[[Κατηγορία:Λέξεις κατά επίθημα (' .. lang_name .. ')|' .. autosort .. ']]' ..  "\n"
					end
				else
				cat = '[[Κατηγορία:Λέξεις ' .. in_cat .. ' (' .. lang_name .. ')|' .. sort .. ']]' ..  "\n"
					if args['προ'] == '1' or args['pref'] then
					cat = cat .. '[[Κατηγορία:Λέξεις κατά πρόθημα (' .. lang_name .. ')|' .. sort .. ']]' ..  "\n"
					end
					if args['επι'] == '1' or args['suf'] then
					cat = cat .. '[[Κατηγορία:Λέξεις κατά επίθημα (' .. lang_name .. ')|' .. sort .. ']]' ..  "\n"
					end		
				end
			end -- close sublang
			end -- close other_cat


		end -- close other_category
		if multicat ~= '' and multicat ~= nil then -- e.g. [[:Κατηγορία:Λέξεις με επίθημα -ation]] (en, fr)
			cat = cat .. '[[Κατηγορία:' .. catword .. ' ' .. affix .. '|' .. languages[lang_iso].key .. ']]' .. "\n"		
		end

	end -- close cat_parenthesis
end -- close combining form

--------------------------------------------------------------------------
--       Λέξεις με υποκοριστικό επίθημα...  με μεγεθυντικό επίθημ... under επίθημα          --
--        Words with diminutive suffix..., with augmentative suffix... under suffix       --
--------------------------------------------------------------------------
-- οι σκέτοι τίτλοι όπως [[:Κατηγορία:Υποκοριστικοί όροι (νέα ελληνικά)]], [[:Κατηγορία:Λέξεις κατά υποκοριστικό επίθημα (νέα ελληνικά)]]
	-- δημιουργούνται από το [[Module:auto cat/data]]

-- dim params
if mw.ustring.find(cat_title, "Λέξεις με υποκοριστικό επίθημα") then 
catword = 'Λέξεις με υποκοριστικό επίθημα'
cat_affix = 'Λέξεις'
in_cat = 'κατά υποκοριστικό επίθημα'
	affix = mw.ustring.sub(mw.ustring.match(cat_title, "Λέξεις με υποκοριστικό επίθημα (.*)"), 1, -1)  -- this is hyphen+affix
	if mw.ustring.sub(mw.ustring.match(cat_title, "Λέξεις με υποκοριστικό επίθημα (.*)"), 1, -1):sub(1, 1) == '-'
	then
	autosort  = mw.ustring.sub(mw.ustring.match(cat_title, "Λέξεις με υποκοριστικό επίθημα (.*)"), 2, -1)  -- no hyphen
	else
	autosort = affix
	end
end

-- aug params
if mw.ustring.find(cat_title, "Λέξεις με μεγεθυντικό επίθημα") then 
catword = 'Λέξεις με μεγεθυντικό επίθημα'
cat_affix = 'Λέξεις'
in_cat = 'κατά μεγεθυντικό επίθημα'
	affix = mw.ustring.sub(mw.ustring.match(cat_title, "Λέξεις με μεγεθυντικό επίθημα (.*)"), 1, -1)  -- this is hyphen+affix
	if mw.ustring.sub(mw.ustring.match(cat_title, "Λέξεις με μεγεθυντικό επίθημα (.*)"), 1, -1):sub(1, 1) == '-'
	then
	autosort  = mw.ustring.sub(mw.ustring.match(cat_title, "Λέξεις με μεγεθυντικό επίθημα (.*)"), 2, -1)  -- no hyphen
	else
	autosort = affix
	end
end
 


-- =============== apply με υποκοριστικό επίθημα
if mw.ustring.find(cat_title, "Λέξεις με υποκοριστικό επίθημα")

then
-- a mode, no (language)
	if cat_parenthesis == '' or cat_parenthesis == nil then
		text = text_wikt .. ' » [[:Κατηγορία:Ετυμολογία|Ετυμολογία]] » [[:Κατηγορία:Μορφολογία|Μορφολογία]]'
		.. ' » [[:Κατηγορία:Προσφύματα|Προσφύματα]]'
		.. ' » [[:Κατηγορία:Επιθήματα|Επιθήματα]]'
		.. ' » [[:Κατηγορία:Υποκοριστικά επιθήματα|' .. 'υποκοριστικά' .. ']]'
		.. ' » [[:Κατηγορία:Λέξεις με επίθημα ' .. affix .. '|επίθημα]]'
		if show_other == '' or show_other == nil then
			text = text .. ' » [[' .. affix .. '|<b>' .. affix .. '</b>]]'
		else
			text = text  .. ' » [[' .. affix .. '|<b>' .. show_other .. '</b>]]' -- alt, show alternative
		end
		text = text .. ' « [[:Κατηγορία:Λέξεις ' .. 'κατά υποκοριστικό επίθημα' .. '|Λέξεις ' .. 'κατά υποκοριστικό επίθημα' .. ']]'
		
		
		-- cat a
		if sort == '' or sort == nil then
			mw.addWarning('<b><span style="color:#b22222; font-size:14px;">Αν χρειάζεται, συμπληρώστε με &#123;&#123;auto cat|xxx}} την κλείδα κατάταξης sort.</span></b>')
			cat = '[[Κατηγορία:' .. cat_affix .. ' κατά υποκοριστικό επίθημα|' .. autosort .. ']]' ..  "\n"	
			.. '[[Κατηγορία:Λέξεις γλωσσών κατά υποκοριστικό επίθημα|' .. autosort .. ']]' ..  "\n"			
		else
			cat = '[[Κατηγορία:' .. cat_affix .. ' κατά υποκοριστικό επίθημα|' .. sort .. ']]' ..  "\n"	
			.. '[[Κατηγορία:Λέξεις γλωσσών κατά υποκοριστικό επίθημα|' .. sort .. ']]' ..  "\n"
		end

	else -- with language
-- b mode e.g. [[:Κατηγορία:Λέξεις με υποκοριστικό επίθημα -άκι (νέα ελληνικά)]]
		text = text_lang .. ' » [[:Κατηγορία:Ετυμολογία (' .. lang_name .. ')|Ετυμολογία]]'
		.. ' » [[:Κατηγορία:Μορφολογία (' .. lang_name .. ')|Μορφολογία]]'
		.. ' » [[:Κατηγορία:Προσφύματα (' .. lang_name .. ')|Προσφύματα]]'
		.. ' » [[:Κατηγορία:Επιθήματα (' .. lang_name .. ')|Επιθήματα]]'
		.. ' » [[:Κατηγορία:Υποκοριστικά επιθήματα (' .. lang_name .. ')|' .. 'υποκοριστικά' .. ']]'
		.. ' » [[:Κατηγορία:Λέξεις με επίθημα ' .. affix .. ' (' .. lang_name .. ')|με επίθημα]]'
		if other_word == '' or other_word == nil then
			if show_other == '' or show_other == nil then
			text = text .. ' » [[' .. affix .. "#" .. languages[lang_iso].link .. '|<b>' .. affix .. '</b>]]'
			else
			text = text .. ' » [[' .. affix .. "#" .. languages[lang_iso].link .. '|<b>' .. show_other .. '</b>]]'
			end
		else -- give a different link
			if show_other == '' or show_other == nil then
			text = text .. ' » [[' .. other_word .. "#" .. languages[lang_iso].link .. '|<b>' .. other_word .. '</b>]]'
			else
			text = text .. ' » [[' .. other_word .. "#" .. languages[lang_iso].link .. '|<b>' .. show_other .. '</b>]]'
			end
		end
		text = text .. ' « [[:Κατηγορία:Λέξεις κατά υποκοριστικό επίθημα (' .. lang_name .. ')|Λέξεις ' .. 'κατά υποκοριστικό επίθημα' .. ']]'
			
		-- cat b -- [[:Κατηγορία:Λέξεις με υποκοριστικά επίθημα -άκι (νέα ελληνικά)]]
		if other_category ~= '' and other_category ~= nil then 
			cat = other_category .. "\n"  -- editor adds Category or Categories ad libitum
		else
			if other_cat ~= '' and other_cat ~= nil then
			if languages[lang_iso].sublang == true then
				if sort == '' or sort == nil then
				mw.addWarning('<b><span style="color:#b22222; font-size:14px;">Αν χρειάζεται, συμπληρώστε με &#123;&#123;auto cat|xxx}} την κλείδα κατάταξης sort.</span></b>')
				cat = '[[Κατηγορία:Λέξεις ' .. in_cat .. ' (' .. lang_name .. ')|' .. other_cat .. ']]' .. "\n"	
				.. '[[Κατηγορία:' .. catword .. ' ' .. affix  ' (' .. languages[lang_iso].host_name .. ')|' .. other_cat .. ']]' ..  "\n"
				else
				cat = '[[Κατηγορία:Λέξεις ' .. in_cat .. ' (' .. lang_name .. ')|' .. sort .. ']]' ..  "\n"
				.. '[[Κατηγορία:' .. catword .. ' ' .. affix .. ' (' .. languages[lang_iso].host_name .. ')|' .. sort .. ']]' ..  "\n"
				end				
			else -- no sublang	
				if sort == '' or sort == nil then
				mw.addWarning('<b><span style="color:#b22222; font-size:14px;">Αν χρειάζεται, συμπληρώστε με &#123;&#123;auto cat|xxx}} την κλείδα κατάταξης sort.</span></b>')
				cat = '[[Κατηγορία:Λέξεις ' .. in_cat .. ' (' .. lang_name .. ')|' .. other_cat .. ']]' .. "\n"		
				else
				cat = '[[Κατηγορία:Λέξεις ' .. in_cat .. ' (' .. lang_name .. ')|' .. sort .. ']]' ..  "\n"
				end
			end -- close sublang
			else -- (no other_cat)
			if languages[lang_iso].sublang == true then
				if sort == '' or sort == nil then
				mw.addWarning('<b><span style="color:#b22222; font-size:14px;">Αν χρειάζεται, συμπληρώστε με &#123;&#123;auto cat|xxx}} την κλείδα κατάταξης sort.</span></b>')
				cat = '[[Κατηγορία:' .. cat_affix .. ' κατά υποκοριστικό επίθημα (' .. lang_name .. ')|' .. autosort .. ']]' ..  "\n"
				.. '[[Κατηγορία:Λέξεις με επίθημα ' .. affix .. ' (' .. lang_name .. ')| ' .. 'υποκοριστικα' .. ']]' .. "\n"	-- sort top	
				.. '[[Κατηγορία:' .. catword .. ' ' .. affix .. ' (' .. languages[lang_iso].host_name .. ')|' .. autosort .. ']]' ..  "\n"
				else
				cat = '[[Κατηγορία:' .. cat_affix .. ' κατά επίθημα (' .. lang_name .. ')|' .. sort .. ']]' ..  "\n"
				.. '[[Κατηγορία:Λέξεις με επίθημα ' .. affix .. ' (' .. lang_name .. ')| ' .. 'υποκοριστικα' .. ']]' ..  "\n" -- sort top
				.. '[[Κατηγορία:' .. catword .. ' ' .. affix .. ' (' .. languages[lang_iso].host_name .. ')|' .. sort .. ']]' ..  "\n"
				end				
			else -- no sublang	
				if sort == '' or sort == nil then
				mw.addWarning('<b><span style="color:#b22222; font-size:14px;">Αν χρειάζεται, συμπληρώστε με &#123;&#123;auto cat|xxx}} την κλείδα κατάταξης sort.</span></b>')
				cat = '[[Κατηγορία:' .. cat_affix .. ' κατά υποκοριστικό επίθημα (' .. lang_name .. ')|' .. autosort .. ']]' ..  "\n"
				.. '[[Κατηγορία:Λέξεις με επίθημα ' .. affix .. ' (' .. lang_name .. ')| ' .. 'υποκοριστικα' .. ']]' .. "\n" -- sort top	
				else
				cat = '[[Κατηγορία:' .. cat_affix .. ' κατά υποκοριστικό επίθημα (' .. lang_name .. ')|' .. sort .. ']]' ..  "\n"
				.. '[[Κατηγορία:Λέξεις με επίθημα ' .. affix .. ' (' .. lang_name .. ')| ' .. 'υποκοριστικα' .. ']]' ..  "\n" -- sort top
				end
			end -- close sublang
			end -- close other_cat
		end -- close other_category
		if multicat ~= '' and multicat ~= nil then
			cat = cat .. '[[Κατηγορία:' .. cat_word .. ' ' .. affix .. '|' .. languages[lang_iso].key .. ']]' .. "\n"		
		end

	end -- close cat_parenthesis
end -- close dim



-- =============== apply με μεγεθυντικό επίθημα [[:Κατηγορία:Λέξεις με μεγεθυντικό επίθημα -άκλα (νέα ελληνικά)]]
if mw.ustring.find(cat_title, "Λέξεις με μεγεθυντικό επίθημα")

then
-- a mode, no (language)
	if cat_parenthesis == '' or cat_parenthesis == nil then
		text = text_wikt .. ' » [[:Κατηγορία:Ετυμολογία|Ετυμολογία]] » [[:Κατηγορία:Μορφολογία|Μορφολογία]]'
		.. ' » [[:Κατηγορία:Προσφύματα|Προσφύματα]]'
		.. ' » [[:Κατηγορία:Επιθήματα|Επιθήματα]]'
		.. ' » [[:Κατηγορία:Υποκοριστικά επιθήματα|' .. 'μεγεθυντικά' .. ']]'
		.. ' » [[:Κατηγορία:Λέξεις με επίθημα ' .. affix .. '|επίθημα]]'
		if show_other == '' or show_other == nil then
			text = text .. ' » [[' .. affix .. '|<b>' .. affix .. '</b>]]'
		else
			text = text  .. ' » [[' .. affix .. '|<b>' .. show_other .. '</b>]]' -- alt, show alternative
		end
		text = text .. ' « [[:Κατηγορία:Λέξεις ' .. 'κατά μεγεθυντικό επίθημα' .. '|Λέξεις ' .. 'κατά μεγεθυντικό επίθημα' .. ']]'
		
		
		-- cat a
		if sort == '' or sort == nil then
			mw.addWarning('<b><span style="color:#b22222; font-size:14px;">Αν χρειάζεται, συμπληρώστε με &#123;&#123;auto cat|xxx}} την κλείδα κατάταξης sort.</span></b>')
			cat = '[[Κατηγορία:' .. cat_affix .. ' κατά μεγεθυντικό επίθημα|' .. autosort .. ']]' ..  "\n"	
			.. '[[Κατηγορία:Λέξεις γλωσσών κατά μεγεθυντικό επίθημα|' .. autosort .. ']]' ..  "\n"			
		else
			cat = '[[Κατηγορία:' .. cat_affix .. ' κατά μεγεθυντικό επίθημα|' .. sort .. ']]' ..  "\n"	
			.. '[[Κατηγορία:Λέξεις γλωσσών κατά μεγεθυντικό επίθημα|' .. sort .. ']]' ..  "\n"
		end

	else -- with language
-- b mode e.g. [[:Κατηγορία:Λέξεις με μεγεθυντικό επίθημα -άκλα (νέα ελληνικά)]]
		text = text_lang .. ' » [[:Κατηγορία:Ετυμολογία (' .. lang_name .. ')|Ετυμολογία]]'
		.. ' » [[:Κατηγορία:Μορφολογία (' .. lang_name .. ')|Μορφολογία]]'
		.. ' » [[:Κατηγορία:Προσφύματα (' .. lang_name .. ')|Προσφύματα]]'
		.. ' » [[:Κατηγορία:Επιθήματα (' .. lang_name .. ')|Επιθήματα]]'
		.. ' » [[:Κατηγορία:Μεγεθυντικά επιθήματα (' .. lang_name .. ')|' .. 'μεγεθυντικά' .. ']]'
		.. ' » [[:Κατηγορία:Λέξεις με επίθημα ' .. affix .. ' (' .. lang_name .. ')|με επίθημα]]'
		if other_word == '' or other_word == nil then
			if show_other == '' or show_other == nil then
			text = text .. ' » [[' .. affix .. "#" .. languages[lang_iso].link .. '|<b>' .. affix .. '</b>]]'
			else
			text = text .. ' » [[' .. affix .. "#" .. languages[lang_iso].link .. '|<b>' .. show_other .. '</b>]]'
			end
		else -- give a different link
			if show_other == '' or show_other == nil then
			text = text .. ' » [[' .. other_word .. "#" .. languages[lang_iso].link .. '|<b>' .. other_word .. '</b>]]'
			else
			text = text .. ' » [[' .. other_word .. "#" .. languages[lang_iso].link .. '|<b>' .. show_other .. '</b>]]'
			end
		end
		text = text .. ' « [[:Κατηγορία:Λέξεις κατά μεγεθυντικό επίθημα (' .. lang_name .. ')|Λέξεις ' .. 'κατά μεγεθυντικό επίθημα' .. ']]'
			
		-- cat b
		if other_category ~= '' and other_category ~= nil then 
			cat = other_category .. "\n"  -- editor adds Category or Categories ad libitum
		else
			if other_cat ~= '' and other_cat ~= nil then
			if languages[lang_iso].sublang == true then
				if sort == '' or sort == nil then
				mw.addWarning('<b><span style="color:#b22222; font-size:14px;">Αν χρειάζεται, συμπληρώστε με &#123;&#123;auto cat|xxx}} την κλείδα κατάταξης sort.</span></b>')
				cat = '[[Κατηγορία:Λέξεις ' .. in_cat .. ' (' .. lang_name .. ')|' .. other_cat .. ']]' .. "\n"	
				.. '[[Κατηγορία:' .. catword .. ' ' .. affix  ' (' .. languages[lang_iso].host_name .. ')|' .. other_cat .. ']]' ..  "\n"
				else
				cat = '[[Κατηγορία:Λέξεις ' .. in_cat .. ' (' .. lang_name .. ')|' .. sort .. ']]' ..  "\n"
				.. '[[Κατηγορία:' .. catword .. ' ' .. affix .. ' (' .. languages[lang_iso].host_name .. ')|' .. sort .. ']]' ..  "\n"
				end				
			else -- no sublang	
				if sort == '' or sort == nil then
				mw.addWarning('<b><span style="color:#b22222; font-size:14px;">Αν χρειάζεται, συμπληρώστε με &#123;&#123;auto cat|xxx}} την κλείδα κατάταξης sort.</span></b>')
				cat = '[[Κατηγορία:Λέξεις ' .. in_cat .. ' (' .. lang_name .. ')|' .. other_cat .. ']]' .. "\n"		
				else
				cat = '[[Κατηγορία:Λέξεις ' .. in_cat .. ' (' .. lang_name .. ')|' .. sort .. ']]' ..  "\n"
				end
			end -- close sublang
			else -- (no other_cat)
			if languages[lang_iso].sublang == true then
				if sort == '' or sort == nil then
				mw.addWarning('<b><span style="color:#b22222; font-size:14px;">Αν χρειάζεται, συμπληρώστε με &#123;&#123;auto cat|xxx}} την κλείδα κατάταξης sort.</span></b>')
				cat = '[[Κατηγορία:' .. cat_affix .. ' κατά μεγεθυντικό επίθημα (' .. lang_name .. ')|' .. autosort .. ']]' ..  "\n"
				.. '[[Κατηγορία:Λέξεις με επίθημα ' .. affix .. ' (' .. lang_name .. ')| ' .. 'μεγεθυντικα' .. ']]' .. "\n"	-- sort top	
				.. '[[Κατηγορία:' .. catword .. ' ' .. affix .. ' (' .. languages[lang_iso].host_name .. ')|' .. autosort .. ']]' ..  "\n"
				else
				cat = '[[Κατηγορία:' .. cat_affix .. ' κατά επίθημα (' .. lang_name .. ')|' .. sort .. ']]' ..  "\n"
				.. '[[Κατηγορία:Λέξεις με επίθημα ' .. affix .. ' (' .. lang_name .. ')| ' .. 'μεγεθυντικα' .. ']]' ..  "\n" -- sort top
				.. '[[Κατηγορία:' .. catword .. ' ' .. affix .. ' (' .. languages[lang_iso].host_name .. ')|' .. sort .. ']]' ..  "\n"
				end				
			else -- no sublang	
				if sort == '' or sort == nil then
				mw.addWarning('<b><span style="color:#b22222; font-size:14px;">Αν χρειάζεται, συμπληρώστε με &#123;&#123;auto cat|xxx}} την κλείδα κατάταξης sort.</span></b>')
				cat = '[[Κατηγορία:' .. cat_affix .. ' κατά μεγεθυντικό επίθημα (' .. lang_name .. ')|' .. autosort .. ']]' ..  "\n"
				.. '[[Κατηγορία:Λέξεις με επίθημα ' .. affix .. ' (' .. lang_name .. ')| ' .. 'μεγεθυντικα' .. ']]' .. "\n" -- sort top	
				else
				cat = '[[Κατηγορία:' .. cat_affix .. ' κατά μεγεθυντικό επίθημα (' .. lang_name .. ')|' .. sort .. ']]' ..  "\n"
				.. '[[Κατηγορία:Λέξεις με επίθημα ' .. affix .. ' (' .. lang_name .. ')| ' .. 'μεγεθυντικα' .. ']]' ..  "\n" -- sort top
				end
			end -- close sublang
			end -- close other_cat
		end -- close other_category
		if multicat ~= '' and multicat ~= nil then
			cat = cat .. '[[Κατηγορία:' .. cat_word .. ' ' .. affix .. '|' .. languages[lang_iso].key .. ']]' .. "\n"		
		end

	end -- close cat_parenthesis
end -- close  aug




--------------------------------------------------------------------------
--                        ΚΥΡΙΑ ΟΝΟΜΑΤΑ                                 --
--         with PREFIX (or combining) - with SUFFIX (or combining)      --
--                      for names, surnames
--------------------------------------------------------------------------
-- ============== πρόθημα prefix  + ανδρικά/γυναικεία ονόματα/επώνυμα / τοπωνύμια ================
-- εντάσσονται στο πρόθημα με μικρό και όχι κεφαλαίο (Λέξεις με πρόθημα ωωω-)
-- [[:Κατηγορία:Ανδρικά επώνυμα με πρόθημα Δελη- (νέα ελληνικά)]] -- CHECK [[:Κατηγορία:Ανδρικά επώνυμα κατά πρόθημα (νέα ελληνικά)]]
	if mw.ustring.find(cat_title, "Ανδρικά ονόματα με πρόθημα") or mw.ustring.find(cat_title, "Ανδρικά ονόματα κατά πρόθημα")  then catword = 'Ανδρικά ονόματα' end
	if mw.ustring.find(cat_title, "Ανδρικά επώνυμα με πρόθημα") or mw.ustring.find(cat_title, "Ανδρικά επώνυμα κατά πρόθημα") then catword = 'Ανδρικά επώνυμα' end
	if mw.ustring.find(cat_title, "Γυναικεία ονόματα με πρόθημα") or mw.ustring.find(cat_title, "Γυναικεία ονόματα κατά πρόθημα")  then catword = 'Γυναικεία ονόματα' end
	if mw.ustring.find(cat_title, "Γυναικεία επώνυμα με πρόθημα") or mw.ustring.find(cat_title, "Γυναικεία επώνυμα κατά πρόθημα")  then catword = 'Γυναικεία επώνυμα' end
	if mw.ustring.find(cat_title, "Ονόματα κοινού γένους με πρόθημα") or mw.ustring.find(cat_title, "Ονόματα κοινού γένους κατά πρόθημα")  then catword = 'Ονόματα κοινού γένους' end
	if mw.ustring.find(cat_title, "Επώνυμα κοινού γένους με πρόθημα") or mw.ustring.find(cat_title, "Επώνυμα κοινού γένους κατά πρόθημα")  then catword = 'Επώνυμα κοινού γένους' end
	if mw.ustring.find(cat_title, "Τοπωνύμια με πρόθημα") or mw.ustring.find(cat_title, "Τοπωνύμια κατά πρόθημα")  then catword = 'Τοπωνύμια' end
	
	if mw.ustring.find(cat_title, "Ανδρικά ονόματα με πρόθημα") or mw.ustring.find(cat_title, "Ανδρικά επώνυμα με πρόθημα")
	or mw.ustring.find(cat_title, "Γυναικεία ονόματα με πρόθημα") or mw.ustring.find(cat_title, "Γυναικεία επώνυμα με πρόθημα")
	or mw.ustring.find(cat_title, "Ονόματα κοινού γένους με πρόθημα") or mw.ustring.find(cat_title, "Επώνυμα κοινού γένους με πρόθημα")
	or mw.ustring.find(cat_title, "Τοπωνύμια με πρόθημα")
	then
-- a mode, no (language) -- there are no such categories at the moment
		if cat_parenthesis == '' or cat_parenthesis == nil then
			text = text_wikt .. ' » [[:Κατηγορία:Ετυμολογία|Ετυμολογία]] » [[:Κατηγορία:Μορφολογία|Μορφολογία]]'
			if compound ~= '' and compound ~=  nil then
				text = text .. ' » [[:Κατηγορία:Σύνθετα|Σύνθετα]]'
				.. " » [[:Κατηγορία:Λέξεις με συνθετικό '" .. compound .. "'|Λέξεις με συνθετικό]]"
				.. " » [[" .. compound .. "|<b>" .. compound .. "</b>]]"
			else
			text = text .. ' » [[:Κατηγορία:Προσφύματα|Προσφύματα]]'		
			 .. ' » [[:Κατηγορία:Προθήματα|Προθήματα]]'

	-- a free edit 
			if other_link ~= '' and other_link ~=  nil then
				text = text	.. ' » ' .. other_link
			else
				text = text .. ' » [[:Κατηγορία:Λέξεις με πρόθημα ' 
				.. mw.getContentLanguage():lcfirst(mw.ustring.sub(mw.ustring.match(cat_title, catword .. " με πρόθημα (.*)"), 1, -1))  
				..  '|Λέξεις με πρόθημα]] ' 
			if other_word ~= '' and other_word ~= nil then text = text .. other_word else	
				text = text .. '[[' .. mw.getContentLanguage():lcfirst(mw.ustring.sub(mw.ustring.match(cat_title, catword .. " με πρόθημα (.*)"), 1, -1)) 
				..  "|"
				if show_other == '' or show_other == nil then
				text = text .. '<b>' .. mw.getContentLanguage():lcfirst(mw.ustring.sub(mw.ustring.match(cat_title, catword .. " με πρόθημα (.*)"), 1, -1)) .. '</b>]]'
				else
				text = text .. '<b>' .. show_other .. '</b>]]'
				end	
			end
			end -- close other link
			end -- close compound
				text = text .. ' « [[:Κατηγορία:' .. catword .. ' κατά πρόθημα|' .. catword .. ' κατά πρόθημα]]'
			

			-- cat a

		if other_category ~= '' and other_category ~= nil then 
			cat = other_category .. "\n" 
			if sort == '' or sort == nil then
				mw.addWarning('<b><span style="color:#b22222; font-size:20px;">Συμπληρώστε με &#123;&#123;auto cat|xxx}} την κλείδα κατάταξης sort.</span></b>')
				cat = '[[Κατηγορία:Σελίδες με σφάλμα στο auto cat]]'
				else	
				cat = cat .. '[[Κατηγορία:' .. catword .. ' κατά πρόθημα|' .. sort .. ']]' ..  "\n" 
			end
		else
			if other_cat ~= '' and other_cat ~= nil then
				if sort == '' or sort == nil then
				mw.addWarning('<b><span style="color:#b22222; font-size:20px;">Συμπληρώστε με &#123;&#123;auto cat|xxx}} την κλείδα κατάταξης sort.</span></b>')
				cat = '[[Κατηγορία:Σελίδες με σφάλμα στο auto cat]]'
				else
				cat = '[[Κατηγορία:Λέξεις με πρόθημα ' .. other_cat  ..  '|' .. catword .. ']]' ..  "\n"
				.. '[[Κατηγορία:' .. catword .. ' κατά πρόθημα|' .. sort .. ']]' ..  "\n"
				end
			else -- (no other cat)
				if sort == '' or sort == nil then
				mw.addWarning('<b><span style="color:#b22222; font-size:20px;">Συμπληρώστε με &#123;&#123;auto cat|xxx}} την κλείδα κατάταξης sort.</span></b>')
				cat = '[[Κατηγορία:Σελίδες με σφάλμα στο auto cat]]'
				else
				cat = '[[Κατηγορία:Λέξεις με πρόθημα ' 
				.. mw.getContentLanguage():lcfirst(mw.ustring.sub(mw.ustring.match(cat_title, catword .. " με πρόθημα (.*)"), 1, -1))  .. '|' .. catword .. ']]' ..  "\n"
				.. '[[Κατηγορία:' .. catword .. ' κατά πρόθημα|' .. sort .. ']]' ..  "\n"
				end
			end
		end -- close other_category
		if compound ~= '' and compound ~=  nil then	
			cat = cat .. "[[Κατηγορία:Λέξεις με συνθετικό '" .. compound .. "'|" .. sort .. ']]'
		end

		else -- with language
-- b mode e.g. [[:Κατηγορία:Ανδρικά επώνυμα με πρόθημα Δελη- (νέα ελληνικά)]] -- CHECK [[:Κατηγορία:Ανδρικά επώνυμα κατά πρόθημα (νέα ελληνικά)]]
			text = text_lang .. ' » [[:Κατηγορία:Ετυμολογία (' .. lang_name .. ')|Ετυμολογία]]'
			.. ' » [[:Κατηγορία:Μορφολογία (' .. lang_name .. ')|Μορφολογία]]'
			-- [[:Κατηγορία:Ανδρικά ονόματα με πρόθημα Αγγελ- (νέα ελληνικά)]]
			if compound ~= '' and compound ~=  nil then
				text = text .. ' » [[:Κατηγορία:Σύνθετα (' .. lang_name .. ')|Σύνθετα]]'
				.. " » [[:Κατηγορία:Λέξεις με συνθετικό '" .. compound .. "' (" .. lang_name .. ")|Λέξεις με συνθετικό]]"
				.. " » [[" .. compound .. "#" .. languages[lang_iso].link .. "|<b>" .. compound .. "</b>]]"
			
			else
			text = text .. ' » [[:Κατηγορία:Προσφύματα (' .. lang_name .. ')|Προσφύματα]]'
			.. ' » [[:Κατηγορία:Προθήματα (' .. lang_name .. ')|Προθήματα]]'

			-- b free edit
			if other_link ~= '' and other_link ~=  nil then
				text = text	.. ' » ' .. other_link
			
			else
				text = text .. ' » [[:Κατηγορία:Λέξεις με πρόθημα ' 
				.. mw.getContentLanguage():lcfirst(mw.ustring.sub(mw.ustring.match(cat_title, catword .. " με πρόθημα (.*)"), 1, -1))  
				..  ' (' .. lang_name .. ')|Λέξεις με πρόθημα]] ' 
		-- do as in previous: Λέξεις με πρόθημα...	where affix is 	mw.getContentLanguage():lcfirst(mw...........
		if other_word == '' or other_word == nil then
			if show_other == '' or show_other == nil then
			text = text .. ' » [[' .. mw.getContentLanguage():lcfirst(mw.ustring.sub(mw.ustring.match(cat_title, catword .. " με πρόθημα (.*)"), 1, -1)) .. "#" .. languages[lang_iso].link .. '|<b>' .. mw.getContentLanguage():lcfirst(mw.ustring.sub(mw.ustring.match(cat_title, catword .. " με πρόθημα (.*)"), 1, -1)) .. '</b>]]'
			else
			text = text .. ' » [[' .. mw.getContentLanguage():lcfirst(mw.ustring.sub(mw.ustring.match(cat_title, catword .. " με πρόθημα (.*)"), 1, -1)) .. "#" .. languages[lang_iso].link .. '|<b>' .. show_other .. '</b>]]'
			end
		else -- give a different link
			if show_other == '' or show_other == nil then
			text = text .. ' » [[' .. other_word .. "#" .. languages[lang_iso].link .. '|<b>' .. other_word .. '</b>]]'
			else
			text = text .. ' » [[' .. other_word .. "#" .. languages[lang_iso].link .. '|<b>' .. show_other .. '</b>]]'
			end
		end			
				
				
			 
			end -- close other link
			end -- close compound
				text = text .. ' « [[:Κατηγορία:' .. catword .. ' κατά πρόθημα (' .. lang_name .. ')|' .. catword .. ' κατά πρόθημα]]'
			

			-- cat b
-- here, autosort = take off the hyphen at end: autosort  = mw.getContentLanguage():lcfirst(mw.ustring.sub(mw.ustring.match(cat_title, catword .. " με πρόθημα (.*)"), 1, -2))			
			
		if other_category ~= '' and other_category ~= nil then 
			cat = other_category .. "\n" 
			if sort == '' or sort == nil then
				mw.addWarning('<b><span style="color:#b22222; font-size:14px;">Αν χρειάζεται, συμπληρώστε με &#123;&#123;auto cat|xxx}} την κλείδα κατάταξης sort.</span></b>')
				cat = cat .. '[[Κατηγορία:' .. catword .. ' κατά πρόθημα (' .. lang_name .. ')|' .. mw.getContentLanguage():lcfirst(mw.ustring.sub(mw.ustring.match(cat_title, catword .. " με πρόθημα (.*)"), 1, -2)) .. ']]' ..  "\n" 
				else	
				cat = cat .. '[[Κατηγορία:' .. catword .. ' κατά πρόθημα (' .. lang_name .. ')|' .. sort .. ']]' ..  "\n" 
			end
		else
			if compound ~= '' and compound ~=  nil then	-- [[:Κατηγορία:Ανδρικά επώνυμα με πρόθημα Σαρρη- (νέα ελληνικά)]]
				if sort == '' or sort == nil then
				cat = cat .. "[[Κατηγορία:Λέξεις με συνθετικό '" .. compound .. "' (" .. lang_name .. ')|' .. mw.getContentLanguage():lcfirst(mw.ustring.sub(mw.ustring.match(cat_title, catword .. " με πρόθημα (.*)"), 1, -2)) .. ']]'	
				.. '[[Κατηγορία:' .. catword .. ' κατά πρόθημα (' .. lang_name .. ')|' .. mw.getContentLanguage():lcfirst(mw.ustring.sub(mw.ustring.match(cat_title, catword .. " με πρόθημα (.*)"), 1, -2)) .. ']]'
				else
				cat = cat .. "[[Κατηγορία:Λέξεις με συνθετικό '" .. compound .. "' (" .. lang_name .. ')|' .. sort .. ']]'
				.. '[[Κατηγορία:' .. catword .. ' κατά πρόθημα (' .. lang_name .. ')|' .. sort .. ']]'
				end
			else
	
			if other_cat ~= '' and other_cat ~= nil then
				if sort == '' or sort == nil then
				mw.addWarning('<b><span style="color:#b22222; font-size:14px;">Αν χρειάζεται, συμπληρώστε με &#123;&#123;auto cat|xxx}} την κλείδα κατάταξης sort.</span></b>')
				cat = '[[Κατηγορία:Λέξεις με πρόθημα ' .. other_cat  ..  ' (' .. lang_name .. ')|' .. catword .. ']]' ..  "\n"
				.. '[[Κατηγορία:' .. catword .. ' κατά πρόθημα (' .. lang_name .. ')|' .. mw.getContentLanguage():lcfirst(mw.ustring.sub(mw.ustring.match(cat_title, catword .. " με πρόθημα (.*)"), 1, -2)) .. ']]' ..  "\n"
				else
				cat = '[[Κατηγορία:Λέξεις με πρόθημα ' .. other_cat  ..  ' (' .. lang_name .. ')|' .. catword .. ']]' ..  "\n"
				.. '[[Κατηγορία:' .. catword .. ' κατά πρόθημα (' .. lang_name .. ')|' .. sort .. ']]' ..  "\n"
				end
			else -- (no other cat)
				if sort == '' or sort == nil then
				mw.addWarning('<b><span style="color:#b22222; font-size:14px;">Αν χρειάζεται, συμπληρώστε με &#123;&#123;auto cat|xxx}} την κλείδα κατάταξης sort.</span></b>')
				cat = '[[Κατηγορία:Λέξεις με πρόθημα ' .. mw.getContentLanguage():lcfirst(mw.ustring.sub(mw.ustring.match(cat_title, catword .. " με πρόθημα (.*)"), 1, -1))  
				..  ' (' .. lang_name .. ')|' .. catword .. ']]' ..  "\n"

				.. '[[Κατηγορία:' .. catword .. ' κατά πρόθημα (' .. lang_name .. ')|' .. mw.getContentLanguage():lcfirst(mw.ustring.sub(mw.ustring.match(cat_title, catword .. " με πρόθημα (.*)"), 1, -2)) .. ']]' ..  "\n"
				else
				cat = '[[Κατηγορία:Λέξεις με πρόθημα ' .. mw.getContentLanguage():lcfirst(mw.ustring.sub(mw.ustring.match(cat_title, catword .. " με πρόθημα (.*)"), 1, -1))  
				..  ' (' .. lang_name .. ')|' .. catword .. ']]' ..  "\n"
				.. '[[Κατηγορία:' .. catword .. ' κατά πρόθημα (' .. lang_name .. ')|' .. sort .. ']]' ..  "\n"
				end
			end
		end -- close other_category

		end -- close compound category
		
		end -- close cat_parenthesis
	end -- close names+πρόθημα prefix


-- ============== επίθημα suffix + ανδρικά/γυναικεία ονόματα/επώνυμα ================
-- [[:Κατηγορία:Ανδρικά επώνυμα με επίθημα -άρης (νέα ελληνικά)]] -- CHECK [[:Κατηγορία:Ανδρικά επώνυμα κατά επίθημα (νέα ελληνικά)]]
	if mw.ustring.find(cat_title, "Ανδρικά ονόματα με επίθημα") or mw.ustring.find(cat_title, "Ανδρικά ονόματα κατά επίθημα")  then catword = 'Ανδρικά ονόματα' end
	if mw.ustring.find(cat_title, "Ανδρικά επώνυμα με επίθημα") or mw.ustring.find(cat_title, "Ανδρικά επώνυμα κατά επίθημα") then catword = 'Ανδρικά επώνυμα' end
	if mw.ustring.find(cat_title, "Γυναικεία ονόματα με επίθημα") or mw.ustring.find(cat_title, "Γυναικεία ονόματα κατά επίθημα")  then catword = 'Γυναικεία ονόματα' end
	if mw.ustring.find(cat_title, "Γυναικεία επώνυμα με επίθημα") or mw.ustring.find(cat_title, "Γυναικεία επώνυμα κατά επίθημα")  then catword = 'Γυναικεία επώνυμα' end
	if mw.ustring.find(cat_title, "Ονόματα κοινού γένους με επίθημα") or mw.ustring.find(cat_title, "Ονόματα κοινού γένους κατά επίθημα")  then catword = 'Ονόματα κοινού γένους' end
	if mw.ustring.find(cat_title, "Επώνυμα κοινού γένους με επίθημα") or mw.ustring.find(cat_title, "Επώνυμα κοινού γένους κατά επίθημα")  then catword = 'Επώνυμα κοινού γένους' end
	if mw.ustring.find(cat_title, "Τοπωνύμια με επίθημα") or mw.ustring.find(cat_title, "Τοπωνύμια κατά επίθημα")  then catword = 'Τοπωνύμια' end
	
	if mw.ustring.find(cat_title, "Ανδρικά ονόματα με επίθημα") or mw.ustring.find(cat_title, "Ανδρικά επώνυμα με επίθημα")
	or mw.ustring.find(cat_title, "Γυναικεία ονόματα με επίθημα") or mw.ustring.find(cat_title, "Γυναικεία επώνυμα με επίθημα")
	or mw.ustring.find(cat_title, "Ονόματα κοινού γένους με επίθημα") or mw.ustring.find(cat_title, "Επώνυμα κοινού γένους με επίθημα")
	or mw.ustring.find(cat_title, "Τοπωνύμια με επίθημα")
	then
-- a mode, no (language) -- there are no such categories at the moment
		if cat_parenthesis == '' or cat_parenthesis == nil then
			text = text_wikt .. ' » [[:Κατηγορία:Ετυμολογία|Ετυμολογία]] » [[:Κατηγορία:Μορφολογία|Μορφολογία]]'
			if compound ~= '' and compound ~=  nil then
				text = text .. ' » [[:Κατηγορία:Σύνθετα|Σύνθετα]]'
				.. " » [[:Κατηγορία:Λέξεις με συνθετικό '" .. compound .. "'|Λέξεις με συνθετικό]]"
				.. " » [[" .. compound .. "|<b>" .. compound .. "</b>]]"
			else
			text = text .. ' » [[:Κατηγορία:Προσφύματα|Προσφύματα]]'		
			 .. ' » [[:Κατηγορία:Επιθήματα|Επιθήματα]]'

	-- a free edit 
			if other_link ~= '' and other_link ~=  nil then
				text = text	.. ' » ' .. other_link
			else
				text = text .. ' » [[:Κατηγορία:Λέξεις με επίθημα ' 
				.. mw.getContentLanguage():lcfirst(mw.ustring.sub(mw.ustring.match(cat_title, catword .. " με επίθημα (.*)"), 1, -1))  
				..  '|Λέξεις με επίθημα]] ' 
			if other_word ~= '' and other_word ~= nil then text = text .. other_word else	
				text = text .. '[[' .. mw.getContentLanguage():lcfirst(mw.ustring.sub(mw.ustring.match(cat_title, catword .. " με επίθημα (.*)"), 1, -1)) 
				..  "|"
				if show_other == '' or show_other == nil then
				text = text .. '<b>' .. mw.getContentLanguage():lcfirst(mw.ustring.sub(mw.ustring.match(cat_title, catword .. " με επίθημα (.*)"), 1, -1)) .. '</b>]]'
				else
				text = text .. '<b>' .. show_other .. '</b>]]'
				end	
			end
			end -- close other link
			end -- close compound
				text = text .. ' « [[:Κατηγορία:' .. catword .. ' κατά επίθημα|' .. catword .. ' κατά επίθημα]]'
			

			-- cat a

		if other_category ~= '' and other_category ~= nil then 
			cat = other_category .. "\n" 
			if sort == '' or sort == nil then
				mw.addWarning('<b><span style="color:#b22222; font-size:20px;">Συμπληρώστε με &#123;&#123;auto cat|xxx}} την κλείδα κατάταξης sort.</span></b>')
				cat = '[[Κατηγορία:Σελίδες με σφάλμα στο auto cat]]'
				else	
				cat = cat .. '[[Κατηγορία:' .. catword .. ' κατά επίθημα|' .. sort .. ']]' ..  "\n" 
			end
		else
			if other_cat ~= '' and other_cat ~= nil then
				if sort == '' or sort == nil then
				mw.addWarning('<b><span style="color:#b22222; font-size:20px;">Συμπληρώστε με &#123;&#123;auto cat|xxx}} την κλείδα κατάταξης sort.</span></b>')
				cat = '[[Κατηγορία:Σελίδες με σφάλμα στο auto cat]]'
				else
				cat = '[[Κατηγορία:Λέξεις με επίθημα ' .. other_cat  ..  '|' .. catword .. ']]' ..  "\n"
				.. '[[Κατηγορία:' .. catword .. ' κατά επίθημα|' .. sort .. ']]' ..  "\n"
				end
			else -- (no other cat)
				if sort == '' or sort == nil then
				mw.addWarning('<b><span style="color:#b22222; font-size:20px;">Συμπληρώστε με &#123;&#123;auto cat|xxx}} την κλείδα κατάταξης sort.</span></b>')
				cat = '[[Κατηγορία:Σελίδες με σφάλμα στο auto cat]]'
				else
				cat = '[[Κατηγορία:Λέξεις με επίθημα ' 
				.. mw.getContentLanguage():lcfirst(mw.ustring.sub(mw.ustring.match(cat_title, catword .. " με επίθημα (.*)"), 1, -1))  .. '|' .. catword .. ']]' ..  "\n"
				.. '[[Κατηγορία:' .. catword .. ' κατά επίθημα|' .. sort .. ']]' ..  "\n"
				end
			end
		end -- close other_category
		if compound ~= '' and compound ~=  nil then	
			cat = cat .. "[[Κατηγορία:Λέξεις με συνθετικό '" .. compound .. "'|" .. sort .. ']]'
		end

		else -- with language
-- b mode
			text = text_lang .. ' » [[:Κατηγορία:Ετυμολογία (' .. lang_name .. ')|Ετυμολογία]]'
			.. ' » [[:Κατηγορία:Μορφολογία (' .. lang_name .. ')|Μορφολογία]]'
			if compound ~= '' and compound ~=  nil then
				text = text .. ' » [[:Κατηγορία:Σύνθετα (' .. lang_name .. ')|Σύνθετα]]'
				.. " » [[:Κατηγορία:Λέξεις με συνθετικό '" .. compound .. "' (" .. lang_name .. ")|Λέξεις με συνθετικό]]"
				.. " » [[" .. compound .. "#" .. languages[lang_iso].link .. "|<b>" .. compound .. "</b>]]"
			
			else
			text = text .. ' » [[:Κατηγορία:Προσφύματα (' .. lang_name .. ')|Προσφύματα]]'
			.. ' » [[:Κατηγορία:Επιθήματα (' .. lang_name .. ')|Επιθήματα]]'

			-- b free edit
			if other_link ~= '' and other_link ~=  nil then
				text = text	.. ' » ' .. other_link
			
			else
				text = text .. ' » [[:Κατηγορία:Λέξεις με επίθημα ' 
				.. mw.getContentLanguage():lcfirst(mw.ustring.sub(mw.ustring.match(cat_title, catword .. " με επίθημα (.*)"), 1, -1))  
				..  ' (' .. lang_name .. ')|Λέξεις με επίθημα]] ' 
		-- do as in previous:  where affix is 	mw.getContentLanguage():lcfirst(mw...........
		if other_word == '' or other_word == nil then
			if show_other == '' or show_other == nil then
			text = text .. ' » [[' .. mw.getContentLanguage():lcfirst(mw.ustring.sub(mw.ustring.match(cat_title, catword .. " με επίθημα (.*)"), 1, -1)) .. "#" .. languages[lang_iso].link .. '|<b>' .. mw.getContentLanguage():lcfirst(mw.ustring.sub(mw.ustring.match(cat_title, catword .. " με επίθημα (.*)"), 1, -1)) .. '</b>]]'
			else
			text = text .. ' » [[' .. mw.getContentLanguage():lcfirst(mw.ustring.sub(mw.ustring.match(cat_title, catword .. " με επίθημα (.*)"), 1, -1)) .. "#" .. languages[lang_iso].link .. '|<b>' .. show_other .. '</b>]]'
			end
		else -- give a different link
			if show_other == '' or show_other == nil then
			text = text .. ' » [[' .. other_word .. "#" .. languages[lang_iso].link .. '|<b>' .. other_word .. '</b>]]'
			else
			text = text .. ' » [[' .. other_word .. "#" .. languages[lang_iso].link .. '|<b>' .. show_other .. '</b>]]'
			end
		end			
				
				
			 
			end -- close other link
			end -- close compound
				text = text .. ' « [[:Κατηγορία:' .. catword .. ' κατά επίθημα (' .. lang_name .. ')|' .. catword .. ' κατά επίθημα]]'
			

			-- cat b
-- here, autosort = take off the hyphen at beginning: autosort  = mw.getContentLanguage():lcfirst(mw.ustring.sub(mw.ustring.match(cat_title, catword .. " με επίθημα (.*)"), 2, -1))			
			
		if other_category ~= '' and other_category ~= nil then 
			cat = other_category .. "\n" 
			if sort == '' or sort == nil then
				mw.addWarning('<b><span style="color:#b22222; font-size:14px;">Αν χρειάζεται, συμπληρώστε με &#123;&#123;auto cat|xxx}} την κλείδα κατάταξης sort.</span></b>')
				cat = cat .. '[[Κατηγορία:' .. catword .. ' κατά επίθημα (' .. lang_name .. ')|' .. mw.getContentLanguage():lcfirst(mw.ustring.sub(mw.ustring.match(cat_title, catword .. " με επίθημα (.*)"), 2, -1)) .. ']]' ..  "\n" 
				else	
				cat = cat .. '[[Κατηγορία:' .. catword .. ' κατά επίθημα (' .. lang_name .. ')|' .. sort .. ']]' ..  "\n" 
			end
		else
			if compound ~= '' and compound ~=  nil then
				if sort == '' or sort == nil then
				cat = cat .. "[[Κατηγορία:Λέξεις με συνθετικό '" .. compound .. "' (" .. lang_name .. ')|' .. mw.getContentLanguage():lcfirst(mw.ustring.sub(mw.ustring.match(cat_title, catword .. " με επίθημα (.*)"), 2, -1)) .. ']]'	
				.. '[[Κατηγορία:' .. catword .. ' κατά επίθημα (' .. lang_name .. ')|' .. mw.getContentLanguage():lcfirst(mw.ustring.sub(mw.ustring.match(cat_title, catword .. " με επίθημα (.*)"), 2, -1)) .. ']]'
				else
				cat = cat .. "[[Κατηγορία:Λέξεις με συνθετικό '" .. compound .. "' (" .. lang_name .. ')|' .. sort .. ']]'
				.. '[[Κατηγορία:' .. catword .. ' κατά επίθημα (' .. lang_name .. ')|' .. sort .. ']]'
				end
			else
	
			if other_cat ~= '' and other_cat ~= nil then
				if sort == '' or sort == nil then
				mw.addWarning('<b><span style="color:#b22222; font-size:14px;">Αν χρειάζεται, συμπληρώστε με &#123;&#123;auto cat|xxx}} την κλείδα κατάταξης sort.</span></b>')
				cat = '[[Κατηγορία:Λέξεις με επίθημα ' .. other_cat  ..  ' (' .. lang_name .. ')|' .. catword .. ']]' ..  "\n"
				.. '[[Κατηγορία:' .. catword .. ' κατά επίθημα (' .. lang_name .. ')|' .. mw.getContentLanguage():lcfirst(mw.ustring.sub(mw.ustring.match(cat_title, catword .. " με επίθημα (.*)"), 2, -1)) .. ']]' ..  "\n"
				else
				cat = '[[Κατηγορία:Λέξεις με επίθημα ' .. other_cat  ..  ' (' .. lang_name .. ')|' .. catword .. ']]' ..  "\n"
				.. '[[Κατηγορία:' .. catword .. ' κατά επίθημα (' .. lang_name .. ')|' .. sort .. ']]' ..  "\n"
				end
			else -- (no other cat)
				if sort == '' or sort == nil then
				mw.addWarning('<b><span style="color:#b22222; font-size:14px;">Αν χρειάζεται, συμπληρώστε με &#123;&#123;auto cat|xxx}} την κλείδα κατάταξης sort.</span></b>')
				cat = '[[Κατηγορία:Λέξεις με επίθημα ' .. mw.getContentLanguage():lcfirst(mw.ustring.sub(mw.ustring.match(cat_title, catword .. " με επίθημα (.*)"), 1, -1))  
				..  ' (' .. lang_name .. ')|' .. catword .. ']]' ..  "\n"

				.. '[[Κατηγορία:' .. catword .. ' κατά επίθημα (' .. lang_name .. ')|' .. mw.getContentLanguage():lcfirst(mw.ustring.sub(mw.ustring.match(cat_title, catword .. " με επίθημα (.*)"), 2, -1)) .. ']]' ..  "\n"
				else
				cat = '[[Κατηγορία:Λέξεις με επίθημα ' .. mw.getContentLanguage():lcfirst(mw.ustring.sub(mw.ustring.match(cat_title, catword .. " με επίθημα (.*)"), 1, -1))  
				..  ' (' .. lang_name .. ')|' .. catword .. ']]' ..  "\n"
				.. '[[Κατηγορία:' .. catword .. ' κατά επίθημα (' .. lang_name .. ')|' .. sort .. ']]' ..  "\n"
				end
			end
		end -- close other_category

		end -- close compound category
		
		end -- close cat_parenthesis
	end -- close names+επίθημα suffix


-- ============== phrasal verbs  με το ...  ================
	if mw.ustring.find(cat_title, "Phrasal verbs με το") then

-- a mode, no (language) -- there are no such categories at the moment
		if cat_parenthesis == '' or cat_parenthesis == nil then
			text = text_wikt .. ' » [[:Κατηγορία:Γραμματικές κατηγορίες|Γραμματικές κατηγορίες]]'
			.. ' » [[:Κατηγορία:Ρήματα|Ρήματα]]'
			.. ' » [[:Κατηγορία:Phrasal verbs|Phrasal verbs]]'
			if show_other == '' or show_other == nil then
				text = text
				.. ' » με το <b>[[' .. mw.ustring.sub(mw.ustring.match(cat_title, "Phrasal verbs με το (.*)"), 1, -1) .. ']]</b>'
			else
				text = text .. ' » <b>' .. show_other .. '</b>'
			end
			
			-- cat a
			cat = '[[Κατηγορία:Phrasal verbs|' .. mw.ustring.sub(mw.ustring.match(cat_title, "Phrasal verbs με το (.*)"), 1, -1) .. ']]' ..  "\n"

		else -- with language
-- b mode e.g. [[:Κατηγορία:Phrasal verbs με το out (αγγλικά)]]
			text = text_lang .. ' » [[:Κατηγορία:Γραμματικές κατηγορίες (' .. lang_name .. ')|Γραμματικές κατηγορίες]]'
			.. ' » [[:Κατηγορία:Ρήματα (' .. lang_name .. ')|Ρήματα]]'
			.. ' » [[:Κατηγορία:Phrasal verbs (' .. lang_name .. ')|Phrasal verbs]]'
			if show_other == '' or show_other == nil then
				text = text
				.. ' » με το [[' .. mw.ustring.sub(mw.ustring.match(cat_title, "Phrasal verbs με το (.*)"), 1, -1) 
				.. "#" .. languages[lang_iso].link 
				.. "|<b>" .. mw.ustring.sub(mw.ustring.match(cat_title, "Phrasal verbs με το (.*)"), 1, -1) .. '</b>]]'
			else
				text = text .. ' » <b>' .. show_other .. '</b>'
			end
			
			-- cat b
			cat = '[[Κατηγορία:Phrasal verbs (' .. lang_name .. ')|' .. mw.ustring.sub(mw.ustring.match(cat_title, "Phrasal verbs με το (.*)"), 1, -1) .. ']]' ..  "\n"
		
		end -- close cat_parenthesis
	end -- close phrasal verbs



--------------------------------------------------------------------------
--                     Ετυμολογία Etymology                             --
--                FUCNTIONS apota : from xx language)                   --
--------------------------------------------------------------------------
-- e.g. [[:Κατηγορία:Δανεισμοί από τα αγγλικά]]- [[:Κατηγορία:Δανεισμοί από τα αγγλικά (νέα ελληνικά)]]
-- ============ apota: match the last part of the cat_title with Module:languages param. apota (από ...)
--[=[
1) extract apota from cat_title
2) match it with [[Module:Languages]].apota -- I do not know how to match it.
	instead, i write manually the first part of the title, and substract it. What is left is 'supposed' to match to [[Module:Languages]].apota
3) get its lang_iso2 from [[Module:lang]] with function p.langapota_to_langiso(apota)
4) cat_title minus apota = apota_label
The possible pattern of apota is: από+space+...word or words at the END of the category name.
The word 'από' appears also in keyword 'from' where the word 'προέλευση' is always found.
-- TEST PAGES
	-- [[:Κατηγορία:Δάνεια από τα γαλλικά]]
	-- [[:Κατηγορία:Δάνεια από τα γαλλικά (νέα ελληνικά)]]
Expressions with από to avoid
* από το [[:Κατηγορία:Λέξεις με πρόθημα δι- από το δις (νέα ελληνικά)]]
* all expressions from [[Template:από]]
* λέξεις που έχουν α-π-ο όπως «απόλυτα»
]=]--

-- ++ -- NOT Λέξεις από: βλ. [[Πρότυπο:από]]
function get_apota_text(apota_text)
	if mw.ustring.find(cat_title, 'από') and not mw.ustring.find(cat_title, 'από το') and not mw.ustring.find(cat_title, 'αναδρομικό')
	and not mw.ustring.find(cat_title, 'ρίζα') and not mw.ustring.find(cat_title, 'ρίζες')
	and not mw.ustring.find(cat_title, 'από ανθρωπωνύμια') and not mw.ustring.find(cat_title, 'από διαφημίσεις') and not mw.ustring.find(cat_title, 'από επαγγέλματα') 
	and not mw.ustring.find(cat_title, 'από εθνικά ονόματα') and not mw.ustring.find(cat_title, 'από επωνυμίες') and not mw.ustring.find(cat_title, 'από ονόματα')
	and not mw.ustring.find(cat_title, 'από παρωνύμια') and not mw.ustring.find(cat_title, 'από τοπωνύμια')
	and not mw.ustring.find(cat_title, 'από τις τέχνες') and not mw.ustring.find(cat_title, 'από τον') and not mw.ustring.find(cat_title, 'από τα έργα')
	and not mw.ustring.find(cat_title, 'από καλλιτεχνικά έργα') 
	and not mw.ustring.find(cat_title, 'Λέξεις από') and not mw.ustring.find(cat_title, 'ως προς')  and not mw.ustring.find(cat_title, 'απόστολος')
	and not mw.ustring.find(cat_title, 'από επιγραφές') and not mw.ustring.find(cat_title, 'από νόμους') -- [[Πρότυπο:παράθεμα]] Λήμματα με παραθέματα από νόμους, από επιγραφές
		and not mw.ustring.find(cat_title, 'από δημοτικά τραγούδια') 
	and not mw.ustring.find(cat_title, 'πρόθημα από') and not mw.ustring.find(cat_title, 'απόλυτα')
	then 
--	apota_text = "από " .. mw.ustring.sub(mw.ustring.match(cat_title, "[α][π][ό]%s(.+)"), 1, -1)	-- gives από + τα αγγλικά
	apota_text = "από " .. mw.ustring.sub(mw.ustring.match(cat_title, "από (.*)"), 1, -1)			-- capture as by Benwing2
	end
return apota_text
end

-- I CANNOT match apota_text with [[Module:Languages]].apota.

function get_apota(iso2)
	lang_iso2 = require("Module:lang").langapota_to_langiso(get_apota_text(apota_text))
return lang_iso2
end

function get_apota_label(apota_label)
	length = mw.ustring.len(get_apota_text(apota_text))
	apota_label = mw.ustring.sub(cat_title, 1, -length-1) -- length gives me: Label α.  So, i substract one more.
return apota_label
end

-- -------------------- APPLICATIONS apota -------------------------
-- ety 3 a + apota etymology
	if mw.ustring.find(cat_title, 'από') and not mw.ustring.find(cat_title, 'από το') and not mw.ustring.find(cat_title, 'αναδρομικό')
	and not mw.ustring.find(cat_title, 'ρίζα') and not mw.ustring.find(cat_title, 'ρίζες')
	and not mw.ustring.find(cat_title, 'από ανθρωπωνύμια') and not mw.ustring.find(cat_title, 'από διαφημίσεις') and not mw.ustring.find(cat_title, 'από επαγγέλματα') 
	and not mw.ustring.find(cat_title, 'από εθνικά ονόματα') and not mw.ustring.find(cat_title, 'από επωνυμίες') and not mw.ustring.find(cat_title, 'από ονόματα')
	and not mw.ustring.find(cat_title, 'από παρωνύμια') and not mw.ustring.find(cat_title, 'από τοπωνύμια')
	and not mw.ustring.find(cat_title, 'από τις τέχνες') and not mw.ustring.find(cat_title, 'από τον') and not mw.ustring.find(cat_title, 'από τα έργα')
	and not mw.ustring.find(cat_title, 'από καλλιτεχνικά έργα') 
	and not mw.ustring.find(cat_title, 'Λέξεις από') and not mw.ustring.find(cat_title, 'ως προς') and not mw.ustring.find(cat_title, 'απόστολος')
	and not mw.ustring.find(cat_title, 'από επιγραφές') and not mw.ustring.find(cat_title, 'από νόμους') -- [[Πρότυπο:παράθεμα]] Λήμματα με παραθέματα από νόμους, από επιγραφές
		and not mw.ustring.find(cat_title, 'από δημοτικά τραγούδια') 
	and not mw.ustring.find(cat_title, 'πρόθημα από') and not mw.ustring.find(cat_title, 'απόλυτα')
	then 
		lang_iso2 = get_apota(apota_text)
		apota_text = get_apota_text(cat_title)
		apota_label = get_apota_label(cat_title)
	-- text b + hosted languages IF THERE IS MORE ?????????? checkthis
	if languages[lang_iso2].sublang == true then -- [[:Κατηγορία:Προέλευση λέξεων από την ελληνιστική κοινή]]
		text = '[[:Κατηγορία:' .. languages[lang_iso2].host .. '|<b>' .. languages[lang_iso2].host_show .. '</b>]]'
		.. lang_cat .. '|' .. lang_cat .. ']]'
	end	



-- APOTA + Προέλ/Δανεισμ/Κλη/Παραγωγή etc ======απευθείας στο parent = Ετυμολογία
		-- test[[:Κατηγορία:Προέλευση λέξεων από τα αγγλικά]] -- [[:Κατηγορία:Προέλευση λέξεων από τα αγγλικά (νέα ελληνικά)
		-- [[:Κατηγορία:Προέλευση λέξεων από τα αρχαία ελληνικά]] [[:Κατηγορία:Κληρονομημένες λέξεις από τα αρχαία ελληνικά (νέα ελληνικά)]]
		if mw.ustring.find(cat_title, 'από') and 
		(mw.ustring.find(cat_title, 'Προέλευση λέξεων') or mw.ustring.find(cat_title, 'Κληρονομημένες λέξεις') 
			or mw.ustring.find(cat_title, 'Παραγωγή λέξεων') or mw.ustring.find(cat_title, 'Δανεισμοί'))
		and not mw.ustring.find(cat_title, 'ρίζα') and not mw.ustring.find(cat_title, 'ρίζες')
		then
		lang_iso2 = get_apota(apota_text)
		apota_text = get_apota_text(cat_title)
		apota_label = get_apota_label(cat_title)
		if mw.ustring.find(cat_title, 'Προέλευση λέξεων') then write_cat = 'Προέλευση λέξεων' end
		if mw.ustring.find(cat_title, 'Παραγωγή λέξεων') then write_cat = 'Παραγωγή λέξεων' end
		if mw.ustring.find(cat_title, 'Κληρονομημένες λέξεις') then write_cat = 'Κληρονομημένες λέξεις' end
		if mw.ustring.find(cat_title, 'Δανεισμοί') then write_cat = 'Δανεισμοί' end
-- apota a mode
			if cat_parenthesis == '' or cat_parenthesis == nil then

				text = text_wikt .. ' » [[:Κατηγορία:Ετυμολογία|Ετυμολογία]]'
				.. ' » [[:Κατηγορία:' .. write_cat .. '|' .. write_cat .. ']] » [[:Κατηγορία:' .. cat_title .. '|'  .. languages[lang_iso2].apota .. ']]'
				.. ' « [[:Κατηγορία:Ετυμολογία (' .. languages[lang_iso2].name ..  ')|<i>Ετυμολογία</i>]]'
				.. ' « [[:Κατηγορία:' .. languages[lang_iso2].cat ..  '|<i>' .. mw.getContentLanguage():ucfirst(languages[lang_iso2].name) .. '</i>]]'
				if write_cat == 'Προέλευση λέξεων' then
					text_plus = descr_der .. "<br>" 
					.. '&nbsp;  &nbsp;  Ειδικότερα, περιλαμβάνει ' .. '[[:Κατηγορία:Κληρονομημένες λέξεις ' .. apota_text .. '|κληρονομημένες λέξεις]]'
					.. ' και ' .. '[[:Κατηγορία:Δανεισμοί ' .. apota_text .. '|δανεισμούς]].'
				end
				
				-- cat a e.g. [[:Κατηγορία:Προέλευση λέξεων από τα νεολατινικά]]
				if languages[lang_iso2].sublang then
					cat = '[[Κατηγορία:' .. write_cat .. ' (' .. languages[lang_iso2].name .. ')|' .. "'" .. ']]' .. "\n"
					.. '[[Κατηγορία:' .. write_cat .. ' ' .. languages[lang_iso2].host_apota .. '|' .. languages[lang_iso2].apota_key .. ']]' .. "\n"
				else
					cat = '[[Κατηγορία:' .. write_cat ..' (' .. languages[lang_iso2].name  .. ')|' .. "'" .. ']]' .. "\n"
				end


			else
-- apota b mode  -- [[:Κατηγορία:Προέλευση λέξεων από τα αρχαία ελληνικά (νέα ελληνικά)]]
				text = text_lang ..  ' » [[:Κατηγορία:Ετυμολογία (' ..	lang_name .. ')|Ετυμολογία]]' 
				.. ' » [[:Κατηγορία:' .. write_cat .. ' (' .. lang_name .. ')|' .. write_cat .. ']] » [[:Κατηγορία:' .. page_text .. '|' .. languages[lang_iso2].apota .. ']]'
				.. ' [[:Κατηγορία:' .. cat_title .. '|«««]]'
				.. ' « [[:Κατηγορία:Ετυμολογία (' .. languages[lang_iso2].name ..  ')|<i>Ετυμολογία</i>]]'
				.. ' « [[:Κατηγορία:' .. languages[lang_iso2].cat ..  '|<i>' .. mw.getContentLanguage():ucfirst(languages[lang_iso2].name) .. '</i>]]'
				if write_cat == 'Προέλευση λέξεων' then
					text_plus =  descr_der .. "<br>" 
					-- e.g. [[:Κατηγορία:Προέλευση λέξεων από τα οθωμανικά τουρκικά (νέα ελληνικά)]]
--					.. '&nbsp;  &nbsp;  Ειδικότερα, περιλαμβάνει ' .. '[[:Κατηγορία:Κληρονομημένες λέξεις ' .. apota_text .. ' (' .. lang_name .. ')|κληρονομημένες λέξεις]]'
--					.. ' και ' .. '[[:Κατηγορία:Δανεισμοί ' .. apota_text .. ' (' .. lang_name .. ')|δανεισμούς]].'
				end
				
				-- cat b
				-- [[:Κατηγορία:Προέλευση λέξεων (ελληνιστική κοινή)]] is  OK at level_2
				-- [[:Κατηγορία:Προέλευση λέξεων από την ελληνιστική κοινή]] - ΟΚ at mode a

				-- [[:Κατηγορία:Προέλευση λέξεων από τα λατινικά (ελληνιστική κοινή)]]
				if languages[lang_iso].sublang == true and not languages[lang_iso2].sublang == true then
					cat = '[[Κατηγορία:' .. write_cat .. ' ' .. apota_text  .. ' (' .. languages[lang_iso].host_name  .. ')|' .. languages[lang_iso].host_key.. ']]' .. "\n"
					.. '[[Κατηγορία:' .. write_cat .. ' (' .. languages[lang_iso].name  .. ')|' .. languages[lang_iso2]['key'] .. ']]' .. "\n"	
				-- [[:Κατηγορία:Προέλευση λέξεων από την ελληνιστική κοινή (νέα ελληνικά)]]
				elseif languages[lang_iso2].sublang == true and not languages[lang_iso].sublang == true then
					cat = '[[Κατηγορία:' .. write_cat .. ' ' .. apota_text  .. '|' .. languages[lang_iso]['key'].. ']]' .. "\n"
					.. '[[Κατηγορία:' .. write_cat .. ' ' .. languages[lang_iso2].host_apota .. ' (' .. languages[lang_iso].name .. ')|' .. languages[lang_iso2].apota_key .. ']]' .. "\n"
					.. '[[Κατηγορία:' .. write_cat .. ' (' .. languages[lang_iso2].name  .. ')|' .. languages[lang_iso]['key'] .. ']]' .. "\n"	
				-- [[:Κατηγορία:Προέλευση λέξεων από τα μεσαιωνικά λατινικά (ελληνιστική κοινή)]]
				elseif languages[lang_iso].sublang == true and  languages[lang_iso2].sublang == true then
					cat = '[[Κατηγορία:' .. write_cat .. ' ' .. apota_text  .. '|' .. languages[lang_iso]['key'].. ']]' .. "\n"
					.. '[[Κατηγορία:' .. write_cat .. ' ' .. apota_text  .. ' (' .. languages[lang_iso].host_name  .. ')|' .. languages[lang_iso].host_key.. ']]' .. "\n"
					.. '[[Κατηγορία:' .. write_cat .. ' ' .. languages[lang_iso2].host_apota .. ' (' .. languages[lang_iso].name .. ')|' .. languages[lang_iso2].apota_key .. ']]' .. "\n"
					.. '[[Κατηγορία:' .. write_cat .. ' (' .. languages[lang_iso].name  .. ')|' .. languages[lang_iso2]['key'] .. ']]' .. "\n"
				-- [[:Κατηγορία:Προέλευση λέξεων από τα αγγλικά (νέα ελληνικά)]]
				else
					cat = '[[Κατηγορία:' .. write_cat .. ' ' .. apota_text  .. '|' .. languages[lang_iso]['key'].. ']]' .. "\n"
					.. '[[Κατηγορία:' .. write_cat .. ' (' .. languages[lang_iso].name  .. ')|' .. languages[lang_iso2].key .. ']]' .. "\n"
				end
			end -- close parenthesis
		end -- close προελ, κλη, +apota + παρεντ = 'Ετυμολογία'
		


-- APOTA + διάφορα είδη δανεισμών ============ με parent = Δανεισμοί
-- apota for data.ety_loans	CANNOT match apota_label TO data.ety_loans I will do them one by one.
--		write_cat = ''
	if mw.ustring.find(cat_title, 'από') and not mw.ustring.find(cat_title, 'προέλευση') and not mw.ustring.find(cat_title, 'από τα έργα')
	and not mw.ustring.find(cat_title, 'παραγωγή') and not mw.ustring.find(cat_title, 'δανεισμοί')
	and not mw.ustring.find(cat_title, 'απόλυτα')
		and (mw.ustring.find(cat_title, 'Αντιδάνεια') or mw.ustring.find(cat_title, 'Λόγια δάνεια') 
			or mw.ustring.find(cat_title, 'Μεταφραστικά δάνεια')  or mw.ustring.find(cat_title, 'Σημασιολογικά δάνεια') or mw.ustring.find(cat_title, 'Ορθογραφικά δάνεια')
			or mw.ustring.find(cat_title, 'Μεταφραστικές αποδόσεις') or mw.ustring.find(cat_title, 'Φωνητικές αποδόσεις')
			or mw.ustring.find(cat_title, 'Μεταγραμμένοι όροι')
			or (mw.ustring.find(cat_title, 'Δάνεια') and not mw.ustring.find(cat_title, '-'))) 
		then
		lang_iso2 = get_apota(apota_text)
		apota_text = get_apota_text(cat_title)
		apota_label = get_apota_label(cat_title)
		
		write_text = ''
		if mw.ustring.find(cat_title, 'Δάνεια') then 
			write_cat = 'Δάνεια'
			text_plus = '<dl><dd>[[δάνειο|Άμεσα γλωσσικά δάνεια]] από μία γλώσσα σε άλλη με την επαφή των ομιλητών. Δείτε και τα λόγια δάνεια.</dd></dl>'
		end
		if mw.ustring.find(cat_title, 'Λόγια δάνεια') then 
			write_cat = 'Δάνεια'
			text_plus = '<dl><dd>[[λόγιο δάνειο|Λόγια γλωσσικά δάνεια]] δημιουργημένα από λογίους, συγγραφείς, επιστήμονες. Δείτε και τα άμεσα λαϊκά δάνεια.</dd></dl>'
		end
				-- [[:Κατηγορία:Δάνεια από τα αγγλικά]] -- [[:Κατηγορία:Δάνεια από τα αγγλικά (νέα ελληνικά)]]
		if mw.ustring.find(cat_title, 'Λόγια δάνεια') then write_cat = 'Λόγια δάνεια' end 
		-- [[:Κατηγορία:Λόγια δάνεια από τα αγγλικά]] -- [[:Κατηγορία:Λόγια δάνεια από τα αγγλικά (νέα ελληνικά)]]
		if mw.ustring.find(cat_title, 'Αντιδάνεια') then write_cat = 'Αντιδάνεια' end
		if mw.ustring.find(cat_title, 'Μεταφραστικά δάνεια') then write_cat = 'Μεταφραστικά δάνεια' end
		if mw.ustring.find(cat_title, 'Ορθογραφικά δάνεια') then write_cat = 'Ορθογραφικά δάνεια' end
		if mw.ustring.find(cat_title, 'Σημασιολογικά δάνεια') then write_cat = 'Σημασιολογικά δάνεια' end
		if mw.ustring.find(cat_title, 'Μεταφραστικές αποδόσεις') then write_cat = 'Μεταφραστικές αποδόσεις' end
		if mw.ustring.find(cat_title, 'Φωνητικές αποδόσεις') then write_cat = 'Φωνητικές αποδόσεις' end
		if mw.ustring.find(cat_title, 'Μεταγραμμένοι όροι') then write_cat = 'Μεταγραμμένοι όροι' end
		
--		if write_cat ~= '' and write_cat ~= nil then
-- a mode
			if cat_parenthesis == '' or cat_parenthesis == nil then
				text = text_wikt .. ' » [[:Κατηγορία:Ετυμολογία|Ετυμολογία]]'
				.. ' » [[:Κατηγορία:Δανεισμοί|Δανεισμοί]] » [[:Κατηγορία:' .. apota_label .. '|' .. apota_label .. ']]'
				.. ' » [[:Κατηγορία:' .. cat_title .. '|'  .. languages[lang_iso2].apota .. ']]'
				.. ' « [[:Κατηγορία:Ετυμολογία (' .. languages[lang_iso2].name ..  ')|<i>Ετυμολογία</i>]]'
				.. ' « [[:Κατηγορία:' .. languages[lang_iso2].cat ..  '|<i>' .. mw.getContentLanguage():ucfirst(languages[lang_iso2].name) .. '</i>]]'
-- too much
--				if mw.ustring.find(cat_title, 'Μεταφραστικά δάνεια') and cat_lang ~= 'ελληνιστική κοινή' then -- [[:Κατηγορία:Μεταφραστικά δάνεια από τα γαλλικά]]
--					text = text  .. "\n"
--					..	frame:expandTemplate{ title = 'δείτε', args = {':Κατηγορία:Μεταφραστικές αποδόσεις ' .. apota_text } } .. "\n"
--				end
--				if mw.ustring.find(cat_title, 'Μεταφραστικές αποδόσεις') and cat_lang ~= 'ελληνιστική κοινή' then -- [[:Κατηγορία:Μεταφραστικές αποδόσεις από τα γαλλικά]]
--					text = text  .. "\n"
--					..	frame:expandTemplate{ title = 'δείτε', args = {':Κατηγορία:Μεταφραστικά δάνεια ' .. apota_text} } .. "\n"
--				end		
				
				-- cat a  [[:Κατηγορία:Λόγια δάνεια από την ελληνιστική κοινή]]
				if languages[lang_iso2].sublang then
					cat = '[[Κατηγορία:' .. apota_label .. ' (' .. languages[lang_iso2].name .. ')|' .. "'" .. ']]' .. "\n"
					.. '[[Κατηγορία:' .. write_cat .. ' ' .. languages[lang_iso2].host_apota .. '|' .. languages[lang_iso2].apota_key .. ']]' .. "\n"
					.. '[[Κατηγορία:Δανεισμοί ' .. apota_text .. '|' .. languages[lang_iso2].apota_key .. ']]' .. "\n"
				else
				cat = '[[Κατηγορία:' .. apota_label .. ' (' .. languages[lang_iso2].name  .. ')|' .. "'" .. ']]' .. "\n"
				.. '[[Κατηγορία:Δανεισμοί ' .. apota_text  .. '| ' .. cat_title ..  ']]' .. "\n" -- sort top -- ???? NOT POSSIBLE data.label[write_text]['key']
				end
-- b mode
			else

				text = text_lang ..  ' » [[:Κατηγορία:Ετυμολογία (' ..	lang_name .. ')|Ετυμολογία]]'
				.. ' » [[:Κατηγορία:Δανεισμοί (' ..	lang_name .. ')|Δανεισμοί]]'
				.. ' » [[:Κατηγορία:' .. apota_label .. ' (' ..	lang_name .. ')|' .. apota_label .. ']]'
				.. ' » [[:Κατηγορία:' .. page_text .. '|' .. languages[lang_iso2].apota .. ']]'
				.. ' « [[:Κατηγορία:Ετυμολογία (' .. languages[lang_iso2].name ..  ')|<i>Ετυμολογία</i>]]'
				.. ' « [[:Κατηγορία:' .. languages[lang_iso2].cat ..  '|<i>' .. mw.getContentLanguage():ucfirst(languages[lang_iso2].name) .. '</i>]]'		
-- too much
--				if mw.ustring.find(cat_title, 'Μεταφραστικά δάνεια') and cat_lang ~= 'ελληνιστική κοινή' then -- [[:Κατηγορία:Μεταφραστικά δάνεια από τα γαλλικά (νέα ελληνικά)]]
--					text = text  .. "\n"
--					..	frame:expandTemplate{ title = 'δείτε', args = {':Κατηγορία:Μεταφραστικές αποδόσεις ' .. apota_text .. ' (' .. lang_name .. ')' } } .. "\n"
--				end
--				if mw.ustring.find(cat_title, 'Μεταφραστικές αποδόσεις') and cat_lang ~= 'ελληνιστική κοινή' then -- [[:Κατηγορία:Μεταφραστικές αποδόσεις από τα γαλλικά (νέα ελληνικά)]]
--					text = text  .. "\n"
--					..	frame:expandTemplate{ title = 'δείτε', args = {':Κατηγορία:Μεταφραστικά δάνεια ' .. apota_text .. ' (' .. lang_name .. ')' } } .. "\n"
--				end	
				
				-- cat b
				-- [[:Κατηγορία:Δάνεια από τα λατινικά (ελληνιστική κοινή)]]
				if languages[lang_iso].sublang == true and not languages[lang_iso2].sublang == true then
					cat = '[[Κατηγορία:' .. write_cat .. ' ' .. apota_text  .. '|' .. languages[lang_iso]['key'].. ']]' .. "\n"
					.. '[[Κατηγορία:' .. write_cat .. ' ' .. apota_text  .. ' (' .. languages[lang_iso].host_name  .. ')|' .. languages[lang_iso].host_key.. ']]' .. "\n"
					.. '[[Κατηγορία:' .. write_cat .. ' (' .. languages[lang_iso].name  .. ')|' .. languages[lang_iso2]['key'] .. ']]' .. "\n"
				-- [[:Κατηγορία:Δάνεια από τα νεολατινικά (νέα ελληνικά)]]
				elseif languages[lang_iso2].sublang == true and not languages[lang_iso].sublang == true then
					cat = '[[Κατηγορία:' .. write_cat .. ' ' .. apota_text  .. '|' .. languages[lang_iso]['key'].. ']]' .. "\n"
					.. '[[Κατηγορία:' .. write_cat .. ' ' .. languages[lang_iso2].host_apota .. ' (' .. languages[lang_iso].name .. ')|' .. languages[lang_iso2].apota_key .. ']]' .. "\n"
--					.. '[[Κατηγορία:' .. write_cat .. ' (' .. languages[lang_iso].name  .. ')| ' .. languages[lang_iso].key .. ']]' .. "\n"	-- sort top
				-- [[:Κατηγορία:Δάνεια από τα μεσαιωνικά λατινικά (ελληνιστική κοινή)]]
				elseif languages[lang_iso].sublang == true and  languages[lang_iso2].sublang == true then
					cat = '[[Κατηγορία:' .. write_cat .. ' ' .. apota_text  .. '|' .. languages[lang_iso]['key'].. ']]' .. "\n"
					.. '[[Κατηγορία:' .. write_cat .. ' ' .. apota_text  .. ' (' .. languages[lang_iso].host_name  .. ')|' .. languages[lang_iso].host_key.. ']]' .. "\n"
					.. '[[Κατηγορία:' .. write_cat .. ' ' .. languages[lang_iso2].host_apota .. ' (' .. languages[lang_iso].name .. ')|' .. languages[lang_iso2].apota_key .. ']]' .. "\n"
					.. '[[Κατηγορία:' .. write_cat .. ' (' .. languages[lang_iso].name .. ')|' .. languages[lang_iso2]['key'] .. ']]' .. "\n"
				-- [[:Κατηγορία:Δάνεια από τα αγγλικά (νέα ελληνικά)]]
				else
					cat = '[[Κατηγορία:' .. write_cat .. ' ' .. apota_text  .. '|' .. languages[lang_iso]['key'].. ']]' .. "\n"
					.. '[[Κατηγορία:Δανεισμοί ' .. apota_text .. ' (' .. languages[lang_iso].name .. ')|' .. languages[lang_iso].key .. ']]' .. "\n" -- πλεονασμός
					.. '[[Κατηγορία:' .. write_cat .. ' (' .. languages[lang_iso].name  .. ')|' .. languages[lang_iso2].key .. ']]' .. "\n" 
					-- [[:Κατηγορία:Μεταφραστικά δάνεια από τα λατινικά (αλβανικά)]]
				end	

			end -- close cat_parenthesis
--		end -- close if write_cat
	end -- close write_cat apota with parent = 'Δανεισμοί'

	
-- APOTA + λδδ/λενδ level_3 ========= με parent = Λόγια δάνεια
-- test [[:Κατηγορία:Λόγια διαχρονικά δάνεια από τα αρχαία ελληνικά]]
	if mw.ustring.find(cat_title, 'από') and (mw.ustring.find(cat_title, 'Λόγια διαχρονικά δάνεια') or mw.ustring.find(cat_title, 'Λόγια ενδογενή δάνεια')) then
		lang_iso2 = get_apota(apota_text)
		apota_text = get_apota_text(cat_title)
		apota_label = get_apota_label(cat_title)
		
		write_text = ''
		if mw.ustring.find(cat_title, 'Λόγια διαχρονικά δάνεια') then write_cat = 'Λόγια διαχρονικά δάνεια' end 
		if mw.ustring.find(cat_title, 'Λόγια ενδογενή δάνεια') then write_cat = 'Λόγια ενδογενή δάνεια' end 
		
		if write_cat ~= '' and write_cat ~= nil then
-- a mode
			if cat_parenthesis == '' or cat_parenthesis == nil then
				text = text_wikt .. ' » [[:Κατηγορία:Ετυμολογία|Ετυμολογία]]'
				.. ' » [[:Κατηγορία:Δανεισμοί|Δανεισμοί]] » [[:Κατηγορία:Λόγια δάνεια|Λόγια δάνεια]]'
				.. ' » [[:Κατηγορία:' .. apota_label .. '|' .. apota_label .. ']]'
				.. ' » [[:Κατηγορία:' .. cat_title .. '|'  .. languages[lang_iso2].apota .. ']]'
				.. ' « [[:Κατηγορία:Ετυμολογία (' .. languages[lang_iso2].name ..  ')|<i>Ετυμολογία</i>]]'
				.. ' « [[:Κατηγορία:' .. languages[lang_iso2].cat ..  '|<i>' .. mw.getContentLanguage():ucfirst(languages[lang_iso2].name) .. '</i>]]'	
				
				-- cat a
				-- [[:Κατηγορία:Λόγια διαχρονικά δάνεια από την ελληνιστική κοινή]]
				if languages[lang_iso2].sublang then
					cat = '[[Κατηγορία:' .. apota_label .. ' (' .. languages[lang_iso2].name .. ')|' .. "'" .. ']]' .. "\n"
					.. '[[Κατηγορία:' .. write_cat .. ' ' .. languages[lang_iso2].host_apota .. '|' .. languages[lang_iso2].apota_key .. ']]' .. "\n"
					.. '[[Κατηγορία:Λόγια δάνεια ' .. apota_text .. '|' .. languages[lang_iso2].apota_key .. ']]' .. "\n"
				else
					cat = '[[Κατηγορία:' .. apota_label .. ' (' .. languages[lang_iso2].name  .. ')|' .. "'" .. ']]' .. "\n"
					.. '[[Κατηγορία:Λόγια δάνεια ' .. apota_text  .. '| ' .. cat_title ..  ']]' .. "\n" -- sort top -- ???? NOT POSSIBLE data.label[write_text]['key']
				end
-- b mode
			else

				text = text_lang ..  ' » [[:Κατηγορία:Ετυμολογία (' ..	lang_name .. ')|Ετυμολογία]]'
				.. ' » [[:Κατηγορία:Δανεισμοί (' ..	lang_name .. ')|Δανεισμοί]]'
				.. ' » [[:Κατηγορία:Λόγια δάνεια (' ..	lang_name .. ')|Λόγια δάνεια]]'
				.. ' » [[:Κατηγορία:' .. apota_label .. ' (' ..	lang_name .. ')|' .. apota_label .. ']]'
				.. ' » [[:Κατηγορία:' .. page_text .. '|' .. languages[lang_iso2].apota .. ']]'
				.. ' « [[:Κατηγορία:Ετυμολογία (' .. languages[lang_iso2].name ..  ')|<i>Ετυμολογία</i>]]'
				.. ' « [[:Κατηγορία:' .. languages[lang_iso2].cat ..  '|<i>' .. mw.getContentLanguage():ucfirst(languages[lang_iso2].name) .. '</i>]]'	
				
				-- cat b
				-- [[:Κατηγορία:Λόγια διαχρονικά δάνεια από τα αρχαία ελληνικά (καθαρεύουσα)]]
				if languages[lang_iso].sublang == true and not languages[lang_iso2].sublang == true then
					cat = '[[Κατηγορία:' .. write_cat .. ' ' .. apota_text  .. '|' .. languages[lang_iso]['key'].. ']]' .. "\n"
					.. '[[Κατηγορία:' .. write_cat .. ' ' .. apota_text  .. ' (' .. languages[lang_iso].host_name  .. ')|' .. languages[lang_iso].host_key.. ']]' .. "\n"
					.. '[[Κατηγορία:Λόγια δάνεια ' .. apota_text .. ' (' .. languages[lang_iso].name  .. ')| ' .. languages[lang_iso2]['key'] .. ']]' .. "\n"	
				-- [[:Κατηγορία:Λόγια διαχρονικά δάνεια από την ελληνιστική κοινή (νέα ελληνικά)]]
				elseif languages[lang_iso2].sublang == true and not languages[lang_iso].sublang == true then
					cat = '[[Κατηγορία:' .. write_cat .. ' ' .. apota_text  .. '|' .. languages[lang_iso]['key'].. ']]' .. "\n"
					.. '[[Κατηγορία:' .. write_cat .. ' ' .. languages[lang_iso2].host_apota .. ' (' .. languages[lang_iso].name .. ')|' .. languages[lang_iso2].apota_key .. ']]' .. "\n"
					.. '[[Κατηγορία:Λόγια δάνεια ' .. apota_text .. ' (' .. languages[lang_iso].name  .. ')| ' .. languages[lang_iso].key .. ']]' .. "\n"	
				-- [[:Κατηγορία:Λόγια διαχρονικά δάνεια από την ελληνιστική κοινή (καθαρεύουσα)]]
				elseif languages[lang_iso].sublang == true and languages[lang_iso2].sublang == true then
					cat = '[[Κατηγορία:' .. write_cat .. ' ' .. apota_text  .. '|' .. languages[lang_iso]['key'].. ']]' .. "\n"
					.. '[[Κατηγορία:' .. write_cat .. ' ' .. apota_text  .. ' (' .. languages[lang_iso].host_name  .. ')|' .. languages[lang_iso].host_key.. ']]' .. "\n"
					.. '[[Κατηγορία:' .. write_cat .. ' ' .. languages[lang_iso2].host_apota .. ' (' .. languages[lang_iso].name .. ')|' .. languages[lang_iso2].apota_key .. ']]' .. "\n"
					.. '[[Κατηγορία:Λόγια δάνεια ' .. apota_text .. ' (' .. languages[lang_iso].name  .. ')| ' .. languages[lang_iso2]['key'] .. ']]' .. "\n"
				-- [[:Κατηγορία:Λόγια διαχρονικά δάνεια από τα αρχαία ελληνικά (νέα ελληνικά)]]
				else
					cat = '[[Κατηγορία:' .. write_cat .. ' ' .. apota_text  .. '|' .. languages[lang_iso]['key'].. ']]' .. "\n"
					.. '[[Κατηγορία:' .. write_cat .. ' (' .. languages[lang_iso].name  .. ')|' .. languages[lang_iso]['key'].. ']]' .. "\n"
					.. '[[Κατηγορία:Λόγια δάνεια ' .. apota_text .. ' (' .. languages[lang_iso].name  .. ')| ' .. languages[lang_iso2].key .. ']]' .. "\n"
				end	
				
			end -- close cat_parenthesis
		end -- close if write_cat
	end -- close write_cat apota with parent = 'Λόγια δάνεια'


--------------------------------------------------------------------------
--                 apota + όνομα/επώνυμο/τοπωνύμιο                      --
--------------------------------------------------------------------------	
-- APOTA + Δάνεια + ονόματα/επών/ανθρωπ/τοπωνύμια level_3 ========= parent = Δάνεια
--  [[:Κατηγορία:Δάνεια - ονόματα από τα αρχαία περσικά]]
	if mw.ustring.find(cat_title, 'από') and mw.ustring.find(cat_title, 'Δάνεια') and mw.ustring.find(cat_title, '-') then
		lang_iso2 = get_apota(apota_text)
		apota_text = get_apota_text(cat_title)
		apota_label = get_apota_label(cat_title)
		
		write_text = ''
		if mw.ustring.find(cat_title, 'ονόματα') then write_cat = 'Δάνεια - ονόματα' end 
		if mw.ustring.find(cat_title, 'επώνυμα') then write_cat = 'Δάνεια - επώνυμα' end 
		if mw.ustring.find(cat_title, 'ανθρωπωνύμια') then write_cat = 'Δάνεια - ανθρωπωνύμια' end 
		if mw.ustring.find(cat_title, 'τοπωνύμια') then write_cat = 'Δάνεια - τοπωνύμια' end 
		
		if write_cat ~= '' and write_cat ~= nil then
-- a mode ???? --------- do I need the keys of level_2 ? -------------
			if cat_parenthesis == '' or cat_parenthesis == nil then
				text = text_wikt .. ' » [[:Κατηγορία:Ετυμολογία|Ετυμολογία]]' 
				.. ' » [[:Κατηγορία:Δανεισμοί|Δανεισμοί]] » [[:Κατηγορία:Δάνεια|Δάνεια]]  ' .. textit
				.. ' « [[:Κατηγορία:Ετυμολογία (' .. languages[lang_iso2].name ..  ')|<i>Ετυμολογία</i>]]'
				.. ' « [[:Κατηγορία:' .. languages[lang_iso2].cat ..  '|<i>' .. mw.getContentLanguage():ucfirst(languages[lang_iso2].name) .. '</i>]]'
			
				-- cat a
				-- [[:Κατηγορία:Δάνεια - ονόματα από την ελληνιστική κοινή]] -- [[:Κατηγορία:Δάνεια - ονόματα από τα αρχαία περσικά]]
				if languages[lang_iso2].sublang then
					cat = '[[Κατηγορία:' .. apota_label .. ' (' .. languages[lang_iso2].name .. ')|' .. "'" .. ']]' .. "\n"
					.. '[[Κατηγορία:' .. write_cat .. ' ' .. languages[lang_iso2].host_apota .. '|' .. languages[lang_iso2].apota_key .. ']]' .. "\n"
				else
					cat = '[[Κατηγορία:' .. apota_label .. ' (' .. languages[lang_iso2].name  .. ')|' .. "'" .. ']]' .. "\n"
					.. '[[Κατηγορία:Δάνεια ' .. apota_text  .. '| ' .. cat_title ..  ']]' .. "\n" -- sort top -- ???? NOT POSSIBLE data.label[write_text]['key']
				end
-- b mode
			else

				text = text_lang ..  ' » [[:Κατηγορία:Ετυμολογία (' ..	lang_name .. ')|Ετυμολογία]]'
				.. ' » [[:Κατηγορία:Δανεισμοί (' ..	lang_name .. ')|Δανεισμοί]]'
				.. ' » [[:Κατηγορία:Δάνεια (' ..	lang_name .. ')|Δάνεια]] ' .. textit_lang
				.. ' « [[:Κατηγορία:Ετυμολογία (' .. languages[lang_iso2].name ..  ')|<i>Ετυμολογία</i>]]'
				.. ' « [[:Κατηγορία:' .. languages[lang_iso2].cat ..  '|<i>' .. mw.getContentLanguage():ucfirst(languages[lang_iso2].name) .. '</i>]]'	
				
				-- cat b
				-- [[:Κατηγορία:Δάνεια - ονόματα από τα αρχαία ελληνικά (νεολατινικά)]]
				if languages[lang_iso].sublang == true and not languages[lang_iso2].sublang == true then
					cat = '[[Κατηγορία:' .. write_cat .. ' ' .. apota_text  .. '|' .. languages[lang_iso]['key'].. ']]' .. "\n"
					.. '[[Κατηγορία:' .. write_cat .. ' ' .. apota_text  .. ' (' .. languages[lang_iso].host_name  .. ')|' .. languages[lang_iso].host_key.. ']]' .. "\n"
					.. '[[Κατηγορία:' .. write_cat .. ' (' .. languages[lang_iso].name  .. ')|' .. languages[lang_iso2].key .. ']]' .. "\n"	
				-- [[:Κατηγορία:Δάνεια - ονόματα από τα μεσαιωνικά λατινικά (αγγλικά)]]
				elseif languages[lang_iso2].sublang == true and not languages[lang_iso].sublang == true then
					cat = '[[Κατηγορία:' .. write_cat .. ' ' .. apota_text  .. '|' .. languages[lang_iso]['key'].. ']]' .. "\n"
					.. '[[Κατηγορία:' .. write_cat .. ' ' .. languages[lang_iso2].host_apota .. ' (' .. languages[lang_iso].name .. ')|' .. languages[lang_iso2].apota_key .. ']]' .. "\n"
				-- [[:Κατηγορία:Δάνεια - ονόματα από τα μεσαιωνικά λατινικά (ελληνιστική κοινή)]]
				elseif languages[lang_iso].sublang == true and  languages[lang_iso2].sublang == true then
					cat = '[[Κατηγορία:' .. write_cat .. '|' .. languages[lang_iso]['key'].. ']]' .. "\n"
					.. '[[Κατηγορία:' .. write_cat .. ' ' .. apota_text  .. '|' .. languages[lang_iso]['key'].. ']]' .. "\n"
					.. '[[Κατηγορία:' .. write_cat .. ' ' .. apota_text  .. ' (' .. languages[lang_iso].host_name  .. ')|' .. languages[lang_iso].host_key.. ']]' .. "\n"
					.. '[[Κατηγορία:' .. write_cat .. ' ' .. languages[lang_iso2].host_apota .. ' (' .. languages[lang_iso].name .. ')|' .. languages[lang_iso2].apota_key .. ']]' .. "\n"
					.. '[[Κατηγορία:' .. write_cat .. ' (' .. languages[lang_iso].name  .. ')|' .. languages[lang_iso2]['key'] .. ']]' .. "\n"
				-- [[:Κατηγορία:Δάνεια - ονόματα από τα αρχαία ελληνικά (νέα ελληνικά)]]
				else
					cat = '[[Κατηγορία:' .. write_cat .. ' ' .. apota_text  .. '|' .. languages[lang_iso]['key'].. ']]' .. "\n"
--					.. '[[Κατηγορία:' .. write_cat .. ' (' .. languages[lang_iso2].name  .. ')|' .. languages[lang_iso].key .. ']]' .. "\n" -- NO repetition
					.. '[[Κατηγορία:' .. write_cat .. ' (' .. languages[lang_iso].name  .. ')|' .. languages[lang_iso2].key .. ']]' .. "\n"
					.. '[[Κατηγορία:Δάνεια' .. ' ' .. apota_text  .. ' (' .. languages[lang_iso].name .. ')| ]]' .. "\n" -- sort top ??? λέξη επώνυμα, ονόματα κλπ
				end	
				
			end -- close cat_parenthesis
			
		end -- close if write_cat
	end -- close write_cat apota Δάνεια - ονόματα
	
	
-- APOTA + Λόγιο δάνειο + ονόματα/επών/ανθρωπ/τοπωνύμια level_3 ========= parent = Λόγια δάνεια
--  [[Οὐλερῖχος]] [[:Κατηγορία:Λόγια δάνεια - επώνυμα από τα γερμανικά (καθαρεύουσα)]]
	if mw.ustring.find(cat_title, 'από') and mw.ustring.find(cat_title, 'Λόγια δάνεια') and mw.ustring.find(cat_title, '-') then
		lang_iso2 = get_apota(apota_text)
		apota_text = get_apota_text(cat_title)
		apota_label = get_apota_label(cat_title)
		
		write_text = ''
		if mw.ustring.find(cat_title, 'ονόματα') then write_cat = 'Λόγια δάνεια - ονόματα' end 
		if mw.ustring.find(cat_title, 'επώνυμα') then write_cat = 'Λόγια δάνεια - επώνυμα' end 
		if mw.ustring.find(cat_title, 'ανθρωπωνύμια') then write_cat = 'Λόγια δάνεια - ανθρωπωνύμια' end 
		if mw.ustring.find(cat_title, 'τοπωνύμια') then write_cat = 'Λόγια δάνεια - τοπωνύμια' end 
		
		if write_cat ~= '' and write_cat ~= nil then
-- a mode ???? --------- do I need the keys of level_2 ? -------------
			if cat_parenthesis == '' or cat_parenthesis == nil then
				text = text_wikt .. ' » [[:Κατηγορία:Ετυμολογία|Ετυμολογία]]' 
				.. ' » [[:Κατηγορία:Δανεισμοί|Δανεισμοί]] » [[:Κατηγορία:Λόγια δάνεια|Λόγια δάνεια]]  ' .. textit
				.. ' « [[:Κατηγορία:Ετυμολογία (' .. languages[lang_iso2].name ..  ')|<i>Ετυμολογία</i>]]'
				.. ' « [[:Κατηγορία:' .. languages[lang_iso2].cat ..  '|<i>' .. mw.getContentLanguage():ucfirst(languages[lang_iso2].name) .. '</i>]]'	
			
				-- cat a
				if languages[lang_iso2].sublang then
					cat = '[[Κατηγορία:' .. apota_label .. ' (' .. languages[lang_iso2].name .. ')|' .. "'" .. ']]' .. "\n"
					.. '[[Κατηγορία:' .. write_cat .. ' ' .. languages[lang_iso2].host_apota .. '|' .. languages[lang_iso2].apota_key .. ']]' .. "\n"
				else
					cat = '[[Κατηγορία:' .. apota_label .. ' (' .. languages[lang_iso2].name  .. ')|' .. "'" .. ']]' .. "\n"
					.. '[[Κατηγορία:Λόγια δάνεια ' .. apota_text  .. '| ' .. cat_title ..  ']]' .. "\n" -- sort top -- ???? NOT POSSIBLE data.label[write_text]['key']
				end
-- b mode
			else

				text = text_lang ..  ' » [[:Κατηγορία:Ετυμολογία (' ..	lang_name .. ')|Ετυμολογία]]'
				.. ' » [[:Κατηγορία:Δανεισμοί (' ..	lang_name .. ')|Δανεισμοί]]'
				.. ' » [[:Κατηγορία:Λόγια δάνεια (' ..	lang_name .. ')|Λόγια δάνεια]] ' .. textit_lang
				.. ' « [[:Κατηγορία:Ετυμολογία (' .. languages[lang_iso2].name ..  ')|<i>Ετυμολογία</i>]]'
				.. ' « [[:Κατηγορία:' .. languages[lang_iso2].cat ..  '|<i>' .. mw.getContentLanguage():ucfirst(languages[lang_iso2].name) .. '</i>]]'		
				
				-- cat b
				if languages[lang_iso].sublang == true and not languages[lang_iso2].sublang == true then
					cat = '[[Κατηγορία:' .. write_cat .. ' ' .. apota_text  .. '|' .. languages[lang_iso]['key'].. ']]' .. "\n"
					.. '[[Κατηγορία:' .. write_cat .. ' ' .. apota_text  .. ' (' .. languages[lang_iso].host_name  .. ')|' .. languages[lang_iso].host_key.. ']]' .. "\n"
					.. '[[Κατηγορία:' .. write_cat .. ' (' .. languages[lang_iso].name  .. ')|' .. languages[lang_iso2].key .. ']]' .. "\n"	
				elseif languages[lang_iso2].sublang == true and not languages[lang_iso].sublang == true then
					cat = '[[Κατηγορία:' .. write_cat .. ' ' .. apota_text  .. '|' .. languages[lang_iso]['key'].. ']]' .. "\n"
					.. '[[Κατηγορία:' .. write_cat .. ' ' .. languages[lang_iso2].host_apota .. ' (' .. languages[lang_iso].name .. ')|' .. languages[lang_iso2].apota_key .. ']]' .. "\n"
				elseif languages[lang_iso].sublang == true and  languages[lang_iso2].sublang == true then
					cat = '[[Κατηγορία:' .. write_cat .. '|' .. languages[lang_iso]['key'].. ']]' .. "\n"
					.. '[[Κατηγορία:' .. write_cat .. ' ' .. apota_text  .. '|' .. languages[lang_iso]['key'].. ']]' .. "\n"
					.. '[[Κατηγορία:' .. write_cat .. ' ' .. apota_text  .. ' (' .. languages[lang_iso].host_name  .. ')|' .. languages[lang_iso].host_key.. ']]' .. "\n"
					.. '[[Κατηγορία:' .. write_cat .. ' ' .. languages[lang_iso2].host_apota .. ' (' .. languages[lang_iso].name .. ')|' .. languages[lang_iso2].apota_key .. ']]' .. "\n"
					.. '[[Κατηγορία:' .. write_cat .. ' (' .. languages[lang_iso].name  .. ')|' .. languages[lang_iso2]['key'] .. ']]' .. "\n"
				else
					cat = '[[Κατηγορία:' .. write_cat .. ' ' .. apota_text  .. '|' .. languages[lang_iso]['key'].. ']]' .. "\n"
					.. '[[Κατηγορία:' .. write_cat .. ' (' .. languages[lang_iso2].name  .. ')|' .. languages[lang_iso].key .. ']]' .. "\n"
					.. '[[Κατηγορία:' .. write_cat .. ' (' .. languages[lang_iso].name  .. ')|' .. languages[lang_iso2].key .. ']]' .. "\n"
					.. '[[Κατηγορία:Λόγια δάνεια' .. ' ' .. apota_text  .. ' (' .. languages[lang_iso].name .. ')| ]]' .. "\n" -- sort top ??? λέξη επώνυμα, ονόματα κλπ
				end	
				
			end -- close cat_parenthesis
			
		end -- close if write_cat
	end -- close write_cat apota Λόγιο δάνειο - ονόματα κλπ
	
	
	
-- APOTA + Λόγιο διαχρονικό δάνειο + ονόματα/επών/ανθρωπ/τοπωνύμια level_3 ========= parent = Λόγια δάνεια
--  [[Ατλαντίδα]]] [[:Κατηγορία:Λόγια διαχρονικά δάνεια - τοπωνύμια από τα αρχαία ελληνικά (νέα ελληνικά)]]
	if mw.ustring.find(cat_title, 'από') and mw.ustring.find(cat_title, 'Λόγια διαχρονικά δάνεια') and mw.ustring.find(cat_title, '-') then
		lang_iso2 = get_apota(apota_text)
		apota_text = get_apota_text(cat_title)
		apota_label = get_apota_label(cat_title)
		
		write_text = ''
		if mw.ustring.find(cat_title, 'ονόματα') then write_cat = 'Λόγια διαχρονικά δάνεια - ονόματα' end 
		if mw.ustring.find(cat_title, 'επώνυμα') then write_cat = 'Λόγια διαχρονικά δάνεια - επώνυμα' end 
		if mw.ustring.find(cat_title, 'ανθρωπωνύμια') then write_cat = 'Λόγια διαχρονικά δάνεια - ανθρωπωνύμια' end 
		if mw.ustring.find(cat_title, 'τοπωνύμια') then write_cat = 'Λόγια διαχρονικά δάνεια - τοπωνύμια' end 
		
		if write_cat ~= '' and write_cat ~= nil then
-- a mode ???? --------- do I need the keys of level_2 ? -------------
			if cat_parenthesis == '' or cat_parenthesis == nil then
				text = text_wikt .. ' » [[:Κατηγορία:Ετυμολογία|Ετυμολογία]]' 
				.. ' » [[:Κατηγορία:Δανεισμοί|Δανεισμοί]] » [[:Κατηγορία:Λόγια δάνεια|Λόγια δάνεια]]  ' .. textit
				.. ' « [[:Κατηγορία:Ετυμολογία (' .. languages[lang_iso2].name ..  ')|<i>Ετυμολογία</i>]]'
				.. ' « [[:Κατηγορία:' .. languages[lang_iso2].cat ..  '|<i>' .. mw.getContentLanguage():ucfirst(languages[lang_iso2].name) .. '</i>]]'	
			
				-- cat a
				if languages[lang_iso2].sublang then
					cat = '[[Κατηγορία:' .. apota_label .. ' (' .. languages[lang_iso2].name .. ')|' .. "'" .. ']]' .. "\n"
					.. '[[Κατηγορία:' .. write_cat .. ' ' .. languages[lang_iso2].host_apota .. '|' .. languages[lang_iso2].apota_key .. ']]' .. "\n"
				else
					cat = '[[Κατηγορία:' .. apota_label .. ' (' .. languages[lang_iso2].name  .. ')|' .. "'" .. ']]' .. "\n"
					.. '[[Κατηγορία:Λόγια διαχρονικά δάνεια ' .. apota_text  .. '| ' .. cat_title ..  ']]' .. "\n" -- sort top -- ???? NOT POSSIBLE data.label[write_text]['key']
				end
-- b mode
			else

				text = text_lang ..  ' » [[:Κατηγορία:Ετυμολογία (' ..	lang_name .. ')|Ετυμολογία]]'
				.. ' » [[:Κατηγορία:Δανεισμοί (' ..	lang_name .. ')|Δανεισμοί]]'
				.. ' » [[:Κατηγορία:Λόγια δάνεια (' ..	lang_name .. ')|Λόγια δάνεια]] ' .. textit_lang
				.. ' « [[:Κατηγορία:Ετυμολογία (' .. languages[lang_iso2].name ..  ')|<i>Ετυμολογία</i>]]'
				.. ' « [[:Κατηγορία:' .. languages[lang_iso2].cat ..  '|<i>' .. mw.getContentLanguage():ucfirst(languages[lang_iso2].name) .. '</i>]]'		
				
				-- cat b
				if languages[lang_iso].sublang == true and not languages[lang_iso2].sublang == true then
					cat = '[[Κατηγορία:' .. write_cat .. ' ' .. apota_text  .. '|' .. languages[lang_iso]['key'].. ']]' .. "\n"
					.. '[[Κατηγορία:' .. write_cat .. ' ' .. apota_text  .. ' (' .. languages[lang_iso].host_name  .. ')|' .. languages[lang_iso].host_key.. ']]' .. "\n"
					.. '[[Κατηγορία:' .. write_cat .. ' (' .. languages[lang_iso].name  .. ')|' .. languages[lang_iso2].key .. ']]' .. "\n"	
				elseif languages[lang_iso2].sublang == true and not languages[lang_iso].sublang == true then
					cat = '[[Κατηγορία:' .. write_cat .. ' ' .. apota_text  .. '|' .. languages[lang_iso]['key'].. ']]' .. "\n"
					.. '[[Κατηγορία:' .. write_cat .. ' ' .. languages[lang_iso2].host_apota .. ' (' .. languages[lang_iso].name .. ')|' .. languages[lang_iso2].apota_key .. ']]' .. "\n"
				elseif languages[lang_iso].sublang == true and  languages[lang_iso2].sublang == true then
					cat = '[[Κατηγορία:' .. write_cat .. '|' .. languages[lang_iso]['key'].. ']]' .. "\n"
					.. '[[Κατηγορία:' .. write_cat .. ' ' .. apota_text  .. '|' .. languages[lang_iso]['key'].. ']]' .. "\n"
					.. '[[Κατηγορία:' .. write_cat .. ' ' .. apota_text  .. ' (' .. languages[lang_iso].host_name  .. ')|' .. languages[lang_iso].host_key.. ']]' .. "\n"
					.. '[[Κατηγορία:' .. write_cat .. ' ' .. languages[lang_iso2].host_apota .. ' (' .. languages[lang_iso].name .. ')|' .. languages[lang_iso2].apota_key .. ']]' .. "\n"
					.. '[[Κατηγορία:' .. write_cat .. ' (' .. languages[lang_iso].name  .. ')|' .. languages[lang_iso2]['key'] .. ']]' .. "\n"
				else
					cat = '[[Κατηγορία:' .. write_cat .. ' ' .. apota_text  .. '|' .. languages[lang_iso]['key'].. ']]' .. "\n"
					.. '[[Κατηγορία:' .. write_cat .. ' (' .. languages[lang_iso2].name  .. ')|' .. languages[lang_iso].key .. ']]' .. "\n"
					.. '[[Κατηγορία:' .. write_cat .. ' (' .. languages[lang_iso].name  .. ')|' .. languages[lang_iso2].key .. ']]' .. "\n"
					.. '[[Κατηγορία:Λόγια διαχρονικά δάνεια' .. ' ' .. apota_text  .. ' (' .. languages[lang_iso].name .. ')| ]]' .. "\n" -- sort top ??? λέξη επώνυμα, ονόματα κλπ
				end	
				
			end -- close cat_parenthesis
			
		end -- close if write_cat
	end -- close write_cat apota Λόγιο διαχρονικό δάνειο - ονόματα κλπ
	
		
	
-- APOTA + Ορθογραφικό δάνειο + ονόματα/επών/ανθρωπ/τοπωνύμια level_3 ========= parent = Ορθογραφικά δάνεια
-- [[Πλόβντιβ]]
	if mw.ustring.find(cat_title, 'από') and mw.ustring.find(cat_title, 'Ορθογραφικά δάνεια') and mw.ustring.find(cat_title, '-') then
		lang_iso2 = get_apota(apota_text)
		apota_text = get_apota_text(cat_title)
		apota_label = get_apota_label(cat_title)
		
		write_text = ''
		if mw.ustring.find(cat_title, 'ονόματα') then write_cat = 'Ορθογραφικά δάνεια - ονόματα' end 
		if mw.ustring.find(cat_title, 'επώνυμα') then write_cat = 'Ορθογραφικά δάνεια - επώνυμα' end 
		if mw.ustring.find(cat_title, 'ανθρωπωνύμια') then write_cat = 'Ορθογραφικά δάνεια - ανθρωπωνύμια' end 
		if mw.ustring.find(cat_title, 'τοπωνύμια') then write_cat = 'Ορθογραφικά δάνεια - τοπωνύμια' end 
		
		if write_cat ~= '' and write_cat ~= nil then
-- a mode ???? --------- do I need the keys of level_2 ? -------------
			if cat_parenthesis == '' or cat_parenthesis == nil then
				text = text_wikt .. ' » [[:Κατηγορία:Ετυμολογία|Ετυμολογία]]' 
				.. ' » [[:Κατηγορία:Δανεισμοί|Δανεισμοί]] » [[:Κατηγορία:Ορθογραφικά δάνεια|Ορθογραφικά δάνεια]]  ' .. textit
				.. ' « [[:Κατηγορία:Ετυμολογία (' .. languages[lang_iso2].name ..  ')|<i>Ετυμολογία</i>]]'
				.. ' « [[:Κατηγορία:' .. languages[lang_iso2].cat ..  '|<i>' .. mw.getContentLanguage():ucfirst(languages[lang_iso2].name) .. '</i>]]'	
			
				-- cat a
				if languages[lang_iso2].sublang then
					cat = '[[Κατηγορία:' .. apota_label .. ' (' .. languages[lang_iso2].name .. ')|' .. "'" .. ']]' .. "\n"
					.. '[[Κατηγορία:' .. write_cat .. ' ' .. languages[lang_iso2].host_apota .. '|' .. languages[lang_iso2].apota_key .. ']]' .. "\n"
				else
					cat = '[[Κατηγορία:' .. apota_label .. ' (' .. languages[lang_iso2].name  .. ')|' .. "'" .. ']]' .. "\n"
					.. '[[Κατηγορία:Ορθογραφικά δάνεια ' .. apota_text  .. '| ' .. cat_title ..  ']]' .. "\n" -- sort top -- ???? NOT POSSIBLE data.label[write_text]['key']
				end
-- b mode
			else

				text = text_lang ..  ' » [[:Κατηγορία:Ετυμολογία (' ..	lang_name .. ')|Ετυμολογία]]'
				.. ' » [[:Κατηγορία:Δανεισμοί (' ..	lang_name .. ')|Δανεισμοί]]'
				.. ' » [[:Κατηγορία:Ορθογραφικά δάνεια (' ..	lang_name .. ')|Ορθογραφικά δάνεια]] ' .. textit_lang
				.. ' « [[:Κατηγορία:Ετυμολογία (' .. languages[lang_iso2].name ..  ')|<i>Ετυμολογία</i>]]'
				.. ' « [[:Κατηγορία:' .. languages[lang_iso2].cat ..  '|<i>' .. mw.getContentLanguage():ucfirst(languages[lang_iso2].name) .. '</i>]]'		
				
				-- cat b
				if languages[lang_iso].sublang == true and not languages[lang_iso2].sublang == true then
					cat = '[[Κατηγορία:' .. write_cat .. ' ' .. apota_text  .. '|' .. languages[lang_iso]['key'].. ']]' .. "\n"
					.. '[[Κατηγορία:' .. write_cat .. ' ' .. apota_text  .. ' (' .. languages[lang_iso].host_name  .. ')|' .. languages[lang_iso].host_key.. ']]' .. "\n"
					.. '[[Κατηγορία:' .. write_cat .. ' (' .. languages[lang_iso].name  .. ')|' .. languages[lang_iso2].key .. ']]' .. "\n"	
				elseif languages[lang_iso2].sublang == true and not languages[lang_iso].sublang == true then
					cat = '[[Κατηγορία:' .. write_cat .. ' ' .. apota_text  .. '|' .. languages[lang_iso]['key'].. ']]' .. "\n"
					.. '[[Κατηγορία:' .. write_cat .. ' ' .. languages[lang_iso2].host_apota .. ' (' .. languages[lang_iso].name .. ')|' .. languages[lang_iso2].apota_key .. ']]' .. "\n"
				elseif languages[lang_iso].sublang == true and  languages[lang_iso2].sublang == true then
					cat = '[[Κατηγορία:' .. write_cat .. '|' .. languages[lang_iso]['key'].. ']]' .. "\n"
					.. '[[Κατηγορία:' .. write_cat .. ' ' .. apota_text  .. '|' .. languages[lang_iso]['key'].. ']]' .. "\n"
					.. '[[Κατηγορία:' .. write_cat .. ' ' .. apota_text  .. ' (' .. languages[lang_iso].host_name  .. ')|' .. languages[lang_iso].host_key.. ']]' .. "\n"
					.. '[[Κατηγορία:' .. write_cat .. ' ' .. languages[lang_iso2].host_apota .. ' (' .. languages[lang_iso].name .. ')|' .. languages[lang_iso2].apota_key .. ']]' .. "\n"
					.. '[[Κατηγορία:' .. write_cat .. ' (' .. languages[lang_iso].name  .. ')|' .. languages[lang_iso2]['key'] .. ']]' .. "\n"
				else
					cat = '[[Κατηγορία:' .. write_cat .. ' ' .. apota_text  .. '|' .. languages[lang_iso]['key'].. ']]' .. "\n"
					.. '[[Κατηγορία:' .. write_cat .. ' (' .. languages[lang_iso2].name  .. ')|' .. languages[lang_iso].key .. ']]' .. "\n"
					.. '[[Κατηγορία:' .. write_cat .. ' (' .. languages[lang_iso].name  .. ')|' .. languages[lang_iso2].key .. ']]' .. "\n"
					.. '[[Κατηγορία:Ορθογραφικά δάνεια' .. ' ' .. apota_text  .. ' (' .. languages[lang_iso].name .. ')| ]]' .. "\n" -- sort top ??? λέξη επώνυμα, ονόματα κλπ
				end	
				
			end -- close cat_parenthesis
			
		end -- close if write_cat
	end -- close write_cat apota Ορθογραφικό δάνειο - ονόματα κλπ


-- APOTA + Φωνητικές + ονόματα/επών/ανθρωπ/τοπωνύμια level_3 ========= parent = Φωνητικές αποδόσεις
--  [[:Κατηγορία:Φωνητικές αποδόσεις - τοπωνύμια από τα ισπανικά (νέα ελληνικά)]]
	if mw.ustring.find(cat_title, 'από') and mw.ustring.find(cat_title, 'Φωνητικές αποδόσεις') and mw.ustring.find(cat_title, '-') then
		lang_iso2 = get_apota(apota_text)
		apota_text = get_apota_text(cat_title)
		apota_label = get_apota_label(cat_title)
		
		write_text = ''
		if mw.ustring.find(cat_title, 'ονόματα') then write_cat = 'Φωνητικές αποδόσεις - ονόματα' end 
		if mw.ustring.find(cat_title, 'επώνυμα') then write_cat = 'Φωνητικές αποδόσεις - επώνυμα' end 
		if mw.ustring.find(cat_title, 'ανθρωπωνύμια') then write_cat = 'Φωνητικές αποδόσεις - ανθρωπωνύμια' end 
		if mw.ustring.find(cat_title, 'τοπωνύμια') then write_cat = 'Φωνητικές αποδόσεις - τοπωνύμια' end 
		
		if write_cat ~= '' and write_cat ~= nil then
-- a mode ???? --------- do I need the keys of level_2 ? -------------
			if cat_parenthesis == '' or cat_parenthesis == nil then
				text = text_wikt .. ' » [[:Κατηγορία:Ετυμολογία|Ετυμολογία]]' 
				.. ' » [[:Κατηγορία:Δανεισμοί|Δανεισμοί]] » [[:Κατηγορία:Φωνητικές αποδόσεις|Φωνητικές αποδόσεις]]  ' .. textit
				.. ' « [[:Κατηγορία:Ετυμολογία (' .. languages[lang_iso2].name ..  ')|<i>Ετυμολογία</i>]]'
				.. ' « [[:Κατηγορία:' .. languages[lang_iso2].cat ..  '|<i>' .. mw.getContentLanguage():ucfirst(languages[lang_iso2].name) .. '</i>]]'	
			
				-- cat a
				if languages[lang_iso2].sublang then
					cat = '[[Κατηγορία:' .. apota_label .. ' (' .. languages[lang_iso2].name .. ')|' .. "'" .. ']]' .. "\n"
					.. '[[Κατηγορία:' .. write_cat .. ' ' .. languages[lang_iso2].host_apota .. '|' .. languages[lang_iso2].apota_key .. ']]' .. "\n"
				else
					cat = '[[Κατηγορία:' .. apota_label .. ' (' .. languages[lang_iso2].name  .. ')|' .. "'" .. ']]' .. "\n"
					.. '[[Κατηγορία:Φωνητικές αποδόσεις ' .. apota_text  .. '| ' .. cat_title ..  ']]' .. "\n" -- sort top -- ???? NOT POSSIBLE data.label[write_text]['key']
				end
-- b mode
			else

				text = text_lang ..  ' » [[:Κατηγορία:Ετυμολογία (' ..	lang_name .. ')|Ετυμολογία]]'
				.. ' » [[:Κατηγορία:Δανεισμοί (' ..	lang_name .. ')|Δανεισμοί]]'
				.. ' » [[:Κατηγορία:Φωνητικές αποδόσεις (' ..	lang_name .. ')|Φωνητικές αποδόσεις]] ' .. textit_lang
				.. ' « [[:Κατηγορία:Ετυμολογία (' .. languages[lang_iso2].name ..  ')|<i>Ετυμολογία</i>]]'
				.. ' « [[:Κατηγορία:' .. languages[lang_iso2].cat ..  '|<i>' .. mw.getContentLanguage():ucfirst(languages[lang_iso2].name) .. '</i>]]'		
				
				-- cat b
				if languages[lang_iso].sublang == true and not languages[lang_iso2].sublang == true then
					cat = '[[Κατηγορία:' .. write_cat .. ' ' .. apota_text  .. '|' .. languages[lang_iso]['key'].. ']]' .. "\n"
					.. '[[Κατηγορία:' .. write_cat .. ' ' .. apota_text  .. ' (' .. languages[lang_iso].host_name  .. ')|' .. languages[lang_iso].host_key.. ']]' .. "\n"
					.. '[[Κατηγορία:' .. write_cat .. ' (' .. languages[lang_iso].name  .. ')|' .. languages[lang_iso2].key .. ']]' .. "\n"	
				elseif languages[lang_iso2].sublang == true and not languages[lang_iso].sublang == true then
					cat = '[[Κατηγορία:' .. write_cat .. ' ' .. apota_text  .. '|' .. languages[lang_iso]['key'].. ']]' .. "\n"
					.. '[[Κατηγορία:' .. write_cat .. ' ' .. languages[lang_iso2].host_apota .. ' (' .. languages[lang_iso].name .. ')|' .. languages[lang_iso2].apota_key .. ']]' .. "\n"
				elseif languages[lang_iso].sublang == true and  languages[lang_iso2].sublang == true then
					cat = '[[Κατηγορία:' .. write_cat .. '|' .. languages[lang_iso]['key'].. ']]' .. "\n"
					.. '[[Κατηγορία:' .. write_cat .. ' ' .. apota_text  .. '|' .. languages[lang_iso]['key'].. ']]' .. "\n"
					.. '[[Κατηγορία:' .. write_cat .. ' ' .. apota_text  .. ' (' .. languages[lang_iso].host_name  .. ')|' .. languages[lang_iso].host_key.. ']]' .. "\n"
					.. '[[Κατηγορία:' .. write_cat .. ' ' .. languages[lang_iso2].host_apota .. ' (' .. languages[lang_iso].name .. ')|' .. languages[lang_iso2].apota_key .. ']]' .. "\n"
					.. '[[Κατηγορία:' .. write_cat .. ' (' .. languages[lang_iso].name  .. ')|' .. languages[lang_iso2]['key'] .. ']]' .. "\n"
				else
					cat = '[[Κατηγορία:' .. write_cat .. ' ' .. apota_text  .. '|' .. languages[lang_iso]['key'].. ']]' .. "\n"
--					.. '[[Κατηγορία:' .. write_cat .. ' (' .. languages[lang_iso2].name  .. ')|' .. languages[lang_iso].key .. ']]' .. "\n"
					.. '[[Κατηγορία:' .. write_cat .. ' (' .. languages[lang_iso].name  .. ')|' .. languages[lang_iso2].key .. ']]' .. "\n"
					.. '[[Κατηγορία:Φωνητικές αποδόσεις' .. ' ' .. apota_text  .. ' (' .. languages[lang_iso].name .. ')| ]]' .. "\n" -- sort top ??? λέξη επώνυμα, ονόματα κλπ
				end	
				
			end -- close cat_parenthesis
			
		end -- close if write_cat
	end -- close write_cat apota Φωνητικές - ονόματα



-- APOTA + Μεταγραμμένοι όροι + ονόματα/επών/ανθρωπ/τοπωνύμια level_3 ========= parent = Μεταγραμμένοι όροι
	if mw.ustring.find(cat_title, 'από') and mw.ustring.find(cat_title, 'Μεταγραμμένοι όροι') and mw.ustring.find(cat_title, '-') then
		lang_iso2 = get_apota(apota_text)
		apota_text = get_apota_text(cat_title)
		apota_label = get_apota_label(cat_title)
		
		write_text = ''
		if mw.ustring.find(cat_title, 'ονόματα') then write_cat = 'Μεταγραμμένοι όροι - ονόματα' end 
		if mw.ustring.find(cat_title, 'επώνυμα') then write_cat = 'Μεταγραμμένοι όροι - επώνυμα' end 
		if mw.ustring.find(cat_title, 'ανθρωπωνύμια') then write_cat = 'Μεταγραμμένοι όροι - ανθρωπωνύμια' end 
		if mw.ustring.find(cat_title, 'τοπωνύμια') then write_cat = 'Μεταγραμμένοι όροι - τοπωνύμια' end 
		
		if write_cat ~= '' and write_cat ~= nil then
-- a mode ???? --------- do I need the keys of level_2 ? -------------
			if cat_parenthesis == '' or cat_parenthesis == nil then
				text = text_wikt .. ' » [[:Κατηγορία:Ετυμολογία|Ετυμολογία]]' 
				.. ' » [[:Κατηγορία:Δανεισμοί|Δανεισμοί]] » [[:Κατηγορία:Μεταγραμμένοι όροι|Μεταγραφές]]  ' .. textit
				.. ' « [[:Κατηγορία:Ετυμολογία (' .. languages[lang_iso2].name ..  ')|<i>Ετυμολογία</i>]]'
				.. ' « [[:Κατηγορία:' .. languages[lang_iso2].cat ..  '|<i>' .. mw.getContentLanguage():ucfirst(languages[lang_iso2].name) .. '</i>]]'	
			
				-- cat a
				if languages[lang_iso2].sublang then
					cat = '[[Κατηγορία:' .. apota_label .. ' (' .. languages[lang_iso2].name .. ')|' .. "'" .. ']]' .. "\n"
					.. '[[Κατηγορία:' .. write_cat .. ' ' .. languages[lang_iso2].host_apota .. '|' .. languages[lang_iso2].apota_key .. ']]' .. "\n"
				else
					cat = '[[Κατηγορία:' .. apota_label .. ' (' .. languages[lang_iso2].name  .. ')|' .. "'" .. ']]' .. "\n"
					.. '[[Κατηγορία:Μεταγραμμένοι όροι ' .. apota_text  .. '| ' .. cat_title ..  ']]' .. "\n" -- sort top -- ???? NOT POSSIBLE data.label[write_text]['key']
				end
-- b mode
			else

				text = text_lang ..  ' » [[:Κατηγορία:Ετυμολογία (' ..	lang_name .. ')|Ετυμολογία]]'
				.. ' » [[:Κατηγορία:Δανεισμοί (' ..	lang_name .. ')|Δανεισμοί]]'
				.. ' » [[:Κατηγορία:Μεταγραμμένοι όροι (' ..	lang_name .. ')|Μεταγραφές]] ' .. textit_lang
				.. ' « [[:Κατηγορία:Ετυμολογία (' .. languages[lang_iso2].name ..  ')|<i>Ετυμολογία</i>]]'
				.. ' « [[:Κατηγορία:' .. languages[lang_iso2].cat ..  '|<i>' .. mw.getContentLanguage():ucfirst(languages[lang_iso2].name) .. '</i>]]'		
				
				-- cat b
				if languages[lang_iso].sublang == true and not languages[lang_iso2].sublang == true then
					cat = '[[Κατηγορία:' .. write_cat .. ' ' .. apota_text  .. '|' .. languages[lang_iso]['key'].. ']]' .. "\n"
					.. '[[Κατηγορία:' .. write_cat .. ' ' .. apota_text  .. ' (' .. languages[lang_iso].host_name  .. ')|' .. languages[lang_iso].host_key.. ']]' .. "\n"
					.. '[[Κατηγορία:' .. write_cat .. ' (' .. languages[lang_iso].name  .. ')|' .. languages[lang_iso2].key .. ']]' .. "\n"	
				elseif languages[lang_iso2].sublang == true and not languages[lang_iso].sublang == true then
					cat = '[[Κατηγορία:' .. write_cat .. ' ' .. apota_text  .. '|' .. languages[lang_iso]['key'].. ']]' .. "\n"
					.. '[[Κατηγορία:' .. write_cat .. ' ' .. languages[lang_iso2].host_apota .. ' (' .. languages[lang_iso].name .. ')|' .. languages[lang_iso2].apota_key .. ']]' .. "\n"
				elseif languages[lang_iso].sublang == true and  languages[lang_iso2].sublang == true then
					cat = '[[Κατηγορία:' .. write_cat .. '|' .. languages[lang_iso]['key'].. ']]' .. "\n"
					.. '[[Κατηγορία:' .. write_cat .. ' ' .. apota_text  .. '|' .. languages[lang_iso]['key'].. ']]' .. "\n"
					.. '[[Κατηγορία:' .. write_cat .. ' ' .. apota_text  .. ' (' .. languages[lang_iso].host_name  .. ')|' .. languages[lang_iso].host_key.. ']]' .. "\n"
					.. '[[Κατηγορία:' .. write_cat .. ' ' .. languages[lang_iso2].host_apota .. ' (' .. languages[lang_iso].name .. ')|' .. languages[lang_iso2].apota_key .. ']]' .. "\n"
					.. '[[Κατηγορία:' .. write_cat .. ' (' .. languages[lang_iso].name  .. ')|' .. languages[lang_iso2]['key'] .. ']]' .. "\n"
				else
					cat = '[[Κατηγορία:' .. write_cat .. ' ' .. apota_text  .. '|' .. languages[lang_iso]['key'].. ']]' .. "\n"
--					.. '[[Κατηγορία:' .. write_cat .. ' (' .. languages[lang_iso2].name  .. ')|' .. languages[lang_iso].key .. ']]' .. "\n"
					.. '[[Κατηγορία:' .. write_cat .. ' (' .. languages[lang_iso].name  .. ')|' .. languages[lang_iso2].key .. ']]' .. "\n"
					.. '[[Κατηγορία:Μεταγραμμένοι όροι' .. ' ' .. apota_text  .. ' (' .. languages[lang_iso].name .. ')| ]]' .. "\n" -- sort top ??? λέξη επώνυμα, ονόματα κλπ
				end	
				
			end -- close cat_parenthesis
			
		end -- close if write_cat
	end -- close write_cat apota Μεταγραμμένοι όροι - ονόματα



	
-- APOTA + Προέλευση + ονόματα/επών/ανθρωπ/τοπωνύμια level_3 ========= parent = Προέλευση λέξεων
-- test [[:Κατηγορία:Προέλευση λέξεων - ονόματα από τα αρχαία ελληνικά]]
	if mw.ustring.find(cat_title, 'από') and mw.ustring.find(cat_title, 'Προέλευση λέξεων') and mw.ustring.find(cat_title, '-') then
		lang_iso2 = get_apota(apota_text)
		apota_text = get_apota_text(cat_title)
		apota_label = get_apota_label(cat_title)
		
		write_text = ''
		if mw.ustring.find(cat_title, 'ονόματα') then write_cat = 'Προέλευση λέξεων - ονόματα' end 
		if mw.ustring.find(cat_title, 'επώνυμα') then write_cat = 'Προέλευση λέξεων - επώνυμα' end 
		if mw.ustring.find(cat_title, 'ανθρωπωνύμια') then write_cat = 'Προέλευση λέξεων - ανθρωπωνύμια' end 
		if mw.ustring.find(cat_title, 'τοπωνύμια') then write_cat = 'Προέλευση λέξεων - τοπωνύμια' end 
		
		if write_cat ~= '' and write_cat ~= nil then
-- a mode ???? --------- do I need the keys of level_2 ? -------------
			if cat_parenthesis == '' or cat_parenthesis == nil then
				text = text_wikt .. ' » [[:Κατηγορία:Ετυμολογία|Ετυμολογία]]' 
				.. ' » [[:Κατηγορία:Προέλευση λέξεων|Προέλευση λέξεων]]  ' .. textit
				.. ' « [[:Κατηγορία:Ετυμολογία (' .. languages[lang_iso2].name ..  ')|<i>Ετυμολογία</i>]]'
				.. ' « [[:Κατηγορία:' .. languages[lang_iso2].cat ..  '|<i>' .. mw.getContentLanguage():ucfirst(languages[lang_iso2].name) .. '</i>]]'
			
				-- cat a
				-- [[:Κατηγορία:Προέλευση λέξεων - ονόματα από την ελληνιστική κοινή]] -- [[:Κατηγορία:Προέλευση λέξεων - ονόματα από τα αγγλικά]]
				if languages[lang_iso2].sublang then
					cat = '[[Κατηγορία:' .. apota_label .. ' (' .. languages[lang_iso2].name .. ')|' .. "'" .. ']]' .. "\n"
					.. '[[Κατηγορία:' .. write_cat .. ' ' .. languages[lang_iso2].host_apota .. '|' .. languages[lang_iso2].apota_key .. ']]' .. "\n"
				else
					cat = '[[Κατηγορία:' .. apota_label .. ' (' .. languages[lang_iso2].name  .. ')|' .. "'" .. ']]' .. "\n"
					.. '[[Κατηγορία:Προέλευση λέξεων ' .. apota_text  .. '| ' .. cat_title ..  ']]' .. "\n" -- sort top -- ???? NOT POSSIBLE data.label[write_text]['key']
				end
-- b mode
			else

				text = text_lang ..  ' » [[:Κατηγορία:Ετυμολογία (' ..	lang_name .. ')|Ετυμολογία]]'
				.. ' » [[:Κατηγορία:Προέλευση λέξεων (' ..	lang_name .. ')|Προέλευση λέξεων]] ' .. textit_lang -- need extra1 from data.label
				.. ' « [[:Κατηγορία:Ετυμολογία (' .. languages[lang_iso2].name ..  ')|<i>Ετυμολογία</i>]]'
				.. ' « [[:Κατηγορία:' .. languages[lang_iso2].cat ..  '|<i>' .. mw.getContentLanguage():ucfirst(languages[lang_iso2].name) .. '</i>]]'

				-- cat b
				-- [[:Κατηγορία:Προέλευση λέξεων - ονόματα από τα αρχαία ελληνικά (νεολατινικά)]]
				if languages[lang_iso].sublang == true and not languages[lang_iso2].sublang == true then
					cat = '[[Κατηγορία:' .. write_cat .. ' ' .. apota_text  .. '|' .. languages[lang_iso]['key'].. ']]' .. "\n"
					.. '[[Κατηγορία:' .. write_cat .. ' ' .. apota_text  .. ' (' .. languages[lang_iso].host_name  .. ')|' .. languages[lang_iso].host_key.. ']]' .. "\n"
					.. '[[Κατηγορία:' .. write_cat .. ' (' .. languages[lang_iso].name  .. ')|' .. languages[lang_iso2].key .. ']]' .. "\n"	
				-- [[:Κατηγορία:Προέλευση λέξεων - ονόματα από τα μεσαιωνικά λατινικά (αγγλικά)]]
				elseif languages[lang_iso2].sublang == true and not languages[lang_iso].sublang == true then
					cat = '[[Κατηγορία:' .. write_cat .. ' ' .. apota_text  .. '|' .. languages[lang_iso]['key'].. ']]' .. "\n"
					.. '[[Κατηγορία:' .. write_cat .. ' ' .. languages[lang_iso2].host_apota .. ' (' .. languages[lang_iso].name .. ')|' .. languages[lang_iso2].apota_key .. ']]' .. "\n"
				-- [[:Κατηγορία:Προέλευση λέξεων - ονόματα από τα μεσαιωνικά λατινικά (ελληνιστική κοινή)]]
				elseif languages[lang_iso].sublang == true and  languages[lang_iso2].sublang == true then
					cat = '[[Κατηγορία:' .. write_cat .. '|' .. languages[lang_iso]['key'].. ']]' .. "\n"
					.. '[[Κατηγορία:' .. write_cat .. ' ' .. apota_text  .. '|' .. languages[lang_iso]['key'].. ']]' .. "\n"
					.. '[[Κατηγορία:' .. write_cat .. ' ' .. apota_text  .. ' (' .. languages[lang_iso].host_name  .. ')|' .. languages[lang_iso].host_key.. ']]' .. "\n"
					.. '[[Κατηγορία:' .. write_cat .. ' ' .. languages[lang_iso2].host_apota .. ' (' .. languages[lang_iso].name .. ')|' .. languages[lang_iso2].apota_key .. ']]' .. "\n"
					.. '[[Κατηγορία:' .. write_cat .. ' (' .. languages[lang_iso].name  .. ')|' .. languages[lang_iso2]['key'] .. ']]' .. "\n"
				-- -- [[:Κατηγορία:Προέλευση λέξεων - επώνυμα από τα αρμενικά (νέα ελληνικά)]]
				else
					cat = '[[Κατηγορία:' .. write_cat .. ' ' .. apota_text  .. '|' .. languages[lang_iso]['key'].. ']]' .. "\n"
					.. '[[Κατηγορία:' .. write_cat .. ' (' .. languages[lang_iso2].name  .. ')|' .. languages[lang_iso].key .. ']]' .. "\n"
					.. '[[Κατηγορία:' .. write_cat .. ' (' .. languages[lang_iso].name  .. ')|' .. languages[lang_iso2].key .. ']]' .. "\n"
					.. '[[Κατηγορία:Προέλευση λέξεων' .. ' ' .. apota_text  .. ' (' .. languages[lang_iso].name .. ')| ]]' .. "\n" -- sort top ??? λέξη επώνυμα, ονόματα κλπ
				end	
				-- need extra1 from data.label
		
			end -- close cat_parenthesis
			
		end -- close if write_cat
	end -- close write_cat apota Προέλευση λέξεων - ονόματα



-- APOTA + Κληρονομημένες + ονόματα/επών/ανθρωπ/τοπωνύμια level_3 ========= parent = Κληρονομημένες λέξεις
-- test [[:Κατηγορία:Κληρονομημένες λέξεις - ονόματα από τα αρχαία ελληνικά]]
	if mw.ustring.find(cat_title, 'από') and mw.ustring.find(cat_title, 'Κληρονομημένες λέξεις') and mw.ustring.find(cat_title, '-') then
		lang_iso2 = get_apota(apota_text)
		apota_text = get_apota_text(cat_title)
		apota_label = get_apota_label(cat_title)
		
		write_text = ''
		if mw.ustring.find(cat_title, 'ονόματα') then write_cat = 'Κληρονομημένες λέξεις - ονόματα' end 
		if mw.ustring.find(cat_title, 'επώνυμα') then write_cat = 'Κληρονομημένες λέξεις - επώνυμα' end 
		if mw.ustring.find(cat_title, 'ανθρωπωνύμια') then write_cat = 'Κληρονομημένες λέξεις - ανθρωπωνύμια' end 
		if mw.ustring.find(cat_title, 'τοπωνύμια') then write_cat = 'Κληρονομημένες λέξεις - τοπωνύμια' end 
		
		if write_cat ~= '' and write_cat ~= nil then
-- a mode
			if cat_parenthesis == '' or cat_parenthesis == nil then
				text = text_wikt .. ' » [[:Κατηγορία:Ετυμολογία|Ετυμολογία]]' 
				.. ' » [[:Κατηγορία:Κληρονομημένες λέξεις|Κληρονομημένες λέξεις]]  ' .. textit
				.. ' « [[:Κατηγορία:Ετυμολογία (' .. languages[lang_iso2].name ..  ')|<i>Ετυμολογία</i>]]'
				.. ' « [[:Κατηγορία:' .. languages[lang_iso2].cat ..  '|<i>' .. mw.getContentLanguage():ucfirst(languages[lang_iso2].name) .. '</i>]]'
			
				-- cat a
				-- [[:Κατηγορία:Κληρονομημένες λέξεις - ονόματα από την ελληνιστική κοινή]] -- [[:Κατηγορία:Κληρονομημένες λέξεις - ονόματα από τα αγγλικά]]
				if languages[lang_iso2].sublang then
					cat = '[[Κατηγορία:' .. apota_label .. ' (' .. languages[lang_iso2].name .. ')|' .. "'" .. ']]' .. "\n"
					.. '[[Κατηγορία:' .. write_cat .. ' ' .. languages[lang_iso2].host_apota .. '|' .. languages[lang_iso2].apota_key .. ']]' .. "\n"
				else
					cat = '[[Κατηγορία:' .. apota_label .. ' (' .. languages[lang_iso2].name  .. ')|' .. "'" .. ']]' .. "\n"
					.. '[[Κατηγορία:Κληρονομημένες λέξεις ' .. apota_text  .. '| ' .. cat_title ..  ']]' .. "\n" -- sort top -- ???? NOT POSSIBLE data.label[write_text]['key']
				end
-- b mode
			else

				text = text_lang ..  ' » [[:Κατηγορία:Ετυμολογία (' ..	lang_name .. ')|Ετυμολογία]]'
				.. ' » [[:Κατηγορία:Κληρονομημένες λέξεις (' ..	lang_name .. ')|Κληρονομημένες λέξεις]] ' .. textit_lang
				.. ' « [[:Κατηγορία:Ετυμολογία (' .. languages[lang_iso2].name ..  ')|<i>Ετυμολογία</i>]]'
				.. ' « [[:Κατηγορία:' .. languages[lang_iso2].cat ..  '|<i>' .. mw.getContentLanguage():ucfirst(languages[lang_iso2].name) .. '</i>]]'	
				
				-- cat b
				-- [[:Κατηγορία:Κληρονομημένες λέξεις - ονόματα από τα αρχαία ελληνικά (νεολατινικά)]]
				if languages[lang_iso].sublang == true and not languages[lang_iso2].sublang == true then
					cat = '[[Κατηγορία:' .. write_cat .. ' ' .. apota_text  .. '|' .. languages[lang_iso]['key'].. ']]' .. "\n"
					.. '[[Κατηγορία:' .. write_cat .. ' ' .. apota_text  .. ' (' .. languages[lang_iso].host_name  .. ')|' .. languages[lang_iso].host_key.. ']]' .. "\n"
					.. '[[Κατηγορία:' .. write_cat .. ' (' .. languages[lang_iso].name  .. ')|' .. languages[lang_iso2].key .. ']]' .. "\n"	
				-- [[:Κατηγορία:Κληρονομημένες λέξεις - ονόματα από τα μεσαιωνικά λατινικά (αγγλικά)]]
				elseif languages[lang_iso2].sublang == true and not languages[lang_iso].sublang == true then
					cat = '[[Κατηγορία:' .. write_cat .. ' ' .. apota_text  .. '|' .. languages[lang_iso]['key'].. ']]' .. "\n"
					.. '[[Κατηγορία:' .. write_cat .. ' ' .. languages[lang_iso2].host_apota .. ' (' .. languages[lang_iso].name .. ')|' .. languages[lang_iso2].apota_key .. ']]' .. "\n"
				-- [[:Κατηγορία:Κληρονομημένες λέξεις - ονόματα από τα μεσαιωνικά λατινικά (ελληνιστική κοινή)]]
				elseif languages[lang_iso].sublang == true and  languages[lang_iso2].sublang == true then
					cat = '[[Κατηγορία:' .. write_cat .. '|' .. languages[lang_iso]['key'].. ']]' .. "\n"
					.. '[[Κατηγορία:' .. write_cat .. ' ' .. apota_text  .. '|' .. languages[lang_iso]['key'].. ']]' .. "\n"
					.. '[[Κατηγορία:' .. write_cat .. ' ' .. apota_text  .. ' (' .. languages[lang_iso].host_name  .. ')|' .. languages[lang_iso].host_key.. ']]' .. "\n"
					.. '[[Κατηγορία:' .. write_cat .. ' ' .. languages[lang_iso2].host_apota .. ' (' .. languages[lang_iso].name .. ')|' .. languages[lang_iso2].apota_key .. ']]' .. "\n"
					.. '[[Κατηγορία:' .. write_cat .. ' (' .. languages[lang_iso].name  .. ')|' .. languages[lang_iso2]['key'] .. ']]' .. "\n"
				-- [[:Κατηγορία:Κληρονομημένες λέξεις - ονόματα από τα αρχαία ελληνικά (νέα ελληνικά)]]
				else
					cat = '[[Κατηγορία:' .. write_cat .. ' ' .. apota_text  .. '|' .. languages[lang_iso]['key'].. ']]' .. "\n"
					.. '[[Κατηγορία:' .. write_cat .. ' (' .. languages[lang_iso2].name  .. ')|' .. languages[lang_iso].key .. ']]' .. "\n"
					.. '[[Κατηγορία:' .. write_cat .. ' (' .. languages[lang_iso].name  .. ')|' .. languages[lang_iso2].key .. ']]' .. "\n"
					.. '[[Κατηγορία:Κληρονομημένες λέξεις' .. ' ' .. apota_text  .. ' (' .. languages[lang_iso].name .. ')| ]]' .. "\n" -- sort top ??? λέξη επώνυμα, ονόματα κλπ
				end	
				
			end -- close cat_parenthesis
			
		end -- close if write_cat
	end -- close write_cat apota Κληρονομημένες λέξεις - ονόματα

end -- close if από	


--------------------------------------------------------------------------
--                     Ετυμολογία Etymology                             --
--           FUCNTIONS apotin :  langapo root *xx (language)            --
--------------------------------------------------------------------------
-- e.g. [[:Κατηγορία:Προέλευση λέξεων από την πρωτοϊνδοευρωπαϊκή ρίζα *gʷelH- (αρχαία ελληνικά)]]
-- ============ from root: match the part of the cat_title with Module:languages param. frm
function get_langapotin_text(langapotin_text)
-- languages apo = feminine article+accusative e.g. την αραβική, την πρωτοελληνική
-- take off Προέλευση από & take off everything after ρίζα *xxxx
-- ++ -- NOT Λέξεις από: βλ. [[Πρότυπο:από]]
	if mw.ustring.find(cat_title, 'από') and not mw.ustring.find(cat_title, 'από το')
	and mw.ustring.find(cat_title, 'ρίζα')
	and not mw.ustring.find(cat_title, 'αναδρομικό')
	and not mw.ustring.find(cat_title, 'από ανθρωπωνύμια') and not mw.ustring.find(cat_title, 'από διαφημίσεις') and not mw.ustring.find(cat_title, 'από επαγγέλματα') 
	and not mw.ustring.find(cat_title, 'από εθνικά ονόματα') and not mw.ustring.find(cat_title, 'από επωνυμίες') and not mw.ustring.find(cat_title, 'από ονόματα')
	and not mw.ustring.find(cat_title, 'από παρωνύμια') and not mw.ustring.find(cat_title, 'από τοπωνύμια')
	and not mw.ustring.find(cat_title, 'από τις τέχνες') and not mw.ustring.find(cat_title, 'από τον') and not mw.ustring.find(cat_title, 'από τα έργα')
	and not mw.ustring.find(cat_title, 'από καλλιτεχνικά έργα') 
	and not mw.ustring.find(cat_title, 'Λέξεις από') and not mw.ustring.find(cat_title, 'ως προς')  and not mw.ustring.find(cat_title, 'απόστολος')
	and not mw.ustring.find(cat_title, 'από επιγραφές') and not mw.ustring.find(cat_title, 'από νόμους') -- [[Πρότυπο:παράθεμα]] Λήμματα με παραθέματα από νόμους, από επιγραφές
		and not mw.ustring.find(cat_title, 'από δημοτικά τραγούδια') 
	and not mw.ustring.find(cat_title, 'πρόθημα από') and not mw.ustring.find(cat_title, 'απόλυτα')
	then 
 
	langapotin_text = mw.ustring.sub(mw.ustring.match(cat_title, "από (.*) ρίζα"), 1, -1) -- gives e.g. την πρωτοϊνδοευρωπαϊκή
	end
return langapotin_text
end

function get_apotin(iso2)
	lang_iso2 = require("Module:lang").langapo_to_langiso(get_langapotin_text(langapotin_text))
return lang_iso2
end

function get_langapotin_label(langapotin_label)
	length = mw.ustring.len(get_langapotin_text(langapotin_text))
	langapotin_label = mw.ustring.sub(cat_title, 1, -length-1) -- length gives me: Label α.  So, i substract one more.
return langapotin_label
end

function get_apota_param(apota_param)
	apota_param = require("Module:lang").langiso_to_langapota(get_apotin(iso2))
return apota_param
end

-- -------------------- APPLICATIONS langapotin root -------------------------
if mw.ustring.find(cat_title, 'Προέλευση λέξεων από') and mw.ustring.find(cat_title, 'ρίζα')
	then 
		lang_iso2 = get_apotin(langapotin_text)
		langapotin_label = get_langapotin_label(cat_title)
		lang_from_root = mw.ustring.sub(mw.ustring.match(cat_title, "από (.*)"), 1, -1) -- gives e.g. ...κή ρίζα *χχχχ
		root_word = mw.ustring.sub(mw.ustring.match(cat_title, "ρίζα (.*)"), 1, -1)
		apota_text = get_apota_param(apota_param)
		if mw.ustring.find(cat_title, 'Προέλευση λέξεων από') and mw.ustring.find(cat_title, 'ρίζα') then write_cat = 'Προέλευση λέξεων' end
		

-- apota a mode
			if cat_parenthesis == '' or cat_parenthesis == nil then

				text = text_wikt .. ' » [[:Κατηγορία:Ετυμολογία|Ετυμολογία]]'
				.. ' » [[:Κατηγορία:' .. write_cat .. '|' .. write_cat .. ']]'
				.. ' » [[:Κατηγορία:' .. write_cat .. ' ' .. languages[lang_iso2].apota .. '|'  .. languages[lang_iso2].apota .. ']]'
				.. ' » [[:Κατηγορία:' .. page_text .. '| ρίζα ]] [[' .. root_word .. ']]'
				.. ' « [[:Κατηγορία:Ετυμολογία (' .. languages[lang_iso2].name ..  ')|<i>Ετυμολογία</i>]]'
				.. ' « [[:Κατηγορία:' .. languages[lang_iso2].cat ..  '|<i>' .. mw.getContentLanguage():ucfirst(languages[lang_iso2].name) .. '</i>]]'

				-- cat a
				if languages[lang_iso2].sublang then
					if root_word:sub(1, 1) == '*' then
					cat = '[[Κατηγορία:' .. write_cat .. ' ' .. apota_text .. ' - ρίζες|' .. root_word:sub(2, -1) .. ']]' .. "\n" -- sort without asterisc: start from 2nd character 
					else
					cat = '[[Κατηγορία:' .. write_cat .. ' ' .. apota_text .. ' - ρίζες|' .. root_word .. ']]'
					end	
					cat = cat .. '[[Κατηγορία:' .. write_cat .. ' ' .. apota_text .. ' ' .. languages[lang_iso2].host_apota .. '|' .. languages[lang_iso2].apota_key .. ']]' .. "\n"
				else
					if root_word:sub(1, 1) == '*' then
					cat = '[[Κατηγορία:' .. write_cat .. ' ' .. apota_text .. ' - ρίζες|' .. root_word:sub(2, -1) .. ']]' .. "\n" -- sort without asterisc: start from 2nd character 
					else
					cat = '[[Κατηγορία:' .. write_cat .. ' ' .. apota_text .. ' - ρίζες|' .. root_word .. ']]'
					end		
				end
			else
-- apota b mode  -- [[:Κατηγορία:Προέλευση λέξεων από την πρωτοϊνδοευρωπαϊκή ρίζα *gʷelH- (αρχαία ελληνικά)]]
				-- [[:Κατηγορία:Προέλευση λέξεων από την αραβική ρίζα خ م ر (νέα ελληνικά)]]
				text = text_lang ..  ' » [[:Κατηγορία:Ετυμολογία (' ..	lang_name .. ')|Ετυμολογία]]' 
				.. ' » [[:Κατηγορία:' .. write_cat .. ' (' .. lang_name .. ')|' .. write_cat .. ']]'
				.. ' » [[:Κατηγορία:' .. write_cat .. ' ' .. languages[lang_iso2].apota .. ' (' .. lang_name .. ')|' .. languages[lang_iso2].apota .. ']]'
				.. ' » [[:Κατηγορία:' .. page_text .. '| ρίζα ]] [[' .. root_word .. ']]'
				.. ' [[:Κατηγορία:' .. cat_title .. '|«««]]'
				.. ' « [[:Κατηγορία:Ετυμολογία (' .. languages[lang_iso2].name ..  ')|<i>Ετυμολογία</i>]]'
				.. ' « [[:Κατηγορία:' .. languages[lang_iso2].cat ..  '|<i>' .. mw.getContentLanguage():ucfirst(languages[lang_iso2].name) .. '</i>]]'

				-- cat b ##### sublangs not checked
				if languages[lang_iso].sublang == true and not languages[lang_iso2].sublang == true then
					cat = '[[Κατηγορία:' .. cat_title .. ' (' .. languages[lang_iso].host_name  .. ')|' .. languages[lang_iso].host_key.. ']]' .. "\n"
					.. '[[Κατηγορία:' .. write_cat .. ' ' .. apota_text .. ' - ρίζες (' .. languages[lang_iso].name  .. ')|' .. root_word .. ']]' .. "\n"
				elseif languages[lang_iso2].sublang == true and not languages[lang_iso].sublang == true then
					cat = '[[Κατηγορία:' .. cat_title  .. '|' .. languages[lang_iso]['key'].. ']]' .. "\n"
					.. '[[Κατηγορία:' .. write_cat .. ' ' .. apota_text .. ' - ρίζες ' .. languages[lang_iso2].host_apota .. ' (' .. languages[lang_iso].name .. ')|' .. languages[lang_iso2].apota_key .. ']]' .. "\n"
					.. '[[Κατηγορία:' .. write_cat .. ' ' .. apota_text .. ' - ρίζες (' .. languages[lang_iso2].name  .. ')|' .. root_word .. ']]' .. "\n"	
				elseif languages[lang_iso].sublang == true and languages[lang_iso2].sublang == true then
					cat = '[[Κατηγορία:' .. cat_title  .. '|' .. languages[lang_iso]['key'].. ']]' .. "\n"
					.. '[[Κατηγορία:' .. write_cat .. ' ' .. apota_text  .. ' - ρίζες (' .. languages[lang_iso].host_name  .. ')|' .. languages[lang_iso].host_key.. ']]' .. "\n"
					.. '[[Κατηγορία:' .. write_cat .. ' ' .. apota_text  .. ' - ρίζες ' .. languages[lang_iso2].host_apota .. ' (' .. languages[lang_iso].name .. ')|' .. languages[lang_iso2].apota_key .. ']]' .. "\n"
					.. '[[Κατηγορία:' .. write_cat .. ' ' .. apota_text  .. ' - ρίζες (' .. languages[lang_iso].name  .. ')|' .. root_word .. ']]' .. "\n"
				else
					cat = '[[Κατηγορία:' .. cat_title  .. '|' .. languages[lang_iso]['key'].. ']]' .. "\n"
					if root_word:sub(1, 1) == '*' then
					cat = cat .. '[[Κατηγορία:' .. write_cat .. ' ' .. apota_text .. ' - ρίζες (' .. languages[lang_iso].name  .. ')|' .. root_word:sub(2, -1) .. ']]' .. "\n" -- sort without asterisc: start from 2nd character 
					else
					cat = cat .. '[[Κατηγορία:' .. write_cat .. ' ' .. apota_text .. ' - ρίζες (' .. languages[lang_iso].name  .. ')|' .. root_word .. ']]'
					end
				end
			end -- close parenthesis

end -- close if mw.ustring.find(cat_title, 'Προέλευση λέξεων από') and mw.ustring.find(cat_title, 'ρίζα')



--------------------------------------------------------------------------
--                     Ετυμολογία Etymology                             --
--                         apota +  - ρίζες                               --
--------------------------------------------------------------------------
-- e.g. [[:Κατηγορία:Προέλευση λέξεων από τα αραβικά - ρίζες]]
-- ============ match languages apota
-- ++ -- NOT Λέξεις από: βλ. [[Πρότυπο:από]]
function get_apota_roots_text(apota_roots_text)
	if mw.ustring.find(cat_title, 'από') and not mw.ustring.find(cat_title, 'από το')
	and mw.ustring.find(cat_title, 'ρίζες') and not mw.ustring.find(cat_title, 'ανά γλώσσα')
	and not mw.ustring.find(cat_title, 'αναδρομικό')
	and not mw.ustring.find(cat_title, 'από ανθρωπωνύμια') and not mw.ustring.find(cat_title, 'από διαφημίσεις') and not mw.ustring.find(cat_title, 'από επαγγέλματα') 
	and not mw.ustring.find(cat_title, 'από εθνικά ονόματα') and not mw.ustring.find(cat_title, 'από επωνυμίες') and not mw.ustring.find(cat_title, 'από ονόματα')
	and not mw.ustring.find(cat_title, 'από παρωνύμια') and not mw.ustring.find(cat_title, 'από τοπωνύμια')
	and not mw.ustring.find(cat_title, 'από τις τέχνες') and not mw.ustring.find(cat_title, 'από τον') and not mw.ustring.find(cat_title, 'από τα έργα')
	and not mw.ustring.find(cat_title, 'από καλλιτεχνικά έργα') 
	and not mw.ustring.find(cat_title, 'Λέξεις από') and not mw.ustring.find(cat_title, 'ως προς')  and not mw.ustring.find(cat_title, 'απόστολος')
	and not mw.ustring.find(cat_title, 'από επιγραφές') and not mw.ustring.find(cat_title, 'από νόμους') -- [[Πρότυπο:παράθεμα]] Λήμματα με παραθέματα από νόμους, από επιγραφές
		and not mw.ustring.find(cat_title, 'από δημοτικά τραγούδια') 
	and not mw.ustring.find(cat_title, 'πρόθημα από') and not mw.ustring.find(cat_title, 'απόλυτα')
	then
		-- PROBLEM βλέπει και το: - ρίζες ανά γλώσσα Άρα, το αλλάζω σε:  Προέλευσης.... , ρίζες ανά γλώσσα
	apota_roots_text = mw.ustring.sub(mw.ustring.match(cat_title, "Προέλευση λέξεων (.*) %- ρίζες"), 1, -1) -- gives e.g. από τα αραβικά
	end
return apota_roots_text
end

function get_apota(iso)
	lang_iso = require("Module:lang").langapota_to_langiso(get_apota_roots_text(apota_roots_text))
return lang_iso
end




-- -------------------- APPLICATION Προέλευση λέξεων .... - ρίζες -------------------------
if mw.ustring.find(cat_title, 'Προέλευση λέξεων από') and mw.ustring.find(cat_title, 'ρίζες') and not mw.ustring.find(cat_title, 'ανά γλώσσα')
	then 
		lang_iso = get_apota(apota_roots_text)
		lang_iso2 = require("Module:lang").langname_to_langiso(lang_name)
		apota_text = get_apota_roots_text(apota_roots_text)
		write_cat = 'Προέλευση λέξεων'
		

-- apota a mode -- e.g. [[:Κατηγορία:Προέλευση λέξεων από τα αραβικά - ρίζες]]
			if cat_parenthesis == '' or cat_parenthesis == nil then
				text = text_wikt .. ' » [[:Κατηγορία:Ετυμολογία|Ετυμολογία]]'
				.. ' » [[:Κατηγορία:' .. write_cat .. '|' .. write_cat .. ']]'
				.. ' » [[:Κατηγορία:' .. write_cat .. ' ' .. apota_text .. '|' .. apota_text .. ']]'
				.. ' » [[:Κατηγορία:' .. page_text .. '|ρίζες]]'
				.. ' » [[:Κατηγορία:' .. write_cat .. ' ' .. apota_text .. ', ρίζες ανά γλώσσα|ανά γλώσσα]]'	
				.. ' « [[:Κατηγορία:Ετυμολογία (' .. languages[lang_iso].name ..  ')|<i>Ετυμολογία</i>]]'
				.. ' « [[:Κατηγορία:' .. languages[lang_iso].cat ..  '|<i>' .. mw.getContentLanguage():ucfirst(languages[lang_iso].name) .. '</i>]]'
				
				-- cat a
				if languages[lang_iso].sublang then
					cat = '[[Κατηγορία:' .. write_cat .. ' ' .. apota_text .. '|' .. "'" .. ']]' .. "\n"
					.. '[[Κατηγορία:' .. write_cat .. ' ' .. languages[lang_iso].host_apota .. ' - ρίζες|' .. languages[lang_iso].apota_key .. ']]' .. "\n"
				else
					cat = '[[Κατηγορία:' .. write_cat .. ' ' .. apota_text .. '|' .. "'" .. ']]' .. "\n"
				end

			else
-- apota b mode  -- e.g. [[:Κατηγορία:Προέλευση λέξεων από τα αραβικά - ρίζες (νέα ελληνικά)]]
				text = text_lang ..  ' » [[:Κατηγορία:Ετυμολογία (' ..	lang_name .. ')|Ετυμολογία]]' 
				.. ' » [[:Κατηγορία:' .. write_cat .. ' (' .. lang_name .. ')|' .. write_cat .. ']]'
				.. ' » [[:Κατηγορία:' .. write_cat .. ' ' .. languages[lang_iso].apota .. ' (' .. lang_name .. ')|' .. languages[lang_iso].apota .. ']]'
				.. ' » [[:Κατηγορία:' .. page_text .. '|ρίζες]]'
				.. ' » [[:Κατηγορία:' .. write_cat .. ' ' .. apota_text .. ', ρίζες ανά γλώσσα|ανά γλώσσα]]'
				.. ' [[:Κατηγορία:' .. cat_title .. '|«««]]'
				.. ' « [[:Κατηγορία:Ετυμολογία (' .. languages[lang_iso].name ..  ')|<i>Ετυμολογία</i>]]'
				.. ' « [[:Κατηγορία:' .. languages[lang_iso].cat ..  '|<i>' .. mw.getContentLanguage():ucfirst(languages[lang_iso].name) .. '</i>]]'

				-- cat b -- PROBLEM με την παύλα της Κατ. Προέλευση.... - ρίζες ανά γλώσσα Το κάνω κόμμα.
				if languages[lang_iso].sublang == true and not languages[lang_iso2].sublang == true then
					cat = '[[Κατηγορία:' .. cat_title .. '|' .. languages[lang_iso2]['key'].. ']]' .. "\n"
					.. '[[Κατηγορία:' .. write_cat .. ' ' .. apota_text .. ' (' .. languages[lang_iso2]['name'] .. ')|' .. languages[lang_iso2].key .. ']]' .. "\n"				
					.. '[[Κατηγορία:' .. write_cat .. ' ' .. languages[lang_iso].host_name .. ' - ρίζες|' .. languages[lang_iso2].key .. ']]' .. "\n"
				elseif languages[lang_iso2].sublang == true and not languages[lang_iso].sublang == true then
					cat = '[[Κατηγορία:' .. cat_title  .. '|' .. languages[lang_iso2]['key'].. ']]' .. "\n"
					.. '[[Κατηγορία:' .. write_cat .. ' ' .. apota_text .. ' (' .. languages[lang_iso2].name  .. ')|' .. languages[lang_iso2]['key'] .. ']]' .. "\n"		
					.. '[[Κατηγορία:' .. write_cat .. ' ' .. apota_text .. ' - ρίζες (' .. languages[lang_iso2].host_name .. ')|' .. languages[lang_iso2].apota_key .. ']]' .. "\n"
				elseif languages[lang_iso].sublang == true and languages[lang_iso2].sublang == true then
					cat = '[[Κατηγορία:' .. cat_title  .. '|' .. languages[lang_iso2]['key'].. ']]' .. "\n"
					.. '[[Κατηγορία:' .. write_cat .. ' ' .. apota_text  .. ' (' .. languages[lang_iso2].name  .. ')|' .. languages[lang_iso2]['key'] .. ']]' .. "\n"
					.. '[[Κατηγορία:' .. write_cat .. ' ' .. languages[lang_iso].host_apota  .. ' - ρίζες (' .. languages[lang_iso2].name .. ')|' .. languages[lang_iso2].key .. ']]' .. "\n"		
					.. '[[Κατηγορία:' .. write_cat .. ' ' .. apota_text  .. ' - ρίζες (' .. languages[lang_iso2].host_name  .. ')|' .. languages[lang_iso].host_key.. ']]' .. "\n"
				else
					cat = '[[Κατηγορία:' .. write_cat .. ' ' .. apota_text .. ', ρίζες ανά γλώσσα|' .. languages[lang_iso2]['key'].. ']]' .. "\n"
					.. '[[Κατηγορία:' .. write_cat .. ' ' .. apota_text .. ' (' .. languages[lang_iso2].name  .. ')| ]]' .. "\n" -- sort top
				end
			end -- close parenthesis

end -- close if mw.ustring.find(cat_title, 'Προέλευση λέξεων από') and mw.ustring.find(cat_title, 'ρίζες')




--------------------------------------------------------------------------
--                     Ετυμολογία Etymology                             --
--            apota + by language , ρίζες ανά γλώσσα                    --
--------------------------------------------------------------------------
--  - ρίζες ανά γλώσσα με παύλα δημιουργουσε πρόβλημα σύγκρουσης με το -ρίζες
-- e.g. [[:Κατηγορία:Προέλευση λέξεων από τα αραβικά, ρίζες ανά γλώσσα]] -- check [[:Κατηγορία:Προέλευση λέξεων από την πρωτοϊνδοευρωπαϊκή, ρίζες ανά γλώσσα]]
-- ============ match languages apota
-- ++ -- NOT Λέξεις από: βλ. [[Πρότυπο:από]]
function get_apota_roots_bylang_text(apota_roots_bylang_text)
	if mw.ustring.find(cat_title, 'από') and not mw.ustring.find(cat_title, 'από το')
	and mw.ustring.find(cat_title, 'ρίζες') and  mw.ustring.find(cat_title, 'ανά γλώσσα')
	and not mw.ustring.find(cat_title, 'αναδρομικό')
	and not mw.ustring.find(cat_title, 'από ανθρωπωνύμια') and not mw.ustring.find(cat_title, 'από διαφημίσεις') and not mw.ustring.find(cat_title, 'από επαγγέλματα') 
	and not mw.ustring.find(cat_title, 'από εθνικά ονόματα') and not mw.ustring.find(cat_title, 'από επωνυμίες') and not mw.ustring.find(cat_title, 'από ονόματα')
	and not mw.ustring.find(cat_title, 'από παρωνύμια') and not mw.ustring.find(cat_title, 'από τοπωνύμια')
	and not mw.ustring.find(cat_title, 'από τις τέχνες') and not mw.ustring.find(cat_title, 'από τον') and not mw.ustring.find(cat_title, 'από τα έργα')
	and not mw.ustring.find(cat_title, 'από καλλιτεχνικά έργα') 
	and not mw.ustring.find(cat_title, 'Λέξεις από') and not mw.ustring.find(cat_title, 'ως προς')  and not mw.ustring.find(cat_title, 'απόστολος')
	and not mw.ustring.find(cat_title, 'από επιγραφές') and not mw.ustring.find(cat_title, 'από νόμους') -- [[Πρότυπο:παράθεμα]] Λήμματα με παραθέματα από νόμους, από επιγραφές
		and not mw.ustring.find(cat_title, 'από δημοτικά τραγούδια') 
	and not mw.ustring.find(cat_title, 'πρόθημα από') and not mw.ustring.find(cat_title, 'απόλυτα')
	then
		-- PROBLEM could not use hyphen. - ρίζες
	apota_roots_bylang_text = mw.ustring.sub(mw.ustring.match(cat_title, "Προέλευση λέξεων (.*), ρίζες ανά γλώσσα"), 1, -1) -- gives e.g. από τα αραβικά
	end
return apota_roots_bylang_text
end

function get_apota(iso)
	lang_iso = require("Module:lang").langapota_to_langiso(get_apota_roots_bylang_text(apota_roots_bylang_text))
return lang_iso
end


-- -------------------- APPLICATION Προέλευση λέξεων .... , ρίζες ανά γλώσσα -------------------------
if mw.ustring.find(cat_title, 'Προέλευση λέξεων από') and mw.ustring.find(cat_title, 'ρίζες') and mw.ustring.find(cat_title, 'ανά γλώσσα')
	then 
		lang_iso = get_apota(apota_roots_bylang_text)
		apota_text = get_apota_roots_bylang_text(apota_roots_bylang_text)
		write_cat = 'Προέλευση λέξεων'
		lang_name = languages[lang_iso].name
-- [[:Κατηγορία:Προέλευση λέξεων από την πρωτοϊνδοευρωπαϊκή, ρίζες ανά γλώσσα]]
-- [[:Κατηγορία:Προέλευση λέξεων από τα αραβικά, ρίζες ανά γλώσσα]]
		-- PREPARED TEXT: text_lang repeated:
		if languages[lang_iso].sublang == true then
			text = '[[:Κατηγορία:Κατάλογος γλωσσών|Γλώσσα]]: ' 
			.. '[[:Κατηγορία:' .. languages[lang_iso].host .. '|<b>' .. languages[lang_iso].host_show .. '</b>]]'
			.. ' - [[:Κατηγορία:' .. lang_cat .. '|' .. lang_cat .. ']]'
		else
			text = '[[:Κατηγορία:Κατάλογος γλωσσών|Γλώσσα]]: ' 
			.. '[[:Κατηγορία:' .. languages[lang_iso].cat .. '|<b>' .. mw.getContentLanguage():ucfirst(lang_name) .. '</b>]]'
		end
				text = text ..  ' » [[:Κατηγορία:Ετυμολογία (' ..	lang_name .. ')|Ετυμολογία]]' 
				.. ' » [[:Κατηγορία:' .. write_cat .. ' (' ..	lang_name .. ')|' .. write_cat .. ']]'
				.. ' » [[:Κατηγορία:' .. write_cat .. ' ' .. apota_text .. '|' .. apota_text .. ']]'
				.. ' » [[:Κατηγορία:' .. write_cat .. ' ' .. apota_text .. ' - ρίζες|ρίζες]]'
				.. ' » [[:Κατηγορία:' .. page_text .. '|ανά γλώσσα]]'
				-- cat
				if languages[lang_iso].sublang then
					cat = '[[Κατηγορία:' .. write_cat .. ' ' .. apota_text .. '| ]]' .. "\n" -- sort top
					.. '[[Κατηγορία:' .. write_cat .. ' ' .. apota_text .. ' ' .. languages[lang_iso].host_apota .. '|' .. languages[lang_iso].apota_key .. ']]' .. "\n"
				else
					cat = '[[Κατηγορία:' .. write_cat .. ' ' .. apota_text .. '| ]]' .. "\n" -- sort top
					.. '[[Κατηγορία:Ρίζες (' .. lang_name ..  ')| ]]' .. "\n" -- sort top
				end

end -- close if mw.ustring.find(cat_title, 'Προέλευση λέξεων από') and mw.ustring.find(cat_title, 'ρίζες ανά γλώσσα')



--------------------------------------------------------------------------
--                  TOPOS  Θεματικές > ΤΟΠΩΝΥΜΙΑ
--                  TOPOS   Topics  > PLACENAMES                        --
--------------------------------------------------------------------------
-- =============== DATA
-- First part of the cat_title is:
-- call [[Module:topos/kind]].kind -- Write topos[toposid].anykeyword e.g. topos[toposid].word_cat is the Category's placename
function get_toposid(toposid)
if mw.ustring.find(cat_title, 'Αεροδρόμια') then toposid = 'αεροδρόμιο' end
if mw.ustring.find(cat_title, 'Ακτές') then toposid = 'ακτή' end
if mw.ustring.find(cat_title, 'Ακρωτήρια') then toposid = 'ακρωτήριο' end
if mw.ustring.find(cat_title, 'Ανάκτορα') then toposid = 'ανάκτορο' end
if mw.ustring.find(cat_title, 'Αποικίες') then toposid = 'αποικία' end
-- αρχαίες  βλ. Ναοί, Περιοχές, Πόλεις, Χώρες
if mw.ustring.find(cat_title, 'Αρχαιολογικοί τόποι') then toposid = 'αρχαιολογικός τόπος' end
if mw.ustring.find(cat_title, 'Αρχιπέλαγα') then toposid = 'αρχιπέλαγος' end
if mw.ustring.find(cat_title, 'Αστέρες') then toposid = 'αστέρας' end
if mw.ustring.find(cat_title, 'Αστερισμοί') then toposid = 'αστερισμός' end
if mw.ustring.find(cat_title, 'Αυτοκρατορίες') then toposid = 'αυτοκρατορία' end
if mw.ustring.find(cat_title, 'Βουνά') then toposid = 'βουνό' end
if mw.ustring.find(cat_title, 'Γέφυρες') then toposid = 'γέφυρα' end
if mw.ustring.find(cat_title, 'Δάση') then toposid = 'δάσος' end
if mw.ustring.find(cat_title, 'Δήμοι') then toposid = 'δήμος' end
if mw.ustring.find(cat_title, 'Διαμερίσματα') then toposid = 'διαμέρισμα' end
if mw.ustring.find(cat_title, 'Διοικητικές υποδιαιρέσεις') then toposid = 'διοικητική υποδιαίρεση' end
if mw.ustring.find(cat_title, 'Διώρυγες') then toposid = 'διώργυα' end
if mw.ustring.find(cat_title, 'Δορυφόροι') then toposid = 'δορυφόρος' end
if mw.ustring.find(cat_title, 'Δουκάτα') then toposid = 'δουκάτο' end
if mw.ustring.find(cat_title, 'Ενορίες') then toposid = 'ενορία' end
if mw.ustring.find(cat_title, 'Έρημοι') then toposid = 'έρημος' end
if mw.ustring.find(cat_title, 'Επαρχίες') then toposid = 'επαρχία' end
if mw.ustring.find(cat_title, 'Ήπειροι') then toposid = 'ήπειρος' end
if mw.ustring.find(cat_title, 'Ηφαίστεια') then toposid = 'ηφαίστειο' end
if mw.ustring.find(cat_title, 'Θάλασσες') then toposid = 'θάλασσα' end
if mw.ustring.find(cat_title, 'Θαλάσσιες περιοχές') then toposid = 'θαλάσσια περιοχή' end
if mw.ustring.find(cat_title, 'Θέματα') then toposid = 'θέμα' end
if mw.ustring.find(cat_title, 'Θέρετρα') then toposid = 'θέρετρο' end
if mw.ustring.find(cat_title, 'Ισθμοί') then toposid = 'ισθμός' end
-- Ιστορικές βλ. Περιοχές, Χώρες
if mw.ustring.find(cat_title, 'Καντόνια') then toposid = 'καντόνιο' end
if mw.ustring.find(cat_title, 'Καταρράκτες') then toposid = 'καταρράκτης' end
if mw.ustring.find(cat_title, 'Κατοικημένοι τόποι') then toposid = 'κατοικημένοι τόποι' end
if mw.ustring.find(cat_title, 'Κοιλάδες') then toposid = 'κοιλάδα' end
if mw.ustring.find(cat_title, 'Κοινότητες') then toposid = 'κοινότητα' end
if mw.ustring.find(cat_title, 'Κόλποι') then toposid = 'κόλπος' end
if mw.ustring.find(cat_title, 'Κομητείες') then toposid = 'κομητεία' end
if mw.ustring.find(cat_title, 'Κορυφές βουνών') then toposid = 'κορυφή' end
if mw.ustring.find(cat_title, 'Κρατίδια') then toposid = 'κρατίδιο' end
if mw.ustring.find(cat_title, 'Κτίρια') then toposid = 'κτίριο' end
if mw.ustring.find(cat_title, 'Κωμοπόλεις') then toposid = 'κωμόπολη' end
if mw.ustring.find(cat_title, 'Λιμάνια') then toposid = 'λιμάνι' end
if mw.ustring.find(cat_title, 'Λίμνες') then toposid = 'λίμνη' end
if mw.ustring.find(cat_title, 'Λιμνοθάλασσες') then toposid = 'λιμνοθάλασσα' end
if mw.ustring.find(cat_title, 'Λόφοι') then toposid = 'λόφος' end
if mw.ustring.find(cat_title, 'Μονές') then toposid = 'μονή' end
if mw.ustring.find(cat_title, 'Μουσεία') then toposid = 'μουσείο' end
if mw.ustring.find(cat_title, 'Ναοί') then toposid = 'ναός' end
	if mw.ustring.find(cat_title, 'Αρχαίοι ναοί') then toposid = 'αρχαίος ναός' end
if mw.ustring.find(cat_title, 'Νησιά') then toposid = 'νησί' end
if mw.ustring.find(cat_title, 'Νησίδες') then toposid = 'νησίδα' end
if mw.ustring.find(cat_title, 'Νομοί') then toposid = 'νομός' end
if mw.ustring.find(cat_title, 'Νοσοκομεία') then toposid = 'νοσοκομείο' end
if mw.ustring.find(cat_title, 'Οικισμοί') then toposid = 'οικισμός' end
if mw.ustring.find(cat_title, 'Οροπέδια') then toposid = 'οροπέδιο' end
if mw.ustring.find(cat_title, 'Ορεινά περάσματα') then toposid = 'ορεινό πέρασμα' end
if mw.ustring.find(cat_title, 'Οροσειρές') then toposid = 'οροσειρά' end
if mw.ustring.find(cat_title, 'Πάρκα') then toposid = 'πάρκο' end
if mw.ustring.find(cat_title, 'Πεδιάδες') then toposid = 'πεδιάδα' end
if mw.ustring.find(cat_title, 'Πελάγη') then toposid = 'πέλαγος' end
if mw.ustring.find(cat_title, 'Περιοχές') then toposid = 'περιοχή' end
	if mw.ustring.find(cat_title, 'Αρχαίες περιοχές') then toposid = 'αρχαία περιοχή' end
	if mw.ustring.find(cat_title, 'Ιστορικές περιοχές') then toposid = 'ιστορική περιοχή' end
if mw.ustring.find(cat_title, 'Περιφέρειες') then toposid = 'περιφέρεια' end
if mw.ustring.find(cat_title, 'Πλανήτες') then toposid = 'πλανήτης' end
if mw.ustring.find(cat_title, 'Πλατείες') then toposid = 'πλατεία' end
if mw.ustring.find(cat_title, 'Πόλεις') then toposid = 'πόλη' end
	if mw.ustring.find(cat_title, 'Αρχαίες πόλεις') then toposid = 'αρχαία πόλη' end
---if mw.ustring.find(cat_title, 'Πόλεις κράτη') then toposid = 'πόλη κράτος' end ΑΦΑΙΡΕΙΤΑΙ: αφορά μόνον αρχαίες ελληνικές Πόλεις
-- IMPOSSIBLE TO SEE DASH -- if mw.ustring.find(cat_title, 'Πόλεις-πρωτεύουσες') then toposid = 'πόλη πρωτεύουσα' end
	-- αλλαγή ονόματος σε Τοπικές πρωτεύουσες
if mw.ustring.find(cat_title, 'Πολιτείες') then toposid = 'πολιτεία' end
if mw.ustring.find(cat_title, 'Πορθμοί') then toposid = 'πορθμός' end
if mw.ustring.find(cat_title, 'Ποταμοί') then toposid = 'ποταμός' end
if mw.ustring.find(cat_title, 'Προάστια') then toposid = 'προάστιο' end
if mw.ustring.find(cat_title, 'Πρωτεύουσες') then toposid = 'πρωτεύουσα' end -- βλ. Τοπικές πρωτεύουσες
if mw.ustring.find(cat_title, 'Ρέματα') then toposid = 'ρέμα' end
if mw.ustring.find(cat_title, 'Σατραπείες') then toposid = 'σατραπεία' end
if mw.ustring.find(cat_title, 'Στάδια') then toposid = 'στάδιο' end
if mw.ustring.find(cat_title, 'Σπήλαια') then toposid = 'σπήλαιο' end
if mw.ustring.find(cat_title, 'Στενά') then toposid = 'στενό' end
if mw.ustring.find(cat_title, 'Σύμπαν') then toposid = 'σύμπαν' end
if mw.ustring.find(cat_title, 'Συνοικίες') then toposid = 'συνοικία' end
if mw.ustring.find(cat_title, 'Συνοικισμοί') then toposid = 'συνοικισμός' end
if mw.ustring.find(cat_title, 'Τοπικές πρωτεύουσες') then toposid = 'τοπική πρωτεύουσα' end
if mw.ustring.find(cat_title, 'Τοποθεσίες') then toposid = 'τοποθεσία' end
if mw.ustring.find(cat_title, 'Τοπωνύμια') then toposid = 'τοπωνύμιο2' end -- [[Module:topos/kind]] special kind key for auto cat
if mw.ustring.find(cat_title, 'Υδραγωγεία') then toposid = 'υδραγωγείο' end
if mw.ustring.find(cat_title, 'Ύφαλοι') then toposid = 'ύφαλος' end
if mw.ustring.find(cat_title, 'Φαράγγια') then toposid = 'φαράγγι' end
if mw.ustring.find(cat_title, 'Φάροι') then toposid = 'φάρος' end
if mw.ustring.find(cat_title, 'Φιορδ') then toposid = 'φιορδ' end
if mw.ustring.find(cat_title, 'Χείμαρροι') then toposid = 'χείμαρρος' end
if mw.ustring.find(cat_title, 'Χερσόνησοι') then toposid = 'χερσόνησος' end
if mw.ustring.find(cat_title, 'Χώρες') then toposid = 'χώρα' end
	if mw.ustring.find(cat_title, 'Αρχαίες χώρες') then toposid = 'αρχαία χώρα' end
	if mw.ustring.find(cat_title, 'Ιστορικές χώρες') then toposid = 'ιστορική χώρα' end
if mw.ustring.find(cat_title, 'Χωριά') then toposid = 'χωριό' end
if mw.ustring.find(cat_title, 'Ωκεανοί') then toposid = 'ωκεανός' end

	if toposid ~= '' and toposid ~= nil then
	return toposid
	else
		-- do nothing, otherwise it spoils ALL categories
	end
end


-- ================= GENERAL TITLES - ΜΟΝΟ ΓΕΝΙΚΕΣ ΕΠΙΚΕΦΑΛΙΔΕΣ
-- ----------------- ΤΟΠΩΝΥΜΙΑ  - placenames 
	if cat_title == 'Τοπωνύμια' then
-- a mode -- [[:Κατηγορία:Τοπωνύμια]]
		if cat_parenthesis == '' or cat_parenthesis == nil then
			text = text_wikt .. ' » [[:Κατηγορία:Θεματικές ορολογίες|Θεματικές ορολογίες]]' 
			.. ' » [[:Κατηγορία:Ονομασίες|Ονομασίες]]' 
			.. ' » [[:Κατηγορία:Τοπωνύμια|<b>Τοπωνύμια</b>]]' 
			.. ' » [[:Κατηγορία:Τοπωνύμια ανά είδος|<b>ανά είδος</b>]]' 
			 .. ' » [[:Κατηγορία:Τοπωνύμια ανά τόπο|<b>ανά τόπο</b>]]'
			 cat = '[[Κατηγορία:Ονομασίες| τοπωνυμια]]' .. "\n" -- sort top		
			.. '[[Κατηγορία:Θεματικές ορολογίες|τοπωνυμια]]' .. "\n"
			.. '[[Κατηγορία:Κύρια ονόματα| τοπωνυμια]]' .. "\n" -- sort top
		else
-- b mode -- [[:Κατηγορία:Τοπωνύμια (νέα ελληνικά)]]
			text = text_lang .. ' » [[:Κατηγορία:Θεματικές ορολογίες (' .. lang_name .. ')|Θεματικές ορολογίες]]' 
			.. ' » [[:Κατηγορία:Ονομασίες (' .. lang_name .. ')|Ονομασίες]]' 
			.. ' » [[:Κατηγορία:Τοπωνύμια (' .. lang_name ..  ')|<b>Τοπωνύμια</b>]]'  
			.. ' » [[:Κατηγορία:Τοπωνύμια ανά είδος (' .. lang_name ..  ')|<b>ανά είδος</b>]]'  
			.. ' » [[:Κατηγορία:Τοπωνύμια ανά τόπο (' .. lang_name ..  ')|<b>ανά τόπο</b>]]'
			cat =  '[[Κατηγορία:Τοπωνύμια|' .. lang_key .. ']]' .. "\n"
			.. '[[Κατηγορία:Ονομασίες (' .. lang_name .. ')|τοπωνυμια]]' .. "\n"
			.. '[[Κατηγορία:Θεματικές ορολογίες (' .. lang_name .. ')| τοπωνυμια]]' .. "\n"
			.. '[[Κατηγορία:Κύρια ονόματα (' .. lang_name .. ')|τοπωνυμια]]' .. "\n"
		end
	end

-- ----------------- ΤΟΠΩΝΥΜΙΑ ΑΝΑ ΕΙΔΟΣ - placenames by kind
	if cat_title == 'Τοπωνύμια ανά είδος' then
-- a mode [[:Κατηγορία:Τοπωνύμια ανά είδος]]
		if cat_parenthesis == '' or cat_parenthesis == nil then
			text = text_wikt .. ' » [[:Κατηγορία:Θεματικές ορολογίες|Θεματικές ορολογίες]]' 
			.. ' » [[:Κατηγορία:Ονομασίες|Ονομασίες]]' 
			.. ' » [[:Κατηγορία:Τοπωνύμια|<b>Τοπωνύμια</b>]]' .. ' » <b>ανά είδος</b>'  .. ' » [[:Κατηγορία:Τοπωνύμια ανά τόπο|<b>ανά τόπο</b>]]'
			 cat = '[[Κατηγορία:Τοπωνύμια| αναειδοσ]]' .. "\n" -- sort top
		else
-- b mode -- NO lang. cf  [[:Κατηγορία:Τοπωνύμια (νέα ελληνικά)]]
			text = text_lang .. ' » [[:Κατηγορία:Θεματικές ορολογίες (' .. lang_name .. ')|Θεματικές ορολογίες]]' 
			.. ' » [[:Κατηγορία:Ονομασίες (' .. lang_name .. ')|Ονομασίες]]' 
			.. ' » [[:Κατηγορία:Τοπωνύμια (' .. lang_name ..  ')|<b>Τοπωνύμια</b>]]' .. ' » <b>ανά είδος</b>'  .. ' » [[:Κατηγορία:Τοπωνύμια ανά τόπο (' .. lang_name ..  ')|<b>ανά τόπο</b>]]'
			cat = '[[Κατηγορία:Τοπωνύμια (' .. lang_name .. ')| αναειδοσ]]' .. "\n" -- sort top
		end
	end

-- ----------------- ΤΟΠΩΝΥΜΙΑ ΑΝΑ ΤΟΠΟ placenames by place
	if cat_title == 'Τοπωνύμια ανά τόπο' then
-- a mode -- [[:Κατηγορία:Τοπωνύμια ανά τόπο]]
		if cat_parenthesis == '' or cat_parenthesis == nil then
			text = text_wikt .. ' » [[:Κατηγορία:Θεματικές ορολογίες|Θεματικές ορολογίες]]' 
			.. ' » [[:Κατηγορία:Ονομασίες|Ονομασίες]]'
			.. ' » [[:Κατηγορία:Τοπωνύμια|<b>Τοπωνύμια</b>]]' .. ' » [[:Κατηγορία:Τοπωνύμια ανά είδος|<b>ανά είδος</b>]]'  .. ' » <b>ανά τόπο</b>'
			 cat = '[[Κατηγορία:Τοπωνύμια| ανατοπο]]' .. "\n" -- sort top
		else
-- b mode -- [[:Κατηγορία:Τοπωνύμια ανά τόπο (νέα ελληνικά)]], Τοπωνύμια (νέα ελληνικά) = Τοπωνυμία ανά είδος (νέα ελληνικά)
			text = text_lang .. ' » [[:Κατηγορία:Θεματικές ορολογίες (' .. lang_name .. ')|Θεματικές ορολογίες]]' 
			.. ' » [[:Κατηγορία:Ονομασίες (' .. lang_name .. ')|Ονομασίες]]' 
			.. ' » [[:Κατηγορία:Τοπωνύμια (' .. lang_name ..  ')|<b>Τοπωνύμια</b>]]'
			.. ' » [[:Κατηγορία:Τοπωνύμια ανά είδος (' .. lang_name ..  ')|<b>ανά είδος</b>]]'  .. ' » <b>ανά τόπο</b>'
			cat = '[[Κατηγορία:Τοπωνύμια ανά τόπο|' .. lang_key .. ']]' .. "\n"
			.. '[[Κατηγορία:Τοπωνύμια (' .. lang_name .. ')| ανατοπο]]' .. "\n" -- sort top
		end
	end


-- ----------------- ΤΟΠΩΝΥΜΙΑ ΑΝΑ ΕΙΔΟΣ ΚΑΙ ΑΝΑ ΤΟΠΟ placenames by kind and by place
	if cat_title == 'Τοπωνύμια ανά είδος και ανά τόπο' then
-- a mode -- [[:Κατηγορία:Τοπωνύμια ανά είδος και ανά τόπο]]
		if cat_parenthesis == '' or cat_parenthesis == nil then
			text = text_wikt .. ' » [[:Κατηγορία:Θεματικές ορολογίες|Θεματικές ορολογίες]]' 
			.. ' » [[:Κατηγορία:Ονομασίες|Ονομασίες]]'
			.. ' » [[:Κατηγορία:Τοπωνύμια|<b>Τοπωνύμια</b>]]' .. ' » [[:Κατηγορία:Τοπωνύμια ανά είδος|<b>ανά είδος</b>]]'
			.. ' » [[:Κατηγορία:Τοπωνύμια ανά τόπο|<b>ανά τόπο</b>]]'
			.. ' » <b>ανά είδος και τόπο</b>'
			 cat = '[[Κατηγορία:Τοπωνύμια| αναειδοσκαιτοπο]]' .. "\n" -- sort top
			.. '[[Κατηγορία:Τοπωνύμια ανά είδος| αναειδοσκαιτοπο]]' .. "\n" -- sort top
			.. '[[Κατηγορία:Τοπωνύμια ανά τόπο| !αναειδοσκαιτοπο]]' .. "\n" -- sort top !

		else
-- b mode -- [[:Κατηγορία:Τοπωνύμια ανά είδος και ανά τόπο (νέα ελληνικά)]]
			text = text_lang .. ' » [[:Κατηγορία:Θεματικές ορολογίες (' .. lang_name .. ')|Θεματικές ορολογίες]]' 
			.. ' » [[:Κατηγορία:Ονομασίες (' .. lang_name .. ')|Ονομασίες]]' 
			.. ' » [[:Κατηγορία:Τοπωνύμια (' .. lang_name ..  ')|<b>Τοπωνύμια</b>]]'  
			.. ' » [[:Κατηγορία:Τοπωνύμια ανά είδος (' .. lang_name ..  ')|<b>ανά είδος</b>]]'  
			.. ' » [[:Κατηγορία:Τοπωνύμια ανά τόπο (' .. lang_name ..  ')|<b>ανά τόπο</b>]]'
			.. ' » <b>ανά είδος και τόπο</b>'
			cat = '[[Κατηγορία:Τοπωνύμια ανά τόπο|' .. lang_key .. ']]' .. "\n"
			.. '[[Κατηγορία:Τοπωνύμια (' .. lang_name .. ')| αναειδοσκαιτοπο]]' .. "\n" -- sort top
			.. '[[Κατηγορία:Τοπωνύμια ανά είδος (' .. lang_name .. ')| αναειδοσκαιτοπο]]' .. "\n" -- sort top
			.. '[[Κατηγορία:Τοπωνύμια ανά τόπο (' .. lang_name .. ')| !αναειδοσκαιτοπο]]' .. "\n" -- sort top !
		end
	end


-- ================= SPECIFIC kind of place TITLES - ΕΠΙΚΕΦΑΛΙΔΕΣ ΕΙΔΟΥΣ
--------------------------------------------------------------------------
--              topos -  [[Module:topos/kinds]] with NO where
--   ΕΙΔΗ τοπωνυμίων: kinds of places ΧΩΡΙΣ where 'της... τάδε χώρας'
--------------------------------------------------------------------------

-- =============== kind of topos ΑΝΑ ΤΟΠΟ placenames by place
 
if mw.ustring.match(cat_title, '(.*) ανά τόπο') then toposid = get_toposid(cat_title) end

	if mw.ustring.find(cat_title, 'ανά τόπο') and not mw.ustring.find(cat_title, 'Τοπωνύμια') then
-- a mode
		if cat_parenthesis == '' or cat_parenthesis == nil then
			text = text_wikt .. ' » [[:Κατηγορία:Θεματικές ορολογίες|Θεματικές ορολογίες]]' 
			.. ' » [[:Κατηγορία:Ονομασίες|Ονομασίες]]'
			.. ' » [[:Κατηγορία:Τοπωνύμια|<b>Τοπωνύμια</b>]]' .. ' » [[:Κατηγορία:Τοπωνύμια ανά είδος|<b>ανά είδος</b>]]'  
			if topos[toposid].parent4 ~= '' and topos[toposid].parent4 ~= nil then
				text = text .. ' » [[:Κατηγορία:' .. topos[toposid].parent4 .. '|' .. topos[toposid].parent4 .. ']]'
			end	
			if topos[toposid].parent3 ~= '' and topos[toposid].parent3 ~= nil then
				text = text .. ' » [[:Κατηγορία:' .. topos[toposid].parent3  .. '|' .. topos[toposid].parent3 .. ']]'
			end	
			if topos[toposid].parent2 ~= '' and topos[toposid].parent2 ~= nil then
				text = text .. ' » [[:Κατηγορία:' .. topos[toposid].parent2 .. '|' .. topos[toposid].parent2 .. ']]'
			end	
			if topos[toposid].parent ~= '' and topos[toposid].parent ~= nil then
				text = text .. ' » [[:Κατηγορία:' .. topos[toposid].parent .. '|' .. topos[toposid].parent .. ']]'
			end	
			text = text .. ' » [[:Κατηγορία:' .. topos[toposid].word_cat .. '|' .. topos[toposid].word_cat .. ']]'
--			text = text .. ' :: [[:Κατηγορία:Τοπωνύμια ανά τόπο|ανά τόπο]]' 
			text = text .. textit -- says 'ανά τόπο'
			if topos[toposid].extra1 ~= '' and topos[toposid].extra1 ~= nil then
				text = text .. ' « [[:Κατηγορία:' .. topos[toposid].extra1 .. '|' .. topos[toposid].extra1 .. ']]'
			end
			-- descr -- [[:Κατηγορία:Διαμερίσματα ανά τόπο]]
			if topos[toposid].descr ~= '' and topos[toposid].descr ~= nil then
				text_plus = '<dl><dd>' .. topos[toposid].descr .. '</dd></dl>'
			end	


			 cat = '[[Κατηγορία:Τοπωνύμια ανά είδος και ανά τόπο|' .. topos[toposid].key .. ']]' .. "\n"
			.. '[[Κατηγορία:' .. topos[toposid].word_cat .. '| ανατοπο]]' .. "\n" -- sort top
			if topos[toposid].parent ~= '' and topos[toposid].parent ~= nil then
				cat = cat .. '[[Κατηγορία:' .. topos[toposid].parent .. ' ανά τόπο| ' .. topos[toposid].key .. ']]' .. "\n" -- sort top
			end
		else
-- b mode -- [[:Κατηγορία:Αεροδρόμια ανά τόπο (νέα ελληνικά)]]
			text = text_lang .. ' » [[:Κατηγορία:Θεματικές ορολογίες (' .. lang_name .. ')|Θεματικές ορολογίες]]' 
			.. ' » [[:Κατηγορία:Ονομασίες (' .. lang_name .. ')|Ονομασίες]]' 
			.. ' » [[:Κατηγορία:Τοπωνύμια (' .. lang_name ..  ')|<b>Τοπωνύμια</b>' .. ' » <b>ανά είδος</b>]]'  
			if topos[toposid].parent4 ~= '' and topos[toposid].parent4 ~= nil then
				text = text .. ' » [[:Κατηγορία:' .. topos[toposid].parent4 .. ' (' .. lang_name .. ')|' .. topos[toposid].parent4 .. ']]'
			end	
			if topos[toposid].parent3 ~= '' and topos[toposid].parent3 ~= nil then
				text = text .. ' » [[:Κατηγορία:' .. topos[toposid].parent3  .. ' (' .. lang_name .. ')|' .. topos[toposid].parent3 .. ']]'
			end	
			if topos[toposid].parent2 ~= '' and topos[toposid].parent2 ~= nil then
				text = text .. ' » [[:Κατηγορία:' .. topos[toposid].parent2 .. ' (' .. lang_name .. ')|' .. topos[toposid].parent2 .. ']]'
			end	
			if topos[toposid].parent ~= '' and topos[toposid].parent ~= nil then
				text = text .. ' » [[:Κατηγορία:' .. topos[toposid].parent .. ' (' .. lang_name .. ')|' .. topos[toposid].parent .. ']]'
			end	
			text = text .. ' :: [[:Κατηγορία:Τοπωνύμια ανά τόπο (' .. lang_name .. ')|ανά τόπο]]' 
			text = text .. textit_lang .. ' [[:Κατηγορία:' .. cat_title .. '|«««]]'
			if topos[toposid].extra1 ~= '' and topos[toposid].extra1 ~= nil then
				text = text .. ' « [[:Κατηγορία:' .. topos[toposid].extra1 .. ' (' .. lang_name .. ')|' .. topos[toposid].extra1 .. ']]'
			end
			-- descr -- [[:Κατηγορία:Διαμερίσματα (νέα ελληνικά)]]
			if topos[toposid].descr ~= '' and topos[toposid].descr ~= nil then
				text_plus = '<dl><dd>' .. topos[toposid].descr .. '</dd></dl>'
			end	

			-- cat b [[:Κατηγορία:Αρχιπέλαγα ανά τόπο (νέα ελληνικά)]] +parent
			cat = '[[Κατηγορία:Τοπωνύμια ανά είδος και ανά τόπο (' .. lang_name .. ')|' .. topos[toposid].key .. ']]' .. "\n"
			.. '[[Κατηγορία:' .. topos[toposid].word_cat .. ' ανά τόπο|' .. lang_key .. ']]' .. "\n"
			.. '[[Κατηγορία:' .. topos[toposid].word_cat .. ' (' .. lang_name .. ')| ανατοπο]]' .. "\n" -- sort top
			if topos[toposid].parent ~= '' and topos[toposid].parent ~= nil then
				cat = cat .. '[[Κατηγορία:' .. topos[toposid].parent .. ' ανά τόπο (' .. lang_name .. ')| ' .. topos[toposid].key .. ']]' .. "\n" -- sort top
			end
		end -- close catparenthesis
	end -- close if mw.ustring.find(cat_title, 'ανά τόπο') and not mw.ustring.find(cat_title, 'Τοπωνύμια') 



-- =============== all places, NO where EXCEPT the word 'Τοπωνύμια'
if toposkind.label[cat_title] then -- but not find 'ανά τόπο' 
	-- PROBLEM DO NOT make subcategory = Τοπωνύμια [[:Κατηγορία:Τοπωνύμια (νέα ελληνικά)]] It repeats itselft in the category.
	--  and not toposkind.label['Τοπωνύμια'] 
	-- I took off ['Τοπωνύμια' from [[Module:auto cat/data/toposkind]] - NOT regarded as one of the others.
toposid = get_toposid(cat_title)
-- a mode -- [[:Κατηγορία:Αεροδρόμια]] +extra1, -- [[:Κατηγορία:Ωκεανοί]] +parent
	-- always CHECK PROBLEMS AT [[:Κατηγορία:Δάνεια]] ~~~~ [[:Κατηγορία:Τοπωνύμια ανά είδος]]
		if cat_parenthesis == '' or cat_parenthesis == nil then
			text = text_wikt .. ' » [[:Κατηγορία:Θεματικές ορολογίες|Θεματικές ορολογίες]]' 
			.. ' » [[:Κατηγορία:Ονομασίες|Ονομασίες]] » [[:Κατηγορία:Τοπωνύμια|<b>Τοπωνύμια</b>]] » [[:Κατηγορία:Τοπωνύμια ανά είδος|ανά είδος]]' 
			if topos[toposid].parent4 ~= '' and topos[toposid].parent4 ~= nil then
				text = text .. ' » [[:Κατηγορία:' .. topos[toposid].parent4 .. '|' .. topos[toposid].parent4 .. ']]'
			end	
			if topos[toposid].parent3 ~= '' and topos[toposid].parent3 ~= nil then
				text = text .. ' » [[:Κατηγορία:' .. topos[toposid].parent3  .. '|' .. topos[toposid].parent3 .. ']]'
			end	
			if topos[toposid].parent2 ~= '' and topos[toposid].parent2 ~= nil then
				text = text .. ' » [[:Κατηγορία:' .. topos[toposid].parent2 .. '|' .. topos[toposid].parent2 .. ']]'
			end	
			if topos[toposid].parent ~= '' and topos[toposid].parent ~= nil then
				text = text .. ' » [[:Κατηγορία:' .. topos[toposid].parent .. '|' .. topos[toposid].parent .. ']]'
			end	
			text = text .. textit
			-- by place NOT Δορυφόροι, Ήπειροι, Πλανήτες, Ωκεανοί
			if toposid == 'αστέρας' or toposid == 'αστερισμός' or toposid == 'δορυφόρος' or toposid == 'ήπειρος' 
				or toposid == 'πλανήτης' or toposid == 'σύμπαν' or toposid == 'ωκεανός' 
				then
				text = text
			else
				text = text .. ' :: [[:Κατηγορία:' .. topos[toposid].word_cat .. ' ανά τόπο|ανά τόπο]]' 
			end
			if topos[toposid].extra1 ~= '' and topos[toposid].extra1 ~= nil then
				text = text .. ' « [[:Κατηγορία:' .. topos[toposid].extra1 .. '|' .. topos[toposid].extra1 .. ']]'
			end
			-- descr -- [[:Κατηγορία:Διαμερίσματα]]
			if topos[toposid].descr ~= '' and topos[toposid].descr ~= nil then
				text_plus = '<dl><dd>' .. topos[toposid].descr .. '</dd></dl>'
			end	
			
			-- cat a -- [[:Κατηγορία:Οροσειρές]]
--			cat = '[[Κατηγορία:' .. topos[toposid].word_cat .. ' ανά τόπο| ' .. topos[toposid].key .. ']]'..  "\n" -- sort top
			if topos[toposid].parent ~= '' and topos[toposid].parent ~= nil then
				cat = '[[Κατηγορία:' .. topos[toposid].parent .. '| ' .. topos[toposid].key .. ']]' .. "\n" -- sort top
			end
			-- the standards
			cat = cat .. '[[Κατηγορία:Τοπωνύμια ανά είδος|' .. topos[toposid].key .. ']]'
			.. '[[Κατηγορία:Θεματικές ορολογίες|' .. topos[toposid].key .. ']]'
			if topos[toposid].extra1 ~= '' and topos[toposid].extra1 ~= nil then
				cat = cat .. '[[Κατηγορία:' .. topos[toposid].extra1 .. '| ' .. topos[toposid].key .. ']]' ..  "\n" -- sort top
			end
			if topos[toposid].extra2 ~= '' and topos[toposid].extra2 ~= nil then
				cat = cat .. '[[Κατηγορία:' .. topos[toposid].extra2 .. '| ' .. topos[toposid].key .. ']]' ..  "\n" -- sort top
			end
			if topos[toposid].extra3 ~= '' and topos[toposid].extra3 ~= nil then
				cat = cat .. '[[Κατηγορία:' .. topos[toposid].extra3 .. '| ' .. topos[toposid].key .. ']]' ..  "\n" -- sort top
			end
			
		else -- + language
-- b mode [[Κατηγορία:Αεροδρόμια (νέα ελληνικά)]]
			text = text_lang .. ' » [[:Κατηγορία:Θεματικές ορολογίες (' .. lang_name .. ')|Θεματικές ορολογίες]]' 
			.. ' » [[:Κατηγορία:Ονομασίες (' .. lang_name .. ')|Ονομασίες]]'
			.. ' » [[:Κατηγορία:Τοπωνύμια (' .. lang_name ..  ')|<b>Τοπωνύμια</b>]]'
			.. ' » [[:Κατηγορία:Τοπωνύμια ανά είδος (' .. lang_name ..  ')|<b>ανά είδος</b>]]'
			if topos[toposid].parent4 ~= '' and topos[toposid].parent4 ~= nil then
				text = text .. ' » [[:Κατηγορία:' .. topos[toposid].parent4 .. ' (' .. lang_name .. ')|' .. topos[toposid].parent4 .. ']]'
			end	
			if topos[toposid].parent3 ~= '' and topos[toposid].parent3 ~= nil then
				text = text .. ' » [[:Κατηγορία:' .. topos[toposid].parent3  .. ' (' .. lang_name .. ')|' .. topos[toposid].parent3 .. ']]'
			end	
			if topos[toposid].parent2 ~= '' and topos[toposid].parent2 ~= nil then
				text = text .. ' » [[:Κατηγορία:' .. topos[toposid].parent2 .. ' (' .. lang_name .. ')|' .. topos[toposid].parent2 .. ']]'
			end	
			if topos[toposid].parent ~= '' and topos[toposid].parent ~= nil then
				text = text .. ' » [[:Κατηγορία:' .. topos[toposid].parent .. ' (' .. lang_name .. ')|' .. topos[toposid].parent .. ']]'
			end	
			text = text .. textit_lang .. ' [[:Κατηγορία:' .. cat_title .. '|«««]]'
			-- by place NOT Δορυφόροι, Ήπειροι, Πλανήτες, Ωκεανοί
			if toposid == 'αστέρας' or toposid == 'αστερισμός' or toposid == 'δορυφόρος' or toposid == 'ήπειρος' 
				or toposid == 'πλανήτης' or toposid == 'σύμπαν' or toposid == 'ωκεανός' 
				then
				text = text
			else
				text = text .. ' :: [[:Κατηγορία:' .. topos[toposid].word_cat .. ' ανά τόπο (' .. lang_name .. ')|ανά τόπο]]' 
			end
			if topos[toposid].extra1 ~= '' and topos[toposid].extra1 ~= nil then
				text = text .. ' « [[:Κατηγορία:' .. topos[toposid].extra1 .. ' (' .. lang_name .. ')|' .. topos[toposid].extra1 .. ']]'
			end
			-- descr -- [[:Κατηγορία:Διαμερίσματα (νέα ελληνικά)]]
			if topos[toposid].descr ~= '' and topos[toposid].descr ~= nil then
				text_plus = '<dl><dd>' .. topos[toposid].descr .. '</dd></dl>'
			end	
			

			-- cat b lang
			cat = '[[Κατηγορία:' .. cat_title .. '|' .. lang_key .. ']]' .. "\n"
--			.. '[[Κατηγορία:' .. topos[toposid].word_cat .. ' ανά τόπο (' .. lang_name .. ')|' .. topos[toposid].key .. ']]'..  "\n"
			if topos[toposid].parent ~= '' and topos[toposid].parent ~= nil then
				cat = cat .. '[[Κατηγορία:' .. topos[toposid].parent .. ' (' .. lang_name .. ')| ' .. topos[toposid].key .. ']]' .. "\n" -- sort top [[:Κατηγορία:Κωμοπόλεις (ιταλικά)]]
			end
			-- the standards
			cat = cat .. '[[Κατηγορία:Τοπωνύμια ανά είδος (' .. lang_name .. ')|' .. topos[toposid].key .. ']]' .. "\n"
			.. '[[Κατηγορία:Θεματικές ορολογίες (' .. lang_name .. ')|' .. topos[toposid].key .. ']]' .. "\n"
			-- extras
			if topos[toposid].extra1 ~= '' and topos[toposid].extra1 ~= nil then
				cat = cat .. '[[Κατηγορία:' .. topos[toposid].extra1 .. ' (' .. lang_name .. ')| ' .. topos[toposid].key .. ']]' .. "\n" -- sort top
			end
			if topos[toposid].extra1 ~= '' and topos[toposid].extra1 ~= nil then
				cat = cat .. '[[Κατηγορία:' .. topos[toposid].extra1 .. ' (' .. lang_name .. ')| ' .. topos[toposid].key .. ']]' .. "\n" -- sort top
			end
			if topos[toposid].extra2 ~= '' and topos[toposid].extra2 ~= nil then
				cat = cat .. '[[Κατηγορία:' .. topos[toposid].extra2 .. ' (' .. lang_name .. ')| ' .. topos[toposid].key .. ']]' .. "\n" -- sort top
			end
			
		end -- close catparenthesis
	end -- close if mw.ustring.match(cat_title, topos[toposid].word_cat)
--end -- CLOSE get_toposid(cat_title)

--------------------------------------------------------------------------
--             topos+where -  [[Module:topos/where]]
--            FUNCTIONS from where for της // του // των
-- >> parent4 >> parent3 >> parent2 >> parent > CAT << extra1  (extra = topic NOT place)
--------------------------------------------------------------------------

-- ========================== της...  [[:Κατηγορία:Αεροδρόμια της Ελλάδας]] -- [[:Κατηγορία:Αεροδρόμια της Ελλάδας (νέα ελληνικά)]]
-- avoid patterns της as in intitle:/ της / for Κατηγορία
function get_where_text(where_text)
	if mw.ustring.find(cat_title, ' της ') 
	and not mw.ustring.find(cat_title, ' της εβδομάδας') and not mw.ustring.find(cat_title, ' της καθαρεύουσας') 
	and not mw.ustring.find(cat_title, 'Ποικιλίες της') and not mw.ustring.find(cat_title, 'Διάλεκτοι της') 
	and not mw.ustring.find(cat_title, 'Διαλεκτικά της') and not mw.ustring.find(cat_title, 'Διάλεκτοι της')  
	and not mw.ustring.find(cat_title, 'Γερμανικά της Πενσυλβανίας') and not mw.ustring.find(cat_title, 'Φιλιππινέζικα της κεντρικής Μπικόλ')
	then
		where_text = 'της ' .. mw.ustring.sub(mw.ustring.match(cat_title, " της (.*)"), 1, -1)
	end
return where_text
end

function get_where(whereid)
	whereid = require("Module:topos/functions").catword_to_firstwhere(get_where_text(where_text))
return whereid
end

function get_topos_wherelabel(toposwhere_label)
	length = mw.ustring.len(get_where_text(where_text))
	toposwhere_label = mw.ustring.sub(cat_title, 1, -length-1) -- length gives me: Label τ  So, i substract one more.
return toposwhere_label
end

function get_toposkind_id(toposid)
	if mw.ustring.find(cat_title, toposwhere_label) then
	toposid = get_toposid(toposwhere_label)
	end
return toposid
end


-- ---------------------- application της
-- DOUBLE: Russia (Europe, Asia) -also Turkey

-- ΔΙΠΛΗ ΥΠΑΓΩΓΗ: Ρωσία (βλ. στην Ευρώπη / στην Ασία)
if mw.ustring.find(cat_title, ' της Ρωσίας') and not mw.ustring.find(cat_title, ' της Ρωσίας στην Ευρώπη')
	and not mw.ustring.find(cat_title, ' της Ρωσίας στην Ασία')
	then
	toposwhere_label = 'της Ρωσίας'
	whereid = 'Ρωσία'
	toposid = get_toposkind_id('της Ρωσίας')
		if cat_parenthesis == '' or cat_parenthesis == nil then
			text = text_wikt .. ' » [[:Κατηγορία:Θεματικές ορολογίες|Θεματικές ορολογίες]]' 
			.. ' » [[:Κατηγορία:Ονομασίες|Ονομασίες]]' 
			.. ' » [[:Κατηγορία:Τοπωνύμια|<b>Τοπωνύμια</b>]]' 
			.. ' » [[:Κατηγορία:Τοπωνύμια ανά είδος|ανά είδος]]' 
			if mw.ustring.find(cat_title, 'Τοπωνύμια') then 
			text = text ..  '<dl><dd>Δείτε [[:Κατηγορία:Τοπωνύμια της Ρωσίας στην Ευρώπη]] ή  [[:Κατηγορία:Τοπωνύμια της Ρωσίας στην Ασία]]</dd></dl>'
			else -- by place
			text = text .. ' :: [[:Κατηγορία:' .. topos[toposid].word_cat .. ' ανά τόπο|ανά τόπο]]' 
			.. '<dl><dd>Δείτε [[:Κατηγορία:' .. topos[toposid].word_cat .. ' της Ρωσίας στην Ευρώπη]] ή  [[:Κατηγορία:' .. topos[toposid].word_cat .. ' της Ρωσίας στην Ασία]]</dd></dl>'
			end
			-- cat a -- Russia has NO parent (would be Eurasia)
			if mw.ustring.find(cat_title, 'Τοπωνύμια') then
				 cat = "[[Κατηγορία:Τοπωνύμια ανά τόπο|'ρωσια]]" ..  "\n" -- sort apostroph			
			else			
				cat =  '[[Κατηγορία:' .. topos[toposid].word_cat .. " ανά τόπο|'ρωσια]]" ..  "\n" -- sort apostroph
				.. '[[Κατηγορία:Τοπωνύμια της Ρωσίας| ' .. topos[toposid].key .. ']]' ..  "\n"  -- sort top
			end
			
-- b mode -- [[:Κατηγορία:Τοπωνύμια της Ρωσίας (νέα ελληνικά)]]	
		else
			text = text_lang .. ' » [[:Κατηγορία:Θεματικές ορολογίες (' .. lang_name .. ')|Θεματικές ορολογίες]]' 
			.. ' » [[:Κατηγορία:Ονομασίες (' .. lang_name .. ')|Ονομασίες]]'
			.. ' » [[:Κατηγορία:Τοπωνύμια (' .. lang_name .. ')|<b>Τοπωνύμια</b> » ανά είδος]]'
			if mw.ustring.find(cat_title, 'Τοπωνύμια') then 
			text = text ..  '<dl><dd>Δείτε [[:Κατηγορία:Τοπωνύμια της Ρωσίας στην Ευρώπη (' .. lang_name .. ')]] ή  [[:Κατηγορία:Τοπωνύμια της Ρωσίας στην Ασία (' .. lang_name .. ')]]</dd></dl>'
			else -- by place
			text = text .. ' :: [[:Κατηγορία:' .. topos[toposid].word_cat .. ' ανά τόπο (' .. lang_name .. ')|ανά τόπο]]' 
			.. '<dl><dd>Δείτε [[:Κατηγορία:' .. topos[toposid].word_cat .. ' της Ρωσίας στην Ευρώπη (' .. lang_name .. ')]] ή  [[:Κατηγορία:' .. topos[toposid].word_cat .. ' της Ρωσίας στην Ασία (' .. lang_name .. ')]]</dd></dl>'
			end
			-- cat b
			cat = '[[Κατηγορία:' .. topos[toposid].word_cat .. ' ανά τόπο (' .. lang_name .. ')|ρωσια]]' ..  "\n"
			if mw.ustring.find(cat_title, 'Τοπωνύμια') then
				 cat = '[[Κατηγορία:Τοπωνύμια της Ρωσίας|' .. languages[lang_iso].key .. ']]' ..  "\n"
				.. '[[Κατηγορία:Τοπωνύμια ανά τόπο (' .. lang_name .. ')|ρωσια]]' ..  "\n"
			else
				 cat = '[[Κατηγορία:' .. topos[toposid].word_cat .. ' της Ρωσίας|' .. languages[lang_iso].key .. ']]' ..  "\n"
				 .. '[[Κατηγορία:' .. topos[toposid].word_cat .. ' ανά τόπο (' .. lang_name ..')| ρωσια]]' ..  "\n" -- sort top
				 .. '[[Κατηγορία:Τοπωνύμια της Ρωσίας (' .. lang_name .. ')| ρωσια]]' ..  "\n" -- sort top
			end
		end -- close parenthesis
else	

if mw.ustring.find(cat_title, ' της ') --and not mw.ustring.find(cat_title, ' της Ρωσίας')
	and not mw.ustring.find(cat_title, ' της εβδομάδας') and not mw.ustring.find(cat_title, ' της καθαρεύουσας') 
	and not mw.ustring.find(cat_title, 'Ποικιλίες της') and not mw.ustring.find(cat_title, 'Διάλεκτοι της') 
	and not mw.ustring.find(cat_title, 'Διαλεκτικά της') and not mw.ustring.find(cat_title, 'Διάλεκτοι της')  
	and not mw.ustring.find(cat_title, 'Γερμανικά της Πενσυλβανίας') and not mw.ustring.find(cat_title, 'Φιλιππινέζικα της κεντρικής Μπικόλ')
	and not mw.ustring.find(cat_title, 'παλαιά τουρκικά της Ανατολίας') and not mw.ustring.find(cat_title, 'της Ανατολίας')
	then
	toposwhere_label = get_topos_wherelabel(toposwhere_label)
	whereid = require("Module:topos/functions").catword_to_firstwhere(get_where_text(where_text))
	toposid = get_toposkind_id(toposwhere_label)
--	cat_title = get_topos_wherelabel(toposwhere_label) .. ' ' .. get_where_text(where_text)

		if cat_parenthesis == '' or cat_parenthesis == nil then
			text = text_wikt .. ' » [[:Κατηγορία:Θεματικές ορολογίες|Θεματικές ορολογίες]]' 
			.. ' » [[:Κατηγορία:Ονομασίες|Ονομασίες]]' 
			.. ' » [[:Κατηγορία:Τοπωνύμια|<b>Τοπωνύμια</b>]]' 
			.. ' » [[:Κατηγορία:Τοπωνύμια ανά είδος|ανά είδος]]' 
			if mw.ustring.find(cat_title, 'Τοπωνύμια') then 
				text = text   -- no repetition. Check [[:Κατηγορία:Αεροδρόμια της Ελλάδας]] -- [[:Κατηγορία:Τοπωνύμια της Ελλάδας]]
			else
				if topos[toposid].parent2 ~= '' and topos[toposid].parent2 ~= nil then  -- [[:Κατηγορία:Αρχαίοι ναοί της Ελλάδας]]
				text = text .. ' » [[:Κατηγορία:' .. topos[toposid].parent2 .. '|' .. topos[toposid].parent2 .. ']]'
				end
				if topos[toposid].parent ~= '' and topos[toposid].parent ~= nil then
				text = text .. ' » [[:Κατηγορία:' .. topos[toposid].parent .. '|' .. topos[toposid].parent .. ']]'
				end
				text = text .. ' » [[:Κατηγορία:' .. topos[toposid].word_cat .. '|' .. topos[toposid].word_cat .. ']]' 
			end
			-- by place
			text = text .. ' :: [[:Κατηγορία:' .. topos[toposid].word_cat .. ' ανά τόπο|ανά τόπο]]' 
			if where[whereid].parent4 ~= '' and where[whereid].parent4 ~= nil then
				text = text .. ' » [[:Κατηγορία:' .. topos[toposid].word_cat .. ' ' .. where[whereid].parent4 .. '|' .. where[whereid].parent4 .. ']]'
			end
			if where[whereid].parent3 ~= '' and where[whereid].parent3 ~= nil then
				text = text .. ' » [[:Κατηγορία:' .. topos[toposid].word_cat .. ' ' .. where[whereid].parent3 .. '|' .. where[whereid].parent3 .. ']]'
			end	
			if where[whereid].parent2 ~= '' and where[whereid].parent2 ~= nil then -- [[:Κατηγορία:Αεροδρόμια της Αγγλίας]]
				text = text .. ' » [[:Κατηγορία:' .. topos[toposid].word_cat .. ' ' .. where[whereid].parent2 .. '|' .. where[whereid].parent2 .. ']]'
			end	
			if where[whereid].parent ~= '' and where[whereid].parent ~= nil then
				text = text .. ' » [[:Κατηγορία:' .. topos[toposid].word_cat .. ' ' .. where[whereid].parent .. '|' .. where[whereid].parent .. ']]'
			end	
			text = text .. ' » [[:Κατηγορία:' .. cat_title .. '|' .. where[whereid].word_cat .. ']]' 
			if where[whereid].extra1 ~= '' and where[whereid].extra1 ~= nil then -- Θεματική -- [[:Κατηγορία:Δήμοι της αρχαίας Αθήνας]]
				text = text .. ' « [[:Κατηγορία:' .. topos[toposid].word_cat .. ' ' .. where[whereid].extra1 .. '|' .. where[whereid].extra1 .. ']]'
			end
			if where[whereid].extra2 ~= '' and where[whereid].extra2 ~= nil then
				text = text .. ' « [[:Κατηγορία:' .. topos[toposid].word_cat .. ' ' .. where[whereid].extra2 .. '|' .. where[whereid].extra2 .. ']]'
			end
			if where[whereid].extra3 ~= '' and where[whereid].extra3 ~= nil then
				text = text .. ' « [[:Κατηγορία:' .. topos[toposid].word_cat .. ' ' .. where[whereid].extra3 .. '|' .. where[whereid].extra3 .. ']]'
			end
			-- descr -- [[:Κατηγορία:Διαμερίσματα της Ελλάδας]] ------------------- toposwhere_label = topos[toposid]  
			if topos[toposid].descr ~= '' and topos[toposid].descr ~= nil then
				text_plus = '<dl><dd>' .. topos[toposid].descr .. '</dd></dl>'
			end	
			if where[whereid].word_cat == 'της Ρωσίας στην Ευρώπη' or where[whereid].word_cat == 'της Ρωσίας στην Ασία' then
				text = text .. '<dl><dd>Δείτε και την [[:Κατηγορία:' .. topos[toposid].word_cat .. ' της Ρωσίας]]</dd></dl>'
			end
	
			-- cat a -- parent ALWAYS, except continents. parent may COINCIDE with a continent category, that 's ok.
			if where[whereid].parent ~= '' and where[whereid].parent ~= nil then
				cat = cat .. '[[Κατηγορία:' .. topos[toposid].word_cat .. ' ' .. where[whereid].parent .. "|'" .. where[whereid].key .. ']]' ..  "\n" -- sort apostroph
				.. '[[Κατηγορία:' .. topos[toposid].word_cat .. " ανά τόπο|'" .. where[whereid].key .. ']]' ..  "\n"
			end	
			-- [[:Κατηγορία:Τοπωνύμια της Ευρώπης]]
			if mw.ustring.find(cat_title, 'Τοπωνύμια') then -- [[:Κατηγορία:Τοπωνύμια της Ευρώπης]] 
				if mw.ustring.find(cat_title, 'Αμερικής') or mw.ustring.find(cat_title, 'Ανταρκτικ') or mw.ustring.find(cat_title, 'Ασίας')
				 or mw.ustring.find(cat_title, 'Αφρικής') or mw.ustring.find(cat_title, 'Ευρώπης') or mw.ustring.find(cat_title, 'Ωκεανίας')
				 or mw.ustring.find(cat_title, 'Αρκτικού') or mw.ustring.find(cat_title, 'Ατλαντικού')
				 or mw.ustring.find(cat_title, 'Ειρηνικού') or mw.ustring.find(cat_title, 'Ινδικού') or mw.ustring.find(cat_title, 'Σύμπαντος')
				 and not mw.ustring.find(cat_title, 'παλαιά τουρκικά της Ανατολίας')
				 then
				 cat = '[[Κατηγορία:Τοπωνύμια ανά τόπο| ' .. where[whereid].key .. ']]' ..  "\n" -- sort top
			-- [[:Κατηγορία:Τοπωνύμια της Ελλάδας]]
				else cat = cat
				end
			-- [[:Κατηγορία:Αεροδρόμια της Ευρώπης]]
			elseif mw.ustring.find(cat_title, 'Αμερικής') or mw.ustring.find(cat_title, 'Ανταρκτικ') or mw.ustring.find(cat_title, 'Ασίας')
				 or mw.ustring.find(cat_title, 'Αφρικής') or mw.ustring.find(cat_title, 'Ευρώπης') or mw.ustring.find(cat_title, 'Ωκεανίας')
				 or mw.ustring.find(cat_title, 'Αρκτικού') or mw.ustring.find(cat_title, 'Ατλαντικού')
				 or mw.ustring.find(cat_title, 'Ειρηνικού') or mw.ustring.find(cat_title, 'Ινδικού') or mw.ustring.find(cat_title, 'Σύμπαντος') then
				cat = cat .. '[[Κατηγορία:' .. topos[toposid].word_cat .. ' ανά τόπο| ' .. where[whereid].key .. ']]' ..  "\n" -- sort top	
				.. '[[Κατηγορία:Τοπωνύμια ' .. where[whereid].word_cat .. '| ' .. topos[toposid].key .. ']]' ..  "\n" -- sort top
--				.. '[[Κατηγορία:Τοπωνύμια ανά τόπο| ' .. where[whereid].key .. ']]' ..  "\n" -- sort top -- no, too many
			 -- [[:Κατηγορία:Αεροδρόμια της Ελλάδας]]
			else
				cat = cat .. '[[Κατηγορία:' .. topos[toposid].word_cat .. ' ' ..  where[whereid].parent .. "|'" .. where[whereid].key .. ']]' ..  "\n" -- sort apostroph
				.. '[[Κατηγορία:Τοπωνύμια ' .. where[whereid].word_cat .. '| ' .. topos[toposid].key .. ']]' ..  "\n"  -- sort top
				 end
			if where[whereid].extra1 ~= '' and where[whereid].extra1 ~= nil then
				cat = cat .. '[[Κατηγορία:'  .. topos[toposid].word_cat .. ' ' .. where[whereid].extra1 .. '| ' .. topos[toposid].key .. ']]' ..  "\n" -- sort top
			end
			if where[whereid].extra2 ~= '' and where[whereid].extra2 ~= nil then
				cat = cat .. '[[Κατηγορία:'  .. topos[toposid].word_cat .. ' ' .. where[whereid].extra2 .. '| ' .. topos[toposid].key .. ']]' ..  "\n" -- sort top
			end
			if where[whereid].extra3 ~= '' and where[whereid].extra3 ~= nil then
				cat = cat .. '[[Κατηγορία:'  .. topos[toposid].word_cat .. ' ' .. where[whereid].extra3 .. '| ' .. topos[toposid].key .. ']]' ..  "\n" -- sort top
			end
			
-- b mode -- [[:Κατηγορία:Τοπωνύμια της Ελλάδας (νέα ελληνικά)]] =  Τοπωνύμια ανά είδος (γλώσσα)		
		else
			text = text_lang .. ' » [[:Κατηγορία:Θεματικές ορολογίες (' .. lang_name .. ')|Θεματικές ορολογίες]]' 
			.. ' » [[:Κατηγορία:Ονομασίες (' .. lang_name .. ')|Ονομασίες]]'
			.. ' » [[:Κατηγορία:Τοπωνύμια (' .. lang_name .. ')|<b>Τοπωνύμια</b> » ανά είδος]]'  -- Places + places by kind coincide when +language
			if mw.ustring.find(cat_title, 'Τοπωνύμια') then 
				text = text  -- no repetition. Check [[:Κατηγορία:Αεροδρόμια της Ελλάδας (νέα ελληνικά)]] -- [[:Κατηγορία:Τοπωνύμια της Ελλάδας (νέα ελληνικά)]]
			else
				if topos[toposid].parent2 ~= '' and topos[toposid].parent2 ~= nil then  -- [[:Κατηγορία:Αρχαίοι ναοί της Ελλάδας (νέα ελληνικά)]]
				text = text .. ' » [[:Κατηγορία:' .. topos[toposid].parent2 .. ' (' .. lang_name .. ')|' .. topos[toposid].parent2 .. ']]'
				end
				if topos[toposid].parent ~= '' and topos[toposid].parent ~= nil then
				text = text .. ' » [[:Κατηγορία:' .. topos[toposid].parent .. ' (' .. lang_name .. ')|' .. topos[toposid].parent .. ']]'
				end

				text = text .. ' » [[:Κατηγορία:' .. topos[toposid].word_cat .. ' (' .. lang_name .. ')|' .. topos[toposid].word_cat .. ']]' 
			end
			-- by place+lang
			text = text .. ' :: [[:Κατηγορία:' .. topos[toposid].word_cat .. ' ανά τόπο (' .. lang_name .. ')|ανά τόπο]]' 			
			if where[whereid].parent4 ~= '' and where[whereid].parent4 ~= nil then
				text = text .. ' » [[:Κατηγορία:' .. topos[toposid].word_cat .. ' ' .. where[whereid].parent4 .. ' (' .. lang_name .. ')|' .. where[whereid].parent4 .. ']]'
			end	
			if where[whereid].parent3 ~= '' and where[whereid].parent3 ~= nil then
				text = text .. ' » [[:Κατηγορία:' .. topos[toposid].word_cat .. ' ' .. where[whereid].parent3 .. ' (' .. lang_name .. ')|' .. where[whereid].parent3 .. ']]'
			end	
			if where[whereid].parent2 ~= '' and where[whereid].parent2 ~= nil then
				text = text .. ' » [[:Κατηγορία:' .. topos[toposid].word_cat .. ' ' .. where[whereid].parent2 .. ' (' .. lang_name .. ')|' .. where[whereid].parent2 .. ']]'
			end	
			if where[whereid].parent ~= '' and where[whereid].parent ~= nil then
				text = text .. ' » [[:Κατηγορία:' .. topos[toposid].word_cat .. ' ' .. where[whereid].parent .. ' (' .. lang_name .. ')|' .. where[whereid].parent .. ']]'
			end	
			text = text .. ' » [[:Κατηγορία:' .. cat_title .. ' (' .. lang_name .. ')|' .. where[whereid].word_cat .. ']]' 
			if where[whereid].extra1 ~= '' and where[whereid].extra1 ~= nil then -- Θεματική -- [[:Κατηγορία:Δήμοι της αρχαίας Αθήνας (νέα ελληνικά)]]
				text = text .. ' « [[:Κατηγορία:' .. topos[toposid].word_cat .. ' ' .. where[whereid].extra1 .. ' (' .. lang_name .. ')|' .. where[whereid].extra1 .. ']]'
			end
			if topos[toposid].descr ~= '' and topos[toposid].descr ~= nil then
				text_plus = '<dl><dd>' .. topos[toposid].descr .. '</dd></dl>'
			end	
			if where[whereid].word_cat == 'της Ρωσίας στην Ευρώπη' or where[whereid].word_cat == 'της Ρωσίας στην Ασία' then
				text = text .. '<dl><dd>Δείτε και την [[:Κατηγορία:' .. topos[toposid].word_cat .. ' της Ρωσίας (' .. lang_name .. ')]]</dd></dl>'
			end			
			
			
			
			-- cat b  -- parent ALWAYS, except continents. parent may COINCIDE with a continent category, that 's ok.
			-- [[:Κατηγορία:Τοπωνύμια της Ελλάδας (νέα ελληνικά)]] -- [[:Κατηγορία:Τοπωνύμια της Ευρώπης (νέα ελληνικά)]] -- [[:Κατηγορία:Αεροδρόμια της Ελλάδας (νέα ελληνικά)]]
			cat = '[[Κατηγορία:' .. topos[toposid].word_cat .. ' ανά τόπο (' .. lang_name .. ")|" .. where[whereid].key .. ']]' ..  "\n"
			if mw.ustring.find(cat_title, 'Τοπωνύμια') then -- [[:Κατηγορία:Τοπωνύμια της Ευρώπης (νέα ελληνικά)]] 
				if mw.ustring.find(cat_title, 'Αμερικής') or mw.ustring.find(cat_title, 'Ανταρκτικ') or mw.ustring.find(cat_title, 'Ασίας')
				 or mw.ustring.find(cat_title, 'Αφρικής') or mw.ustring.find(cat_title, 'Ευρώπης') or mw.ustring.find(cat_title, 'Ωκεανίας')
				 or mw.ustring.find(cat_title, 'Αρκτικού') or mw.ustring.find(cat_title, 'Ατλαντικού')
				 or mw.ustring.find(cat_title, 'Ειρηνικού') or mw.ustring.find(cat_title, 'Ινδικού') or mw.ustring.find(cat_title, 'Σύμπαντος') then
				 cat = '[[Κατηγορία:Τοπωνύμια ' ..  where[whereid].word_cat  .. '|' .. languages[lang_iso].key .. ']]' ..  "\n"
				 .. '[[Κατηγορία:Τοπωνύμια ανά τόπο (' .. lang_name .. ')| ' .. where[whereid].key .. ']]' ..  "\n" -- sort top
				else  -- [[:Κατηγορία:Τοπωνύμια της Ελλάδας (νέα ελληνικά)]]
					cat = '[[Κατηγορία:Τοπωνύμια ' ..  where[whereid].word_cat  .. '|' .. languages[lang_iso].key .. ']]' ..  "\n"
					.. '[[Κατηγορία:Τοπωνύμια ανά τόπο (' .. lang_name .. ')|' .. where[whereid].key .. ']]' ..  "\n"
				end
			elseif mw.ustring.find(cat_title, 'Αμερικής') or mw.ustring.find(cat_title, 'Ανταρκτικ') or mw.ustring.find(cat_title, 'Ασίας')
				 or mw.ustring.find(cat_title, 'Αφρικής') or mw.ustring.find(cat_title, 'Ευρώπης') or mw.ustring.find(cat_title, 'Ωκεανίας')
				 or mw.ustring.find(cat_title, 'Αρκτικού') or mw.ustring.find(cat_title, 'Ατλαντικού')
				 or mw.ustring.find(cat_title, 'Ειρηνικού') or mw.ustring.find(cat_title, 'Ινδικού') or mw.ustring.find(cat_title, 'Σύμπαντος') then -- [[:Κατηγορία:Αεροδρόμια της Ευρώπης (νέα ελληνικά)]]
				 cat = '[[Κατηγορία:' .. topos[toposid].word_cat .. ' ' .. where[whereid].word_cat .. '|' .. languages[lang_iso].key .. ']]' ..  "\n"
				 .. '[[Κατηγορία:' .. topos[toposid].word_cat .. ' ανά τόπο (' .. lang_name ..')| ' .. where[whereid].key .. ']]' ..  "\n" -- sort top
				 .. '[[Κατηγορία:Τοπωνύμια ' .. where[whereid].word_cat .. ' (' .. lang_name .. ')| ' .. where[whereid].key .. ']]' ..  "\n" -- sort top
			else -- [[:Κατηγορία:Αεροδρόμια της Ελλάδας (νέα ελληνικά)]]
				cat = cat .. '[[Κατηγορία:' .. topos[toposid].word_cat .. ' ' .. where[whereid].word_cat .. '|' .. languages[lang_iso].key .. ']]' ..  "\n"
			end
			if where[whereid].parent ~= '' and where[whereid].parent ~= nil then
				cat = cat .. '[[Κατηγορία:' .. topos[toposid].word_cat .. ' ' .. where[whereid].parent .. ' (' .. lang_name .. ")|'" .. where[whereid].key .. ']]' ..  "\n" -- sort apostroph
			end	
			
			if where[whereid].extra1 ~= '' and where[whereid].extra1 ~= nil then
				cat = cat .. '[[Κατηγορία:'  .. topos[toposid].word_cat .. ' ' .. where[whereid].extra1 .. ' (' .. lang_name .. ')| ' .. topos[toposid].key .. ']]' ..  "\n" -- sort top
			end
			if where[whereid].extra2 ~= '' and where[whereid].extra2 ~= nil then
				cat = cat .. '[[Κατηγορία:'  .. topos[toposid].word_cat .. ' ' .. where[whereid].extra2 .. ' (' .. lang_name .. ')| ' .. topos[toposid].key .. ']]' ..  "\n" -- sort top
			end
			if where[whereid].extra3 ~= '' and where[whereid].extra3 ~= nil then
				cat = cat .. '[[Κατηγορία:'  ..topos[toposid].word_cat .. ' ' ..  where[whereid].extra3 .. ' (' .. lang_name .. ')| ' .. topos[toposid].key .. ']]' ..  "\n" -- sort top
			end
			
		end -- close parenthesis
	
end -- close if της and not, and not
end -- close Russia

-- ========================== του...  [[:Κατηγορία:Πόλεις του Καναδά]]-- [[:Κατηγορία:Πόλεις του Καναδά (γαλλικά)]]
function get_where_text2(where_text2)
	if mw.ustring.find(cat_title, ' του ') 
	and not mw.ustring.find(cat_title, ' του Βικιλεξικού') and not mw.ustring.find(cat_title, ' μέρη του λόγου') 
	and not mw.ustring.find(cat_title, 'Γερμανικά του Παλατινάτου') and not mw.ustring.find(cat_title, 'γερμανικά του Παλατινάτου') 
	and not mw.ustring.find(cat_title, 'Διαλεκτικά του') and not mw.ustring.find(cat_title, 'μάγια του Γιουκατάν')  
	and not mw.ustring.find(cat_title, 'από το λεξικό του') and not mw.ustring.find(cat_title, 'του ποντιακού ελληνισμού')
	and not mw.ustring.find(cat_title, 'του αττικού ημερολογίου') and not mw.ustring.find(cat_title, 'του μακεδονικού ημερολογίου')
	and not mw.ustring.find(cat_title, 'του σώματος') and not mw.ustring.find(cat_title, 'του συστήματος')
	then
		where_text2 = 'του ' .. mw.ustring.sub(mw.ustring.match(cat_title, " του (.*)"), 1, -1)
	end
return where_text2
end

function get_where2(whereid2)
	whereid2 = require("Module:topos/functions").catword_to_firstwhere(get_where_text2(where_text2))
return whereid2
end

function get_topos_wherelabel2(toposwhere_label2)
	length = mw.ustring.len(get_where_text2(where_text2))
	toposwhere_label2 = mw.ustring.sub(cat_title, 1, -length-1) -- length gives me: Label τ  So, i substract one more.
return toposwhere_label2
end

function get_toposkind_id(toposid)
	if mw.ustring.find(cat_title, toposwhere_label2) then
	toposid = get_toposid(toposwhere_label2)
	end
return toposid
end


-- ---------------------- application του
if mw.ustring.find(cat_title, ' του ') 
	and not mw.ustring.find(cat_title, ' του Βικιλεξικού') and not mw.ustring.find(cat_title, ' μέρη του λόγου') 
	and not mw.ustring.find(cat_title, 'Γερμανικά του Παλατινάτου') and not mw.ustring.find(cat_title, 'γερμανικά του Παλατινάτου') 
	and not mw.ustring.find(cat_title, 'Διαλεκτικά του') and not mw.ustring.find(cat_title, 'μάγια του Γιουκατάν')  
	and not mw.ustring.find(cat_title, 'από το λεξικό του') and not mw.ustring.find(cat_title, 'του ποντιακού ελληνισμού')
	and not mw.ustring.find(cat_title, 'του αττικού ημερολογίου') and not mw.ustring.find(cat_title, 'του μακεδονικού ημερολογίου')
	and not mw.ustring.find(cat_title, 'του σώματος') and not mw.ustring.find(cat_title, 'του συστήματος') and not mw.ustring.find(cat_title, 'από τα έργα')
	then
	toposwhere_label2 = get_topos_wherelabel2(toposwhere_label2)
	whereid2 = require("Module:topos/functions").catword_to_firstwhere(get_where_text2(where_text2))
	toposid = get_toposkind_id(toposwhere_label2)
--	cat_title = get_topos_wherelabel2(toposwhere_label2) .. ' ' .. get_where_text2(where_text2)

		if cat_parenthesis == '' or cat_parenthesis == nil then
			text = text_wikt .. ' » [[:Κατηγορία:Θεματικές ορολογίες|Θεματικές ορολογίες]]' 
			.. ' » [[:Κατηγορία:Ονομασίες|Ονομασίες]]' 
			.. ' » [[:Κατηγορία:Τοπωνύμια|<b>Τοπωνύμια</b>]]' 
			.. ' » [[:Κατηγορία:Τοπωνύμια ανά είδος|ανά είδος]]' 
			if mw.ustring.find(cat_title, 'Τοπωνύμια') then 
				text = text   -- no repetition. Check [[:Κατηγορία:Αεροδρόμια του Καναδά]] -- [[:Κατηγορία:Τοπωνύμια του Καναδά]]
			else
				if topos[toposid].parent2 ~= '' and topos[toposid].parent2 ~= nil then
				text = text .. ' » [[:Κατηγορία:' .. topos[toposid].parent2 .. '|' .. topos[toposid].parent2 .. ']]'
				end
				if topos[toposid].parent ~= '' and topos[toposid].parent ~= nil then
				text = text .. ' » [[:Κατηγορία:' .. topos[toposid].parent .. '|' .. topos[toposid].parent .. ']]'
				end
				text = text .. ' » [[:Κατηγορία:' .. topos[toposid].word_cat .. '|' .. topos[toposid].word_cat .. ']]' 
			end
			-- by place
			text = text .. ' :: [[:Κατηγορία:' .. topos[toposid].word_cat .. ' ανά τόπο|ανά τόπο]]' 
			if where[whereid2].parent4 ~= '' and where[whereid2].parent4 ~= nil then
				text = text .. ' » [[:Κατηγορία:' .. topos[toposid].word_cat .. ' ' .. where[whereid2].parent4 .. '|' .. where[whereid2].parent4 .. ']]'
			end
			if where[whereid2].parent3 ~= '' and where[whereid2].parent3 ~= nil then
				text = text .. ' » [[:Κατηγορία:' .. topos[toposid].word_cat .. ' ' .. where[whereid2].parent3 .. '|' .. where[whereid2].parent3 .. ']]'
			end	
			if where[whereid2].parent2 ~= '' and where[whereid2].parent2 ~= nil then
				text = text .. ' » [[:Κατηγορία:' .. topos[toposid].word_cat .. ' ' .. where[whereid2].parent2 .. '|' .. where[whereid2].parent2 .. ']]'
			end	
			if where[whereid2].parent ~= '' and where[whereid2].parent ~= nil then
				text = text .. ' » [[:Κατηγορία:' .. topos[toposid].word_cat .. ' ' .. where[whereid2].parent .. '|' .. where[whereid2].parent .. ']]'
			end	
			text = text .. ' » [[:Κατηγορία:' .. cat_title .. '|' .. where[whereid2].word_cat .. ']]' 
			if where[whereid2].extra1 ~= '' and where[whereid2].extra1 ~= nil then -- Θεματική
				text = text .. ' « [[:Κατηγορία:' .. topos[toposid].word_cat .. ' ' .. where[whereid2].extra1 .. '|' .. where[whereid2].extra1 .. ']]'
			end
			if where[whereid2].extra2 ~= '' and where[whereid2].extra2 ~= nil then
				text = text .. ' « [[:Κατηγορία:' .. topos[toposid].word_cat .. ' ' .. where[whereid2].extra2 .. '|' .. where[whereid2].extra2 .. ']]'
			end
			if where[whereid2].extra3 ~= '' and where[whereid2].extra3 ~= nil then
				text = text .. ' « [[:Κατηγορία:' .. topos[toposid].word_cat .. ' ' .. where[whereid2].extra3 .. '|' .. where[whereid2].extra3 .. ']]'
			end
			-- descr --  ------------------- toposwhere_label2 = topos[toposid]  
			if topos[toposid].descr ~= '' and topos[toposid].descr ~= nil then
				text_plus = '<dl><dd>' .. topos[toposid].descr .. '</dd></dl>'
			end	
	
			-- cat a -- parent ALWAYS, except continents. parent may COINCIDE with a continent category, that 's ok.		
			if where[whereid2].parent ~= '' and where[whereid2].parent ~= nil then
				cat = cat .. '[[Κατηγορία:' .. topos[toposid].word_cat .. ' ' .. where[whereid2].parent .. "|'" .. where[whereid2].key .. ']]' ..  "\n" -- sort apostroph
				.. '[[Κατηγορία:' .. topos[toposid].word_cat .. " ανά τόπο|'" .. where[whereid2].key .. ']]' ..  "\n"
			end	
			-- [[:Κατηγορία:Τοπωνύμια του Ατλαντικού Ωκεανού]]
			if mw.ustring.find(cat_title, 'Τοπωνύμια') then
				if mw.ustring.find(cat_title, 'Αμερικής') or mw.ustring.find(cat_title, 'Ανταρκτικ') or mw.ustring.find(cat_title, 'Ασίας')
				 or mw.ustring.find(cat_title, 'Αφρικής') or mw.ustring.find(cat_title, 'Ευρώπης') or mw.ustring.find(cat_title, 'Ωκεανίας')
				 or mw.ustring.find(cat_title, 'Αρκτικού') or mw.ustring.find(cat_title, 'Ατλαντικού')
				 or mw.ustring.find(cat_title, 'Ειρηνικού') or mw.ustring.find(cat_title, 'Ινδικού') or mw.ustring.find(cat_title, 'Σύμπαντος') then
				 cat = '[[Κατηγορία:Τοπωνύμια ανά τόπο| ' .. where[whereid2].key .. ']]' ..  "\n" -- sort top
			-- [[:Κατηγορία:Τοπωνύμια του Καναδά]]
				else cat = cat
				end
			-- [[:Κατηγορία:Αρχιπέλαγα του Ατλαντικού Ωκεανού]]
			elseif mw.ustring.find(cat_title, 'Αμερικής') or mw.ustring.find(cat_title, 'Ανταρκτικ') or mw.ustring.find(cat_title, 'Ασίας')
				 or mw.ustring.find(cat_title, 'Αφρικής') or mw.ustring.find(cat_title, 'Ευρώπης') or mw.ustring.find(cat_title, 'Ωκεανίας')
				 or mw.ustring.find(cat_title, 'Αρκτικού') or mw.ustring.find(cat_title, 'Ατλαντικού')
				 or mw.ustring.find(cat_title, 'Ειρηνικού') or mw.ustring.find(cat_title, 'Ινδικού') or mw.ustring.find(cat_title, 'Σύμπαντος') then
				cat = cat .. '[[Κατηγορία:' .. topos[toposid].word_cat .. ' ανά τόπο| ' .. where[whereid2].key .. ']]' ..  "\n" -- sort top	
				.. '[[Κατηγορία:Τοπωνύμια ' .. where[whereid2].word_cat .. '| ' .. topos[toposid].key .. ']]' ..  "\n" -- sort top
--				.. '[[Κατηγορία:Τοπωνύμια ανά τόπο| ' .. where[whereid2].key .. ']]' ..  "\n" -- sort top -- no, too many
			 -- [[:Κατηγορία:Πόλεις του Καναδά]]
			else
				cat = cat .. '[[Κατηγορία:' .. topos[toposid].word_cat .. ' ' ..  where[whereid2].parent .. "|'" .. where[whereid2].key .. ']]' ..  "\n" -- sort apostroph
				.. '[[Κατηγορία:Τοπωνύμια ' .. where[whereid2].word_cat .. '| ' .. topos[toposid].key .. ']]' ..  "\n"  -- sort top
				 end
			-- no example (διπλή υπαγωγή, Ευρώπη + extra Ασία)
			if where[whereid2].extra1 ~= '' and where[whereid2].extra1 ~= nil then -- Θεματική
				cat = cat .. '[[Κατηγορία:'  .. topos[toposid].word_cat .. ' ' .. where[whereid2].extra1 .. '| ' .. topos[toposid].key .. ']]' ..  "\n" -- sort top
			end
			if where[whereid2].extra2 ~= '' and where[whereid2].extra2 ~= nil then -- Θεματική
				cat = cat .. '[[Κατηγορία:'  .. topos[toposid].word_cat .. ' ' .. where[whereid2].extra2 .. '| ' .. topos[toposid].key .. ']]' ..  "\n" -- sort top
			end
			if where[whereid2].extra3 ~= '' and where[whereid2].extra3 ~= nil then -- Θεματική
				cat = cat .. '[[Κατηγορία:'  .. topos[toposid].word_cat .. ' ' .. where[whereid2].extra3 .. '| ' .. topos[toposid].key .. ']]' ..  "\n" -- sort top
			end
			
-- b mode	
		else
			text = text_lang .. ' » [[:Κατηγορία:Θεματικές ορολογίες (' .. lang_name .. ')|Θεματικές ορολογίες]]' 
			.. ' » [[:Κατηγορία:Ονομασίες (' .. lang_name .. ')|Ονομασίες]]'
			.. ' » [[:Κατηγορία:Τοπωνύμια (' .. lang_name .. ')|<b>Τοπωνύμια</b> » ανά είδος]]'  -- Places + places by kind coincide when +language
			if mw.ustring.find(cat_title, 'Τοπωνύμια') then 
				text = text  -- no repetition. Check [[:Κατηγορία:Πόλεις του Καναδά (νέα ελληνικά)]] -- [[:Κατηγορία:Τοπωνύμια του Καναδά (νέα ελληνικά)]]
			else
				if topos[toposid].parent2 ~= '' and topos[toposid].parent2 ~= nil then
				text = text .. ' » [[:Κατηγορία:' .. topos[toposid].parent2 .. ' (' .. lang_name .. ')|' .. topos[toposid].parent2 .. ']]'
				end
				if topos[toposid].parent ~= '' and topos[toposid].parent ~= nil then
				text = text .. ' » [[:Κατηγορία:' .. topos[toposid].parent .. ' (' .. lang_name .. ')|' .. topos[toposid].parent .. ']]'
				end

				text = text .. ' » [[:Κατηγορία:' .. topos[toposid].word_cat .. ' (' .. lang_name .. ')|' .. topos[toposid].word_cat .. ']]' 
			end
			-- by place+lang
			text = text .. ' :: [[:Κατηγορία:' .. topos[toposid].word_cat .. ' ανά τόπο (' .. lang_name .. ')|ανά τόπο]]' 			
			if where[whereid2].parent4 ~= '' and where[whereid2].parent4 ~= nil then
				text = text .. ' » [[:Κατηγορία:' .. topos[toposid].word_cat .. ' ' .. where[whereid2].parent4 .. ' (' .. lang_name .. ')|' .. where[whereid2].parent4 .. ']]'
			end	
			if where[whereid2].parent3 ~= '' and where[whereid2].parent3 ~= nil then
				text = text .. ' » [[:Κατηγορία:' .. topos[toposid].word_cat .. ' ' .. where[whereid2].parent3 .. ' (' .. lang_name .. ')|' .. where[whereid2].parent3 .. ']]'
			end	
			if where[whereid2].parent2 ~= '' and where[whereid2].parent2 ~= nil then
				text = text .. ' » [[:Κατηγορία:' .. topos[toposid].word_cat .. ' ' .. where[whereid2].parent2 .. ' (' .. lang_name .. ')|' .. where[whereid2].parent2 .. ']]'
			end	
			if where[whereid2].parent ~= '' and where[whereid2].parent ~= nil then
				text = text .. ' » [[:Κατηγορία:' .. topos[toposid].word_cat .. ' ' .. where[whereid2].parent .. ' (' .. lang_name .. ')|' .. where[whereid2].parent .. ']]'
			end	
			text = text .. ' » [[:Κατηγορία:' .. cat_title .. ' (' .. lang_name .. ')|' .. where[whereid2].word_cat .. ']]' 
			if where[whereid2].extra1 ~= '' and where[whereid2].extra1 ~= nil then -- Θεματική
				text = text .. ' « [[:Κατηγορία:' .. topos[toposid].word_cat .. ' ' .. where[whereid2].extra1 .. ' (' .. lang_name .. ')|' .. where[whereid2].extra1 .. ']]'
			end
			
			-- cat b  -- parent ALWAYS, except continents. parent may COINCIDE with a continent category, that 's ok.
			-- [[:Κατηγορία:Τοπωνύμια του Καναδά (νέα ελληνικά)]] -- [[:Κατηγορία:Τοπωνύμια του Ατλαντικού (νέα ελληνικά)]] -- [[:Κατηγορία:Πόλεις του Καναδά (νέα ελληνικά)]]
			cat = '[[Κατηγορία:' .. topos[toposid].word_cat .. ' ανά τόπο (' .. lang_name .. ")|'" .. where[whereid2].key .. ']]' ..  "\n"
			if mw.ustring.find(cat_title, 'Τοπωνύμια') then -- [[:Κατηγορία:Τοπωνύμια της Ευρώπης (νέα ελληνικά)]] 
				if mw.ustring.find(cat_title, 'Αμερικής') or mw.ustring.find(cat_title, 'Ανταρκτικ') or mw.ustring.find(cat_title, 'Ασίας')
				 or mw.ustring.find(cat_title, 'Αφρικής') or mw.ustring.find(cat_title, 'Ευρώπης') or mw.ustring.find(cat_title, 'Ωκεανίας')
				 or mw.ustring.find(cat_title, 'Αρκτικού') or mw.ustring.find(cat_title, 'Ατλαντικού')
				 or mw.ustring.find(cat_title, 'Ειρηνικού') or mw.ustring.find(cat_title, 'Ινδικού') or mw.ustring.find(cat_title, 'Σύμπαντος') then
				 cat = '[[Κατηγορία:Τοπωνύμια ' ..  where[whereid2].word_cat  .. '|' .. languages[lang_iso].key .. ']]' ..  "\n"
				 .. '[[Κατηγορία:Τοπωνύμια ανά τόπο (' .. lang_name .. ')| ' .. where[whereid2].key .. ']]' ..  "\n" -- sort top
				else  -- [[:Κατηγορία:Τοπωνύμια του Καναδά (νέα ελληνικά)]]
					cat = '[[Κατηγορία:Τοπωνύμια ' ..  where[whereid2].word_cat  .. '|' .. languages[lang_iso].key .. ']]' ..  "\n"
					.. '[[Κατηγορία:Τοπωνύμια ανά τόπο (' .. lang_name .. ')|' .. where[whereid2].key .. ']]' ..  "\n"
				end
			elseif mw.ustring.find(cat_title, 'Αμερικής') or mw.ustring.find(cat_title, 'Ανταρκτικ') or mw.ustring.find(cat_title, 'Ασίας')
				 or mw.ustring.find(cat_title, 'Αφρικής') or mw.ustring.find(cat_title, 'Ευρώπης') or mw.ustring.find(cat_title, 'Ωκεανίας')
				 or mw.ustring.find(cat_title, 'Αρκτικού') or mw.ustring.find(cat_title, 'Ατλαντικού')
				 or mw.ustring.find(cat_title, 'Ειρηνικού') or mw.ustring.find(cat_title, 'Ινδικού') or mw.ustring.find(cat_title, 'Σύμπαντος') then
				 cat = '[[Κατηγορία:' .. topos[toposid].word_cat .. ' ' .. where[whereid2].word_cat .. '|' .. languages[lang_iso].key .. ']]' ..  "\n"
				 .. '[[Κατηγορία:' .. topos[toposid].word_cat .. ' ανά τόπο (' .. lang_name ..')| ' .. where[whereid2].key .. ']]' ..  "\n" -- sort top
				 .. '[[Κατηγορία:Τοπωνύμια ' .. where[whereid2].word_cat .. ' (' .. lang_name .. ')| ' .. where[whereid2].key .. ']]' ..  "\n" -- sort top
			else -- [[:Κατηγορία:Πόλεις του Καναδά (νέα ελληνικά)]]
				cat = cat .. '[[Κατηγορία:' .. topos[toposid].word_cat .. ' ' .. where[whereid2].word_cat .. '|' .. languages[lang_iso].key .. ']]' ..  "\n"
			end
			if where[whereid2].parent ~= '' and where[whereid2].parent ~= nil then
				cat = cat .. '[[Κατηγορία:' .. topos[toposid].word_cat .. ' ' .. where[whereid2].parent .. ' (' .. lang_name .. ")|'" .. where[whereid2].key .. ']]' ..  "\n" -- sort apostroph
			end	
			-- no example (διπλή υπαγωγή, Ευρώπη + extra Ασία)
			if where[whereid2].extra1 ~= '' and where[whereid2].extra1 ~= nil then
				cat = cat .. '[[Κατηγορία:'  .. topos[toposid].word_cat .. ' ' .. where[whereid2].extra1 .. ' (' .. lang_name .. ')| ' .. topos[toposid].key .. ']]' ..  "\n" -- sort top
			end
			if where[whereid2].extra2 ~= '' and where[whereid2].extra2 ~= nil then
				cat = cat .. '[[Κατηγορία:'  .. topos[toposid].word_cat .. ' ' .. where[whereid2].extra2 .. ' (' .. lang_name .. ')| ' .. topos[toposid].key .. ']]' ..  "\n" -- sort top
			end
			if where[whereid2].extra3 ~= '' and where[whereid2].extra3 ~= nil then
				cat = cat .. '[[Κατηγορία:'  ..topos[toposid].word_cat .. ' ' ..  where[whereid2].extra3 .. ' (' .. lang_name .. ')| ' .. topos[toposid].key .. ']]' ..  "\n" -- sort top
			end
			
		end -- close parenthesis
	
end -- close if του and not, and not



-- ========================== των...  [[:Κατηγορία:Πόλεις των ΗΠΑ]]-- [[:Κατηγορία:Πόλεις των ΗΠΑ (αγγλικά)]]
function get_where_text3(where_text3)
	if mw.ustring.find(cat_title, ' των ') 
	and not mw.ustring.find(cat_title, ' των αμινοξέων') and not mw.ustring.find(cat_title, ' των αστερισμών') 
	and not mw.ustring.find(cat_title, ' των ζωδίων')
	then
		where_text3 = 'των ' .. mw.ustring.sub(mw.ustring.match(cat_title, " των (.*)"), 1, -1)
	end
return where_text3
end

function get_where3(whereid3)
	whereid3 = require("Module:topos/functions").catword_to_firstwhere(get_where_text3(where_text3))
return whereid3
end

function get_topos_wherelabel3(toposwhere_label3)
	length = mw.ustring.len(get_where_text3(where_text3))
	toposwhere_label3 = mw.ustring.sub(cat_title, 1, -length-1) -- length gives me: Label τ  So, i substract one more.
return toposwhere_label3
end

function get_toposkind_id(toposid)
	if mw.ustring.find(cat_title, toposwhere_label3) then
	toposid = get_toposid(toposwhere_label3)
	end
return toposid
end


-- ---------------------- application των
if mw.ustring.find(cat_title, ' των ') 
	and not mw.ustring.find(cat_title, ' των αμινοξέων') and not mw.ustring.find(cat_title, ' των αστερισμών') 
	and not mw.ustring.find(cat_title, ' των ζωδίων')
	then
	toposwhere_label3 = get_topos_wherelabel3(toposwhere_label3)
	whereid3 = require("Module:topos/functions").catword_to_firstwhere(get_where_text3(where_text3))
	toposid = get_toposkind_id(toposwhere_label3)
--	cat_title = get_topos_wherelabel3(toposwhere_label3) .. ' ' .. get_where_text3(where_text3)


		if cat_parenthesis == '' or cat_parenthesis == nil then
			text = text_wikt .. ' » [[:Κατηγορία:Θεματικές ορολογίες|Θεματικές ορολογίες]]' 
			.. ' » [[:Κατηγορία:Ονομασίες|Ονομασίες]]' 
			.. ' » [[:Κατηγορία:Τοπωνύμια|<b>Τοπωνύμια</b>]]' 
			.. ' » [[:Κατηγορία:Τοπωνύμια ανά είδος|ανά είδος]]' 
			if mw.ustring.find(cat_title, 'Τοπωνύμια') then 
				text = text   -- no repetition. Check [[:Κατηγορία:Αεροδρόμια των ΗΠΑ]] -- [[:Κατηγορία:Τοπωνύμια των ΗΠΑ]]
			else
				if topos[toposid].parent2 ~= '' and topos[toposid].parent2 ~= nil then
				text = text .. ' » [[:Κατηγορία:' .. topos[toposid].parent2 .. '|' .. topos[toposid].parent2 .. ']]'
				end
				if topos[toposid].parent ~= '' and topos[toposid].parent ~= nil then
				text = text .. ' » [[:Κατηγορία:' .. topos[toposid].parent .. '|' .. topos[toposid].parent .. ']]'
				end
				text = text .. ' » [[:Κατηγορία:' .. topos[toposid].word_cat .. '|' .. topos[toposid].word_cat .. ']]' 
			end
			-- by place
			text = text .. ' :: [[:Κατηγορία:' .. topos[toposid].word_cat .. ' ανά τόπο|ανά τόπο]]' 
			if where[whereid3].parent4 ~= '' and where[whereid3].parent4 ~= nil then
				text = text .. ' » [[:Κατηγορία:' .. topos[toposid].word_cat .. ' ' .. where[whereid3].parent4 .. '|' .. where[whereid3].parent4 .. ']]'
			end
			if where[whereid3].parent3 ~= '' and where[whereid3].parent3 ~= nil then
				text = text .. ' » [[:Κατηγορία:' .. topos[toposid].word_cat .. ' ' .. where[whereid3].parent3 .. '|' .. where[whereid3].parent3 .. ']]'
			end	
			if where[whereid3].parent2 ~= '' and where[whereid3].parent2 ~= nil then
				text = text .. ' » [[:Κατηγορία:' .. topos[toposid].word_cat .. ' ' .. where[whereid3].parent2 .. '|' .. where[whereid3].parent2 .. ']]'
			end	
			if where[whereid3].parent ~= '' and where[whereid3].parent ~= nil then
				text = text .. ' » [[:Κατηγορία:' .. topos[toposid].word_cat .. ' ' .. where[whereid3].parent .. '|' .. where[whereid3].parent .. ']]'
			end	
			text = text .. ' » [[:Κατηγορία:' .. cat_title .. '|' .. where[whereid3].word_cat .. ']]' 
			if where[whereid3].extra1 ~= '' and where[whereid3].extra1 ~= nil then -- Θεματική
				text = text .. ' « [[:Κατηγορία:' .. topos[toposid].word_cat .. ' ' .. where[whereid3].extra1 .. '|' .. where[whereid3].extra1 .. ']]'
			end
			if where[whereid3].extra2 ~= '' and where[whereid3].extra2 ~= nil then
				text = text .. ' « [[:Κατηγορία:' .. topos[toposid].word_cat .. ' ' .. where[whereid3].extra2 .. '|' .. where[whereid3].extra2 .. ']]'
			end
			if where[whereid3].extra3 ~= '' and where[whereid3].extra3 ~= nil then
				text = text .. ' « [[:Κατηγορία:' .. topos[toposid].word_cat .. ' ' .. where[whereid3].extra3 .. '|' .. where[whereid3].extra3 .. ']]'
			end
			-- descr --  ------------------- toposwhere_label3 = topos[toposid]  
			if topos[toposid].descr ~= '' and topos[toposid].descr ~= nil then
				text_plus = '<dl><dd>' .. topos[toposid].descr .. '</dd></dl>'
			end	
	
			-- cat a -- parent ALWAYS, except continents. parent may COINCIDE with a continent category, that 's ok.		
			if where[whereid3].parent ~= '' and where[whereid3].parent ~= nil then
				cat = cat .. '[[Κατηγορία:' .. topos[toposid].word_cat .. ' ' .. where[whereid3].parent .. "|'" .. where[whereid3].key .. ']]' ..  "\n" -- sort apostroph
				.. '[[Κατηγορία:' .. topos[toposid].word_cat .. " ανά τόπο|'" .. where[whereid3].key .. ']]' ..  "\n"
			end	
			-- no example
			if mw.ustring.find(cat_title, 'Τοπωνύμια') then -- [[:Κατηγορία:Τοπωνύμια της Ευρώπης]] 
				if mw.ustring.find(cat_title, 'Αμερικής') or mw.ustring.find(cat_title, 'Ανταρκτικ') or mw.ustring.find(cat_title, 'Ασίας')
				 or mw.ustring.find(cat_title, 'Αφρικής') or mw.ustring.find(cat_title, 'Ευρώπης') or mw.ustring.find(cat_title, 'Ωκεανίας')
				 or mw.ustring.find(cat_title, 'Αρκτικού') or mw.ustring.find(cat_title, 'Ατλαντικού')
				 or mw.ustring.find(cat_title, 'Ειρηνικού') or mw.ustring.find(cat_title, 'Ινδικού') or mw.ustring.find(cat_title, 'Σύμπαντος') then
				 cat = '[[Κατηγορία:Τοπωνύμια ανά τόπο| ' .. where[whereid3].key .. ']]' ..  "\n" -- sort top
			-- [[:Κατηγορία:Τοπωνύμια των ΗΠΑ]]
				else cat = cat
				end
			-- no example
			elseif mw.ustring.find(cat_title, 'Αμερικής') or mw.ustring.find(cat_title, 'Ανταρκτικ') or mw.ustring.find(cat_title, 'Ασίας')
				 or mw.ustring.find(cat_title, 'Αφρικής') or mw.ustring.find(cat_title, 'Ευρώπης') or mw.ustring.find(cat_title, 'Ωκεανίας')
				 or mw.ustring.find(cat_title, 'Αρκτικού') or mw.ustring.find(cat_title, 'Ατλαντικού')
				 or mw.ustring.find(cat_title, 'Ειρηνικού') or mw.ustring.find(cat_title, 'Ινδικού') or mw.ustring.find(cat_title, 'Σύμπαντος') then
				cat = cat .. '[[Κατηγορία:' .. topos[toposid].word_cat .. ' ανά τόπο| ' .. where[whereid3].key .. ']]' ..  "\n" -- sort top	
				.. '[[Κατηγορία:Τοπωνύμια ' .. where[whereid3].word_cat .. '| ' .. topos[toposid].key .. ']]' ..  "\n" -- sort top
--				.. '[[Κατηγορία:Τοπωνύμια ανά τόπο| ' .. where[whereid3].key .. ']]' ..  "\n" -- sort top -- no, too many
			 -- [[:Κατηγορία:Αεροδρόμια των ΗΠΑ]]
			else
				cat = cat .. '[[Κατηγορία:' .. topos[toposid].word_cat .. ' ' ..  where[whereid3].parent .. "|'" .. where[whereid3].key .. ']]' ..  "\n" -- sort apostroph
				.. '[[Κατηγορία:Τοπωνύμια ' .. where[whereid3].word_cat .. '| ' .. topos[toposid].key .. ']]' ..  "\n"  -- sort top
				 end
			-- no example (διπλή υπαγωγή, Ευρώπη + extra Ασία)
			if where[whereid3].extra1 ~= '' and where[whereid3].extra1 ~= nil then -- Θεματική
				cat = cat .. '[[Κατηγορία:'  .. topos[toposid].word_cat .. ' ' .. where[whereid3].extra1 .. '| ' .. topos[toposid].key .. ']]' ..  "\n" -- sort top
			end
			if where[whereid3].extra2 ~= '' and where[whereid3].extra2 ~= nil then -- Θεματική
				cat = cat .. '[[Κατηγορία:'  .. topos[toposid].word_cat .. ' ' .. where[whereid3].extra2 .. '| ' .. topos[toposid].key .. ']]' ..  "\n" -- sort top
			end
			if where[whereid3].extra3 ~= '' and where[whereid3].extra3 ~= nil then -- Θεματική
				cat = cat .. '[[Κατηγορία:'  .. topos[toposid].word_cat .. ' ' .. where[whereid3].extra3 .. '| ' .. topos[toposid].key .. ']]' ..  "\n" -- sort top
			end
			
-- b mode	
		else
			text = text_lang .. ' » [[:Κατηγορία:Θεματικές ορολογίες (' .. lang_name .. ')|Θεματικές ορολογίες]]' 
			.. ' » [[:Κατηγορία:Ονομασίες (' .. lang_name .. ')|Ονομασίες]]'
			.. ' » [[:Κατηγορία:Τοπωνύμια (' .. lang_name .. ')|<b>Τοπωνύμια</b> » ανά είδος]]'  -- Places + places by kind coincide when +language
			if mw.ustring.find(cat_title, 'Τοπωνύμια') then 
				text = text  -- no repetition. Check [[:Κατηγορία:Πόλεις των ΗΠΑ (νέα ελληνικά)]] -- [[:Κατηγορία:Τοπωνύμια των ΗΠΑ (νέα ελληνικά)]]
			else
				if topos[toposid].parent2 ~= '' and topos[toposid].parent2 ~= nil then
				text = text .. ' » [[:Κατηγορία:' .. topos[toposid].parent2 .. ' (' .. lang_name .. ')|' .. topos[toposid].parent2 .. ']]'
				end
				if topos[toposid].parent ~= '' and topos[toposid].parent ~= nil then
				text = text .. ' » [[:Κατηγορία:' .. topos[toposid].parent .. ' (' .. lang_name .. ')|' .. topos[toposid].parent .. ']]'
				end

				text = text .. ' » [[:Κατηγορία:' .. topos[toposid].word_cat .. ' (' .. lang_name .. ')|' .. topos[toposid].word_cat .. ']]' 
			end
			-- by place+lang
			text = text .. ' :: [[:Κατηγορία:' .. topos[toposid].word_cat .. ' ανά τόπο (' .. lang_name .. ')|ανά τόπο]]' 			
			if where[whereid3].parent4 ~= '' and where[whereid3].parent4 ~= nil then
				text = text .. ' » [[:Κατηγορία:' .. topos[toposid].word_cat .. ' ' .. where[whereid3].parent4 .. ' (' .. lang_name .. ')|' .. where[whereid3].parent4 .. ']]'
			end	
			if where[whereid3].parent3 ~= '' and where[whereid3].parent3 ~= nil then
				text = text .. ' » [[:Κατηγορία:' .. topos[toposid].word_cat .. ' ' .. where[whereid3].parent3 .. ' (' .. lang_name .. ')|' .. where[whereid3].parent3 .. ']]'
			end	
			if where[whereid3].parent2 ~= '' and where[whereid3].parent2 ~= nil then
				text = text .. ' » [[:Κατηγορία:' .. topos[toposid].word_cat .. ' ' .. where[whereid3].parent2 .. ' (' .. lang_name .. ')|' .. where[whereid3].parent2 .. ']]'
			end	
			if where[whereid3].parent ~= '' and where[whereid3].parent ~= nil then
				text = text .. ' » [[:Κατηγορία:' .. topos[toposid].word_cat .. ' ' .. where[whereid3].parent .. ' (' .. lang_name .. ')|' .. where[whereid3].parent .. ']]'
			end	
			text = text .. ' » [[:Κατηγορία:' .. cat_title .. ' (' .. lang_name .. ')|' .. where[whereid3].word_cat .. ']]' 
			if where[whereid3].extra1 ~= '' and where[whereid3].extra1 ~= nil then -- Θεματική
				text = text .. ' « [[:Κατηγορία:' .. topos[toposid].word_cat .. ' ' .. where[whereid3].extra1 .. ' (' .. lang_name .. ')|' .. where[whereid3].extra1 .. ']]'
			end
			
			-- cat b  -- parent ALWAYS, except continents. parent may COINCIDE with a continent category, that 's ok.
			 -- [[:Κατηγορία:Τοπωνύμια των ΗΠΑ (νέα ελληνικά)]] -- [[:Κατηγορία:Πόλεις των ΗΠΑ(νέα ελληνικά)]]
			cat = '[[Κατηγορία:' .. topos[toposid].word_cat .. ' ανά τόπο (' .. lang_name .. ")|'" .. where[whereid3].key .. ']]' ..  "\n"
			if mw.ustring.find(cat_title, 'Τοπωνύμια') then
				if mw.ustring.find(cat_title, 'Αμερικής') or mw.ustring.find(cat_title, 'Ανταρκτικ') or mw.ustring.find(cat_title, 'Ασίας')
				 or mw.ustring.find(cat_title, 'Αφρικής') or mw.ustring.find(cat_title, 'Ευρώπης') or mw.ustring.find(cat_title, 'Ωκεανίας')
				 or mw.ustring.find(cat_title, 'Αρκτικού') or mw.ustring.find(cat_title, 'Ατλαντικού')
				 or mw.ustring.find(cat_title, 'Ειρηνικού') or mw.ustring.find(cat_title, 'Ινδικού') or mw.ustring.find(cat_title, 'Σύμπαντος') then
				 cat = '[[Κατηγορία:Τοπωνύμια ' ..  where[whereid3].word_cat  .. '|' .. languages[lang_iso].key .. ']]' ..  "\n"
				 .. '[[Κατηγορία:Τοπωνύμια ανά τόπο (' .. lang_name .. ')| ' .. where[whereid3].key .. ']]' ..  "\n" -- sort top
				else  -- [[:Κατηγορία:Τοπωνύμια των ΗΠΑ (νέα ελληνικά)]]
					cat = '[[Κατηγορία:Τοπωνύμια ' ..  where[whereid3].word_cat  .. '|' .. languages[lang_iso].key .. ']]' ..  "\n"
					.. '[[Κατηγορία:Τοπωνύμια ανά τόπο (' .. lang_name .. ')|' .. where[whereid3].key .. ']]' ..  "\n"
				end
			elseif mw.ustring.find(cat_title, 'Αμερικής') or mw.ustring.find(cat_title, 'Ανταρκτικ') or mw.ustring.find(cat_title, 'Ασίας')
				 or mw.ustring.find(cat_title, 'Αφρικής') or mw.ustring.find(cat_title, 'Ευρώπης') or mw.ustring.find(cat_title, 'Ωκεανίας')
				 or mw.ustring.find(cat_title, 'Αρκτικού') or mw.ustring.find(cat_title, 'Ατλαντικού')
				 or mw.ustring.find(cat_title, 'Ειρηνικού') or mw.ustring.find(cat_title, 'Ινδικού') or mw.ustring.find(cat_title, 'Σύμπαντος') then
				 cat = '[[Κατηγορία:' .. topos[toposid].word_cat .. ' ' .. where[whereid3].word_cat .. '|' .. languages[lang_iso].key .. ']]' ..  "\n"
				 .. '[[Κατηγορία:' .. topos[toposid].word_cat .. ' ανά τόπο (' .. lang_name ..')| ' .. where[whereid3].key .. ']]' ..  "\n" -- sort top
				 .. '[[Κατηγορία:Τοπωνύμια ' .. where[whereid3].word_cat .. ' (' .. lang_name .. ')| ' .. where[whereid3].key .. ']]' ..  "\n" -- sort top
			else -- [[:Κατηγορία:Πόλεις των ΗΠΑ (νέα ελληνικά)]]
				cat = cat .. '[[Κατηγορία:' .. topos[toposid].word_cat .. ' ' .. where[whereid3].word_cat .. '|' .. languages[lang_iso].key .. ']]' ..  "\n"
			end
			if where[whereid3].parent ~= '' and where[whereid3].parent ~= nil then
				cat = cat .. '[[Κατηγορία:' .. topos[toposid].word_cat .. ' ' .. where[whereid3].parent .. ' (' .. lang_name .. ")|'" .. where[whereid3].key .. ']]' ..  "\n" -- sort apostroph
			end	
			-- no example (διπλή υπαγωγή, Ευρώπη + extra Ασία)
			if where[whereid3].extra1 ~= '' and where[whereid3].extra1 ~= nil then
				cat = cat .. '[[Κατηγορία:'  .. topos[toposid].word_cat .. ' ' .. where[whereid3].extra1 .. ' (' .. lang_name .. ')| ' .. topos[toposid].key .. ']]' ..  "\n" -- sort top
			end
			if where[whereid3].extra2 ~= '' and where[whereid3].extra2 ~= nil then
				cat = cat .. '[[Κατηγορία:'  .. topos[toposid].word_cat .. ' ' .. where[whereid3].extra2 .. ' (' .. lang_name .. ')| ' .. topos[toposid].key .. ']]' ..  "\n" -- sort top
			end
			if where[whereid3].extra3 ~= '' and where[whereid3].extra3 ~= nil then
				cat = cat .. '[[Κατηγορία:'  ..topos[toposid].word_cat .. ' ' ..  where[whereid3].extra3 .. ' (' .. lang_name .. ')| ' .. topos[toposid].key .. ']]' ..  "\n" -- sort top
			end
			
		end -- close parenthesis
	
end -- close if των and not, and not





-- ========================================== OUTPUT
	
	text = '<table width=100%><tr><td style="font-size:small; background:#f8f8f8;">' .. text .. '</td></tr></table>' .. text_plus

	if cat == '' or cat == nil then
		output = '<div style="font-size:20px; color:#b22222;">Λυπούμαστε, αλλά το auto cat δεν υποστηρίζει αυτή τη σελίδα!<br>'
		.. 'Sorry, auto cat is not supported for this page.</div>'
		.. ' [[Κατηγορία:Σελίδες με σφάλμα στο auto cat]]'
	else
		output = text .. cat
	end

return output
end

return export