Module:auto cat: Διαφορά μεταξύ των αναθεωρήσεων

Από Βικιλεξικό
Μετάβαση στην πλοήγηση Πήδηση στην αναζήτηση
Περιεχόμενο που διαγράφηκε Περιεχόμενο που προστέθηκε
mode a sort top
and mode b sort top
Γραμμή 3.126: Γραμμή 3.126:
if (args['lemma'] ~= '' and args['lemma'] ~= nil) or (args['λήμμα'] ~= '' and args['λήμμα'] ~= nil)
if (args['lemma'] ~= '' and args['lemma'] ~= nil) or (args['λήμμα'] ~= '' and args['λήμμα'] ~= nil)
then
then
cat = cat .. '[[Κατηγορία:' .. write_cat .. ' ' .. apota_text .. ' ρίζα ' .. other_lemma .. ' (' .. languages[lang_iso].name .. ')|' .. root_word .. ']]' .. "\n"
cat = cat .. '[[Κατηγορία:' .. write_cat .. ' ' .. apota_text .. ' ρίζα ' .. other_lemma .. ' (' .. languages[lang_iso].name .. ')| ]]' .. "\n" -- sort top
.. '[[Κατηγορία:' .. write_cat .. ' ' .. apota_text .. ' ρίζα ' .. root_word .. '|' .. languages[lang_iso].key .. ']]' .. "\n"
.. '[[Κατηγορία:' .. write_cat .. ' ' .. apota_text .. ' ρίζα ' .. root_word .. '|' .. languages[lang_iso].key .. ']]' .. "\n"
else
else
Γραμμή 3.140: Γραμμή 3.140:
if (args['lemma'] ~= '' and args['lemma'] ~= nil) or (args['λήμμα'] ~= '' and args['λήμμα'] ~= nil)
if (args['lemma'] ~= '' and args['lemma'] ~= nil) or (args['λήμμα'] ~= '' and args['λήμμα'] ~= nil)
then
then
cat = cat .. '[[Κατηγορία:' .. write_cat .. ' ' .. apota_text .. ' ρίζα ' .. other_lemma .. ' (' .. languages[lang_iso].name .. ')|' .. sort .. ']]' .. "\n"
cat = cat .. '[[Κατηγορία:' .. write_cat .. ' ' .. apota_text .. ' ρίζα ' .. other_lemma .. ' (' .. languages[lang_iso].name .. ')| ]]' .. "\n" -- sort top
.. '[[Κατηγορία:' .. write_cat .. ' ' .. apota_text .. ' ρίζα ' .. root_word .. '|' .. languages[lang_iso].key .. ']]' .. "\n"
.. '[[Κατηγορία:' .. write_cat .. ' ' .. apota_text .. ' ρίζα ' .. root_word .. '|' .. languages[lang_iso].key .. ']]' .. "\n"
else
else

Αναθεώρηση της 13:26, 11 Σεπτεμβρίου 2022

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 >> Για κάθε αλλαγή ενημερώνουμε και το Module:auto cat (function get_toposkind_id)
Module:auto cat >> τόποι της... places of...       (as in where at Module:topos/where)
Module:auto cat >> Module:Languages       & Module:Languages/cat (γλώσσες)
Module:auto cat >> Module:auto cat/param-prefix-id πρόθημα ωωω από το χχχ (normalize prefixes)
and all SUBPAGES


-- [[Template:auto cat]]
-- https://el.wiktionary.org/wiki/Ειδικό:ΤιΣυνδέειΕδώ/Πρότυπο:auto_cat
-- [[:Κατηγορία:Σελίδες με manual auto cat]] -- {{auto cat|text=...}} ή {{auto cat|iso=xx|text=....}}
-- [[:Κατηγορία:Σελίδες με σφάλμα στο auto cat]]
-- [[:Κατηγορία:Σελίδες με σφάλματα δέσμης ενεργειών]]
-- to do: CATFIX precise links of words -- .js needed
--[=[
2020.11.11. Sarri.greek (wish it were better and shorter)
IN GREEK================
-- Στις σελίδες Κατηγοριών, το [[Πρότυπο:auto cat]] προσθέτει μικρογράμματο τίτλο στην κορυφή της σελίδας
	και κατηγοριοποιεί στο τέλος της σελίδας.
-- Οι Κατηγορίες στο el.wiktionary έχουν πάντοτε τη μορφή
	Κατηγορία:Τίτλος
	ή
	Κατηγορία:Τίτλος (όνομαγλώσσας)
	Ειδικοί δείκτες:
	* η λέξη 'από' για ετυμολογικές κατηγορίες όπως στο [[Module:Languages]].apota = από την τάδε γλώσσα
		π.χ. [[:Κατηγορία:Δάνεια - ονόματα]]
	* απλή παύλα ' - ' για θεματικές ετυμολογικές κατηγορίες π.χ.[[:Κατηγορία:Δάνεια - ονόματα]]
		(όμως καλύτερα να αποφεύγεται, δημιουργεί προβλήματα)
	* η γενική του άρθρου 'της / του / των' για κατηγορίες τόπων π.χ. [[:Κατηγορία:Τοπωνύμια της Ελλάδας]]
ΔΟΜΗ
1)	προκαταρκτικά, mode a, mode b
	text= & cat= in mode a (χωρίς γλώσσα) & mode b (με γλώσσα στην παρένθεση)
	// TO DO: CATFIX // FREE manual text
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)
	// TO DO: CATFIX // FREE manual text
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 - ΝΑ ΜΗΝ ΕΒΑΖΑ παύλες μέσα σε τίτλους καλύτερα. Έχουν μονίμως πρόβλημα.
	
PROBLEMS
* fucntion apota: -- PROBLEMATIC: [[:Κατηγορία:Προέλευση λέξεων από τουρκικές γλώσσες (νέα ελληνικά)]] MUST NOT and not mw.ustring.find(cat_title, 'από το')
	ΔΙΟΡΘΩΣΗ ΣΥΧΝΟΥ ΠΡΟΒΛΗΜΑΤΟΣ: αν κάποια Κατηγορία δίνει error: bad argument #1 to 'sub' (string expected, got nil).
	μάλλον φταίει ότι μέσα στην έκφραση υπάρχει το «απο» Παράδειγμα: [[:Κατηγορία:Αριθμητικά απόλυτα]]
	Θα πρέπει να πάμε ΣΕ ΟΛΕΣ τις περιπτώσεις ΕΞΑΙΡΕΣΕΩΝ ΕΤΥΜΟΛΟΓΙΑ για τον δείκτη apota προσθέτοντας:  and not mw.ustring.find(cat_title, 'απόλυτα')
* topos+where. REDO IT. CANNOT toposwhere label = topos kind id. 
		Cannot toposwhere_label.descr [[:Κατηγορία:Διαμερίσματα της Ελλάδας]]
TO DO ΕΚΚΡΕΜΟΤΗΤΕΣ
	* TO DO -- NEED precise link to the LanguageSection in categories. See CATFIX
		e.g. members of [[:Κατηγορία:Τρόφιμα (γαλλικά)]] should link to Section Γαλλικά (fr)
		that is Κατηγορία:Title (Module:Languages.name) should link to page#Module:Languages.link
	* sort weird: [[Άργος]] placenameAPOTA for κλη, προέλ The alpha+tonos is not sorted, as other capitals eg. [[Όλυμπος]] [[Ίλιο]]
	* param nohost=1 for la-new e.g. for Κατηγορία:Σημασιολογικά δάνεια από τα αγγλικά (νεολατινικά) this is not needed: Κατηγορία:Σημασιολογικά δάνεια από τα αγγλικά (λατινικά)
]=]--

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

-- DATA-ONLY-MODULES 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']
-- ##?? TO DO: how can I cobmine to local data the topics and style ??
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 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']

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
	-- but i need to do HERE all the if title ... then cat_title... (see TOPOS SECTION)


-- 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 e.g. [[:Κατηγορία:Προέλευση λέξεων από τα γαλλικά]]
	local lang_apota = ''	-- donor language as 'apota' in [[Module:Languages]], it gets lang_iso2 -- only for some categories - OK
							-- e.g. gives iso2 = 'fr'
	local apota_text = ''	-- e.g. gives από τα γαλλικά
	local apota_label = ''	-- e.g. gives Προέλευση λέξεων
	local length = ''		-- length of από τα γαλλικά
