Jump to content
Toggle menu
  • 8 articles
  • 75 files
  • 7 users
  • 37.8K edits
Neodyland Wiki
Toggle preferences menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

Module:Linguistic: Difference between revisions

From Neodyland Wiki
test with a "global" lang variable that might simplify much of the code
doesnt seem to work
Line 3: Line 3:
local p = {}
local p = {}
local vowels = 'aeiouyąăẵằẳặȃắâẫấầẩậãäǟāáàȁǎảẚåǻḁạǡæǣǽĕȇêễếềểệḙẽḛëēḕéḗèȅěẻẹęȩḝǝĭȋîĩḭïḯīíìȉǐỉịįıŏȏôỗốồổộõṏṍöōṑóṓòȍǒỏọǫǭơỡớờởợøǿŭȗûṷũṻṹṵüǖǘǜǚṳūúùȕǔủůụųưữứừửựŷỹÿȳýỳỷẙỵ'
local vowels = 'aeiouyąăẵằẳặȃắâẫấầẩậãäǟāáàȁǎảẚåǻḁạǡæǣǽĕȇêễếềểệḙẽḛëēḕéḗèȅěẻẹęȩḝǝĭȋîĩḭïḯīíìȉǐỉịįıŏȏôỗốồổộõṏṍöōṑóṓòȍǒỏọǫǭơỡớờởợøǿŭȗûṷũṻṹṵüǖǘǜǚṳūúùȕǔủůụųưữứừửựŷỹÿȳýỳỷẙỵ'
local lang = function(frame)
args = mw.getCurrentFrame():getParent().args
if args.lang then
return args.lang
end
return frame:preprocess( "{{int:lang}}" )
end


function isin(str, pattern)
function isin(str, pattern)
Line 17: Line 10:
end
end


function langisin(str)
function langisin(str, lang)
return langisin(str, lang .. ',') -- comma is necessary to avoid false positives like zh in zh-hans
return langisin(str, lang .. ',') -- comma is necessary to avoid false positives like zh in zh-hans
end
end
Line 25: Line 18:
end
end


function p.wordsep() -- default separator between words
function p.wordsep(lang) -- default separator between words
-- language with no separator
-- language with no separator
if langisin('zh, ja, zh-hans, zh-hant, zh-sg, zh-cn, sh-tw') then  
if langisin('zh, ja, zh-hans, zh-hant, zh-sg, zh-cn, sh-tw') then  
Line 34: Line 27:
end
end


function p.noungroup(noun, adj)
function p.noungroup(noun, adj, lang)
if not noun then  
if not noun then  
return nil end
return nil end
Line 41: Line 34:
end
end
-- adjective before the noun
-- adjective before the noun
if langisin('de, de-at, de-ch, en, en-ca, en-gb, zh ') then
if langisin('de, de-at, de-ch, en, en-ca, en-gb, zh ', lang) then
return adj .. p.wordsep(lang) .. noun
return adj .. p.wordsep(lang) .. noun
-- adjective after the noun
-- adjective after the noun

Revision as of 12:23, 22 November 2013

Module documentation[ create · purge ]
This documentation is transcluded from Module:Linguistic/doc.
-- some simple internationalization that can be called by other modules

local p = {}
local vowels = 'aeiouyąăẵằẳặȃắâẫấầẩậãäǟāáàȁǎảẚåǻḁạǡæǣǽĕȇêễếềểệḙẽḛëēḕéḗèȅěẻẹęȩḝǝĭȋîĩḭïḯīíìȉǐỉịįıŏȏôỗốồổộõṏṍöōṑóṓòȍǒỏọǫǭơỡớờởợøǿŭȗûṷũṻṹṵüǖǘǜǚṳūúùȕǔủůụųưữứừửựŷỹÿȳýỳỷẙỵ'

function isin(str, pattern)
	if mw.ustring.find(str, pattern, 1, true ) then
		return true
	end
end

function langisin(str, lang)
	return langisin(str, lang .. ',') -- comma is necessary to avoid false positives like zh in zh-hans
end

function p.vowelfirst (str)
	return isin(vowels, str[1]) 
end

function p.wordsep(lang) -- default separator between words
	-- language with no separator
	if langisin('zh, ja, zh-hans, zh-hant, zh-sg, zh-cn, sh-tw') then 
		return ''
	end
	-- default: white space
	return ' ' 
end

function p.noungroup(noun, adj, lang)
	if not noun then 
		return nil end
	if not adj
		then return noun
	end
	-- adjective before the noun
	if langisin('de, de-at, de-ch, en, en-ca, en-gb, zh ', lang) then
		return adj .. p.wordsep(lang) .. noun
	-- adjective after the noun
	elseif langisin('fr, fr-ca, it') then
		return noun .. p.wordsep(lang) .. adj
	else
		return noun ' (' .. adj .. ')'
	end
end
return p
Cookies help us deliver our services. By using our services, you agree to our use of cookies.