text:
Citations:porzelky

 * 1985, Mennonitische Geschichtsblätter, issues 42-45, page 152:
 * (the English text by itself is repeated in 1980, Mennonite Images: Historical Cultural, and Literary Essays, page 250:)
 * Oh my son  Oh mein Sohn,
 * my heart is heavy,  mein Herz ist schwer,
 * thick as glums.  dick wie Glums.
 * If you come home  Wenn du nach Hause kommst,
 * it will rise, light and sweet.  wird es sich leicht und froh erheben.
 * I will make you porzelky for breakfast  Ich werde dir Porzelky zum Frühstück machen
 * and we will celebrate the New Year

 * 1987, History of the Whitewater Mennonite Church, Boissevain, Manitoba, 1927-1987, page 89:
 * Christmas, New Years Day, Epiphany, Good Friday, Easter, Ascension Day, Pentecost and Thanksgiving were observed with a church service, family gatherings and festive food. Porzelky, a yeast dough raising fritter has become synonymous with New Years Day

 * 1989, Helen Grace Lescheid, Footprints of Compassion, page 81:
 * Throughout the day people stop to chat and eat ethnic foods; not only traditional Russian Mennonite foods of verenike, and porzelky, but delicacies from at least seven or eight other Mennonite ethnic groups are offered.

 * 2011 September 9, The Abbotsford News, page 20:
 * and so many porzelky (raisin dumplings) that it took 800 pounds of flour and 400 pounds of raisins to make them

 * Mention, but is useful evidence of geographic spread:

 * 2004, Anne Konrad, And in Their Silent Beauty Speak: A Mennonite Family, page 30:
 * The raisin-filled yeast fritters called Oliebollen in Holland were named Porzelky in Russia,

title: Citations:porzelky


text: హనుమంతుఁడు

license: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/4.0/

title: హనుమంతుఁడు


text: రోగం

title: రోగం


text: హిరణ్యగర్భం

title: హిరణ్యగర్భం


text: హస్తం

title: హస్తం


text: హస్తాక్షరం

title: హస్తాక్షరం


text: హిమం

title: హిమం


text:
deadapt

Verb

 * 1)  To adapt to a previous form

Related terms

 * deadaptation

title: deadapt


text: deadapts

title: deadapts


text: deadapting

title: deadapting


text: deadapted

title: deadapted


text: హాటకం

title: హాటకం


text:
minutã

Etymology
Ultimately borrowed from, through the intermediate of another language. Cf. also 🇨🇬.

Noun

 * 1) minute (unit of time)

title: minutã


text: de-adapt

title: de-adapt


text: de-adapts

title: de-adapts


text: de-adapting

title: de-adapting


text: de-adapted

title: de-adapted


text: హితోపదేశం

title: హితోపదేశం


text: re-adapt

title: re-adapt


text: re-adapts

title: re-adapts


text: re-adapting

title: re-adapting


text: re-adapted

title: re-adapted


text:
కంజము

Noun

 * 1) Any aquatic product.
 * 2) A lotus.

title: కంజము


text:
minutedz

Etymology
From, or less likely a (with the Aromanian suffix ). Compare regional/obsolete 🇨🇬, 🇨🇬, 🇨🇬, 🇨🇬,.

Verb

 * 1) to thin (down)

title: minutedz


text: porzelky

title: porzelky


text:
portzelky

Etymology
From or related to Prussian (see Porzelchen, porzelchen), diminutive of  (whence German ).

Noun

 * 1) A Mennonite dish of raisin fritters — fried, roughly ball-shaped pieces of dough with raisins in them — eaten especially on New Year's Day.

title: portzelky


text:
reventilate

Verb

 * 1) to ventilate again
 * If the chest does not rise, or if only one side of the chest rises, remove the airway, reventilate the patient, and reinsert the airway.

title: reventilate


text: reventilates

title: reventilates


text: reventilating

title: reventilating


text: reventilated

title: reventilated


text:
suptsãri

Etymology
From. Compare Daco-Romanian subțire.

Adjective

 * 1) thin

title: suptsãri


text: re-ventilate

title: re-ventilate


text: re-ventilates

title: re-ventilates


text: re-ventilating

title: re-ventilating


text: re-ventilated

title: re-ventilated


text: digitilize

title: digitilize


text: digitilizes

title: digitilizes


text: digitilizing

title: digitilizing


text: digitilized

title: digitilized


text:
suptsãredz

Etymology
From, or possibly from (with the Aromanian suffix ), from. Compare 🇨🇬.

Verb

 * 1) to make thinner, thin (down), refine, make finer

title: suptsãredz


text:
Template:frr-Hallig-conj-table2

Conjugation of

title: Template:frr-Hallig-conj-table2


text:
deallergize

Verb

 * 1)  To reduce a person or animal's allergic reaction to some substance; to desensitize.

title: deallergize


text: deallergizes

title: deallergizes


text: deallergizing

title: deallergizing


text: deallergized

title: deallergized


text: de-allergize

title: de-allergize


text: de-allergizes

title: de-allergizes


text: de-allergizing

title: de-allergizing


text: de-allergized

title: de-allergized


text:
shop-lift

Verb

 * The artist starts a relationship with the owner of an art supply shop where she shop-lifts.
 * The artist starts a relationship with the owner of an art supply shop where she shop-lifts.

title: shop-lift


text: shop-lifts

title: shop-lifts


text:
tearã

Etymology
From, with a unique ultimate semantic development, arrived at from the analogy of skimming the thickened layer off the top of unhomogenized cream to make the product. Compare regional Romanian, which preserved the original sense.

Noun

 * 1) kaymak, a creamy dairy product made in the Balkans, similar to sour cream or clotted cream

title: tearã


text: shop-lifting

title: shop-lifting


text: shop-lifted

title: shop-lifted


text:
oversecrete

Alternative forms

 * over-secrete

Verb

 * 1)  to secrete excessively

title: oversecrete


text: oversecretes

title: oversecretes


text: oversecreting

title: oversecreting


text: oversecreted

title: oversecreted


text:
caimac

Etymology
.

Noun

 * 1) milk skin, lactoderm (a sticky film of coagulated proteins, namely casein, that forms on the surface of heated milk just before reaching the boiling point)
 * 2) cream the part of milk which rises to the top
 * 3) foam that forms when coffee boils
 * 4) kaymak a dairy product similar to clotted cream found in the Balkans, made from skimmed-off milk fat after heating

title: caimac


text: over-secrete

title: over-secrete


text: over-secretes

title: over-secretes


text: over-secreting

title: over-secreting


text: over-secreted

title: over-secreted


text:
natră

Etymology
or.

Noun

 * 1)  warp

Synonyms

 * , (regional)

title: natră


text:
Template:frr-Hallig-conj-table

Conjugation of

title: Template:frr-Hallig-conj-table


text:
maldigest

Verb

 * 1)  To digest poorly or in a less than perfect way.

title: maldigest


text: maldigests

title: maldigests


text: maldigesting

title: maldigesting


text:
maldigested

Adjective

 * 1) Poorly.

title: maldigested


text:
citreoviridin

Noun

 * 1) A particular mycotoxin.

title: citreoviridin


text:
neosolaniol

Noun

 * 1) A particular mycotoxin.

title: neosolaniol


text:
deacetoxyscirpenol

Noun

 * 1) A particular mycotoxin.

title: deacetoxyscirpenol


text:
Template:(/documentation

This template enables you to use the open curly bracket in template parameters.

title: Template:(/documentation


text:
είμεθα

Usage notes

 * The Ancient Greek equivalent is.

title: είμεθα


text: కంటకం

title: కంటకం


text: దాంపత్యం

title: దాంపత్యం


text: దానం

title: దానం


text: దాస్యం

title: దాస్యం


text:
όντας

Etymology
Formed analogically to the accusative singular of the present participle  of the verb  parallel to masculine nouns like  which evolved into γέροντας

Participle

 * : being

Usage notes

 * Similar function with the dated declinable present participle, , , after the Ancient Greek participle.

Participle

 * 1)   (rarely used)

title: όντας


text: దరహాసం

title: దరహాసం


text: దళం

title: దళం


text: కవిత్వం

title: కవిత్వం


text:
Yu'us

Proper noun

 * 1) God

title: Yu'us


text:
gobietno

Etymology
From.

Noun

 * 1) government

title: gobietno


text: దురదృష్టం

title: దురదృష్టం


text:
minagof

Adjective

 * 1) happy
 * 2) fun

title: minagof


text: నిశ్వాసం

title: నిశ్వాసం


text:
taitai

Verb

 * 1) to read
 * 2) to pray

title: taitai


text:
παράθημα

Etymology
or, on the basis of.

Noun

 * 1)  affix
 * 2)  ending, desinence
 * 1)  ending, desinence

title: παράθημα


text: Category:ch:Religion

title: Category:ch:Religion


text: Category:ch:Culture

title: Category:ch:Culture


text: Category:ch:Society

title: Category:ch:Society


text: Category:ch:Mythological creatures

title: Category:ch:Mythological creatures


