Compare commits
	
		
			14 Commits
		
	
	
		
			ed3a679bca
			...
			master
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|  | 0535baf7c2 | ||
|  | 90db834831 | ||
|  | 1d98c6a5cc | ||
|  | 87d65439a1 | ||
|  | 4309b3575a | ||
|  | bb13ba6d7c | ||
|  | 3d5ba32fa0 | ||
|  | 0847176bdb | ||
|  | 4fb53b67e8 | ||
|  | e5f73438ce | ||
|  | e387808065 | ||
|  | 1c881d6f22 | ||
|  | cd6bf1eabe | ||
|  | 1dd01e3bc6 | 
							
								
								
									
										1
									
								
								.gitattributes
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1 @@ | |||||||
|  | util/blender export-ignore | ||||||
| @@ -10,7 +10,7 @@ Without any other add-ons, this mod upgrades only the default wooden and steel s | |||||||
|  |  | ||||||
| ## Text formatting | ## Text formatting | ||||||
|  |  | ||||||
| In general, text is rendered exactly as-written, left-to-right, top to bottom, without any translations or modifications.  The standard fonts support 7-bit ASCII as well as Cyrllic. | In general, text is rendered exactly as-written, left-to-right, top to bottom, without any translations or modifications to a maximum of 400 chars.  The standard fonts support 7-bit ASCII as well as Cyrllic. | ||||||
|  |  | ||||||
| That said, there are some basic text formatting options: | That said, there are some basic text formatting options: | ||||||
|  |  | ||||||
|   | |||||||
							
								
								
									
										72
									
								
								api.lua
									
									
									
									
									
								
							
							
						
						| @@ -1,6 +1,7 @@ | |||||||
