<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ar">
	<id>https://3rabica.org/index.php?action=history&amp;feed=atom&amp;title=%D9%88%D8%AD%D8%AF%D8%A9%3ALinguistic</id>
	<title>وحدة:Linguistic - تاريخ المراجعة</title>
	<link rel="self" type="application/atom+xml" href="https://3rabica.org/index.php?action=history&amp;feed=atom&amp;title=%D9%88%D8%AD%D8%AF%D8%A9%3ALinguistic"/>
	<link rel="alternate" type="text/html" href="https://3rabica.org/index.php?title=%D9%88%D8%AD%D8%AF%D8%A9:Linguistic&amp;action=history"/>
	<updated>2026-06-05T09:39:37Z</updated>
	<subtitle>تاريخ التعديل لهذه الصفحة في الويكي</subtitle>
	<generator>MediaWiki 1.43.7</generator>
	<entry>
		<id>https://3rabica.org/index.php?title=%D9%88%D8%AD%D8%AF%D8%A9:Linguistic&amp;diff=356&amp;oldid=prev</id>
		<title>عبد العزيز في 15:28، 8 أبريل 2016</title>
		<link rel="alternate" type="text/html" href="https://3rabica.org/index.php?title=%D9%88%D8%AD%D8%AF%D8%A9:Linguistic&amp;diff=356&amp;oldid=prev"/>
		<updated>2016-04-08T15:28:53Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;صفحة جديدة&lt;/b&gt;&lt;/p&gt;&lt;div&gt;-- some simple internationalization that can be called by other modules &lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