text:
𡿩

Definitions

 * 1) flow (of a liquid)

title: 𡿩


text: Category:ch:Fantasy

title: Category:ch:Fantasy


text: Category:ch:Fiction

title: Category:ch:Fiction


text: Category:ch:Mythology

title: Category:ch:Mythology


text: Category:yap:Money

title: Category:yap:Money


text: Category:yap:Business

title: Category:yap:Business


text: Category:yap:Society

title: Category:yap:Society


text: Category:yap:All topics

title: Category:yap:All topics


text: Category:yap:List of related-to categories


text: Category:yap:Social sciences

title: Category:yap:Social sciences


text: Category:yap:Sciences

title: Category:yap:Sciences


text: Category:yap:Birds

title: Category:yap:Birds


text: Category:yap:Vertebrates

title: Category:yap:Vertebrates


text: Category:yap:Chordates

title: Category:yap:Chordates


text: Category:yap:Animals

title: Category:yap:Animals


text: Category:yap:Lifeforms

title: Category:yap:Lifeforms


text: Category:yap:Nature

title: Category:yap:Nature


text: Category:chk:Insects

title: Category:chk:Insects


text: Category:chk:Arthropods

title: Category:chk:Arthropods


text:
תפל

Adjective

 * 1) bland, tasteless
 * 2) uninspiring, insipid

title: תפל


text: Category:chk:Economics

title: Category:chk:Economics


text: Category:chk:Social sciences

title: Category:chk:Social sciences


text: Category:Hebrew terms belonging to the root א־מ־ן


text: Category:chk:Containers

title: Category:chk:Containers


text:
Talk:topao

Descendants: topliti = to melt

title: Talk:topao


text: Category:chk:Cookware and bakeware

title: Category:chk:Cookware and bakeware


text: Category:chk:Cooking

title: Category:chk:Cooking


text:
Talk:topel

Etymology

topao = Croatian warm toplý = Czech warm

title: Talk:topel


text: Category:chk:Cutlery

title: Category:chk:Cutlery


text: Category:chk:Agriculture

title: Category:chk:Agriculture


text: Category:chk:Applied sciences

title: Category:chk:Applied sciences


text: Category:pon:Agriculture

title: Category:pon:Agriculture


text:
nikken

Noun

 * 1) mosquito

title: nikken


text: Category:pon:Applied sciences

title: Category:pon:Applied sciences


text: 𡿪

title: 𡿪


text: Category:cal:Buildings

title: Category:cal:Buildings


text: Category:cal:Buildings and structures

title: Category:cal:Buildings and structures


text:
Talk:dozvoliti

please see the Discussion at dopustiti

title: Talk:dozvoliti


text:
parrunpätkä

Noun

 * 1)  A stump of a wooden beam.
 * 2) A 2-liter, square-bottom, long-necked bottle of liquor which became popular in 1897 when sale of strong alcohol in smaller bottles was banned; probably no exact English equivalent, but handle (1.75 liters, US) comes close.

title: parrunpätkä


text: parrua

title: parrua


text: Category:chk:Mollusks

title: Category:chk:Mollusks


text: parruun

title: parruun


text: parrujen

title: parrujen


text: parruja

title: parruja


text: parruihin

title: parruihin


text: Category:chk:Mammals

title: Category:chk:Mammals


text: Category:chk:Vertebrates

title: Category:chk:Vertebrates


text: Category:chk:Chordates

title: Category:chk:Chordates


text: Category:chk:Birds

title: Category:chk:Birds


text:
untertauchen

Verb

 * 1)  to dive, to plunge ; to submerge
 * 2)  to disappear, to go hiding
 * 3) * 1922, Walther Kabel (pseud. William Käbler), Der Medizinmann Omakati, Verlag moderner Lektüre, page 40:
 * "de"

- Aber der Komanche war schon wieder in den Büschen untergetaucht.

title: untertauchen


text: Category:chk:Amphibians

title: Category:chk:Amphibians


text: Category:pon:Amphibians

title: Category:pon:Amphibians


text: Category:pon:Mammals

title: Category:pon:Mammals


text:
మైనము

Etymology
Cognate with 🇨🇬.

Noun

 * 1) wax

title: మైనము


text:
Citations:piroshki

 * 2003, David Waltner-Toews, A Request from Tante Tina to the Mennonite Women's Missionary Society to put Salman Rushdie on the Prayer List, in A Cappella: Mennonite Voices in Poetry, page 68:
 * Ja, so whenever we are schnetki or fleisch piroshki eating,
 * let us a prayer for Mr. Rushdie be making.
 * Here, I have some piroshki gebrought.

title: Citations:piroshki


text: Category:chk:Worms

title: Category:chk:Worms


text: Category:chk:Fish

title: Category:chk:Fish


text: మైనం

title: మైనం


text: Category:chk:Reptiles

title: Category:chk:Reptiles


text: Category:ch:Crustaceans

title: Category:ch:Crustaceans


text: piroschki

title: piroschki


text: pirozhkis

title: pirozhkis


text: piroschkis

title: piroschkis


text: piroshkis

title: piroshkis


text:
-kini

Etymology
By extraction from bikini, in interpreting the "bi" as a prefix bi-, creating a new suffix.

Suffix

 * 1) indicates a type of swimwear

Derived terms

 * a type of one-piece swimsuit for women
 * a two-piece swimsuit for women, with a top and a bottom
 * a type swimsuit for women, which uses three strategic fabric triangles
 * a piece of swimwear worn on the head and covering the face and head
 * a full body bathing suit for women, which includes a hood
 * a kind of sling bikini for men
 * a swimsuit consisting of a strapless bandeau top and a bikini bottom
 * a swimsuit consisting of a halter top and a bikini bottom
 * a bathing suit composed of a tank top and the lower half of a bikini
 * a two-piece swimsuit consisting of a top and a short, skirted bottom
 * a very skimpy bikini that covers just the genitals and nipples
 * a one-piece swimsuit resembling the Y-shape frame of a slingshot which is supported by fabric at the neck
 * a two-piece swimsuit attached by strings that is scantier and more revealing than a regular bikini
 * a swimsuit consisting of a thin-strapped camisole top and a bikini bottom

Translations

 * Chinese:
 * Mandarin: -基尼
 * French:

title: -kini


text: perieschkje

title: perieschkje


text:
pyrizhky

Etymology
From.

title: pyrizhky


text: P.S.S.

title: P.S.S.


text: reelevate

title: reelevate


text: reelevates

title: reelevates


text: reelevating

title: reelevating


text: reelevated

title: reelevated


text: maprofesa

title: maprofesa


text:
recement

Verb

 * 1) to cover, fill or attach with cement again
 * It was deemed advisable to recement the pipe in order to eliminate vibration.

title: recement


text: recements

title: recements


text:
recementing

Noun

 * 1) The act of cementing something again.

title: recementing


text: recemented

title: recemented


text: re-cement

title: re-cement


text: re-cements

title: re-cements


text: re-cementing

title: re-cementing


text: re-cemented

title: re-cemented


text: mmishionari

title: mmishionari


text: wamishionari

title: wamishionari


text:
հմայել

Etymology
From.

Verb

 * 1) to charm, to put or cast a spell on
 * 2)  to attract, to fascinate, to charm

title: հմայել


text: vijijini

title: vijijini


text: kijijini

title: kijijini


text: mikoani

title: mikoani


text: wilayani

title: wilayani


text: mjini

title: mjini


text: mijini

title: mijini


text:
upana

Etymology
From.

Noun

 * 1) width

title: upana


text:
phagraphene

Etymology

 * from the ring structures of phagraphene, having five-, six-, and seven-sided rings in the macromolecular structure.

Noun

 * 1)  A two-dimensional form of graphene, the allotrope of carbon found in graphite, with 5/6/7-sided rings instead of just the 6-sided ones found in conventional graphene.

title: phagraphene


text: کلک والى

title: کلک والى


text:
کلکوالى

Noun

 * 1) hardness
 * 2) firmness
 * 3) toughness

title: کلکوالى


text: newhalfs

title: newhalfs


text: newhalves

title: newhalves


text:
Template:ro-noun-m-e/documentation

For masculine nouns ending in e.

Example:
 * perete

title: Template:ro-noun-m-e/documentation


text: Category:Hebrew terms belonging to the root צ־ב־א


text:
винодельческий

Adjective

 * 1) wine-making, wine-producing

title: винодельческий


text: Category:Hebrew terms belonging to the root ר־ז־ה


text: Category:Hebrew terms belonging to the root ת־ע־ב


text:
Template:ro-noun-m-u/documentation

Use this for masculine words ending with u.

 * first parameter - plural form without -i

On :

title: Template:ro-noun-m-u/documentation


text: Category:Hebrew terms belonging to the root נ־ו־ח


text: Category:Hebrew terms belonging to the root כ־ל־ה


text: Category:Hebrew terms belonging to the root ח־פ־ר


text: Category:Hebrew terms belonging to the root ח־ס־ך


text: Template:ro-noun-n/documentation

title: Template:ro-noun-n/documentation


