<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://belgen.info/wiki/index.php?action=history&amp;feed=atom&amp;title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C%3ALanguages</id>
	<title>Модуль:Languages - История изменений</title>
	<link rel="self" type="application/atom+xml" href="https://belgen.info/wiki/index.php?action=history&amp;feed=atom&amp;title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C%3ALanguages"/>
	<link rel="alternate" type="text/html" href="https://belgen.info/wiki/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Languages&amp;action=history"/>
	<updated>2026-06-11T15:49:11Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.40.1</generator>
	<entry>
		<id>https://belgen.info/wiki/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Languages&amp;diff=596&amp;oldid=prev</id>
		<title>Admin: 1 версия импортирована</title>
		<link rel="alternate" type="text/html" href="https://belgen.info/wiki/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Languages&amp;diff=596&amp;oldid=prev"/>
		<updated>2022-12-20T08:44:36Z</updated>

		<summary type="html">&lt;p&gt;1 версия импортирована&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Предыдущая версия&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Версия от 08:44, 20 декабря 2022&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://belgen.info/wiki/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Languages&amp;diff=595&amp;oldid=prev</id>
		<title>wiki&gt;Stjn: отмена правки 119565130 участника Dima st bk (обс.): есть много языков, где курсива не существует, такое следует добавлять через CSS</title>
		<link rel="alternate" type="text/html" href="https://belgen.info/wiki/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Languages&amp;diff=595&amp;oldid=prev"/>
		<updated>2022-01-24T16:16:21Z</updated>

		<summary type="html">&lt;p&gt;&lt;a href=&quot;/wiki/index.php?title=%D0%92%D0%9F:%C3%97&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;ВП:× (страница не существует)&quot;&gt;отмена&lt;/a&gt; правки 119565130 участника &lt;a href=&quot;/wiki/index.php/%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:%D0%92%D0%BA%D0%BB%D0%B0%D0%B4/Dima_st_bk&quot; title=&quot;Служебная:Вклад/Dima st bk&quot;&gt;Dima st bk&lt;/a&gt; (&lt;a href=&quot;/wiki/index.php?title=UT:Dima_st_bk&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;UT:Dima st bk (страница не существует)&quot;&gt;обс.&lt;/a&gt;): есть много языков, где курсива не существует, такое следует добавлять через CSS&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;-- Модуль для работы с языками ISO 639&lt;br /&gt;
&lt;br /&gt;
-- загрузка модуля данных с таблицей языков&lt;br /&gt;
local languages = mw.loadData('Module:Languages/data')&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
-- Проверяет, пустой ли дан параметр&lt;br /&gt;
local function isEmpty(s)&lt;br /&gt;
	return s == nil or s == ''&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- вспомогательная функция, удаляет пробелы&lt;br /&gt;
local function trimstr(s)&lt;br /&gt;
  return (s:gsub(&amp;quot;^%s*(.-)%s*$&amp;quot;, &amp;quot;%1&amp;quot;))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- получает код языка, возвращает ссылку и нормализованный код языка (или пустые строки)&lt;br /&gt;
local function get_lang_data(code)&lt;br /&gt;
    local l = languages[code];&lt;br /&gt;
    if l ~= nil then&lt;br /&gt;
        return &amp;quot;[[&amp;quot; .. l[2] .. &amp;quot;|&amp;quot; .. l[1] .. &amp;quot;]]&amp;quot;, code&lt;br /&gt;
    elseif code ~= &amp;quot;&amp;quot; then&lt;br /&gt;
        return code, &amp;quot;&amp;quot;&lt;br /&gt;
    else&lt;br /&gt;
        return &amp;quot;&amp;quot;, &amp;quot;&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getRefHtmlFrame( frame )&lt;br /&gt;
	return p.getRefHtml( trimstr( frame.args[1] ) )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getRefHtml( code )&lt;br /&gt;
	local l = languages[code];&lt;br /&gt;
	if l == nil then&lt;br /&gt;
		mw.log( 'Language description for code ' .. code .. ' not found' )&lt;br /&gt;
        return &amp;quot;&amp;quot;&lt;br /&gt;
    else&lt;br /&gt;
        return '&amp;lt;span class=&amp;quot;ref-info&amp;quot; title=&amp;quot;' .. l[ 2 ] .. '&amp;quot; style=&amp;quot;cursor:help&amp;quot;&amp;gt;(' .. l[ 1 ] .. ')&amp;lt;/span&amp;gt;'&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getWikidataRefHtmlFrame( frame )&lt;br /&gt;
	return p.getWikidataRefHtml( trimstr( frame.args[1] ) )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getWikidataRefHtml( wikidataItemId )&lt;br /&gt;
	local codeByItemId = mw.loadData( &amp;quot;Module:Wikidata/Language-codes&amp;quot; )&lt;br /&gt;
	local code = codeByItemId[ wikidataItemId ];&lt;br /&gt;
	if code == nil then&lt;br /&gt;
		mw.log( 'Language code not found for ' .. wikidataItemId )&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	return p.getRefHtml( code )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- принимает zh, возвращает аббревиатуру&lt;br /&gt;