local f = require(&amp;#039;Module:Fallback&amp;#039;)&lt;br /&gt;
local i18n = mw.loadData(&amp;#039;Module:I18n/linguistic&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
local function getText(msg, lang)&lt;br /&gt;
	return f._langSwitch(i18n[msg], lang)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local vowels = &amp;#039;أاآوي&amp;#039;&lt;br /&gt;
&lt;br /&gt;
local function wordor(lang) &lt;br /&gt;
	return getText(&amp;#039;or_conj&amp;#039;, lang)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function comma(lang)&lt;br /&gt;
	return getText(&amp;quot;comma&amp;quot;, lang)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.fullstop(lang)&lt;br /&gt;
	return getText(&amp;quot;full_stop&amp;quot;, lang)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.colon(lang)&lt;br /&gt;
	getText(&amp;quot;colon&amp;quot;, lang)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wordand(lang)&lt;br /&gt;
	return getText(&amp;quot;and_conj&amp;quot;, lang)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wordsep(lang) -- default separator between words&lt;br /&gt;
	return getText(&amp;quot;word_separator&amp;quot;, lang)&lt;br /&gt;
end	&lt;br /&gt;
&lt;br /&gt;
local function isin(str, pattern)&lt;br /&gt;
	if str and pattern and mw.ustring.find(str, pattern, 1, true ) then&lt;br /&gt;
		return true&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function langisin(str, lang)&lt;br /&gt;
	return isin(str, lang .. &amp;#039; &amp;#039;) -- space is necessary to avoid false positives like zh in zh-hans&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function processgender(str)&lt;br /&gt;
	local t = {	&lt;br /&gt;
		f = &amp;#039;feminine&amp;#039;,&lt;br /&gt;
		fem = &amp;#039;feminine&amp;#039;,&lt;br /&gt;
		feminine = &amp;#039;feminine&amp;#039;,&lt;br /&gt;
		n = &amp;#039;neutral&amp;#039;,&lt;br /&gt;
		neutral = &amp;#039;neutral&amp;#039;,&lt;br /&gt;
		m = &amp;#039;masculine&amp;#039;,&lt;br /&gt;
		masc = &amp;#039;masculine&amp;#039;,&lt;br /&gt;
		masculine = &amp;#039;masculine&amp;#039;,&lt;br /&gt;
	}&lt;br /&gt;
	return t[str] or &amp;#039;masculine&amp;#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function processnumber(str)&lt;br /&gt;
	if (str == &amp;#039;p&amp;#039;) or (str == &amp;#039;plural&amp;#039;) then&lt;br /&gt;
		return &amp;#039;plural&amp;#039;&lt;br /&gt;
	else &lt;br /&gt;
		return &amp;#039;singular&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.vowelfirst (str)&lt;br /&gt;
	if str then return isin(vowels, str[1]) end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.inparentheses(str, lang)&lt;br /&gt;
	--todo: define language with exotic parentheses&lt;br /&gt;
	if str == &amp;#039;&amp;#039; then&lt;br /&gt;
		return str&lt;br /&gt;
	else &lt;br /&gt;
		return &amp;#039; (&amp;#039; .. str .. &amp;#039;)&amp;#039; &lt;br /&gt;
		-- needs internationalization. &lt;br /&gt;
		--Needs leading space in Enlgish because as some languages do not use it, it is part of the formatting&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.of(word, lang, raw, gender, number, determiner) -- rough translation of &amp;quot;of&amp;quot; in various languages&lt;br /&gt;
-- note that the cases when on &amp;quot;of&amp;quot; is employed varies a lot among languages, so it is more prudent to call this from lang specific function only&lt;br /&gt;
	if not raw then &lt;br /&gt;
		raw = word&lt;br /&gt;
	end&lt;br /&gt;
	gender = processgender(gender)&lt;br /&gt;
	number = processnumber(number)&lt;br /&gt;
	-- raw is the string without the Wikiformatting so that it correctly analyses the string that is [[:fr:Italie|Italie]] -&amp;gt; &amp;#039;italie&amp;#039;&lt;br /&gt;
	-- any way to automate this ?&lt;br /&gt;
	&lt;br /&gt;
	-- todo: ca to replace Template:Of/ca&lt;br /&gt;
	&lt;br /&gt;
	if lang == &amp;#039;fr&amp;#039; then &lt;br /&gt;
		if number == &amp;#039;plural&amp;#039; then&lt;br /&gt;
			return &amp;#039;des &amp;#039; .. word&lt;br /&gt;
		elseif p.vowelfirst(raw) then&lt;br /&gt;
			return &amp;#039;de l\&amp;#039;&amp;#039; .. word&lt;br /&gt;
		elseif gender == &amp;#039;feminine&amp;#039; then&lt;br /&gt;
			return &amp;#039;de la &amp;#039; .. word&lt;br /&gt;
		elseif derterminer then&lt;br /&gt;
			return &amp;#039;du &amp;#039; .. word&lt;br /&gt;
		else&lt;br /&gt;
			return &amp;#039;de &amp;#039; .. word&lt;br /&gt;
		end&lt;br /&gt;
	end	&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.noungroup(noun, adj, lang)&lt;br /&gt;
	if not noun or noun == &amp;#039;&amp;#039; then &lt;br /&gt;
		return nil -- not &amp;#039;&amp;#039; so that it is not counted as a string by mw.listToText&lt;br /&gt;
	end&lt;br /&gt;
	if not adj or adj == &amp;#039;&amp;#039;&lt;br /&gt;
		then return noun&lt;br /&gt;
	end&lt;br /&gt;
	-- adjective before the noun&lt;br /&gt;
	if langisin(&amp;#039;cs de de-at de-ch en en-ca en-gb pl sk zh zh-cn zh-hans zh-hant zh-my zh-sg zh-tw &amp;#039;, lang) then&lt;br /&gt;
		return adj .. wordsep(lang) .. noun&lt;br /&gt;
	-- adjective after the noun&lt;br /&gt;
	elseif langisin(&amp;#039;fr fr-ca es it&amp;#039;) then&lt;br /&gt;
		return noun .. wordsep(lang) .. adj&lt;br /&gt;
	else&lt;br /&gt;
		return noun &amp;#039; (&amp;#039; .. adj .. &amp;#039;)&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.conj(args, lang, conjtype)&lt;br /&gt;
	if (not args) then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
	local newargs = {}&lt;br /&gt;
	for i, j in pairs(args) do&lt;br /&gt;
		if type(j) ~= &amp;#039;nil&amp;#039; then&lt;br /&gt;
			table.insert(newargs, j)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	args = newargs&lt;br /&gt;
	if #args == 0 then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
	if conjtype == &amp;#039;comma&amp;#039; then&lt;br /&gt;
		return mw.text.listToText(args, comma(lang), comma(lang))&lt;br /&gt;
	elseif conjtype == &amp;#039;or&amp;#039; then &lt;br /&gt;
		return mw.text.listToText(args, comma(lang), wordor(lang)  .. wordsep(lang))&lt;br /&gt;
	elseif conjtype == &amp;#039;explicit or&amp;#039; then -- adds &amp;quot;or&amp;quot; betwen all words when the context can be confusing&lt;br /&gt;
		return mw.text.listToText(args, wordor(lang) .. wordsep(lang), wordor(lang)  .. wordsep(lang))&lt;br /&gt;
	elseif conjtype then&lt;br /&gt;
		return mw.text.listToText(args, conjtype, conjtype)&lt;br /&gt;
	else &lt;br /&gt;
		return mw.text.listToText(args, comma(lang), wordand(lang) .. wordsep(lang))&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>عبد العزيز</name></author>
	</entry>
</feed>