text: Category:Hebrew terms belonging to the root נ־ח־ל


text: Category:os:Mythology

title: Category:os:Mythology


text: bæreren

title: bæreren


text:
сопереживание

Etymology
.

Noun

 * 1) empathy
 * 2) compassion
 * 1) compassion

title: сопереживание


text: Category:os:Culture

title: Category:os:Culture


text: Category:os:Society

title: Category:os:Society


text: bærere

title: bærere


text: bærerne

title: bærerne


text:
кривить

Verb

 * 1) to bend, to distort

title: кривить


text:
kladivac

Etymology
From.

Noun

 * 1) hammer, mallet

title: kladivac


text:
преподнести

Verb

 * 1) to present, to make a present
 * 2) to communicate
 * 1) to communicate
 * 1) to communicate
 * 1) to communicate

title: преподнести


text:
вручить

Verb

 * 1) to hand over, to deliver, to present
 * 2)  to entrust
 * 1)  to entrust
 * 1)  to entrust

title: вручить


text:
semi-darkness

Etymology
From.

title: semi-darkness


text:
острог

Noun

 * 1)  stake or pole rammed into a haystack (in order to hold it still)

Noun

 * 1)  stockaded town
 * 2)  jail, gaol

title: острог


text:
Talk:trim

Etymology
TRYMMAN is from Old English TRUM[7] (firm, strong), ultimately from Celtic *TROM(OS)[6] [in AOTROM 'opposite of heavy'] and whence Welsh TRWM (heavy)[8]. If it were not for this semi-attestable etymological path, the Proto-Germanic root *TRUMJANĄ would be quite logical[7], except that no Germanic cognates are manifest, apart from Old Saxon 'TRIMM' that may be borrowed[6], or from the same root, and Scandinavian TRÅM[3] (log).

[0] means 'Absolutely not; [1] means 'Exceedingly unlikely'; [2] means 'Very dubious'; [3] means 'Questionable'; [4] means 'Possible'; [5] means 'Probable'; [6] means 'Likely'; [7] means 'Most Likely' or *Unattested; [8] means 'Attested'; [9] means 'Obvious' - only used for close matches within the same language or dialect, at linkable periods.

Andrew H. Gray 08:43, 3 September 2015 (UTC) Andrew (talk)

Doctored playing cards?
Scarne's Guide to Casino Gambling says that trims are "crooked cards gaffed by trimming some cards one way and the others another way". However, I have not always been able to find Scarne's words in other sources. Equinox ◑ 03:32, 23 April 2021 (UTC)

title: Talk:trim


text:
смайл

Etymology
.

Noun

 * 1) smiley representation of a smiling face; sequence of keyboard characters

title: смайл


text:
halvmørke

Etymology
From.

Noun

 * 1) semi-darkness

Etymology
From.

Noun

 * 1) semi-darkness

title: halvmørke


text:
эзер

Etymology
From.

Noun

 * 1) saddle (seat on an animal)

Etymology 1
From.

Verb

 * 1) to blow

Etymology 2
From.

Verb

 * 1) to clean, peel

Etymology
From.

Cognate with 🇨🇬, 🇨🇬, 🇨🇬, 🇨🇬, 🇨🇬, 🇨🇬, 🇨🇬, 🇨🇬, 🇨🇬 etc.

Noun

 * 1) saddle

title: эзер


text:
みなみアフリカ

Proper noun

 * 1)  South Africa

title: みなみアフリカ


text: Minami Afurika

title: Minami Afurika


text: Category:ja:South Africa

title: Category:ja:South Africa


text:
бессоюзие

Etymology
First attested in 1771. ,, whence also.

Noun

 * 1) asyndeton

title: бессоюзие


text: halvmørket

title: halvmørket


text:
асиндетон

Etymology
, from, from. Compare with.

Noun

 * 1) asyndeton

title: асиндетон


text:
Talk:plavokos

If the word plavlovlas shpould exist, someone may add it

title: Talk:plavokos


text: Template:ro-noun-n-uri/documentation

title: Template:ro-noun-n-uri/documentation


text:
полисиндетон

Etymology
. Compare with.

Noun

 * 1) polysyndeton

title: полисиндетон


text:
многосоюзие

Etymology
First attested in 1796. ,, from. Compare with.

Noun

 * 1) polysyndeton

title: многосоюзие


text:
cytidyltransferase

Noun

 * 1)  Any transferase that transfers a cytidyl group

Derived terms

 * deoxycytidyltransferase

title: cytidyltransferase


text:
cytidyl

Noun

 * 1)  A univalent radical derived from cytidine

Derived terms

 * deoxycytidyl

title: cytidyl


text:
deobliquing

Noun

 * 1) The removal of obliquity

title: deobliquing


text: Template:ryn-def

title: Template:ryn-def


text:
Template:ryn-def/documentation

This template is intended for the use in indices under POS headers.

Example usage:

Noun

 * 1)  dog

And it will be displayed like the following, assuming the entry title is "いん":

Noun
いん (romaji in)
 * 1)  dog

title: Template:ryn-def/documentation


text: Template:ams-def

title: Template:ams-def


text:
Template:ams-def/documentation

This template is intended for the use in indices under POS headers.

Example usage:

Noun

 * 1)  dog

And it will be displayed like the following, assuming the entry title is "いん":

Noun
いん (romaji in)
 * 1)  dog

title: Template:ams-def/documentation


text:
eigenoscillation

Noun

 * 1) oscillation at an eigenfrequency

title: eigenoscillation


text: Category:Northern Amami Ōshima templates


text: Category:Southern Amami Ōshima templates


text: Template:ro-noun-n-e/documentation

title: Template:ro-noun-n-e/documentation


text:
Talk:gå

Swedish: The past participle of "gå" is "gången" for singular common gender, "gånget" for singular neutral gender and "gågna" for plural. Only "gången" is in the conjugation. 83.223.9.190 10:07, 3 September 2015 (UTC)

title: Talk:gå


text: Category:mvi:Canids

title: Category:mvi:Canids


text: Category:ryn:Canids

title: Category:ryn:Canids


text: Category:ryn:Mammals

title: Category:ryn:Mammals


text: Category:ryn:Vertebrates

title: Category:ryn:Vertebrates


text: Category:ryn:Chordates

title: Category:ryn:Chordates


text: Category:ams:Canids

title: Category:ams:Canids


text: Category:ams:Mammals

title: Category:ams:Mammals


text: Category:ams:Vertebrates

title: Category:ams:Vertebrates


text: Category:ams:Chordates

title: Category:ams:Chordates


text: Category:mvi:Carnivores

title: Category:mvi:Carnivores


text: Category:ryn:Carnivores

title: Category:ryn:Carnivores


text: Category:ams:Carnivores

title: Category:ams:Carnivores


text:
extraordinal

Adjective

 * 1)  From another taxonomic order

title: extraordinal


text:
homocysteinase

Noun

 * 1)  Any enzyme that catalyzes the breakdown of homocysteine

title: homocysteinase


text:
hyperflagellated

Adjective

 * 1) Having more flagella than normal

title: hyperflagellated


text:
fåtallig

Etymology
From.

Adjective

 * 1) few (in number)

title: fåtallig


text:
monochamol

Noun

 * 1)  The pheromone 2-undecyloxyethan-1-ol

title: monochamol


text:
multifluorescent

Adjective

 * 1) fluorescent at multiple frequencies

title: multifluorescent


text: fåtallige

title: fåtallige


text: kūrei

title: kūrei


text:
spongiotrophoblast

Noun

 * 1) spongy trophoblast

title: spongiotrophoblast


text:
suburothelium

Noun

 * 1) The area under the urothelium

title: suburothelium


text:
кӱреш

Noun

 * 1)  wrestling; especially kurash

Etymology
From. Cognate with 🇨🇬, 🇨🇬, 🇨🇬, 🇨🇬, 🇨🇬, 🇨🇬, 🇨🇬, 🇨🇬, etc.

Noun

 * 1) fight

title: кӱреш


text: ఏకం

title: ఏకం


text:
wisnae

Contraction

 * 1)  wasn't

title: wisnae


text:
老犬

Noun

 * 1) old dog

title: 老犬


text:
регент

Noun

 * 1) regent

Etymology
.

Noun

 * 1) regent
 * 2) precentor director of a church choir

title: регент


text:
ろうけん

Noun

 * 1)  old dog

title: ろうけん


text: rōken

title: rōken


text:
регентство

Noun

 * 1) regency

Noun

 * 1) regency

title: регентство


text:
регентша

Noun

 * : female regent

title: регентша


text:
crease up

Verb

 * 1)  To crease or become creased.
 * 2)  To laugh (or make someone laugh) uncontrollably.
 * He fell flat on his face and everyone just creased up!
 * The last scene creased me up.

title: crease up


text: Template:ro-noun-f-a/documentation

title: Template:ro-noun-f-a/documentation


text:
leieboer

Etymology
From.

Noun

 * 1) a tenant

title: leieboer


text: Category:Norwegian Bokmål terms suffixed with -boer