-- βλ. also see affixes Προσφύματα: -- local sort, alt, show_other, other_link, other_cat
-- βλ. also see TOPOS placenames Τοπωνύμια: 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 NOT USED
		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)	-- textofparenthesis without brackets = the language name in the category titles

	   	lang_iso = args['iso'] or '' -- in case editor needs to fill parameter NOT USED
			-- 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 -- NOT USED
		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 .. ' » [[:Κατηγορία:Θεματικές κατηγορίες|Θεματικές κατηγορίες]]' 
--	.. ' » [[:Κατηγορία:Ονομασίες|Ονομασίες]] » [[:Κατηγορία:Τοπωνύμια ανά είδος|Τοπωνύμια]]' 

-------------------------------------------------------------------------- ##### TO DO needs interface admin
--                               CATFIX                                 --
-- the words in every Category with precise links to Language Sections  --
--------------------------------------------------------------------------
--[=[
	* NEED precise link to the LanguageSection in categories. See CATFIX
		e.g. members of [[:Κατηγορία:Τρόφιμα (γαλλικά)]] should link to Section Γαλλικά (fr)
		what is in parenthesis is ALWAYS the language name
		that is Κατηγορία:Title (Module:Languages.name) should link to page#Module:Languages.link
Instructions at https://en.wiktionary.org/wiki/Wiktionary:Grease_pit/2021/June#Links_from_categories
What we do is insert the HTML code created by <code>require "Module:utilities".catfix(language_object, optional_script_code)</code> 
into category pages, and then run [[MediaWiki:Gadget-catfix.js]] to transform the category links. 
The gadget is installed [[MediaWiki:Gadgets-definition#Hidden_gadgets_and_utils|here]] 
so that it is loaded efficiently by the server. 
The catfix HTML is inserted either by calling the module function in the module functions that generate category descriptions
(for instance in many categories that are added by {{temp|autocat}}) 
or by using {{temp|catfix}} in a page. So it's a combination of a module and a JavaScript gadget. — [[:en:User:Erutuon]]

-- here, in el.wiktionary we have:
if cat_parenthesis == '' or cat_parenthesis == nil then -- there is NO LANGUAGE or uni, or mul or el
	-- do nothing
else -- There is a language name in parenthesis. See above, mode b
	-- cat_title is the Title of page WITHOUT parenthesis
	-- cat_lang = m_page.pagelang(xx)	-- textofparenthesis without brackets = the language name in the category titles
	-- i have the iso of the language: lang_iso = require("Module:lang").langname_to_langiso(cat_lang)
	-- lang_name = languages[lang_iso].name -- = in the parenthesis cat_lang
	-- we need the id anchor to language Sections in pages. This is  lang_cat = languages[lang_iso].cat
	-- make link:
	-- [[xxxx#lang_cat]]
	
if cat_parenthesis == '' or cat_parenthesis == nil 
or cat_parenthesis == 'διεθνείς όροι' or cat_parenthesis == 'διαγλωσσικοί όροι' -- uni, mul universal & transligual terms, are alwyas on top of page
or cat_parenthesis == 'νέα ελληνικά' -- el at top of page (very few pages have uni or mul on top of el, never mind)
then
	-- do nothing
else
	-- read the lang_name in the parenthesis and get the iso
	cat_lang = m_page.pagelang(xx)
	lang_iso = require("Module:lang").langname_to_langiso(cat_lang)
	-- create a link to the iso of the cat_parenthsis language, whith is  #languages[lang_iso].link 
	-- [[xxx#languages[lang_iso].link]] ??? how do i write it??
	
end -- close catfix
	
]=]--


--------------------------------------------------------------------------
--                               FREE                                  --
-- write breadcrumb free text - you need to add categories manually, [[Template:κατ]]
-- used e.g. in Categories for declensions
--------------------------------------------------------------------------
-- [[:Κατηγορία:Σελίδα για τεστ]] [[:Κατηγορία:Σελίδες με manual auto cat]]
-- ignore the titleword Κατηγορία (it may by an Appendix)  [[Παράρτημα:Ουσιαστικά (νέα ελληνικά)]] should not be confuse with [[:Κατηγορία:Ουσιαστικά (νέα ελληνικά)]]
	-- THIS doeσ not work if m_page.fullpagetext(xx) then (it is  mw.title.getCurrentTitle()  -- the FULL title of the page΄


if args['text'] ~= '' and args['text'] ~= nil then
		local lang_iso = args['iso'] or ''
		if args['iso'] ~= '' and args ['iso'] ~= nil then
			if args['iso'] == languages[lang_iso].iso then lang_iso = languages[lang_iso].iso end
			if languages[lang_iso].sublang == true then
			text = '[[:Κατηγορία:Κατάλογος γλωσσών|Γλώσσα]]: ' 
			.. '[[:Κατηγορία:' .. languages[lang_iso].host .. '|<b>' .. languages[lang_iso].host_show .. '</b>]]'
			.. ' - [[:Κατηγορία:' .. languages[lang_iso].cat .. '|'	.. mw.getContentLanguage():ucfirst(languages[lang_iso].name) .. ']]'		
			.. ' » ' .. args['text']
			else
			text = '[[:Κατηγορία:Κατάλογος γλωσσών|Γλώσσα]]: ' 
			.. '[[:Κατηγορία:' .. languages[lang_iso].cat .. '|<b>' .. mw.getContentLanguage():ucfirst(languages[lang_iso].name) .. '</b>]]'
			.. ' » ' .. args['text']
			end
			cat = '[[Κατηγορία:Σελίδες με manual auto cat]]'
		else -- no language iso
			text = '[[:Κατηγορία:Βικιλεξικό|<b>Κατηγορίες</b>]]'
			.. ' » ' .. args['text']
			cat = '[[Κατηγορία:Σελίδες με manual auto cat]]'
		end -- close iso=

else -- read all the following module

--------------------------------------------------------------------------
--                       Κατηγορίες γλωσσών                            --
--        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"
			
			if languages[language_iso].family == true then 
			cat = cat .. '[[Κατηγορία:Οικογένειες γλωσσών|' .. languages[language_iso].key .. ']]' ..  "\n"
			end
			
		end
	else
		 -- do not spoil all other page titles e.g. [[:Κατηγορία:Ουσιαστικά]]
	end
	
-- ============== language specific - ειδικά για συγκεκριμένες γλώσσες ============== --
if page_text == 'Ελληνιστική σημασία για αρχαίες λέξεις' then
			text = '[[:Κατηγορία:Κατάλογος γλωσσών|Γλώσσα]]: ' 
			.. '[[:Κατηγορία:Αρχαία ελληνικά|<b>Αρχαία ελληνικά</b>]] - [[:Κατηγορία:Ελληνιστική κοινή|Ελληνιστική κοινή]]'
			.. ' »  σημασίες για αρχαίες λέξεις'
			cat = '[[Κατηγορία:Ελληνιστική κοινή| ]]' ..  "\n"
			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
		-- descr -- [[:Κατηγορία:Λήμματα με ηχητικά αρχεία]]
			if data.level_1[cat_title]['descr'] ~= '' and data.level_1[cat_title]['descr'] ~= nil then
				text_plus = '<dl><dd>' .. data.level_1[cat_title]['descr'] .. '</dd></dl>'
			end
			
			cat = '[[Κατηγορία:Βικιλεξικό|' .. data.level_1[cat_title]['key'] .. ']]'
		else
-- b1 που υπάγονται ΑΠΕΥΘΕΙΑΣ στη γλώσσα τους e.g. [[:Κατηγορία:Γραμματικές κατηγορίες (αγγλικά)]]
			text = text_lang .. textit_lang .. ' [[:Κατηγορία:' ..cat_title .. '|«««]]'
		-- descr
			if data.level_1[cat_title]['descr'] ~= '' and data.level_1[cat_title]['descr'] ~= nil then
				text_plus = '<dl><dd>' .. data.level_1[cat_title]['descr'] .. '</dd></dl>'
			end
			
			-- 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
			if data.level_1bylang[cat_title]['parent'] ~= '' and data.level_1bylang[cat_title]['parent'] ~= nil then
				if data.level_1bylang[cat_title]['parent_show'] ~= '' and data.level_1bylang[cat_title]['parent_show'] ~= nil then
				text = text .. ' » [[:Κατηγορία:' .. data.level_1bylang[cat_title]['parent'] .. '|' .. data.level_1bylang[cat_title]['parent_show'] .. ']]'
				else
				text = text .. ' » [[:Κατηγορία:' .. data.level_1bylang[cat_title]['parent'] .. '|' .. data.level_1bylang[cat_title]['parent'] .. ']]'
				end
			end
			text = text .. textit
			.. ' » [[:Κατηγορία:' .. cat_title .. ' ανά γλώσσα|ανά γλώσσα]]'
-- cat 1 (here, parent is rare) [[:Κατηγορία;Πρότυπα βιβλιογραφίας]]
			if data.level_1bylang[cat_title]['parent'] ~= '' and data.level_1bylang[cat_title]['parent'] ~= nil then
				cat = '[[Κατηγορία:' .. data.level_1bylang[cat_title]['parent'] .. '| ' .. data.level_1bylang[cat_title]['key'] .. ']]' ..  "\n" -- sort top
			else
				cat = '[[Κατηγορία:Βικιλεξικό|' .. data.level_1bylang[cat_title]['key'] .. ']]' ..  "\n"
			end
		else
-- b1 specials -- [[:Κατηγορία:Θεματικές κατηγορίες (αγγλικά)]] -- with parent [[:Κατηγορία:Πρότυπα βιβλιογραφίας (αγγλικά)]]
			text = text_lang
			if data.level_1bylang[cat_title]['parent'] ~= '' and data.level_1bylang[cat_title]['parent'] ~= nil then
				if data.level_1bylang[cat_title]['parent_show'] ~= '' and data.level_1bylang[cat_title]['parent_show'] ~= nil then
				text = text .. ' » [[:Κατηγορία:' .. data.level_1bylang[cat_title]['parent'] .. ' (' .. lang_name .. ')|' .. data.level_1bylang[cat_title]['parent_show'] .. ']]'
				else
				text = text .. ' » [[:Κατηγορία:' .. data.level_1bylang[cat_title]['parent'] .. ' (' .. lang_name .. ')|' .. data.level_1bylang[cat_title]['parent'] .. ']]'
				end
			end
			text = text .. textit_lang 
			.. ' « [[:Κατηγορία:' ..cat_title .. ' ανά γλώσσα|ανά γλώσσα]] « [[:Κατηγορία:' ..cat_title .. '|' ..cat_title .. ']]'
		-- cat b
			cat = '[[Κατηγορία:' .. cat_title .. ' ανά γλώσσα|' .. lang_key .. ']]' ..  "\n"
			if data.level_1bylang[cat_title]['parent'] ~= '' and data.level_1bylang[cat_title]['parent'] ~= nil then
				if languages[lang_iso].sublang == true then
				cat = cat .. '[[Κατηγορία:' .. data.level_1bylang[cat_title]['parent'] .. ' (' .. languages[lang_iso].host_name .. ')|' .. data.level_1bylang[cat_title]['key'] .. ']]'
				else
				cat = cat .. '[[Κατηγορία:' .. data.level_1bylang[cat_title]['parent'] .. ' (' .. lang_name .. ')|' .. data.level_1bylang[cat_title]['key'] .. ']]'
				end
			end

			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:
	-- with parent [[:Κατηγορία:Πρότυπα βιβλιογραφίας ανά γλώσσα]]
	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
			if data.level_1bylang[cat_title]['parent'] ~= '' and data.level_1bylang[cat_title]['parent'] ~= nil then
				if data.level_1bylang[cat_title]['parent_show'] ~= '' and data.level_1bylang[cat_title]['parent_show'] ~= nil then
				text = text .. ' » [[:Κατηγορία:' .. data.level_1bylang[cat_title]['parent'] .. '|' .. data.level_1bylang[cat_title]['parent_show'] .. ']]'
				else
				text = text .. ' » [[:Κατηγορία:' .. data.level_1bylang[cat_title]['parent'] .. '|' .. data.level_1bylang[cat_title]['parent'] .. ']]'
				end
			end
		text = text
		.. ' » [[:Κατηγορία:' .. 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
	-- check [[:Κατηγορία:Επιρρήματα (ελληνιστική κοινή)]]
	if languages[lang_iso].sublang == true then
				text = text .. ' [[:Κατηγορία:' .. cat_title .. ' (' .. languages[lang_iso].host_name .. ')|«' .. languages[lang_iso].host_name .. ']]'
	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]]
--------------------------------------------------------------------------
-- ############ + more parents if needed
--  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
	-- check [[:Κατηγορία:Ανατομία (ελληνιστική κοινή)]]
	if languages[lang_iso].sublang == true then
				text = text .. ' [[:Κατηγορία:' .. cat_title .. ' (' .. languages[lang_iso].host_name .. ')|«' .. languages[lang_iso].host_name .. ']]'
	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]]
-- [[:Κατηγορία:Υφολογικές κατηγορίες]] - [[:Κατηγορία:Υφολογικές κατηγορίες ανά γλώσσα]]
--------------------------------------------------------------------------
-- ########## + more parents if needed
--  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
	-- check [[:Κατηγορία:Υποκοριστικοί όροι (ελληνιστική κοινή)]]
	if languages[lang_iso].sublang == true then
				text = text .. ' [[:Κατηγορία:' .. cat_title .. ' (' .. languages[lang_iso].host_name .. ')|«' .. languages[lang_iso].host_name .. ']]'
	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_lemma = args['lemma'] or args['λήμμα'] or args['άλλο'] or '' -- link to different lemma
	local other_cat = args['cat'] or args['κατ'] or '' -- Category for different affix, same kind of affix
	local other_link = args['link'] or args['λινκ'] or '' -- NOT USED different link, not just the affix [[:Κατηγορία:Γυναικεία επώνυμα με επίθημα -άδη (νέα ελληνικά)]]
	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 [[:Κατηγορία:Ανδρικά ονόματα με επίθημα -γιάννης (νέα ελληνικά)]]
	local cat_plus = args['cat+'] or args['κατ+'] or '' -- extra cat of  the same kind e.g. [[Κατηγορία:Λέξεις με πρόθημα ματο- από αιματο- (νέα ελληνικά)]] +ΚΑΤ Λέξεις με πρόθημα ματο- (νέα ελληνικά)
	local multisense = args['multisense'] or args['πολύσημο'] or '' -- added at Cateogry pages hosting subcategories add Κατηγορία:Λέξεις κατά πολύσημα προθήματα (νέα ελληνικά) add it to [[:Λέξεις με πρόθημα ματο- (νέα ελληνικά)]]
	local nohost = args['nohost'] or '' -- only for [[Module:Languages]].sublang DO NOT give the host language data. e.g. [[:Κατηγορία:Λέξεις με επίθημα -ίδιον (καθαρεύουσα)]] There is no -ίδιον for el.
	-- και μόνο για Κατ.Λέξεις με πρόθημα, 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
		-- here, I need to extract e.g. α- from Κατηγορία:Λέξεις με πρόθημα α-, προτακτικό (νέα ελληνικά)
		-- also the first ανθ- from Κατηγορία:Λέξεις με πρόθημα ανθ- από το αντι- (νέα ελληνικά)
	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
catword_multisense = 'Λέξεις κατά πολύσημα προθήματα' --  [[:Κατηγορία:Λέξεις με πρόθημα αν- (νέα ελληνικά)]]
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
catword_multisense = 'Λέξεις κατά πολύσημα επιθήματα' --  [[:Κατηγορία:Λέξεις με επίθημα -α (νέα ελληνικά)]] 
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 -- #####missing param other_cat ##no multisense
		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. [[:Κατηγορία:Λέξεις με πρόθημα συν- (νέα ελληνικά)]] PLUS param nohost e.g. [[:Κατηγορία:Λέξεις με επίθημα -ίδιον (καθαρεύουσα)]] There is no -ίδιον for el. 	
		text = text_lang .. ' » [[:Κατηγορία:Ετυμολογία (' .. lang_name .. ')|Ετυμολογία]]'
		.. ' » [[:Κατηγορία:Μορφολογία (' .. lang_name .. ')|Μορφολογία]]'
		.. ' » [[:Κατηγορία:Προσφύματα (' .. lang_name .. ')|Προσφύματα]]'
		.. ' » [[:Κατηγορία:' .. cat_affix .. ' (' .. lang_name .. ')|' .. cat_affix .. ']]'
		.. ' » [[:Κατηγορία:Λέξεις ' .. in_cat .. ' (' .. lang_name .. ')|Λέξεις ' .. in_cat .. ']]'
		if other_lemma == '' or other_lemma == 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_lemma .. "#" .. languages[lang_iso].link .. '|<b>' .. other_lemma .. '</b>]]'
			else
			text = text .. ' » [[' .. other_lemma .. "#" .. languages[lang_iso].link .. '|<b>' .. show_other .. '</b>]]'
			end
		end
	
-- πολύσημο (multisense) with comma e.g. Κατηγορία:Λέξεις με πρόθημα α-, προτακτικό (νέα ελληνικά)
		-- or with από...  e.g. Κατηγορία:Λέξεις με επίθημα -της, αρσενικό (αρχαία ελληνικά) Κατηγορία:Λέξεις με πρόθημα ανθ- από το αντι- (νέα ελληνικά)
		if (mw.ustring.find(cat_title, "από το") or mw.ustring.find(cat_title, ","))
		and other_lemma ~= '' and other_lemma ~= nil
		then
			text = text .. ' « [[:Κατηγορία:' .. catword .. ' ' .. other_lemma .. ' (' .. languages[lang_iso].name .. ')|' .. catword .. ' ' .. other_lemma .. ']]' 	
		end		
		
	-- check [[:Κατηγορία:Λέξεις με πρόθημα ψυχο- (ελληνιστική κοινή)]]
		if languages[lang_iso].sublang == true then
		if nohost == '1' then		
			if other_lemma == '' or other_lemma == nil then
				if show_other == '' or show_other == nil then
				text = text
				else -- the same
				text = text
				end
			else -- give a different link 
				if show_other == '' or show_other == nil then
				text = text
				else -- the same
				text = text
				end
			end			
		else -- no nohost
			if other_lemma == '' or other_lemma == 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_lemma .. ' (' .. languages[lang_iso].host_name .. ')|' .. languages[lang_iso].host_name .. ']]' 
				else -- the same
				text = text .. ' « [[:Κατηγορία:' .. catword .. ' ' .. other_lemma .. ' (' .. languages[lang_iso].host_name .. ')|' .. languages[lang_iso].host_name .. ']]' 
				end
			end
		end -- close nohost
		end -- close if sublang

		if multicat ~= '' and multicat ~= nil then -- e.g. [[:Κατηγορία:Λέξεις με επίθημα -ation (αγγλικά)]]
			text = text .. ' [[:Κατηγορία:' .. catword .. ' ' .. affix .. '|«««]]' 	
		end
		
		-- cat b 
		if other_cat ~= '' and other_cat ~= nil then
			if languages[lang_iso].sublang == true then
			if nohost == '1' 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 = '[[Κατηγορία:' .. catword .. ' ' .. other_cat .. ' (' .. lang_name .. ')|' .. autosort .. ']]' .. "\n"
				else
				cat = '[[Κατηγορία:' .. catword .. ' ' .. other_cat .. ' (' .. lang_name .. ')|' .. sort .. ']]' .. "\n"
				end		
			else -- WITH host	
				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 = '[[Κατηγορία:' .. catword .. ' ' .. other_cat .. ' (' .. lang_name .. ')|' .. autosort .. ']]' .. "\n"
				.. '[[Κατηγορία:' .. catword .. ' ' .. affix  .. ' (' .. languages[lang_iso].host_name .. ')|' .. languages[lang_iso].key .. ']]' ..  "\n"
				else
				cat = '[[Κατηγορία:' .. catword .. ' ' .. other_cat .. ' (' .. lang_name .. ')|' .. sort .. ']]' .. "\n"
				.. '[[Κατηγορία:' .. catword .. ' ' .. affix .. ' (' .. languages[lang_iso].host_name .. ')|' .. languages[lang_iso].key .. ']]' ..  "\n"
				end
			end -- close nohost
			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 = '[[Κατηγορία:' .. catword .. ' ' .. other_cat .. ' (' .. lang_name .. ')|' .. autosort .. ']]' .. "\n"		
				else
				cat = '[[Κατηγορία:' .. catword .. ' ' .. other_cat .. ' (' .. lang_name .. ')|' .. sort .. ']]' .. "\n"
				end
			end -- close sublang
		else -- (no other_cat) -- check [[:Κατηγορία:Λέξεις με ένθημα -ο- (ελληνιστική κοινή)]]
			if languages[lang_iso].sublang == true then
			if nohost == '1' 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"	
				else
				cat = '[[Κατηγορία:Λέξεις ' .. in_cat .. ' (' .. lang_name .. ')|' .. sort .. ']]' ..  "\n"
				end
			else -- WITH host
				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
			end -- close nohost
			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 -- close other_cat


		if multicat ~= '' and multicat ~= nil then -- e.g. [[:Κατηγορία:Λέξεις με επίθημα -ation]] (en, fr)
			cat = cat .. '[[Κατηγορία:' .. catword .. ' ' .. affix .. '|' .. languages[lang_iso].key .. ']]' .. "\n"		
		end
		if cat_plus ~= '' and cat_plus ~= nil then -- [[:Κατηγορία:Λέξεις με επίθημα -τζή (νέα ελληνικά)]]
			cat = cat .. '[[Κατηγορία:' .. catword .. ' ' .. cat_plus .. ' (' .. lang_name .. ')| ]]' .. "\n" -- sort top
		end
		if multisense ~= '' and multisense ~= nil then
			cat = cat .. '[[Κατηγορία:' ..  catword_multisense .. ' (' .. lang_name .. ')|' .. multisense .. ']]' .. "\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_lemma == '' or other_lemma == 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_lemma .. "#" .. languages[lang_iso].link .. '|<b>' .. other_lemma .. '</b>]]'
			else
			text = text .. ' » [[' .. other_lemma .. "#" .. languages[lang_iso].link .. '|<b>' .. show_other .. '</b>]]'
			end
		end
			
		-- cat b
			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


		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_lemma == '' or other_lemma == 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_lemma .. "#" .. languages[lang_iso].link .. '|<b>' .. other_lemma .. '</b>]]'
			else
			text = text .. ' » [[' .. other_lemma .. "#" .. languages[lang_iso].link .. '|<b>' .. show_other .. '</b>]]'
			end
		end
		text = text .. ' « [[:Κατηγορία:Λέξεις κατά υποκοριστικό επίθημα (' .. lang_name .. ')|Λέξεις ' .. 'κατά υποκοριστικό επίθημα' .. ']]'
			
		-- cat b -- [[:Κατηγορία:Λέξεις με υποκοριστικά επίθημα -άκι (νέα ελληνικά)]]
			if other_cat ~= '' and other_cat ~= nil then
			if languages[lang_iso].sublang == true then
			if nohost == '1' 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"	
				else
				cat = '[[Κατηγορία:Λέξεις ' .. in_cat .. ' (' .. lang_name .. ')|' .. sort .. ']]' ..  "\n"
				end
			else -- WITH host	
				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
			end -- close nohost
			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)   PLUS param nohost e.g. [[:Κατηγορία:Λέξεις με υποκοριστικό επίθημα -ίον (καθαρεύουσα)]] There is no -ιον for el. 
			if languages[lang_iso].sublang == true then
			if nohost == '1' 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	
				else
				cat = '[[Κατηγορία:' .. cat_affix .. ' κατά επίθημα (' .. lang_name .. ')|' .. sort .. ']]' ..  "\n"
				.. '[[Κατηγορία:Λέξεις με επίθημα ' .. affix .. ' (' .. lang_name .. ')| ' .. 'υποκοριστικα' .. ']]' ..  "\n" -- sort top
				end
			else -- WITH host
				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	
			end -- close nohost
			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

		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. [[:Κατηγορία:Λέξεις με μεγεθυντικό επίθημα -άκλα (νέα ελληνικά)]]  PLUS param nohost
		text = text_lang .. ' » [[:Κατηγορία:Ετυμολογία (' .. lang_name .. ')|Ετυμολογία]]'
		.. ' » [[:Κατηγορία:Μορφολογία (' .. lang_name .. ')|Μορφολογία]]'
		.. ' » [[:Κατηγορία:Προσφύματα (' .. lang_name .. ')|Προσφύματα]]'
		.. ' » [[:Κατηγορία:Επιθήματα (' .. lang_name .. ')|Επιθήματα]]'
		.. ' » [[:Κατηγορία:Μεγεθυντικά επιθήματα (' .. lang_name .. ')|' .. 'μεγεθυντικά' .. ']]'
		.. ' » [[:Κατηγορία:Λέξεις με επίθημα ' .. affix .. ' (' .. lang_name .. ')|με επίθημα]]'
		if other_lemma == '' or other_lemma == 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_lemma .. "#" .. languages[lang_iso].link .. '|<b>' .. other_lemma .. '</b>]]'
			else
			text = text .. ' » [[' .. other_lemma .. "#" .. languages[lang_iso].link .. '|<b>' .. show_other .. '</b>]]'
			end
		end
		text = text .. ' « [[:Κατηγορία:Λέξεις κατά μεγεθυντικό επίθημα (' .. lang_name .. ')|Λέξεις ' .. 'κατά μεγεθυντικό επίθημα' .. ']]'
			
		-- cat b
			if other_cat ~= '' and other_cat ~= nil then
			if languages[lang_iso].sublang == true then
			if nohost == '1' 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"	
				else
				cat = '[[Κατηγορία:Λέξεις ' .. in_cat .. ' (' .. lang_name .. ')|' .. sort .. ']]' ..  "\n"
				end
			else -- WITH host	
				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
			end -- close nohost
			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 nohost == '1' 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	
				else
				cat = '[[Κατηγορία:' .. cat_affix .. ' κατά επίθημα (' .. lang_name .. ')|' .. sort .. ']]' ..  "\n"
				.. '[[Κατηγορία:Λέξεις με επίθημα ' .. affix .. ' (' .. lang_name .. ')| ' .. 'μεγεθυντικα' .. ']]' ..  "\n" -- sort top
				end
			else -- WITH host	
				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
			end -- close nohost
			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

		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 = 'Ανδρικά ονόματα' catwordkey = 'α' end
	if mw.ustring.find(cat_title, "Ανδρικά επώνυμα με πρόθημα") or mw.ustring.find(cat_title, "Ανδρικά επώνυμα κατά πρόθημα") then catword = 'Ανδρικά επώνυμα' catwordkey = 'α' end
	if mw.ustring.find(cat_title, "Γυναικεία ονόματα με πρόθημα") or mw.ustring.find(cat_title, "Γυναικεία ονόματα κατά πρόθημα")  then catword = 'Γυναικεία ονόματα' catwordkey = 'γ' end
	if mw.ustring.find(cat_title, "Γυναικεία επώνυμα με πρόθημα") or mw.ustring.find(cat_title, "Γυναικεία επώνυμα κατά πρόθημα")  then catword = 'Γυναικεία επώνυμα' catwordkey = 'γ' end
	if mw.ustring.find(cat_title, "Ονόματα κοινού γένους με πρόθημα") or mw.ustring.find(cat_title, "Ονόματα κοινού γένους κατά πρόθημα")  then catword = 'Ονόματα κοινού γένους' catwordkey = 'κ' end
	if mw.ustring.find(cat_title, "Επώνυμα κοινού γένους με πρόθημα") or mw.ustring.find(cat_title, "Επώνυμα κοινού γένους κατά πρόθημα")  then catword = 'Επώνυμα κοινού γένους' catwordkey = 'κ' end
	if mw.ustring.find(cat_title, "Τοπωνύμια με πρόθημα") or mw.ustring.find(cat_title, "Τοπωνύμια κατά πρόθημα")  then catword = 'Τοπωνύμια' catwordkey = 'τ' 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_lemma ~= '' and other_lemma ~= nil then text = text .. other_lemma 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_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

		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_lemma == '' or other_lemma == 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_lemma .. "#" .. languages[lang_iso].link .. '|<b>' .. other_lemma .. '</b>]]'
			else
			text = text .. ' » [[' .. other_lemma .. "#" .. 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 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 .. ')|' .. catwordkey .. ']]' ..  "\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 .. ')|' .. catwordkey .. ']]' ..  "\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 .. ')|' .. catwordkey .. ']]' ..  "\n"
				.. '[[Κατηγορία:' .. catword .. ' κατά πρόθημα (' .. lang_name .. ')|' .. sort .. ']]' ..  "\n"
				end
			end


		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 = 'Ανδρικά ονόματα' catwordkey = 'α' end
	if mw.ustring.find(cat_title, "Ανδρικά επώνυμα με επίθημα") or mw.ustring.find(cat_title, "Ανδρικά επώνυμα κατά επίθημα") then catword = 'Ανδρικά επώνυμα' catwordkey = 'α' end
	if mw.ustring.find(cat_title, "Γυναικεία ονόματα με επίθημα") or mw.ustring.find(cat_title, "Γυναικεία ονόματα κατά επίθημα")  then catword = 'Γυναικεία ονόματα' catwordkey = 'γ' end
	if mw.ustring.find(cat_title, "Γυναικεία επώνυμα με επίθημα") or mw.ustring.find(cat_title, "Γυναικεία επώνυμα κατά επίθημα")  then catword = 'Γυναικεία επώνυμα' catwordkey = 'γ' end
	if mw.ustring.find(cat_title, "Ονόματα κοινού γένους με επίθημα") or mw.ustring.find(cat_title, "Ονόματα κοινού γένους κατά επίθημα")  then catword = 'Ονόματα κοινού γένους' catwordkey = 'κ' end
	if mw.ustring.find(cat_title, "Επώνυμα κοινού γένους με επίθημα") or mw.ustring.find(cat_title, "Επώνυμα κοινού γένους κατά επίθημα")  then catword = 'Επώνυμα κοινού γένους' catwordkey = 'κ' end
	if mw.ustring.find(cat_title, "Τοπωνύμια με επίθημα") or mw.ustring.find(cat_title, "Τοπωνύμια κατά επίθημα")  then catword = 'Τοπωνύμια' catwordkey = 'τ' 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_lemma ~= '' and other_lemma ~= nil then text = text .. other_lemma 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_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

		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_lemma == '' or other_lemma == 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_lemma .. "#" .. languages[lang_iso].link .. '|<b>' .. other_lemma .. '</b>]]'
			else
			text = text .. ' » [[' .. other_lemma .. "#" .. 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 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 .. ')|' .. catwordkey .. ']]' ..  "\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 .. ')|' .. catwordkey .. ']]' ..  "\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 .. ')|' .. catwordkey .. ']]' ..  "\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 .. ')|' .. catwordkey .. ']]' ..  "\n"
				.. '[[Κατηγορία:' .. catword .. ' κατά επίθημα (' .. lang_name .. ')|' .. sort .. ']]' ..  "\n"
				end
			end


			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 e.g. από τα αγγλικά
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:από]]
* λέξεις που έχουν α-π-ο όπως «απόλυτα»
-- PROBLEMATIC: [[:Κατηγορία:Προέλευση λέξεων από τουρκικές γλώσσες (νέα ελληνικά)]] MUST NOT and not mw.ustring.find(cat_title, 'από το')

]=]--