function p.abbr(frame)&lt;br /&gt;
	local code = trimstr( frame.args[1] )&lt;br /&gt;
	if not isEmpty(code) then&lt;br /&gt;
		return (languages[code] and languages[code][1] or '')&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- принимает zh|我|tt|мин, возвращает название статьи из Module:Languages/data&lt;br /&gt;
function p.name(frame)&lt;br /&gt;
	local code = trimstr( frame.args[1] )&lt;br /&gt;
	if code ~= nil and code ~= '' then&lt;br /&gt;
		return (languages[code] and languages[code][2] or '')&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- принимает zh|我|tt|мин, возвращает список через запятую&lt;br /&gt;
function p.list(frame)&lt;br /&gt;
    local curr_lang = nil&lt;br /&gt;
    local result = nil&lt;br /&gt;
&lt;br /&gt;
    for n, v in frame:argumentPairs() do&lt;br /&gt;
		local trimmed = trimstr(v)&lt;br /&gt;
		if curr_lang == nil then&lt;br /&gt;
		if trimmed ~= '' then&lt;br /&gt;
			-- если язык пропущен, оставим прошлый&lt;br /&gt;
			curr_lang = trimstr(v)&lt;br /&gt;
		end&lt;br /&gt;
		else&lt;br /&gt;
		if trimmed ~= '' then&lt;br /&gt;
			local link, lang_code = get_lang_data(curr_lang)&lt;br /&gt;
			local list_item&lt;br /&gt;
			if lang_code ~= '' then&lt;br /&gt;
				list_item = link .. &amp;quot;&amp;amp;nbsp;&amp;lt;span dir='auto' lang='&amp;quot; .. lang_code .. &amp;quot;'&amp;gt;&amp;quot; .. trimmed .. &amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
			else&lt;br /&gt;
				list_item = link .. &amp;quot; &amp;lt;span class='unknown-foreign-lang'&amp;gt;&amp;quot; .. trimmed .. &amp;quot;&amp;lt;/span&amp;gt;&amp;quot;..&amp;quot;[[Category:Википедия:Статьи с нераспознанным языком]]&amp;quot;&lt;br /&gt;
			end&lt;br /&gt;
			&lt;br /&gt;
			if result == nil then&lt;br /&gt;
				result = list_item&lt;br /&gt;
			else&lt;br /&gt;
				result = result .. &amp;quot;, &amp;quot; .. list_item&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
		-- Пустой текст — значит, текущий язык совпадает с следующим&lt;br /&gt;
		local link, lang_code = get_lang_data(curr_lang)&lt;br /&gt;
		if result == nil then&lt;br /&gt;
			result = link&lt;br /&gt;
		else&lt;br /&gt;
			result = result .. &amp;quot;, &amp;quot; .. link&lt;br /&gt;
		end&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		curr_lang = nil&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    -- просто #invoke:Languages|list|yue должно возвращать всё же ссылку без текста&lt;br /&gt;
    if curr_lang ~= nil then&lt;br /&gt;
        local link, lang_code = get_lang_data(curr_lang)&lt;br /&gt;
        if result ~= nil then&lt;br /&gt;
            result = result .. &amp;quot;, &amp;quot; .. link&lt;br /&gt;
        else&lt;br /&gt;
            result = link&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
    return result&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- принимает zh|tt, возвращает ref-zh, ref-tt&lt;br /&gt;