text:
User talk:Pelasgos Aþalazhundaz

--Vahag (talk) 11:45, 3 September 2015 (UTC)

Romanian
Please stop adding Romanian into the descendants of PIE roots. Romanian words should be mentioned among the descendants of Latin, as in,. --Vahag (talk) 12:04, 3 September 2015 (UTC)

title: User talk:Pelasgos Aþalazhundaz


text: Category:Serbo-Croatian terms suffixed with -arica


text: leieboeren

title: leieboeren


text: leieboere

title: leieboere


text: leieboerne

title: leieboerne


text:
-boer

Alternative forms

 * , or in some cases.

Suffix

 * 1) relating to how and where people live; dweller.

title: -boer


text:
エーテル

Etymology
Borrowed from.

Noun

 * 1)  ether
 * 2)  diethyl ether
 * 3)  ether

title: エーテル


text:
Wenter

Etymology
From, from.

Noun

 * 1)  winter

title: Wenter


text:
вручать

Verb

 * 1) to hand over, to deliver, to present
 * 2)  to entrust
 * 1)  to entrust
 * 1)  to entrust

title: вручать


text:
рукавичный

Adjective

 * 1)  glove, mitten

title: рукавичный


text:
Module:User:Benwing2/ru-common

--[[

Author: Benwing; some very early work by CodeCat and Atitarev

This module holds some commonly used functions for the Russian language. It's generally for use from other modules, not #invoke, although some functions can be invoked from a template (export.iotation, export.reduce_stem, export.dereduce_stem -- this was actually added to support calling from a bot script rather than from a user template). There's also export.main, which supposedly can be used to invoke most functions in this module from a template, but it may or may not work. There may also be issues when invoking such functions from templates when transliteration is present, due to the need for the transliteration to be decomposed, as mentioned below (all strings from Wiktionary pages are normally in composed form).

NOTE NOTE NOTE: All functions assume that transliteration (but not Russian) has had its acute and grave accents decomposed using export.decompose. This is the first thing that should be done to all user-specified transliteration and any transliteration we compute that we expect to work with. ]]

local export = {}

local lang = require("Module:languages").getByCode("ru")

local strutils = require("Module:string utilities") local m_ru_translit = require("Module:ru-translit") local m_table_tools = require("Module:table tools")

local u = mw.ustring.char local rfind = mw.ustring.find local rsubn = mw.ustring.gsub local rmatch = mw.ustring.match local rsplit = mw.text.split local ulower = mw.ustring.lower local uupper = mw.ustring.upper local usub = mw.ustring.sub

local AC = u(0x0301) -- acute = ́ local GR = u(0x0300) -- grave = ̀ local CFLEX = u(0x0302) -- circumflex = ̂ local BREVE = u(0x0306) -- breve ̆ local DIA = u(0x0308) -- diaeresis = ̈ local CARON = u(0x030C) -- caron ̌

local PSEUDOVOWEL = u(0xFFF1) -- pseudovowel placeholder local PSEUDOCONS = u(0xFFF2) -- pseudoconsonant placeholder

-- any accent export.accent = AC .. GR .. DIA .. BREVE .. CARON -- regex for any optional accent(s) export.opt_accent = "[" .. export.accent .. "]*" -- any composed Cyrillic vowel with grave accent export.composed_grave_vowel = "ѐЀѝЍ" -- any Cyrillic vowel except ёЁ export.vowel_no_jo = "аеиоуяэыюіѣѵАЕИОУЯЭЫЮІѢѴ" .. PSEUDOVOWEL .. export.composed_grave_vowel -- any Cyrillic vowel, including ёЁ export.vowel = export.vowel_no_jo .. "ёЁ" -- any vowel in transliteration export.tr_vowel = "aeěɛiouyAEĚƐIOUY" .. PSEUDOVOWEL -- any consonant in transliteration, omitting soft/hard sign export.tr_cons_no_sign = "bcčdfghjklmnpqrsštvwxzžBCČDFGHJKLMNPQRSŠTVWXZŽ" .. PSEUDOCONS -- any consonant in transliteration, including soft/hard sign export.tr_cons = export.tr_cons_no_sign .. "ʹʺ" -- regex for any consonant in transliteration, including soft/hard sign, -- optionally followed by any accent export.tr_cons_acc_re = "[" .. export.tr_cons .. "]" .. export.opt_accent -- any Cyrillic consonant except sibilants and ц export.cons_except_sib_c = "бдфгйклмнпрствхзьъБДФГЙКЛМНПРСТВХЗЬЪ" .. PSEUDOCONS -- Cyrillic sibilant consonants export.sib = "шщчжШЩЧЖ" -- Cyrillic sibilant consonants and ц export.sib_c = export.sib .. "цЦ" -- any Cyrillic consonant export.cons = export.cons_except_sib_c .. export.sib_c -- Cyrillic velar consonants export.velar = "кгхКГХ" -- uppercase Cyrillic consonants export.uppercase = "АЕИОУЯЭЫЁЮІѢѴБДФГЙКЛМНПРСТВХЗЬЪШЩЧЖЦ"

-- version of rsubn that discards all but the first return value local function rsub(term, foo, bar) local retval = rsubn(term, foo, bar) return retval end

local function ine(x) return x ~= "" and x or nil end

-- this function enables the module to be called from a template; -- FIXME, does this actually work? function export.main(frame) -- FIXME: Not used. Consider deleting. if type(export[frame.args[1]]) == 'function' then return export[frame.args[1]](frame.args[2], frame.args[3]) else return export[frame.args[1]][frame.args[2]] end end

-- selects preposition о, об or обо for next phrase, which can start from -- punctuation function export.obo(phr) -- FIXME: Not used. Consider deleting. --Algorithm design is mainly inherited from w:ru:template:Обо local w = rmatch(phr,"[%p%s%c]*(.-)[%p%s%c]") or rmatch(phr,"[%p%s%c]*(.-)$") if not w then return nil end if string.find(" всей всём всех мне ",' '..ulower(w)..' ',1,true) then return 'обо' end local ws=usub(w,1,2) if ws==uupper(ws) then -- abbrev if rmatch(ws,"^[ЙУНФЫАРОЛЭСМИRYUIOASFHLXNMÖÜÄΑΕΟΥΩ]") then return 'об' else return 'о' end elseif rmatch(uupper(w),"^[АОЭИУЫAOIEÖÜÄΑΕΟΥΩ]") then return 'об' else return 'о' end end

-- Apply Proto-Slavic iotation. This is the change that is affected by a -- Slavic -j- after a consonant. function export.iotation(stem, tr, shch) local combine_tr = false -- so this can be called from a template if type(stem) == 'table' then stem, tr, shch = ine(stem.args[1]), ine(stem.args[2]), ine(stem.args[3]) combine_tr = true end stem = rsub(stem, "[сх]$", "ш") stem = rsub(stem, "ск$", "щ") stem = rsub(stem, "ст$", "щ") stem = rsub(stem, "[кц]$", "ч")

-- normally "т" is iotated as "ч" but there are many verbs that are iotated with "щ" if shch == "щ" then stem = rsub(stem, "т$", "щ") else stem = rsub(stem, "т$", "ч") end

stem = rsub(stem, "[гдз]$", "ж")

stem = rsub(stem, "([бвмпф])$", "%1л")

if tr then tr = rsub(tr, "[sx]$", "š") tr = rsub(tr, "sk$", "šč") tr = rsub(tr, "st$", "šč") tr = rsub(tr, "[kc]$", "č")

-- normally "т" is iotated as "ч" but there are many verbs that are iotated with "щ" if shch == "щ" then tr = rsub(tr, "t$", "šč") else tr = rsub(tr, "t$", "č") end

tr = rsub(tr, "[gdz]$", "ž")

tr = rsub(tr, "([bvmpf])$", "%1l") end

if combine_tr then return export.combine_russian_tr(stem, tr) else return stem, tr	end end

-- Does a set of Cyrillic words in connected text need accents? We need to -- split by word and check each one. function export.needs_accents(text) local function word_needs_accents(word) -- A word needs accents if it is unstressed and contains more than -- one vowel, unless it's a prefix or suffix return not rfind(word, "^%-") and not rfind(word, "%-$") and export.is_unstressed(word) and not export.is_monosyllabic(word) end local words = rsplit(text, "%s") for _, word in ipairs(words) do		if word_needs_accents(word) then return true end end return false end

-- True if Cyrillic word is stressed (acute or diaeresis) function export.is_stressed(word) -- A word that has ё in it is inherently stressed. -- diaeresis occurs in сѣ̈дла plural of сѣдло́ return rfind(word, "[́̈ёЁ]") end

-- True if Cyrillic word has no stress mark (acute or diaeresis) function export.is_unstressed(word) return not export.is_stressed(word) end

-- True if Cyrillic word is stressed on the last syllable function export.is_ending_stressed(word) return rfind(word, "[ёЁ][^" .. export.vowel .. "]*$") or rfind(word, "[" .. export.vowel .. "][́̈][^" .. export.vowel .. "]*$") end