-- ++ -- NOT Λέξεις από: βλ. [[Πρότυπο:από]]  
-- PROBLEMATIC: [[:Κατηγορία:Προέλευση λέξεων από τουρκικές γλώσσες (νέα ελληνικά)]] MUST NOT and not mw.ustring.find(cat_title, 'από το')
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, 'πρόθημα από') 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 -------------------------
-- PROBLEMATIC: [[:Κατηγορία:Προέλευση λέξεων από τουρκικές γλώσσες (νέα ελληνικά)]] MUST NOT and not mw.ustring.find(cat_title, 'από το')
-- 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, 'πρόθημα από') 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
				if write_cat == 'Παραγωγή λέξεων' then -- repeat descr as in [[Module:auto cat/data]]
					text = text .. "<br>" 
					.. '&nbsp;  &nbsp;  Δημιουργία νέας λέξης με βάση μια άλλη που προέρχεται από διαφορετική περίοδο ή από διαφορετική γλώσσα.'
				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 .. '|«««]]'
				if languages[lang_iso].iso == languages[lang_iso2].iso then --  [[:Κατηγορία:Προέλευση λέξεων από τα νέα ελληνικά (νέα ελληνικά)]]
					text = text
				else text = text
				.. ' « [[:Κατηγορία:Ετυμολογία (' .. languages[lang_iso2].name ..  ')|<i>Ετυμολογία</i>]]'
				.. ' « [[:Κατηγορία:' .. languages[lang_iso2].cat ..  '|<i>' .. mw.getContentLanguage():ucfirst(languages[lang_iso2].name) .. '</i>]]'
				end
				if write_cat == 'Προέλευση λέξεων' then
					text_plus =  descr_der .. "<br>" 
					-- e.g. [[:Κατηγορία:Προέλευση λέξεων από τα οθωμανικά τουρκικά (νέα ελληνικά)]]
