模块:Phrases:修订间差异

来自「荏苒之境」
无编辑摘要
无编辑摘要
 
(未显示同一用户的6个中间版本)
第13行: 第13行:
local args = frame.args
local args = frame.args
local table_name = escape_sql(args.table)
local table_name = escape_sql(args.table)
local theme_text = args.theme_text
local theme_text = args.theme_text
if theme_text == "" then theme_text = nil end
local parent_frame = frame:getParent()
local parent_frame = frame:getParent()
第24行: 第26行:
end
end
local theme_translation
cargo.store(PHRASE_THEMES_TABLE, {
if theme_text ~= nil and theme_text ~= "" then
PhraseTable = table_name,
theme_translation = {language, escape_sql(trim(theme_text))}
Theme = theme,
end
Language = language,
Translation = theme_text
local theme_query = cargo.query(PHRASE_THEMES_TABLE, "_ID,Translations", {
where = "PhraseTable='"..table_name.."' AND Theme='"..theme.."'"
})
})
if #theme_query == 0 then
cargo.store(PHRASE_THEMES_TABLE, {
PhraseTable = table_name,
Theme = theme,
Translations = theme_translation and mw.text.jsonEncode {theme_translation}
})
elseif theme_translation ~= nil then
local success, trans = pcall(mw.text.jsonDecode, theme_query[1].Translations)
if success then
trans[#trans+1] = {language, theme_text}
else
trans = {theme_translation}
end
cargo.store(PHRASE_THEMES_TABLE, {
_ID = theme_query[1]._ID,
Translations = mw.text.jsonEncode(trans)
})
end
for i, phrase in ipairs(parent_frame.args) do
for i, phrase in ipairs(parent_frame.args) do
第56行: 第38行:
Language = language,
Language = language,
Phrase = escape_sql(trim(phrase)),
Phrase = escape_sql(trim(phrase)),
Theme = theme
Theme = theme,
Time = os.time()
})
})
end
end
第63行: 第46行:
local t = {}
local t = {}
if theme_text ~= nil and theme_text ~= "" then
t[#t+1] = "<span><b>"
t[#t+1] = theme_text
t[#t+1] = "</b></span>"
end
t[#t+1] = "<ul>"
t[#t+1] = "<ul>"
for i, phrase in ipairs(parent_frame.args) do
for i, phrase in ipairs(parent_frame.args) do

2025年8月24日 (日) 01:48的最新版本

此模块的文档可以在模块:Phrases/doc创建

local translation = require("Module:Template translation")
local utils_str = require("Module:Utils/String")

local cargo = mw.ext.cargo
local escape_sql = utils_str.escape_sql
local trim = utils_str.trim

local PHRASE_THEMES_TABLE = "PhraseThemes"

local phrases = {}

phrases.show = function(frame)
	local args = frame.args
	local table_name = escape_sql(args.table)
	
	local theme_text = args.theme_text
	if theme_text == "" then theme_text = nil end
	
	local parent_frame = frame:getParent()
	local theme = escape_sql(trim(parent_frame.args[1]))
	
	local language = translation.getCurrentLanguageSubpage()
	if language ~= "zh-cn" then
		if language == nil or language == "" then
			language = "zh-cn"
		end
		
		cargo.store(PHRASE_THEMES_TABLE, {
			PhraseTable = table_name,
			Theme = theme,
			Language = language,
			Translation = theme_text
		})
		
		for i, phrase in ipairs(parent_frame.args) do
			if i ~= 1 then
				cargo.store(table_name, {
					Language = language,
					Phrase = escape_sql(trim(phrase)),
					Theme = theme,
					Time = os.time()
				})
			end
		end
	end
	
	local t = {}
	t[#t+1] = "<ul>"
	for i, phrase in ipairs(parent_frame.args) do
		if i ~= 1 then
			t[#t+1] = "<li>"
			t[#t+1] = frame:preprocess(phrase)
			t[#t+1] = "</li>"
		end
	end
	t[#t+1] = "</ul>"
	return table.concat(t)
end

return phrases