-- True if a Cyrillic word has two or more stresses (acute or diaeresis) function export.is_multi_stressed(word) word = rsub(word, "[ёЁ]", "е́") return rfind(word, "[" .. export.vowel .. "][́̈].*[" .. export.vowel .. "][́̈]") end

-- True if Cyrillic word is stressed on the first syllable function export.is_beginning_stressed(word) return rfind(word, "^[^" .. export.vowel .. "]*[ёЁ]") or rfind(word, "^[^" .. export.vowel .. "]*[" .. export.vowel .. "]́") end

-- True if Cyrillic word has no vowel. Don't treat suffixes as nonsyllabic -- even if they have no vowel, as they are generally added onto words with -- vowels. function export.is_nonsyllabic(word) return not rfind(word, "^%-") and not rfind(word, "[" .. export.vowel .. "]") end

-- True if Cyrillic word has no more than one vowel; includes non-syllabic -- stems such as льд- function export.is_monosyllabic(word) return not rfind(word, "[" .. export.vowel .. "].*[" .. export.vowel .. "]") end

local recomposer = { ["и" .. BREVE] = "й", ["И" .. BREVE] = "Й", ["е" .. DIA] = "ё", -- WARNING: Cyrillic е and Е ["Е" .. DIA] = "Ё", ["e" .. CARON] = "ě", -- WARNING: Latin e and E	["E" .. CARON] = "Ě", ["c" .. CARON] = "č", ["C" .. CARON] = "Č", ["s" .. CARON] = "š", ["S" .. CARON] = "Š", ["z" .. CARON] = "ž", ["Z" .. CARON] = "Ž", -- used in ru-pron: ["ж" .. BREVE] = "ӂ", -- used in ru-pron ["Ж" .. BREVE] = "Ӂ", ["j" .. CFLEX] = "ĵ", ["J" .. CFLEX] = "Ĵ", ["j" .. CARON] = "ǰ", -- no composed uppercase equivalent of J-caron ["ʒ" .. CARON] = "ǯ", ["Ʒ" .. CARON] = "Ǯ", }

-- Decompose acute, grave, etc. on letters (esp. Latin) into individivual -- character + combining accent. But recompose Cyrillic and Latin characters -- that we want to treat as units and get caught in the crossfire. We mostly -- want acute and grave decomposed; perhaps should just explicitly decompose -- those and no others. function export.decompose(text) text = mw.ustring.toNFD(text) text = rsub(text, ".[" .. BREVE .. DIA .. CARON .. "]", recomposer) return text end

function export.assert_decomposed(text) assert(not rfind(text, "[áéíóúýàèìòùỳäëïöüÿÁÉÍÓÚÝÀÈÌÒÙỲÄËÏÖÜŸ]")) end

-- Transliterate text and then apply acute/grave decomposition. function export.translit(text, no_include_monosyllabic_jo_accent) return export.decompose(m_ru_translit.tr(text, nil, nil, not no_include_monosyllabic_jo_accent)) end

-- Recompose acutes and graves into preceding vowels. Probably not necessary. function export.recompose(text) return mw.ustring.toNFC(text) end

local grave_decomposer = { ["ѐ"] = "е" .. GR, ["Ѐ"] = "Е" .. GR, ["ѝ"] = "и" .. GR, ["Ѝ"] = "И" .. GR, }

-- decompose precomposed Cyrillic chars w/grave accent; not necessary for -- acute accent as there aren't precomposed Cyrillic chars w/acute accent, -- and undesirable for precomposed ё and Ё function export.decompose_grave(word) return rsub(word, "[ѐЀѝЍ]", grave_decomposer) end

local grave_deaccenter = { [GR] = "", -- grave accent ["ѐ"] = "е", -- composed Cyrillic chars w/grave accent ["Ѐ"] = "Е", ["ѝ"] = "и", ["Ѝ"] = "И", }

local deaccenter = mw.clone(grave_deaccenter) deaccenter[AC] = "" -- acute accent

-- Remove acute and grave accents; don't affect composed diaeresis in ёЁ or -- uncomposed diaeresis in -ѣ̈- (as in plural сѣ̈дла of сѣдло́). -- NOTE: Translit must already be decomposed! See comment at top. function export.remove_accents(word, tr) local ru_removed = rsub(word, "[́̀ѐЀѝЍ]", deaccenter) if not tr then return ru_removed, nil end return ru_removed, rsub(tr, "[" .. AC .. GR .. "]", deaccenter) end

-- Remove grave accents; don't affect acute or composed diaeresis in ёЁ or -- uncomposed diaeresis in -ѣ̈- (as in plural сѣ̈дла of сѣдло́). -- NOTE: Translit must already be decomposed! See comment at top. function export.remove_grave_accents(word, tr) local ru_removed = rsub(word, "[̀ѐЀѝЍ]", grave_deaccenter) if not tr then return ru_removed, nil end return ru_removed, rsub(tr, GR, "") end

-- Remove acute and grave accents in monosyllabic words; don't affect -- diaeresis (composed or uncomposed) because it indicates a change in vowel -- quality, which still applies to monosyllabic words. Don't change suffixes, -- where a "monosyllabic" stress is still significant (e.g. -ча́т short -- masculine of -ча́тый, vs. -́чат short masculine of -́чатый). -- NOTE: Translit must already be decomposed! See comment at top. function export.remove_monosyllabic_accents(word, tr) if export.is_monosyllabic(word) and not rfind(word, "^%-") then return export.remove_accents(word, tr) else return word, tr	end end

local destresser = mw.clone(deaccenter) destresser["ё"] = "е" destresser["Ё"] = "Е" destresser["̈"] = "" -- diaeresis

-- Subfunction of split_syllables. On input we get sections of text -- consisting of CONSONANT - VOWEL - CONSONANT - VOWEL ... - CONSONANT, -- where CONSONANT consists of zero or more consonants and VOWEL consists -- of exactly one vowel plus any following accent(s); we combine these into -- syllables as required by split_syllables. local function combine_captures(captures) if #captures == 1 then return captures end local combined = {} for i = 1,(#captures-1),2 do table.insert(combined, captures[i] .. captures[i+1]) end combined[#combined] = combined[#combined] .. captures[#captures] return combined end

-- Split Russian text and transliteration into syllables. Syllables end with -- vowel + accent(s), except for the last syllable, which includes any -- trailing consonants. -- NOTE: Translit must already be decomposed! See comment at top. function export.split_syllables(ru, tr) -- Split into alternating consonant/vowel sequences, as described in -- combine_captures. Uses capturing_split, which is like rsplit -- but also includes any capturing groups in the split pattern. local rusyllables = combine_captures(strutils.capturing_split(ru, "([" .. export.vowel .. "]" .. export.opt_accent .. ")")) local trsyllables if tr then export.assert_decomposed(tr) trsyllables = combine_captures(strutils.capturing_split(tr, "([" .. export.tr_vowel .. "]" .. export.opt_accent .. ")")) if #rusyllables ~= #trsyllables then error("Russian " .. ru .. " doesn't have same number of syllables as translit " .. tr) end end --error(table.concat(rusyllables, "/") .. "(" .. #rusyllables .. (trsyllables and (") || " .. table.concat(trsyllables, "/") .. "(" .. #trsyllables .. ")") or "")) return rusyllables, trsyllables end