function p.list_ref(frame)&lt;br /&gt;
	local result = ''&lt;br /&gt;
	local v = frame.args['в'] or nil&lt;br /&gt;
	local ref = nil&lt;br /&gt;
&lt;br /&gt;
	if v then&lt;br /&gt;
		ref = '&amp;amp;nbsp;&amp;lt;span class=&amp;quot;ref-info&amp;quot; style=&amp;quot;cursor:help;&amp;quot; title=&amp;quot;на %2%&amp;quot;&amp;gt;&amp;amp;#091;%1%&amp;amp;#093;&amp;lt;/span&amp;gt;'&lt;br /&gt;
	else&lt;br /&gt;
		ref = '&amp;amp;nbsp;&amp;lt;span class=&amp;quot;ref-info&amp;quot; style=&amp;quot;cursor:help;&amp;quot; title=&amp;quot;на %2%&amp;quot;&amp;gt;(%1%)&amp;lt;/span&amp;gt;'&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	for x, lg in pairs( frame.args ) do&lt;br /&gt;
		local code = trimstr(lg)&lt;br /&gt;
		if code ~= '' and code ~= 'в' then&lt;br /&gt;
			local l = languages[code]&lt;br /&gt;
			if l and l ~= nil then&lt;br /&gt;
				result = result .. mw.ustring.gsub(mw.ustring.gsub(ref, '%%2%%', p._transform_lang(code)), '%%1%%', l[1])&lt;br /&gt;
			else&lt;br /&gt;
				if mw.title.new('ref-' .. code, 10).exists == false then&lt;br /&gt;
					code = 'und'&lt;br /&gt;
				end&lt;br /&gt;
				result = result .. frame:expandTemplate{ title = 'ref-' .. code } .. '[[Category:Википедия:Статьи с нераспознанным языком (ref)]]'&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return result&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Выводит название языка в предложном падеже&lt;br /&gt;
function p._transform_lang(code)&lt;br /&gt;
	if isEmpty(languages[code]) then return '&amp;amp;lt;неизвестный код ' .. code .. '&amp;amp;gt;' end&lt;br /&gt;
    if languages[code][3] then return languages[code][3] end&lt;br /&gt;
    local ln = mw.ustring.lower(&lt;br /&gt;
        languages[code] and languages[code][2]&lt;br /&gt;
        or mw.language.fetchLanguageName(code,'ru')&lt;br /&gt;
     ):gsub('%s+язык%s+',  ' '):gsub('%s*%(?язык%)?%s*',  '')&lt;br /&gt;
    if not ln then return 'языке с ISO-кодом '..code..' (?)' end&lt;br /&gt;
    if ln:match('.*лингва$') then return ln:gsub('а$','е') end&lt;br /&gt;
    if mw.ustring.match(ln,'[сц]кий$') or ln:match('ный$') or mw.ustring.match(ln,'[сц]кий%s%b()$') or ln:match('ный%s%b()$')&lt;br /&gt;
    then&lt;br /&gt;
        ln = mw.ustring.gsub(&lt;br /&gt;
            mw.ustring.gsub(ln, 'н([ыи])й(%A)', function(y,s) return (y=='ы' and 'ном' or 'нем')..s end)&lt;br /&gt;
                :gsub('ный$', 'ном'),&lt;br /&gt;
            '([сц]к)ий(%A)', '%1ом%2'&lt;br /&gt;
        ):gsub('ский$', 'ском'):gsub('цкий$', 'цком');&lt;br /&gt;
        if ln:match('%)$') and not (ln:match('ом%)$') or ln:match('нем%)$')) -- «языке» перед уточнением, если оно не склоняется&lt;br /&gt;
        then &lt;br /&gt;
            local r,s=ln:gsub('(%s)(%b())$','%1языке%1%2');&lt;br /&gt;
            if s==1 then return r end&lt;br /&gt;
        end&lt;br /&gt;
        return ln..' языке'&lt;br /&gt;
    else&lt;br /&gt;
        return 'языке '..ln&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.transform_lang(frame)&lt;br /&gt;
	return p._transform_lang(trimstr(frame.args[1]))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>wiki&gt;Stjn</name></author>
	</entry>
</feed>