--					.. '&nbsp;  &nbsp;  Ειδικότερα, περιλαμβάνει ' .. '[[:Κατηγορία:Κληρονομημένες λέξεις ' .. apota_text .. ' (' .. lang_name .. ')|κληρονομημένες λέξεις]]'
--					.. ' και ' .. '[[:Κατηγορία:Δανεισμοί ' .. apota_text .. ' (' .. lang_name .. ')|δανεισμούς]].'
				end
				if write_cat == 'Παραγωγή λέξεων' then -- repeat descr as in [[Module:auto cat/data]]
					text = text .. "<br>" 
					.. '&nbsp;  &nbsp;  Δημιουργία νέας λέξης με βάση μια άλλη που προέρχεται από διαφορετική περίοδο ή από διαφορετική γλώσσα.'
				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 .. ']]'
				.. ' [[:Κατηγορία:' .. cat_title .. '|«««]]'
				if languages[lang_iso].iso == languages[lang_iso2].iso then -- Κατηγορία:Σημασιολογικά δάνεια από τα νέα ελληνικά (νέα ελληνικά)
					text = text
				else text = text
				.. ' « [[:Κατηγορία:Ετυμολογία (' .. languages[lang_iso2].name ..  ')|<i>Ετυμολογία</i>]]'
				.. ' « [[:Κατηγορία:' .. languages[lang_iso2].cat ..  '|<i>' .. mw.getContentLanguage():ucfirst(languages[lang_iso2].name) .. '</i>]]'
				end