-- Split Russian word and transliteration into hyphen-separated components. -- Rejoining with table.concat(..., "-") will recover the original word. -- If the original word ends in a hyphen, that hyphen gets included with the -- preceding component (this is the only case when an individual component has -- a hyphen in it). function export.split_hyphens(ru, tr) local rucomponents = rsplit(ru, "%-") if rucomponents[#rucomponents] == "" and #rucomponents > 1 then rucomponents[#rucomponents - 1] = rucomponents[#rucomponents - 1] .. "-"		table.remove(rucomponents) end local trcomponents if tr then trcomponents = rsplit(tr, "%-") if trcomponents[#trcomponents] == "" and #trcomponents > 1 then trcomponents[#trcomponents - 1] = trcomponents[#trcomponents - 1] .. "-"			table.remove(trcomponents) end if #rucomponents ~= #trcomponents then error("Russian " .. ru .. " doesn't have same number of hyphenated components as translit " .. tr) end end return rucomponents, trcomponents end

-- Apply j correction, converting je to e after consonants, jo to o after -- a sibilant, ju to u after hard sibilant. -- NOTE: Translit must already be decomposed! See comment at top. function export.j_correction(tr) tr = rsub(tr, "([" .. export.tr_cons_no_sign .. "]" .. export.opt_accent ..")[Jj]([EeĚě])", "%1%2") tr = rsub(tr, "([žščŽŠČ])[Jj]([Oo])", "%1%2") tr = rsub(tr, "([žšŽŠ])[Jj]([Uu])", "%1%2") return tr end

local function make_unstressed_ru(ru) -- The following regexp has grave+acute+diaeresis after the bracket --	return rsub(ru, "[̀́̈ёЁѐЀѝЍ]", destresser) end

-- Remove all stress marks (acute, grave, diaeresis). -- NOTE: Translit must already be decomposed! See comment at top. function export.make_unstressed(ru, tr) if not tr then return make_unstressed_ru(ru), nil end -- In the presence of TR, we need to do things the hard way: Splitting -- into syllables and only converting Latin o to e opposite a ё. rusyl, trsyl = export.split_syllables(ru, tr) for i=1,#rusyl do		if rfind(rusyl[i], "[ёЁ]") then trsyl[i] = rsub(trsyl[i], "[Oo]", {["O"] = "E", ["o"] = "e"}) end rusyl[i] = make_unstressed_ru(rusyl[i]) -- the following should still work as it will affect accents only trsyl[i] = make_unstressed_ru(trsyl[i]) end -- Also need to apply j correction as otherwise we'll have je after cons, etc.	return table.concat(rusyl, ""), export.j_correction(table.concat(trsyl, "")) end

function remove_jo_ru(word) return rsub(word, "[̈ёЁ]", destresser) end

-- Remove diaeresis stress marks only. -- NOTE: Translit must already be decomposed! See comment at top. function export.remove_jo(ru, tr) if not tr then return remove_jo_ru(ru), nil end -- In the presence of TR, we need to do things the hard way: Splitting -- into syllables and only converting Latin o to e opposite a ё. rusyl, trsyl = export.split_syllables(ru, tr) for i=1,#rusyl do		if rfind(rusyl[i], "[ёЁ]") then trsyl[i] = rsub(trsyl[i], "[Oo]", {["O"] = "E", ["o"] = "e"}) end rusyl[i] = remove_jo_ru(rusyl[i]) -- the following should still work as it will affect accents only trsyl[i] = make_unstressed_once_ru(trsyl[i]) end -- Also need to apply j correction as otherwise we'll have je after cons, etc.	return table.concat(rusyl, ""), export.j_correction(table.concat(trsyl, "")) end

local function make_unstressed_once_ru(word) -- leave graves alone return rsub(word, "([́̈ёЁ])([^́̈ёЁ]*)$", function(x, rest) return destresser[x] .. rest; end, 1) end

local function map_last_hyphenated_component(fn, ru, tr) if rfind(ru, "%-") then -- If there is a hyphen, do it the hard way by splitting into -- individual components and doing the last one. Otherwise we just do -- the whole string. local rucomponents, trcomponents = export.split_hyphens(ru, tr) local lastru, lasttr = fn(rucomponents[#rucomponents],			trcomponents and trcomponents[#trcomponents] or nil) rucomponents[#rucomponents] = lastru ru = table.concat(rucomponents, "-") if trcomponents then trcomponents[#trcomponents] = lasttr tr = table.concat(trcomponents, "-") end return ru, tr	end return fn(ru, tr) end

-- Make last stressed syllable (acute or diaeresis) unstressed; leave -- unstressed; leave graves alone; if NOCONCAT, return individual syllables. -- NOTE: Translit must already be decomposed! See comment at top. local function make_unstressed_once_after_hyphen_split(ru, tr, noconcat) if not tr then return make_unstressed_once_ru(ru), nil end -- In the presence of TR, we need to do things the hard way, as with -- make_unstressed. rusyl, trsyl = export.split_syllables(ru, tr) for i=#rusyl,1,-1 do		local stressed = export.is_stressed(rusyl[i]) if stressed then if rfind(rusyl[i], "[ёЁ]") then trsyl[i] = rsub(trsyl[i], "[Oo]", {["O"] = "E", ["o"] = "e"}) end rusyl[i] = make_unstressed_once_ru(rusyl[i]) -- the following should still work as it will affect accents only trsyl[i] = make_unstressed_once_ru(trsyl[i]) break end end if noconcat then return rusyl, trsyl end -- Also need to apply j correction as otherwise we'll have je after cons return table.concat(rusyl, ""), export.j_correction(table.concat(trsyl, "")) end

-- Make last stressed syllable (acute or diaeresis) to the right of any hyphen -- unstressed (unless the hyphen is word-final); leave graves alone. We don't -- destress a syllable to the left of a hyphen unless the hyphen is word-final -- (i.e. a prefix). Otherwise e.g. the accents in the first part of words like -- ко́е-како́й and а́льфа-лу́ч won't remain. -- NOTE: Translit must already be decomposed! See comment at top. function export.make_unstressed_once(ru, tr) return map_last_hyphenated_component(make_unstressed_once_after_hyphen_split, ru, tr) end

local function make_unstressed_once_at_beginning_ru(word) -- leave graves alone return rsub(word, "^([^́̈ёЁ]*)([́̈ёЁ])", function(rest, x) return rest .. destresser[x]; end, 1) end

-- Make first stressed syllable (acute or diaeresis) unstressed; leave -- graves alone; if NOCONCAT, return individual syllables. -- NOTE: Translit must already be decomposed! See comment at top. function export.make_unstressed_once_at_beginning(ru, tr, noconcat) if not tr then return make_unstressed_once_at_beginning_ru(ru), nil end -- In the presence of TR, we need to do things the hard way, as with -- make_unstressed. rusyl, trsyl = export.split_syllables(ru, tr) for i=1,#rusyl do		local stressed = export.is_stressed(rusyl[i]) if stressed then if rfind(rusyl[i], "[ёЁ]") then trsyl[i] = rsub(trsyl[i], "[Oo]", {["O"] = "E", ["o"] = "e"}) end rusyl[i] = make_unstressed_once_at_beginning_ru(rusyl[i]) -- the following should still work as it will affect accents only trsyl[i] = make_unstressed_once_at_beginning_ru(trsyl[i]) break end end if noconcat then return rusyl, trsyl end -- Also need to apply j correction as otherwise we'll have je after cons return table.concat(rusyl, ""), export.j_correction(table.concat(trsyl, "")) end

-- Subfunction of make_ending_stressed, make_beginning_stressed, which -- add an acute accent to a syllable that may already have a grave accent; -- in such a case, remove the grave. -- NOTE: Translit must already be decomposed! See comment at top. function export.correct_grave_acute_clash(word, tr) word = rsub(word, "([̀ѐЀѝЍ])́", function(x) return grave_deaccenter[x] .. AC; end) word = rsub(word, AC .. GR, AC) if not tr then return word, nil end tr = rsub(tr, GR .. AC, AC) tr = rsub(tr, AC .. GR, AC) return word, tr end

local function make_ending_stressed_ru(word) -- If already ending stressed, just return word so we don't mess up ё if export.is_ending_stressed(word) then return word end -- Destress the last stressed syllable word = make_unstressed_once_ru(word) -- Add an acute to the last syllable word = rsub(word, "([" .. export.vowel_no_jo .. "])([^" .. export.vowel .. "]*)$",		"%1́%2")	-- If that caused an acute and grave next to each other, remove the grave return export.correct_grave_acute_clash(word) end

-- Remove the last primary stress from the word and put it on the final -- syllable. Leave grave accents alone except in the last syllable. -- If final syllable already has primary stress, do nothing. -- NOTE: Translit must already be decomposed! See comment at top. local function make_ending_stressed_after_hyphen_split(ru, tr) if not tr then return make_ending_stressed_ru(ru), nil end -- If already ending stressed, just return ru/tr so we don't mess up ё if export.is_ending_stressed(ru) then return ru, tr	end -- Destress the last stressed syllable; pass in "noconcat" so we get -- the individual syllables back rusyl, trsyl = make_unstressed_once_after_hyphen_split(ru, tr, "noconcat") -- Add an acute to the last syllable of both Russian and translit rusyl[#rusyl] = rsub(rusyl[#rusyl], "([" .. export.vowel_no_jo .. "])",		"%1" .. AC) trsyl[#trsyl] = rsub(trsyl[#trsyl], "([" .. export.tr_vowel .. "])",		"%1" .. AC) -- If that caused an acute and grave next to each other, remove the grave rusyl[#rusyl], trsyl[#trsyl] = export.correct_grave_acute_clash(rusyl[#rusyl], trsyl[#trsyl]) -- j correction didn't get applied in make_unstressed_once because -- we short-circuited it and made it return lists of syllables return table.concat(rusyl, ""), export.j_correction(table.concat(trsyl, "")) end

-- Remove the last primary stress from the portion of the word to the right of -- any hyphen (unless the hyphen is word-final) and put it on the final -- syllable. Leave grave accents alone except in the last syllable. If final -- syllable already has primary stress, do nothing. (See make_unstressed_once -- for why we don't affect stresses to the left of a hyphen.) -- NOTE: Translit must already be decomposed! See comment at top. function export.make_ending_stressed(ru, tr) return map_last_hyphenated_component(make_ending_stressed_after_hyphen_split, ru, tr) end

local function make_beginning_stressed_ru(word) -- If already beginning stressed, just return word so we don't mess up ё if export.is_beginning_stressed(word) then return word end -- Destress the first stressed syllable word = make_unstressed_once_at_beginning_ru(word) -- Add an acute to the first syllable word = rsub(word, "^([^" .. export.vowel .. "]*)([" .. export.vowel_no_jo .. "])",		"%1%2́")	-- If that caused an acute and grave next to each other, remove the grave return export.correct_grave_acute_clash(word) end

-- Remove the first primary stress from the word and put it on the initial -- syllable. Leave grave accents alone except in the first syllable. -- If initial syllable already has primary stress, do nothing. -- NOTE: Translit must already be decomposed! See comment at top. function export.make_beginning_stressed(ru, tr) if not tr then return make_beginning_stressed_ru(ru), nil end -- If already beginning stressed, just return ru/tr so we don't mess up ё if export.is_beginning_stressed(ru) then return ru, tr	end -- Destress the first stressed syllable; pass in "noconcat" so we get -- the individual syllables back rusyl, trsyl = export.make_unstressed_once_at_beginning(ru, tr, "noconcat") -- Add an acute to the first syllable of both Russian and translit rusyl[1] = rsub(rusyl[1], "([" .. export.vowel_no_jo .. "])",		"%1" .. AC) trsyl[1] = rsub(trsyl[1], "([" .. export.tr_vowel .. "])",		"%1" .. AC) -- If that caused an acute and grave next to each other, remove the grave rusyl[1], trsyl[1] = export.correct_grave_acute_clash(rusyl[1], trsyl[1]) -- j correction didn't get applied in make_unstressed_once_at_beginning -- because we short-circuited it and made it return lists of syllables return table.concat(rusyl, ""), export.j_correction(table.concat(trsyl, "")) end

-- used for tracking and categorization local trailing_letter_type = { ["ш"] = {"sibilant", "cons"}, ["щ"] = {"sibilant", "cons"}, ["ч"] = {"sibilant", "cons"}, ["ж"] = {"sibilant", "cons"}, ["ц"] = {"c", "cons"}, ["к"] = {"velar", "cons"}, ["г"] = {"velar", "cons"}, ["х"] = {"velar", "cons"}, ["ь"] = {"soft-cons", "cons"}, ["ъ"] = {"hard-cons", "cons"}, ["й"] = {"palatal", "cons"}, ["а"] = {"vowel", "hard-vowel"}, ["я"] = {"vowel", "soft-vowel"}, ["э"] = {"vowel", "hard-vowel"}, ["е"] = {"vowel", "soft-vowel"}, ["ѣ"] = {"vowel", "soft-vowel"}, ["и"] = {"i", "vowel", "soft-vowel"}, ["і"] = {"i", "vowel", "soft-vowel"}, ["ѵ"] = {"i", "vowel", "soft-vowel"}, ["ы"] = {"vowel", "hard-vowel"}, ["о"] = {"vowel", "hard-vowel"}, ["ё"] = {"vowel", "soft-vowel"}, ["у"] = {"vowel", "hard-vowel"}, ["ю"] = {"vowel", "soft-vowel"}, }

function export.get_stem_trailing_letter_type(stem) local hint = ulower(usub(export.remove_accents(stem), -1)) local hint_types = trailing_letter_type[hint] or {"hard-cons", "cons"} return hint_types end

-- Reduce stem by eliminating the "epenthetic" vowel. Applies to -- nominative singular masculine 2nd-declension hard and soft, and -- 3rd-declension feminine in -ь (e.g. любовь). STEM should be the -- result after calling detect_stem_type, but with final -й if -- present. Normally returns two arguments (STEM and TR), but can be -- called from a template using #invoke and will return one argument -- (STEM, or STEM//TR if TR is present). Returns nil if unable to -- reduce. -- NOTE: Translit must already be decomposed! See comment at top. function export.reduce_stem(stem, tr) local pre, letter, post local pretr, lettertr, posttr local combine_tr = false

-- test cases with translit: -- =p.reduce_stem("фе́ез", "fɛ́jez") -> фе́йз, fɛ́jz -- =p.reduce_stem("фе́йез", "fɛ́jez") -> фе́йз, fɛ́jz -- =p.reduce_stem("фе́без", "fɛ́bez") -> фе́бз, fɛ́bz -- =p.reduce_stem("фе́лез", "fɛ́lez") -> фе́льз, fɛ́lʹz -- =p.reduce_stem("феёз", p.decompose("fɛjóz")) -> фейз, fɛjz -- don't worry about the next one, won't occur and translit might -- be wrong anyway -- =p.reduce_stem("фейёз", p.decompose("fɛjjóz")) -> ??? -- =p.reduce_stem("фебёз", p.decompose("fɛbjóz")) -> фебз, fɛbz -- =p.reduce_stem("фелёз", p.decompose("fɛljóz")) -> фельз, fɛlʹz -- =p.reduce_stem("фе́бей", "fɛ́bej") -> фе́бь, fɛ́bʹ -- =p.reduce_stem("фебёй", p.decompose("fɛbjój")) -> фебь, fɛbʹ -- =p.reduce_stem("фе́ей", "fɛ́jej") -> фе́йй, fɛ́jj -- =p.reduce_stem("феёй", p.decompose("fɛjój")) -> фейй, fɛjj

-- so this can be called from a template if type(stem) == 'table' then stem, tr = ine(stem.args[1]), ine(stem.args[2]) combine_tr = true end

pre, letter, post = rmatch(stem, "^(.*)([оОеЕёЁ])́?([" .. export.cons .. "]+)$")	if not pre then return nil, nil end if tr then -- FIXME, may not be necessary to write the posttr portion as a		-- consonant + zero or more consonant/accent combinations -- when will -- we ever get an accent after a consonant? That would indicate a -- failure of the decompose mechanism. pretr, lettertr, posttr = rmatch(tr, "^(.*)([oOeE])́?([" .. export.tr_cons .. "][" .. export.tr_cons .. export.accent .. "]*)$")		if not pretr then return nil, nil -- should not happen unless tr is really messed up		end -- Unless Cyrillic stem ends in -й, Latin stem shouldn't end in -j, -- or we will get problems with cases like индонези́ец//indonɛzíjec. if not rfind(pre, "[йЙ]$") then pretr = rsub(pretr, "[jJ]$", "") end end if letter == "О" or letter == "о" then -- FIXME, what about when the accent is on the removed letter? if post == "й" or post == "Й" then -- FIXME, is this correct? return nil, nil end letter = "" else local is_upper = rfind(post, "[" .. export.uppercase .. "]") if rfind(pre, "[" .. export.vowel .. "]́?$") then letter = is_upper and "Й" or "й" elseif post == "й" or post == "Й" then letter = is_upper and "Ь" or "ь" post = "" if posttr then posttr = "" end elseif (rfind(post, "[" .. export.velar .. "]$") and			 rfind(pre, "[" .. export.cons_except_sib_c .. "]$")) or (rfind(post, "[^йЙ" .. export.velar .. "]$") and			 rfind(pre, "[лЛ]$")) then letter = is_upper and "Ь" or "ь" else letter = "" end end stem = pre .. letter .. post if tr then tr = pretr .. export.translit(letter) .. posttr end if combine_tr then return export.combine_russian_tr(stem, tr) else return stem, tr	end end

-- Generate the dereduced stem given STEM and EPENTHETIC_STRESS (which -- indicates whether the epenthetic vowel should be stressed); this is -- without any terminating non-syllabic ending, which is added if needed by -- the calling function. Normally returns two arguments (STEM and TR), but -- can be called from a template using #invoke and will return one argument -- (STEM, or STEM//TR if TR is present). Returns nil if unable to dereduce. -- NOTE: Translit must already be decomposed! See comment at top. function export.dereduce_stem(stem, tr, epenthetic_stress) local combine_tr = false -- so this can be called from a template if type(stem) == 'table' then stem, tr, epenthetic_stress = ine(stem.args[1]), ine(stem.args[2]), ine(stem.args[3]) combine_tr = true end

if epenthetic_stress then stem, tr = export.make_unstressed_once(stem, tr) end

local pre, letter, post local pretr, lettertr, posttr -- FIXME!!! Deal with this special case --if not (z.stem_type == 'soft' and _.equals(z.stress_type, {'b', 'f'}) -- we should ignore asterix for 2*b and 2*f (so to process it just like 2b or 2f)	--		 or _.contains(z.specific, '(2)') and _.equals(z.stem_type, {'velar', 'letter-ц', 'vowel'})) -- and also the same for (2)-specific and 3,5,6 stem-types --then

-- I think this corresponds to our -ья and -ье types, which we	-- handle separately --if z.stem_type == 'vowel' then -- 1).	--	if _.equals(z.stress_type, {'b', 'c', 'e', 'f', "f'", "b'" }) then  -- gen_pl ending stressed  -- TODO: special vars for that	--		z.stems['gen_pl'] = _.replace(z.stems['gen_pl'], 'ь$', 'е́')	--	else	--		z.stems['gen_pl'] = _.replace(z.stems['gen_pl'], 'ь$', 'и')	--	end	--end

pre, letter, post = rmatch(stem, "^(.*)([" .. export.cons .. "])([" .. export.cons .. "])$")	if tr then pretr, lettertr, posttr = rmatch(tr, "^(.*)(" .. export.tr_cons_acc_re .. ")(" .. export.tr_cons_acc_re .. ")$")		if pre and not pretr then return nil, nil -- should not happen unless tr is really messed up		end end if pre then local is_upper = rfind(post, "[" .. export.uppercase .. "]") local epvowel if rfind(letter, "[ьйЬЙ]") then letter = "" lettertr = "" if rfind(post, "[цЦ]$") or not epenthetic_stress then epvowel = is_upper and "Е" or "е" else epvowel = is_upper and "Ё" or "ё" end elseif rfind(letter, "[" .. export.cons_except_sib_c .. "]") and rfind(post, "[" .. export.velar .. "]") or rfind(letter, "[" .. export.velar .. "]") then epvowel = is_upper and "О" or "о" elseif post == "ц" or post == "Ц" then epvowel = is_upper and "Е" or "е" elseif epenthetic_stress then if rfind(letter, "[" .. export.sib .. "]") then epvowel = is_upper and "О́" or "о́" else epvowel = is_upper and "Ё" or "ё" end else epvowel = is_upper and "Е" or "е" end assert(epvowel) stem = pre .. letter .. epvowel .. post if tr then tr = pretr .. lettertr .. export.translit(epvowel) .. posttr tr = export.j_correction(tr) end

if epenthetic_stress then stem, tr = export.make_ending_stressed(stem, tr) end if combine_tr then return export.combine_russian_tr(stem, tr) else return stem, tr		end end return nil, nil end

-- Parse an entry that potentially has final footnote symbols and initial * -- for a hypothetical entry into initial symbols, text and final symbols. function export.split_symbols(entry, do_subscript) local prefentry, finalnotes = m_table_tools.separate_notes(entry) local initnotes, text = rmatch(prefentry, "(%*?)(.*)$") return initnotes, text, finalnotes end

-- --                       Used for manual translit                      -- --

function export.translit_no_links(text) return export.translit(require("Module:links").remove_links(text)) end

function export.split_russian_tr(term, dopair) local ru, tr	if not rfind(term, "//") then ru = term else splitvals = rsplit(term, "//") if #splitvals ~= 2 then error("Must have at most one // in a Russian//translit expr: '" .. term .. "'") end ru, tr = splitvals[1], export.decompose(splitvals[2]) end if dopair then return {ru, tr} else return ru, tr	end end

function export.combine_russian_tr(ru, tr) if type(ru) == "table" then ru, tr = unpack(ru) end if tr then return ru .. "//" .. tr	else return ru	end end

local function concat_maybe_moving_notes(x, y, movenotes) if movenotes then local xentry, xnotes = m_table_tools.separate_notes(x) local yentry, ynotes = m_table_tools.separate_notes(y) return xentry .. yentry .. xnotes .. ynotes else return x .. y	end end

-- Concatenate two Russian strings RU1 and RU2 that may have corresponding -- manual transliteration TR1 and TR2 (which should be nil if there is no -- manual translit). If DOPAIR, return a two-item list of the combined -- Russian and manual translit (which will be nil if both TR1 and TR2 are -- nil); else, return two values, the combined Russian and manual translit. -- If MOVENOTES, extract any footnote symbols at the end of RU1 and move -- them to the end of the concatenated string, before any footnote symbols -- for RU2; same thing goes for TR1 and TR2. function export.concat_russian_tr(ru1, tr1, ru2, tr2, dopair, movenotes) local ru, tr	if not tr1 and not tr2 then ru = concat_maybe_moving_notes(ru1, ru2, movenotes) else if not tr1 then tr1 = export.translit_no_links(ru1) end if not tr2 then tr2 = export.translit_no_links(ru2) end ru, tr = concat_maybe_moving_notes(ru1, ru2, movenotes), export.j_correction(concat_maybe_moving_notes(tr1, tr2, movenotes)) end if dopair then return {ru, tr} else return ru, tr	end end

-- Concatenate two Russian/translit combinations (where each combination is -- a two-element list of {RUSSIAN, TRANSLIT} where TRANSLIT may be nil) by -- individually concatenating the Russian and translit portions, and return -- a concatenated combination as a two-element list. If the manual translit -- portions of both terms on entry are nil, the result will also have nil -- manual translit. If MOVENOTES, extract any footnote symbols at the end -- of TERM1 and move them after the concatenated string and before any -- footnote symbols at the end of TERM2. function export.concat_paired_russian_tr(term1, term2, movenotes) assert(type(term1) == "table") assert(type(term2) == "table") local ru1, tr1 = term1[1], term1[2] local ru2, tr2 = term2[1], term2[2] return export.concat_russian_tr(ru1, tr1, ru2, tr2, "dopair", movenotes) end

function export.concat_forms(forms) local joined_rutr = {} for _, form in ipairs(forms) do		table.insert(joined_rutr, export.combine_russian_tr(form)) end return table.concat(joined_rutr, ",") end

-- Given a list of forms, where each form is a two-element list of {RUSSIAN, TRANSLIT}, strip footnote symbols from the -- end of the Russian and translit. function export.strip_notes_from_forms(forms) local newforms = {} for _, form in ipairs(forms) do		local ru, tr = form[1], form[2] ru, _ = m_table_tools.separate_notes(ru) if tr then tr, _ = m_table_tools.separate_notes(tr) end table.insert(newforms, {ru, tr}) end return newforms end

-- Given a list of forms, where each form is a two-element list of {RUSSIAN, TRANSLIT}, unzip into parallel lists of -- Russian and translit. The latter list may have gaps in it. function export.unzip_forms(forms) local rulist = {} local trlist = {} for i, form in ipairs(forms) do		local ru, tr = form[1], form[2] rulist[i] = ru		trlist[i] = tr	end return rulist, trlist end

-- Given parallel lists of Russian and translit (where the latter list may have gaps in it), return a list of forms, -- where each form is a two-element list of {RUSSIAN, TRANSLIT}. function export.zip_forms(rulist, trlist) local forms = {} for i, ru in ipairs(rulist) do		table.insert(forms, {ru, trlist[i]}) end return forms end

local function any_forms_have_translit(forms) for _, form in ipairs(forms) do		if form[2] then return true end end return false end

-- Given a list of forms, where each form is a two-element list of {RUSSIAN, TRANSLIT}, combine forms with -- identical Russian, concatenating the translit with a comma in between. function export.combine_translit_of_duplicate_forms(forms) if #forms == 0 then return forms end

-- Optimization to avoid creating a new list in the majority case when no translit exists. if not any_forms_have_translit(forms) then return forms end

local newforms = {} table.insert(newforms, {forms[1][1], forms[1][2]}) for i = 2, #forms do		local found_duplicate = false for j = 1, #newforms do			-- If the Russian of the next form is the same as that of the last one, combine their translits and modify -- newforms[] in-place. Otherwise add the next form to newforms[]. Make sure to clone the form rather than -- just appending it directly since we may modify it in-place; we don't want to side-effect `forms` as passed -- in. if forms[i][1] == newforms[j][1] then local tr1 = newforms[j][2] local tr2 = forms[i][2] if not tr1 and not tr2 then -- this shouldn't normally happen else tr1 = tr1 or export.translit_no_links(newforms[j][1]) tr2 = tr2 or export.translit_no_links(forms[i][1]) if tr1 == tr2 then -- this shouldn't normally happen else newforms[j][2] = tr1 .. ", " .. tr2 end end found_duplicate = true break end end if not found_duplicate then table.insert(newforms, {forms[i][1], forms[i][2]}) end end return newforms end

-- Given a list of forms, where each form is a two-element list of {RUSSIAN, TRANSLIT}, split cases where two different -- transliterations have been packed into a single translit field by creating two adjacent term/translit pairs. This is -- the opposite operation of combine_translit_of_duplicate_forms. function export.split_translit_of_duplicate_forms(forms) if #forms == 0 then return forms end

-- Optimization to avoid creating a new list in the majority case when no translit exists. if not any_forms_have_translit(forms) then return forms end

local newforms = {} for _, form in ipairs(forms) do		local ru, tr = unpack(form) if not tr or not tr:find(",") or ru:find(",") then table.insert(newforms, form) else local split_trs = rsplit(tr, ",%s*") local default_tr = export.translit_no_links(ru) for _, split_tr in ipairs(split_trs) do				if split_tr == default_tr then split_tr = nil end table.insert(newforms, {ru, split_tr}) end end end return newforms end

function export.strip_ending(ru, tr, ending) local strippedru = rsub(ru, ending .. "$", "") if strippedru == ru then error("Argument " .. ru .. " doesn't end with expected ending " .. ending) end ru = strippedru tr = export.strip_tr_ending(tr, ending) return ru, tr end

function export.strip_tr_ending(tr, ending) if not tr then return nil end local endingtr = rsub(export.translit_no_links(ending), "^([Jj])", "%1?") local strippedtr = rsub(tr, endingtr .. "$", "") if strippedtr == tr then error("Translit " .. tr .. " doesn't end with expected ending " .. endingtr) end return strippedtr end

return export

title: Module:User:Benwing2/ru-common