| -- signs_lib api, backported from street_signs | -- signs_lib api, backported from street_signs | ||||||
|  |  | ||||||
| local S = signs_lib.S | local S = signs_lib.S | ||||||
|  | local FS = function(...) return minetest.formspec_escape(S(...)) end | ||||||
| local has_default_mod = minetest.get_modpath("default") | local has_default_mod = minetest.get_modpath("default") | ||||||
|  |  | ||||||
| local function log(level, messagefmt, ...) | local function log(level, messagefmt, ...) | ||||||
| @@ -165,12 +166,14 @@ local ctexcache_wide = {} | |||||||
| -- entity handling | -- entity handling | ||||||
|  |  | ||||||
| minetest.register_entity("signs_lib:text", { | minetest.register_entity("signs_lib:text", { | ||||||
|  | 	initial_properties = { | ||||||
| 		collisionbox = { 0, 0, 0, 0, 0, 0 }, | 		collisionbox = { 0, 0, 0, 0, 0, 0 }, | ||||||
| 		visual = "mesh", | 		visual = "mesh", | ||||||
| 		mesh = "signs_lib_standard_sign_entity_wall.obj", | 		mesh = "signs_lib_standard_sign_entity_wall.obj", | ||||||
| 		textures = {}, | 		textures = {}, | ||||||
| 		static_save = true, | 		static_save = true, | ||||||
| 		backface_culling = false, | 		backface_culling = false, | ||||||
|  | 	}, | ||||||
| 	on_activate = function(self) | 	on_activate = function(self) | ||||||
| 		local node = minetest.get_node(self.object:get_pos()) | 		local node = minetest.get_node(self.object:get_pos()) | ||||||
| 		if minetest.get_item_group(node.name, "sign") == 0 then | 		if minetest.get_item_group(node.name, "sign") == 0 then | ||||||
| @@ -467,8 +470,8 @@ local math_max = math.max | |||||||
| local function fill_line(x, y, w, c, font_size, colorbgw) | local function fill_line(x, y, w, c, font_size, colorbgw) | ||||||
| 	c = c or "0" | 	c = c or "0" | ||||||
| 	local tex = { } | 	local tex = { } | ||||||
| 	for xx = 0, math.max(0, w), colorbgw do | 	for xx = x, w, colorbgw do | ||||||
| 		table.insert(tex, (":%d,%d=signs_lib_color_"..font_size.."px_%s.png"):format(x + xx, y, c)) | 		table.insert(tex, (":%d,%d=signs_lib_color_"..font_size.."px_%s.png"):format(xx, y, c)) | ||||||
| 	end | 	end | ||||||
| 	return table.concat(tex) | 	return table.concat(tex) | ||||||
| end | end | ||||||
| @@ -580,8 +583,8 @@ local function make_line_texture(line, lineno, pos, line_width, line_height, cwi | |||||||
| 					end | 					end | ||||||
| 				end | 				end | ||||||
| 				if w then | 				if w then | ||||||
| 					width = width + w + 1 | 					width = width + w | ||||||
| 					if width >= (line_width - cwidth_tab[" "]) then | 					if width > line_width then | ||||||
| 						width = 0 | 						width = 0 | ||||||
| 					else | 					else | ||||||
| 						maxw = math_max(width, maxw) | 						maxw = math_max(width, maxw) | ||||||
| @@ -604,6 +607,7 @@ local function make_line_texture(line, lineno, pos, line_width, line_height, cwi | |||||||
| 							off = ch_offs, | 							off = ch_offs, | ||||||
| 							tex = tex, | 							tex = tex, | ||||||
| 							col = ("%X"):format(cur_color), | 							col = ("%X"):format(cur_color), | ||||||
|  | 							w = w, | ||||||
| 						}) | 						}) | ||||||
| 					end | 					end | ||||||
| 					ch_offs = ch_offs + w | 					ch_offs = ch_offs + w | ||||||
| @@ -612,8 +616,8 @@ local function make_line_texture(line, lineno, pos, line_width, line_height, cwi | |||||||
| 			else | 			else | ||||||
| 				local w = cwidth_tab[c] | 				local w = cwidth_tab[c] | ||||||
| 				if w then | 				if w then | ||||||
| 					width = width + w + 1 | 					width = width + w | ||||||
| 					if width >= (line_width - cwidth_tab[" "]) then | 					if width > line_width then | ||||||
| 						width = 0 | 						width = 0 | ||||||
| 					else | 					else | ||||||
| 						maxw = math_max(width, maxw) | 						maxw = math_max(width, maxw) | ||||||
| @@ -623,6 +627,7 @@ local function make_line_texture(line, lineno, pos, line_width, line_height, cwi | |||||||
| 							off = ch_offs, | 							off = ch_offs, | ||||||
| 							tex = char_tex(font_name, c), | 							tex = char_tex(font_name, c), | ||||||
| 							col = ("%X"):format(cur_color), | 							col = ("%X"):format(cur_color), | ||||||
|  | 							w = w, | ||||||
| 						}) | 						}) | ||||||
| 					end | 					end | ||||||
| 					ch_offs = ch_offs + w | 					ch_offs = ch_offs + w | ||||||
| @@ -630,7 +635,7 @@ local function make_line_texture(line, lineno, pos, line_width, line_height, cwi | |||||||
| 			end | 			end | ||||||
| 			i = i + 1 | 			i = i + 1 | ||||||
| 		end | 		end | ||||||
| 		width = width + cwidth_tab[" "] + 1 | 		width = width + cwidth_tab[" "] | ||||||
| 		maxw = math_max(width, maxw) | 		maxw = math_max(width, maxw) | ||||||
| 		table.insert(words, { chars=chars, w=ch_offs }) | 		table.insert(words, { chars=chars, w=ch_offs }) | ||||||
| 	end | 	end | ||||||
| @@ -639,7 +644,8 @@ local function make_line_texture(line, lineno, pos, line_width, line_height, cwi | |||||||
|  |  | ||||||
| 	local texture = { } | 	local texture = { } | ||||||
|  |  | ||||||
| 	local start_xpos = math.floor((line_width - maxw) / 2) + def.x_offset | 	local start_xpos = math.max(0, math.floor((line_width - maxw) / 2)) + def.x_offset | ||||||
|  | 	local end_xpos = math.min(start_xpos + maxw, line_width) | ||||||
|  |  | ||||||
| 	local xpos = start_xpos | 	local xpos = start_xpos | ||||||
| 	local ypos = (line_height + def.line_spacing)* lineno + def.y_offset | 	local ypos = (line_height + def.line_spacing)* lineno + def.y_offset | ||||||
| @@ -648,31 +654,33 @@ local function make_line_texture(line, lineno, pos, line_width, line_height, cwi | |||||||
|  |  | ||||||
| 	for word_i, word in ipairs(words) do | 	for word_i, word in ipairs(words) do | ||||||
| 		local xoffs = (xpos - start_xpos) | 		local xoffs = (xpos - start_xpos) | ||||||
| 		if (xoffs > 0) and ((xoffs + word.w) > maxw) then | 		if (xoffs > 0) and ((xoffs + word.w) > end_xpos) then | ||||||
| 			table.insert(texture, fill_line(xpos, ypos, maxw, "n", font_size, colorbgw)) | 			table.insert(texture, fill_line(xpos, ypos, end_xpos, "n", font_size, colorbgw)) | ||||||
| 			xpos = start_xpos | 			xpos = start_xpos | ||||||
| 			ypos = ypos + line_height + def.line_spacing | 			ypos = ypos + line_height + def.line_spacing | ||||||
| 			lineno = lineno + 1 | 			lineno = lineno + 1 | ||||||
| 			if lineno >= def.number_of_lines then break end | 			if lineno >= def.number_of_lines then break end | ||||||
| 			table.insert(texture, fill_line(xpos, ypos, maxw, cur_color, font_size, colorbgw)) | 			table.insert(texture, fill_line(xpos, ypos, end_xpos, cur_color, font_size, colorbgw)) | ||||||
| 		end | 		end | ||||||
| 		for ch_i, ch in ipairs(word.chars) do | 		for ch_i, ch in ipairs(word.chars) do | ||||||
|  | 			if xpos + ch.off + ch.w > end_xpos then | ||||||
|  | 				table.insert(texture, fill_line(xpos + ch.off, ypos, end_xpos, "n", font_size, colorbgw)) | ||||||
|  | 				break | ||||||
|  | 			end | ||||||
| 			if ch.col ~= cur_color then | 			if ch.col ~= cur_color then | ||||||
| 				cur_color = ch.col | 				cur_color = ch.col | ||||||
| 				table.insert(texture, fill_line(xpos + ch.off, ypos, maxw, cur_color, font_size, colorbgw)) | 				table.insert(texture, fill_line(xpos + ch.off, ypos, end_xpos, cur_color, font_size, colorbgw)) | ||||||
| 			end | 			end | ||||||
| 			table.insert(texture, (":%d,%d=%s"):format(xpos + ch.off, ypos, ch.tex)) | 			table.insert(texture, (":%d,%d=%s"):format(xpos + ch.off, ypos, ch.tex)) | ||||||
| 		end | 		end | ||||||
| 		table.insert( | 		xpos = xpos + word.w | ||||||
| 			texture, | 		if xpos < end_xpos then | ||||||
| 			(":%d,%d="):format(xpos + word.w, ypos) .. char_tex(font_name, " ") | 			table.insert(texture, (":%d,%d="):format(xpos, ypos) .. char_tex(font_name, " ")) | ||||||
| 		) | 			xpos = xpos + cwidth_tab[" "] | ||||||
| 		xpos = xpos + word.w + cwidth_tab[" "] | 		end | ||||||
| 		if xpos >= (line_width + cwidth_tab[" "]) then break end |  | ||||||
| 	end | 	end | ||||||
|  |  | ||||||
| 	table.insert(texture, fill_line(xpos, ypos, maxw, "n", font_size, colorbgw)) | 	table.insert(texture, fill_line(xpos, ypos, end_xpos, "n", font_size, colorbgw)) | ||||||
| 	table.insert(texture, fill_line(start_xpos, ypos + line_height, maxw, "n", font_size, colorbgw)) |  | ||||||
|  |  | ||||||
| 	return table.concat(texture), lineno | 	return table.concat(texture), lineno | ||||||
| end | end | ||||||
| @@ -810,6 +818,9 @@ function signs_lib.update_sign(pos, fields) | |||||||
| 	local ownstr = "" | 	local ownstr = "" | ||||||
| 	if owner ~= "" then ownstr = S("Locked sign, owned by @1\n", owner) end | 	if owner ~= "" then ownstr = S("Locked sign, owned by @1\n", owner) end | ||||||
|  |  | ||||||
|  | 	-- Fix pasting from Windows: CR instead of LF | ||||||
|  | 	text = string.gsub(text, "\r\n?", "\n") | ||||||
|  |  | ||||||
| 	meta:set_string("text", text) | 	meta:set_string("text", text) | ||||||
| 	meta:set_string("infotext", ownstr..make_infotext(text).." ") | 	meta:set_string("infotext", ownstr..make_infotext(text).." ") | ||||||
|  |  | ||||||
| @@ -935,7 +946,13 @@ function signs_lib.after_place_node(pos, placer, itemstack, pointed_thing, locke | |||||||
| 	local controls = placer:get_player_control() | 	local controls = placer:get_player_control() | ||||||
|  |  | ||||||
| 	local signname = itemstack:get_name() | 	local signname = itemstack:get_name() | ||||||
|  |  | ||||||
|  | 	-- in case player has sign nodes they shouldn't, remove extensions for normal sign | ||||||
| 	local no_wall_name = string.gsub(signname, "_wall", "") | 	local no_wall_name = string.gsub(signname, "_wall", "") | ||||||
|  | 	no_wall_name = string.gsub(no_wall_name, "_yard", "") | ||||||
|  | 	no_wall_name = string.gsub(no_wall_name, "_hanging", "") | ||||||
|  | 	no_wall_name = string.gsub(no_wall_name, "_onpole_horiz", "") | ||||||
|  | 	no_wall_name = string.gsub(no_wall_name, "_onpole", "") | ||||||
|  |  | ||||||
| 	local def = minetest.registered_items[signname] | 	local def = minetest.registered_items[signname] | ||||||
|  |  | ||||||
| @@ -999,6 +1016,7 @@ end | |||||||
|  |  | ||||||
| function signs_lib.register_sign(name, raw_def) | function signs_lib.register_sign(name, raw_def) | ||||||
| 	local def = table.copy(raw_def) | 	local def = table.copy(raw_def) | ||||||
|  | 	def.is_ground_content = false | ||||||
|  |  | ||||||
| 	if raw_def.entity_info == "standard" then | 	if raw_def.entity_info == "standard" then | ||||||
| 		def.entity_info = { | 		def.entity_info = { | ||||||
| @@ -1278,7 +1296,7 @@ minetest.register_lbm({ | |||||||
| minetest.register_chatcommand("regen_signs", { | minetest.register_chatcommand("regen_signs", { | ||||||
| 	params = "", | 	params = "", | ||||||
| 	privs = {server = true}, | 	privs = {server = true}, | ||||||
| 	description = "Skims through all currently-loaded sign-bearing mapblocks, clears away any entities within each sign's node space, and regenerates their text entities, if any.", | 	description = S("Skims through all currently-loaded sign-bearing mapblocks, clears away any entities within each sign's node space, and regenerates their text entities, if any."), | ||||||
| 	func = function(player_name, params) | 	func = function(player_name, params) | ||||||
| 		local allsigns = {} | 		local allsigns = {} | ||||||
| 		local totalsigns = 0 | 		local totalsigns = 0 | ||||||
| @@ -1297,13 +1315,13 @@ minetest.register_chatcommand("regen_signs", { | |||||||
| 		end | 		end | ||||||
| 		if signs_lib.totalblocks < 0 then signs_lib.totalblocks = 0 end | 		if signs_lib.totalblocks < 0 then signs_lib.totalblocks = 0 end | ||||||
| 		if totalsigns == 0 then | 		if totalsigns == 0 then | ||||||
| 			minetest.chat_send_player(player_name, "There are no signs in the currently-loaded terrain.") | 			minetest.chat_send_player(player_name, S("There are no signs in the currently-loaded terrain.")) | ||||||
| 			signs_lib.block_list = {} | 			signs_lib.block_list = {} | ||||||
| 			return | 			return | ||||||
| 		end | 		end | ||||||
|  |  | ||||||
| 		minetest.chat_send_player(player_name, "Found a total of "..totalsigns.." sign nodes across "..signs_lib.totalblocks.." blocks.") | 		minetest.chat_send_player(player_name, S("Found a total of @1 sign nodes across @2 blocks.", totalsigns, signs_lib.totalblocks)) | ||||||
| 		minetest.chat_send_player(player_name, "Regenerating sign entities...") | 		minetest.chat_send_player(player_name, S("Regenerating sign entities ...")) | ||||||
|  |  | ||||||
| 		for _, b in pairs(allsigns) do | 		for _, b in pairs(allsigns) do | ||||||
| 			for _, pos in ipairs(b) do | 			for _, pos in ipairs(b) do | ||||||
| @@ -1315,7 +1333,7 @@ minetest.register_chatcommand("regen_signs", { | |||||||
| 				end | 				end | ||||||
| 			end | 			end | ||||||
| 		end | 		end | ||||||
| 		minetest.chat_send_player(player_name, "Finished.") | 		minetest.chat_send_player(player_name, S("Finished.")) | ||||||
| 	end | 	end | ||||||
| }) | }) | ||||||
|  |  | ||||||
| @@ -1343,14 +1361,14 @@ function get_sign_formspec(pos, nodename) | |||||||
| 		"image[0.1,2.4;7,1;signs_lib_sign_color_palette.png]", | 		"image[0.1,2.4;7,1;signs_lib_sign_color_palette.png]", | ||||||
| 		"textarea[0.15,-0.2;6.3,2.8;text;;" .. minetest.formspec_escape(txt) .. "]", | 		"textarea[0.15,-0.2;6.3,2.8;text;;" .. minetest.formspec_escape(txt) .. "]", | ||||||
| 		"button_exit[3.7,3.4;2,1;ok;" .. S("Write") .. "]", | 		"button_exit[3.7,3.4;2,1;ok;" .. S("Write") .. "]", | ||||||
| 		"label[0.3,3.4;Unicode font]", | 		"label[0.3,3.4;"..FS("Unicode font").."]", | ||||||
| 		"image_button[0.6,3.7;1,0.6;signs_lib_switch_" .. state .. ".png;uni_" | 		"image_button[0.6,3.7;1,0.6;signs_lib_switch_" .. state .. ".png;uni_" | ||||||
| 			.. state .. ";;;false;signs_lib_switch_interm.png]", | 			.. state .. ";;;false;signs_lib_switch_interm.png]", | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	if minetest.registered_nodes[nodename].allow_widefont then | 	if minetest.registered_nodes[nodename].allow_widefont then | ||||||
| 		state = meta:get_int("widefont") == 1 and "on" or "off" | 		state = meta:get_int("widefont") == 1 and "on" or "off" | ||||||
| 		formspec[#formspec+1] = "label[2.1,3.4;Wide font]" | 		formspec[#formspec+1] = "label[2.1,3.4;"..FS("Wide font").."]" | ||||||
| 		formspec[#formspec+1] = "image_button[2.3,3.7;1,0.6;signs_lib_switch_" .. state .. ".png;wide_" | 		formspec[#formspec+1] = "image_button[2.3,3.7;1,0.6;signs_lib_switch_" .. state .. ".png;wide_" | ||||||
| 				.. state .. ";;;false;signs_lib_switch_interm.png]" | 				.. state .. ";;;false;signs_lib_switch_interm.png]" | ||||||
| 	end | 	end | ||||||
|   | |||||||
| @@ -231,6 +231,7 @@ signs_lib.unicode_install({38,"26"}) | |||||||
| dofile(signs_lib.path.."/nonascii-de.lua") | dofile(signs_lib.path.."/nonascii-de.lua") | ||||||
| dofile(signs_lib.path.."/nonascii-fr.lua") | dofile(signs_lib.path.."/nonascii-fr.lua") | ||||||
| dofile(signs_lib.path.."/nonascii-pl.lua") | dofile(signs_lib.path.."/nonascii-pl.lua") | ||||||
|  | dofile(signs_lib.path.."/nonascii-ua.lua") | ||||||
|  |  | ||||||
| local nmdc = { | local nmdc = { | ||||||
| 	[36] = "$", | 	[36] = "$", | ||||||
|   | |||||||
| @@ -1,27 +1,12 @@ | |||||||
| # textdomain: signs_lib | # textdomain: signs_lib | ||||||
| Locked sign, owned by @1@n=gesperrter Schild, gehört @1@n | Locked sign, owned by @1@n=Abgeschlossenes Schild, gehört @1@n | ||||||
| Write=schreiben | Skims through all currently-loaded sign-bearing mapblocks, clears away any entities within each sign's node space, and regenerates their text entities, if any.=Iteriert durch alle derzeit geladenen Kartenblöcke, die Schilder enthalten, löscht alle Entities innerhalb des Node-Raums eines jeden Schildes und erzeugt ihre Text-Entities, falls vorhanden, neu. | ||||||
| @1 wrote "@2" to sign at @3= | There are no signs in the currently-loaded terrain.=Im derzeit geladenen Gelände befinden sich keine Schilder. | ||||||
| @1 flipped the wide-font switch to "@2" at @3= | Found a total of @1 sign nodes across @2 blocks.=Insgesamt wurden @1 Schild-Nodes über @2 Kartenblöcke gefunden. | ||||||
| @1 flipped the unicode-font switch to "@2" at @3= | Regenerating sign entities ...=Schild-Entities werden neu erzeugt ... | ||||||
|  | Finished.=Fertig. | ||||||
|  | Write=Schreiben | ||||||
| ##### not used anymore ##### | Unicode font=Unicode-Schrift | ||||||
|  | Wide font=Weite Schrift | ||||||
| locked =gesperrt  | Wooden Wall Sign=Holzwandschild | ||||||
| @1 wrote "@2" to @3sign at @4=@1 schrieb "@2" auf das @3Schild bei @4 | Steel Wall Sign=Stahlwandschild | ||||||
| Sign=Schild |  | ||||||
| Can edit all locked signs=Kann alle gesperrte Schilder bearbeiten |  | ||||||
| Locked Sign=gesperrter Schild |  | ||||||
| green=grün |  | ||||||
| yellow=gelb |  | ||||||
| red=rot |  | ||||||
| white_red=weißrot |  | ||||||
| white_black=schwarzweiß |  | ||||||
| orange=orange |  | ||||||
| blue=blau |  | ||||||
| brown=braun |  | ||||||
| Sign (@1, metal)=Schild (@1, Metall) |  | ||||||
| Attempt to register unknown node as fence=Versuch ein unbekanntes Element als Zaun zu registrieren |  | ||||||
| Registered @1 and @2=Registrierte @1 und @2 |  | ||||||
| [MOD] signs loaded=[MOD] Schilder-Mod geladen |  | ||||||
|   | |||||||
| @@ -1,25 +1,12 @@ | |||||||
| # textdomain: signs_lib | # textdomain: signs_lib | ||||||
| Locked sign, owned by @1@n= | Locked sign, owned by @1@n=Cartel bloqueado, propiedad de @1 | ||||||
| Write= | Skims through all currently-loaded sign-bearing mapblocks, clears away any entities within each sign's node space, and regenerates their text entities, if any.=Examina todos los bloques de mapas que contienen letreros cargados actualmente, elimina cualquier entidad dentro del espacio de nodo de cada cartel y regenera sus entidades de texto, si las hay. | ||||||
| @1 wrote "@2" to sign at @3= | There are no signs in the currently-loaded terrain.=No hay carteles en el terreno actual cargado. | ||||||
| @1 flipped the wide-font switch to "@2" at @3= | Found a total of @1 sign nodes across @2 blocks.=Se han encontrado un total de @1 cartel(es) a traves de @2 bloque(s). | ||||||
| @1 flipped the unicode-font switch to "@2" at @3= | Regenerating sign entities ...=Regenerando entidades de los carteles... | ||||||
|  | Finished.=Terminado | ||||||
|  | Write=Escribir | ||||||
| ##### not used anymore ##### | Unicode font=Fuente unicode | ||||||
|  | Wide font=Fuente ancha | ||||||
| locked =bloqueada  | Wooden Wall Sign=Cartel de Madera | ||||||
| @1 wrote "@2" to @3sign at @4=@1 escribio "@2" en el cartel @3en @4 | Steel Wall Sign=Cartel de Acero | ||||||
| Sign=Letrero |  | ||||||
| Locked Sign=Letrero bloqueada |  | ||||||
| green=verde |  | ||||||
| yellow=amarillo |  | ||||||
| red=rojo |  | ||||||
| white_red=rojo y blanco |  | ||||||
| white_black=negro y blanco |  | ||||||
| orange=naranja |  | ||||||
| blue=azul |  | ||||||
| brown=marrón |  | ||||||
| Sign (@1, metal)=Letrero (@1, metal) |  | ||||||
| Registered @1 and @2=Registrado @1 y @2 |  | ||||||
| [MOD] signs loaded=[MOD] signs cargados |  | ||||||
|   | |||||||
| @@ -1,27 +1,12 @@ | |||||||
| # textdomain: signs_lib | # textdomain: signs_lib | ||||||
| Locked sign, owned by @1@n=Panneau verrouillé, appartient à @1@n | Locked sign, owned by @1@n=Panneau verrouillé, appartient à @1@n | ||||||
|  | Skims through all currently-loaded sign-bearing mapblocks, clears away any entities within each sign's node space, and regenerates their text entities, if any.= | ||||||
|  | There are no signs in the currently-loaded terrain.= | ||||||
|  | Found a total of @1 sign nodes across @2 blocks.= | ||||||
|  | Regenerating sign entities ...= | ||||||
|  | Finished.= | ||||||
| Write= | Write= | ||||||
| @1 wrote "@2" to sign at @3= | Unicode font= | ||||||
| @1 flipped the wide-font switch to "@2" at @3= | Wide font= | ||||||
| @1 flipped the unicode-font switch to "@2" at @3= | Wooden Wall Sign= | ||||||
|  | Steel Wall Sign= | ||||||
|  |  | ||||||
| ##### not used anymore ##### |  | ||||||
|  |  | ||||||
| locked =verrouillé  |  | ||||||
| @1 wrote "@2" to @3sign at @4=@1 a écrit "@2" sur le panneau @3en @4 |  | ||||||
| Sign=Panneau |  | ||||||
| Can edit all locked signs=Peut modifier les panneaux verrouillés |  | ||||||
| Locked Sign=Panneau (verrouillé) |  | ||||||
| green=vert |  | ||||||
| yellow=jaune |  | ||||||
| red=rouge |  | ||||||
| white_red=rouge et blanc |  | ||||||
| white_black=noir et blanc |  | ||||||
| orange=orange |  | ||||||
| blue=bleu |  | ||||||
| brown=marron |  | ||||||
| Sign (@1, metal)=Panneau (@1, métal) |  | ||||||
| Attempt to register unknown node as fence=Tentative d'enregistrer un nœud inconnu comme barrière |  | ||||||
| Registered @1 and @2=Enregistrement de @1 et @ |  | ||||||
| [MOD] signs loaded=[MOD] signs chargé |  | ||||||
|   | |||||||
| @@ -1,27 +1,12 @@ | |||||||
| # textdomain: signs_lib | # textdomain: signs_lib | ||||||
| Locked sign, owned by @1@n=Papan tanda berkunci, milik @1@n | Locked sign, owned by @1@n=Papan tanda berkunci, milik @1@n | ||||||
|  | Skims through all currently-loaded sign-bearing mapblocks, clears away any entities within each sign's node space, and regenerates their text entities, if any.= | ||||||
|  | There are no signs in the currently-loaded terrain.= | ||||||
|  | Found a total of @1 sign nodes across @2 blocks.= | ||||||
|  | Regenerating sign entities ...= | ||||||
|  | Finished.= | ||||||
| Write= | Write= | ||||||
| @1 wrote "@2" to sign at @3= | Unicode font= | ||||||
| @1 flipped the wide-font switch to "@2" at @3= | Wide font= | ||||||
| @1 flipped the unicode-font switch to "@2" at @3= | Wooden Wall Sign= | ||||||
|  | Steel Wall Sign= | ||||||
|  |  | ||||||
| ##### not used anymore ##### |  | ||||||
|  |  | ||||||
| locked =berkunci  |  | ||||||
| @1 wrote "@2" to @3sign at @4=@1 menulis "@2" atas papan tanda @3dekat @4 |  | ||||||
| Sign=Papan Tanda |  | ||||||
| Can edit all locked signs=Boleh sunting semua papan tanda berkunci |  | ||||||
| Locked Sign=Papan Tanda Berkunci |  | ||||||
| green=hijau |  | ||||||
| yellow=kuning |  | ||||||
| red=merah |  | ||||||
| white_red=putih_merah |  | ||||||
| white_black=putih_hitam |  | ||||||
| orange=jingga |  | ||||||
| blue=biru |  | ||||||
| brown=perang |  | ||||||
| Sign (@1, metal)=Papan Tanda (@1, logam) |  | ||||||
| Attempt to register unknown node as fence=Cuba untuk mendaftar nod tidak diketahui sebagai pagar |  | ||||||
| Registered @1 and @2=Telah daftar @1 dan @2 |  | ||||||
| [MOD] signs loaded=[MODS] signs telah dimuatkan |  | ||||||
|   | |||||||
| @@ -1,27 +1,12 @@ | |||||||
| # textdomain: signs_lib | # textdomain: signs_lib | ||||||
| Locked sign, owned by @1@n=защищенная табличка, пренадлежит @1@n | Locked sign, owned by @1@n=защищенная табличка, пренадлежит @1@n | ||||||
|  | Skims through all currently-loaded sign-bearing mapblocks, clears away any entities within each sign's node space, and regenerates their text entities, if any.= | ||||||
|  | There are no signs in the currently-loaded terrain.= | ||||||
|  | Found a total of @1 sign nodes across @2 blocks.= | ||||||
|  | Regenerating sign entities ...= | ||||||
|  | Finished.= | ||||||
| Write=записать | Write=записать | ||||||
| @1 wrote "@2" to sign at @3= | Unicode font= | ||||||
| @1 flipped the wide-font switch to "@2" at @3= | Wide font= | ||||||
| @1 flipped the unicode-font switch to "@2" at @3= | Wooden Wall Sign= | ||||||
|  | Steel Wall Sign= | ||||||
|  |  | ||||||
| ##### not used anymore ##### |  | ||||||
|  |  | ||||||
| locked =защищенный  |  | ||||||
| @1 wrote "@2" to @3sign at @4=@1 записал "@2" в @3sign на @4 |  | ||||||
| Sign=табличка |  | ||||||
| Can edit all locked signs=Может редактировать все защищенные таблички |  | ||||||
| Locked Sign=защищенная табличка |  | ||||||
| green=зеленая |  | ||||||
| yellow=желтая |  | ||||||
| red=красная |  | ||||||
| white_red=краснобелая |  | ||||||
| white_black=чернобелая |  | ||||||
| orange=оранжевая |  | ||||||
| blue=синея |  | ||||||
| brown=коричневая |  | ||||||
| Sign (@1, metal)=Табличка (@1, металл) |  | ||||||
| Attempt to register unknown node as fence=Попытка зарегистрировать неизвестный узел как забор |  | ||||||
| Registered @1 and @2=Зарегистрировано @1 для @2 |  | ||||||
| [MOD] signs loaded=[MOD] мод табличек загружен |  | ||||||
|   | |||||||
							
								
								
									
										14
									
								
								locale/signs_lib.uk.tr
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,14 @@ | |||||||
|  | # textdomain: signs_lib | ||||||
|  | Signs Lib=Таблички Lib | ||||||
|  | Adds signs with readable text.=Додає таблички з читабельним текстом. | ||||||
|  | Locked sign, owned by @1@n=Захищена табличка (власник @1@n) | ||||||
|  | Skims through all currently-loaded sign-bearing mapblocks, clears away any entities within each sign's node space, and regenerates their text entities, if any.=Перевіряє всі завантажені блоки з табличками, очищає їхній простір від об'єктів і відновлює текст, якщо потрібно. | ||||||
|  | There are no signs in the currently-loaded terrain.=Не знайдено табличок на поточній провантаженій території. | ||||||
|  | Found a total of @1 sign nodes across @2 blocks.=Загалом знайдено @1 табличок в @2 блоках. | ||||||
|  | Regenerating sign entities ...=Регенерація сутностей табличок... | ||||||
|  | Finished.=Завершено. | ||||||
|  | Write=Записати | ||||||
|  | Unicode font=Юнікод | ||||||
|  | Wide font=Широкий | ||||||
|  | Wooden Wall Sign=Дерев'яна табличка | ||||||
|  | Steel Wall Sign=Сталева табличка | ||||||
							
								
								
									
										12
									
								
								locale/signs_lib.zh_CN.tr
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,12 @@ | |||||||
|  | # textdomain: signs_lib | ||||||
|  | Locked sign, owned by @1@n=锁定告示牌,所有者:@1@n | ||||||
|  | Skims through all currently-loaded sign-bearing mapblocks, clears away any entities within each sign's node space, and regenerates their text entities, if any.=遍历所有当前加载的含告示牌地图区块,清除各告示牌节点空间内的实体,并重建其文本实体(若存在)。 | ||||||
|  | There are no signs in the currently-loaded terrain.=当前加载区域无告示牌。 | ||||||
|  | Found a total of @1 sign nodes across @2 blocks.=在@2个区块中发现共计@1个告示牌方块。 | ||||||
|  | Regenerating sign entities ...=正在重建告示牌实体... | ||||||
|  | Finished.=完成。 | ||||||
|  | Write=书写 | ||||||
|  | Unicode font=Unicode字体 | ||||||
|  | Wide font=宽体字体 | ||||||
|  | Wooden Wall Sign=木质告示牌 | ||||||
|  | Steel Wall Sign=钢质告示牌 | ||||||
| @@ -1,6 +1,12 @@ | |||||||
| # textdomain: signs_lib | # textdomain: signs_lib | ||||||
| Locked sign, owned by @1@n= | Locked sign, owned by @1@n= | ||||||
|  | Skims through all currently-loaded sign-bearing mapblocks, clears away any entities within each sign's node space, and regenerates their text entities, if any.= | ||||||
|  | There are no signs in the currently-loaded terrain.= | ||||||
|  | Found a total of @1 sign nodes across @2 blocks.= | ||||||
|  | Regenerating sign entities ...= | ||||||
|  | Finished.= | ||||||
| Write= | Write= | ||||||
| @1 wrote "@2" to sign at @3= | Unicode font= | ||||||
| @1 flipped the wide-font switch to "@2" at @3= | Wide font= | ||||||
| @1 flipped the unicode-font switch to "@2" at @3= | Wooden Wall Sign= | ||||||
|  | Steel Wall Sign= | ||||||
|   | |||||||
							
								
								
									
										8
									
								
								nonascii-ua.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,8 @@ | |||||||
|  | signs_lib.unicode_install({208,132,"0404"}) | ||||||
|  | signs_lib.unicode_install({208,134,"0406"}) | ||||||
|  | signs_lib.unicode_install({208,135,"0407"}) | ||||||
|  | signs_lib.unicode_install({209,148,"0454"}) | ||||||
|  | signs_lib.unicode_install({209,150,"0456"}) | ||||||
|  | signs_lib.unicode_install({209,151,"0457"}) | ||||||
|  | signs_lib.unicode_install({210,144,"0490"}) | ||||||
|  | signs_lib.unicode_install({210,145,"0491"}) | ||||||
| @@ -1,8 +1,10 @@ | |||||||
| -- Definitions for standard minetest_game wooden and steel wall signs | -- Definitions for standard minetest_game wooden and steel wall signs | ||||||
|  |  | ||||||
|  | local S = signs_lib.S | ||||||
|  |  | ||||||
| if minetest.get_modpath("default") then | if minetest.get_modpath("default") then | ||||||
| 	signs_lib.register_sign("default:sign_wall_wood", { | 	signs_lib.register_sign("default:sign_wall_wood", { | ||||||
| 		description = "Wooden wall sign", | 		description = S("Wooden Wall Sign"), | ||||||
| 		inventory_image = "signs_lib_sign_wall_wooden_inv.png", | 		inventory_image = "signs_lib_sign_wall_wooden_inv.png", | ||||||
| 		tiles = { | 		tiles = { | ||||||
| 			"signs_lib_sign_wall_wooden.png", | 			"signs_lib_sign_wall_wooden.png", | ||||||
| @@ -20,7 +22,7 @@ if minetest.get_modpath("default") then | |||||||
| 	}) | 	}) | ||||||
|  |  | ||||||
| 	signs_lib.register_sign("default:sign_wall_steel", { | 	signs_lib.register_sign("default:sign_wall_steel", { | ||||||
| 		description = "Steel wall sign", | 		description = S("Steel Wall Sign"), | ||||||
| 		inventory_image = "signs_lib_sign_wall_steel_inv.png", | 		inventory_image = "signs_lib_sign_wall_steel_inv.png", | ||||||
| 		tiles = { | 		tiles = { | ||||||
| 			"signs_lib_sign_wall_steel.png", | 			"signs_lib_sign_wall_steel.png", | ||||||
|   | |||||||
							
								
								
									
										
											BIN
										
									
								
								textures/signs_lib_font_16px_0404.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 129 B | 
							
								
								
									
										
											BIN
										
									
								
								textures/signs_lib_font_16px_0406.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 86 B | 
							
								
								
									
										
											BIN
										
									
								
								textures/signs_lib_font_16px_0407.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 98 B | 
							
								
								
									
										
											BIN
										
									
								
								textures/signs_lib_font_16px_0454.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 135 B | 
							
								
								
									
										
											BIN
										
									
								
								textures/signs_lib_font_16px_0456.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 94 B | 
							
								
								
									
										
											BIN
										
									
								
								textures/signs_lib_font_16px_0457.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 91 B | 
							
								
								
									
										
											BIN
										
									
								
								textures/signs_lib_font_16px_0490.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 102 B | 
							
								
								
									
										
											BIN
										
									
								
								textures/signs_lib_font_16px_0491.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 103 B | 
							
								
								
									
										
											BIN
										
									
								
								textures/signs_lib_font_32px_0404.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 192 B | 
							
								
								
									
										
											BIN
										
									
								
								textures/signs_lib_font_32px_0406.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 100 B | 
							
								
								
									
										
											BIN
										
									
								
								textures/signs_lib_font_32px_0407.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 110 B | 
							
								
								
									
										
											BIN
										
									
								
								textures/signs_lib_font_32px_0454.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 171 B | 
							
								
								
									
										
											BIN
										
									
								
								textures/signs_lib_font_32px_0456.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 99 B | 
							
								
								
									
										
											BIN
										
									
								
								textures/signs_lib_font_32px_0457.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 107 B | 
							
								
								
									
										
											BIN
										
									
								
								textures/signs_lib_font_32px_0490.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 110 B | 
							
								
								
									
										
											BIN
										
									
								
								textures/signs_lib_font_32px_0491.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 111 B | 
							
								
								
									
										8
									
								
								util/nonascii-ua
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,8 @@ | |||||||
|  | ґ | ||||||
|  | і | ||||||
|  | ї | ||||||
|  | є | ||||||
|  | Ґ | ||||||
|  | І | ||||||
|  | Ї | ||||||
|  | Є | ||||||