-- 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
				.. ' [[:Κατηγορία:' .. cat_title .. '|«««]]'
				if languages[lang_iso].iso == languages[lang_iso2].iso then -- Κατηγορία:Προέλευση λέξεων - επώνυμα από τα νέα ελληνικά (νέα ελληνικά)
					text = text
				else text = text
				.. ' « [[:Κατηγορία:Ετυμολογία (' .. languages[lang_iso2].name ..  ')|<i>Ετυμολογία</i>]]'
				.. ' « [[:Κατηγορία:' .. languages[lang_iso2].cat ..  '|<i>' .. mw.getContentLanguage():ucfirst(languages[lang_iso2].name) .. '</i>]]'
				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"
				-- [[:Κατηγορία:Προέλευση λέξεων - ονόματα από τα μεσαιωνικά λατινικά (ελληνιστική κοινή)]]
				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
	local autosort = ''
	local sort = args[1] or args['sort'] or '' 

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, 'πρόθημα από') 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)
			-- FOR TEXT for sense like [[:Κατηγορία:Προέλευση λέξεων από την πρωτοϊνδοευρωπαϊκή ρίζα *sekʷ-, λέω]]
			-- like [[:Κατηγορία:Προέλευση λέξεων από την πρωτοϊνδοευρωπαϊκή ρίζα *sekʷ-, λέω (αρχαία ελληνικά)]]
			-- control (without lemma=) [[:Κατηγορία:Προέλευση λέξεων από την πρωτοϊνδοευρωπαϊκή ρίζα *gʷelH- (αρχαία ελληνικά)]]
			local other_lemma = args['lemma'] or args['λήμμα'] or '' -- link to different lemma (similar to args at affixes)
			if (args['lemma'] ~= '' and args['lemma'] ~= nil) or (args['λήμμα'] ~= '' and args['λήμμα'] ~= nil)
			then
				root_word_text = other_lemma
			else
				root_word_text = root_word
			end
		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_text .. ']]'
				.. ' « [[:Κατηγορία:Ετυμολογία (' .. 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 sort == '' or sort == nil then
						if (args['lemma'] ~= '' and args['lemma'] ~= nil) or (args['λήμμα'] ~= '' and args['λήμμα'] ~= nil)
						then	
						cat = cat .. '[[Κατηγορία:' .. write_cat .. ' ' .. apota_text ..  ' ρίζα ' .. other_lemma .. '| ]]' .. "\n" -- sort top
						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 .. ']]' .. "\n"
							end
						end
					else -- with sort=
						if (args['lemma'] ~= '' and args['lemma'] ~= nil) or (args['λήμμα'] ~= '' and args['λήμμα'] ~= nil)
						then	
						cat = cat .. '[[Κατηγορία:' .. write_cat .. ' ' .. apota_text ..  ' ρίζα ' .. other_lemma .. '| ]]' .. "\n" -- sort top
						else			
							if root_word:sub(1, 1) == '*' then
						cat = '[[Κατηγορία:' .. write_cat .. ' ' .. apota_text .. ' - ρίζες|' .. sort .. ']]' .. "\n" -- sort without asterisc: start from 2nd character 
							else
						cat = '[[Κατηγορία:' .. write_cat .. ' ' .. apota_text .. ' - ρίζες|' .. sort .. ']]' .. "\n"
							end
						end
					end -- close sort
					cat = cat .. '[[Κατηγορία:' .. write_cat .. ' ' .. apota_text .. ' ' .. languages[lang_iso2].host_apota .. '|' .. languages[lang_iso2].apota_key .. ']]' .. "\n"
				else -- no sublang
					if sort == '' or sort == nil then --  [[:Κατηγορία:Προέλευση λέξεων από την πρωτοϊνδοευρωπαϊκή ρίζα *(s)teyg-]]
						-- lemma=*sekʷ- for sense [[:Κατηγορία:Προέλευση λέξεων από την πρωτοϊνδοευρωπαϊκή ρίζα *sekʷ-, λέω]]
						if (args['lemma'] ~= '' and args['lemma'] ~= nil) or (args['λήμμα'] ~= '' and args['λήμμα'] ~= nil)
						then	
						cat = cat .. '[[Κατηγορία:' .. write_cat .. ' ' .. apota_text ..  ' ρίζα ' .. other_lemma .. '| ]]' .. "\n" -- sort top
						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 .. ']]' .. "\n"
							end
						end
					else -- with sort=
						if (args['lemma'] ~= '' and args['lemma'] ~= nil) or (args['λήμμα'] ~= '' and args['λήμμα'] ~= nil)
						then	
						cat = cat .. '[[Κατηγορία:' .. write_cat .. ' ' .. apota_text ..  ' ρίζα ' .. other_lemma .. '|' .. sort .. ']]' .. "\n"
						else		
							if root_word:sub(1, 1) == '*' then
						cat = '[[Κατηγορία:' .. write_cat .. ' ' .. apota_text .. ' - ρίζες|' .. sort .. ']]' .. "\n" -- sort without asterisc: start from 2nd character 
							else
						cat = '[[Κατηγορία:' .. write_cat .. ' ' .. apota_text .. ' - ρίζες|' .. sort .. ']]' .. "\n"
							end
						end
					end -- close sort
				end -- close sublang
				
			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_text .. ']]'
				.. ' [[:Κατηγορία:' .. cat_title .. '|«««]]'
				if languages[lang_iso].iso == languages[lang_iso2].iso then -- Κατηγορία:Προέλευση λέξεων από την πρωτοϊνδοευρωπαϊκή ρίζα *deḱ- (πρωτοϊνδοευρωπαϊκή)
					text = text
				else text = text
				.. ' « [[:Κατηγορία:Ετυμολογία (' .. languages[lang_iso2].name ..  ')|<i>Ετυμολογία</i>]]'
				.. ' « [[:Κατηγορία:' .. languages[lang_iso2].cat ..  '|<i>' .. mw.getContentLanguage():ucfirst(languages[lang_iso2].name) .. '</i>]]'
				end
