/* LabelRu.java - contexual information for definitions, or Synonyms,
* or Translations in Russian Wiktionary.
*
* Copyright (c) 2008-2013 Andrew Krizhanovsky <andrew.krizhanovsky at gmail.com>
* Distributed under EPL/LGPL/GPL/AL/BSD multi-license.
*/
package wikokit.base.wikt.multi.ru.name;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import wikokit.base.wikt.multi.en.name.LabelEn;
import java.util.regex.Pattern;
import java.util.regex.Matcher;
import wikokit.base.wikipedia.util.template.TemplateExtractor;
import wikokit.base.wikt.constant.Label;
import wikokit.base.wikt.constant.LabelLocal;
import wikokit.base.wikt.util.LabelsText;
/** Contexual information for definitions, or Synonyms, or Translations
* in Russian Wiktionary.
* <PRE>
* See http://ru.wiktionary.org/wiki/%D0%92%D0%B8%D0%BA%D0%B8%D1%81%D0%BB%D0%BE%D0%B2%D0%B0%D1%80%D1%8C:%D0%A3%D1%81%D0%BB%D0%BE%D0%B2%D0%BD%D1%8B%D0%B5_%D1%81%D0%BE%D0%BA%D1%80%D0%B0%D1%89%D0%B5%D0%BD%D0%B8%D1%8F
* http://ru.wiktionary.org/wiki/Викисловарь:Условные_сокращения </PRE>
*/
public final class LabelRu extends LabelLocal {
protected final static Map<String, Label> short_name2label = new HashMap<String, Label>();
protected final static Map<Label, String> label2short_name = new HashMap<Label, String>();
protected final static Map<String, Label> name2label = new HashMap<String, Label>();
protected final static Map<Label, String> label2name = new HashMap<Label, String>();
/** If there are more than one context label (synonyms, short name label): <synonymic_label, source_main_unique_label> */
private static Map<String, Label> multiple_synonym2label = new HashMap<String, Label>();
/** Label translation: from English label to local label */
protected static Map<Label, Label> translation_en2local = new HashMap<Label, Label>();
private final static Label[] NULL_LABEL_ARRAY = new Label[0];
private final static List<Label> NULL_LABEL_LIST = new ArrayList(0);
/** Constructor for static context labels listed in this file below.
*/
protected LabelRu(String short_name, String name,Label label_en) {
super(short_name, name, label_en);
initLabelAddedByHand(this);
if(short_name.length() == 0 || name.length() == 0 || null == label_en)
System.out.println("Error in LabelRu.LabelRu(): one of parameters is empty! label="+short_name+"; name=\'"+name+"\'; label (in English Wiktionary)=\'"+label_en.toString()+"\'.");
// it should be only one local label corresponding to the English label (LabelEn)
Label label_prev_by_label_en = translation_en2local.get(label_en);
if(null != label_prev_by_label_en)
System.out.println("Error in LabelRu.LabelRu(): duplication of LabelEn '"+ label_en.toString() +
"', short name='"+short_name+
"' name='"+name+"'. It should be only one local label corresponding to the English label. Check the map translation_en2local.");
translation_en2local.put(label_en, this);
}
/** Constructor for new context labels which are extracted by parser
* (1) from the template {{помета|new label}} or
* (2) from semantic relations' labels (word (label), in ruwikt)
* and added automatically,
* these new labels are not listed in the LabelRu.
*
* @param short_name name of the found context label
*
* !Attention, automatically added labels (LabelRu) don't have corresponding English labels (LabelEn)!
*/
public LabelRu(String short_name) {
super(short_name); // added_by_hand = false
initLabelAddedAutomatically(this);
}
protected void initLabelAddedByHand(Label label) {
if(null == label)
System.out.println("Error in LabelEn.initLabelAddedByHand(): label is null, short_name="+short_name+"; name=\'"+name+"\'.");
checksPrefixSuffixSpace(short_name);
checksPrefixSuffixSpace(name);
// check the uniqueness of the label short name and full name
Label label_prev_by_short_name = short_name2label.get(short_name);
Label label_prev_by_name = name2label.get( name);
if(null != label_prev_by_short_name)
System.out.println("Error in LabelEn.initLabelAddedByHand(): duplication of label (short name)! short name='"+short_name+
"' name='"+name+"'. Check the maps short_name2label and name2label.");
if(null != label_prev_by_name)
System.out.println("Error in LabelEn.initLabelAddedByHand(): duplication of label (full name)! short_name='"+short_name+
"' name='"+name+ "'. Check the maps short_name2label and name2label.");
short_name2label.put(short_name, label);
label2short_name.put(label, short_name);
name2label.put(name, label);
label2name.put(label, name);
};
protected void initLabelAddedAutomatically(Label label) {
if(null == label)
System.out.println("Error in LabelRu.initLabelAddedAutomatically(): label is null, short_name="+short_name+".");
checksPrefixSuffixSpace(short_name);
// check the uniqueness of the label short name
Label label_prev_by_short_name = short_name2label.get(short_name);
if(null != label_prev_by_short_name)
System.out.println("Error in LabelRu.initLabelAddedAutomatically(): duplication of label (short name)! short name='"+short_name+
"'. Check the maps short_name2label.");
short_name2label.put(short_name, label);
label2short_name.put(label, short_name);
};
/** Checks weather exists the Label (short name) by its name, checks synonyms also. */
public static boolean hasShortName(String short_name) {
return short_name2label.containsKey(short_name) ||
multiple_synonym2label.containsKey(short_name);
}
/** Gets label by short name of the label. */
public static Label getByShortName(String short_name) throws NullPointerException
{
Label label;
if(null != (label = short_name2label.get(short_name)))
return label;
if(null != (label = multiple_synonym2label.get(short_name)))
return label;
throw new NullPointerException("Null LabelRu.getByShortName(), label short_name="+ short_name);
}
/** Adds synonymic context label for the main (source) label.
* @param label source main unique label
* @param synonymic_label synonym of label (short name)
*/
public static Label addNonUniqueShortName(Label label, String synonymic_short_name) {
checksPrefixSuffixSpace(synonymic_short_name);
if(synonymic_short_name.length() > 255) {
System.out.println("Error in Label.addNonUniqueShortName(): the synonymic label='"+synonymic_short_name+
"' is too long (.length() > 255)!");
return null;
}
if(short_name2label.containsKey(synonymic_short_name)) {
System.out.println("Error in Label.addNonUniqueShortName(): the synonymic label '"+synonymic_short_name+
"' is already presented in the map label2name!");
return null;
}
if(multiple_synonym2label.containsKey(synonymic_short_name)) {
System.out.println("Error in Label.addNonUniqueShortName(): the synonymic label '"+synonymic_short_name+
"' is already presented in the map multiple_synonym2label!");
return null;
}
multiple_synonym2label.put(synonymic_short_name, label);
return label;
}
/** Checks weather exists the translation for this Label. */
public static boolean has(Label t) {
return label2short_name.containsKey(t);
}
/** Gets short name of label in local language.
* E.g. gets name of the English label "AU" ("Australia") in Russian "австрал." (LabelRu.java)
*
* @param label - English Wiktionary short label
*/
public static String getShortName (Label label) {
Label local_label = translation_en2local.get(label);
if(null == local_label)
return label.getShortName(); // if there is no translation into local language, then English name
return local_label.getShortName();
}
/** Gets name of label in local language.
* E.g. gets name of the English label "offensive" in Russian (LabelRu.java)
*
* @param label - English Wiktionary context label
*/
public static String getName (Label label) {
Label local_label = translation_en2local.get(label);
if(null == local_label)
return label.getName(); // if there is no translation into local language, then English name
return local_label.getName();
}
/** Gets all labels. */
public static Collection<Label> getAllLabels() {
return short_name2label.values();
}
/** Counts number of labels. */
public static int size() {
return short_name2label.size();
}
/** Gets all names of labels (short name). */
public static Set<String> getAllLabelShortNames() {
return short_name2label.keySet();
}
/** Temporary empty label {{помета?|XX}}, where XX - language code
* e.g. {{помета?|uk}} or {{помета?|sq}}.
*/
private final static Pattern ptrn_label_pometa_question = Pattern.compile(
// Vim: \Q{{помета?|\E[^}|]*?\}\}
"\\Q{{помета?|\\E[^}|]*?\\}\\}"
);
/** Removes a temporary empty label {{помета?|XX}}, where XX - language code,
* e.g. {{помета?|uk}} or {{помета?|sq}}
*
* @param line definition line
* @return definition text line without "{{помета?|...}}"
*/
private static String removeEmptyLabelPometa(String line)
{
Matcher m = ptrn_label_pometa_question.matcher(line);
if(m.find()){ // there is "{{помета?|...}}"
StringBuffer sb = new StringBuffer();
m.appendReplacement(sb, "");
m.appendTail(sb);
return sb.toString().trim();
}
return line;
}
/** Extracts first template parameter, except parameter "nocolor",
* and gets known LabelEn (.added_by_hand = true),
* or create new context label (.added_by_hand = false).
* add to database to the table Label with
*
* @see http://ru.wiktionary.org/wiki/Шаблон:помета
* @param params array
* @return found or created context label, null in the case of some error
*/
private static Label getPometaLabel(String[] params)
{
if(null == params || params.length == 0)
return null;
//Label result; // pometa_label
String str = params[0];
if(str.length() > 8 && str.startsWith("nocolor=")) {
if(params.length == 1) {
return null; // there is only one parameter: {{помета|nocolor=1}}
} else {
str = params[1];// let's check the parameter after the "|nocolor=1|" parameter
}
}
if(null == str || str.length() == 0)
return null;
if(LabelRu.hasShortName( str ))
return LabelRu.getByShortName( str );
//return new LabelEn(str, LabelCategory.unknown); // let's create new context label
return new LabelRu(str); // let's create new context label
}
/** Extracts label from the first template from the beginning of the text string,
* remove this template from the text line,
* store the result to the object LabelText.
*
* @param line (wikified) definition line
* @return labels array (empty array if absent)
* and a definition text line without context labels substring,
* return NULL if there is no text and context labels
*/
private static LabelsText extractFirstContextLabel(String line)
{
LabelsText result = null;
List<Label> labels = new ArrayList<Label>();
// 1. extract labels {{экон.|en}} or {{экон.}}, or {{помета|экон.}}
// @returns: name of template, array of parameters, first and last position of the template in the source string
TemplateExtractor te = TemplateExtractor.getFirstTemplate(line);
if(null == te)
return new LabelsText(NULL_LABEL_ARRAY, line); // there are no any templates
String template_name = te.getName();
String text_from_label = "";
if(LabelRu.hasShortName( template_name )) {
int number_of_params = te.countTemplateParameters();
String[] template_params = te.getTemplateParameters();
Label l = LabelRu.getByShortName(template_name);
if(Label.equals( l, LabelEn.context )) { // {{помета|}}
Label pometa_label = getPometaLabel( template_params );
if(null != pometa_label)
labels.add( pometa_label );
} else if (LabelParamsRu.isLabelWithParams(l, number_of_params)) { //
Label result_label = LabelParamsRu.getNewLabelByParams (l, template_params);
if(null != result_label)
labels.add(result_label);
} else if (FormOfRu.isDefinitionTransformingLabel(l, number_of_params)) {
// 2. special templates, which require special treatment, they will be stripped right now
// {{=|
// {{as ru|
// {{аббр.|en|abbreviation|description}} -> context label "аббр." and text "[[description]]"
// {{сокр.|en|identification|[[идентификация]]}} or {{сокр.|en|identification}}; [[идентификация]]
text_from_label = FormOfRu.transformTemplateToText(l, template_params);
labels.add( l );
} else {
labels.add(l);
}
String text_before = TemplateExtractor.extractTextBeforeTemplate(line, te);
if (text_before.length() < 10 || // or very short text, e.g. {{label1}} ``and`` {{label2}}
text_before.matches("[\\s\\pP]*")) // between (or before) context labels only space and punctuation marks could be
{
String text_wo_labels = text_from_label.concat( TemplateExtractor.extractTextAfterTemplate(line, te) );
result = new LabelsText(labels, text_wo_labels);
} else {
if (text_before.length() >= 10){ // "# some definition and {{the label at the end of definition}}"
String text_wo_labels = text_before.concat( text_from_label.concat( TemplateExtractor.extractTextAfterTemplate(line, te) ));
result = new LabelsText(labels, text_wo_labels.trim());
}
}
//if(0 == te.countTemplateParameters()) { // {{zero parameters}}
//}
} else {
result = new LabelsText(NULL_LABEL_ARRAY, line); // this template is not context label
}
return result;
}
/** Extracts labels from the beginning of the text string, remove these labels from the text line,
* store the result to the object LabelText.
*
* @param line (wikified) definition line
* @return labels array (NULL if absent) and a definition text line without context labels substring,
* return NULL if there is no text and context labels
*/
public static LabelsText extractLabelsTrimText(String line)
{
line = removeEmptyLabelPometa(line);
if(line.length() == 0)
return null;
if(!line.contains("{{")) // every context label should be a template "{{"
return new LabelsText(NULL_LABEL_ARRAY, line);
List<Label> labels = new ArrayList<Label>();
LabelsText lt = extractFirstContextLabel(line);
while(lt != null && lt.getLabels().length > 0) {
labels.addAll(Arrays.asList(lt.getLabels()));
lt = extractFirstContextLabel(lt.getText());
}
String result_line = "";
if(lt != null)
result_line = lt.getText().trim();
return new LabelsText(labels, result_line);
}
/** Parses text with use of some pattern, creates list of labels,
* e.g. text is "устар., высок." or "{{груб.|-}}".
* This function should be used to split list of labels taken from wikified list of synonyms.
* @return empty list if there is no labels.
*/
public static List<Label> createSplitByPattern(String text, Pattern pattern)
{
List<Label> _labels = new ArrayList(0);
if(text==null || 0 == text.trim().length()) {
return NULL_LABEL_LIST;
}
String[] ll = pattern.split(text); // split by pattern
for(String l : ll) {
l = l.trim();
LabelsText result = LabelRu.extractLabelsTrimText(l);
Label[] result_labels = result.getLabels();
if (result_labels.length>0) {
_labels.add(result_labels[0]);
} else {
if(LabelRu.hasShortName( l )) {
_labels.add(LabelRu.getByShortName( l ));
} else {
// if this is an unusual label, then add it to the table of labels
_labels.add( new LabelRu( l ) ); // let's create new context label
}
}
}
return _labels;
}
// ///////////////////////////////////////////////////////////////////////////////////////
// context label short, context label full name, Category of words with this context label
public static final Label context = new LabelRu("помета", "помета", LabelEn.context);// meta context label will be treated in a special way. http://ru.wiktionary.org/wiki/Шаблон:помета
// this is a fake label, which shouldn't be visible to user in GUI
public static final Label partial = new LabelRu("частичн.", "частичный", LabelEn.partial);
// grammatical - грамматические категории
// //////////////////////////
public static final Label abbreviation = new LabelRu("аббр.", "аббревиатура", LabelEn.abbreviation);
public static final Label abbreviation_sokr = LabelRu.addNonUniqueShortName(abbreviation, "сокр.");
public static final Label adjectival = new LabelRu("адъектив.", "адъективное", LabelEn.adjectival);
public static final Label impersonal = new LabelRu("безл.", "безличное", LabelEn.impersonal);
public static final Label accusative = new LabelRu("вин. п.", "винительный падеж", LabelEn.accusative); // absent
public static final Label parenthetical_word = new LabelRu("вводн.", "вводное слово", LabelEn.parenthetical_word);
public static final Label interrogative = new LabelRu("вопр.", "в вопросительных предложениях", LabelEn.interrogative);
public static final Label exclamatory = new LabelRu("восклиц.", "в восклицательных предложениях", LabelEn.exclamatory);
public static final Label verb = new LabelRu("гл.", "глагол", LabelEn.verb); // absent
public static final Label dative = new LabelRu("дат. п.", "дательный падеж", LabelEn.dative); // absent
public static final Label feminine_formed_from_male = new LabelRu("женск.", "женского рода, образованные от мужского", LabelEn.feminine_formed_from_male);
public static final Label feminine_gender = new LabelRu("ж. р.", "женский род", LabelEn.feminine_gender); // absent
public static final Label singular = new LabelRu("ед. ч.", "единственное число", LabelEn.singular);
public static final Label singular2 = LabelRu.addNonUniqueShortName(singular, "ед.");
public static final Label nominative_case = new LabelRu("им. п.", "именительный падеж", LabelEn.nominative_case); // absent
public static final Label countable = new LabelRu("исч.", "исчислимое", LabelEn.countable);
public static final Label ablative = new LabelRu("исх. п.", "исходный падеж", LabelEn.ablative); // absent
public static final Label masculine_gender = new LabelRu("м. р.", "мужской род", LabelEn.masculine_gender); // absent
public static final Label locative = new LabelRu("местн. п.", "местный падеж", LabelEn.locative); // absent
public static final Label frequentative = new LabelRu("многокр.", "со значением многократности действия", LabelEn.frequentative);//form-of
public static final Label in_the_plural = new LabelRu("мн. ч.", "множественное число", LabelEn.in_the_plural);
public static final Label in_the_plural2 = LabelRu.addNonUniqueShortName(in_the_plural, "мн");
public static final Label adverb = new LabelRu("нареч.", "наречие", LabelEn.adverb);// form-of
public static final Label adverb2 = LabelRu.addNonUniqueShortName(adverb, "наречие");
public static final Label inanimate = new LabelRu("неодуш.", "неодушевлённое", LabelEn.inanimate);
public static final Label intransitive = new LabelRu("неперех.", "непереходный глагол", LabelEn.intransitive);
public static final Label uncountable = new LabelRu("неисч.", "неисчислимое", LabelEn.uncountable);
public static final Label indecl = new LabelRu("нескл.", "несклоняемое", LabelEn.indecl);
public static final Label generalized_abstract = new LabelRu("обобщ.", "обобщённое", LabelEn.generalized_abstract); // absent
public static final Label common_gender = new LabelRu("общ.", "форма общего рода", LabelEn.common_gender); // absent
public static final Label momentane = new LabelRu("однокр.", "со значением мгновенности или однократности действия", LabelEn.momentane);//form-of
public static final Label animate = new LabelRu("одуш.", "одушевлённое", LabelEn.animate);
public static final Label negative = new LabelRu("отриц.", "в отрицательных предложениях", LabelEn.negative);
public static final Label transitive = new LabelRu("перех.", "переходный глагол", LabelEn.transitive);
public static final Label imperative = new LabelRu("повел.", "в предложениях в повелительном наклонении", LabelEn.imperative);
public static final Label predicate = new LabelRu("предик.", "предикатив", LabelEn.predicate);
public static final Label prepositional_case = new LabelRu("предл. п.", "предложный падеж", LabelEn.prepositional_case); // absent
public static final Label adjective = new LabelRu("прил.", "прилагательное", LabelEn.adjective); // absent
public static final Label participle = new LabelRu("прич.", "причастие", LabelEn.participle);
public static final Label past_tense = new LabelRu("прош.", "прошедшее время, прошедшего времени", LabelEn.past_tense); // absent
public static final Label genitive_case = new LabelRu("род. п.", "родительный падеж", LabelEn.genitive_case); // absent
public static final Label collective = new LabelRu("собир.", "собирательное", LabelEn.collective);
public static final Label collective2 = LabelRu.addNonUniqueShortName(collective, "собират.");
public static final Label neuter_gender = new LabelRu("ср. р.", "средний род", LabelEn.neuter_gender); // absent
public static final Label passive = new LabelRu("страд.", "страдательный (залог)", LabelEn.passive);
public static final Label substantivized = new LabelRu("субстантивир.", "субстантивированное", LabelEn.substantivized);
public static final Label substantivized2 = LabelRu.addNonUniqueShortName(substantivized, "субст.");
public static final Label noun = new LabelRu("сущ.", "существительное", LabelEn.noun); // absent
public static final Label instrumental = new LabelRu("тв. п.", "творительный падеж", LabelEn.instrumental); // absent
// period
// //////////////////////////
public static final Label historical = new LabelRu("истор.", "историческое", LabelEn.historical);
public static final Label neologism = new LabelRu("неол.", "неологизм", LabelEn.neologism);
public static final Label archaic = new LabelRu("старин.", "старинное", LabelEn.archaic);
public static final Label obsolete = new LabelRu("устар.", "устаревшее", LabelEn.obsolete);
// qualifier
// //////////////////////////
public static final Label literally = new LabelRu("букв.", "буквально", LabelEn.literally);
public static final Label humorously = new LabelRu("шутл.", "шутливое", LabelEn.humorously);
// regional - языковая принадлежность
// //////////////////////////
public static final Label Avar = new LabelRu("аварск.", "аварское", LabelEn.Avar);
public static final Label Australia = new LabelRu("австрал.", "австралийское вариант английского языка", LabelEn.Australia);
public static final Label Albania = new LabelRu("алб.", "албанское", LabelEn.Albania);
public static final Label Adygei = new LabelRu("адыг.", "адыгское", LabelEn.Adygei);
public static final Label Azerbaijan = new LabelRu("азерб.", "азербайджанское", LabelEn.Azerbaijan);
public static final Label Aymara = new LabelRu("айм.", "аймарское", LabelEn.Aymara);
public static final Label Ainu = new LabelRu("айнск.", "айнское", LabelEn.Ainu);
public static final Label Alemannic = new LabelRu("алем.", "алеманнское", LabelEn.Alemannic);
public static final Label US = new LabelRu("амер.", "американский вариант английского языка", LabelEn.US);
public static final Label England = new LabelRu("англ.", "английское", LabelEn.England);
public static final Label Arabic = new LabelRu("арабск.", "арабское", LabelEn.Arabic);
public static final Label Aragonese = new LabelRu("араг.", "арагонское", LabelEn.Aragonese);
public static final Label Armenia = new LabelRu("арм.", "армянское", LabelEn.Armenia);
public static final Label Assam = new LabelRu("ассамск.", "ассамское", LabelEn.Assam);
public static final Label Asturias = new LabelRu("астур.", "астурийское", LabelEn.Asturias);
public static final Label Afrikaans = new LabelRu("афр.", "африкаанс", LabelEn.Afrikaans);
public static final Label Basque = new LabelRu("баскск.", "баскское", LabelEn.Basque);
public static final Label Bashkiria = new LabelRu("башк.", "башкирское", LabelEn.Bashkiria);
public static final Label Belarus = new LabelRu("белор.", "белорусское", LabelEn.Belarus);
public static final Label Belgium = new LabelRu("бельг.", "бельгийский вариант нидерландского языка", LabelEn.Belgium);
public static final Label Bengal = new LabelRu("бенг.", "бенгальское", LabelEn.Bengal);
public static final Label Bulgaria = new LabelRu("болг.", "болгарское", LabelEn.Bulgaria);
public static final Label Bosnia = new LabelRu("босн.", "боснийское", LabelEn.Bosnia);
public static final Label Brazil = new LabelRu("браз.", "бразильский вариант португальского языка", LabelEn.Brazil);
public static final Label Breton = new LabelRu("брет.", "бретонское", LabelEn.Breton);
public static final Label British = new LabelRu("брит.", "британский вариант английского языка", LabelEn.British);
public static final Label Buryat = new LabelRu("бурятск.", "бурятское", LabelEn.Buryat);
public static final Label Wales = new LabelRu("валл.", "валлийское", LabelEn.Wales);
public static final Label Walloon = new LabelRu("валлонск.", "валлонское", LabelEn.Walloon);
public static final Label Waray = new LabelRu("варайск.", "варайское", LabelEn.Waray);
public static final Label Hungary = new LabelRu("венг.", "венгерское", LabelEn.Hungary);
public static final Label Veps = new LabelRu("вепсск.", "вепсское", LabelEn.Veps);
public static final Label Hollandic = new LabelRu("голл.", "голландский вариант нидерландского языка", LabelEn.Hollandic);
public static final Label Greece = new LabelRu("греч.", "греческое", LabelEn.Greece);
public static final Label Denmark = new LabelRu("датск.", "датское", LabelEn.Denmark);
public static final Label Dominican_Republic = new LabelRu("доминик.", "доминиканский вариант испанского языка", LabelEn.Dominican_Republic);
public static final Label Doric_Greek = new LabelRu("дор.", "дорийский диалект древнегреческого языка", LabelEn.Doric_Greek);
public static final Label Old_High_German = new LabelRu("др.-в.-нем.", "древневерхненемецкое", LabelEn.Old_High_German);
public static final Label Old_Prussian = new LabelRu("др.-прусск.", "древнепрусское", LabelEn.Old_Prussian);
public static final Label Samogitia = new LabelRu("жем.", "жемайтское", LabelEn.Samogitia);
public static final Label Indonesia = new LabelRu("индонез.", "индонезийское", LabelEn.Indonesia);
public static final Label Ionic_Greek = new LabelRu("ион.", "ионийский диалект древнегреческого языка", LabelEn.Ionic_Greek);
public static final Label Ireland = new LabelRu("ирл.", "ирландский вариант английского языка", LabelEn.Ireland);
public static final Label Spain = new LabelRu("исп.", "испанское", LabelEn.Spain);
public static final Label Iceland = new LabelRu("исл.", "исландское", LabelEn.Iceland);
public static final Label Italy = new LabelRu("итал.", "итальянское", LabelEn.Italy);
public static final Label Itelmen = new LabelRu("ительм.", "ительменское", LabelEn.Itelmen);
public static final Label Yoruba = new LabelRu("йор.", "йоруба", LabelEn.Yoruba);
public static final Label Kazakhstan = new LabelRu("казахск.", "казахское", LabelEn.Kazakhstan);
public static final Label Canada = new LabelRu("канадск.", "канадское", LabelEn.Canada);
public static final Label Karelia = new LabelRu("карел.", "карельское", LabelEn.Karelia);
public static final Label Kashmiri = new LabelRu("кашм.", "кашмири", LabelEn.Kashmiri);
public static final Label Kashubian = new LabelRu("кашубск.", "кашубское", LabelEn.Kashubian);
public static final Label Kyrgyzstan = new LabelRu("кирг.", "киргизское", LabelEn.Kyrgyzstan);
public static final Label Korea = new LabelRu("кор.", "корейское", LabelEn.Korea);
public static final Label Cornwall = new LabelRu("корнск.", "корнское", LabelEn.Cornwall);
public static final Label Kuban = new LabelRu("кубан.", "кубанское", LabelEn.Kuban);
public static final Label Kurdish = new LabelRu("курдск.", "курдское", LabelEn.Kurdish);
public static final Label Khmer = new LabelRu("кхмерск.", "кхмерское", LabelEn.Khmer);
public static final Label Lak = new LabelRu("лакск.", "лакское", LabelEn.Lak);
public static final Label Laos = new LabelRu("лаосск.", "лаосское", LabelEn.Laos);
public static final Label Latin = new LabelRu("лат.", "латинское", LabelEn.Latin);
public static final Label Latgale = new LabelRu("латг.", "латгальское", LabelEn.Latgale);
public static final Label Latvia = new LabelRu("латышск.", "латышское", LabelEn.Latvia);
public static final Label Livonian = new LabelRu("лив.", "ливский", LabelEn.Livonian);
public static final Label Lithuania = new LabelRu("литовск.", "литовское", LabelEn.Lithuania);
public static final Label Lusatia = new LabelRu("луж.", "лужицкое", LabelEn.Lusatia);
public static final Label Macedonia = new LabelRu("макед.", "македонское", LabelEn.Macedonia);
public static final Label Malagasy = new LabelRu("малаг.", "малагасийское", LabelEn.Malagasy);
public static final Label Malaysia = new LabelRu("малайск.", "малайское", LabelEn.Malaysia);
public static final Label Malta = new LabelRu("мальт.", "мальтийское", LabelEn.Malta);
public static final Label Megrelia = new LabelRu("мегр.", "мегрельское", LabelEn.Megrelia);
public static final Label Moldavia = new LabelRu("молд.", "молдавское", LabelEn.Moldavia);
public static final Label Mongolia = new LabelRu("монг.", "монгольское", LabelEn.Mongolia);
public static final Label Mon = new LabelRu("монск.", "монское", LabelEn.Mon);
public static final Label Naples = new LabelRu("неап.", "неаполитанское", LabelEn.Naples);
public static final Label Nepal_Bhasa = new LabelRu("нев.", "неварское", LabelEn.Nepal_Bhasa);
public static final Label Germany = new LabelRu("нем.", "немецкое", LabelEn.Germany);
public static final Label Nenets = new LabelRu("нен.", "ненецкое", LabelEn.Nenets);
public static final Label Nepal = new LabelRu("непальск.", "непальское", LabelEn.Nepal);
public static final Label Netherlands = new LabelRu("нидерл.", "нидерландское", LabelEn.Netherlands);
public static final Label New_Zealand = new LabelRu("нов.-зел.", "ново-зеландский вариант английского языка", LabelEn.New_Zealand);
public static final Label Norway = new LabelRu("норв.", "норвежское", LabelEn.Norway);
public static final Label Occitania = new LabelRu("оксит.", "окситанское", LabelEn.Occitania);
public static final Label regional = new LabelRu("обл.", "областное", LabelEn.regional);
public static final Label regional_reg = LabelRu.addNonUniqueShortName(regional, "рег.");
public static final Label regional_mestn = LabelRu.addNonUniqueShortName(regional, "местн.");
public static final Label Ossetia = new LabelRu("осет.", "осетинское", LabelEn.Ossetia);
public static final Label Punjab = new LabelRu("пандж.", "панджабское", LabelEn.Punjab);
public static final Label Persian = new LabelRu("перс.", "персидское", LabelEn.Persian);
public static final Label Polabian = new LabelRu("полабск.", "полабское", LabelEn.Polabian);
public static final Label Poland = new LabelRu("польск.", "польское", LabelEn.Poland);
public static final Label Portugal = new LabelRu("порт.", "португальское", LabelEn.Portugal);
public static final Label Prussia = new LabelRu("прусск.", "прусское", LabelEn.Prussia);
public static final Label Romania = new LabelRu("румынск.", "румынское", LabelEn.Romania);
public static final Label Russia = new LabelRu("русск.", "русское", LabelEn.Russia);
public static final Label Sanskrit = new LabelRu("санскр.", "санскритское", LabelEn.Sanskrit);
public static final Label Serbo_Croat = new LabelRu("сербохорв.", "сербохорватское", LabelEn.Serbo_Croat);
public static final Label Serbia = new LabelRu("сербск.", "сербское", LabelEn.Serbia);
public static final Label Silesia = new LabelRu("силезск.", "силезское", LabelEn.Silesia);
public static final Label Slovakia = new LabelRu("словацк.", "словацкое", LabelEn.Slovakia);
public static final Label Slovenia = new LabelRu("словенск.", "словенское", LabelEn.Slovenia);
public static final Label Tabasaran = new LabelRu("табас.", "табасаранское", LabelEn.Tabasaran);
public static final Label Tagalog = new LabelRu("таг.", "тагальское", LabelEn.Tagalog);
public static final Label Tajikistan = new LabelRu("тадж.", "таджикское", LabelEn.Tajikistan);
public static final Label Taiwan = new LabelRu("тайв.", "тайваньский вариант китайского языка", LabelEn.Taiwan);
public static final Label Thai = new LabelRu("тайск.", "тайское", LabelEn.Thai);
public static final Label Tamil = new LabelRu("тамильск.", "тамильское", LabelEn.Tamil);
public static final Label Tatarstan = new LabelRu("тат.", "татарское", LabelEn.Tatarstan);
public static final Label Tat = new LabelRu("татск.", "татское", LabelEn.Tat);
public static final Label Tosk = new LabelRu("тоскск.", "тоскский", LabelEn.Tosk);
public static final Label Turkey = new LabelRu("тур.", "турецкое", LabelEn.Turkey);
public static final Label Turkmenistan = new LabelRu("туркм.", "туркменское", LabelEn.Turkmenistan);
public static final Label Turkic = new LabelRu("тюркск.", "тюркское", LabelEn.Turkic);
public static final Label Udmurtia = new LabelRu("удм.", "удмуртское", LabelEn.Udmurtia);
public static final Label Uzbekistan = new LabelRu("узб.", "узбекское", LabelEn.Uzbekistan);
public static final Label Uyghur = new LabelRu("уйг.", "уйгурское", LabelEn.Uyghur);
public static final Label Ukraine = new LabelRu("укр.", "украинское", LabelEn.Ukraine);
public static final Label Faroese = new LabelRu("фарерск.", "фарерское", LabelEn.Faroese);
public static final Label Fiji = new LabelRu("фидж.", "фиджийское", LabelEn.Fiji);
public static final Label Finland = new LabelRu("финск.", "финское", LabelEn.Finland);
public static final Label France = new LabelRu("франц.", "французское", LabelEn.France);
public static final Label Frisia = new LabelRu("фризск.", "фризское", LabelEn.Frisia);
public static final Label Friuli = new LabelRu("фриульск.", "фриульское", LabelEn.Friuli);
public static final Label Khakassia = new LabelRu("хак.", "хакасское", LabelEn.Khakassia);
public static final Label Hittite = new LabelRu("хеттск.", "хеттское", LabelEn.Hittite);
public static final Label Croatia = new LabelRu("хорв.", "хорватское", LabelEn.Croatia);
public static final Label Church_Slavonic = new LabelRu("церк.-слав.", "церковно-славянское", LabelEn.Church_Slavonic);
public static final Label Romani = new LabelRu("цыг.", "цыганское", LabelEn.Romani);
public static final Label Chechen_Republic = new LabelRu("чеч.", "чеченское", LabelEn.Chechen_Republic);
public static final Label Czech_Republic = new LabelRu("чешск.", "чешское", LabelEn.Czech_Republic);
public static final Label Chile = new LabelRu("чили", "чилийский вариант испанского языка", LabelEn.Chile);
public static final Label Chuvashia = new LabelRu("чув.", "чувашское", LabelEn.Chuvashia);
public static final Label Sweden = new LabelRu("шведск.", "шведское", LabelEn.Sweden);
public static final Label Switzerland = new LabelRu("швейц.", "швейцарский вариант немецкого языка", LabelEn.Switzerland);
public static final Label Sherpa = new LabelRu("шерпск.", "шерпское", LabelEn.Sherpa);
public static final Label Shor = new LabelRu("шорск.", "шорское", LabelEn.Shor);
public static final Label Scotland = new LabelRu("шотл.", "шотландский вариант английского языка", LabelEn.Scotland);
public static final Label Evenki = new LabelRu("эвенк.", "эвенкийское", LabelEn.Evenki);
public static final Label Even = new LabelRu("эвенск.", "эвенское", LabelEn.Even);
public static final Label Aeolic_Greek = new LabelRu("эол.", "эолийский диалект древнегреческого языка", LabelEn.Aeolic_Greek);
public static final Label Erzya = new LabelRu("эрз.", "эрзянское", LabelEn.Erzya);
public static final Label Estonia = new LabelRu("эст.", "эстонское", LabelEn.Estonia);
public static final Label South_Africa = new LabelRu("южноафр.", "южноафриканское", LabelEn.South_Africa);
public static final Label Javanese = new LabelRu("яванск.", "яванское", LabelEn.Javanese);
public static final Label Sakha_Republic = new LabelRu("якутск.", "якутское", LabelEn.Sakha_Republic);
public static final Label Japan = new LabelRu("яп.", "японское", LabelEn.Japan);
// usage - стиль
// //////////////////////////
public static final Label abusive = new LabelRu("бранн.", "бранное", LabelEn.abusive);
public static final Label abusive2 = LabelRu.addNonUniqueShortName(abusive, "бран.");
public static final Label abusive3 = LabelRu.addNonUniqueShortName(abusive, "оскорб.");
public static final Label vulgar = new LabelRu("вульг.", "вульгарное", LabelEn.vulgar);
//public static final Label bombast = new LabelRu("высок.", "высокопарное", LabelEn.bombast);
public static final Label high_register = new LabelRu("высок.", "высокое", LabelEn.high_register);
public static final Label acerbity = new LabelRu("груб.", "грубое", LabelEn.acerbity);
public static final Label childish = new LabelRu("детск.", "детское", LabelEn.childish);
public static final Label clipping = new LabelRu("усеч.", "усечённое", LabelEn.clipping);
public static final Label dialect = new LabelRu("диал.", "диалектное", LabelEn.dialect);
public static final Label dysphemism = new LabelRu("дисфм.", "дисфемизм", LabelEn.dysphemism);
public static final Label cant = new LabelRu("жарг.", "жаргонное", LabelEn.cant);
public static final Label Internet_slang = new LabelRu("интернет.", "интернетовский жаргон", LabelEn.Internet_slang);
public static final Label ironic = new LabelRu("ирон.", "ироничное", LabelEn.sarcastic);
public static final Label distorted = new LabelRu("искаж.", "искажённое", LabelEn.distorted);
public static final Label beaurocratic = new LabelRu("канц.", "канцелярское", LabelEn.beaurocratic);
public static final Label literary = new LabelRu("книжн.", "книжное", LabelEn.literary);
public static final Label computerese = new LabelRu("комп.жарг.", "компьютерный жаргон", LabelEn.computerese); // absent
public static final Label endearing = new LabelRu("ласк.", "ласкательное", LabelEn.endearing);
public static final Label obscene_language = new LabelRu("обсц.", "обсценное", LabelEn.obscene_language);
public static final Label obscene_language2 = LabelRu.addNonUniqueShortName(obscene_language, "мат");
public static final Label youth = new LabelRu("мол.", "молодёжное", LabelEn.youth);
public static final Label folk_poetic = new LabelRu("нар.-поэт.", "народно-поэтическое", LabelEn.folk_poetic);
public static final Label folk_colloquial = new LabelRu("нар.-разг.", "народно-разговорное", LabelEn.folk_colloquial);
public static final Label folk_colloquial2 = LabelRu.addNonUniqueShortName(folk_colloquial, "трад.-нар.");
public static final Label pejorative = new LabelRu("неодобр.", "неодобрительное", LabelEn.pejorative);// унич. неодобр. умаляющий
public static final Label approving = new LabelRu("одобр.", "одобрительное", LabelEn.approving);
public static final Label formal = new LabelRu("офиц.", "официальное", LabelEn.formal);
public static final Label figuratively = new LabelRu("перен.", "переносное значение", LabelEn.figuratively);
public static final Label figuratively_p = LabelRu.addNonUniqueShortName(figuratively, "п.");
public static final Label politically_correct = new LabelRu("политкорр.", "политкорректное выражение", LabelEn.politically_correct);
public static final Label politically_correct2 = LabelRu.addNonUniqueShortName(politically_correct, "пк");
public static final Label poetic = new LabelRu("поэт.", "поэтическое", LabelEn.poetic);
public static final Label contemptuous = new LabelRu("презр.", "презрительное", LabelEn.contemptuous);
public static final Label scornful = new LabelRu("пренебр.", "пренебрежительное", LabelEn.scornful);
public static final Label scornful2 = LabelRu.addNonUniqueShortName(scornful, "пренебр");
public static final Label others = new LabelRu("пр.", "прочее", LabelEn.others); // absent
public static final Label popular_language = new LabelRu("прост.", "просторечное", LabelEn.popular_language);
public static final Label colloquial = new LabelRu("разг.", "разговорное", LabelEn.colloquial);
public static final Label rare = new LabelRu("редк.", "редкое", LabelEn.rare);
public static final Label rhetoric = new LabelRu("ритор.", "риторическое", LabelEn.rhetoric);
public static final Label slang = new LabelRu("сленг", "сленг", LabelEn.slang);
public static final Label low_style = new LabelRu("сниж.", "сниженное", LabelEn.low_style);
public static final Label student_slang = new LabelRu("студ.жарг.", "студенческий жаргон", LabelEn.student_slang);
public static final Label student_slang2 = LabelRu.addNonUniqueShortName(student_slang, "студ. жарг.");
public static final Label tabooed = new LabelRu("табу", "табуированное", LabelEn.tabooed);
public static final Label technical_jargon = new LabelRu("техн.жарг.", "технический жаргон", LabelEn.technical_jargon); // absent
public static final Label manufacturing = new LabelRu("технол.", "технологическое", LabelEn.manufacturing);
public static final Label solemn = new LabelRu("торж.", "торжественное", LabelEn.solemn);
public static final Label traditionally_poetic = new LabelRu("трад.-поэт.", "традиционно-поэтическое", LabelEn.traditionally_poetic);
public static final Label augmentative = new LabelRu("увелич.", "увеличительное", LabelEn.augmentative);
public static final Label augmentative2 = LabelRu.addNonUniqueShortName(augmentative, "увеличит.");
public static final Label reproach = new LabelRu("укор.", "укорительное", LabelEn.reproach); // absent
public static final Label diminutive = new LabelRu("уменьш.", "уменьшительное", LabelEn.diminutive);
public static final Label diminutive_hypocoristic = new LabelRu("умласк.", "уменьшительно-ласкательное", LabelEn.diminutive_hypocoristic);
public static final Label diminutive_hypocoristic2 = LabelRu.addNonUniqueShortName(diminutive_hypocoristic, "умласк");
public static final Label diminutive_hypocoristic3 = LabelRu.addNonUniqueShortName(diminutive_hypocoristic, "гипокор.");
public static final Label derogatory = new LabelRu("унич.", "уничижительное", LabelEn.derogatory);// унич. порицательный
public static final Label derogatory2 = LabelRu.addNonUniqueShortName(derogatory, "уничиж.");
public static final Label corroborative = new LabelRu("усилит.", "усилительное", LabelEn.corroborative);
public static final Label familiar = new LabelRu("фам.", "фамильярное", LabelEn.familiar);
public static final Label euphemistic = new LabelRu("эвф.", "эвфемизм", LabelEn.euphemistic);
public static final Label expressive = new LabelRu("экспр.", "экспрессивное", LabelEn.expressive);
public static final Label cacography = new LabelRu("эррат.", "эрративное", LabelEn.cacography);
// topical - предметные области + жаргон
// //////////////////////////
public static final Label aviation = new LabelRu("авиац.", "авиационное", LabelEn.aviation);
public static final Label vehicle = new LabelRu("автомоб.", "автомобильное", LabelEn.vehicle);
public static final Label agronomy = new LabelRu("агрон.", "агрономическое", LabelEn.agronomy);
public static final Label climbing = new LabelRu("альп.", "альпинистское", LabelEn.climbing);
public static final Label anatomy = new LabelRu("анат.", "анатомическое", LabelEn.anatomy);
public static final Label artillery = new LabelRu("артилл.", "артиллерийское", LabelEn.artillery);
public static final Label architecture = new LabelRu("архит.", "архитектурное", LabelEn.architecture);
public static final Label astrology = new LabelRu("астрол.", "астрологическое", LabelEn.astrology);
public static final Label accounting = new LabelRu("бухг.", "бухгалтерское", LabelEn.accounting);
public static final Label biblical = new LabelRu("библейск.", "библейское", LabelEn.biblical);
public static final Label veterinary_medicine = new LabelRu("вет.", "ветеринарное", LabelEn.veterinary_medicine);
public static final Label military = new LabelRu("военн.", "военное", LabelEn.military);
public static final Label military2 = LabelRu.addNonUniqueShortName(military, "воен.");
public static final Label gastronomic = new LabelRu("гастрон.", "гастрономическое", LabelEn.gastronomic);
public static final Label genetics = new LabelRu("генет.", "молекулярная биология и генетика", LabelEn.genetics);
public static final Label grammar = new LabelRu("грам.", "грамматическое", LabelEn.grammar);
public static final Label geography = new LabelRu("геогр.", "географическое", LabelEn.geography);
public static final Label geodesy = new LabelRu("геод.", "геодезическое", LabelEn.geodesy);
public static final Label geophysics = new LabelRu("геофиз.", "геофизическое", LabelEn.geophysics);
public static final Label heraldry = new LabelRu("геральд.", "геральдическое", LabelEn.heraldry);
public static final Label geometry = new LabelRu("геометр.", "геометрическое", LabelEn.geometry);
public static final Label geology = new LabelRu("геол.", "геологическое", LabelEn.geology);
public static final Label hydraulic_engineering = new LabelRu("гидротехн.", "гидротехническое", LabelEn.hydraulic_engineering);
public static final Label hydrology = new LabelRu("гидрол.", "гидрологическое", LabelEn.hydrology);
public static final Label mining = new LabelRu("горн.", "горное дело", LabelEn.mining);
public static final Label diplomacy = new LabelRu("дипл.", "дипломатическое", LabelEn.diplomacy);
public static final Label natural_science = new LabelRu("ест.", "естествознание", LabelEn.natural_science);
public static final Label Wiktionary_and_WMF_jargon = new LabelRu("жаргон википроектов", "жаргон википроектов", LabelEn.Wiktionary_and_WMF_jargon);
public static final Label rail_transport = new LabelRu("ж.-д.", "железнодорожное", LabelEn.rail_transport);
public static final Label rail_transport2 = LabelRu.addNonUniqueShortName(rail_transport, "жд");
public static final Label painting = new LabelRu("живоп.", "живопись", LabelEn.painting);
public static final Label arts = new LabelRu("искусств.", "искусствоведческое", LabelEn.arts);
public static final Label ichthyology = new LabelRu("ихтиол.", "ихтиологическое", LabelEn.ichthyology);
public static final Label yoga = new LabelRu("йогич.", "йогическое", LabelEn.yoga);
public static final Label card_games = new LabelRu("карт.", "картёжное", LabelEn.card_games);
public static final Label ceramics = new LabelRu("керам.", "керамическое", LabelEn.ceramics);
public static final Label cinematography = new LabelRu("кино", "кинематографическое", LabelEn.cinematography);
public static final Label cynology = new LabelRu("кинол.", "кинологическое", LabelEn.cynology);
public static final Label space_science = new LabelRu("косм.", "космическое", LabelEn.space_science);
public static final Label criminal = new LabelRu("крим.", "криминальное", LabelEn.criminal);
public static final Label cooking = new LabelRu("кулин.", "кулинарное", LabelEn.cooking);
public static final Label cultural_anthropology = new LabelRu("культурол.", "культурологическое", LabelEn.cultural_anthropology);
public static final Label forestry = new LabelRu("лес.", "лесоводство", LabelEn.forestry);
public static final Label linguistics = new LabelRu("лингв.", "лингвистическое", LabelEn.linguistics);
public static final Label mechanical_engineering = new LabelRu("машин.", "машиностроительное", LabelEn.mechanical_engineering);
public static final Label microbiology = new LabelRu("микробиол.", "микробиологическое", LabelEn.microbiology);
public static final Label mechanics = new LabelRu("мех.", "механика", LabelEn.mechanics);
public static final Label mineralogy = new LabelRu("минер.", "минералогия", LabelEn.mineralogy);
public static final Label meteorology = new LabelRu("метеорол.", "метеорологическое", LabelEn.meteorology);
public static final Label metallurgy = new LabelRu("металл.", "металлургическое", LabelEn.metallurgy);
public static final Label medicine = new LabelRu("мед.", "медицинское", LabelEn.medicine);
public static final Label nautical = new LabelRu("морск.", "морское", LabelEn.nautical);
public static final Label regional_mor = LabelRu.addNonUniqueShortName(nautical, "мор.");
public static final Label regional_Mor = LabelRu.addNonUniqueShortName(nautical, "Мор.");
public static final Label sciences = new LabelRu("научн.", "научное", LabelEn.sciences);
public static final Label oil_industry = new LabelRu("нефтегаз.", "нефтегазовая промышленность и нефтепереработка", LabelEn.oil_industry);
public static final Label numismatics = new LabelRu("нумизм.", "нумизматическое", LabelEn.numismatics);
public static final Label occult = new LabelRu("оккульт.", "оккультное", LabelEn.occult);
public static final Label optics = new LabelRu("опт.", "оптическое", LabelEn.optics);
public static final Label ornithology = new LabelRu("орнитол.", "орнитологическое", LabelEn.ornithology);
public static final Label hunting = new LabelRu("охотн.", "охотничье", LabelEn.hunting);
public static final Label paleontology = new LabelRu("палеонт.", "палеонтологическое", LabelEn.paleontology);
public static final Label hairdressing = new LabelRu("парикмах.", "парикмахерское", LabelEn.hairdressing);
public static final Label carpentry = new LabelRu("плотн.", "плотницкое дело", LabelEn.carpentry);
public static final Label carpentry2 = LabelRu.addNonUniqueShortName(carpentry, "столярн.");
public static final Label printing = new LabelRu("полигр.", "полиграфическое", LabelEn.printing);
public static final Label politics = new LabelRu("полит.", "политическое", LabelEn.politics);
public static final Label political_slang = new LabelRu("полит.жарг.", "политический жаргон", LabelEn.political_slang);
public static final Label sartorial = new LabelRu("портн.", "портновское дело", LabelEn.sartorial);
public static final Label professional = new LabelRu("проф.", "профессиональное", LabelEn.professional);
public static final Label psychiatry = new LabelRu("психиатр.", "психиатрия", LabelEn.psychiatry);
public static final Label journalism = new LabelRu("публиц.", "публицистическое", LabelEn.journalism);// publicistic
public static final Label advertising = new LabelRu("рекл.", "рекламное", LabelEn.advertising);
public static final Label radio = new LabelRu("радио", "радиодело, радиовещание", LabelEn.radio);
public static final Label radio2 = LabelRu.addNonUniqueShortName(radio, "радио.");
public static final Label sexology = new LabelRu("сексол.", "сексология", LabelEn.sexology);
public static final Label agriculture = new LabelRu("сельск.", "сельскохозяйственное", LabelEn.agriculture);
public static final Label agriculture2 = LabelRu.addNonUniqueShortName(agriculture, "сх");
public static final Label agriculture3 = LabelRu.addNonUniqueShortName(agriculture, "с.-х.");
public static final Label agriculture4 = LabelRu.addNonUniqueShortName(agriculture, "животн.");
public static final Label sociology = new LabelRu("социол.", "социология", LabelEn.sociology);
public static final Label soviet = new LabelRu("советск.", "советизм", LabelEn.soviet);
public static final Label soviet2 = LabelRu.addNonUniqueShortName(soviet, "совет.");
public static final Label speleology = new LabelRu("спелеол.", "спелеологическое", LabelEn.speleology);
public static final Label sports = new LabelRu("спорт.", "спортивное", LabelEn.sports);
public static final Label statistics = new LabelRu("стат.", "статистическое", LabelEn.statistics);
public static final Label construction = new LabelRu("строит.", "строительное", LabelEn.construction);
public static final Label special = new LabelRu("спец.", "специальное", LabelEn.special);
public static final Label theater = new LabelRu("театр.", "театральное", LabelEn.theater);
public static final Label textiles = new LabelRu("текст.", "текстильное", LabelEn.textiles);
public static final Label technology = new LabelRu("техн.", "техническое", LabelEn.technology);
public static final Label technology2 = LabelRu.addNonUniqueShortName(technology, "тех.");
public static final Label telecommunications = new LabelRu("телеком.", "телекоммуникация и связь", LabelEn.telecommunications);
public static final Label trading = new LabelRu("торг.", "торговое", LabelEn.trading);
public static final Label transport = new LabelRu("трансп.", "транспортное", LabelEn.transport);
public static final Label management = new LabelRu("управл.", "управленческое", LabelEn.management);
public static final Label science_fiction = new LabelRu("фант.", "фантастическое", LabelEn.science_fiction);
public static final Label philately = new LabelRu("филат.", "филателистическое", LabelEn.philately);
public static final Label finance = new LabelRu("фин.", "финансовое", LabelEn.finance);
public static final Label photography = new LabelRu("фотогр.", "фотографическое", LabelEn.photography);
public static final Label pharmacy = new LabelRu("фарм.", "фармацевтический термин", LabelEn.pharmacy);
public static final Label physiology = new LabelRu("физиол.", "физиология", LabelEn.physiology);
public static final Label philosophy = new LabelRu("филос.", "философское", LabelEn.philosophy);
public static final Label philology = new LabelRu("филол.", "филологическое", LabelEn.literature);
public static final Label philology_lit = LabelRu.addNonUniqueShortName(philology, "лит.");// literature
public static final Label philology_liter = LabelRu.addNonUniqueShortName(philology, "литер.");// literature also
public static final Label folklore = new LabelRu("фолькл.", "фольклорное", LabelEn.folklore);
public static final Label choreography = new LabelRu("хореогр.", "хореографическое", LabelEn.choreography);
public static final Label sewing = new LabelRu("швейн.", "швейное", LabelEn.sewing);
public static final Label circus = new LabelRu("цирк.", "цирковое", LabelEn.circus);
public static final Label ecology = new LabelRu("экол.", "экологическое", LabelEn.ecology);
public static final Label economics = new LabelRu("экон.", "экономическое", LabelEn.economics);
public static final Label electrical_engineering = new LabelRu("эл.-техн.", "электротехническое", LabelEn.electrical_engineering);
public static final Label electric_power = new LabelRu("эл.-энерг.", "электроэнергетическое", LabelEn.electric_power);
public static final Label entomology = new LabelRu("энтомол.", "энтомологическое", LabelEn.entomology);
public static final Label ethnology = new LabelRu("этнолог.", "этнологическое", LabelEn.ethnology);
public static final Label ethnography = new LabelRu("этногр.", "этнографическое", LabelEn.ethnography);
public static final Label legal = new LabelRu("юр.", "юридическое или нормативное", LabelEn.legal);
public static final Label jewellery = new LabelRu("ювел.", "ювелирное", LabelEn.jewellery);
// computing
// //////////////////////////
public static final Label computing = new LabelRu("комп.", "компьютерное", LabelEn.computing);
public static final Label programming = new LabelRu("прогр.", "программистское", LabelEn.programming);
// games
// //////////////////////////
public static final Label gaming = new LabelRu("игр.", "игровое", LabelEn.gaming);
public static final Label chess = new LabelRu("шахм.", "шахматное", LabelEn.chess);
// mathematics
// //////////////////////////
public static final Label mathematics = new LabelRu("матем.", "математическое", LabelEn.mathematics);
// music
// //////////////////////////
public static final Label music = new LabelRu("муз.", "музыкальное", LabelEn.music);
// mythology
// //////////////////////////
public static final Label mythology = new LabelRu("мифол.", "мифологическое", LabelEn.mythology);
// religion
// //////////////////////////
public static final Label Islam = new LabelRu("ислам.", "исламское", LabelEn.Islam);
public static final Label religion = new LabelRu("религ.", "религиозное", LabelEn.religion);
public static final Label ecclesiastical = new LabelRu("церк.", "церковное", LabelEn.ecclesiastical);
// science
// //////////////////////////
public static final Label alchemy = new LabelRu("алхим.", "алхимическое", LabelEn.alchemy);
public static final Label anthropology = new LabelRu("антроп.", "антропологическое", LabelEn.anthropology);
public static final Label archaeology = new LabelRu("археол.", "археология", LabelEn.archaeology);
public static final Label astronomy = new LabelRu("астрон.", "астрономическое", LabelEn.astronomy);
public static final Label biochemistry = new LabelRu("биохим.", "биохимическое", LabelEn.biochemistry);
public static final Label biology = new LabelRu("биол.", "биологическое", LabelEn.biology);
public static final Label botany = new LabelRu("ботан.", "ботаническое", LabelEn.botany);
public static final Label zoology = new LabelRu("зоол.", "зоологическое", LabelEn.zoology);
public static final Label computer_science = new LabelRu("информ.", "информатическое", LabelEn.computer_science);
public static final Label oceanography = new LabelRu("океан.", "океанологическое", LabelEn.oceanography);
public static final Label psychology = new LabelRu("психол.", "психология", LabelEn.psychology);
public static final Label physics = new LabelRu("физ.", "физическое", LabelEn.physics);
public static final Label chemistry = new LabelRu("хим.", "химическое", LabelEn.chemistry);
public static final Label chem_element = LabelRu.addNonUniqueShortName(chemistry, "хим-элем");// form-of
//public static final Label element = LabelRu.addNonUniqueShortName(chemistry, "химическое");// form-of
public static final Label element_symbol = new LabelRu("элемент", "химический элемент", LabelEn.element_symbol);// form-of - it should be synonyms of "chemistry" (prev line), but there is tech constraints: FormOfRu.java can have only one synonym
// sports - special treatment for all sport labels except {{sport}} itself
// it is needed to parse parameter "вид=" of {{спорт.|вид=}}
// @see ru.wiktionary.org/wiki/template:спорт.
// //////////////////////////
public static final Label gymnastics = new LabelRu("акробат", "акробатика", LabelEn.gymnastics);
public static final Label basketball = new LabelRu("баскет", "баскетбол", LabelEn.basketball);
public static final Label baseball = new LabelRu("бейсб", "бейсбол", LabelEn.baseball);
public static final Label billiards = new LabelRu("бильярд", "бильярд", LabelEn.billiards);
public static final Label volleyball = new LabelRu("волейб", "волейбол", LabelEn.volleyball);
public static final Label croquet = new LabelRu("крокет", "крокет", LabelEn.croquet);
public static final Label rugby = new LabelRu("регби", "регби", LabelEn.rugby);
public static final Label fishing = new LabelRu("рыбол.", "рыболовецкое", LabelEn.fishing);
public static final Label tennis = new LabelRu("теннис", "теннис", LabelEn.tennis);
// "chess" see in section "games"
public static final Label soccer = new LabelRu("футб", "футбол", LabelEn.soccer); // changed with football
public static final Label hockey = new LabelRu("хокк", "хоккей", LabelEn.hockey);
// ///////////////////////////////////////////////////////////////////////////////////////
// form-of templates (which are not context labels, but a definition text should be extracted from these templates - it's a dirty hack %)
// public static final Label form_of_templates = new LabelRu("dirty hack ru", ":) ru", LabelEn.form_of_templates);
// to split this list
public static final Label as_ru = new LabelRu("as ru", "as ru", LabelEn.ru_as_ru);
public static final Label equal = new LabelRu("=", "=", LabelEn.ru_equal);
public static final Label action = new LabelRu("действие", "действие", LabelEn.ru_action);
public static final Label property = new LabelRu("свойство", "свойство", LabelEn.ru_property);
public static final Label sootn = new LabelRu("соотн.", "соотн.", LabelEn.ru_sootn);
public static final Label sovershiti = new LabelRu("совершить", "совершить", LabelEn.ru_sovershiti);
public static final Label sostoyanie = new LabelRu("состояние", "состояние", LabelEn.ru_sostoyanie);
// eo form-of templates
// ///////////////////////////////////////////////////////////////////////////////////////
// check todo:
// english {{c}} -> общ. - форма общего рода
// {{f}} -> ж. — женский род
// f.pl -> ж. мн.
// f.sg -> ж. ед.
// m -> м. - мужской род
// m/f -> м./ж. - форма мужского или женского рода по контексту
// n -> ср. - средний род
//
//
// todo in distant future:
// {{морфема|
// {{verb-dir|
// {{verb-dir-n|
// {{актанты|
// {{гидроним}}
// DEBUG: should be one error for each line of code
// DDDDDDDDDDDDDDDDDDDDDDDDDD
// source: public static final Label archaic = new LabelRu("старин.", "старинное", LabelEn.archaic);
// +public static final Label archaic_short_name_duplication = new LabelRu("старин.", "archaic full name (duplication of short name)", LabelEn.archaic);
// +public static final Label archaic_full_name_duplication = new LabelRu("archaic short name (duplication of full name)", "старинное", LabelEn.archaic);
// +public static final Label archaic_label_en_duplication = new LabelRu("short name", "full name (duplication of label_en)", LabelEn.archaic);
}