<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ja">
	<id>https://bsd.neuroinf.jp/w/index.php?action=history&amp;feed=atom&amp;title=%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB%3ATitle</id>
	<title>モジュール:Title - 版の履歴</title>
	<link rel="self" type="application/atom+xml" href="https://bsd.neuroinf.jp/w/index.php?action=history&amp;feed=atom&amp;title=%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB%3ATitle"/>
	<link rel="alternate" type="text/html" href="https://bsd.neuroinf.jp/w/index.php?title=%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB:Title&amp;action=history"/>
	<updated>2026-04-26T03:50:27Z</updated>
	<subtitle>このウィキのこのページに関する変更履歴</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://bsd.neuroinf.jp/w/index.php?title=%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB:Title&amp;diff=43619&amp;oldid=prev</id>
		<title>Nijcadmin: 1版 をインポートしました</title>
		<link rel="alternate" type="text/html" href="https://bsd.neuroinf.jp/w/index.php?title=%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB:Title&amp;diff=43619&amp;oldid=prev"/>
		<updated>2020-01-29T04:27:48Z</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;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ja&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← 古い版&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;2020年1月29日 (水) 13:27時点における版&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;4&quot; class=&quot;diff-notice&quot; lang=&quot;ja&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(相違点なし)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;!-- diff cache key wiki-mw_:diff:1.41:old-43618:rev-43619 --&gt;