-- ## need sort here ## need, sense lemma=
				-- 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
					-- [[:Κατηγορία:Προέλευση λέξεων από την πρωτοϊνδοευρωπαϊκή ρίζα *(s)teyg- (αρχαία ελληνικά)]]
					if sort == '' or sort == nil then
						-- lemma=*sekʷ- for sense [[:Κατηγορία:Προέλευση λέξεων από την πρωτοϊνδοευρωπαϊκή ρίζα *sekʷ-, λέω (αρχαία ελληνικά)]]
						if (args['lemma'] ~= '' and args['lemma'] ~= nil) or (args['λήμμα'] ~= '' and args['λήμμα'] ~= nil)
						then	
						cat = cat .. '[[Κατηγορία:' .. write_cat .. ' ' .. apota_text ..  ' ρίζα ' .. other_lemma .. ' (' .. languages[lang_iso].name  .. ')| ]]' .. "\n" -- sort top
						.. '[[Κατηγορία:' .. write_cat .. ' ' .. apota_text ..  ' ρίζα ' .. root_word .. '|' .. languages[lang_iso].key .. ']]' .. "\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
						
					else -- with sort
						if (args['lemma'] ~= '' and args['lemma'] ~= nil) or (args['λήμμα'] ~= '' and args['λήμμα'] ~= nil)
						then	
						cat = cat .. '[[Κατηγορία:' .. write_cat .. ' ' .. apota_text ..  ' ρίζα ' .. other_lemma .. ' (' .. languages[lang_iso].name  .. ')| ]]' .. "\n" -- sort top
						.. '[[Κατηγορία:' .. write_cat .. ' ' .. apota_text ..  ' ρίζα ' .. root_word .. '|' .. languages[lang_iso].key .. ']]' .. "\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  .. ')|' .. sort .. ']]' .. "\n" -- sort without asterisc: start from 2nd character 
							else
						cat = cat .. '[[Κατηγορία:' .. write_cat .. ' ' .. apota_text .. ' - ρίζες (' .. languages[lang_iso].name  .. ')|' .. sort .. ']]'
							end
						end
					end -- close sort
				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, 'πρόθημα από') 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, 'πρόθημα από') 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
