<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>http://ru.ru-skazki.ru/index.php?action=history&amp;feed=atom&amp;title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C%3ALanguages%2F%D0%BF%D0%B5%D1%81%D0%BE%D1%87%D0%BD%D0%B8%D1%86%D0%B0</id>
	<title>Модуль:Languages/песочница - История изменений</title>
	<link rel="self" type="application/atom+xml" href="http://ru.ru-skazki.ru/index.php?action=history&amp;feed=atom&amp;title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C%3ALanguages%2F%D0%BF%D0%B5%D1%81%D0%BE%D1%87%D0%BD%D0%B8%D1%86%D0%B0"/>
	<link rel="alternate" type="text/html" href="http://ru.ru-skazki.ru/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Languages/%D0%BF%D0%B5%D1%81%D0%BE%D1%87%D0%BD%D0%B8%D1%86%D0%B0&amp;action=history"/>
	<updated>2026-04-13T16:34:15Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.41.1</generator>
	<entry>
		<id>http://ru.ru-skazki.ru/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Languages/%D0%BF%D0%B5%D1%81%D0%BE%D1%87%D0%BD%D0%B8%D1%86%D0%B0&amp;diff=4565&amp;oldid=prev</id>
		<title>Импортёр: 1 версия импортирована</title>
		<link rel="alternate" type="text/html" href="http://ru.ru-skazki.ru/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Languages/%D0%BF%D0%B5%D1%81%D0%BE%D1%87%D0%BD%D0%B8%D1%86%D0%B0&amp;diff=4565&amp;oldid=prev"/>
		<updated>2024-05-01T10:06:34Z</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;Версия от 13:06, 1 мая 2024&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>Импортёр</name></author>
	</entry>
	<entry>
		<id>http://ru.ru-skazki.ru/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Languages/%D0%BF%D0%B5%D1%81%D0%BE%D1%87%D0%BD%D0%B8%D1%86%D0%B0&amp;diff=4564&amp;oldid=prev</id>
		<title>ru&gt;Andras: Новая страница: «-- Модуль для работы с языками ISO 639  -- загрузка модуля данных с таблицей языков local languages = mw.loadData(&#039;Module:Languages/data&#039;) local p = {}  -- Проверяет, пустой ли дан параметр local function isEmpty(s) 	return s == nil or s == &#039;&#039; end  -- вспомогательная функция, удаляет пробелы local function trimstr(s)   return (s:gsub(&quot;^%s...»</title>
		<link rel="alternate" type="text/html" href="http://ru.ru-skazki.ru/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Languages/%D0%BF%D0%B5%D1%81%D0%BE%D1%87%D0%BD%D0%B8%D1%86%D0%B0&amp;diff=4564&amp;oldid=prev"/>
		<updated>2023-05-17T09:13:48Z</updated>

		<summary type="html">&lt;p&gt;Новая страница: «-- Модуль для работы с языками ISO 639  -- загрузка модуля данных с таблицей языков local languages = mw.loadData(&amp;#039;Module:Languages/data&amp;#039;) local p = {}  -- Проверяет, пустой ли дан параметр local function isEmpty(s) 	return s == nil or s == &amp;#039;&amp;#039; end  -- вспомогательная функция, удаляет пробелы local function trimstr(s)   return (s:gsub(&amp;quot;^%s...»&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(&amp;#039;Module:Languages/data&amp;#039;)&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 == &amp;#039;&amp;#039;&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( 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( &amp;#039;Language code not found for &amp;#039; .. wikidataItemId )&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	else&lt;br /&gt;
    	local l = languages[code];&lt;br /&gt;
		if l == nil then&lt;br /&gt;
			mw.log( &amp;#039;Language description for code &amp;#039; .. code .. &amp;#039; not found&amp;#039; )&lt;br /&gt;
	        return &amp;quot;&amp;quot;&lt;br /&gt;
	    else&lt;br /&gt;
	        return &amp;#039;&amp;lt;span class=&amp;quot;ref-info&amp;quot; title=&amp;quot;&amp;#039; .. l[ 2 ] .. &amp;#039;&amp;quot; style=&amp;quot;font-size:85%; cursor:help; color:#888;&amp;quot;&amp;gt;(&amp;#039; .. l[ 1 ] .. &amp;#039;)&amp;lt;/span&amp;gt;&amp;#039;&lt;br /&gt;
	    end&lt;br /&gt;
	end&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 &amp;#039;&amp;#039;)&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 ~= &amp;#039;&amp;#039; then&lt;br /&gt;
		return (languages[code] and languages[code][2] or &amp;#039;&amp;#039;)&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 ~= &amp;#039;&amp;#039; then&lt;br /&gt;
			-- если язык пропущен, оставим прошлый&lt;br /&gt;
			curr_lang = trimstr(v)&lt;br /&gt;
		end&lt;br /&gt;
		else&lt;br /&gt;
		if trimmed ~= &amp;#039;&amp;#039; 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 ~= &amp;#039;&amp;#039; then&lt;br /&gt;
				list_item = link .. &amp;quot;&amp;amp;nbsp;&amp;lt;span dir=&amp;#039;auto&amp;#039; lang=&amp;#039;&amp;quot; .. lang_code .. &amp;quot;&amp;#039;&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=&amp;#039;unknown-foreign-lang&amp;#039;&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 = &amp;#039;&amp;#039;&lt;br /&gt;
    local v = frame.args[&amp;#039;в&amp;#039;] or nil&lt;br /&gt;
	local ref = nil&lt;br /&gt;
&lt;br /&gt;
	if v then&lt;br /&gt;
		ref = &amp;#039;&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;&amp;#039;&lt;br /&gt;
	else&lt;br /&gt;
		ref = &amp;#039;&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;&amp;#039;&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 ~= &amp;#039;&amp;#039; and code ~= &amp;#039;в&amp;#039; 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, &amp;#039;%%2%%&amp;#039;, p._transform_lang(code)), &amp;#039;%%1%%&amp;#039;, l[1])&lt;br /&gt;
			else&lt;br /&gt;
				result = result .. frame:expandTemplate{ title = &amp;#039;ref-&amp;#039; .. code } .. &amp;#039;[[Category:Википедия:Статьи с нераспознанным языком (ref)]]&amp;#039;&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;#039;&amp;amp;lt;неизвестный код &amp;#039; .. code .. &amp;#039;&amp;amp;gt;&amp;#039; 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,&amp;#039;ru&amp;#039;)&lt;br /&gt;
     ):gsub(&amp;#039;%s+язык%s+&amp;#039;,  &amp;#039; &amp;#039;):gsub(&amp;#039;%s*%(?язык%)?%s*&amp;#039;,  &amp;#039;&amp;#039;)&lt;br /&gt;
    if not ln then return &amp;#039;языке с ISO-кодом &amp;#039;..code..&amp;#039; (?)&amp;#039; end&lt;br /&gt;
    if ln:match(&amp;#039;.*лингва$&amp;#039;) then return ln:gsub(&amp;#039;а$&amp;#039;,&amp;#039;е&amp;#039;) end&lt;br /&gt;
    if mw.ustring.match(ln,&amp;#039;[сц]кий$&amp;#039;) or ln:match(&amp;#039;ный$&amp;#039;) or mw.ustring.match(ln,&amp;#039;[сц]кий%s%b()$&amp;#039;) or ln:match(&amp;#039;ный%s%b()$&amp;#039;)&lt;br /&gt;
    then&lt;br /&gt;
        ln = mw.ustring.gsub(&lt;br /&gt;
            mw.ustring.gsub(ln, &amp;#039;н([ыи])й(%A)&amp;#039;, function(y,s) return (y==&amp;#039;ы&amp;#039; and &amp;#039;ном&amp;#039; or &amp;#039;нем&amp;#039;)..s end)&lt;br /&gt;
                :gsub(&amp;#039;ный$&amp;#039;, &amp;#039;ном&amp;#039;),&lt;br /&gt;
            &amp;#039;([сц]к)ий(%A)&amp;#039;, &amp;#039;%1ом%2&amp;#039;&lt;br /&gt;
        ):gsub(&amp;#039;ский$&amp;#039;, &amp;#039;ском&amp;#039;):gsub(&amp;#039;цкий$&amp;#039;, &amp;#039;цком&amp;#039;);&lt;br /&gt;
        if ln:match(&amp;#039;%)$&amp;#039;) and not (ln:match(&amp;#039;ом%)$&amp;#039;) or ln:match(&amp;#039;нем%)$&amp;#039;)) -- «языке» перед уточнением, если оно не склоняется&lt;br /&gt;
        then &lt;br /&gt;
            local r,s=ln:gsub(&amp;#039;(%s)(%b())$&amp;#039;,&amp;#039;%1языке%1%2&amp;#039;);&lt;br /&gt;
            if s==1 then return r end&lt;br /&gt;
        end&lt;br /&gt;
        return ln..&amp;#039; языке&amp;#039;&lt;br /&gt;
    else&lt;br /&gt;
        return &amp;#039;языке &amp;#039;..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>ru&gt;Andras</name></author>
	</entry>
</feed>