Постоянно защищенный модуль
Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску
Документация по модулю [ просмотреть ] [ изменить ] [ историю ] [ очистить ]

Этот модуль используется и . Он основан на шаблонах {{m}} и {{l}} и связанных с ними модулях в Викисловаре. Он имеет функцию ссылки на Викисловарь, которая ссылается на правильный раздел записи в Викисловаре и применяет правильное языковое форматирование и курсив. Функция языковых тегов делает большую часть того, что делает {{ lang }}, за исключением того, что курсив не может быть изменен, а категории не добавлены.{{wikt-lang}}{{wt}}

Модуль использует Module: Language / data для получения названия языка для языкового кода и для выполнения необходимых замен названий записей (например, удаления макронов из названий латинских записей). К сожалению, они не извлекаются автоматически из модулей языковых данных Викисловаря . Для кодов языков, не имеющих nameзначения в этом модуле, имя языка извлекается с mw.language.fetchLanguage. Если mw.language.fetchLanguageне удается получить правильное название языка (или любое название языка вообще), добавьте его в Module: language / data , и аналогично, когда правильное имя записи не сгенерировано, добавьте замену имени записи в модуль.

Примеры

* {{#invoke: Language | wikt | en | language}}* {{#invoke: Language | wikt | en | language | languages}}* {{#invoke: Language | wikt | fr | bourguignon}}* {{#invoke: Language | wikt | la | homō}}* {{#invoke: Language | wikt | grc | δημοκρατίᾱ}}* {{#invoke: Language | wikt | ru | язы́к}}* {{#invoke: Language | wikt | ar | العَرَبِيَّة}}* {{#invoke: Language | wikt | fa | فارسی}}* {{#invoke: Language | wikt | ine-x-proto | * h₂enǵʰ-}}

Недействительные коды

* {{#invoke: Language | wikt | EN | language}}* {{#invoke: Language | wikt | En | language | languages}}* {{#invoke: Language | wikt | La | homō}}* {{#invoke: Language | wikt | Grc | δημοκρατίᾱ}}* {{#invoke: Language | wikt | Ru | язы́к}}* {{#invoke: Language | wikt | Ar | العَرَبِيَّة}}* {{#invoke: Language | wikt | Fa | فارسی}}
  • язык
  • языки
  • hom
  • δημοκρατίᾱ
  • язы́к
  • العَرَبِيَّة
  • فارسی

Ошибки

* {{#invoke: Language | wikt | en-Latin | language}}
  • язык [ Latinне является допустимым кодом сценария.]

Категории отслеживания

  • Категория: Ошибки языкового модуля  (2)
  • Категория: Языковой модуль реконструирован без звездочки  (0)
  • Категория: Языковой модуль с использованием кода перенаправления  (0)

require ( 'Модуль: без глобальных переменных' )локальные  m_data  =  mw . loadData ( "Модуль: язык / данные" )локальный  langData  =  m_data . языки  или  m_dataместный  p  =  {}локальная  функция  ifNotEmpty ( значение )если  значение  ==  ""  тогдавернуть  нольещевозвращаемое  значениеконецконецлокальная  функция  makeLinkedName ( languageCode )локальные  данные  =  langData [ languageCode ]местная  статья  =  данные [ "статья" ]local  name  =  data [ "Wikipedia_name" ]  или  data [ "name" ]return  "[["  ..  article  ..  "|"  ..  name  ..  "]]: & nbsp;"конецлокальная  функция  makeEntryName ( слово ,  languageCode )локальные  данные  =  langData [ languageCode ]местный  ugsub  =  mw . ustring . gsubслово  =  tostring ( слово )если  слово  ==  ноль,  тоerror ( "Функция makeEntryName требует строкового аргумента" )elseif  word  ==  ""  тогдавернуться  ""еще- Удалите жирный шрифт и курсив, чтобы слова, содержащие жирный шрифт или ударение, можно было связывать без окантовки.word  =  word : gsub ( " \ '\' \ ' " ,  "" )word  =  word : gsub ( " \ '\' " ,  "" )если  data  ==  nil,  тоответное  словоещелокальные  замены  =  данные  и  данные [ "замены" ]если  замены  ==  ноль,  тоответное  словоеще- Разложить так, чтобы диакритические знаки символов такие- поскольку бэкап можно удалить за один раз.- Не нужно сочинять в конце, потому что программа MediaWiki- с этим справлюсь.если  замены . разложить  тогдаслово  =  mw . ustring . toNFD ( слово )для  i ,  from  in  ipairs ( замены . from )  делатьword  =  ugsub (слово ,из ,замены . к  и  замены . к [ i ]  или  "" )конецещедля  регулярных выражений ,  замена  в  пар ( замены )  делаютword  =  ugsub ( слово ,  регулярное выражение ,  замена )конецконецответное  словоконецконецконецконецстр . makeEntryName  =  makeEntryNameлокальная  функция  fixScriptCode ( firstLetter ,  threeLetters )вернуть  string.upper ( firstLetter )  ..  string.lower ( threeLetters )конецлокальная  функция  getCodes ( коды ,  текст )местный  languageCode ,  scriptCode ,  invalidCodelocal  errorTextесли  коды  ==  ноль  или  коды  ==  ""  тогдаerrorText  =  'не указан язык или код скрипта'elseif  коды : find ( "^% a% a% a? $" )  или  коды : find ( "^% a% a% a?% -% a% a% a% a $" ),  затем- Последовательность из трех или двух букв в нижнем регистре в начале первого параметраlanguageCode  =коды : найти ( "^% a% a% a?" )  и  (коды : match ( "^ (% l% l% l?)" )или  коды : match ( "^ (% a% a% a?)" ): gsub ( "(% a% a% a?)" ,  string.lower ,  1 ))- Одна заглавная и три строчных буквы в конце первого параметраscriptCode  =коды : найти ( "% a% a% a% a $" )  и  (коды : match ( "(% u% l% l% l) $" )или  gsub (коды : match ( "(% a% a% a% a) $" ),"(% a) (% a% a% a)" ,fixScriptCode ,1))elseif  коды : find ( "^% a% a% a?% -% a% a% a? $" )или  коды : найдите ( "^% a% a% a% -% a% a% a% -% a% a% a $" )  затемlanguageCode  =  коды- Подтег для частного использования: x, за которым следует одна или несколько последовательностей из 1-8 строчных букв- буквы, разделенные дефисом. Это позволяет использовать только одну последовательность, так как это- необходимо для протоязыков, таких как ine-x-proto (протоиндоевропейский).elseif  коды : find ( "^% a% a% a?% - x% -% a% a?% a?% a?% a?% a?% a?% a? $" )  затемlanguageCode ,  scriptCode  =коды : match ( "^ (% a% a% a% -x% -% a% a?% a?% a?% a?% a?% a?% a?)% -? (. *) $ " )если  не  languageCode,  тоerrorText  =  '<code>' .. codes .. '</code> не является допустимым кодом языка или скрипта.'elseif  scriptCode  ~ =  "",  а  не  scriptCode : find ( "% a% a% a% a" ),  тогдаerrorText  =  '<code>' .. scriptCode .. '</code> не является допустимым кодом сценария.'ещеscriptCode  =  scriptCode : gsub ("(% a) (% a% a% a)" ,fixScriptCode ,1)конецelseif  коды : find ( "^% a% a% a?" )  затемlanguageCode ,  invalidCode  =  коды : match ( "^ (% a% a% a?)% -? (. *)" )languageCode  =  строка.lower ( languageCode )errorText  =  '<code>' .. invalidCode .. '</code> не является допустимым кодом сценария.'elseif  коды : find ( "% -?% a% a% a% a $" )  затемinvalidCode ,  scriptCode  =  коды : match ( "(. *)% -? (% a% a% a% a) $" )scriptCode  =  gsub (scriptCode ,"(% a) (% a% a% a)" ,fixScriptCode)errorText  =  '<code>' .. invalidCode .. '</code> не является допустимым кодом языка.'ещеerrorText  =  '<code>' .. codes .. '</code> не является допустимым кодом языка или скрипта.'конецесли  не  scriptCode  или  scriptCode  ==  ""  тогдаscriptCode  =  require ( "Модуль: данные Unicode" ). is_Latin ( текст )  и  «Latn»  или  «неизвестно»конецесли  errorText,  тоerrorText  =  '<span style = "font-size:  less "> [' ..  errorText  ..  '] </span>'ещеerrorText  =  ""конецlanguageCode  =  m_data . перенаправляет [ languageCode ]  или  languageCodeвернуть  languageCode ,  scriptCode ,  errorTextконец тег локальной функции  ( текст , languageCode , скрипт , курсив )   локальные  данные  =  langData [ languageCode ]- Используйте код Википедии, если он был предоставлен: например,- Протоиндоевропейский язык имеет код Викисловаря "ine-pro", но есть Википедия.- код "ine-x-proto".languageCode  =  данные  и  данные . Wikipedia_code  или  languageCodelocal  italicize  =  script  ==  "Latn"  и  курсивесли  не  текст,  то  текст  =  "[текст?]"  конецlocal  textDirectionMarkers  =  {  "" ,  "" ,  ""  }если  data  и  data [ "direction" ]  ==  "rtl",  тоtextDirectionMarkers  =  {  'dir = "rtl"' ,  '& rlm;' ,  '& lrm;'  }конецlocal  out  =  {  textDirectionMarkers [ 2 ]  }если  курсивом  тоtable.insert ( out ,  "<i lang = \" "  ..  languageCode  ..  " \ " "  ..  textDirectionMarkers [ 1 ]  ..  ">"  ..  text  ..  "</i>" )ещеtable.insert ( out ,  "<span lang = \" "  ..  languageCode  ..  " \ " "  ..  textDirectionMarkers [ 1 ]  ..  ">"  ..  text  ..  "</span>" )конецtable.insert ( out ,  textDirectionMarkers [ 3 ])return  table.concat ( выход )конецфункция  p . lang ( рамка )локальный  родитель  =  кадр : getParent ()локальные  аргументы  =  родитель . args [ 1 ]  и  родительский . аргументы  или  фрейм . аргументыместные  коды  =  args [ 1 ]  и  mw . текст . обрезать ( аргументы [ 1 ])local  text  =  args [ 2 ]  или  ошибка ( «Укажите текст во втором параметре» )local  languageCode ,  scriptCode ,  errorText  =  getCodes ( коды ,  текст )местный  курсив  =  аргументы . курсив  или  аргументы . я  или  аргументы . курсивкурсив  =  нет  ( курсив  ==  "n"  или  курсив  ==  "-"  или  курсив  ==  "нет" ) тег возврата ( текст ,  languageCode ,  scriptCode ,  курсив )  ..  errorTextконецлокальная  функция  linkToWiktionary ( запись ,  linkText ,  languageCode )локальные  данные  =  langData [ languageCode ]местное  имяесли  languageCode,  тоесли  данные  и  данные . назови  тогдаимя  =  данные . названиееще- На вики-сайтах других языков используйте mw.getContentLanguage (): getCode (),- или замените en на код языка этой вики.имя  =  мв . язык . fetchLanguageName ( languageCode ,  'ru' )если  name  ==  ""  тоerror ( "Имя для кода языка"  ..  ( "% q" ): формат ( languageCode  или  ноль )..  "не удалось получить с помощью mw.language.fetchLanguageName,"..  "поэтому его нужно добавить в [[Module: Language / data]]" )конецконецесли  запись : sub ( 1 ,  1 )  ==  "*",  тоесли  имя  ~ =  ""  тогдаentry  =  "Реконструкция:"  ..  name  ..  "/"  ..  entry : sub ( 2 )ещеошибка ( "Название языка пусто" )конецelseif  данные  и  данные . введите  ==  "реконструированный",  затеммв . log ( "Восстановленный язык без звездочки:" ,  languageCode ,  имя ,  запись )локальный  кадр  =  mw . getCurrentFrame ()- Отслеживайте восстановленные записи без звездочки путем включения- несуществующий шаблон. Этот прием используется в Викисловаре:- см. [[wikt: Module: debug]].- [[Special: WhatLinksHere / tracking / wikt-lang / реконструировано без звездочки]]pcall ( frame . expandTemplate ,  frame ,{  title  =  'tracking / wikt-lang / реконструировано без звездочки'  })если  имя  ~ =  ""  тогдаentry  =  "Реконструкция:"  ..  name  ..  "/"  ..  entryещеошибка ( "Название языка пусто" )конецelseif  данные  и  данные . введите  ==  "приложение",  затемесли  имя  ~ =  ""  тогдаentry  =  "Приложение:"  ..  name  ..  "/"  ..  entryещеошибка ( "Название языка пусто" )конецконецесли  entry  и  linkText,  тоreturn  "[[wikt:"  ..  entry  ..  "#"  ..  name  ..  "|"  ..  linkText  ..  "]]"ещеerror ( "linkToWiktionary нуждается в записи в Викисловаре или тексте ссылки, или и том и другом" )конецещеreturn  "[[wikt:"  ..  entry  ..  "|"  ..  linkText  ..  "]]"конецконецфункция  p . виктланг ( фрейм )локальный  родитель  =  кадр : getParent ()локальные  аргументы  =  родитель . args [ 1 ]  и  родительский . аргументы  или  фрейм . аргументыместные  коды  =  args [ 1 ]  и  mw . текст . обрезать ( аргументы [ 1 ])локальное  слово1  =  ifNotEmpty ( аргументы [ 2 ])локальное  слово2  =  ifNotEmpty ( аргументы [ 3 ])если  не  args [ 2 ],  тоошибка ( «Параметр 2 обязателен» )конецlocal  languageCode ,  scriptCode ,  errorText  =  getCodes ( коды ,  слово2  или  слово1 )местный  курсив  =  аргументы . курсив  или  аргументы . якурсив  =  нет  ( курсив  ==  "n"  или  курсив  ==  "-" )локальная  запись ,  linkTextесли  слово2  и  слово1,  тозапись  =  makeEntryName ( слово1 ,  код языка )linkText  =  word2elseif  word1  тогдазапись  =  makeEntryName ( слово1 ,  код языка )linkText  =  word1конецместный  изесли  languageCode  и  entry  и  linkText,  тоout  =  tag ( linkToWiktionary ( запись ,  linkText ,  languageCode ),  languageCode ,  scriptCode ,  курсив )elseif  запись  и  linkText,  затемout  =  linkToWiktionary ( запись ,  linkText )ещеout  =  '<span style = "font-size: less;"> [текст?] </span>'конецесли  out  и  errorText,  товернуться  из  ..  ErrorTextещевернуть  errorText  или  error ( «Функция wiktlang ничего не сгенерировала» )конецконецфункция  p . wikt ( рамка )локальный  родитель  =  кадр : getParent ()локальные  аргументы  =  родитель . args [ 1 ]  и  родительский . аргументы  или  фрейм . аргументыместные  коды  =  args [ 1 ]  и  mw . текст . обрезать ( аргументы [ 1 ])локальное  слово1  =  ifNotEmpty ( аргументы [ 2 ])локальное  слово2  =  ifNotEmpty ( аргументы [ 3 ])если  не  слово1  тоerror ( «Укажите слово в параметре 2» )конецlocal  languageCode ,  scriptCode ,  errorText  =  getCodes ( коды ,  слово1 )локальная  запись ,  linkTextесли  слово2  и  слово1,  тозапись  =  makeEntryName ( слово1 ,  код языка )linkText  =  word2elseif  word1  тогдазапись  =  makeEntryName ( слово1 ,  код языка )linkText  =  word1конецместный  изесли  languageCode  и  entry  и  linkText,  тоout  =  linkToWiktionary ( запись ,  linkText ,  languageCode ) elseif  запись  и  linkText,  затемout  =  linkToWiktionary ( запись ,  linkText )ещеout  =  '<span style = "font-size: less;"> [текст?] </span>'конецесли  out  и  errorText,  товернуться  из  и  вне  ..  ErrorTextещевернуть  errorText  или  error ( «Функция wikt ничего не сгенерировала» )конецконецвернуть  p