-- NEED BOTH [[Module:auto cat/data/topokind]] AND [[Module:topos/kind]] with all parents etc
-- 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
---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

-- PROBLEMS with id τοπωνύμιο [[:Κατηγορία:Τοπωνυμίες (αρχαία ελληνικά)]]
-- NOT Τοπωνύμια it clashes with all stadnard rules
-- 2020 July, it works, but I do not want the SAME category as the general
--if mw.ustring.find(cat_title, 'Τοπωνύμια') then toposid = 'τοπωνύμιο' end -- [[Module:topos/kind]] special kind key for auto cat
-- 2021 September
if mw.ustring.find(cat_title, 'Τοπωνυμίες') then toposid = 'τοπωνύμιο' end -- 2021.09.05. works [[:Κατηγορία:Τοπωνυμίες (αρχαία ελληνικά)]]
	-- together with [[Module:auto cat/data/toposkind]] Τοπωνυμίες 
	-- AND [[Module:topos/kind]]
	-- BUT ALSO NEED
if mw.ustring.find(cat_title, 'Τοπωνύμια') then toposid = 'τοπωνύμιο2' end
	-- check [[:Κατηγορία:Τοπωνύμια της Αγκόλας]]

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 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 'της... τάδε χώρας'
--------------------------------------------------------------------------

-- ======by place========= 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 .. ' :: [[:Κατηγορία:' .. cat_title .. '|' .. '<b>ανά τόπο</b>' .. ']]'  -- textit -- says 'ανά τόπο' but has an arrow Κατηγορία:Αεροδρόμια ανά τόπο
			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, 'Τοπωνύμια') 



-- =====ανά είδος by kind========== 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 Κατηγορία 

-- ## ????????? how do I call this thing from inside the functions? I had to rewrite it.
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. e.g. της Ελλάδας
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 .. ' ανά τόπο|ανά τόπο]]' 
-- extra	
			-- it will write nothing for no parent categories like Αεροδρόμια
			-- it should write Κατηγορία: partent της Ρωσίας
			if topos[toposid].parent ~= '' and topos[toposid].parent ~= nil then
				text = text .. ' « [[:Κατηγορία:' .. topos[toposid].parent .. ' ' 
				.. 'της Ρωσίας|' 
				.. topos[toposid].parent .. ' της Ρωσίας]]'
			end	
			
			text = text 
			.. '<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
-- ?? HOW do I write where_text		
			if topos[toposid].parent ~= '' and topos[toposid].parent ~= nil then
				cat = cat .. '[[Κατηγορία:' .. topos[toposid].parent .. ' ' 
				.. 'της Ρωσίας| ]]' ..  "\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 .. ')|ανά τόπο]]' 
-- ?? HOW do I write where_text		
			-- it will write nothing for no parent categories like Αεροδρόμια
			-- it should write Κατηγορία:Θαλάσσιες περιοχές της Ρωσίας (νέα ελληνικά) for [[:Κατηγορία:Θάλασσες της Ρωσίας (νέα ελληνικά)]]
			if topos[toposid].parent ~= '' and topos[toposid].parent ~= nil then
				text = text .. ' « [[:Κατηγορία:' .. topos[toposid].parent .. ' ' 
				.. 'της Ρωσίας (' .. lang_name .. ')|' 
				.. topos[toposid].parent .. ' της Ρωσίας]]'
				.. '  [[:Κατηγορία:' .. topos[toposid].parent .. ' της Ρωσίας|«««]]'
			end	
			
			text = text
			.. '<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
-- ?? HOW do I write where_text		
			if topos[toposid].parent ~= '' and topos[toposid].parent ~= nil then
				cat = cat .. '[[Κατηγορία:' .. topos[toposid].parent .. ' ' 
				.. 'της Ρωσίας (' .. lang_name .. ')| ]]' ..  "\n" -- sort top
			end		
		end -- close parenthesis


else -- NOT RUSSIA

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)
-- mode a
		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
-- ?? HOW do I write where_text		
			-- it will write nothing for no parent categories like Αεροδρόμια
			-- it should write Κατηγορία:Ναοί της Ελλάδας for the Subcateogry [[:Κατηγορία:Αρχαίοι ναοί της Ελλάδας]]
			if topos[toposid].parent ~= '' and topos[toposid].parent ~= nil then
				text = text .. ' « [[:Κατηγορία:' .. topos[toposid].parent .. ' ' 
				.. 'της ' .. mw.ustring.sub(mw.ustring.match(cat_title, " της (.*)"), 1, -1) .. '|' 
				.. topos[toposid].parent .. ' της ' .. mw.ustring.sub(mw.ustring.match(cat_title, " της (.*)"), 1, -1) .. ']]'
			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
-- ?? HOW do I write where_text	[[:Κατηγορία:Αρχαίοι ναοί της Ευρώπης]]
			if topos[toposid].parent ~= '' and topos[toposid].parent ~= nil then
				cat = cat .. '[[Κατηγορία:' .. topos[toposid].parent .. ' ' 
				.. 'της ' .. mw.ustring.sub(mw.ustring.match(cat_title, " της (.*)"), 1, -1) .. '| ]]' ..  "\n" -- sort top
			end

			 -- [[:Κατηγορία:Αεροδρόμια της Ελλάδας]]
			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
-- ?? HOW do I write where_text	[[:Κατηγορία:Αρχαίοι ναοί της Ελλάδας]]
			if topos[toposid].parent ~= '' and topos[toposid].parent ~= nil then
				cat = cat .. '[[Κατηγορία:' .. topos[toposid].parent .. ' ' 
				.. 'της ' .. mw.ustring.sub(mw.ustring.match(cat_title, " της (.*)"), 1, -1) .. '| ]]' ..  "\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 .. ']]' 
			.. ' [[:Κατηγορία:' .. topos[toposid].word_cat .. ' ' .. 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
-- ?? HOW do I write where_text		
			-- it will write nothing for no parent categories like Αεροδρόμια
			-- it should write Κατηγορία:Ναοί της Ελλάδας (νέα ελληνικά) for the Subcateogry [[:Κατηγορία:Αρχαίοι ναοί της Ελλάδας (νέα ελληνικά)]]
			if topos[toposid].parent ~= '' and topos[toposid].parent ~= nil then
				text = text 
				.. ' « [[:Κατηγορία:' .. topos[toposid].parent .. ' ' 
				.. 'της ' .. mw.ustring.sub(mw.ustring.match(cat_title, " της (.*)"), 1, -1)  .. ' (' .. lang_name .. ')|' 
				.. topos[toposid].parent .. ' της ' .. mw.ustring.sub(mw.ustring.match(cat_title, " της (.*)"), 1, -1) .. ']]'
			end			
			
			-- descr
			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
-- ?? HOW do I write where_text		
			if topos[toposid].parent ~= '' and topos[toposid].parent ~= nil then
				cat = cat .. '[[Κατηγορία:' .. topos[toposid].parent .. ' ' 
				.. 'της ' .. mw.ustring.sub(mw.ustring.match(cat_title, " της (.*)"), 1, -1)  .. ' (' .. lang_name .. ')| ]]' ..  "\n" -- sort top
			end		 
				 
			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	
-- ?? HOW do I write where_text		
			if topos[toposid].parent ~= '' and topos[toposid].parent ~= nil then
				cat = cat .. '[[Κατηγορία:' .. topos[toposid].parent .. ' ' 
				.. 'της ' .. mw.ustring.sub(mw.ustring.match(cat_title, " της (.*)"), 1, -1)  .. ' (' .. lang_name .. ')| ]]' ..  "\n" -- sort top
			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)
-- mode a
		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
-- ?? HOW do I write where_text		
			-- it will write nothing for no parent categories like Αεροδρόμια
			-- it should write Κατηγορία: partent του Καναδά
			if topos[toposid].parent ~= '' and topos[toposid].parent ~= nil then
				text = text .. ' « [[:Κατηγορία:' .. topos[toposid].parent .. ' ' 
				.. 'του ' .. mw.ustring.sub(mw.ustring.match(cat_title, " του (.*)"), 1, -1) .. '|' 
				.. topos[toposid].parent .. ' του ' .. mw.ustring.sub(mw.ustring.match(cat_title, " του (.*)"), 1, -1) .. ']]'
			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