&lt;/table&gt;</summary>
		<author><name>Nijcadmin</name></author>
	</entry>
	<entry>
		<id>https://bsd.neuroinf.jp/w/index.php?title=%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB:Title&amp;diff=43618&amp;oldid=prev</id>
		<title>bsd&gt;Jarekt: another small issue</title>
		<link rel="alternate" type="text/html" href="https://bsd.neuroinf.jp/w/index.php?title=%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB:Title&amp;diff=43618&amp;oldid=prev"/>
		<updated>2019-12-10T03:53:14Z</updated>

		<summary type="html">&lt;p&gt;another small issue&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新規ページ&lt;/b&gt;&lt;/p&gt;&lt;div&gt;--[[  &lt;br /&gt;
  __  __           _       _       _____ _ _   _      &lt;br /&gt;
 |  \/  | ___   __| |_   _| | ___ |_   _(_) |_| | ___ &lt;br /&gt;
 | |\/| |/ _ \ / _` | | | | |/ _ (_)| | | | __| |/ _ \&lt;br /&gt;
 | |  | | (_) | (_| | |_| | |  __/_ | | | | |_| |  __/&lt;br /&gt;
 |_|  |_|\___/ \__,_|\__,_|_|\___(_)|_| |_|\__|_|\___|&lt;br /&gt;
                                                                             &lt;br /&gt;
This module is intended to be the engine behind &amp;quot;Template:Title&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Authors and maintainers:&lt;br /&gt;
* User:Jarekt - original version &lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
require(&amp;#039;Module:No globals&amp;#039;) -- used for debugging purposes as it detects cases of unintended global variables&lt;br /&gt;
&lt;br /&gt;
-- ==================================================&lt;br /&gt;
-- === Internal functions ===========================&lt;br /&gt;
-- ==================================================&lt;br /&gt;
local function langSwitch_(list,userLang)&lt;br /&gt;
	local langList = mw.language.getFallbacksFor(userLang)&lt;br /&gt;
	table.insert(langList,1,userLang)&lt;br /&gt;
	for _,language in ipairs(langList) do&lt;br /&gt;
		if list[language] then&lt;br /&gt;
			return list[language], language&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return nil, nil&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- ====================================================================&lt;br /&gt;
local function langWrapper(text, textLang, userLang) &lt;br /&gt;
-- code equivalent to https://commons.wikimedia.org/wiki/Template:Description&lt;br /&gt;
	local dir = mw.language.new( textLang ):isRTL() and &amp;#039;rtl&amp;#039; or &amp;#039;ltr&amp;#039;   &lt;br /&gt;
	local str = string.format(&amp;#039;&amp;lt;span class=&amp;quot;language %s&amp;quot;&amp;gt;&amp;lt;b&amp;gt;%s:&amp;lt;/b&amp;gt;&amp;lt;/span&amp;gt;&amp;#039;, textLang, mw.language.fetchLanguageName( userLang, textLang  ))&lt;br /&gt;
    return string.format(&amp;#039;&amp;lt;div class=&amp;quot;description mw-content-%s&amp;quot; dir=&amp;quot;%s&amp;quot; lang=&amp;quot;%s&amp;quot;&amp;gt;%s %s&amp;lt;/div&amp;gt;&amp;#039;, dir, dir, textLang, str, text)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- ====================================================================&lt;br /&gt;
local function style(str, textLang)&lt;br /&gt;
-- based on [[Template:Title/style]]&lt;br /&gt;
	if not str or #str==0 then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
	str = mw.text.trim(str)&lt;br /&gt;
	local LUT = {ar=&amp;#039;%s&amp;#039;,he=&amp;#039;%s&amp;#039; ,et=&amp;#039;„%s“&amp;#039; ,ja=&amp;#039;『%s』&amp;#039; ,mk=&amp;#039;„%s“&amp;#039; ,ru=&amp;#039;«%s»&amp;#039; ,zh=&amp;#039;《%s》&amp;#039;, [&amp;#039;zh-hans&amp;#039;]=&amp;#039;《%s》&amp;#039;, en=&amp;#039;&amp;lt;i&amp;gt;%s&amp;lt;/i&amp;gt;&amp;#039;}&lt;br /&gt;
	--str = mw.language:ucfirst(str)&lt;br /&gt;
	local form, lang = langSwitch_(LUT, textLang)&lt;br /&gt;
	str = mw.ustring.format( form,  str)&lt;br /&gt;
	local dir = mw.language.new( lang ):isRTL() and &amp;#039;rtl&amp;#039; or &amp;#039;ltr&amp;#039;   &lt;br /&gt;
    str = string.format(&amp;#039;&amp;lt;span dir=&amp;quot;%s&amp;quot; lang=&amp;quot;%s&amp;quot;&amp;gt;%s&amp;lt;/span&amp;gt;&amp;#039;, dir, lang, str)&lt;br /&gt;
	return str&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- ===========================================================================&lt;br /&gt;
-- === get wikidata item ID (qid) based on P6243 stored in SDC             ===&lt;br /&gt;
-- ===========================================================================&lt;br /&gt;
local function qid_from_SDC()&lt;br /&gt;
	local page = mw.title.getCurrentTitle()&lt;br /&gt;
	local mid  = &amp;quot;M&amp;quot; .. page.id -- same as {{PAGEID}}&lt;br /&gt;
	local entity = mw.wikibase.getEntity(mid)&lt;br /&gt;
	if entity and entity.statements and entity.statements.P6243 then&lt;br /&gt;
		local statement = entity.statements.P6243[1]&lt;br /&gt;
		return statement.mainsnak.datavalue.value.id&lt;br /&gt;
	end&lt;br /&gt;
	return nil&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- ====================================================================&lt;br /&gt;
local function harvest_wikidata(entity, userLang)&lt;br /&gt;
	local data = {} -- structure similar to &amp;quot;args&amp;quot; but filled with wikidata data&lt;br /&gt;
	data.userLang = userLang&lt;br /&gt;
	if not entity then&lt;br /&gt;
		return data&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- get title (from 3 properties and label)&lt;br /&gt;
	local property = {P1476 = &amp;#039;title&amp;#039;, P1448=&amp;#039;official_name&amp;#039;, P1705=&amp;#039;native_label&amp;#039;}&lt;br /&gt;
	for prop, field in pairs( property ) do&lt;br /&gt;
		local titleList = {}&lt;br /&gt;
		for _, statement in pairs( entity:getBestStatements(field)) do &lt;br /&gt;
			if (statement.mainsnak.snaktype == &amp;quot;value&amp;quot;) then &lt;br /&gt;
				local val = statement.mainsnak.datavalue.value&lt;br /&gt;
				titleList[val.language] = val.text -- look for multiple values each with a language code&lt;br /&gt;
				data.title, data.lang = val.text, val.language&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		if #titleList&amp;gt;1 then&lt;br /&gt;
			title, language = langSwitch_(titleList, userLang)&lt;br /&gt;
			if title then&lt;br /&gt;
				data.title, data.lang = title, language&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		if data.title then&lt;br /&gt;
			break&lt;br /&gt;
		end	&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- get labels in all the langguages&lt;br /&gt;
	if entity.labels then&lt;br /&gt;
		for language, val in pairs(entity.labels) do -- loop over all labels&lt;br /&gt;
			if language~=data.lang then&lt;br /&gt;
				data[language] = val.value&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return data&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- ==================================================&lt;br /&gt;
-- === External functions ===========================&lt;br /&gt;
-- ==================================================&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
-- ===========================================================================&lt;br /&gt;
-- === Version of the function to be called from other LUA codes&lt;br /&gt;
-- ===========================================================================&lt;br /&gt;
function p.title_(args)&lt;br /&gt;
	local line1, line2, Title, text, lang&lt;br /&gt;
	local qsTable = {}&lt;br /&gt;
	local qsCommand = &amp;#039;&amp;lt;div style=&amp;quot;display: none;&amp;quot;&amp;gt;label QS:L%s,&amp;quot;%s&amp;quot;&amp;lt;/div&amp;gt;&amp;#039; -- text of invisible tag brodcasted by the template which allows creation of QuickStatements command used to add this info to Wikidata&lt;br /&gt;
&lt;br /&gt;
	if args.lang and args.title then -- == Case 1: original language to be displayed ==&lt;br /&gt;
		args.lang = string.lower(args.lang)&lt;br /&gt;
		line1 = style(args.title, args.lang)&lt;br /&gt;
		if args.lang==args.userLang then -- user&amp;#039;s language = title&amp;#039;s language&lt;br /&gt;
			if args[args.lang] then -- the second line can be a modernization for example&lt;br /&gt;
				line2 = &amp;#039;&amp;lt;br/&amp;gt;&amp;#039; .. style(args[args.lang], args.userLang) &lt;br /&gt;
			end&lt;br /&gt;
			Title = mw.ustring.format( &amp;#039;&amp;lt;span style=&amp;quot;font-weight:bold&amp;quot;&amp;gt;%s%s&amp;lt;/span&amp;gt;&amp;#039;, line1, line2 or &amp;#039;&amp;#039;)&lt;br /&gt;
		else -- user&amp;#039;s language != title&amp;#039;s language&lt;br /&gt;
			-- line 1 original language &lt;br /&gt;
			local langName = mw.language.fetchLanguageName( args.lang, args.userLang  )&lt;br /&gt;
			local colon    = mw.message.new( &amp;quot;colon&amp;quot; ):inLanguage(args.userLang ):plain()&lt;br /&gt;
			local wordsep  = mw.message.new( &amp;quot;Word-separator&amp;quot; ):inLanguage(args.userLang ):plain()&lt;br /&gt;
			line1 = langName .. colon .. wordsep .. line1&lt;br /&gt;
			if args.transliteration then -- the second line can be a modernization for example&lt;br /&gt;
				line1 = line1 .. &amp;#039;&amp;amp;#32;- &amp;#039;  .. args.transliteration&lt;br /&gt;
			end&lt;br /&gt;
			line1 = mw.ustring.format( &amp;#039;&amp;lt;span style=&amp;quot;font-size:0.9em&amp;quot;&amp;gt;%s&amp;lt;/span&amp;gt;&amp;#039;, line1)&lt;br /&gt;
&lt;br /&gt;
			--  line 2 translation&lt;br /&gt;
			if args.translation then -- the second line can be a modernization for example&lt;br /&gt;
				line2 = args.translation&lt;br /&gt;
			else&lt;br /&gt;
				text, lang = langSwitch_(args, args.userLang)&lt;br /&gt;
				line2 = style(text, lang)&lt;br /&gt;
			end&lt;br /&gt;
			if line2 then&lt;br /&gt;
				line2 = mw.ustring.format( &amp;#039;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-weight:bold&amp;quot;&amp;gt;%s&amp;lt;/span&amp;gt;&amp;#039;, line2)&lt;br /&gt;
			end &lt;br /&gt;
			Title = line1 .. (line2 or &amp;#039;&amp;#039;)&lt;br /&gt;
		end&lt;br /&gt;
		if not args.title_ then -- make sure title did not originated on wikidata&lt;br /&gt;
			table.insert( qsTable, string.format(&amp;#039;&amp;lt;div style=&amp;quot;display: none;&amp;quot;&amp;gt;title QS:P1476,%s:&amp;quot;%s&amp;quot;&amp;lt;/div&amp;gt;&amp;#039;, args.lang, args.title) )&lt;br /&gt;
			table.insert( qsTable, string.format(qsCommand, args.lang, args.title) )&lt;br /&gt;
		end&lt;br /&gt;
	else -- == Case 2: original language not relevant ==&lt;br /&gt;
		if args.title then &lt;br /&gt;
			Title = args.title&lt;br /&gt;
		else&lt;br /&gt;
			text, lang = langSwitch_(args, args.userLang)&lt;br /&gt;
			Title = style(text, lang)&lt;br /&gt;
		end&lt;br /&gt;
		if Title then&lt;br /&gt;
			Title = mw.ustring.format( &amp;#039;&amp;lt;span style=&amp;quot;font-weight:bold&amp;quot;&amp;gt;%s&amp;lt;/span&amp;gt;&amp;#039;, Title)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	Title = Title or &amp;#039;&amp;#039;&lt;br /&gt;
	if args.comment then&lt;br /&gt;
		Title = mw.ustring.format( &amp;#039;%s&amp;lt;br /&amp;gt;&amp;lt;span style=&amp;quot;font-size:0.9em&amp;quot;&amp;gt;%s&amp;lt;br /&amp;gt;&amp;lt;/span&amp;gt;&amp;#039;, title, args.comment)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- add text of invisible tag brodcasted by the template which allows creation of QuickStatements command used to add this info to Wikidata&lt;br /&gt;
	for lang, text in pairs( args ) do &lt;br /&gt;
		if mw.language.isSupportedLanguage(lang) and not args[lang..&amp;#039;_&amp;#039;] then -- lang has tobe a valid language and the statement is not from wikidata&lt;br /&gt;
			table.insert( qsTable, string.format(qsCommand, lang, text) )&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return Title .. table.concat( qsTable, &amp;#039;\n&amp;#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.wikidata_title(entity, userLang)&lt;br /&gt;
	return p.title_(harvest_wikidata(entity, userLang))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- ===========================================================================&lt;br /&gt;
-- === Versions of the function to be called from template namespace&lt;br /&gt;
-- ===========================================================================&lt;br /&gt;
function p.title(frame)&lt;br /&gt;
	local args = {}&lt;br /&gt;
	for name, value in pairs( frame:getParent().args ) do &lt;br /&gt;
		if value ~= &amp;#039;&amp;#039; then -- nuke empty strings&lt;br /&gt;
			args[string.lower(name)] = value&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	for name, value in pairs( frame.args ) do &lt;br /&gt;
		if value ~= &amp;#039;&amp;#039; then -- nuke empty strings&lt;br /&gt;
			args[string.lower(name)] = value&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if not (args.userLang and mw.language.isSupportedLanguage(args.userLang)) then &lt;br /&gt;
		args.userLang = frame:callParserFunction( &amp;quot;int&amp;quot;, &amp;quot;lang&amp;quot; ) -- get user&amp;#039;s chosen language&lt;br /&gt;
	end &lt;br /&gt;
&lt;br /&gt;
	-- merge wikidata with local variables&lt;br /&gt;
	local qid = args.wikidata or qid_from_SDC() -- get wikidata item ID based on P6243 stored in SDC&lt;br /&gt;
	local entity = mw.wikibase.getEntity(qid)&lt;br /&gt;
	if entity then&lt;br /&gt;
		local data = harvest_wikidata(entity, args.userLang)&lt;br /&gt;
		if not args.title and data.title and not args.lang and data.lang then&lt;br /&gt;
			args.title = data.title -- get title from wikidata&lt;br /&gt;
			args.lang  = data.lang&lt;br /&gt;
			args.title_ = &amp;#039;from wikidata&amp;#039;&lt;br /&gt;
		end&lt;br /&gt;
		for lang, text in pairs( data ) do &lt;br /&gt;
			if mw.language.isSupportedLanguage(lang) and not args[lang] then &lt;br /&gt;
				args[lang] = data[lang]&lt;br /&gt;
				args[lang..&amp;#039;_&amp;#039;] = &amp;#039;from wikidata&amp;#039;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return p.title_(args)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>bsd&gt;Jarekt</name></author>
	</entry>
</feed>