-- ?? HOW do I write where_text	[[:Κατηγορία:Αρχιπέλαγα του Ειρηνικού Ωκεανού]]	
			if topos[toposid].parent ~= '' and topos[toposid].parent ~= nil then
				cat = cat .. '[[Κατηγορία:' .. topos[toposid].parent .. ' ' 
				.. 'του ' .. mw.ustring.sub(mw.ustring.match(cat_title, " του (.*)"), 1, -1) .. '| ]]' ..  "\n" -- sort top
			end

			 -- [[:Κατηγορία:Πόλεις του Καναδά]]
			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
-- ?? HOW do I write where_text		
			if topos[toposid].parent ~= '' and topos[toposid].parent ~= nil then
				cat = cat .. '[[Κατηγορία:' .. topos[toposid].parent .. ' ' 
				.. 'του ' .. mw.ustring.sub(mw.ustring.match(cat_title, " του (.*)"), 1, -1) .. '| ]]' ..  "\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 .. ']]'  -- [[:Κατηγορία:Τοπωνύμια του Καναδά (νέα ελληνικά)]]
			.. ' [[:Κατηγορία:' .. topos[toposid].word_cat .. ' ' .. 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
-- ?? HOW do I write where_text		
			-- it will write nothing for no parent categories like Αεροδρόμια
			-- it should write Κατηγορία: parent του Καναδά
			if topos[toposid].parent ~= '' and topos[toposid].parent ~= nil then
				text = text .. ' « [[:Κατηγορία:' .. topos[toposid].parent .. ' ' 
				.. 'του ' .. mw.ustring.sub(mw.ustring.match(cat_title, " του (.*)"), 1, -1)  .. ' (' .. lang_name .. ')|' 
				.. topos[toposid].parent .. ' του ' .. mw.ustring.sub(mw.ustring.match(cat_title, " του (.*)"), 1, -1) .. ']]'
			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 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
-- ?? HOW do I write where_text		
			if topos[toposid].parent ~= '' and topos[toposid].parent ~= nil then
				cat = cat .. '[[Κατηγορία:' .. topos[toposid].parent .. ' ' 
				.. 'του ' .. mw.ustring.sub(mw.ustring.match(cat_title, " του (.*)"), 1, -1)  .. ' (' .. lang_name .. ')| ]]' ..  "\n" -- sort top
			end				 
				 
			else -- [[:Κατηγορία:Πόλεις του Καναδά (νέα ελληνικά)]]
				cat = cat .. '[[Κατηγορία:' .. topos[toposid].word_cat .. ' ' .. where[whereid2].word_cat .. '|' .. languages[lang_iso].key .. ']]' ..  "\n"
				 end
-- ?? HOW do I write where_text		
			if topos[toposid].parent ~= '' and topos[toposid].parent ~= nil then
				cat = cat .. '[[Κατηγορία:' .. topos[toposid].parent .. ' ' 
				.. 'του ' .. mw.ustring.sub(mw.ustring.match(cat_title, " του (.*)"), 1, -1)  .. ' (' .. lang_name .. ')| ]]' ..  "\n" -- sort top
			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)

-- mode a
		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
-- ?? HOW do I write where_text		
			-- it will write nothing for no parent categories like Αεροδρόμια
			-- it should write Κατηγορία: parent των ΗΠΑ
			if topos[toposid].parent ~= '' and topos[toposid].parent ~= nil then
				text = text .. ' « [[:Κατηγορία:' .. topos[toposid].parent .. ' ' 
				.. 'των ' .. mw.ustring.sub(mw.ustring.match(cat_title, " των (.*)"), 1, -1) .. '|' 
				.. topos[toposid].parent .. ' των ' .. mw.ustring.sub(mw.ustring.match(cat_title, " των (.*)"), 1, -1) .. ']]'
			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
-- ?? HOW do I write where_text		
			if topos[toposid].parent ~= '' and topos[toposid].parent ~= nil then
				cat = cat .. '[[Κατηγορία:' .. topos[toposid].parent .. ' ' 
				.. 'των ' .. mw.ustring.sub(mw.ustring.match(cat_title, " των (.*)"), 1, -1) .. '| ]]' ..  "\n" -- sort top
			end

			 -- [[:Κατηγορία:Αεροδρόμια των ΗΠΑ]]
			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
-- ?? HOW do I write where_text		
			if topos[toposid].parent ~= '' and topos[toposid].parent ~= nil then
				cat = cat .. '[[Κατηγορία:' .. topos[toposid].parent .. ' ' 
				.. 'των ' .. mw.ustring.sub(mw.ustring.match(cat_title, " των (.*)"), 1, -1) .. '| ]]' ..  "\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 .. ']]' -- [[:Κατηγορία:Αεροδρόμια των ΗΠΑ (νέα ελληνικά)]]
			.. ' [[:Κατηγορία:' .. topos[toposid].word_cat .. ' ' .. 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
-- ?? HOW do I write where_text		
			-- it will write nothing for no parent categories like Αεροδρόμια
			-- it should write Κατηγορία: parent των ΗΠΑ
			if topos[toposid].parent ~= '' and topos[toposid].parent ~= nil then
				text = text .. ' « [[:Κατηγορία:' .. topos[toposid].parent .. ' ' 
				.. 'των ' .. mw.ustring.sub(mw.ustring.match(cat_title, " των (.*)"), 1, -1)  .. ' (' .. lang_name .. ')|' 
				.. topos[toposid].parent .. ' των ' .. mw.ustring.sub(mw.ustring.match(cat_title, " των (.*)"), 1, -1) .. ']]'
			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 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
-- ?? HOW do I write where_text		
			if topos[toposid].parent ~= '' and topos[toposid].parent ~= nil then
				cat = cat .. '[[Κατηγορία:' .. topos[toposid].parent .. ' ' 
				.. 'των ' .. mw.ustring.sub(mw.ustring.match(cat_title, " των (.*)"), 1, -1)  .. ' (' .. lang_name .. ')| ]]' ..  "\n" -- sort top
			end		
			
			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	
-- ?? HOW do I write where_text		
			if topos[toposid].parent ~= '' and topos[toposid].parent ~= nil then
				cat = cat .. '[[Κατηγορία:' .. topos[toposid].parent .. ' ' 
				.. 'των ' .. mw.ustring.sub(mw.ustring.match(cat_title, " των (.*)"), 1, -1)  .. ' (' .. lang_name .. ')| ]]' ..  "\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 .. ' (' .. 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


end -- close FREE text which is at the top


-- FAILED: Lua error, template loop detected
-- add title, as though it was something else
--  "&#123;&#123;auto cat|free|iso=grc|text=" .. different_lemma .. "&#125;&#125;"
-- TEST: use |lemma=  & |cat=for categories semi-manual which we do not wish to include at data. e.g. [[:Κατηγορία:Κύρια ονόματα 1ης κλίσης αρσενικά χωρίς ενικό (αρχαία ελληνικά)]]
	different_lemma = args['lemma2'] or '' -- read a different title - link to different lemma but show the title as it is
		-- similar used as other_lemma at affixes
--		if different_lemma ~= '' and different_lemma ~= nil then
		if args['lemma2'] ~= '' and args['lemma2'] ~= nil then			
			page_text = args['lemma2']
		end
--			text =  "\n" .. frame:expandTemplate{ title = 'auto cat', args = {'differect_lemma'} } .. "\n"	
--			text =  "\n" .. frame:expandTemplate{ title = 'auto cat', args = {'lemma2'} } .. "\n"	-- template loop detected

-- https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#frame:expandTemplate
--			if cat_title == 'Προέλευση λέξεων' then
--				text_plus =  "\n" .. frame:expandTemplate{ title = 'δείτε', args = {':Κατηγορία:Δανεισμοί'} } .. "\n"
--				.. descr_der
--			end

--			if page_text == 'Κύρια ονόματα 1ης κλίσης αρσενικά χωρίς ενικό (αρχαία ελληνικά)' then
--				text =  frame:expandTemplate{ title = 'auto cat', args = { text = 'κατη', cat = 'Σύνδεσμοι' } } .. "\n"
--				..	frame:expandTemplate{ title = 'δείτε', args = {':Κατηγορία:Μεταφραστικά δάνεια ' .. apota_text} } .. "\n"
--			end	

	different_cat = args['cat2'] or args['κατ2'] or '' -- Category for different lemma
		-- similar used as other_cat at affixes
		if args['cat2'] ~= '' and args['cat2'] ~= nil then
			cat = "[[Κατηγορία:" .. different_cat .. "]]"
		end
-- ========================================== 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]]'
	elseif cat == '-' then
		output = text
	else
		output = text .. cat
	end

return output
end

return export